数据库基础教程课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《数据库基础教程课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 基础教程 课件
- 资源描述:
-
1、nSQL: Struceured Query Languangn1974年,由Boyce和Chamber提出n1975-1979年,在System R上实现,由IBM的San Jose研究室研制,称为Sequel用户1用户2用户4视图V1视图V1用户3基本表B1基本表B2基本表B4基本表B3存储文件S1存储文件S2存储文件S4存储文件S3SQL数据库体系结构SQL用户VIEWBase TableStored filen有关组织nANSI(American Natural Standard Institute)nISO(International Organization for Standar
2、dization)n有关标准nSQL-86n“数据库语言SQL”nSQL-89n“具有完整性增强的数据库语言SQL”,增加了对完整性约束的支持nSQL-92n“数据库语言SQL”,是SQL-89的超集,增加了许多新特性,如新的数据类型,更丰富的数据操作,更强的完整性、安全性支持等。nSQL-3n正在讨论中的新的标准,将增加对面向对象模型的支持n一体化n集DDL,DML,DCL于一体n单一的结构-关系,带来了数据操作符的统一n面向集合的操作方式n一次一集合n高度非过程化n用户只需提出“做什么”,无须告诉“怎么做”,不必了解存取路径n两种使用方式,统一的语法结构nSQL既是自含式语言(用户使用),
3、又是嵌入式语言(程序员使用)n语言简洁,易学易用nchar(n):固定长度的字符串nvarchar(n):可变长字符串nint:整数nsmallint:小整数类型nnumeric(p,d):定点数,小数点左边p位,右边q位nreal:浮点数ndouble precision:双精度浮点数ndate:日期(年、月、日)ntime:时间(小时、分、秒)ninterval:两个date或time类型数据之间的差n格式 域名 数据类型n示例create domaincreate domain person-name char(20) 类似C语言中:typedeftypedef ADDRESS_LIST
4、ADDRESS_LISTchar name10;char telephone20;char location20char email20;ADDRESS_LISTADDRESS_LIST tom;n格式 表名( 列名 数据类型 缺省值 ,列名 数据类型 缺省值 ,(列名 ,列名 ) , (列名 ,列名 ) 表名 (列名 ,列名 ) ,(条件)checkcheckn示例CREATE TABLECREATE TABLE S( S# CHARCHAR(4), SNAME CHARCHAR(8) NOT NULLNOT NULL, AGE SMALLINTSMALLINT, SEX CHARCHAR(
5、1), PRIMARY KEY PRIMARY KEY (S#), CHECKCHECK (SEX=0 OR SEX=1)CREATE TABLECREATE TABLE C( C# CHARCHAR(4), CNAME CHARCHAR(10) NOT NULLNOT NULL, TEACHER CHARCHAR(8), PRIMARY KEY PRIMARY KEY (C#),)CREATE TABLECREATE TABLE SC(S# CHARCHAR(4), C# CHARCHAR(4), GRADE SAMLLINTSAMLLINT, PRIMARY KEY PRIMARY KEY
6、 (S#,C#), FOREIGN KEY FOREIGN KEY (S#)REFERENCESREFERENCES S(S#), FOREIGN KEY FOREIGN KEY (C#)REFERENCESREFERENCES C(S#), CHECKCHECK(GRADE IS NULLIS NULL) OROR GRADE BETWEENBETWEEN 0 ANDAND 100)n示例 create domaincreate domain person_name char(20)create tablecreate table PROF( PNO char10, person_name
7、PNAME not nullnot null, SAL int, AGE int, DNO char10, primary key primary key (PNO), foreign key foreign key (DNO) references references DEPT(DNO), checkcheck (SAL 0)n格式: 表名 子句增加新列子句删除列 子句修改列定义n示例alter tablealter table PROFadd add LOCATION char30n格式 表名n示例 drop tabledrop table DEPT 撤消基本表后,基本表的定义、表中数据
8、、索引、以及由此表导出的视图的定义都被删除n格式 / 索引名 表名 (列名 / , 列名/) uniqueunique(distinctdistinct):):唯一性索引,不允许表中不同的行在索引列上取相同值。若已有相同值存在,则系统给出相关信息,不建此索引。系统并拒绝违背唯一性的插入、更新 clustercluster:聚集索引,表中元组按索引项的值排序并物理地聚集在一起。一个基本表上只能建一个聚集索引 asc/descasc/desc:索引表中索引值的排序次序,缺省为ascn示例: create cluster indexcreate cluster index s-index on S(
9、S#)n格式 索引名n可以动态地定义索引,即可以随时建立和删除索引n不允许用户在数据操作中引用索引。索引如何使用完全由系统决定,这支持了数据的物理独立性n应该在使用频率高的、经常用于连接的列上建索引n一个表上可建多个索引。索引可以提高查询效率,但索引过多耗费空间,且降低了插入、删除、更新的效率 数据库名 数据库名 数据库名 数据库名selectselect A1 , A2 , , Anfromfrom r1 , r2 , , rmwherewhere P A1 , A2 , , An(p(r1 r2 rm)给出所有老师的姓名selectselect PNAMEfromfrom PROF 可以为
10、列名,* ,算术表达式,聚集函数n“* *”:表示“所有的属性”给出所有老师的信息selectselect *fromfromPROFn带, , 的算术表达式给出所有老师的姓名及税后工资额selectselect PNAME,SAL 0.95fromfrom PROF 缺省为保留重复元组,也可用关键字allall显式指明。若要去掉重复元组,可用关键字distinctdistinct或uniqueunique指明 找出所有选修课程的学生 selectselect distinctdistinct SNO fromfrom SCnfrom子句列出查询的对象表n当目标列取自多个表时,在不混淆的情况下
11、可以不用显式指明来自哪个关系n例:找出工资低于500的职工的姓名、工资、系别 selectselectPNAME , SAL , DNAME fromfrom PROF , DEPT wherewhere SAL P2.SAL n格式列名 “字符串”找出满足给定匹配条件的字符串n匹配规则n “%” n匹配零个或多个字符n “”n匹配任意单个字符nEscapen定义转义字符,以去掉特殊字符的特定含义,使其被作为普通字符看待n如escape “”,定义 作为转义字符,则可用%去匹配%,用去匹配思考:用什么去匹配 ?n列出姓名以“张”打头的教师的所有信息 selectselect * fromfro
12、m PROF wherewhere PNAME likelike “张%”n列出名称中含有4个字符以上,且倒数第3个字符是d,倒数第2个字符是_的系的所有信息 selectselect * fromfrom PROF wherewhere PNAME likelike “% d ”n按系名升序列出老师姓名,所在系名,同一系中老师按姓名降序排列 selectselect DNAME,PNAME fromfrom PROF,DEPT wherewhere PROF.DNO = DEPT.DNO order byorder by DNAME ascasc,PNAME descdescn提示 集合操作
13、自动去除重复元组,如果要保留重复元组的话,必须用all关键词指明n求选修了001或(且)002号课程的学生号(selectselect SNOfromfrom SC wherewhere CNO = 001)union (intersect)union (intersect)(selectselect SNO fromfrom SC wherewhere CNO = 002)n求选修了001和002号而没有选003号课程的学生号(selectselect SNOfromfrom SC wherewhere CNO = 001 oror CNO = 002 )exceptexcept(selec
14、tselect SNOfromfrom SC wherewhere CNO = 003) group by将表中的元组按指定列上值相等的原则分组,然后在每一分组上使用聚集函数,得到单一值having则对分组进行选择,只将聚集函数作用到满足条件的分组上列出每个学生的平均成绩列出每门课程的平均成绩group by S#group by C#928590929290n平均值:avgavgn最小值:minminn最大值:maxmaxn总和:sumsumn记数:countcountcountcount(* *)与)与countcount(列名)的差别(列名)的差别n列出各系的老师的最高、最低、平均工资
15、selectselect DNO,maxmax(SAL),minmin(SAL),avgavg(SAL) fromfrom PROF group by group by DNOn火眼金睛火眼金睛 求选修了课程的学生人数 selectselect count count (SNO ) fromfrom SC selectselect PNAME,maxmax(SAL) fromfrom PROF selectselect DNO,avgavg(SAL) fromfrom PROF group bygroup by DNO wherewhere AGE 60n列出及格的学生的平均成绩 select
16、select SNO,avgavg(SCORE) fromfrom SC group bygroup by SNO havinghaving minmin(SCORE) = 60selectselect SNO,avgavg(SCORE) fromfrom SCwherewhere SCORE =60 group bygroup by SNOn列出每一年龄组中男学生(超过50人)的人数 selectselect AGE,countcount(S#) fromfrom S wherewhere SEX = M group by group by AGE havinghaving count(*)
17、 50测试指定列的值是否为空值找出年龄值为空的老师姓名 selectselect PNAME fromfrom PROF wherewhere AGE is nullis null不可写为wherewhere AGE = null nulln除is not null之外,空值不满足任何查找条件n如果null参与算术运算,则该算术表达式的值为nulln如果null参与比较运算,则结果可视为false。在SQL-92中可看成unknownn如果null参与聚集运算,则除count(*)之外其它聚集函数都忽略null 例:selectselect sumsum(G) fromfrom SC例:sel
18、ectselect countcount(*) fromfrom SCn测试集合是否为空n测试集合是否存在重复元组表达式表达式 (子查询)(子查询)判断表达式的值是否在子查询的结果中n列出张军和王红同学的所有信息 selectselect * fromfrom S wherewhere SNAME in in (“张军”,“王红”)n选修了001号课程的学生的学号及姓名 selectselect SNO,SNAME fromfrom S where where SNO inin (selectselect SNO fromfrom SC wherewhere CNO = 001)n列出选修了0
19、01号和002号课程的学生的学号 selectselect SNO fromfrom SC wherewhere SC.CNO = 001 andand SNO in in (selectselect SNO fromfrom SC wherewhere CNO = 002)n表达式表达式 比较运算符比较运算符 (子查询)(子查询) 表达式的值至少与子查询结果中的一个值相比满足比较运算符 n表达式表达式 比较运算符比较运算符 (子查询)(子查询) 表达式的值与子查询结果中的所有的值相比都满足比较运算符n找出平均成绩最高的学生号 selectselect SNO fromfrom SC grou
20、p bygroup by SNO havinghaving avgavg(SCORE) = allall(selectselect avgavg(SCORE) fromfrom SC group bygroup by SNO)判断子查询的结果集合中是否有任何元组存在in后的子查询与外层查询无关,每个子查询执行一次,而exists后的子查询与外层查询有关,需要执行多次,称之为n列出选修了01号课程的学生的学号及姓名 selectselect SNO,SNAME fromfrom S wherewhere exists (selectselect * fromfrom SC wherewhere
21、CNO = 01 a n da n d S N O = S.SNO)n列出选修了001号和002号课程的学生的学号 selectselect SNO fromfrom SC SC1 wherewhere SC1.CNO = 001 andand exists exists (selectselect SNO fromfrom SC SC2 wherewhere SC2. CNO = 002 andand SC2.SNO = SC1.SNO)n列出选修了全部课程的学生姓名 selectselect SNAME fromfrom S wherewhere not existsnot exists(
22、selectselect C# fromfrom C wherewhere notnot existsexists(selectselect * fromfrom SC wherewhere SC.C# = C.C# andand SC.S# = S.S# )任意课程,所求学生选之 不存在任何一门课程,所求学生没有选之n列出至少选修了001号学生选修的所有课程的学生名 selectselect SNAME fromfrom S wherewhere not existsnot exists(selectselect CNO fromfrom COURSE wherewhere existsex
23、ists(selectselect * fromfrom SC wherewhere SC.CNO = COURSE.CNO andand SC.SNO = 001) and not existsand not exists(selectselect * fromfrom SC wherewhere SC.CNO = COURSE.CNO andand SC.SNO = S.SNO)任意课程,001号学生选之,所求学生选之 不存在任何一门课程,001号学生选之,所求学生没有选之如果子查询结果中没有重复元组,则返回truen找出所有只教授一门课程的老师姓名 selectselect PNAME
24、from from PROF where where uniqueunique(selectselect PNO fromfrom PC wherewhere PC.PNO = PROF.PNO)n找出至少选修了两门课程的学生姓名 selectselect SNAME from from S where where notnot uniqueunique(selectselect SNO fromfrom SC wherewhere SC.SNO = S.SNO)uniqueunique (a , b , null) , (a , b , null) ? SQL-92中,允许在from子句中使
展开阅读全文