子查询&视图&ER图&数据库设计范式——实验三四
子查询查询出销售部(SALES)下面的员工姓名、工作、工资
想要实现这个查询很简单,只需要在where子句后面采用子查询的方式,下面是语句
SELECT ENAME,
JOB,
SAL
FROM emp
WHERE DEPTNO =(SELECT DEPTNO
FROM dept
WHERE DNAME ='SALES');得到如下结果
查询出 EMP 表中比任意一个销售员(SALESMAN)工资低(比销售员工资查询结果中的最大值还要小)的员工姓名、工作和工资
SELECT ENAME,
JOB,
SAL
FROM emp
WHERE SAL <(SELECTMAX(SAL)FROM emp
WHERE JOB ='SALESMAN');结果如图
除此之外,我们使用关键字ANY也可以达到同样的效果
SELECT ENAME,
JOB,
SAL
FROM emp
WHERE SAL <ANY((SELECT SAL
FROM emp
WHERE JOB ='SALESMAN'));两者的输出完全是一样的
查询创建的 EMPDETAIL 视图
基于 EMP 表和 DEPT 表创建一个只读视图,该视图中只包含员工编号、姓名、工作、入职日期和部门名称,隐藏了员工的工资、奖金、部门编号等信息。
这里的HIREDATE因为在插入数据时没有正确设定日期的格式,导致值全部为null
为 EMP 表的 ENAME 列创建唯一索引,为 EMP 表的工资列创建普通索引
关于索引在这里贴一个链接
戳这里—>MySQL查看添加删除索引<—震惊!99%的程序员竟然还不知道
CREATEINDEX index_name ON table_name (column_list)CREATEUNIQUEINDEX index_name ON table_name (column_list)创建好索引后,我们直接查看就可以
showindexfromtable;
关于索引还有一些有趣的介绍知识
戳这里查看---->索引(一)Mysql创建索引
共待参考
查询出比所有销售员的工资都高的员工姓名、工作和工资
SELECT ENAME,
JOB,
SAL
FROM emp
WHERE SAL >(SELECTMAX(SAL)FROM emp
WHERE JOB ='SALESMAN');
ER图
首先ER图是什么?
一种用来描述现实世界的概念模型
它是怎么来描述的呢?
着重突出现实世界中的事物(实体),以及实体之间的关系,类似于思维导图或者是一幅地图
在 E-R 图中有如下四个部分:
矩形框:表示实体,每个实体都可以在数据库中找到对应的表单
菱形框:表示联系
椭圆形框:表示实体或联系的属性,对于主属性名(主键),则在其名称下划一下划线
连线:实体与属性之间、实体与联系之间、联系与属性之间用直线相连,并在直线上标注联系的类型。对于一对一联系,要在两个实体连线方向各写 1;对于一对多联系,要在一的一方写 1,多的一方写 N;对于多对多关系,则要在两个实体连线方向各写 N,M
对一对一、一对多和、多对多的深刻理解
1对1的意思是指第一张表中的某条记录,根据主外键关联,只能查询到另一张表中的0条或者1条记录,同时表中的所有其他记录都满足这个特性,反之亦然
1对1时,需要添加一个外键,外键添加到任何一张表中都可以
1对多,1方属于主表,多方属于从表,在从表添加外键
1对多的意思是指第一张表中的某条记录,根据主外键关联,能查询到另一张表中的0条、1条或者N条记录,同时表中的所有其他记录都满足这个特性,反之是多对1
1对多时,以1方为主表,多方为从表,在多方添加一个外键
多对多,新增一张关系表
多对多的意思是指第一张表中的某条记录,根据主外键关联,能查询到另一张表中的0条、1条或者N条记录,同时表中的所有其他记录都满足这个特性,反之亦然
比如上述图片中课程与教师之间就是多对多的关系,一门课程可以由多为老师来上课,一个老师也可以教授多门课程。
两者之间的联系(任课)可能也会有属性,某门课程的上课时间不是课程后者老师的单一属性,而是由课程和老师共同决定的。所以他是课程与老师之间联系的属性
戳这里看原文-------->如何理解ER图
数据库设计范式
戳这里看原文--------->MySQL设计三范式
1NF 数据不可分
2NF 有主键,非主键字段依赖主键
3NF 非主键字段不能相互依赖
根据以上原则,设计出了关于校园餐厅的食堂ER图
从左上角开始,首先,一个校区可能拥有多个食堂,每个食堂拥有唯一ID、多个进出口人数、该食堂内总人数、餐厅经理ID
其次,每个食堂中有多个窗口,每个窗口有唯一的窗口ID,丰富多彩的菜品信息,每个窗口也会对应唯一的餐厅ID
再次,每个食堂对应一位餐厅经理,餐厅经理拥有自己的经理ID,同时对应餐厅ID
经理这张表单连接了用户问题和餐厅
针对不同的问题,每个问题有唯一的问题ID,每个问题对应提问用户ID、需要给出回答的经理ID、是否解决
每个用户拥有自己的用户ID、姓名,将来可能还可以根据用户的个人特征信息向用户智能推荐菜品
根据设计出来的ER图,我们可以构建出多张表单的简单数据库
根据我们设计的数据库,可以创建出模型关系图
目前数据库中暂时没有数据
页:
[1]