chap04SQL定义功能

上传人:平*** 文档编号:46193818 上传时间:2018-06-23 格式:PPTX 页数:61 大小:2.56MB
返回 下载 相关 举报
chap04SQL定义功能_第1页
第1页 / 共61页
chap04SQL定义功能_第2页
第2页 / 共61页
chap04SQL定义功能_第3页
第3页 / 共61页
chap04SQL定义功能_第4页
第4页 / 共61页
chap04SQL定义功能_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《chap04SQL定义功能》由会员分享,可在线阅读,更多相关《chap04SQL定义功能(61页珍藏版)》请在金锄头文库上搜索。

1、 2nSQL概述nSQL数据定义功能nSQL数据查询功能nSQL数据修改功能nSQL数据控制功能n可编程SQL提纲提纲SQL概述:历史nSQL: Struceured Query Languangn1974年,由Boyce和Chamber提出n1975-1979年,在System R上实现,由IBM的San Jose研究室研制,称为SequelSQL概述:标准化nSQL-86n“数据库语言SQL”nSQL-89n“具有完整性增强的数据库语言SQL”,增加了对完 整性约束的支持nSQL-92n“数据库语言SQL”,是SQL-89的超集,增加了许多 新特性,如新的数据类型,更丰富的数据操作,更 强

2、的完整性、安全性支持等。OfficialOfficial与与defactodefactoSQL概述:标准化nSQL-99n增加对面向对象模型的支持nSQL-2003nXML,MergenSQL-2006nSQL-2008SQL概述:特点n一体化n集DDL,DML,DCL于一体n单一的结构-关系,带来了数据操作符的统一n面向集合的操作方式n一次一集合n高度非过程化n用户只需提出“做什么”,无须告诉“怎么做”,不必了解存取 路径n两种使用方式,统一的语法结构nSQL既是自含式(用户使用)的,又是嵌入式的(程序员使用)n语言简洁,易学易用SQL概述:操作符SQLSQL功能功能操作符操作符数据查询数据

3、查询SELECTSELECT数据定义数据定义CREATECREATE,ALTERALTER,DROPDROP数据操纵数据操纵INSERTINSERT,UPDATEUPDATE,DELETEDELETE数据控制数据控制GRANTGRANT,REVOKEREVOKE示例关系DEPT(D# , DNAME , DEAN)DEPT(D# , DNAME , DEAN)S(S# , SNAME , SEX , AGE , D#)S(S# , SNAME , SEX , AGE , D#)C(C# , CN , PC#, CREDIT)C(C# , CN , PC#, CREDIT)SC(S# , C#

4、, GRADE)SC(S# , C# , GRADE)PROF(P# , PNAME, AGE, D# , SAL)PROF(P# , PNAME, AGE, D# , SAL)PC(P# , C#)PC(P# , C#)SQL数据定义功能n域定义n基本表的定义n索引的定义n数据库的建立与撤消nSQL数据定义特点域定义n域类型(SQL-92)nchar(n):固定长度的字符串nvarchar(n):可变长字符串nint:整数nsmallint:小整数类型nnumeric(p,d):定点数,小数点左边p位,右边q位nreal:浮点数ndouble precision:双精度浮点数ndate:日期

5、(年、月、日)ntime:时间(小时、分、秒)ninterval:两个date或time类型数据之间的差基本表的定义n基本表的定义(CREATE)n格式create tablecreate table 表名(列名 数据类型 defaultdefault 缺省值 not not nullnull uniqueunique,列名 数据类型 default default 缺省值 not nullnot null,primary keyprimary key(列名 ,列名 ),foreign keyforeign key (列名 ,列名 ) referencesreferences 表名 (列名 ,

6、列名 ),checkcheck(条件) )基本表的定义create table S( S# char(8),SNAMEchar(8) not null default Unknown,AGE tinyint,SEX char(1),primary key (S#),check (SEX=M or SEX=F)基本表的定义create table C( C# char(4) primary key ,CNAMEchar(8) not null unique,PC#char(4) foreign key references C(C#)基本表的定义create table SC (S# char(

7、8), C# char(4),GRADE tinyint, primary key (S#, C#), foreign key (S#) references S(S#), foreign key (C#) references C(C#), check(GRADE is null)or GRADE between 0 and 100) )基本表的定义sysobjects列名数据类型描述namesysname对象名。Idint对象标识号。xtypechar(2)对象类型。uidsmallint所有者对象的用户 ID。crdatedatetime对象的创建日期。schema_ver int版本号

8、,该版本号在每次表的架构更改时都增加。基本表的定义syscolumns列名数据类型描述namesysname列名或过程参数的名称。idint该列所属的表对象 ID。xtypetinyintsystypes 中的物理存储类型。xusertypesmallint扩展的用户定义数据类型 ID。lengthsmallintsystypes 中的最大物理存储长度。offsetsmallint该列所在行的偏移量;如果为负,表示可变长度行。typetinyintsystypes 中的物理存储类型。usertypesmallintsystypes 中的用户定义数据类型 ID。isnullableint表示该列

9、是否允许空值: 基本表的定义nINFORMATION_SCHEMA.SCHEMATAnINFORMATION_SCHEMA.TABLESnINFORMATION_SCHEMA.COLUMNSnINFORMATION_SCHEMA.CHECK_CONSTRAINTS nINFORMATION_SCHEMA.VIEWSnINFORMATION_SCHEMA.DOMAINSn基本表的定义/创建对象的前缀use S_C_S if EXISTS (select name fromsysobjects whereID = OBJECT_ID(S) drop table S create table S()

10、 /察看属性列信息select name, xtype, xusertype, length, offset, type, usertype from syscolumns where ID = OBJECT_ID (S)基本表的定义n修改基本表定义(ALTER)n更改、添加、除去列和约束 n格式: alter tablealter table 表名 addadd 子句增加新列和约束 drop drop 子句删除列和约束 modify modify 子句修改列定义n示例alter table S add LOCATION char30基本表的定义alter tablealter table S

11、 S add add resume char100 resume char100 not nullnot nullalter tablealter table S S alter column alter column resume char80resume char80如何定义两个相互参照的表?如何定义两个相互参照的表?E#E#ENAMEENAMED#D#D#D#DNAMEDNAMEMGRMGRcreate table emp(E# primary key)create table dept(D# primary key, MGR foreign key)alter table emp ad

12、d constraint D# foreign key基本表的定义n撤消基本表定义(drop)n格式 drop tabledrop table 表名n nDANGERDANGER 删除表定义及该表的所有数据、索引、触发器、约 束和权限规范任何引用已除去表的视图或存储过程必须通过 drop view或drop procedure语句显式除去ndrop table不能用于除去由foreign key约束引用的 表。必须先除去引用的foreign key约束或引用的表 临时表的定义n临时表n草稿簿,试验中间的数据处理n只记录回滚信息,不记录重做信息n临时表上的数据更新比其他表快4倍n私有临时表 cr

13、eate table #my_tablen全局临时表 create table #my_tablentempdb create table my_table用户定义数据类型nUDDT:User-defined datatypen保证数据一致性n格式create domaincreate domain 域名 数据类型n示例 create domain person-name char(20)类似C语言中:typedef ADDRESS_LISTchar name10; char telephone20; char location20 ; ADDRESS_LIST tom;用户定义数据类型: S

14、QL ServerEXEC sp_addtype phone_number, varchar(20), not nullcreate table customer (cust_idsmallintnot null, cust_phonephone_number, cust_faxvarchar(20)not null, cust_eamilvarchar(20)not null)select colid,name,xtype,length,xusertype,offset from syscolumns where id=object_id(customer)create type phone

15、_number from varchar(20) not null定义者的选择n变长之利 减少存储开销 元组数/页 高n变长之弊 查询计算偏移 更新挪移数据n变长之用 长短显著不一 很少发生变化char or char or varcharvarchar定义者的选择n主码n保证其惟一性必须进行字符匹配n一个表的主码经常是另外一个表的外码,而外码是 对主码的复制,如果主码太长的话,加上外码则会 占据很大的表空间n表之间的连接一般是基于主外码的,为加快查询会 在主外码上建立索引,太长的主码会使得一个页面 里容纳很少的索引项,从而增加查找数据时所需要 的磁盘I/O数。 IDENTITY: SQL S

16、ervernIDENTITY( seed , increment ) n为一些没有有效主码的表提供计数器n有一个起始数(种子),增量值(步长)nIDENTITY属性不能为空,也不能带有defaultn示例 create table customer1 (cust_idsmallintIDENTITY not null,cust_name varchar(50)not null) create table customer2 (cust_idsmallintIDENTITY(100,20) not null cust_name varchar(50)not null)IDENTITYnIDENTITY有关函数nIDEN

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号