您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > Chapter5SQL语言(1)
第5章关系数据库语言SQL数据库原理及应用教学内容SQL的功能与特点表的基本操作SQL的数据查询SQL的视图操作第1讲SQL的功能与特点第5章关系数据库语言SQL主要内容SQL的产生和发展SQL的功能SQL的特点一、SQL的产生和发展SQL语言的发展ChamberlinSEQUELSQL大型数据库SybaseINFORMIXSQLServerOracleDB2INGRES----------------小型数据库FoxProAccess结构化查询语言StructuredQueryLanguage一、SQL的产生和发展(续)1986年10月,美国国家标准化协会(ANSI)发布了ANSI文件X3.135-1986《数据库语言SQL》,1987年6月国际标准化组织(ISO)采纳其为国际标准。———“SQL86”。1989年10月——“SQL89”;1992年8月——“SQL2(SQL92)”标准。1999年——“SQL3(SQL99)”。SQL成为国际标准后,由于各种类型的计算机和DBS都采用SQL作为其存取语言和标准接口,从而使数据库世界有可能链接为一个统一的整体,这个前景意义十分重大。二、SQL的功能1、数据定义功能:定义数据库的逻辑结构,包括基本表、视图、索引等。2、数据操作功能:数据查询和数据更新。3、数据控制功能:包括用户授权、基本表和视图的授权、事务控制、数据完整性和安全性控制等。三、SQL的特点1、工作方式交互式命令方式:在联机终端上,通过直接输入SQL命令对数据库进行操作;嵌入式工作方式:通过嵌入到高级语言程序中实现对数据库的操作。SQL用户用户SQL用户SQL用户3用户4ViewBasetableStorefile视图V1视图V2基本表B1基本表B2基本表B3基本表B4存储文件S1存储文件S2存储文件S3存储文件S42、SQL支持数据库的三级模式结构第2节表的基本操作第5章关系数据库语言SQL主要内容基本表的定义基本表的修改表的撤消数据插入、修改与删除CREATETABLE表名(列名1数据类型[列1的完整性约束],列名2数据类型[列2的完整性约束],……,列名n数据类型[列n的完整性约束],[表的完整性约束]);不能与SQL语言中的保留字同名不能与其它表名或视图名同名是以字母开头,由字母、数字和下划线“_”组成的字符串,长度不超过30个字符。一、基本表的定义一个表可以有若干列,但至少要有一列。每一列必须有一个列名和相应的数据类型。同一表中的列名不能重名。指定基本表中属性的取值特性和范围所谓“完整性约束”是为保护数据库中的数据所作的各种检查或数据应满足的约束条件。当不选择该项时,默认值为NULL,表示该列可以为空值。当选择该项时,由用户根据各属性列的数据特点和要求给出该列数据的完整性约束条件:[NULL|NOTNULL|PRIMARYKEY|DEFAULT|CHECK|UNIQUE|NOTNULLUNIQUE]由用户根据表中各属性列数据的特点和要求给出所在表的数据的约束条件。包括:表的主键约束子句、表的外键约束子句和表的检验约束CHECK子句。一、基本表的定义(续)数据类型整数数据精确数值近似浮点数值日期时间数据bigint,int,smallint,tinyintnumeric和decimalfloat和realdatetime与smalldatetime字符串数据Unicode字符串数据二进制数据货币数据char、varchar、textnchar、nvarchar与ntextbinary、varbinary、imagemoney与smallmoney标记数据timestamp和uniqueidentifier列名数据类型完整性约束字段名类型宽度小数位数主键外键NULL其它S#char9YYNC#char7YYNGRADEint0-100示例:教学管理数据库系统中的学习关系SCCREATETABLESC(S#CHAR(9),C#CHAR(7),GRADEINT);列名数据类型示例:学习关系SC的创建语句定义数据表的约束正确性有效性相容性数据的完整性约束(Constraint)默认(Default)规则(Rule)触发器(Trigger)存储过程(StoredProcedure)SQLServer的数据完整性机制[CONSTRAINT约束名]约束类型完整性约束的基本语法格式NULL/NOTNULLUNIQUEPRIMARYKEYFOREIGNKEYCHECK定义数据表的约束定义方式①如果表中只有一个列是主键时,可在基本表定义的列的完整性约束处,标识相应的约束关键字,说明某个属性是主键或候选键。例:教学管理数据库系统中的专业关系SSCREATETABLESS(SCODE#CHAR(5)PRIMARYKEY,SSNAMEVARCHAR(30)NOTNULL);1、主键约束1、主键约束(续)②如果表的主键由一列或多列组成,在基本表定义的表的完整性约束处,通过键约束子句说明某个特定的属性或属性集构成主键或候选键。PRIMARYKEY(主键列名1[,主键列名2,…,主键列名r])1、主键约束(例)例:教学管理数据库系统中的学习关系SC。CREATETABLESC(S#CHAR(9),C#CHAR(7),GRADEINT,PRIMARYKEY(S#,C#));[CONSTRAINT约束名]FOREIGNKEYREFERENCES主表名(列名[{,列名}])外部键从表主键主表引用2、FOREIGNKEY约束(外键约束)CREATETABLESC(S#CHAR(9),C#CHAR(7),GRADEINT,PRIMARYKEY(S#,C#),FOREIGNKEY(S#)REFERENCESS(S#),FOREIGNKEY(C#)REFERENCESC(C#));示例:教学管理数据库系统中的学习关系SC2、外键约束(例)3、CHECK约束CHECK约束是用来指定某一个属性或多个属性可以满足的条件,可以在基本表定义的列的完整性约束或表的完整性约束进行说明CHECK(值的约束条件)CREATETABLES(S#CHAR(9)PRIMARYKEY,SNAMECHAR(10)NOTNULL,SSEXCHAR(2)CHECK(SSEXIN(‘男’,’女’)),SBIRTHINDATENOTNULL,PLACEOFBCHAR(16),SCODECHAR(5)NOTNULL,CLASSCHAR(5)NOTNULL);示例:教学管理数据库系统中的学生关系S3、CHECK约束(例)示例:教学管理数据库系统中的学习关系SCCREATETABLESC(S#CHAR(9),C#CHAR(7),GRADEINT,PRIMARYKEY(S#,C#),FOREIGNKEY(S#)REFERENCESS(S#),FOREIGNKEY(C#)REFERENCESC(C#),CHECK(GRADEBETWEEN0AND100));3、CHECK约束(例)4、缺省值约束用关键字DEFAULT说明,用于给所在的列设置一个缺省值,即在插入一个新记录时,如果带有DEFAULT选项的列没有数据,就将缺省值作为该列的数据。DEFAULT(缺省值)示例:教学管理数据库系统中的学习关系SCCREATETABLESC(S#CHAR(9),C#CHAR(7),GRADEINTDEFAULT(0),PRIMARYKEY(S#,C#),FOREIGNKEY(S#)REFERENCESS(S#),FOREIGNKEY(C#)REFERENCESC(C#),CHECK(GRADEBETWEEN0AND100));4、缺省值约束(例)5、非空约束使用关键字NOTNULL说明,用于指出某属性列不能为空值。每一个表中至少应有一个列的可选项为NOTNULL主键列已隐含可选项为NOTNULL示例:教学管理数据库系统中的学生关系SCREATETABLES(S#CHAR(9)PRIMARYKEY,SNAMECHAR(10)NOTNULL,SSEXCHAR(2)CHECK(SSEXIN(‘男’,’女’)),SBIRTHINDATENOTNULL,PLACEOFBCHAR(16),SCODECHAR(5)NOTNULL,CLASSCHAR(5)NOTNULL);5、非空约束(例)建立包含完整性定义的学生表。CREATETABLES(SNoCHAR(6)CONSTRAINTS_PrimPRIMARYKEY,SNCHAR(8)CONSTRAINTSN_ConsNOTNULL,SexCHAR(2)DEFAULT'男',AgeINTCONSTRAINTAge_ConsNOTNULLCONSTRAINTAge_ChkCHECK(AgeBETWEEN15AND50),DeptCHAR(10)CONSTRAINTDept_ConsNOTNULL)表创建实例二、基本表的修改1、改变表名修改表名的语句格式为:RENAME原表名TO新表名;例:将SS表改名为SS1。RENAMESSTOSS1;2、增加列在表的最后一列后面增加新的一列:ALTERTABLE表名ADD增加的列名数据类型;例:给学生表新增一个属性“民族”,数据类型为CHAR(10)。ALTERTABLESADDnationalityCHAR(10);3、删除列删除表中不再需要的列,格式为:ALTERTABLE表名DROP删除的列名[CASCADE|RESTRICT];CASCADE表示所有引用到该列的视图或有关约束一并删除;RESTRICT表示在没有视图或有关约束引用时,该列才能被删除,否则拒绝操作。例:删除教师表T中的出生年月。ALTERTABLETDROPTBIRTHINRESTRICT;4、修改列的定义修改列的定义,包括列的类型、长度,格式为:ALTERTABLE表名MODIFY列名新的数据类型及长度;例:将专业表SS中的专业名称列长度由30改为40。ALTERTABLESSMODIFYSSNAMEVARCHAR(40);三、表的撤消将不需要的表或定义错误的表删除掉,格式为:DROPTABLE表名[CASCADE|RESTRICT];当一个表被撤消时,该表中的数据也一同被删除。指出哪些列需要插入数据指出要插入的列的具体值一一对应四、数据插入、修改与删除1、数据插入向表中插入一行(单元组)数据。INSERTINTO表名[(列名表)]VALUES(值表);可省1、数据插入示例给学习关系SC中插入王丽丽同学(学号为200401003)学习计算机网络课(课程号为C403001)的成绩(89分)。INSERTINTOSC(S#,C#,GRADE)VALUES(’200401003’,’C403001’,89);2、数据修改UPDATE表名SET列名1=表达式1[,列名2=表达式2,…,列名n=表达式n][WHERE条件];2、数据修改示例将所有女同学的专业改为S0404UPDATESSETSCODE=’S0404’WHERESSEX=’女’;3、数据删除DELETEFROM表名[WHERE条件];示例在学生关系S中删除学号为200403001的学生信息。DELETEFROMSWHERES#=‘200403001’;小结1、表的操作(1)表的定义CREATETABLE表名(2)表的修改RENAME|ALTERTABLE(3)表的撤消DROPTABLE2、数据的操作(1)数据插入INSERTINTO(2)数据修改UPDATE表名SET(3)数据删除DELETEFROM表名
本文标题:Chapter5SQL语言(1)
链接地址:https://www.777doc.com/doc-1238581 .html