hhxzby

  关系操作的特点是操作对象和操作结果都是集合,而非关系数据模型的数据操作方式则为一次一个记录的方式。关系数据代数语言、关系演算语言和具有关系代数和关系演算双重特点的语言(例如SQL)。关系演算语言包含元组关系演算语言(例如Aplha、Quel)和域关系演算语言(例如QBE)。

  关系代数语言、元组关系演算和域关系演算是抽象查询语言,它与具体的DBMS中实现的实际语言并不一样,但是可以用它评估实际系统中的查询语言能力的标准。

  关系代数运算符有4类:集合运算符(∩ 交、∪ 并、- 差、× 笛卡尔积)、比较运算符(> 大于、≥ 大于等于、< 小于、≤ 小于等于 ≠ 不等于、= 等于)、逻辑运算符(¬ 非、ν 与、Λ 或)、专门的关系运算符(σ 选择、÷ 除、π 投影、⋈ 连接)

  基本关系代数涵盖有五种:并、差、笛卡尔积、选择、投影,其他的都可以由这五种推出来如:各种连接。

  以MySQL运行结果为例:

  首先建立数据库 create database mydb;

  在建立两个表格emp与dept详情如下:

CREATE TABLE emp(

       empno            INT,

       ename            VARCHAR(50),

       job          VARCHAR(50),

       mgr        INT,

       hiredate   DATE,

       sal          DECIMAL(7,2),

       comm            decimal(7,2),

       deptno            INT

) ;

INSERT INTO emp values(7369,\'SMITH\',\'CLERK\',7902,\'1980-12-17\',800,NULL,20);

INSERT INTO emp values(7499,\'ALLEN\',\'SALESMAN\',7698,\'1981-02-20\',1600,300,30);

INSERT INTO emp values(7521,\'WARD\',\'SALESMAN\',7698,\'1981-02-22\',1250,500,30);

INSERT INTO emp values(7566,\'JONES\',\'MANAGER\',7839,\'1981-04-02\',2975,NULL,20);

INSERT INTO emp values(7654,\'MARTIN\',\'SALESMAN\',7698,\'1981-09-28\',1250,1400,30);

INSERT INTO emp values(7698,\'BLAKE\',\'MANAGER\',7839,\'1981-05-01\',2850,NULL,30);

INSERT INTO emp values(7782,\'CLARK\',\'MANAGER\',7839,\'1981-06-09\',2450,NULL,10);

INSERT INTO emp values(7788,\'SCOTT\',\'ANALYST\',7566,\'1987-04-19\',3000,NULL,20);

INSERT INTO emp values(7839,\'KING\',\'PRESIDENT\',NULL,\'1981-11-17\',5000,NULL,10);

INSERT INTO emp values(7844,\'TURNER\',\'SALESMAN\',7698,\'1981-09-08\',1500,0,30);

INSERT INTO emp values(7876,\'ADAMS\',\'CLERK\',7788,\'1987-05-23\',1100,NULL,20);

INSERT INTO emp values(7900,\'JAMES\',\'CLERK\',7698,\'1981-12-03\',950,NULL,30);

INSERT INTO emp values(7902,\'FORD\',\'ANALYST\',7566,\'1981-12-03\',3000,NULL,20);

INSERT INTO emp values(7934,\'MILLER\',\'CLERK\',7782,\'1982-01-23\',1300,NULL,10);

CREATE TABLE dept(

       deptno            INT,

       dname            varchar(14),

       loc          varchar(13)

)

INSERT INTO dept values(10, \'ACCOUNTING\', \'NEW YORK\');

INSERT INTO dept values(20, \'RESEARCH\', \'DALLAS\');

INSERT INTO dept values(30, \'SALES\', \'CHICAGO\');

INSERT INTO dept values(40, \'OPERATIONS\', \'BOSTON\');

1、并在MySQL中体现为合并结果集union(需要注意的是t1和t2的约束是相同的)

去除重复列:select * from t1 union select * from t2;

不去除重复列:select * from t1 union all select * from t2;

2、笛卡尔积(以emp和dept表位例,其中emp有14条记录、dept中有4条记录形成的记录14*4=56条)

select * from emp,dept;

只有部分截图

3 内连接(inner)

在MySQL中不加限定条件的时候

select * from emp inner join dept;

结果与笛卡尔积是一样的。当然在后面可以加where条件和using关键字。

4选择和投影

4.1 投影是对列处理

select deptno from emp;

4.2 选择是对行处理

select * from emp where ename=\'jones\';

 

分类:

技术点:

相关文章:

  • 2021-10-29
  • 2021-07-01
  • 2021-11-08
  • 2021-12-24
  • 2021-05-05
  • 2022-12-23
  • 2021-10-19
  • 2022-12-23
猜你喜欢
  • 2021-12-08
  • 2021-09-19
  • 2021-10-18
  • 2021-08-10
相关资源
相似解决方案