数据库的设计概要.docx
文本预览下载声明
/*数据库的设计概要: 1.每一个项不可分割 2.表中的每一条数据只描述一件事情,且具有为唯一的标示符 3.每个表中不存在其他表的非主键思想:实际关系的转化说明: 1.当表和表之间的关系为1---1时,转化为独立模式,也可与任意一端对应得关系模式合并 2.当表和表的关系为1----n时可将将单端转化为独立模式,而后与n端所对应的融合 3.m:n 多对多,每个表转化为一个关系模式,同时将两个表之间的关系建成一个表数据库的多表查询1.笛卡尔积:产生条件;查询条件没有,或查询条件无效多表之间的连接关系 1.常见连接: Equijion--等值连接 Non-Equijion --非等值连接 Outer-join 外连接[外连接符号; 1.外连接符号(+),其中符号在那边,另一边附加不符合条件的记录((+)符号在那边,那边加空格) 2.如果有多个条件谓词,则每个条件谓词都必须带有外连接符 3.如果一个表使用了外连接符作为条件,那么每个都必须有该表参与,并且使用使用外连接符号 4.一个连接谓词只允许使用在条件谓词的一边,不能两端同时具有否则抛异常注意:如果要实现全外连接,可以考虑使用“合并查询”] sel-jion 自连接 --SQL 92标准 -------- SQL 92 标准的链接 ---------------/*Cross joinsNatural joinsUsing clauseFull or two sided outer joinsArbitrary join conditions for outer joins*/*/--常见查询--等值连接 --[查询每个员工所对应的部门信息]select e.*,d.dname,d.locfrom emp e,dept dwhere e.deptno=d.deptno;--2 不等值连接[不等连接阐述的是一种范围关系,即就是两个表中没有直接联系]-- 输出员工的薪资等级select e.ename,e.job,e.sal,s.grade gradefrom emp e,salgrade swhere e.sal between s.losal and s.hisal;--3 自连接【当需要跨取数据是进行自连接】--输出每个员工的信息及其管理者的姓名select e.*,e1.ename margenNamefrom emp e,emp e1where e.empno=e1.mgr;--外连接【显示除了符合条件的记录之外,还显示不符合条件的记录】/*外连接符号; 1.外连接符号(+),其中符号在那边,另一边附加不符合条件的记录((+)符号在那边,那边加空格) 2.如果有多个条件谓词,则每个条件谓词都必须带有外连接符 3.如果一个表使用了外连接符作为条件,那么每个都必须有该表参与,并且使用使用外连接符号 4.一个连接谓词只允许使用在条件谓词的一边,不能两端同时具有否则抛异常注意:如果要实现全外连接,可以考虑使用“合并查询”*/--1,显示所有部门的信息,并显示部门10 的人员信息select e.empno,e.deptno edeptno,d.dname,d.deptnofrom emp e,dept dwhere e.deptno(+)=d.deptno and e.deptno(+)=10;-- 2.显示所有人员的信息,并对应20号部门的信息select e.ename,e.deptno eno,d.deptno dno,d.dnamefrom emp e,dept dwhere e.deptno=d.deptno(+)and d.dname(+)=RESEARCH;--3显示所有人,所有部门,以及对应20号部门的人员信息/*抛出异常:同时具有了外连接符号select e.*,d.*from emp e,dept dwhere e.deptno(+)=d.deptno(+)and d.dname(+)=RESEARCH*/--合并集查询【机就是将两个查询的结果集合并】 --关键字 union 注意合并时必须为同结构【列个数,和相对应的集合类型都相同】的结构集 --显示工作名为‘Manager,或工资在2500之上的员工信息 select e.* from emp e where job=MANAGER union select e1.* from emp e1 where e1.sal=2500; select e.* from emp e where e.job=MANAGER or e.sal2500; --SQL 92标准 -------- SQL 92 标准的链接 ---------------/*Cross joinsNatural j
显示全部