第3章语句优秀PPT.ppt
《第3章语句优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第3章语句优秀PPT.ppt(79页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第3章语句现在学习的是第1页,共79页3.1 SQL语言概况nSQL简介q结构化查询语言SQL(StructuredQueryLanguage)是一种介于关系代数与关系演算之间的语言,其功能包括查询、操纵、定义和控制四个方面,是一个通用的、功能极强的关系数据库语言。目前已成为关系数据库的标准语言。qSQL语言的版本包括:SQL-89,SQL-92,SQL3。nSQL特点qSQL语言之所以能够为用户和业界所接受,成为国际标准,是因为它是一个综合的、通用的、功能极强同时又简洁易学的语言。qSQL语言集数据查询(dataquery)、数据操纵(datamanipulation)、数据定义(datad
2、efinition)和数据控制(datacontrol)功能于一体,充分体现了关系数据语言的特点和优点。现在学习的是第2页,共79页3.1 SQL语言概况nSQL的基本概念SQL语言支持关系数据库三级模式结构。其中外模式对应于视图(View),模式对应于基本表,内模式对应于存储文件。q基本表是本身独立存在的表,在SQL中一个关系就对应一个表。一些基本表对应一个存储文件,一个表可以带若干索引,索引也存放在存储文件中。q存储文件的逻辑结构组成了关系数据库的内模式。存储文件的物理文件结构是任意的。q视图是从基本表或其他视图中导出的表,它本身不独立存储在数据库中,也就是说数据库中只存放视图的定义而不存
3、放视图对应的数据,这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。用户可以用SQL语言对视图和基本表进行查询。在用户眼中,视图和基本表都是关系,而存储文件对用户是透明的。现在学习的是第3页,共79页3.1 SQL语言概况nSQL的基本功能q(1)数据定义功能n 基本表的建立、取消与更改。n 索引的建立与取消。n 视图的创建与取消。q(2)数据查询功能(包括数据表和视图)q(3)数据更新功能n数据插入、删除、修改功能。q(4)数据控制功能n数据库保护功能(安全性和完整性保护)。n事务管理功能(数据库故障恢复和并发事务处理)。现在学习的是第4页,共79页3.2 SQL数据定义语言n模式(数
4、据库)定义模式(数据库)定义n模式是表示“基本表”、“视图”等的集合,定义SQL模式也就是定义了一个存储空间,在此空间中对象全体构成了对应的SQL数据库n例如,教学数据库的SQL模式定义如下:CREATEDATABASEJIAOXUEn一般格式如下:CREATEDATABASE现在学习的是第5页,共79页3.2 SQL数据定义语言n模式定义模式定义n当一个SQL模式不需要时,可以用DROP语句撤销:nDROPDATABASE例:撤销SQL模式“JIAOXUE”DROPDATABASEJIAOXUE现在学习的是第6页,共79页3.2 SQL数据定义语言n定义基本表n一般格式如下:CREATETA
5、BLE(列级完整性约列级完整性约束条件束条件,列级完整性约束条件列级完整性约束条件.),;其中是所要定义的基本表的名字,它可以由一个或多个属性(列)组成。建表的同时通常还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,当用户操作表中数据时由DBMS自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。现在学习的是第7页,共79页3.2 SQL数据定义语言定义基本表(续)例1:在数据库JIAOXUE中建立一个“学生”表S,它由学号S、姓名Sn、性别Se、年龄Sa、所在系Sd五个属
6、性组成,其中学号属性不能为空,并且其值是唯一的,姓名属性不能为空,年龄要在1525范围,性别默认为男性,主键为学号。USE JIAOXUECREATE TABLE S(S#CHAR(5)NOT NULL UNIQUE,SN CHAR(20)NOT NULL,SE CHAR(2)DEFAULT M,SA SMALLINT,SD CHAR(20),PRIMARY KEY(S#),CHECK(SA BETWEEN 15 AND 25);现在学习的是第8页,共79页3.2 SQL数据定义语言定义基本表(续)例2:建立一个“选课”表C,它由课程号(C)、课程名(Cn)、先修课号(P)三个属性组成,其中课
7、程号和课程名属性不能为空,主键为课程号。CREATE TABLE C(C#CHAR(4)NOT NULL,CN CHAR(10)NOT NULL,P#CHAR(4),PRIMARY KEY(C#);现在学习的是第9页,共79页3.2 SQL数据定义语言定义基本表(续)例3:建立一个“学生选课”表SC,它由学生号(S),课程号(C)、成绩(G)三个属性组成,其中学生号和课程号属性不能为空,主键为学生号、课程号,学生号是表S的外键,课程号是表C的外建。CREATE TABLE SC(S#CHAR(4)NOT NULL,C#CHAR(4)NOT NULL,G SMALLINT,PRIMARY KEY
8、(S#,C#),FOREIGN KEY(S#)REFERENCES S(S#)ON DELETE CASCADE,FOREIGN KEY(C#)REFERENCES C(C#)ON DELETE NO ACTION);n选用NOACTION选项:表明被基本表所引用的主属性不得删除n选用CASCADE选项:表明若主表中删除被引用的主属性,则基本表中引用该外建的对应行随之被删除。现在学习的是第10页,共79页3.2 SQL数据定义语言定义基本表(续)定义表的各个属性时需要指明其数据类型及长度。不同的数据库系统支持的数据类型不完全相同,例如IBMDB2SQL主要支持以下数据类型:SMALLINT半字
9、长二进制整数。INTEGER或INT全字长二进制整数。DECIMAL(p,q)压缩十进制数,共p位,其中小数点后有q位。0qp15,q=0时可以省略。FLOAT双字长浮点数。CHARTER(n)或CHAR(n)长度为n的定长字符串。VARCHAR(n)最大长度为n的变长字符串。TXET存储数量巨大的变长字符串数据DATE日期型,格式为YYYY-MM-DD。TIME时间型,格式为HH.MM.SS。DATETIME日期加时间。现在学习的是第11页,共79页3.2 SQL数据定义语言基本表更新对基本表结构进行更新,包括增加新属性列、删除原有属性列、修改数据类型、补充定义主键和删除主键等。n(1)增加
10、属性列n一般格式为:ALTERTABLEADD完整性约束条件完整性约束条件n例:在基本表例:在基本表S中添加一个新的地址属性中添加一个新的地址属性ADDRESSALTERTABLESADDADDRESSVARCHAR(50);n基本表在增加一列后,原有元组在新增加的列上的值都定义为空值(NULL),因而新添加属性列时不允许出现NOTNULL。现在学习的是第12页,共79页3.2 SQL数据定义语言(2)删除属性列一般格式为:ALTERTABLEDROPCOLUMNn例:在基本表例:在基本表S删除属性列删除属性列SAALTERTABLESDROPCOLOMNSA现在学习的是第13页,共79页3.
11、2 SQL数据定义语言(3)修改属性列一般格式为:ALTERTABLEALTERCOLUMNn例:在基本表例:在基本表S中将中将ADDRESS的长度修改为的长度修改为40ALTERTABLESALTERCOLUMNADDRESSCHAR(40);现在学习的是第14页,共79页3.2 SQL数据定义语言(4)查看所有约束一般格式为:EXECSP_HELPCONSTRAINTn例:在查看例:在查看S表所有约束表所有约束nEXEC SP_HELPCONSTRAINT Sn约束类型有六种:主键,约束类型有六种:主键,NOTNULL,DEFAULT,CHECK,UNIQUE,外键。外键。现在学习的是第1
12、5页,共79页3.2 SQL数据定义语言(5)补充定义主键一般格式为:ALTERTABLECONSTRAINTADDPRIMARYKEY()定义的主键属性应当是非空和满足唯一性要求定义的主键属性应当是非空和满足唯一性要求n例:全体男生表例:全体男生表Smale,其结构与,其结构与S表相同,补充定义表相同,补充定义Smale的主键的主键ALTERTABLESmalenADDPRIMARYKEY(S#);现在学习的是第16页,共79页3.2 SQL数据定义语言(6)删除主键一般格式为:ALTERTABLEDROPCONSTRAINT例:删除例:删除S表中主键表中主键SALTER TABLE S D
13、ROP CONSTRAINT PK_S_0BC6C43E现在学习的是第17页,共79页3.2 SQL数据定义语言(7)删除其他约束一般格式为:ALTERTABLEDROPCONSTRAINTn例:删除例:删除S表中键表中键SA的年龄约束条件的年龄约束条件ALTERTABLESDROPCONSTRAINTCK_S_SA_0425A276现在学习的是第18页,共79页3.2 SQL数据定义语言(8)增加其它约束条件一般格式为:ALTERTABLEADDCONSTRAINT约束类型约束类型例:在例:在S表中地址表中地址ADDRESS加上唯一约束加上唯一约束ALTER TABLE S ADD CONS
14、TRAINT PK_ADDRESS_UNIQUE UNIQUE(address);例:在例:在S表中地址表中地址ADDRESS加上默认值为广东省广州市加上默认值为广东省广州市ALTER TABLE SADDCONSTRAINT PK_ADDRESS_DEFAUTL DEFAULT 广东省广州市 FOR ADDRESS现在学习的是第19页,共79页3.2 SQL数据定义语言例:在例:在SC表中把表中把C#的外键约束删除后,再添加的外键约束删除后,再添加C#外键约束ALTER TABLE SC ADD CONSTRAINT PK_C#_FOREIGN_UNIQUE FOREIGN KEY(C#)R
15、EFERENCES C(C#)例:在例:在S表中地址表中地址SE加上检查约束,要求加上检查约束,要求SE只能为只能为F或或MALTER TABLE SADD CONSTRAINT PK_SE_CHECKCHECK(SE IN(M,N)现在学习的是第20页,共79页3.2 SQL数据定义语言删除基本表一般格式为:DROPTABLE例:删除SC表DROPTABLESC现在学习的是第21页,共79页3.2 SQL数据定义语言索引是为了快速查找数据用的。索引相当于排序,但与排序不同的是,排序是将原数据重新排列,改变了原数据的排列顺序。而索引只是建立一个顺序表,由这个顺序表指出数据的顺序,所以索引不改变
16、原数据的排列顺序。索引被用来快速找出在一个列上用一特定值的行。没有索引,不得不首先以第一条记录开始并然后读完整个表直到它找出相关的行。表越大,花费时间越多。如果表对于查询的列有一个索引,能快速到达一个位置去搜寻到数据文件的中间,没有必要考虑所有数据。SQL新标准都不主张使用索引,而是在创建基本表时以主键取而代之了。现在学习的是第22页,共79页3.2 SQL数据定义语言建立索引一般格式为:CREATEUNIQUECLUSTER|NONCLUSTERINDEXON(ASC|DESC,ASC|DESC.);其中,指定要建索引的基本表的名字。索引可以建在该表的一列或多列上,各列名之间用逗号分隔。每个
17、后面还可以用指定索引值的排列次序,包括ASC(升序)和DESC(降序)两种,缺省值为ASC。UNIQUE表明此索引的每一个索引值只对应唯一的一个元组现在学习的是第23页,共79页默认主键为簇索引,所以一般建立的都为非簇索引。默认主键为簇索引,所以一般建立的都为非簇索引。现在学习的是第24页,共79页3.2 SQL数据定义语言例为学生-课程数据库中的S、C、SC三个表建立索引。其中S按学号升序建唯一索引,C表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。CREATEUNIQUENONCLUSTEREDINDEXSnoONS(S#);CREATEUNIQUENONCLUSTERE
18、DINDEXConoONC(C#);CREATEUNIQUENONCLUSTEREDINDEXSCnoONSC(S#ASC,C#DESC);现在学习的是第25页,共79页3.2 SQL数据定义语言查看索引:EXECSP_HELPINDEXS删除索引:DROPINDEXS.SNO现在学习的是第26页,共79页3.3 SQL数据查询语言SQL数据查询功能是一种基于关系元素的操作形式。查询常用的关系运算是:其中:查询的目标属性r1,r2,rn查询所涉及的关系R1,R2,Rn查询的逻辑条件Fn对应SQL查询语句为:nSELECT子句。表示查询的目标属性,指定做投影运算。nFROM子句。表示查询所涉及的
19、关系,指定多个关系做连接运算。nWHERE子句。表示查询的逻辑条件,指定做选择运算现在学习的是第27页,共79页SELECT语句一般格式为:SELECTALL|DISTINCT,.FROM,WHEREGROUPBYHAVINGORDERBYASC|DESC;整个SELECT语句的含义是n首先,根据WHERE子句的条件表达式n其次,从FROM子句指定的基本表或视图中找出满足条件的元组n最后按照SELECT子句中的目标列表达式,选出元组中的属性值形成结果关系表。值得注意的是:nSELECT子句中输出可以是列名,目标列的表达式或聚集函数(AVG、COUNT、MAX、MIN和SUM),DISTINCT
20、选项用以保证查询的结果中不存在重复的元组。现在学习的是第28页,共79页3.3 SQL数据查询语言(1)(单表查询)(1)不带条件的列查询不带条件的列查询例1:查询S所有列的情况SELECT*FROMS;说明:中各个列的先后顺序可以与表中的顺序不一致。也就是说,用户在查询时可以根据应用的需要改变列的显示顺序,例如:nSELECT Sd,S#,Sn,SanFROM S现在学习的是第29页,共79页例2:查询所有选修了课程的学生的学号 SELECT S#FROM SC;说明:可能有一个学生选择了多门不同的课程,上述查询结果可能重号,可以这样去掉:SELECT DISTINCT S#FROM SC;
21、现在学习的是第30页,共79页3.3 SQL数据查询语言(1)单表查询(续)查询经过计算的值:SELECT子句的不仅可以是表中的属性列,也可以是有关表达式,即可以将查询出来的属性列经过一定的计算后列出结果。n例3:查全体学生的姓名及其出生年份nSELECTSn,2010-SaFROMS;n说明:本例中,中第二项不是通常的列名,而是一个计算表达式,是用当前的年份(假设为2010年)减去学生的年龄,这样,所得的即是学生的出生年份。n不仅可以是算术表达式,还可以是字符串常量、函数等n如果要给新的列起名字:nSELECT Sn,bir=2010-SanFROM S现在学习的是第31页,共79页3.3
22、SQL数据查询语言(1)单表查询(续)(2)查询满足条件的元组查询满足指定条件的元组可以通过WHERE子句实现。WHERE子句常用的查询条件如表3-3所示。表3-3常用的查询条件查询条件谓词-比较上述比较运算符确定范围BETWEENAND,NOTBETWEENAND确定集合IN,NOTIN字符匹配LIKE,NOTLIKE空值ISNULL,ISNOTNULL多重条件NOT,AND,OR现在学习的是第32页,共79页3.3 SQL数据查询语言(1)单表查询(续)(a)比较例4:查计算机系(CS)全体学生姓名与年龄例5:查所有年龄在24岁以下的学生姓名及其年龄nSELECTSn,SaFROMSWHE
23、RESd=CS;SELECT Sn,Sa FROM S WHERE Sa 24;现在学习的是第33页,共79页3.3 SQL数据查询语言(1)单表查询(续)例6:查考试成绩有不及格的学生的学号SELECT DISTINCT S#FROM SC WHERE G60;这里使用了DISTINCT短语,当一个学生有多门课程不及格,他的学号也只列一次。现在学习的是第34页,共79页3.3 SQL数据查询语言(1)单表查询(续)(b)确定范围例7:查询年龄在21至23岁之间的学生的姓名、系别、和年龄例8:查询年龄不在21至23岁之间的学生姓名、系别和年龄。SELECT Sn,Sd,SaFROM S WHE
24、RE Sa BETWEEN 21 AND 23;n与BETWEEN.AND.相对的谓词是NOTBETWEEN.AND.。SELECTSn,Sd,SaFROMSWHERESaNOTBETWEEN21AND23;现在学习的是第35页,共79页3.3 SQL数据查询语言(1)单表查询(续)(c)确定集合例8:查信息系(IS)、数学系(MA)和计算机科学系(CS)的学生的姓名和性别例9:查既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别SELECT Sn,SeFROM SWHERE Sd IN(IS,MA,CS)与IN相对的谓词是NOTIN,用于查找属性值不属于指定集合的元组。SELECT
25、Sn,SeFROM SWHERE Sd NOT IN(IS,MA,CS)现在学习的是第36页,共79页3.3 SQL数据查询语言(1)单表查询(续)(d)字符匹配谓词LIKE可以用来进行字符串的匹配。其一般语法格式如下:NOTLIKEESCAPE例10:查询姓名以马开头,且第3个字为花的学生的姓名与系别。SELECT Sn,SdFROM S WHERE Sn LIKE 马_花%;其含义是查找指定的属性列值与相匹配的元组。可以是一个完整的字符串,也可以含有通配符%和_。%(百分号)代表任意长度(长度可以为0)的字符串,如a%b表示以a开头,以b结尾的任意长度的字符串。_(下横线)代表任意单个字符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语句 优秀 PPT
限制150内