您好,欢迎访问三七文档
数据库系统原理1陈岭浙江大学计算机学院关系模型2SQL语言概览SQL数据定义SQL基本模式定义SQL语言(1)SQL已在数据库领域中广泛使用SQL(StructuredQueryLanguage,结构化查询语言),SQL最早的版本是由IBM开发的,它最初叫做Sequel(StructuredEnglishQUEryLanguage),在20世纪70年代早期作为SystemR项目的一部分。SQL-86:1986年ANSI和ISO发布了第一个SQL标准SQL-89:ANSI发布的一个SQL扩充版本SQL-92:目前大多数商业RDBMS支持此标准SQL-99:SQL-92的扩充版本,现在部分商业数据库系统支持此标准SQL语言概览3SQL标准符合度,分为四个等级:EntrylevelSQL(入门级)TransitionalSQL(过渡级)IntermediateSQL(中间级)FullSQL(完全级)SQL-92:支持SQL标准符合度的四个等级SQL-99:支持SQL标准符合度的四个等级现在,没有DBMS产品全部实现了SQL标准符合度的四个等级SQL语言概览4SQL语言有以下几个部分:DDL(Data-definitionLanguage)数据定义语言―createtable,altertable,droptable―createindex,dropindex―createview,dropview―createtrigger,droptrigger―…DML(Data-manipulationLanguage)数据操纵语言―select…from―insert,delete,updateDCL(Data-controlLanguage)数据控制语言―grant,revokeSQL语言概览5数据库中的关系集合必须由数据定义语言(DDL)指定给系统。例,CREATETABLEinstructor(IDchar(5),namevarchar(20)notnull,dept_namevarchar(20),salarynumeric(8,2),primarykey(ID));参见:super-keycandidatekeyprimarykeySQL数据定义6SQL的DDL不仅能够定义一组关系,还能够定义每个关系的信息,包括:每个关系模式每个属性的取值类型完整性约束每个关系维护的索引集合每个关系的安全性和权限信息每个关系在磁盘上的物理存储结构SQL数据定义7char(n):固定长度字符串,用户指定长度nvarchar(n):可变长度的字符串,用户指定最大长度nint:整数类型(和机器相关的整数类型的子集),等价于全程integersmallint:小整数类型(和机器相关的整数类型的子集)numeric(p,d):定点数,精度由用户指定。这个数有p位数字,其中d位数字在小数点右边real,doubleprecision:浮点数与双精度浮点数,精度与机器相关float(n):精度至少为n位的浮点数null:每种类型都可以包含一个特殊值,即空值。可以申明属性值不为空,禁止加入空值基本类型8date:日期,含年、月、日,如‘2015-3-20’time:时间,含小时、分钟、秒,如‘08:15:30’或‘08:15:30.75’timestamp:日期+时间,如‘2015-3-2008:15:30.75’基本类型9注:日期和时间类型在SQLServer2000中用“datetime”表示Sql中有许多函数,用于处理各种类型的数据及其类型转换,但各数据库系统中函数的标准化程度不高不同的函数:―SqlServer:substring(s,start,length),getdate(),datalength(‘abc’),……―Oracle:substr(s,start,length),sysdate,length(‘abc’),to_char(sysdate,‘yyyy/mm/dd’)得:2015/03/20,to_date(‘15/03/20’,‘yy/mm/dd’),……相同的函数:―abs()(绝对值)―exp()(指数)―round()(四舍五入)―……基本类型10我们用cretaetable命令定义SQL关系:CREATETABLEr(A1D1,A2D2,...,AnDn,完整性约束1,...,完整性约束k);其中,r是关系名,每个Ai是关系r模式中的一个属性名,Di是属性Ai的域基本模式定义11SQL支持许多不同的完整性约束。在本节我们只讨论其中少数几个:notnull,一个属性上的notnull约束表明在该属性上不允许空值primarykey(A1,...,An),声明表示属性A1,...,An构成关系的主码。主码属性必须非空且唯一。主码属性在SQL_92标准中无需指明notnull,但是在SQL_89中需要明确指明foreignkey(A1,...,Am)references,声明表示关系中任意元组在属性上(A1,...,Am)上的取值必须对应于关系s中某元组的主码属性上的取值check(P),P是谓词条件基本模式定义12基本模式定义13例,声名ID为instructor的主码,并确保salary的值非负CREATETABLEinstructor(IDchar(5),namevarchar(20)notnull,dept_namevarchar(20),salarynumeric(8,2),primarykey(ID),check(salary=0));方法2:CREATETABLEinstructor2(IDchar(5)primarykey,namevarchar(20),dept_namevarchar(20),salarynumeric(8,2),check(salary=0));salary可能为空?在SQLServer2000中,与WHERE子句不同的是:它能为空基本模式定义14我们用droptable命令,从数据库中删除关于被去掉关系的所有信息DROPTABLEr;如,DROPTABLEinstructor2;我们用altertable命令,为已有关系增加属性ALTERTABLErADDAD;其中,A是待添加属性的名字,D是待添加属性的域。关系中所有元组在新属性上的取值将被设为null如,ALTERTABLEinstructoraddbirthdaydate;我们也可以用altertable命令,从关系中去掉属性ALTERTABLErDROPA但是很多数据库系统并不支持此操作我们还可以用altertable命令,修改关系中的属性如,ALTERTABLEinstructorMODIFY(IDchar(10));总结15SQL是具有影响力的商用市场化的关系查询语言。SQL语言包括几个部分:数据定义语言(DDL)数据操纵语言(DML)数据控制语言(DCL)SQL的数据定义语言用于创建具有特定模式的关系。除了声明关系属性的名称和类型之外,SQL还允许声明完整性约束,例如主码约束和外码约束谢谢!16
本文标题:数据库第三章
链接地址:https://www.777doc.com/doc-3990041 .html