《理论结构化查询语言用优秀PPT.ppt》由会员分享,可在线阅读,更多相关《理论结构化查询语言用优秀PPT.ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、理论结构化查询语言用你现在浏览的是第一页,共35页6.1 SQL语言概述语言概述 关系数据库管理系统的标准语言关系数据库管理系统的标准语言 包括:包括:Oracle、Sybase、Microsoft SQL Server、Access 你现在浏览的是第二页,共35页6.1 SQL语言概述语言概述 (1)一体化一体化 (2)完备的查询功能完备的查询功能(统计和计算统计和计算)(3)简洁易学(简洁易学(命令少,语法简单命令少,语法简单)(4)非过程化非过程化 (5)用法灵活用法灵活 (6)可对视图操作可对视图操作你现在浏览的是第三页,共35页内内 容容6.2 数据定义数据定义6.3 数据操作数据操
2、作6.4 数据查询数据查询优越性优越性:不需要打开相关表,直接使用:不需要打开相关表,直接使用SQL语句即可。语句即可。你现在浏览的是第四页,共35页6.2 SQL定义功能定义功能建立表结构建立表结构(CREAT TABLE)修改表结构(修改表结构(ALTER TABLE)建立视图(建立视图(CREAT SQL VIEW)你现在浏览的是第五页,共35页例例 子子vCREAT TABLE 通讯录通讯录 FREE(姓名姓名 C(8);生日生日 D,家庭电话家庭电话C(14),手机手机 C(12)vALTER TABLE 通讯录通讯录 ADD 地址地址 C(24)vALTER TABLE 通讯录通讯
3、录 ALTER 地址地址 C(30)vALTER TABLE 通讯录通讯录 DROP地址地址 vALTER TABLE 通讯录通讯录 RENA 地址地址 TO DZ valter table primary key tag 你现在浏览的是第六页,共35页建立视图建立视图 create sql view as 说明:说明:在查询中讲,因为在查询中讲,因为视图设计器和查询设计器基本上是一致视图设计器和查询设计器基本上是一致的。的。你现在浏览的是第七页,共35页6.3 SQL的数据修改功能的数据修改功能6.3.1 插入数据插入数据6.3.2 更新数据更新数据6.3.3 删除数据删除数据你现在浏览的是
4、第八页,共35页6.3.1 插入数据插入数据1.命令格式命令格式insert into (,)values(,)v在表尾插入记录在表尾插入记录vValue中表达式的值为插入记录的具体值,各表达式的中表达式的值为插入记录的具体值,各表达式的类型、宽度和先后顺序须与指定的各字段类型、宽度和先后顺序须与指定的各字段对应对应。v若插入所有字段,后面的字段名可以省略,但插入若插入所有字段,后面的字段名可以省略,但插入的数据与表的结构要完全吻合。的数据与表的结构要完全吻合。你现在浏览的是第九页,共35页例:在例:在ZGDA中插入一条记录中插入一条记录插入部分字段的记录插入部分字段的记录:Insert in
5、to zgda(编号编号,姓名姓名,基本工资基本工资);values(2000117,张笑张笑,500)插入所有字段的记录:插入所有字段的记录:Insert into zgda values(2000117,张笑张笑,;女女,工程师工程师,1260)你现在浏览的是第十页,共35页6.3.2 更新数据更新数据update set =,=where()v缺省缺省where短语是对所有记录进行数据更新短语是对所有记录进行数据更新例:例:(1)update zgda set 年龄年龄=年龄年龄+1,;基本工资基本工资=基本工资基本工资*1.1(2)update zgda set 基本工资基本工资=基本
6、工资基本工资+80;where 性别性别=女女(3)职称是高工的基本工资用实发工资的职称是高工的基本工资用实发工资的1.15倍加倍加80填填入?入?你现在浏览的是第十一页,共35页6.3.3 删除数据删除数据delete from where v缺省缺省where则删除所有记录则删除所有记录v仅对要删除的记录做上删除标记仅对要删除的记录做上删除标记 (逻辑删除逻辑删除)例:例:delete from zgda where 年龄年龄55 pack你现在浏览的是第十二页,共35页6.4 SQL的数据查询功能的数据查询功能(核心核心)完成从一个或多个数据表中检完成从一个或多个数据表中检索数据的功能。
7、索数据的功能。注意注意:同样不需要打开表和所在的:同样不需要打开表和所在的数据库,直接输入命令,即可得到数据库,直接输入命令,即可得到结果。结果。你现在浏览的是第十三页,共35页selefrom(最短形式最短形式)whereorder bygroup byhavingtop|distinctinto|to你现在浏览的是第十四页,共35页基本结构:基本结构:SELECTFROMWHEREWHERE:联接和筛选条件联接和筛选条件ORDER BY:排序依据排序依据GROUP BY:分组依据分组依据INTO:查询去向查询去向你现在浏览的是第十五页,共35页6.4.2 简单查询简单查询1.查询查询stu
8、dent表中男生记录,表中男生记录,结果存入新表结果存入新表nsjl select *from student;where 性别性别=“男男”;into dbf nsjl2.查询查询student表中表中非北京籍非北京籍女生的姓名女生的姓名,年龄年龄,籍贯籍贯 select 姓名姓名,年龄年龄,籍贯籍贯 from student;where 性别性别=“女女”and 籍贯籍贯!=“北京北京”你现在浏览的是第十六页,共35页3.查询查询student表中有哪些班级(表中有哪些班级(不出现重复值不出现重复值)select distinct 班级班级 from student4.查询查询studen
9、t表中年龄在表中年龄在1920之间之间的学生记录的学生记录,并按并按出生日期排序出生日期排序 select *from student;where 年龄年龄 between 19 and 20;order by 出生日期出生日期 desc你现在浏览的是第十七页,共35页例:在例:在student表中查询所有姓表中查询所有姓“张张”的同学的记录。的同学的记录。sele*from student where 姓名姓名 like 张张%说明:说明:Like 是字符串匹配运算符,允许使用通配符是字符串匹配运算符,允许使用通配符%,_%:代表:代表零个零个或任意或任意多个多个字符;字符;_:代表任意:代
10、表任意一个一个字符;字符;问题:查找姓张,而且名字有三个字的人如何查找?问题:查找姓张,而且名字有三个字的人如何查找?sele*from student where 姓名姓名 like 张张_ _ 你现在浏览的是第十八页,共35页例:在例:在student表中查询所有籍贯为表中查询所有籍贯为“内蒙古内蒙古”或或“山山东东”的记录。的记录。sele*from student where 籍贯籍贯 in(内蒙古内蒙古,山东山东)问题:查找问题:查找zgda表中职称不是表中职称不是“工程师工程师”也不是也不是“助助工工”的记录。的记录。sele*from zgda;where 职称职称 not in
11、(工程师工程师,助工助工)你现在浏览的是第十九页,共35页5.查询查询student表中年纪最小的表中年纪最小的三名三名的学生的学生记录记录 select *top 3 from student;order by 出生日期出生日期 descTOP子句必须同时与子句必须同时与ORDER BY子句使用!子句使用!你现在浏览的是第二十页,共35页6.4.4 嵌套查询嵌套查询VFP允许在一个允许在一个SELECT查询命令的查询命令的WHERE短语中短语中包含另一个包含另一个SELECT查询命令查询命令1.在图书管理数据库中,按班级次序列出借书超过在图书管理数据库中,按班级次序列出借书超过60天天的学生
12、所在班级,学号、姓名。的学生所在班级,学号、姓名。Select 姓名姓名,学号学号,班级班级 from student;where 学号学号 in(select 学号学号 from borrow;where date()-借书日期借书日期60);order by 班级班级你现在浏览的是第二十一页,共35页6.4.3 嵌套查询嵌套查询2.在图书管理数据库中,列出未曾借过书的男生记录在图书管理数据库中,列出未曾借过书的男生记录 Select *from student;where 性别性别=“男男”and;学号学号 not in (select 学号学号 from borrow)你现在浏览的是第二
13、十二页,共35页6.4.5 多表查询多表查询基于多个相关联数据表的查询,数据表之间的关联通常基于多个相关联数据表的查询,数据表之间的关联通常是按两表中是按两表中对应字段的共同值对应字段的共同值建立联系。建立联系。1.在图书管理库中,查询借阅在图书管理库中,查询借阅“大学英语大学英语”书的学生姓名、书的学生姓名、性别、借书日期。性别、借书日期。Select student.姓名姓名,student.性别性别,borrow.借书日借书日期期 from student,borrow where student.学号学号=borrow.学号学号 and borrow.书名书名=“大学英语大学英语”你现
14、在浏览的是第二十三页,共35页sele zgda.编号编号,zgda.姓名姓名,;(zgda.基本工资基本工资+zjgz.增资额增资额)as 最终工资最终工资;from zgda,zjgz;where zgda.编号编号=zjgz.编号编号;order by 3 2 2、在职工管理数据库中、在职工管理数据库中(包含包含zgdazgda和和zjgz)zjgz),查询,查询出职工最终发的工资是多少(出职工最终发的工资是多少(=基本工资基本工资+增资额)增资额),并按最终工资从高到低输出编号、姓名、最,并按最终工资从高到低输出编号、姓名、最终工资终工资你现在浏览的是第二十四页,共35页你现在浏览的是
15、第二十五页,共35页6.4.6 超链接查询超链接查询基于多个相关联数据表的查询。基于多个相关联数据表的查询。slectfrom inner|left|right|full join on where 1.在图书管理库中,查询借阅在图书管理库中,查询借阅“大学英语大学英语”书的学生姓名、性书的学生姓名、性别、借书日期。别、借书日期。Select student.姓名姓名,student.性别性别,borrow.借书日期借书日期 from student inner join borrow on student.学号学号=borrow.学号学号 where borrow.书名书名=“大学英语大学英
16、语”你现在浏览的是第二十六页,共35页sele zgda.编号编号,zgda.姓名姓名,;(zgda.基本工资基本工资+zjgz.增资额增资额)as 最终工资最终工资;from zgda inner join zjgz;on zgda.编号编号=zjgz.编号编号 order by 3 2 2、在职工管理数据库中、在职工管理数据库中(包含包含zgdazgda和和zjgz)zjgz),查,查询出职工最终发的工资是多少(询出职工最终发的工资是多少(=基本工资基本工资+增资增资额),并按最终工资从高到低输出编号、姓名、额),并按最终工资从高到低输出编号、姓名、最终工资最终工资你现在浏览的是第二十七页
17、,共35页6.4.7 统计查询统计查询SQL-SELECT 命令不仅具备一般检索能命令不仅具备一般检索能力,同时支持对查询结果数据的统计:力,同时支持对查询结果数据的统计:平均值:平均值:AVG()()求和求和:SUM()()计数计数:COUNT()()最小值最小值:MIN()()最大值最大值:MAX()()以列为单位以列为单位你现在浏览的是第二十八页,共35页1.统计成绩表中数学成绩的最高成绩、外语的最低成绩统计成绩表中数学成绩的最高成绩、外语的最低成绩和计算机的平均成绩。和计算机的平均成绩。Select max(数学数学),min(外语外语);,avg(计算机计算机)from cj Sel
18、ect max(数学数学)as 数学最高分数学最高分,;min(外语外语)as 外语最低分外语最低分,;avg(计算机计算机)as 计算机平均分计算机平均分 from cj你现在浏览的是第二十九页,共35页2.统计统计student表中年龄表中年龄最小最小的学生的生日的学生的生日 Select max(出生日期出生日期)from student3.查询籍贯为查询籍贯为“山东山东”的人数:的人数:Select count(*)as 山东人数山东人数 from student;where 籍贯籍贯=“山东山东”4.查询学生来自几个不同的地区(籍贯):查询学生来自几个不同的地区(籍贯):select
19、 count(distinct 籍贯籍贯)from student你现在浏览的是第三十页,共35页6.4.8 分组查询分组查询1.统计统计student表中各班级的人数表中各班级的人数Sele 班级班级,count(*)AS 人数人数 FROM student;Group by 班级班级2.统计男女生的最大年龄和最小年龄统计男女生的最大年龄和最小年龄Select 性别性别,max(年龄年龄),min(年龄年龄);From student group by 性别性别你现在浏览的是第三十一页,共35页例:依据例:依据student表中的数据,分别统计各表中的数据,分别统计各种籍贯的人数,但仅列出该
20、籍贯仅有种籍贯的人数,但仅列出该籍贯仅有1人的人的姓名及籍贯。姓名及籍贯。sele 籍贯籍贯,count(*)as 人数人数;from student;group by 籍贯籍贯;having count(*)=1你现在浏览的是第三十二页,共35页注意:注意:group by having having子句必须与子句必须与group by连用连用。与与where的区别:的区别:where限定输出记录满足的条件;限定输出记录满足的条件;having限定输出的分组结果应满足的条限定输出的分组结果应满足的条件。件。你现在浏览的是第三十三页,共35页sele student.sele student.
21、学号学号学号学号,student.姓名姓名姓名姓名,;sum(0.15*(date()-borrow.sum(0.15*(date()-borrow.借书日期借书日期借书日期借书日期-60);as as 总罚款金额总罚款金额总罚款金额总罚款金额;from student,borrow group by 学号学号;where student.where student.学号学号学号学号=borrow.=borrow.学号学号学号学号.and.;.and.;(date()-borrow.(date()-borrow.借书日期借书日期60)60)into dbf 超期罚款超期罚款超期罚款超期罚款根据根据student和和borrow表的数据,通过表的数据,通过sql命命令产生一个名为令产生一个名为“超期罚款超期罚款”的数据表,包的数据表,包含姓名,学号,总罚款金额含姓名,学号,总罚款金额3个字段。注:借个字段。注:借书日期至今已超过书日期至今已超过60天为超期,每本书每超天为超期,每本书每超期期1天罚款天罚款0.15元。元。你现在浏览的是第三十四页,共35页 use 超期罚款超期罚款 brow你现在浏览的是第三十五页,共35页
限制150内