版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MySQL day02 1、关于查询结果集的去重?mysql select distinct job from emp; / distinct 关键字去除重复记录。 TOC o 1-5 h z +I job|+| CLERK| SALESMAN | MANAGER | ANALYST | PRESIDENT |+ mysql select ename,distinct job from emp;以上的sql语句是错误的。记住:distinct只能出现在所有字段的最前面。mysql select distinct deptnojob from emp;+I deptno | job |+|20|
2、30|20|30|10|20|10|30|10+-CLERKSALESMAN MANAGER MANAGER MANAGER ANALYSTPRESIDENTCLERK CLERK +案例:统计岗位的数量?select count(distinct job) from emp; TOC o 1-5 h z +| count(distinct job) |+I5 |+2、连接查询7844 | TURNER | 7698 |7876 | ADAMS | 7788 |7900 | JAMES | 7698 |7902 | FORD | 7566 |7934 | MILLER | 7782 | emp
3、 b领导表 | empno | ename756676987782778878397902756676987782778878397902JONES | BLAKE | CLARK | SCOTT | KING | FORD内连接:selecta.ename 员工b.ename 领导 fromemp ajoinemp bona.mgr = b.empno;外连接:(左外连接/左连接)selecta.ename 员工b.ename 领导 fromemp aleft joinemp bona.mgr = b.empno;“outer是可以省略的。selecta.ename 员工b.ename 领导
4、 fromemp a left outer joinemp b ona.mgr = b.empno;外连接:(右外连接/右连接) selecta.ename 员工b.ename 领导 fromemp b right joinemp a ona.mgr = b.empno;/ outer可以省略。 selecta.ename 员工b.ename 领导 fromemp b right outer joinemp a ona.mgr = b.empno;MB -I员工 I领导 I OB e*| SMITH | FORD | ALLEN | BLAKE | | WARD | BLAKE | | JON
5、ES | KING | | MARTIN | BLAKE | | BLAKE | KING | | CLARK | KING | | SCOTT | JONES | | KING | NULL | | TURNER | BLAKE | | ADAMS | SCOTT | | JAMES | BLAKE | | FORD | JONES | | MILLER | CLARK |* a0 * OB外连接最重要的特点是:主表的数据无条件的全部查询出来。案例:找出哪个部门没有员工?EMP表| EMPNO | ENAME | JOB| EMPNO | ENAME | JOB| COMM | DEPTNO
6、 | MGR | HIREDATE | SAL7369| SMITH| CLERK| 7902 | 1980-12-17 | 800.00 |NULL |7499| ALLEN| SALESMAN| 7698 | 1981-02-20 | 1600.00 |300.00 |7521| WARD| SALESMAN | 7698 | 1981-02-22 | 1250.00 |500.00 |7566| JONES| MANAGER| 7839 | 1981-04-02 | 2975.00 |NULL |7654| MARTIN| SALESMAN| 7698 | 1981-09-28 | 12
7、50.00 | 1400.00 |7698| BLAKE| MANAGER| 7839 | 1981-05-01 | 2850.00 |NULL |7782| CLARK| MANAGER| 7839 | 1981-06-09 | 2450.00 |NULL |7788| SCOTT| ANALYST| 7566 | 1987-04-19 | 3000.00 |NULL |7839| KING| PRESIDENT| NULL | 1981-11-17 | 5000.00 |NULL |7844|TURNER| SALESMAN| 7698 | 1981-09-08 | 1500.00 |0.
8、00 |7876| ADAMS| CLERK| 7788 | 1987-05-23 | 1100.00 |NULL |7900| JAMES| CLERK| 7698 | 1981-12-03 | 950.00 |NULL |7902| FORD| ANALYST| 7566 | 1981-12-03 | 3000.00 |NULL |7934| MILLER |CLERK| 7782 | 1982-01-23 | 1300.00 |NULL |20 |30 |30 |20 |30 |30 |10 |20 |10 |30 |20 |30 |20 |10 |DEPT TOC o 1-5 h z
9、+I DEPTNO | DNAME | LOC+|10|ACCOUNTING | NEW YORK |20|RESEARCH| DALLAS|30 | SALES | CHICAGO |40 | OPERATIONS | BOSTON|+ selectd.*fromemp eright joindept done.deptno = d.deptnowheree.empno is null;+I DEPTNO | DNAME | LOC+40 | OPERATIONS | BOSTON |+2.9、三张表怎么连接查询?案例:找出每一个员工的部门名称以及工资等级。EMPeI empno | ena
10、me | sal aI empno | ename | sal a| deptno I7369| SMITH| 800.00 |20 |7499| ALLEN| 1600.00 |30 |7521| WARD| 1250.00 |30 |7566| JONES| 2975.00 |20 |7654| MARTIN| 1250.00 |30 |7698| BLAKE| 2850.00 |30 |7782| CLARK| 2450.00 |10 |7788| SCOTT| 3000.00 |20 |7839| KING| 5000.00 |10 |7844|TURNER| 1500.00 |30
11、|7876| ADAMS| 1100.00 |20 |7900| JAMES| 950.00 |30 |7902| FORD| 3000.00 |20 |7934| MILLER |1300.00 |10 |7369| SMITH| 800.00 |20 |7499| ALLEN| 1600.00 |30 |7521| WARD| 1250.00 |30 |7566| JONES| 2975.00 |20 |7654| MARTIN| 1250.00 |30 |7698| BLAKE| 2850.00 |30 |7782| CLARK| 2450.00 |10 |7788| SCOTT| 30
12、00.00 |20 |7839| KING| 5000.00 |10 |7844|TURNER| 1500.00 |30 |7876| ADAMS| 1100.00 |20 |7900| JAMES| 950.00 |30 |7902| FORD| 3000.00 |20 |7934| MILLER |1300.00 |10 |DEPTd+DEPTNO I DNAME+| LOC+10 | ACCOUNTING | NEW YORK |10 | ACCOUNTING | NEW YORK |20 | RESEARCH30 | SALES20 | RESEARCH30 | SALES| DALL
13、AS | | CHICAGO |123451200140020003000999940 I OPERATIONS I BOSTON+SALGRADEsMBOB MB| GRADE | LOSAL | HISAL |7001201140120013001注意,解释一下:A joinB joinC on表示:A表和B表先进行表连接,连接之后A表继续和C表进行连接。selecte.ename,d.dname,s.gradefromemp ejoindept d one.deptno = d.deptnojoinsalgrade s one.sal between s.losal and s.hisa
14、l; TOC o 1-5 h z +I ename | dname | grade | +I SMITH | RESEARCH |1 |ALLEN | SALES|3|WARD | SALES |2 |JONES| RESEARCH |4|MARTIN | SALES|2|BLAKE | SALES|4|CLARK| ACCOUNTING |4|SCOTT| RESEARCH |4|KING| ACCOUNTING |5|TURNER | SALES|3|ADAMS | RESEARCH |1 |JAMES | SALES |1 |FORD | RESEARCH |4 |MILLER | AC
15、COUNTING |2 |+案例:找出每一个员工的部门名称、工资等级、以及上级领导。 selecte.ename Ml/d.dname.gradeel.ename 领导 fromemp ejoindept done.deptno = d.deptnojoinsalgrade sone.sal between s.losal and s.hisalleft joinemp elone.mgr = el.empno;一一 一 一 一 一一一 1员工 一一一一一一 一一一十 一一一一 一一一 十. 一| dnameI grade | 领导| SMITH| RESEARCH |1| FORD | AL
16、LEN| SALES|3 | BLAKE | WARD| SALES|2 | BLAKE | JONES| RESEARCH |4 | KING | MARTIN| SALES|2 | BLAKE | BLAKE| SALES|4 | KING | CLARK| ACCOUNTING |4 | KING | SCOTT| RESEARCH |4 | JONES | KING| ACCOUNTING |5 | NULL |TURNER| SALES|3 | BLAKE | ADAMS| RESEARCH|1 | SCOTT | JAMES| SALES|1 | BLAKE | FORD| RES
17、EARCH |4 | JONES | MILLER |ACCOUNTING |2 | CLARK |3、子查询什么是子查询?子查询都可以出现在哪里?select语句当中嵌套select语句,被嵌套的select语句是子查询。子查询可以出现在哪里?select.(select).from.(select).where.(select).where子句中使用子查询案例:找出高于平均薪资的员工信息。select * from emp where sal avg(sal); 错误的写法,where后面不能直接使用分组函数。第一步:找出平均薪资select avg(sal) from emp; TOC
18、o 1-5 h z +I avg(sal)+| 2073.214286 |+第二步:where过滤| MGR | HIREDATE | SALSBSB SB SB SB| COMM | DEPTNO |select * from emp where sal 2073.214286; MBMB MB MBMB MB MBMB MB MB MB MB MB MB MBOB OB MB| EMPNO | ENAME | JOB7566| JONES | MANAGER| 7839 | 1981-04-02 | 2975.00 | NULL |20 |7698| BLAKE | MANAGER| 78
19、39 | 1981-05-01 | 2850.00 | NULL |30 |7782| CLARK | MANAGER| 7839 | 1981-06-09 | 2450.00 | NULL |10 |7788| SCOTT | ANALYST| 7566 | 1987-04-19 | 3000.00 | NULL |20 |7839| KING | PRESIDENT| NULL | 1981-11-17 | 5000.00 | NULL |10 |7902| FORD | ANALYST| 7566 | 1981-12-03 | 3000.00 | NULL |20 |SB SB SBSB
20、 OB SB SB SBas0 an 0as sbasasasas obas 0 ssb0sb as sb as *,0as第一步和第二步合并:select * from emp where sal (select avg(sal) from emp);from后面嵌套子查询案例:找出每个部门平均薪水的等级。第一步:找出每个部门平均薪水(按照部门编号分组,求sal的平均值) select deptno,avg(sal) as avgsal from emp group by deptno; TOC o 1-5 h z +I deptno | avgsal |+|10|2916.666667|2
21、0|2175.000000|30|1566.666667|第二步:将以上的查询结果当做临时表3让t表和salgrade s表连接,条件是:t.avgsal between s.losal and s.hisalselectt.*,s.gradefrom(select deptno,avg(sal) as avgsal from emp group by deptno) tjoinsalgrade sont.avgsal between s.losal and s.hisal; TOC o 1-5 h z +| deptno | avgsal | grade |+|30|1566.666667|
22、3|10|2916.666667|4|20|2175.000000|4|+案例:找出每个部门平均的薪水等级。第一步:找出每个员工的薪水等级。select e.ename,e.sal,e.deptno,s.grade from emp e join salgrade s on e.sal between s.losal and s.hisal;ename| sal| deptno | grade |SMITH| 800.00 |20 |1 1ALLEN| 1600.00 |30 |3 IWARD| 1250.00 |30 |2 IJONES| 2975.00 |20 |4 |MARTIN| 12
23、50.00 |30 |2 |BLAKE| 2850.00 |30 |4 |CLARK| 2450.00 |10 |4 |SCOl 1| 3000.00 |20 |4 |KING| 5000.00 |10 |5 |TURNER| 1500.00 |30 |3 |ADAMS| 1100.00 |20 |1 1JAMES| 950.00 |30 |1 1FORD| 3000.00 |20 |4 IMILLER | 1300.00 |10 |2 I第二步:基于以上结果,继续按照deptno分组,求grade平均值。selecte.deptno,avg(s.grade)fromemp ejoinsalg
24、rade sone.sal between s.losal and s.hisal group bye.deptno; TOC o 1-5 h z +I deptno | avg(s.grade) |+|10 |3.6667|20 |2.8000|30 |2.5000|+在select后面嵌套子查询。案例:找出每个员工所在的部门名称,要求显示员工名和部门名。selecte.ename,d.dnamefromemp ejoindept d one.deptno = d.deptno;selecte.ename,(select d.dname from dept d where e.deptno
25、= d.deptno) as dname fromemp e; TOC o 1-5 h z +I ename| dname|+I SMITH| RESEARCH| ALLEN | SALES| WARD| SALES| JONES| RESEARCH| MARTIN | SALES|I BLAKE | SALES | | CLARK | ACCOUNTING | | SCOTT | RESEARCH | | KING | ACCOUNTING | | TURNER | SALES| TOC o 1-5 h z | ADAMS | RESEARCH | | JAMES | SALES| FORD
26、 | RESEARCH | | MILLER | ACCOUNTING | +4、union (可以将查询结果集相加) 案例:找出工作岗位是SALESMAN和MANAGER的员工?第一种:select enamejob from emp where job = MANAGER or job = SALESMAN,; 第二种:select enamejob from emp where job in(MANAGER,SALESMAN); +I ename | job | +| ALLEN | SALESMAN | | WARD | SALESMAN | | JONES | MANAGER | |
27、 MARTIN | SALESMAN | | BLAKE | MANAGER | | CLARK | MANAGER | | TURNER | SALESMAN | +第三种:unionselect enamejob from emp where job = MANAGER unionselect enamejob from emp where job = SALESMAN; +I ename | job | +I JONES | MANAGER | | BLAKE | MANAGER | | CLARK | MANAGER | | ALLEN | SALESMAN | | WARD | SA
28、LESMAN | | MARTIN | SALESMAN | | TURNER | SALESMAN | +两张不相干的表中的数据拼接在一起显示?什么是连接查询?在实际开发中,大局部的情况下都不是从单表中查询数据,一般都是多张表联合查询取 出最终的结果。在实际开发中,一般一个业务都会对应多张表,比方:学生和班级,起码两张表。stuno stunameclassno classnamezs1北京大兴区亦庄经济技术开发区第二中学高三1班Is1北京大兴区亦庄经济技术开发区第二中学高三1班 学生和班级信息存储到一张表中,结果就像上面一样,数据会存在大量的重复,导 致数据的冗余。连接查询的分类?根据语法
29、出现的年代来划分的话,包括:SQL92 (一些老的DBA可能还在使用这种语法。DBA: DataBase Administrator,数 据库管理员)SQL99 (比拟新的语法)根据表的连接方式来划分,包括: 内连接: 等值连接 非等值连接 自连接 外连接: 左外连接(左连接) 右外连接(右连接) 全连接(这个不讲,很少用!)在表的连接查询方面有一种现象被称为:笛卡尔积现象。(笛卡尔乘积现象) TOC o 1-5 h z 案例:找出每一个员工的部门名称,要求显示员工名和部门名。 EMP表 +| ename | deptno | +SMITH|20|ALLEN|30|WARD |30 |JONE
30、S|20|MARTIN|30|BLAKE|30|CLARK|10|select ename from emp unionselect dname from dept; TOC o 1-5 h z +| ename |+| SMITH| ALLEN| WARD| JONES| MARTIN| BLAKE| CLARK| SCOTT| KING| TURNER| ADAMS| JAMES| FORD| MILLER| ACCOUNTING | RESEARCH| SALES | OPERATIONS | +mysql select ename,sal from emp- union- select
31、 dname from dept;ERROR 1222 (21000): The used SELECT statements have a different number of columns5、limit (重点中的重点,以后分页查询全靠它了。)limit是mysql特有的,其他数据库中没有,不通用。(Oracle中有一个相同的机制,叫 做 rownum)limit取结果集中的局部数据,这时它的作用。语法机制:limit startindex, lengthstartindex表示起始位置,从0开始,。表示第一条数据。length表示取几个案例:取出工资前5名的员工(思路:降序取前5个)
32、select ename,sal from emp order by sal desc;取前5个:select ename,sal from emp order by sal desc limit 0, 5; select ename,sal from emp order by sal desc limit 5;limit是sql语句最后执行的一个环节: TOC o 1-5 h z select5 from1 where2 group by3 having4 order by6 limit7案例:找出工资排名在第4到第9名的员工?select ename,sal from emp order
33、by sal desc limit 3,6;+I ename | sal |+JONESBLAKECLARKALLENTURNERJONESBLAKECLARKALLENTURNER2975.002850.002450.001600.001500.00MILLER | 1300.00 |通用的标准分页sql?每页显示3条记录:第1页:0,3第2页:3,3第3页:6,3第4页:9,3第5页:12,3每页显示pageSize条记录:第 pageNo 页:(pageNo -1) * pageSize, pageSizepageSize是什么?是每页显示多少条记录pageNo是什么?显示第几页java
34、代码int pageNo = 2; / 页码是 2int pageSize = 10; / 每页显示 10 条limit (pageNo -1) * pageSize, pageSize)6、创立表:建表语句的语法格式:create table 表名(字段名1数据类型,字段名2数据类型,字段名3数据类型,);关于MySQL当中字段的数据类型?以下只说常见的int整数型(java中的int)bigint长整型(java 中的 long)float浮点型(java 中的 float double)char定长字符串(String)varchar可变长字符串(StringBuffer/StringB
35、uilderjdate日期类型(对应Java中的类型)BLOB二进制大对象(存储图片、视频等流媒体信息)Binary Large OBject(对应java中的Object)CLOB字符大对象(存储较大文本,比方,可以存储4G的字符串。)CharacterLarge OBject (对应 java 中的 Object)char和varchar怎么选择?在实际的开发中,当某个字段中的数据长度不发生改变的时候,是定长的,例如: 性别、生日等都是采用char。当一个字段的数据长度不确定,例如:简介、姓名等都是采用varchar。BLOB和CLOB类型的使用?电影表:t_movieid(int) na
36、me(varchar) playtime(date/char)haibao(BLOB)history(CLOB)蜘蛛侠表名在数据库当中一般建议以:t_或者tbl_开始。创立学生表:学生信息包括:学号、姓名、性别、班级编号、生日学号:bigint姓名:varchar性别:char班级编号:int生日:charcreate table t_student( no bigint, name varchar(255), sex char(l),classno varchar(255)z birth char(10));7、insert语句插入数据语法格式:insert into表名(字段名1,字段名2
37、,字段名3,)values(值1,值2,值3,.) 要求:字段的数量和值的数量相同,并且数据类型要对应相同。insert into t_student(nozname,sex,classno,birth) values(l/zhangsan717gaosanlban);ERROR 1136 (21S01): Column count doesnt match value count at row 1insert intoJstudenHno,name,sex,classno,birth) valuesfl/zhangsan/lVgaosanlban,1950-10-12);mysql sele
38、ct * from t_student;| no | name | sex | classno | birth |+-一-_-+-_-_一-_一一+一-一+_-_+-_-_一_一_一-一一+|1 | zhangsan | 1| gaosanlban | 1950-10-12 |OB OBM* MB*insertintot_student(name/sex,classno,birth,no) valuesClisi/l/gaosanlban,1950-10-12,2);mysql select * from t_student;| no | name | sex | classno | birt
39、h |1 | zhangsan | 1| gaosanlban | 1950-10-12 |2 | lisi | 1| gaosanlban | 1950-10-12 |insert into t_student(name) values(wangwu); / 除 name 字段之外,乘U下的所有字段自动 插入NULLomysql select * from t_student; | no | name | sex | classno | birth |1 | zhangsan | 1| gaosanlban | 1950-10-12 |2 | lisi | 1| gaosanlban | 1
40、950-10-12 | NULL | wangwu | NULL | NULL | NULL |MB MB flBi MB MB MB MB 0 MB as flB OMSB MB OH MB MBMB MB * MB flHB MB OBinsert into t_student(no) values(3); mysql select * from t_student; OB 0 MB MB SB SB a OBMB 0 MB 0 MB MB M * 0 MB OB MB * | no | name | sex | classno | birth |MB MB MB MB OB MB MB
41、MB MB MB B MB MB MB|1 | zhangsan | 1| gaosanlban | 1950-10-12 |2 | lisi | 1| gaosanlban | 1950-10-12 | NULL | wangwu | NULL | NULL | NULL |3 | NULL | NULL | NULL | NULL |+drop table if exists t_student; /当这个表存在的话删除。create table t_student( no bigint, name varchar(255), sex char(l) default 1, classno
42、varchar(255), birth char(10);insert into t_student(name) values(zhangsan); mysql select * from t_student; MB a OB MB MB SB SB OB MB MB MB MB MB MB nonamesexclassno I birth| NULL | zhangsan | 1| NULL | NULL |需要注意的地方:当一条insert语句执行成功之后,表格当中必然会多一行记录。即使多的这一行记录当中某些字段是NULL,后期也没有方法在执行 insert语句插入数据了,只能使用upda
43、te进行更新。/字段可以省略不写,但是后面的value对数量和顺序都有要求。insert into t_student values(l/jack707gaosan2ban71986-10-23); mysql select * from t_student;| no | name | sex | classno | birth | NULL| NULL | zhangsan | 1| NULL|1 | jack | 0| gaosan2ban | 1986-10-23 |insert into t_student values(l/jack707gaosan2ban);ERROR 1136
44、(21S01): Column count doesnt match value count at row 1/ 一次插入多行数据insert into t_student(no,name,sex,classno,birth)values(3,rose,UTgaosiZban,1952-12-14),(4,laotie/LgaosiZban,1955-12-14);mysql select * from t_student;+| no | name | sex | classno | birth |SB SB SB SB as SB SBHB SB SB SB OB SB | NULL | z
45、hangsan | 1| NULL | NULL |1 | jack | 0| gaosan2ban | 1986-10-23 |3 | rose | 1| gaosi2ban | 1952-12-14 |4 | laotie | 1| gaosi2ban | 1955-12-14 |8、表的复制 语法:create table 表名 as select 语句;将查询结果当做表创立出来。9、将查询结果插入到一张表中?mysql insert into deptl select * from dept;mysql select * from deptl; TOC o 1-5 h z + +| D
46、EPTNO | DNAME | LOC |+ +10|ACCOUNTING | NEW YORK |20|RESEARCH |DALLAS |30|SALES | CHICAGO|40|OPERATIONS | BOSTON|10|ACCOUNTING |NEW YORK |20|RESEARCH |DALLAS |30|SALES | CHICAGO|40|OPERATIONS | BOSTON|+10修改数据:update语法格式:update表名set字段名1二值L字段名2二值2. where条件;注意:没有条件整张表数据全部更新。案例:将部门10的LOC修改为SHANGHAI,将部门名
47、称修改为RENSHIBU update deptl set loc = SHANGHAI, dname = RENSHIBU where deptno = 10;mysql select * from deptl; TOC o 1-5 h z +| DEPTNO | DNAME | LOC |+10|RENSHIBU| SHANGHAI |20|RESEARCH| DALLAS |30|SALES | CHICAGO|40|OPERATIONS | BOSTON|10|RENSHIBU| SHANGHAI |20|RESEARCH| DALLAS |30|SALES | CHICAGO|40|
48、OPERATIONS | BOSTON|+4-更新所有记录update deptl set loc = x, dname = y;mysql select * from deptl;| DEPTNO | DNAME | LOC |101 V1 x201 V1 x301 V1 x401 V1 X101 V1 X201 y1 X301 y1 X401 y1 x一+11、删除数据?语法格式:delete from 表名 where 条件;注意:没有条件全部删除。删除10部门数据?delete from deptl where deptno = 10;删除所有记录?delete from deptl;
49、怎么删除大表中的数据?(重点)truncate table表名;表被截断,不可回滚。永久丧失。删除表?drop table表名;这个通用。drop table if exists表名; oracle不支持这种写法。12、对于表结构的修改,这里不讲了,大家使用工具完成即可,因为在实际开发中表一旦 设计好之后,对表结构的修改是很少的,修改表结构就是对之前的设计进行了否认,即使 需要修改表结构,我们也可以直接使用工具操作。修改表结构的语句不会出现在Java代码 当中。出现在java代码当中的sql包括:insert delete update select (这些都是表中的数据操作。)增删改查有一个
50、术语:CRUD操作Create (增)Retrieve (检索)Update (修改)Delete (删除)13 约束(Constraint)、什么是约束?常见的约束有哪些呢?在创立表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数 据的合法性、有效性、完整性。常见的约束有哪些呢?非空约束(not null):约束的字段不能为NULL唯一约束(unique):约束的字段不能重复主键约束(primary key):约束的字段既不能为NULL,也不能重复(简称PK)外键约束(foreign key):(简称FK)检查约束(check):注意Oracle数据库有check约束,但
51、是mysql没有,目前mysql 不支持该约束。非空约束not nulldrop table if exists t_user;create table t_user(id int,username varchar(255) not null,password varchar(255);insert into t_user(id,password) values(l/123);ERROR 1364 (HY000): Field username doesnt have a default valueinsert into t_user(id/username,password) values(
52、l,lisi,123,); TOC o 1-5 h z I SCOTT|20|KING|10|TURNER|30|ADAMS |20 |JAMES|30|FORD|20| MILLER |10 |+DEPT 表+| DEPTNO | DNAME | LOC+|10|ACCOUNTING| NEW YORK |20|RESEARCH| DALLAS|30|SALES| CHICAGO|40|OPERATIONS| BOSTON|+select enamezdname from emp,dept;+I ename | dname |+| SMITH | ACCOUNTING | SMITH | R
53、ESEARCH | SMITH | SALES | SMITH | OPERATIONS | ALLEN | ACCOUNTING | ALLEN | RESEARCH | ALLEN | SALES | ALLEN | OPERATIONS | 56 rows in set (0.00 sec)笛卡尔积现象:当两张表进行连接查询的时候,没有任何条件进行限制,最终的查询结果条 数是两张表记录条数的乘积。关于表的别名:select e.ename,d.dname from emp e,dept d;表的别名有什么好处?第一:执行效率高。第二:可读性好。2.4、怎么防止笛卡尔积现象?当然是加条件进
54、行过滤。思考:防止了笛卡尔积现象,会减少记录的匹配次数吗?不会,次数还是56次。只不过显示的是有效记录。案例:找出每一个员工的部门名称,要求显示员工名和部门名。 selecte.ename,d.dnamefromemp e , dept dwheree.deptno = d.deptno; /SQL92,以后不用。 TOC o 1-5 h z +| ename | dname |+| CLARK | ACCOUNTING | KING | ACCOUNTING | MILLER | ACCOUNTING | SMITH| RESEARCH| JONES| RESEARCH| SCOTT| RE
55、SEARCH| ADAMS | RESEARCH | FORD| RESEARCH| ALLEN | SALES | WARD | SALES | MARTIN|SALES| BLAKE|SALES| TURNER|SALES| JAMES|SALES|+内连接之等值连接:最大特点是:条件是等量关系。案例:查询每个员工的部门名称,要求显示员工名和部门名。SQL92:(太老,不用了)selecte.ename,d.dnamefromemp e, dept dwheree.deptno = d.deptno;SQL99:(常用的)selecte.ename,d.dnamefromemp ejoin
56、dept done.deptno = d.deptno;“inner可以省略的,带着inner目的是可读性好一些。 selecte.ename,d.dnamefromemp einner joindept d one.deptno = d.deptno;语法: AjoinBon连接条件whereSQL99语法结构更清晰一些:表的连接条件和后来的where条件别离了。 +| ename | dname | +| CLARK | ACCOUNTING | | KING | ACCOUNTING | I MILLER | ACCOUNTING | | SMITH|RESEARCH| TOC o 1-
57、5 h z | JONES|RESEARCH| SCOTT|RESEARCH| ADAMS | RESEARCH | | FORD|RESEARCH| ALLEN | SALES| WARD | SALES | | MARTIN | SALES| BLAKE | SALES|I TURNER | SALES | JAMES | SALES +内连接之非等值连接:最大的特点是:连接条件中的关系是非等量关系。案例:找出每个员工的工资等级,要求显示员工名、工资、工资等级。 mysql select ename,sal from emp; e+I ename+SMITH ALLEN WARD JONES MARTIN BLAKE CLARK SCOTT KINGTURNER ADAMS JAMES FORD MILLER+I sal |+| 800.00 | 1600.00 | 1250.00 | 2975.00 | 1250.00 | 2850.00 | 2450.00 | 3000.00 | 5000.00 | 1500.00 | 1100.00 | 950.00 | 3000.00 | 1300.00 |+mysql select * from salgrade; sOB MB| GRADE | LOSAL | HISAL |1234
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司经营目标责任承诺书(4篇)
- 健康产业研发承诺书6篇范文
- 一件令人感动的事情话题作文11篇
- 我期待的未来世界想象作文8篇
- 职业质量自我约束提升承诺函(3篇)
- 2025 年大学人文地理与城乡规划(城市规划原理)试题及答案
- 2025 年大学汽车服务工程(汽车维修工程)试题及答案
- 汽车备胎盖加工项目商业计划书
- 买卖位车辆合同范本
- 服装联营经销合同范本
- 第三单元 文明与家园(教案) 2025-2026学年统编版道德与法治 九年级上册
- 2025年1月福建省普通高中学业水平合格性考试语文试题(含答案详解)
- 口腔护士种植课件
- 2025年新疆维吾尔自治区哈密市法院、检察院系统面向社会公开招聘聘用制书记员31人备考题库完整答案详解
- 2025临沂市检察机关公开招聘聘用制书记员(47名)备考笔试试题及答案解析
- 2025年青海公务员《行政职业能力测验》试题及答案
- 逾期拖车合同范本
- 孝道的课件教学课件
- 医院收费员笔试题及答案
- 2025年押运证试题及答案详解
- 2026年计算机二级(WPS Office高级应用与设计)自测试题及答案
评论
0/150
提交评论