数据库之关系运算

  关系操作的特点是操作对象和操作结果都是集合,而非关系数据模型的数据操作方式则为一次一个记录的方式。关系数据代数语言、关系演算语言和具有关系代数和关系演算双重特点的语言(例如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';

 

转载于:https://www.cnblogs.com/hhxz/p/8985574.html

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值