AnIntroductiontoDatabaseSystem数据库系统概论AnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQLAnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL3.1SQL概述3.2数据定义3.3查询3.4数据更新3.5视图3.6数据控制3.7嵌入式SQL3.8小结AnIntroductiontoDatabaseSystem3.1SQL概述SQL的特点1.综合统一2.高度非过程化3.面向集合的操作方式4.以同一种语法结构提供两种使用方法5.语言简洁,易学易用AnIntroductiontoDatabaseSystem5.语言简捷,易学易用表3.1SQL语言的动词SQL功能动词数据定义CREATE,DROP,ALTER数据查询SELECT数据操纵INSERT,UPDATEDELETE数据控制GRANT,REVOKEAnIntroductiontoDatabaseSystem第三章关系数据库标准语言SQL3.1SQL概述3.2数据定义3.3查询3.4数据更新3.5视图3.6数据控制3.7嵌入式SQL3.8小结AnIntroductiontoDatabaseSystem一.创建数据库例1:创建数据库xscj,初始大小为5MB,最大长度为50MB,数据库自动增长,增长方式是按10%比例增长;日志文件初始为2MB,最大可增长到5MB(为限制),按1MB增长(默认是按10%比例增长);所有者是Adimistrator.3.3数据定义3.3.1数据库的创建与删除AnIntroductiontoDatabaseSystemAnIntroductiontoDatabaseSystemAnIntroductiontoDatabaseSystemAnIntroductiontoDatabaseSystem命令创建数据库(createdatabase)例2:创建数据库xscj1,初始大小为5MB,最大长度为50MB,数据库自动增长,增长方式是按10%比例增长;日志文件初始为2MB,最大可增长到5MB(为不限制),按1MB增长(默认是按10%比例增长);所有者是Adimistrator.3.3数据定义3.3.1数据库的创建与删除AnIntroductiontoDatabaseSystemcreatedatabasexscj1on(name='xscj1_data',filename='e:\学号姓名\xscj1_data.mdf',size=5MB,maxsize=50MB,filegrowth=10%)logon(name='xscj1_log',filename='e:\学号姓名\xscj1_log.ldf',size=2MB,maxsize=5MB,filegrowth=1MB)goAnIntroductiontoDatabaseSystem例2创建一个名为TEST2的数据库,它有2个数据文件,其中主数据文件为100MB,最大大小为200MB,按20MB增长;1个辅助数据文件为20MB,最大大小不限,按10%增长;有2个日志文件,大小均为50MB,最大大小均为100MB,按10MB增长。AnIntroductiontoDatabaseSystemcreatedatabaseTEST2onprimary(name='test2_data1',filename='e:\学号姓名\test2_data1.mdf',size=20MB,maxsize=unlimited,filegrowth=10%),(name='test2_data2',filename='e:\学号姓名\test2_data2.ndf',size=20Mb,maxsize=unlimited,filegrowth=10%)logon(name='test2_log1',filename='e:\学号姓名\test2_log1.ldf',size=50MB,maxsize=100MB,filegrowth=10MB),(name='test2_log2',filename='e:\学号姓名\test2_log2.ldf',size=50MB,maxsize=100MB,filegrowth=10MB)goAnIntroductiontoDatabaseSystem例3:创建一个有3个文件组的数据库test3。主文件组包括文件test3_data1,test3_data2,文件初始大小均为20MB,最大为60MB,按5MB增长;第2个文件组名为test3goup1,包括文件test3_data3,test3_data4,文件初始大小为10MB,最大为30MB,按10%;第3个文件组名为test3group3,包括文件test3_data5,文件初始大小为10MB,最大为50MB,按15%增长。该数据库只有一个日志文件,初始大小为20MB,最大为50MB,按5MB增长。AnIntroductiontoDatabaseSystemcreatedatabasetest3onprimary(name='test3_data1',filename='e:\学号姓名\test3_data1.mdf',size=20mb,maxsize=60mb,filegrowth=5mb),(name='test3_data2',filename='e:\学号姓名\test3_data2.ndf',size=20mb,maxsize=60mb,filegrowth=5mb),AnIntroductiontoDatabaseSystemfilegrouptest3group1(name='test3_data3',filename='e:\学号姓名\test3_data3.ndf',size=10mb,maxsize=30mb,filegrowth=10),(name='test3_data4',filename='e:\学号姓名\test3_data4.ndf',size=10mb,maxsize=30mb,filegrowth=10%),AnIntroductiontoDatabaseSystemfilegrouptest3group2(name='test3_data5',filename='e:\学号姓名\test3_data5.ndf',size=10mb,maxsize=50mb,filegrowth=15%)logon(name='test3_log',filename='e:\学号姓名\test3_log.ldf',size=20mb,maxsize=50mb,filegrowth=5mb)AnIntroductiontoDatabaseSystem二.删除数据库(Dropdatabase)例4:删除数据库XSCJ1DropdatabaseXSCJ1go3.3数据定义AnIntroductiontoDatabaseSystem3.3数据定义表3.2SQL的数据定义语句操作方式操作对象创建删除修改表CREATETABLEDROPTABLEALTERTABLE视图CREATEVIEWDROPVIEW索引CREATEINDEXDROPINDEXAnIntroductiontoDatabaseSystem3.3.2基本表的定义、修改与删除一.定义基本表CREATETABLE表名(列名数据类型[列级完整性约束条件][,列名数据类型[列级完整性约束条件]]…[,表级完整性约束条件]);表名:所要定义的基本表的名字列名:组成该表的各个属性(列)列级完整性约束条件:涉及相应属性列的完整性约束条件表级完整性约束条件:涉及一个或多个属性列的完整性约束条件AnIntroductiontoDatabaseSystem例题[例5]建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。其中学号不能为空,值是唯一的,并且姓名取值也唯一。createtablestudent(snochar(10)primarykey,snamevarchar(8)unique,ssexchar(2),sagetinyint,sdeptvarchar(30))AnIntroductiontoDatabaseSystem例题(续)[例6]建立一个“课程表”course.createtablecourse(cnochar(4)primarykey,cnamevarchar(50),cpnochar(4),ccredittinyint,foreignkey(cpno)referencescourse(cno))AnIntroductiontoDatabaseSystemAnIntroductiontoDatabaseSystem例题(续)[例7]建立一个“选课表”sc.createtablesc(snochar(10),cnochar(4),gradetinyint,primarykey(sno,cno),foreignkey(sno)referencesstudent(sno),foreignkey(cno)referencescourse(cno))AnIntroductiontoDatabaseSystem二、修改基本表ALTERTABLE表名[ADD新列名数据类型[完整性约束]][DROP完整性约束名][MODIFY列名数据类型];表名:要修改的基本表ADD子句:增加新列和新的完整性约束条件DROP子句:删除指定的完整性约束条件ALTER子句:用于修改列名和数据类型AnIntroductiontoDatabaseSystem例题[例8]向Student表增加“入学时间”列,其数据类型为日期型。altertablestudentaddscomesmalldatetime不论基本表中原来是否已有数据,新增加的列一律为空值。AnIntroductiontoDatabaseSystem例9将年龄的数据类型由原来的tinyint为smallintaltertablestudentaltercolumnsagesmallintGoAnIntroductiontoDatabaseSystem语句格式(续)删除属性列直接/间接删除把表中要保留的列及其内容复制到一个新表中删除原表再将新表重命名为原表名直接删除属性列:(新)例:ALTERTABLEStudentDropColumnScome;AnIntroductiontoDatabaseSystem例10将学生表的“入学时间”列删除altertablestudentdropcolumnscomegoAnIntroductiontoDatabaseSystem三、删除基本表DROPTABLE表名;基本表删除,数据、表上的索引都删除表上的视图往往仍然保留,但无法引用删除基本表时,系统会从数据字典中删去有关该基本表及其索引的描述(AnIntroductiontoDatabaseSystem例题[例11]删除Student表DROPTABLEStudent;AnIntroductiontoDatabaseSystem3.2.2建立与删除索引建立索引是加快查询速度的有效手段建立索引DBA或表的属主(即建立表的人)根据需要建立有些DBMS自动建立以下列上的索引PRIMARYKEYUNIQUE维护索引DBMS自动完成使用索引DBMS自动选择是否使用索引以及使用哪些索引AnIntroductiontoDatabaseSystem一、建立索引语句格式CREATE[UNIQUE][CLUSTERED]INDEX索引名ON表名(列名[次序][,