数据库第3章.ppt
《数据库第3章.ppt》由会员分享,可在线阅读,更多相关《数据库第3章.ppt(284页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、返回返回第第3章章SQL语言语言1返回返回结构化查询语言结构化查询语言SQL(StructuredQueryLanguage)是一是一种介于种介于关系代数关系代数与与关系演算关系演算之间的语言,其功能包括之间的语言,其功能包括查询、查询、操纵、定义操纵、定义和和控制控制四个方面,是一个通用的、功能极强的四个方面,是一个通用的、功能极强的关系数据库关系数据库语言。目前已成为关系数据库的标准语言。语言。目前已成为关系数据库的标准语言。2返回返回SQL概述概述3返回返回3.1SQL概貌及其特点概貌及其特点主要特点:主要特点:1.1.语言简洁、易学易用:语言简洁、易学易用:核心功能只有核心功能只有8
2、8个动词,个动词,语法简语法简单,接近英语。单,接近英语。SQL功能操作符数据查询SELECT数据定义CREATE,DROP数据操纵INSERT,UPDATE,DELETE数据控制GRANT,REVOKE4返回返回2.2.高度非过程化的语言:高度非过程化的语言:用户只需提出用户只需提出“干什么干什么”,至至于于“怎么干怎么干”由由DBMSDBMS解决;用户只需要在查询语句中解决;用户只需要在查询语句中提出需要什么,提出需要什么,DBMSDBMS即可按路径存取,并把结果返回即可按路径存取,并把结果返回给用户。给用户。3.3.面向集合的语言:面向集合的语言:SQLSQL语言采用集合操作方式,不仅语
3、言采用集合操作方式,不仅查找结果可以是元组的集合,而且一次插入、删除、查找结果可以是元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。更新操作的对象也可以是元组的集合。5返回返回4.4.以同一种语法结构提供两种使用方式以同一种语法结构提供两种使用方式SQLSQL语言既是自含式语言,又是嵌入式语言。语言既是自含式语言,又是嵌入式语言。作为自含式语言作为自含式语言,它能够独立地用于联机交互的使用方,它能够独立地用于联机交互的使用方式,用户可以在终端键盘上直接键入式,用户可以在终端键盘上直接键入SQLSQL命令对数据库进命令对数据库进行操作。行操作。作为嵌入式语言,作为嵌入式语言,S
4、QLSQL语句能够嵌入到高级语言程序中,语句能够嵌入到高级语言程序中,供程序员设计程序时使用。供程序员设计程序时使用。而在两种不同的使用方式下,而在两种不同的使用方式下,SQLSQL语言的语法结构基本语言的语法结构基本上是一致的。这种以统一的语法结构提供两种不同的使用上是一致的。这种以统一的语法结构提供两种不同的使用方式的作法,为用户提供了极大的灵活性与方便性。方式的作法,为用户提供了极大的灵活性与方便性。6返回返回5.5.具有查询、操作、定义和控制四种语言一体化的特点。具有查询、操作、定义和控制四种语言一体化的特点。而而SQLSQL语言则集语言则集数据定义语言数据定义语言DDLDDL、数据操
5、纵语言数据操纵语言DMLDML、数数据控制语言据控制语言DCLDCL的功能于一体,包括定义关系模式、录入的功能于一体,包括定义关系模式、录入数据以建立数据库、查询、更新、维护、数据以建立数据库、查询、更新、维护、数据库重构、数数据库重构、数据库安全性控制据库安全性控制等一系列操作要求,这就为数据库应用系等一系列操作要求,这就为数据库应用系统开发提供了良好的环境。统开发提供了良好的环境。7返回返回3.1.2SQL语言的基本概念语言的基本概念首先介绍两个基本概念:基本表和视图。首先介绍两个基本概念:基本表和视图。基基本本表表(BASETABLE):是是独独立立存存在在的的表表,不不是是由由其其它它
6、的的表表导导出出的的表表。一一个个关关系系对对应应一一个个基基本本表表,一一个个或多个基本表对应一个存储文件。或多个基本表对应一个存储文件。视视图图(VIEW):是是一一个个虚虚拟拟的的表表,是是从从一一个个或或几几个个基基本本表表导导出出的的表表。它它本本身身不不独独立立存存在在于于数数据据库库中中,数数据据库库中中只只存存放放视视图图的的定定义义而而不不存存放放视视图图对对应应的的数数据据,这这些些数数据据仍仍存存放放在在导导出出视视图图的的基基本本表表中中。当当基基本本表表中中的的数数据据发发生生变变化化时时,从从视视图图中中查查询询出出来来的的数数据据也也随随之之改改变。变。8返回返回
7、例如:例如:学生数据库中有学生基本情况表学生数据库中有学生基本情况表STUDENT(SNO,SNAME,SSEX,SAGE,SDEPT),此表此表为基本表,对应一个存储文件。可以在其基础上定义为基本表,对应一个存储文件。可以在其基础上定义一个男生基本情况视图一个男生基本情况视图STUDENT_MALE(SNO,SNAME,SAGE,SDEPT),它是从STUDENT中选择SSEX=男的各个行,然后在SNO,SNAME,SAGE,SDEPT上投影得到的。在数据库中只存有STUDENT_MALE的定义,而STUDENT_MALE的记录不重复存储。在用户看来,视图是通过不同路径去看一个实际表,就象一
8、个窗口一样,我们通过窗户去看外面的高楼,可以看到高楼的不同部分,而透过视图可以看到数据库中自己感兴趣的内容。9返回返回SQL视图1视图2基本表1基本表2基本表3基本表4存储文件1存储文件2外模式模式内模式图3.1SQL语言支持的关系数据库的三级逻辑结构SQL语言支持数据库的三级模式结构,如图语言支持数据库的三级模式结构,如图3.1所示。所示。其中其中外模式外模式对应于视图和部分基本表,对应于视图和部分基本表,模式模式对应于基对应于基本表,本表,内模式内模式对应于存储文件。对应于存储文件。10返回返回3.2SQL数据定义数据定义SQL语语言言使使用用数数据据定定义义语语言言(DATA DEFIN
9、ITIONLANGUAGE,简简称称DDL)实实现现其其数数据据定定义义功功能能,可可对数据库对数据库用户用户、基本表基本表、视图视图、索引索引进行定义和撤消。进行定义和撤消。3.2.13.2.1定义、删除、修改基本表定义、删除、修改基本表11返回返回一一.定义基本表定义基本表(1)(1)定义基本表的语句格式:定义基本表的语句格式:CREATE TABLECREATE TABLE (列级完整性约束条件列级完整性约束条件 ,列级完整性约束条件列级完整性约束条件.).),;其中是所要定义的基本表的名字;建表的同时通常还可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,当
10、用户操作表中数据时由DBMS自动检查该操作是否违背这些完整性约束条件。如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。12返回返回2、定义表的各个属性时需要指明其数据类型及长度。不同的数据库系统支持的数据类型不完全相同,例如IBM DB2 SQL主要支持以下数据类型:SMALLINT 半字长二进制整数。INTEGER或INT 全字长二进制整数。DECIMAL(p,q)或DEC(p,q)压缩十进制数,共p位,其中小数点后有q位。0qp15,q=0时可以省略。FLOAT 双字长浮点数。CHARTER(n)或CHAR(n)长度为n的定长字符串。VA
11、RCHAR(n)最大长度为n的变长字符串。GRAPHIC(n)长度为n的定长图形字符串。VARGRAPHIC(n)最大长度为n的变长图形字符串。DATE 日期型,格式为YYYY-MM-DD。TIME 时间型,格式为HH.MM.SS。TIMESTAMP 日期加时间。13返回返回例例建建立立一一“学学生生”表表Student由由学学号号(Sno)、姓姓名名(Sname)、性别(性别(Ssex)、)、年龄(年龄(Sage)、)、所在系(所在系(Sdept)五个属性组成,五个属性组成,其中学号属性不能为空,并且其值是唯一的。其中学号属性不能为空,并且其值是唯一的。CREATETABLEStudent(
12、SnoCHAR(8)NOTNULLUNIQUE,SnameVARCHAR(20),SsexCHAR(2),sageINT,SdeptVARCHAR(20);执行该语句后,便产生了学生基本表的表框架,此表为一个空表。执行该语句后,便产生了学生基本表的表框架,此表为一个空表。14返回返回例题例题(续)(续)15返回返回3.定义完整性约束定义完整性约束上上例例为为创创建建基基本本表表的的最最简简单单形形式式,还还可可以以对对表表进进一一步步定定义义,如如主主键键、空空值值的的设设定定,使使数数据据库库用用户户能能够够根根据据应应用用的的需需要要对对基基本本表表的的定定义义做做出出更更为为精精确和详尽
13、的规定。确和详尽的规定。在在SQLSERVER中中,对对于于基基本本表表的的约约束束分分为为列列约约束束和和表约束表约束。列约束是对某一个特定列的约束,包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;表约束与列定义相互独立,不包括在列定义中,通常用于对多个列一起进行约束,与列定义用,分隔,定义表约束时必须指出要约束的那些列的名称。16返回返回约束类型:约束类型:在定义完整性约束时必须指定完整性约束的类型。在定义完整性约束时必须指定完整性约束的类型。在在SQLSERVER中中可可以以定定义义五五种种类类型型的的完完整整性性约约束束,下下面面分分别加以介绍:别加以介绍:(1)
14、NULL/NOTNULL是否允许该字段的值为NULL。NULL值不是0也不是空白,更不是填入字符串“NULL”,而是表示“不知道”、“不确定”或“没有数据”的意思。当某一字段的值一定要输入才有意义的时候,则可以设置为NOTNULL。如主键列就不允许出现空值,否则就失去了唯一标识一条记录的作用只能用于定义列约束,17返回返回例例建立一个建立一个S表,对表,对SNO字段进行字段进行NOTNULL约束。约束。CREATETABLES(SNOCHAR(10)NOTNULL,SNVARCHAR(20),AGEINT,SEXCHAR(2),DEPTVARCHAR(20);当当SNO为空时,系统给出错误信息
15、,无为空时,系统给出错误信息,无NOTNULL约约束时,系统缺省为束时,系统缺省为NULL。18返回返回(2)UNIQUE约束约束UNIQUE约束用于指明基本表在某一列或多个列的组合上约束用于指明基本表在某一列或多个列的组合上的取值必须唯一。的取值必须唯一。定义了定义了UNIQUE约束的那些列称为约束的那些列称为唯一键唯一键,系统自动为唯,系统自动为唯一键建立唯一索引,从而保证了唯一键的唯一性。一键建立唯一索引,从而保证了唯一键的唯一性。唯一键允许为空,但系统为保证其唯一性,最多只可以出唯一键允许为空,但系统为保证其唯一性,最多只可以出现一个现一个NULL值。值。UNIQUE既可用于列约束,也
16、可用于表约束。既可用于列约束,也可用于表约束。例例建立一个建立一个S表,定义学号和姓名为唯一键,其中学号非空。表,定义学号和姓名为唯一键,其中学号非空。CREATETABLES(SNOCHAR(6)NOTNULLUNIQUE,SNCHAR(8)UNIQUE,SEXCHAR(2),AGEINT(2);19返回返回(3)PRIMARYKEY约束约束PRIMARYKEY约束用于定义基本表的主键,起唯一约束用于定义基本表的主键,起唯一标识作用,其值不能为标识作用,其值不能为NULL,也不能重复,以此来保也不能重复,以此来保证实体的完整性。证实体的完整性。20返回返回PRIMARYKEY与与UNIQUE
17、约束类似,但它们之间存约束类似,但它们之间存在着很大的在着很大的区别区别:在一个基本表中只能定义一个PRIMARYKEY约束,但可定义多个UNIQUE约束;对于指定为PRIMARYKEY的一个列或多个列的组合,其中任何一个列都不能出现空值,而对于UNIQUE所约束的唯一键,则允许为空。注意:不能为同一个列或一组列既定义注意:不能为同一个列或一组列既定义UNIQUE约束,约束,又定义又定义PRIMARYKEY约束。约束。PRIMARYKEY既可用于列约束,也可用于表约束。既可用于列约束,也可用于表约束。PRIMARYKEY用于定义用于定义列约束列约束时,其语法格式如下:时,其语法格式如下:在列在
18、列定义之后定义之后+PRIMARYKEY21返回返回例例建立一个建立一个S表,定义表,定义SNO为为S的主键的主键CREATETABLES(SNOCHAR(5)PRIMARYKEY,SNCHAR(8),AGENUMERIC(2);PRIMARYKEY用于定义用于定义表约束表约束时,即将某些列的组时,即将某些列的组合定义为主键,其语法格式如下:合定义为主键,其语法格式如下:PRIMARYKEY()22返回返回例例建立一个建立一个SC表,定义表,定义SNO+CNO为为SC的主键的主键CREATETABLESC(SNOCHAR(5),CNOCHAR(5),gradeNUMERIC(3),PRIMAR
19、YKEY(SNO,CNO);23返回返回(4)FOREIGNKEY约束约束FOREIGNKEY约束指定某一个列或一组列作为外部约束指定某一个列或一组列作为外部键,其中,包含外部键的表称为键,其中,包含外部键的表称为从表从表,包含外部键所,包含外部键所引用的主键或唯一键的表称引用的主键或唯一键的表称主表主表。系统保证从表在外部键上的取值要么是主表中某一个系统保证从表在外部键上的取值要么是主表中某一个主键值或唯一键值,要么取空值。以此保证两个表之主键值或唯一键值,要么取空值。以此保证两个表之间的连接,确保了实体的参照完整性。间的连接,确保了实体的参照完整性。FOREIGNKEY既可用于列约束,也可
20、用于表约束,既可用于列约束,也可用于表约束,其语法格式为:其语法格式为:FOREIGN KEY REFERENCES()24返回返回例例建立一个建立一个SC表,定义表,定义SNO,CNO为为SC的外部键。的外部键。CREATETABLESC(SNOCHAR(5)FOREIGN KEY REFERENCES S(SNO),CNOCHAR(5)FOREIGN KEY REFERENCES C(CNO),gradeNUMERIC(3),PRIMARY KEY(SNO,CNO);25返回返回(5)CHECK约束约束CHECK约约束束用用来来检检查查字字段段值值所所允允许许的的范范围围,如如,一一个个字
21、字段段只只能能输输入入整整数数,而而且且限限定定在在0-100的的整整数数,以以此此来来保证域的完整性。保证域的完整性。CHECK既可用于列约束,也可用于表约束,既可用于列约束,也可用于表约束,其语法格式为:其语法格式为:CHECK()例例建立一个建立一个SC表,定义表,定义grade的取值范围为的取值范围为0到到100之间。之间。CREATETABLESC(SNOCHAR(5),CNOCHAR(5),gradeNUMERIC(5,1)CHECK(grade=0 AND grade=100);26返回返回例例建立包含完整性定义的学生表建立包含完整性定义的学生表CREATETABLES(SNOC
22、HAR(6)PRIMARY KEY,SNCHAR(8)NOT NULL,AGENUMERIC(2)NOT NULL,CHECK(AGE BETWEEN 15 AND 50),SEXCHAR(2),DEPTCHAR(10)NOT NULL;27返回返回上次课内容回顾上次课内容回顾28返回返回创建表:创建表:CREATE TABLECREATE TABLE (列级完整性约束条件列级完整性约束条件 ,列级完整性约束条件列级完整性约束条件.).),;29返回返回例例建建立立一一“学学生生”表表Student由由学学号号(Sno)、姓姓名名(Sname)、性性别别(Ssex)、年年龄龄(Sage)、所所
23、在在系系(Sdept)五个属性组成,)五个属性组成,CREATETABLEStudent(SnoCHAR(8),SnameVARCHAR(20),SsexCHAR(2),sageINT,SdeptVARCHAR(20);30返回返回约束类型:约束类型:NOTNULLUNIQUEPRIMARYKEYFOREIGNKEYREFERENCECHECK31返回返回例例建立包含完整性定义的学生表建立包含完整性定义的学生表,其中其中sno为主码,为主码,sn不能取空值,不能取空值,age只能在只能在15至至35岁之间。岁之间。Dept是外码是外码(相对与(相对与D表中的表中的dno)USESTUDENTC
24、REATETABLES(SNOCHAR(6)PRIMARY KEY,SNCHAR(8)NOT NULL,AGENUMERIC(2)CHECK(AGE BETWEEN 15 AND 50),SEXCHAR(2),DEPTCHAR(10)foreignkeyreferenceD(dno);32返回返回二二修改基本表修改基本表由于应用环境和应用需求的变化,经常需要修改基本表的结构,由于应用环境和应用需求的变化,经常需要修改基本表的结构,比如,增加新列、修改原有的列定义和完整性约束等。比如,增加新列、修改原有的列定义和完整性约束等。SQL语言使用语言使用ALTERTABLE命令来完成这一功能,有如下三
25、种命令来完成这一功能,有如下三种修改方式:修改方式:1).ADD方式方式用于增加新列和完整性约束,定义方式同用于增加新列和完整性约束,定义方式同CREATETABLE语句语句中的定义方式相同,其语法格式为:中的定义方式相同,其语法格式为:ALTERTABLEADD|例例3.12在在S表中增加一个班号列表中增加一个班号列CLASS_NO和住址列和住址列ADDRESS。ALTERTABLESADDCLASS_NOCHAR(6),ADDRESSCHAR(40)33返回返回注意:使用此方式增加的新列注意:使用此方式增加的新列自动填充自动填充NULL值值,所以,所以不能为增加的新列指定不能为增加的新列指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库
限制150内