计算机数据库SQL语言.ppt
《计算机数据库SQL语言.ppt》由会员分享,可在线阅读,更多相关《计算机数据库SQL语言.ppt(137页珍藏版)》请在三一办公上搜索。
1、1,关系数据库标准语言SQL语言,主 要 内 容,第3章,3.1 SQL概述3.2 查询语句3.3 更新语句3.4 SQL DDL3.5 SQL DCL3.6 视图3.7 嵌入式SQL(*),2,3.1 SQL概述,一、SQL的发展及现状二、SQL数据库的体系结构三、SQL的功能四、SQL的形式五、SQL的特点,3,3.1 SQL概述,一、SQL的发展及现状1974年,由Boyce和Chamberlin提出19751979,IBM San Jose Research Lab的关系数据库管理系统原型System R实施了这种语言SQL-86是第一个SQL标准SQL-89、SQL-92(SQL2)
2、、SQL-99(SQL3)、SQL-2003大部分DBMS产品都支持SQL,成为操作数据库的标准语言,4,3.1 SQL概述,SQL,用户,Base TableB1,View V1,View V2,Base TableB2,Base TableB3,Base TableB4,Stored Filestudent1,Stored Filestudent1,Stored Filestudent1,Stored Filestudent1,外模式,模式,内模式,SQL语言支持的关系数据库的三级模式结构,二、SQL数据库的体系结构,5,3.1 SQL概述,基本概念:1、用户可以用SQL语言对视图(Vie
3、w)和基本表(Base Table)进行查询等操作,在用户观点里,视图和表一样,都是关系。2、视图是从一个或多个基本表中导出的表,本身不存储在数据库中,只有其定义,可以将其理解为一个虚表。3、基本表是本身独立存在的表,每个基本表对应一个存储文件,一个表可以带若干索引,存储文件及索引组成了关系数据库的内模式。,二、SQL数据库的体系结构,6,3.1 SQL概述,数据定义(DDL)定义、删除、修改关系模式(基本表)定义、删除视图(View)定义、删除索引(Index)数据操纵(DML)数据查询数据增、删、改 数据控制(DCL)用户访问权限的授予、收回,三、SQL的功能,7,3.1 SQL概述,DA
4、TABASE TABLECREATE VIEW INDEX DDL:ALTERDROP SQL QUERY:SELECT FROM INSERT SQL SQL DML:UPDATE DELETE GRANT SQL DCL:REVOKEAUDIT 嵌入式SQL:,四、SQL的组成(分类),8,3.1 SQL概述,交互式SQL一般DBMS都提供联机交互工具用户可直接键入SQL命令对 数据库进行操作由DBMS来进行解释,嵌入式SQL能将SQL语句嵌入到高级语言(宿主语言)使应用程序充分利用SQL访问数据库的能力、宿主 语言的过程处理能力一般需要预编译,将嵌入的SQL语句转化为宿主语言编译器能处理
5、的语句,五、SQL的形式,9,3.1 SQL概述,4.具有查询、操作、定义和控制四种语言一体化的特点。它只向用户提供一种语言,但该语言具有上述多种功能,且每种操作只需一种操作符。,高度非过程化的语言:用户只需提出“干什么”,至于“怎么干”由DBMS解决;用户只需要早查询语句中提出需 要什么,DBMS即可按路径存取,并把结果返回给用户。,2.面向集合的语言:每一个SQL的操作对象是一个或多个关系,操作的结果也是一个关系。,3.一种语法结构,两种使用方式:即可独立使用,又可嵌入到宿主语言中使用,具有自主型和宿主型两种特点。,六、SQL的特点,10,3.1 SQL概述,5.语言简洁、易学易用:核心功
6、能只有9个动词,语法简单,接近英语。SQL功能 动词 数据库查询 SELECT 数据定义 CREATE,DROP,ALTER 数据操纵 INSERT,UPDATE,DELETE 数据控制 GRANT,REVOKE,11,3.1 SQL概述,1、字符型:CHAR(n),VARCHAR 2、数字型:INT,SMALLINT,REAL3、日期型:DATE,TIME,(一)数据类型,(二)函数,数字函数:ABS(X),SQRT(X),RAND(X),LOG(X),字符函数:LENGTH(X$),LOWER(X$),UPPER(X$),SUBSTRING(expression,start,length)
7、分组函数:COUNT(),MAX(X),MIN(X),AVG(X),SUM(X),12,3.1 SQL概述,句法操作符:&数值操作符:+,逻辑操作符:=,IN,ANY,ALL,查询表达式操作符:UNION,其它操作符:,(+),(三)运算符,13,基本结构Select A1,A2,.,AnFrom R1,R2,.,RmWhere P,3.2 查询语句,数据查询是数据库应用的核心功能,A1,A2,.,An(p(R1R2.Rm),14,3.2 查询语句,查询语句格式(P72)SELECT ALL|DISTINCT 表名.*|列名|表达式AS 新列名INTO:主变量1,:主变量2FROM 表名表别名
8、,WHERE 条件表达式|子查询GROUP BY 列名1,HAVING 分组表达式UNION|INTERSECT|EXCEPTSELECTFROMORDER BY 列名|列序号ASC|DESC,;,15,SELECTFROM常用语句执行过程 sELECT 投影 FROM TABLE内存 WHERE 选取元组 GROUP 分组 HAVING 选择分组 UNION|查徇结果的集合运算 SELECT ORDER BY 排序输出,3.2 查询语句,16,3.2 查询语句,二、连接查询,多表连接查询、单表连接查询、外连接查询、复合条件连接查询.,三、嵌套查询,一、单表查询,返回单个值的子查询返回一组值的
9、子查询多重子查询,查询主要分类,17,A1,.,An(p(R1.Rm)Select A1,A2,.,An From R1,R2,.,Rm Where P,一、单表查询 1.选择表中的列 2.选择表中的行 3.分组与组函数 4.排 序,3.2 查询语句,18,一、单表查询,选择表中的列(投影)例1.求学生所在系及姓名SELECT Sdept,Sname FROM Student 例2.求学生的全部信息 SELECT Sno,Sname,Sage,SdeptFROM student(SELECT*),3.2 查询语句,19,SELECT Sname NAME,Year of Birth:BIRTH
10、,2010-sage BIRTHDAY,LOWER(Sdept)DEPARTMENT FROM Student;,例3.查全体学生的姓名、出生年份和所有系,要求用 小写字母表示所有系名,SELECT Sname,Year of Birth:,2010-sage,LOWER(Sdept)FROM Student;,3.2 查询语句,20,3.2 查询语句,21,选择表中的行(选择运算)1)消除重复行:DISTINCT(缺省为ALL)例:求选修了课程的学生号SELECT DISTINCT Sno FROM SC2)选满足一定条件的行:Where 子句运算符比较:、=、=、not+确定范围:Betw
11、een A and B、Not Between A and B确定集合:IN、NOT IN字符匹配:LIKE,NOT LIKE空值:IS NULL、IS NOT NULL多重条件:AND、OR、NOT,3.2 查询语句,22,3.2 查询语句,例:求年龄在1822(含18,22)之间的学生名及年龄(或不在1822之间)SELECT Sname,Sage FROM Student WHERE Sage BETWEEN 18 AND 22;(WHERE Sage=18 AND Sage22);,例:求计算机学院年龄小于19的姓名及年龄 SELECT Sname,Sage FROM Student
12、WHERE Sdept=计算机 AND Sage19;,23,3.2 查询语句,3)查询条件来自集合:用IN or NOT IN例:求人力系、会计系、电商系的系名、学生名(或不是这些系的学生)SELECT Class,Sname FROM Student WHERE Class IN(人力,会计,电商);(WHERE Class=人力 OR Class=会计 OR Class=电商)SELECT Class,Sname FROM Student WHERE Class NOT IN(人力,会计,电商);(WHERE Class!=人力 OR Class!=会计 OR Class!=电商),wr
13、ong,24,3.2 查询语句,Where 子句Like 格式:NOT LIKE 匹配串 ESCAPE 换码字符%:表示任意长度(0的任意字符_:表示单个的任意字符ESCAPE 换码字符:匹配串中换码字符(转义符)之后的字(%,_),被定义为普通字符(不作通配符用),4)字符匹配:,例1:列出课程名称中带有_的课号及课名。Select cno,cnameFrom CourseWhere cname LIKE%_%escape,25,3.2 查询语句,例2:求课程名中有数据库的课程记录SELECT*FROM CourseWHERE Cno LIKE%数据库%;例3:求倒数第三、四个汉字为系统的课
14、程名SELECT CnameFROM CourseWHERE Cname LIKE%系统_ _ _ _;例4:求以DATA_BASE开头且倒数第五个字符为S的课程名SELECT CnameFROM CourseWHERE Cname LIKEDATA_BASE%S_ _ _ _ ESCAPE;,26,例:查缺少成绩的学生的学号和相应的课程号 SELECT Sno,Cno FROM SC WHERE Grade IS NULL;,3.2 查询语句,5)涉及空值的查询:,27,3.2 查询语句,将查询结果集按某一列或多列的值分组,值相等的为一组,一个分组以一个元组的形式出现只有出现在Group B
15、y子句中的属性,才可出现在Select子句中例:统计各系学生的人数。Select sdept,count(*)as stu_countFrom StudentGroup By sdept,3、分组与组函数,Group By子句,28,3.2 查询语句,组函数的使用:COUNT(DISTINCT|ALL*|列名)SUM(DISTINCT|ALL 列名)AVG(DISTINCT|ALL 列名)MAX(DISTINCT|ALL 列名)MIN(DISTINCT|ALL 列名),组函数可用于SELECT子句中的目标列表中,或在HAVING子句的分组表达式中用作条件。对分出的每一组用HAVING进行筛选,
16、筛选条件要用到组函数。注意:除了count(*),使用Count(列名)函数或者其他统计函数将忽略空值。Distinct在count函数可以用于去除重复值,而在其他函数中则没有意义,29,例1:查询各个课程号与相应的选课人数 SELECT Cno,COUNT(Sno)FROM SC GROUP BY Cno;,3.2 查询语句,例2:查男女生人数 SELECT sex,COUNT(Sno)COUNTSNO FROM student GROUP BY sex;,例3:求选修了课程的学生人数SELECT COUNT(DISTINCT Sno)FROM SC;例4:求选修各门课的人数及平均成绩SEL
17、ECT Cno,COUNT(Sno),AVG(ALL GR)FROM SC GROUP BY Cno;例5:求选修课程在2门以上且都及格的学生号及总平均分SELECT Sno,AVG(ALL Grade)FROM SC GROUP BY Sno HAVING COUNT(Cno)2 AND MIN(Grade)=60;,30,3.2 查询语句,Where 决定哪些元组被选择参加运算,作用于关系中的元组Having 决定哪些分组符合要求,作用于分组,Having 与 Where的区别,31,3.2 查询语句,4、排序用ORDER BY子句对查询结果按照一个或多个列的值进行升/降排列输出,升序为A
18、SC;降序为DESC,空值将作为最大值排序,例1:对选修C5课程的学生按成绩降序排列,同分数者按学号升序排列 SELECT Sno,Grade From SC WHERE Cno=C5 ORDER BY Grade DESC,Sno ASC;例2:求每个学生的总分并按总分降序排列,学号升序SELECT Sno,SUM(ALL Grade)as tg FROM SC GROUP BY Sno ORDER BY tg DESC,Sno ASC,32,求学生中选修课程在 2门以上且都及格的学生号及总平均分,并按平均成绩排序。,3.2 查询语句,3.2 查询语句,COMPUTE函数的使用(用于汇总满足
19、条件元组在指定列的信息)Select sc.sno,cno,grade from sc,student where cno=c001 and sc.sno=student.sno and sdept=管理学院 compute avg(grade),3.2 查询语句,查询管理学院学生各门课程的平均分Select sc.sno,cno,grade from sc,student where sc.sno=student.sno and sdept=管理学院 order by cno compute avg(grade)by cno,35,3.2 查询语句,Group by 生成单个结果集,选择列表
20、只能包含分组列和聚合函数(分组函数)Compute生成多个结果集,一个结果集中包含每个组的明细行信息,另一个结果集中包含组的聚合信息。选择列表可包含除分组列或聚合函数外的其他表达式。同时,聚合函数在compute子句中指定,而不是在选择列中。,Compute 与 Group by的区别,36,3.2 查询语句,多表连接查询、单表连接查询(自连接)、外连接查询、复合条件连接查询.,二、连接查询,示例数据表:学生信息表Student;课程信息表Course;选课情况表SC,教师信息表teacher,37,3.2 查询语句,连接条件一表名1.列名1 比较运算符 表名2.列名2连接条件二表名1.列名1
21、 BETWEEN 表名2.列名2 AND 表名2.列名3,连接条件中的列名称为连接字段,其各 字段应是可比的。,1、多表连接,38,3.2 查询语句,在表1中找到第一个元组,然后从头开始扫描表2,查找到满足条件的元组即进行串接并存入结果表中;再继续扫描表2,依次类推,直到表2末尾。再从表1中取第二个元组,重复上述的操作,直到表1中的元组全部处理完毕。,执行过程:,39,3.2 查询语句例题,SELECT student.sno,Sname,Cname,GradeFROM Student S,Course C,SCWHERE S.Sno=SC.Sno AND C.Cno=SC.Cno;,例1:求
22、选课情况,要求输出学号、姓名、课程名与成绩,3.2 查询语句,40,3.2 查询语句,用表别名把一个表定义为两个不同的表进行连接。,2、单表连接(自连接),例1:求每门课的间接先修课名(即先修课的先修课),SELECT FIRST.Cno,THIRD.CnameFROM Corse FIRST,Course SECOND,Course THIRDWHERE FIRST.CPno=SECOND.Cno AND SECOND.CPno=THIRD.Cno,41,3.2 查询语句,在连接条件的某侧加上()或(+),表示该侧所对应的表中可形成一个各数据项均为空值的万能替代行,用来与另一侧对应的表中所有
23、不满足条件的元组进行连接。外连接符()或(+)出现在左侧称为右外连接、出现在右侧称为左连接、两侧都出现的称为全外连接。,SELECT DNAME,TNAME FROM department D,teacher TWHERE D.DNO=T.DNO(*);,例1:求各部门名及职工名,要求输出 无职工的部门(职工以空值出现),3、外连接,42,例题,SELECT DNAME,TNAME FROM department D,teacher TWHERE D.DNO(*)=T.DNO;,例2:求各部门名及职工名,要求输出 未分配部门的职工(部门以空值出现),43,例题,SELECT DNAME,TNA
24、ME FROM department D,teacher TWHERE D.DNO(*)=T.DNO(*);,例3:求各部门名及职工名,要求输出 无职工的部门和未分配部门的职工,注意,在sql server中,Left join 左外连接Right join 右外连接,Full join 全外连接,44,3.2 查询语句3.2,SELECT DNAME,TNAME FROM department D left join teacher Ton D.DNO=T.DNOSELECT DNAME,TNAME FROM department D right join teacher Ton D.DNO
25、=T.DNOSELECT DNAME,TNAME FROM department D full join teacher Ton D.DNO=T.DNO,45,3.2 查询语句,WHERE子句中除了连接条件,还有其它限制条件。,SELECT Sname,GradeFROM student,SCWHERE student.sno=SC.sno AND SC.Cno=C6 AND SC.Grade90;,例1:求选修C6课程且成绩超过90分的学生名与成绩,连接条件,限制条件,4、复合条件连接,46,3.2 查询语句,在SELECT FROM WHERE语句结构的 WHERE子句中可嵌入一个SELE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 数据库 SQL 语言
链接地址:https://www.31ppt.com/p-6023734.html