第四部分SQL教学课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第四部分SQL教学课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第四 部分 SQL 教学 课件
- 资源描述:
-
1、第四章第四章 SQL SQL概述概述 SQL数据定义功能数据定义功能 SQL数据查询功能数据查询功能 SQL数据修改功能数据修改功能 SQL数据控制功能数据控制功能 嵌入式嵌入式SQLSQL概述(概述()历史历史l1974年,由Boyce和Chamber提出。l1975-1979年,在System R上实现,由IBM的San Jose研究室研制,称为Sequel,现在称为SQL(Struceured Query Languang)。标准化标准化l有关组织 ANSI(American Natural Standard Institute)ISO(International Organizatio
2、n for Standardization)l有关标准 SQL-86:“数据库语言SQL”SQL概述(概述()SQL-89:“具有完整性增强的数据库语言SQL”,增加了对完整性约束的支持。SQL-92:“数据库语言SQL”,是SQL-89的超集,增加了许多新特性,如新的数据类型,更丰富的数据操作,更强的完整性、安全性支持等。SQL-3:正在讨论中的新的标准,将增加对面向对象模型的支持。特点特点l一体化集DDL,DML,DCL于一体。单一的结构-关系,带来了数据操作符的统一。l面向集合的操作方式一次一集合。SQL概述(概述()l高度非过程化 用户只需提出“做什么”,无须告诉“怎么做”,不必了解存
3、取路径。l两种使用方式,统一的语法结构 SQL既是自含式语言(用户使用),又是嵌入式语言(程序员使用)。l语言简洁,易学易用SQL功能操作符数据查询SELECT数据定义CREATE,DROP数据操纵INSERT,UPDATE,DELETE数据控制GRANT,REVOKE示例关系示例关系DEPT(D#,DNAME,DEAN)S(S#,SNAME,SEX,AGE,D#)COURSE(C#,CN,PC#,CREDIT)SC(S#,C#,SCORE)PROF(P#,PNAME,AGE,D#,SAL)PC(P#,C#)SQL数据定义功能数据定义功能 域定义域定义 基本表的定义基本表的定义 索引的定义索引
4、的定义 数据库的建立与撤消数据库的建立与撤消 SQL数据定义特点数据定义特点域定义(域定义()域类型(域类型(SQL-92)lchar(n):固定长度的字符串。lvarchar(n):可变长字符串。lint:整数。lsmallint:小整数类型。lnumeric(p,d):定点数,小数点左边p位,右边q位。lreal:浮点数。ldouble precision:双精度浮点数。ldate:日期(年、月、日)。ltime:时间(小时、分、秒)。linterval:两个date或time类型数据之间的差。域定义(域定义()域定义域定义l格式 create domain 域名 数据类型l示例creat
5、e domain person-name char(20)类似C语言中:typedef ADDRESS_LISTchar name10;char telephone20;char location20char email20;ADDRESS_LIST tom;基本表的定义(基本表的定义()基本表的定义(基本表的定义(CREATE)l格式 create table 表名(列名 数据类型 default 缺省值 not null ,列名 数据类型 default 缺省值 not null ,primary key(列名,列名),foreign key(列名,列名)references 表名(列名,
6、列名),check(条件)基本表的定义(基本表的定义()l示例 create domain person_name char(20)create table PROF(PNO char10,person_name PNAME not null,SAL int,AGE int,DNO char10,primary key(PNO),foreign key(DNO)references DEPT(DNO),check(SAL 0)基本表的定义(基本表的定义()修改基本表定义(修改基本表定义(ALTER)l格式:alter table 表名add 子句增加新列drop 子句删除列modify 子句修
7、改列定义l示例alter table PROFadd LOCATION char30基本表的定义(基本表的定义()撤消基本表定义(撤消基本表定义(drop)l格式drop table 表名l示例 drop table DEPT 撤消基本表后,基本表的定义、表中数据、索引、以及由此表导出的视图的定义都被删除。索引的定义(索引的定义()索引的定义索引的定义l格式 create unique/distinct cluster index 索引名 on 表名(列名 asc/desc ,列名asc/desc)unique(distinct):):唯一性索引,不允许表中不同的行在索引列上取相同值。若已有相
8、同值存在,则系统给出相关信息,不建此索引。系统并拒绝违背唯一性的插入、更新。cluster:聚集索引,表中元组按索引项的值排序并物理地聚集在一起。一个基本表上只能建一个聚集索引。asc/desc:索引表中索引值的排序次序,缺省为asc。l示例:create cluster index s-index on S(S#)索引的定义(索引的定义()索引的删除索引的删除l格式:drop index 索引名 索引的有关说明索引的有关说明l可以动态地定义索引,即可以随时建立和删除索引。l不允许用户在数据操作中引用索引。索引如何使用完全由系统决定,这支持了数据的物理独立性。l应该在使用频率高的、经常用于连接
9、的列上建索引。l一个表上可建多个索引。索引可以提高查询效率,但索引过多耗费空间,且降低了插入、删除、更新的效率。数据库的建立与撤消数据库的建立与撤消 有的数据库系统支持多库。建立一个新数据库建立一个新数据库create database 数据库名 撤消一个数据库撤消一个数据库drop database 数据库名 指定当前数据库指定当前数据库database 数据库名 指定当前数据库指定当前数据库close database 数据库名SQL数据定义特点数据定义特点 SQL中,任何时候都可以执行一个数据定义语句,随时修改数据库结构。而在非关系型的数据库系统中,必须在数据库的装入和使用前全部完成数据
10、库的定义。若要修改已投入运行的数据库,则需停下一切数据库活动,把数据库卸出,修改数据库定义并重新编译,再按修改过的数据库结构重新装入数据。数据库定义不断增长(不必一开始就定义完整)。数据库定义随时修改(不必一开始就完全合理)。可进行增加索引、撤消索引的实验,检验其对效率的影响。SQL数据查询功能数据查询功能 SQL数据查询基本结构数据查询基本结构 select子句子句 重复元组的处理重复元组的处理 from子句子句 where子句子句 更名运算更名运算 字符串操作字符串操作 元组显示顺序元组显示顺序 集合操作集合操作SQL数据查询功能数据查询功能 分组和聚集函数分组和聚集函数 空值空值 嵌套子
11、查询嵌套子查询 派生关系派生关系 视图视图 关系的连接关系的连接SQL数据查询基本结构数据查询基本结构 基本结构基本结构select A1,A2,Anfrom r1,r2,rmwhere P A1,A2,An(p(r1 r2 rm)示例示例给出所有老师的姓名。select PNAMEfrom PROFselect子句子句 目标列形式目标列形式 可以为列名,*,算术表达式,聚集函数。l“*”:表示“所有的属性”。给出所有老师的信息。select *from PROFl带,的算术表达式 给出所有老师的姓名及税后工资额。select PNAME,SAL 0.95from PROF重复元组的处理重复元
12、组的处理 语法约束语法约束 缺省为保留重复元组,也可用关键字all显式指明。若要去掉重复元组,可用关键字distinct或unique指明。示例示例 找出所有选修课程的学生。select distinct SNO from SCfrom子句(子句()说明说明 from子句列出查询的对象表。当目标列取自多个表时,在不混淆的情况下可以不用显式指明来自哪个关系。示例示例l例:找出工资低于500的职工的姓名、工资、系别。select PNAME,SAL,DNAME from PROF,DEPT where SAL P2.SAL 注:as可选。字符串操作(字符串操作()命令格式命令格式llike:找出满
13、足给定匹配条件的字符串。格式:列名 not like “字符串”l匹配规则:“%”:匹配零个或多个字符。“”:匹配任意单个字符。escape:定义转义字符,以去掉特殊字符的特定含义,使其被作为普通字符看待。如escape“”,是定义了 作为转义字符,则可用%去匹配%,用去匹配,用 去匹配 。字符串操作(字符串操作()示例示例l列出姓名以“张”打头的教师的所有信息。select *from PROF where PNAME like “张%”l列出名称中含有4个字符以上,且倒数第3个字符是d,倒数第2个字符是_的系的所有信息。select *from PROF where PNAME like
14、“%d”元组显示顺序元组显示顺序 命令命令order by 列名列名 asc|desc 示例示例l按系名升序列出老师姓名,所在系名,同一系中老师按姓名降序排列。select DNAME,PNAME from PROF,DEPT where PROF.DNO=DEPT.DNO order by DNAME asc,PNAME desc集合操作(集合操作()命令命令集合并:集合并:union集合交:集合交:intersect集合差:集合差:except 示例示例l求选修了001或002号课程的学生号。(select SNO from SC where CNO=001)union all(selec
15、t SNO from SC where CNO=002)集合操作(集合操作()l求选修了001和002号而没有选003号课程的学生号。(select SNO from SC where CNO=001 or CNO=002)except(select SNO from SC where CNO=003)提示提示 集合操作自动去除重复元组,如果要保留重复元组的话,必须用all关键词指明。分组和聚集函数(分组和聚集函数()分组命令分组命令group by 列名列名 having 条件表达式条件表达式 group by将表中的元组按指定列上的值相等的原则分组,然后在每一分组上使用聚集函数,得到单一值
16、。having则对分组进行选择,只将聚集函数作用到满足条件的分组上。聚集函数聚集函数l平均值:avgl最小值:minl最大值:maxl总和:suml记数:count分组和聚集函数(分组和聚集函数()示例示例l列出各系的老师的最高、最低、平均工资。select DNO,max(SAL),min(SAL),avg(SAL)from PROF group by DNOl列出及格的学生的平均成绩。select SNO,avg(SCORE)from SC group by SNO having min(SCORE)=60分组和聚集函数(分组和聚集函数()l?求选修了课程的学生人数。select coun
17、t(SNO)from SC select PNAME,max(SAL)from PROF select DNO,avg(SAL)from PROF group by DNO where AGE 60空值(空值()空值测试空值测试is not null测试指定列的值是否为空值。示例示例找出年龄值为空的老师姓名。select PNAME from PROF where AGE is null不可写为where AGE=null空值(空值()注意事项注意事项l除is not null之外,空值不满足任何查找条件。l如果null参与算术运算,则该算术表达式的值为null。l如果null参与比较运算,则
18、结果可视为false。在SQL-92中可看成unknown。l如果null参与聚集运算,则除count(*)之外其它聚集函数都忽略null。例:select sum(SAL)from PROF 例:select count(*)from PROF嵌套子查询嵌套子查询 集合成员资格集合成员资格 集合之间的比较集合之间的比较 集合基数的测试集合基数的测试l测试集合是否为空l测试集合是否存在重复元组集合成员资格(集合成员资格()in 子查询子查询表达式表达式 not in (子查询)(子查询)判断表达式的值是否在子查询的结果中。示例示例l选修了001号课程的学生的学号及姓名。select SNO,S
19、NAME from S where SNO in (select SNO from SC where CNO=001)集合成员资格(集合成员资格()l列出选修了001号和002号课程的学生的学号。select SNO from SC where SC.CNO=001 and SNO in(select SNO from SC where CNO=002)l列出张军和王红同学的所有信息。select *from S where SNAME in(“张军”,“王红”)集合之间的比较(集合之间的比较()some/all子查询子查询l表达式表达式 比较运算符比较运算符 some(子查询)(子查询)表达
展开阅读全文