资源描述
Clique para editar o estilo do ttulo mestre,Clique para editar os estilos do texto mestre,Segundo nvel,Terceiro nvel,Quarto nvel,Quinto nvel,*,*,*,Clique para editar o estilo do ttulo mestre,Clique para editar os estilos do texto mestre,Segundo nvel,Terceiro nvel,Quarto nvel,Quinto nvel,*,*,*,3.4 结构化查询语言SQL,1,1.什么是SQL,结构化查询语言SQL(Structured Query Language)是一种关系数据库的标准语言,用于存取数据以及查询、更新和管理关系数据库系统,高度非过程化。只要指出“做什么,无须指明“怎么做,应用广泛。被绝大多数商品化关系数据库系统采用,如Oracle,SQL Server,DB2,Sybase,Informix等,2,华侨大学信息科学与工程学院,数据库中的根本概念,根本术语,数据库技术的术语,关系模型术语,SQL,术语,记录类型,文件,记录,属性、字段、数据项,关系模式,关系、实例(表),元组,属性,基本表,基本表、表格,行,列,学号,姓名,性别,出生日期,信息技术,010329,张晖,男,81.10.15,89,010139,李小凡,男,80.12.30,78,010117,周秋红,男,80.05.18,90,010207,张志平,女,80.11.30,88,学生(学号,姓名,性别,出生日期,信息技术),3,华侨大学信息科学与工程学院,数据库系统的三级模式结构,应用,A,应用,B,应用,C,应用,D,应用,E,外模式,1,外模式,2,外模式,3,模式,内模式,数据库,外模式(也称子模式),:数据库用户使用的,局部,数据的逻辑结构和特征的描述,反映了不同的用户的应用需求。,模式(,Schema,),:,数据库中,全体,数据的逻辑结构和特征的描述,综合了所有用户的需求。,内模式(也称存储模式),:是数据物理结构和存储方式的描述。,4,华侨大学信息科学与工程学院,2.SQL,数据库的体系结构,特征:,SQL用户可以是终端用户,也可以是应用程序。SQL语句可嵌入在宿主语言的程序中使用。,用户可以用SQL语句对视图和根本表进行查询等操作。在用户看来,视图和根本表是一样的,都是关系(即表格)。,一个表可以是一个根本表,也可以是一个视图,根本表是实际存储在数据库中的表。视图是从根本表或其他视图中导出的表,不独立存储在数据库中,是一个虚表。,一个根本表可以跨一个或多个存储文件,一个存储文件也可存放一个或多个根本表。每个存储文件与外部存储器上一个物理文件对应。,用户,1,用户,2,视图,1,视图,2,根本表2,根本表1,根本表3,根本表4,存储文件,1,存储文件,2,外模式,模 式,内模式,5,华侨大学信息科学与工程学院,3.SQL,语言的组成,实现四类功能:,数据定义(DDL,Data Definition Language),用于定义SQL模式、根本表、视图和索引。,数据操纵(DML,Data Manipulation Language),数据查询,数据更新:插入、删除和修改三种操作。,数据控制(DCL,Data Control Language),包括对根本表和视图的授权,完整性规则的描述,事务控制语句等。,嵌入式SQL使用,涉及到SQL语句嵌入在宿主语言程序中的使用规则。,6,华侨大学信息科学与工程学院,SQL,语言的动词,SQL,功能,动 词,数据定义,创建,CREATE,撤消,DROP,修改,ALTER,数据操纵,查询,SELECT,插入,INSERT,修改,UPDATE,删除,DELETE,数据控制,授权,GRANT,收权,REVOKE,7,华侨大学信息科学与工程学院,4.SQL,的数据定义,(DDL),SQL,的数据定义语句,8,华侨大学信息科学与工程学院,(1)根本表的创立,句法:,CREATE TABLE,(,,,,);,:所要定义的根本表的名字,:组成该表的各个属性(列),:涉及相应属性列的完整性约束条件,:涉及一个或多个属性列的完整性约束条件,9,华侨大学信息科学与工程学院,SQL的完整性约束,数据库的完整性是指数据库中数据的,正确性与相容性,。,SQL,语言定义完整性约束条件,主码约束:主键子句,PRIMARY KEY,参照完整性约束:外键子句,FOREIGN KEY,检查子句:,CHECK,唯一性约束:,UNIQUE,非空值约束:,NOT NULL,表级,列级,10,华侨大学信息科学与工程学院,例题3.1,创立四个表,“供给商关系表S,“零件关系表P,“工程工程关系表J,“供给情况关系表SPJ,11,华侨大学信息科学与工程学院,例题3.1“供给商关系表,创立一个“供给商关系表S,它有四个属性,分别是供给商号(SNO)、供给商名(SNAME)、状态(STATUS)和地址(ADDR),属性的类型都是字符型,长度分别是4、20、10和20个字符。规定供给商号和供给商名不能取空值。主键是供给商编号SNO。,(SNO CHAR(4),,SNAME CHAR(20),,STATUS CHAR(10),,ADDR CHAR(20),,PRIMARY KEY(SNO);,CREATE TABLE,S,NOT NULL,NOT NULL,12,华侨大学信息科学与工程学院,例题3.1“供给情况关系表,创立一个“供给情况关系表SPJ,五个属性:,供给商号(SNO),字符型(4),非空,零件号(PNO),字符型(4),非空,工程工程号(JNO),字符型(4),非空,单价(PRICE),定点数(7位数字,小数点后2位数字),供给数量(QTY),短整数,主键是(SNO,PNO,JNO),定义三个外键:,外键SNO和根本表S中SNO属性相对应,外键PNO和根本表P中PNO属性相对应,外键JNO和根本表J中JNO属性相对应,使用一个检查子句,指出供给数量QTY在010000之间。,CREATE TABLE,SPJ,(SNO CHAR(4)NOT NULL,PNO CHAR(4)NOT NULL,JNO CHAR(4)NOT NULL,PRICE NUMERIC(7,2),QTY SMALLINT,PRIMARY KEY(SNO,PNO,JNO),FOREIGN KEY(SNO)REFERENCES S(SNO),FOREIGN KEY(PNO)REFERENCES P(PNO),FOREIGN KEY(JNO)REFERENCES J(JNO),CHECK(QTY BETWEEN 0 AND 10000),;,13,华侨大学信息科学与工程学院,(2)根本表的修改,句法:,ALTER TABLE,ADD 完整性约束 ,DROP CASCADE|RESTRICT,MODIFY ;,:要修改的根本表,ADD子句:增加新列和新的完整性约束条件,DROP子句:删除指定的列,MODIFY子句:用于修改列名和数据类型,注意:,新增加的属性不能定义为“NOT NULL。根本表在增加一个属性后,原有元组在新增加的属性列上的值都被定义为空值(NULL),DROP子句中的CASCADE方式表示:在根本表中删除某属性时,所有引用到该属性的视图和约束也要一起自动地被删除。而RESTRICT方式表示在没有视图或约束引用该属性时,才能在根本表中删除该属性,否则拒绝删除操作。,14,华侨大学信息科学与工程学院,例题,例3.2 在根本表S中增加一个电话号码(TELE)属性,可用以下语句:,ALTER TABLE S ADD TELE CHAR(12);,例3.3 在根本表S中删除状态(STATUS)属性,并且将引用该属性的所有视图和约束也一起删除,可用以下语句:,ALTER TABLE S DROP STATUS CASCADE;,15,华侨大学信息科学与工程学院,(3)视图的创立,视图的特点:,虚表,是从一个或几个根本表(或视图)导出的表。,数据库中只存放视图的定义而不存放视图的数据,这些数据仍存放在导出视图的根本表中。,基表中的数据发生变化,从视图中查询出的数据也随之改变。,16,华侨大学信息科学与工程学院,(3)视图的创立,句法:,CREATE VIEW,(,),AS ,注意:,执行CREATE VIEW语句时只是把视图的定义存入数据字典,并不执行其中的SELECT语句。在对视图查询时,按视图的定义从根本表中将数据查出。,17,华侨大学信息科学与工程学院,例题,3.5,对工程工程零件供给数据库中根本表S,P,J,SPJ,用户经常要用到有关工程使用零件情况信息:工程号(JNO)、工程工程名称(JNAME)、供给商号(SNO)、供给商名(SNAME)、零件号(PNO)、零件名(PNAME)、供给数量(QTY)等列的数据,那么可用以下语句建立视图:,CREATE VIEW JSP_NAME(JNO,JNAME,SNO,SNAME,PNO,PNAME,QTY),AS SELECT(J.JNO,JNAME,S.SNO,SNAME,P.PNO,PNAME,QTY),FROM S,P,J,SPJ,WHERE S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO AND J.JNO=SPJ.JNO;,18,华侨大学信息科学与工程学院,5.SQL的数据操纵,数据查询,SELECT,数据更新,插入,INSERT,修改,UPDATE,删除,DELETE,19,华侨大学信息科学与工程学院,6.SQL的数据查询,(,1,)语句格式,SELECT,ALL|DISTINCT ,FROM,WHERE,GROUP BY,HAVING,ORDER BY,ASC|DESC,;,20,华侨大学信息科学与工程学院,SELECT子句:指定要显示的属性列,DISTINCT表示要在结果中去掉取值重复的行。,要选择表中所有列,可用星号“代替,FROM子句:指定查询对象(根本表或视图),WHERE子句:指定查询条件,GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用集函数。,HAVING短语:筛选出只有满足指定条件的组,ORDER BY子句:对查询结果表按指定列值的升序(ASC)或降序(DESC)排序,21,华侨大学信息科学与工程学院,(,2,)单表查询,例题3.9,从供给情况关系表SPJ中,检索供给工程J1零件的供给商编号SNO。,SELECT DISTINCT SNO,FROM SPJ,WHERE JNO=J1;,查询全体工程工程的详细信息,SELECT*,FROM J;,从工程工程关系表J中,查询没有正余额的工程编号、名称及城市,结果按工程编号升序排列。,SELECT JNO,JNAME,CITY,FROM J,WHERE BALANCE IS NULL OR BALANCE3,ORDER BY 2,3 DESC;,首先,根据WHERE子句的条件,对关系J和SPJ执行联接操作找出满足条件为“泉州的工程的元组;,再按工程号JNO的值对泉州的工程进行分组,将JNO列的值相同的元组分为一组;对每一个分组进行合计操作;,并按HAVING子句的条件对产生的元组进行选择,消除只使用三种以下零件的元组;,最后,再对结果进行排序。,28,华侨大学信息科学与工程学院,练习,查询各工程工程购置零件的总金额。结果显示工程工程名和购置零件总金额,并按金额降序排列。,SELECT JNAME,SUM(PRICE*QTY)AS SUM_PRICE,FROM J,SPJ,WHERE J.JNO=SPJ.JNO,GROUP BY SPJ.JNO,ORDER BY 2 DESC;,29,华侨大学信息科学与工程学院,7.SQL的数据控制(DC
展开阅读全文