数据库原理第三章.ppt
《数据库原理第三章.ppt》由会员分享,可在线阅读,更多相关《数据库原理第三章.ppt(183页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章关系数据库标准语言关系数据库标准语言SQLSQL语言语言3.1SQL概述概述一、一、SQLSQL的由来的由来SQLSQL是是Structured Query LanguageStructured Query Language(结构化查询语言结构化查询语言)的缩写。的缩写。19721972年年SQUARESQUARE (Specifying Queries As Specifying Queries As Relational ExpressionRelational Expression)语言语言;19741974年改为年改为SEQUELSEQUEL(Structured Engl
2、ishStructured EnglishQUEryQUEry Language Language)语言语言,后简称后简称SQLSQL.19861986年年美国国家标准局美国国家标准局ANSIANSI的数据库委员会的数据库委员会X3H2X3H2批准并公布了批准并公布了SQLSQL标准文本标准文本(SQL-86SQL-86)。19871987年年国际标准化组织国际标准化组织ISOISO 把把SQL-86SQL-86采纳为采纳为国际标准。国际标准。19891989年年ISOISO颁步了增强完整性特征的颁步了增强完整性特征的SQL-89SQL-89标标准。准。19921992年年ISOISO公布了修
3、改扩充后的公布了修改扩充后的SQL-92SQL-92(即即SQL2SQL2)标准。标准。目前最新标准为目前最新标准为SQL-99SQL-99(即即SQL3SQL3)。二、二、SQL数据库数据库的体系结构的体系结构三、三、SQL的组成的组成(分类分类)DATABASEDATABASE TABLE TABLECREATECREATE VIEW VIEW INDEX INDEX SQL DDL SQL DDL:ALTERALTERDROPDROP SQL QUERY SQL QUERY:SELECT FROM SELECT FROM INSERT INSERT SQLSQL SQL DML SQL
4、DML:UPDATE UPDATE DELETE DELETE GRANTGRANT SQL DCL SQL DCL:REVOKEREVOKEAUDITAUDIT 嵌入式嵌入式SQLSQL:四、四、SQL的特点的特点SQL语言集数据查询、数据操纵、数语言集数据查询、数据操纵、数据定义、数据控制的功能于一体据定义、数据控制的功能于一体,其主要其主要特点包括特点包括:综合统一综合统一高度非过程化高度非过程化面向集合的操作方式面向集合的操作方式一种语法结构,两种使用方式一种语法结构,两种使用方式语言简捷语言简捷,易学易用易学易用3.2SQL语言的基本概念语言的基本概念一一、数据类型数据类型1、字符型
5、:、字符型:CHAR(n)CHAR(n)2、数字型:数字型:INT,NUMBER(n,m),REAL,INT,NUMBER(n,m),REAL,3、日期型:日期型:DATE,TIME,DATETIMEDATE,TIME,DATETIME4、其它类型:其它类型:LONGLONG二、函数二、函数1.数字函数数字函数:常见的有常见的有16个个ABS(X),SQRT(X),EXP(X),LOG(X),ABS(X),SQRT(X),EXP(X),LOG(X),2.字符函数:字符函数:常见的有常见的有9个个LENGTH(X$),LOWER(X$),LENGTH(X$),LOWER(X$),3.3.分组函数
6、:分组函数:常见的有常见的有5个个COUNT(COUNT(),MAX(X),MIN(X),AVG(X),),MAX(X),MIN(X),AVG(X),4.日期函数:日期函数:5.转换函数:转换函数:6.其他函数:其他函数:PI,POWER(X,Y)PI,POWER(X,Y),三、运算符三、运算符1.句法操作符句法操作符:&,&,2.数值操作符数值操作符:+,3.逻辑操作符逻辑操作符:=,IN,ANY,ALL,IN,ANY,ALL,4.查询表达式操作符查询表达式操作符:UNION,EXCEPT,UNION,EXCEPT,5.其它操作符其它操作符:,(+),四、查询表结构四、查询表结构DESCRI
7、BE user.表名;3.3查询语句查询语句一、语句格式一、语句格式:SELECT SELECT ALL|DISTINCT ALL|DISTINCT 表名表名.*|.*|列名列名|表达表达式式 AS AS 新列名新列名 INTO:INTO:主变量主变量1,:1,:主变量主变量22FROM FROM 表名表名 表别名表别名,WHERE WHERE 条件表达式条件表达式|子查询子查询 GROUP BY GROUP BY 列名列名1,1,HAVING HAVING 分组表达式分组表达式UNION|INTERSECT|EXCEPTSELECTFROMUNION|INTERSECT|EXCEPTSELE
8、CTFROMORDER BY ORDER BY 列名列名|列序号列序号 ASC|DESC,ASC|DESC,;SELECTFROMSELECTFROM常用语句执行过程常用语句执行过程SELECT SELECT 投影投影 FROM TABLEFROM TABLE内存内存 WHERE WHERE 选取元组选取元组 GROUP GROUP 分组分组 HAVING HAVING 选择分组选择分组 UNION|UNION|查徇结果的集查徇结果的集合运算合运算 SELECT SELECT ORDER BY ORDER BY 排序输出排序输出二、单表查询二、单表查询1.选择表中的列选择表中的列例例1.1.求
9、学生所在系及姓名求学生所在系及姓名SELECT SD,SN SELECT SD,SN FROM SFROM S;例例2.求学生的全部信息求学生的全部信息 SELECT S#,SN,SA,SDSELECT S#,SN,SA,SD FROM SFROM S;(SELECT*)(SELECT*)2.选择表中的行选择表中的行1)消除重复行消除重复行:DISTINCT (DISTINCT (缺省为缺省为ALL)ALL)例例:求选修了课程的学生号求选修了课程的学生号SELECT DISTINCT S#SELECT DISTINCT S#FROM SFROM S;2)选满足一定条件的行:用WHERE子句实现
10、例:求计算机系年龄小于19的姓名及年龄 SELECT SN,SA FROM S WHERE SD=CS AND SA=18 AND SA=22);(WHERE SA NOT BETWEEW 18 AND 22);(WHERE SA22);3)查询条件来自集合:查询条件来自集合:用用IN or NOT ININ or NOT IN例例:求信息工程系、计算机系、数学系的系名、求信息工程系、计算机系、数学系的系名、学生名学生名(或不是这些系的学生或不是这些系的学生)SELECT SD DEPT,SN NAME SELECT SD DEPT,SN NAME FROM SFROM S WHERE SD
11、IN(IE,CS,WHERE SD IN(IE,CS,MA)MA);(WHERE SD=IE OR SD=CS OR(WHERE SD=IE OR SD=CS OR SD=MA)SD=MA)(WHERE SD NOT IN(IE,CS,(WHERE SD NOT IN(IE,CS,MA)MA);(WHERE SD!=IE AND SD!=CS AND(WHERE SD!=IE AND SD!=CS AND SD!=MA)SD!=MA)4)字符匹配字符匹配:格式格式:NOTLIKE匹配串匹配串ESCAPE换码字符换码字符%:表示任意长度表示任意长度(0的任意字符的任意字符_:表示单个的任意字符表
12、示单个的任意字符ESCAPE换码字符换码字符:匹配串中匹配串中换码字符换码字符之后的字之后的字(%,_),被定义为普通字符,被定义为普通字符(不作通配符不作通配符用用)例例1:求课程名中有求课程名中有数据库数据库的课程记录的课程记录SELECT *SELECT *FROM CFROM CWHERE CN LIKE%WHERE CN LIKE%数据库数据库%;例例2 2:求倒数第三、四个汉字为求倒数第三、四个汉字为系统系统的课的课程名程名SELECT CNSELECT CNFROM CFROM CWHERE CN LIKE%WHERE CN LIKE%系统系统_;例例3 3:求以求以DATA_B
13、ASEDATA_BASE开头且倒数第五个字开头且倒数第五个字符为符为SS的课程名的课程名SELECT CNSELECT CNFROM CFROM CWHERE CN LIKEWHERE CN LIKEDATA_BASE%S_ DATA_BASE%S_ ESCAPEESCAPE;3 3、分组与组函数、分组与组函数:1)1)组函数的使用格式:组函数的使用格式:COUNTCOUNT(DISTINCT|ALL*|(DISTINCT|ALL*|列名列名)SUMSUM(DISTINCT|ALL(DISTINCT|ALL 列名列名)AVGAVG(DISTINCT|ALL(DISTINCT|ALL 列名列名)
14、MAXMAX(DISTINCT|ALL(DISTINCT|ALL 列名列名)MINMIN(DISTINCT|ALL(DISTINCT|ALL 列名列名)2)2)组函数可用于组函数可用于SELECTSELECT子句中的目标列子句中的目标列表中,或在表中,或在HAVINGHAVING子句的分组表达式子句的分组表达式中用作条件。中用作条件。3)分组用分组用GROUP BYGROUP BY对一列或若干列的值对一列或若干列的值分组分组,同值的分为一组。同值的分为一组。4)对分出的每一组用对分出的每一组用HAVINGHAVING进行筛选进行筛选,筛选条件要用到组函数。筛选条件要用到组函数。例例1:求选修了
15、课程的学生人数求选修了课程的学生人数SELECT COUNT(DISTINCT S#)SELECT COUNT(DISTINCT S#)FROM SCFROM SC;例例2:求选修各门课的人数及平均成绩求选修各门课的人数及平均成绩SELECT C#,COUNT(S#),AVG(ALL SELECT C#,COUNT(S#),AVG(ALL GR)GR)FROM SCFROM SCGROUP BY C#GROUP BY C#;例例3:求选修课程在求选修课程在5门以上且都及格的学门以上且都及格的学生号及总平均分生号及总平均分SELECT S#,AVG(ALL GR)SELECT S#,AVG(AL
16、L GR)FROM SCFROM SCGROUP BY S#GROUP BY S#HAVING COUNT(C#)5 HAVING COUNT(C#)5 AND MIN(GR)60AND MIN(GR)60;4 4、排序、排序1)1)用用ORDER BYORDER BY子句对查询结果按照一个子句对查询结果按照一个或多个列的值进行升或多个列的值进行升/降排列输出降排列输出2)2)升序为升序为ASCASC;降序为降序为DESCDESC3)3)空值将作为最大值排序空值将作为最大值排序例例1 1:对选修对选修C5C5课程的学生按成绩降序课程的学生按成绩降序排列,同分数者按学号升序排列排列,同分数者按学
17、号升序排列SELECT S#,GRSELECT S#,GRFROM SCFROM SCWHERE C#=C5WHERE C#=C5ORDER BY GR DESCORDER BY GR DESC,S#ASCS#ASC;例例2 2:求每个学生的总分并按总分降序排列求每个学生的总分并按总分降序排列,学号升序学号升序SELECT S#SELECT S#,SUM(ALL GR)SUM(ALL GR)FROM SCFROM SCGROUP BY S#GROUP BY S#ORDER BY 2 DESCORDER BY 2 DESC,S#ASCS#ASC;三、连接查询三、连接查询若一个查询同时涉及两个以上
18、的表,则若一个查询同时涉及两个以上的表,则称之为连接查询。连接查询是关系数据库中称之为连接查询。连接查询是关系数据库中主要的查询,包括多表连接查询、单表连接主要的查询,包括多表连接查询、单表连接查询、外连接查询和复合条件连接查询等。查询、外连接查询和复合条件连接查询等。*几个示范表几个示范表EMP(EMPNO,ENAME,JOB,MGR,SAL,COMM,DEPTNO)EMP(EMPNO,ENAME,JOB,MGR,SAL,COMM,DEPTNO)DEPT(DEPTNO,DNAME,CITY)DEPT(DEPTNO,DNAME,CITY)SALGRADE(GRADE,LOSAL,HISAL)S
19、ALGRADE(GRADE,LOSAL,HISAL)S(S#,SN,SA,SD)S(S#,SN,SA,SD)C(C#,CN,CT,PC#)C(C#,CN,CT,PC#)SC(S#,C#,GR)SC(S#,C#,GR)1、多表连接:、多表连接:1)连接条件一:连接条件一:表名表名1.列名列名1比较运算符比较运算符表名表名2.列名列名22)连接条件二:连接条件二:表名表名1.列名列名1BETWEEN BETWEEN 表名表名2.2.列名列名2 2 AND AND 表名表名3.3.列名列名3 33)连接条件中的列名称为连接字段,其各连接条件中的列名称为连接字段,其各字段应是可比的。字段应是可比的。执
20、行过程:执行过程:在在表表1中中找找到到第第一一个个元元组组,然然后后从从头头开开始始扫扫描描表表2,查查找找到到满满足足条条件件的的元元组组即即进进行行串串接接并并存存入入结结果果表表中中;再再继继续续扫扫描描表表2,依依次次类类推推,直直到到表表2末末尾尾。再再从从表表1中中取取第第二二个个元元组组,重重复复上上述述的的操操作作,直到表直到表1中的元组全部处理完毕。中的元组全部处理完毕。例例1:求求选选课课情情况况,要要求求输输出出学学号号、姓姓名名、课课程名与成绩程名与成绩SELECT S.S#SELECT S.S#,SNSN,CNCN,GRGRFROM SFROM S,C C,SCSC
21、WHERE S.S#=SC.S#AND C.C#=SC.C#WHERE S.S#=SC.S#AND C.C#=SC.C#;例例2:求每个职工的工资级别求每个职工的工资级别 SELECT ENAME,SAL,GRADESELECT ENAME,SAL,GRADE FROM EMP,SALGRADE FROM EMP,SALGRADE WHERE SAL BETWEEN LOSAL AND HISAL WHERE SAL BETWEEN LOSAL AND HISAL;2、单表连接、单表连接用表别名把一个表定义为两个不同性用表别名把一个表定义为两个不同性质的表进行连接。质的表进行连接。例例1:求求
22、每每门门课课的的间间接接先先修修课课名名(即即先先修修课课的先修课)的先修课)SELECT FIRST.C#SELECT FIRST.C#,FIRST.CNFIRST.CN,SECOND.PC#SECOND.PC#,THIRD.CNTHIRD.CNFROM C FIRSTFROM C FIRST,C SECONDC SECOND,C THIRDC THIRDWHERE FIRST.PC#=SECOND.C#WHERE FIRST.PC#=SECOND.C#AND SECOND.PC#=THIRD.C#AND SECOND.PC#=THIRD.C#;例例2:求比本部门职工工资低的部门负责人求比本
23、部门职工工资低的部门负责人SELECT W.ENAMESELECT W.ENAME,W.SALW.SAL,M.ENAME M.ENAME,M.SALM.SALFROM EMP W FROM EMP W,EMP MEMP MWHERE W.MGR=WHERE W.MGR=.EMPNOEMPNO AND W.SALM.SAL AND W.SALM.SAL;3、外连接、外连接在在连连接接条条件件的的某某侧侧加加上上()或或(+),表表示示该该侧侧所所对对应应的的表表中中可可形形成成一一个个各各数数据据项项均均为为空空值值的的万万能能替替代代行行,用用来来与与另另一一侧侧对对应应的的表表中中所所有有不
24、不满满足足条条件件的的元元组组进进行行连连接接。外外连连接接符符()或或(+)出出现现在在左左侧侧称称为为左左外外连连接接、出出现现在在右右侧侧称称为为右右连接、两侧都出现的称为全外连接。连接、两侧都出现的称为全外连接。例例1:求求各各部部门门名名及及职职工工名名、工工种种,要要求求输输出出无职工的部门(职工以空值出现)无职工的部门(职工以空值出现)SELECT DNAMESELECT DNAME,ENAMEENAME,JOBJOBFROM DEPTFROM DEPT,EMPEMPWHERE DEPT.DEPTNO=EMP.DEPTNO(*)WHERE DEPT.DEPTNO=EMP.DEPT
25、NO(*);例例2:求求各各部部门门名名及及职职工工名名、工工种种,要要求求输输出未分配部门的职工(部门以空值出现)出未分配部门的职工(部门以空值出现)SELECT DNAMESELECT DNAME,ENAMEENAME,JOBJOBFROM DEPTFROM DEPT,EMPEMPWHERE DEPT.DEPTNO(*)=EMP.DEPTNOWHERE DEPT.DEPTNO(*)=EMP.DEPTNO;例例3:求求各各部部门门名名及及职职工工名名、工工种种,要要求求输输出出无职工的部门和未分配部门的职工无职工的部门和未分配部门的职工SELECT DNAMESELECT DNAME,ENA
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 第三
限制150内