数据库系统原理与应用教程第5章关系数据库标准语言—SQL第5章关系数据库标准语言—SQL5.1SQL概述及特点5.2数据定义语句5.3数据查询语句5.4数据更新语句5.5嵌入式SQL5.6数据控制机制和语句数据库系统原理与应用教程第5章关系数据库标准语言—SQL教学目的及重点一、教学目的1、了解SQL的特点以及嵌入式SQL的使用。2、掌握SQL的数据定义;SQL的数据查询;SQL的数据更新;数据控制。二、教学重点和难点1、定义关系的完整性约束条件2、SQL的数据查询3、SQL的数据更新4、数据控制数据库系统原理与应用教程第5章关系数据库标准语言—SQL5.1SQL概述及特点1.SQL的语句分类(1)、数据定义功能SQL的数据定义功能通过DDL实现,它用来定义关系数据库的模式、外模式和内模式,包括基本表、视图、索引、聚簇等,它的基本语句有:CREATESCHEMA、CREATETABLE、CREATEVIEW、CREATEINDEX等。(2)、数据操纵功能SQL的数据操纵功能通过DML实现。SOL的数据操纵语言中包括数据查询和数据更新两种数据操作语句。其中,数据查询指对数据库中的数据查询、统计、分组、排序、检索等操作,它的基本语句有SELECT。数据更新指数据的插入、删除、修改等数据维护操作。它的基本语句有:INSERT、UPDATE、DELETE。(3)、数据控制功能数据库的控制指数据的安全性控制、完整性控制、并发控制。SQL的数据控制通过DCL实现。它的基本语句有:GRANT、REVOKE、COMMIT、ROLLBACK、LOCK、UNLOCK等。数据库系统原理与应用教程第5章关系数据库标准语言—SQL2.SQL的特点(1)SQL具有自含式和嵌入式两种形式。(2)SQL具有语言简洁、易学易用的特点(3)SQL支持三级数据模式结构1)全体基本表构成了数据库的全局逻辑模式。基本表是独立的表,SQL中的一个关系对应一个基本表,基本表是按数据全局逻辑模式建立的。2)视图和部分基本表构成了数据库的外模式。3)数据库的存储文件和索引文件构成了关系数据库的内模式。数据库系统原理与应用教程第5章关系数据库标准语言—SQL5.2SQL的数据定义语句SQL的数据定义包括定义基本表,定义索引,定义视图和定义数据库。在SQL语句格式中,有下列约定符号和语法规定需要说明:1、语句格式约定符号语句格式中,尖括号“”中为实际语义;中括号“[]”中的内容为任选项;大括号“{}”或用分隔符“|”中的内容为必选项,即必选其中之一项;[,…n]表示前面的项可重复多次。2、一般语法规定SQL中的数据项(包括列项、表和视图)分隔符为“,”,其字符串常数的定界符用单引号“'”表示。3.SQL特殊语法规定SQL的关键词一般使用大写字母表示;SQL语句的结束符为“;”。SQL一般应采用格式化书写方式。数据库系统原理与应用教程第5章关系数据库标准语言—SQL5.2.1什么是表表是存储和组织各种信息的数据库的基本对象。其它的数据库对象都是以表为基础来创建的。表中是按行和列的格式组织排列的。每行代表唯一的一条记录,而每列代表记录中的一个域。在MicrosoftSQLServer2000中,每个表至多可定义1024列。表和列的命名要遵守标识符的规定,在特定表中必须是唯一的,但同一数据库中的不同表可使用相同的列名。必须为每列指定数据类型。数据库系统原理与应用教程第5章关系数据库标准语言—SQL一、基本表的定义和维护功能SQL的基本表定义和维护功能使用基本表的定义、修改和删除三种语句实现。1、定义基本表SQL语言使用CREATETABLE语句定义基本表,定义基本表语句的一般格式为:数据库系统原理与应用教程第5章关系数据库标准语言—SQLSQL支持的数据类型在创建和使用表时,用户可根据需要用不同类型的数据来描述不同的字段类型。字符型,文本型,数值型,逻辑型日期型。数据库系统原理与应用教程第5章关系数据库标准语言—SQL数据类型符号标识占用空间字符型数据CHAR[(N)]每个字符占用一个字节,实际长度为N+4个字节VERCHAR[(N)]每个字符占用一个字节,实际长度为N+4个字节文本型数据TEXT每个字符占用一个字节UnicodeNCHAR[(N)]占用2N个字节NVERCHAR[(N)]占用2N个字节NTEXT占用实际长度整型数BIGINT占用八个字节INT占用四个字节SMALLINT占用二个字节TIYINT占用一个字节二进制BINARY[(n)]每个字符占用一个字节VARBINARY[(n)]每个字符占用一个字节,实际长度为N+4个字节精度数值型DECIMAL最少五个字节,最多十七个字节NUMERIC最少五个字节,最多十七个字节浮点型FLOAT[(n)]可变长REAL占用四个字节货币型MONEY占用八个字节SMALLMONEY占用四个字节位BIT占用一个字节日期和时间DATETIME占用八个字节SMALLDATETIME占用四个字节时间戳TIMESTAMP占用八个字节图像型IMAGE可变长其他CURSOR(视类型而定)SQL_VARIANTTABLEUNIQUEIDENTIFIER表5-1表结构数据库系统原理与应用教程第5章关系数据库标准语言—SQL字符串数据—char和varchar固定长度(char)和可变长度(varchar)字符数据类型用来存储ASCII字符集中的字符。char[(n)]的长度为n个字节的固定长度且ASCII字符(即非Unicode的字符)数据。n必须是一个介于1和8,000之间的数值。存储大小为n个字节。默认值为1。varchar[(n)]的长度为n个字节的可变长度且ASCII字符(非Unicode的字符)数据。n必须是一个介于1和8,000之间的数值。存储大小为输入数据的字节的实际长度,而不是n个字节。所输入的数据字符长度可以为零。数据库系统原理与应用教程第5章关系数据库标准语言—SQL数据类型文本型数据—text文本型数据用于存储大型ASCII(非Unicode)字符。字符型数据限制了字符串的长度不能超过255个字符。而使用文本型数据,用户可以存放超过二十亿个字符的字符串。当用户需要存储大串的字符时,应该使用文本型数据。数据库系统原理与应用教程第5章关系数据库标准语言—SQL数值型数据用户可以存储整数、小数和货币数据。INT:数范围是从-231(-2147483647)到231-1(2147483647)的整数。SMAILLINT-32768---32767TINYINT0--255NUMERIC(p,s)-1038---1038Decimal(p,s)-1038---1038MONEY-263----263-1SMALLMONEY-214748.3648---214748.3647数据库系统原理与应用教程第5章关系数据库标准语言—SQL使用数据类型数据的例子:CREATETABLEvisitlog(visitorVARCHAR(40),numvisitsINT)Createtablenumeric_data(Bignumbernumeric(28,0),Fractionnumeric(5,4))数据库系统原理与应用教程第5章关系数据库标准语言—SQL5.1.4BIT型数据BIT型数据可以用来存放逻辑值。用户可以利用单选按钮(OPTIONBUTTON)在网站上搜集信息后,把此信息存储在BIT型字段中。BIT型字段只能取两个值:0或1。例:sexBIT数据库系统原理与应用教程第5章关系数据库标准语言—SQL日期和时间数据为了能够存储日期和时间,MicrosoftSQLServer2000设计了DATETIME型数据DATETIME型:1753年1月1日第一毫秒到9999年12月31日最后一毫秒。SMALLDATETIME型:存储从1900年1月1日到2079年6月6日的日期,它只能精确到秒。数据库系统原理与应用教程第5章关系数据库标准语言—SQL(2)列级完整性的约束条件列级完整性约束是针对属性值设置的限制条件。SQL的列级完整性条件有以下几种。1)NOTNULL或NULL约束。NOTNULL约束为不允许字段值为空,而NULL约束为允许字段值为空。字段值为空的含义是该属性值“不详”、“含糊”或“无意义”。对于关系的主属性,必须限定是“NOTNULL,以满足实体完整性;而对于一些不重要的属性,例如学生的爱好、特长等,则可以不输入字段值,即允许为NULL值。2)UNIQUE约束。UNIQUE约束是惟一性约束,即不允许该关系的该列中,出现有重复的属性值。数据库系统原理与应用教程第5章关系数据库标准语言—SQL(2)列级完整性的约束条件3)DEFAULT约束。DEFAULT为默认值约束。将列中的使用频率最高的属性值定义为DEFAULT约束中的默认值,可以减少数据输入的工作量。DEFAULT约束的格式为:DEFAULT默认值4)CHECK约束。CHECK为检查约束。CHECK约束通过约束条件表达式设置列值应满足的条件。CHECK约束的格式为:①CHECK(约束条件表达式)②CONSTRAINT约束名CHECK(约束条件表达式)数据库系统原理与应用教程第5章关系数据库标准语言—SQL(3)表级完整性约束条件表级完整性约束条件是指涉及到关系中多个列的限制条件。在上述的CHECK约束中,如果约束条件表达式中涉及到多列数据,它便为表级约束。表级约束还有以下几种:1)UNIQUE约束。UNIQLIE约束是惟一性约束。当要求列组的值不能有重复值时,就需要使用UNIQUE约束定义。数据库系统原理与应用教程第5章关系数据库标准语言—SQL(3)表级完整性约束条件2)PRIMARYKEY约束。PRIMARYKEY约束是实体完整性约束。PRIMARYKEY约束用于定义主码,它能保证主码的惟一性和非空性。PRIMARYKEY约束的语法为:①PRIMARYKEY②PRIMARYKEY[CLUSTERED](列组)③CONSTRAINT约束名PRIMARYKEY[CLUSTERED](列组)其中,CLUSTERED短语为建立{列组)聚簇。格式①用于将PRIMARYKEY直接放于主码后。数据库系统原理与应用教程第5章关系数据库标准语言—SQL(3)表级完整性约束条件3)FOREIGNKEY约束。FOREIGNKEY约束即外码和参照表约束,它用于定义参照完整性。FOREIGNKEY约束语法为:①FOREIGNKEY((外码))REFERENCES被参照表名(与外码对应的主码名)②CONSTRAINT约束名FOREIGNKEY((外码))REFERENCES被参照表名(与外码对应的主码名)数据库系统原理与应用教程第5章关系数据库标准语言—SQL例1用SQL建立学生-课程库中的基本表,其表结构为:学生(学号,姓名,年龄,性别,所在系);课程(课程号,课程名,先行课);选课(学号,课程号,成绩)。数据库系统原理与应用教程第5章关系数据库标准语言—SQLcreatetable学生(学号char(5)notnullunique,姓名char(8)notnull,年龄smallintdefault20,性别char(2),所在系char(20),constraintc1check(性别in('男','女')))createtable课程(课程号char(5)primarykey,课程名char(20),先行课char(5))createtable选课(学号char(5),课程号char(5),成绩smallint,constraintc2check(成绩between0and100),constraintc3primarykey(学号,课程号),constraintc4foreignkey(学号)