关系数据库语言SQL

上传人:汽*** 文档编号:570931832 上传时间:2024-08-07 格式:PPT 页数:51 大小:942KB
返回 下载 相关 举报
关系数据库语言SQL_第1页
第1页 / 共51页
关系数据库语言SQL_第2页
第2页 / 共51页
关系数据库语言SQL_第3页
第3页 / 共51页
关系数据库语言SQL_第4页
第4页 / 共51页
关系数据库语言SQL_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《关系数据库语言SQL》由会员分享,可在线阅读,更多相关《关系数据库语言SQL(51页珍藏版)》请在金锄头文库上搜索。

1、数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院1关系数据库语言SQLStillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院2SQL(Structured Query Language) 结构化查询语言,是关系数据库的标准语言SQL是一个通用的、功能极强的关系数据库语言SQL概述概述数

2、据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院3SQL标准的进展过程标准的进展过程 标准 大致页数 发布日期nSQL/86 1986.10nSQL/89(FIPS 127-1) 120页 1989年nSQL/92 622页 1992年nSQL99 1700页 1999年nSQL2003 2003年数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院4T-SQL语句的种类语句的种类数据定义语言(DDL)语句 数据控制语言(DCL)语句数据操作

3、语言(DML)语句数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院5定义子语言定义子语言DDL回答如下问题回答如下问题: : 1.定义子语言的三个命令关键字? 3.表定义? 5.索引定义? 4.视图定义? 2.数据库定义?数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院6一一.定义子语言的三个命令关键字定义子语言的三个命令关键字说明:Create、Alter、Drop 各个命令关键字后应紧跟所要定义的对象关键字,如数据库为DATABAS

4、E、表为TABLE、视图为VIEW、索引为INDEX。 例如:CREATE TABLE、DROP TABLE、ALTER TABLE等等。 SQL SERVER中可用此三命令的数据库对象有:DATABASE、TABLE、VIEW、INDEX、TRIGGER、PROCEDURE、RULE、DEFAULT、FUNCTION。 SQL SERVER中,有几个数据库对象没有ALTER命令,如:INDEX、RULE、DEFAULT没有ALTER。数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院7二二.定义表定义表1.创建表创

5、建表(CREATE TABLE)CREATETABLE数据库名.拥有者 .|拥有者.表名(|列名AS列计算表达式|PRIMARYKEY|UNIQUE,.):=NULL|NOTNULLDEFAULT常数表达式|IDENTITY(初值 ,步长)NOTFORREPLICATIONROWGUIDCOL. 数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院8定义表示例定义表示例例例1建立建立“学生学生”表表Student,学号是主码,姓名取值唯一。,学号是主码,姓名取值唯一。学生表:Student(Sno,Sname,Ssex

6、,Sage,Sdept) CREATE TABLE Student ( Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) ); 主码主码数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院9数据类型数据类型SQL中域的概念用数据类型数据类型来实现定义表的属性时 需要指明其数据类型及长度 选用哪种数据类型 n取值范围 n要做哪些运

7、算 数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院10系统提供的数据类型系统提供的数据类型数字数据整型数据:存储整数bigint占8个字节,值的范围为 -263263-1int占4个字节,值的范围为 -231231-1smallint占2个字节,值的范围为 -3276832 767tinyint占1个字节,值的范围为 0255decimal (p,s)p为精度,最大38;s为小数位数,0spnumeric (p,s)在SQL Server中,等价于decimal小数数据:包含存储在最小有效数上的数据数据库原理及设

8、计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院11系统提供的数据类型(续)系统提供的数据类型(续)数字数据(续)近似数字数据:表示浮点数据的近似数字float (n)从 -1.79E+308 到 1.79E+308 之间的浮点数字数据;n 为用于存储科学记数法尾数的位数,同时指示其精度和存储大小,1n53real从 3.40E+38 到 3.40E+38 之间的浮点数字数据,存储大小为 4 字节;SQL Server 中,real 的同义词为 float(24) money占8个字节,相当于decimal,小数点前15位,小数

9、点后4位。smallmoney占4个字节,小数点前6位,小数点后4位。货币数据:表示正的或负的货币值数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院12系统提供的数据类型(续)系统提供的数据类型(续)日期和时间数据datetime占8个字节,表示从1753年1月1日到 9999年12月31日的日期smalldatetime占4个字节,表示从1900年1月1日至2079年6月6日的日期char (n)存储字符个数为 08 000varchar (n)存储字符个数为 08 000text存储字符个数为 02GBncha

10、r (n)存储字符个数为 04 000nvarchar(n)存储字符个数为 04 000ntext存储字符个数为 01GB字符数据和 Unicode 字符数据数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院13系统提供的数据类型(续)系统提供的数据类型(续)二进制数据binary(n) 存储字节个数 08 000varbinary(n) 存储字节个数 08 000image存储字节个数 02 Gbit存储位数据cursor存储对游标的引用rowversion (timestamp)时间戳table存储函数返回结果u

11、niqueidentifier存储 GUID 以及 UUID其他数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院14数据完整性(数据完整性(5-1)数据完整性数据完整性指的是数据库中存储的数据的正确性正确性、有效性有效性和和一一致性致性数据安全性与完整性的区别数据安全性与完整性的区别安全性:防止用户非法使用数据库,包括恶意破坏数据和越权存取数据。完整性:防止合法用户使用数据库时向数据库中加入不合语义的数据。数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电

12、子科技大学软件学院15数据完整性(数据完整性(5-2)域完整性域完整性(列列)实体完整性实体完整性 (行)(行)参照完整性参照完整性(表之间表之间)数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院16数据完整性数据完整性(5-3)在在SQL中通过中通过PRIMARYKEY、UNIQUE或或IDENTITY实现实现域完整性域完整性是指一个字段的输入有效性,是否允许为空值。是指一个字段的输入有效性,是否允许为空值。例:性别例:性别(男,女)(男,女)实体完整性实体完整性是指保证表中所有的记录的唯一。是指保证表中所有的记

13、录的唯一。数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院17SC tablegradecnosno9570888063121239500195001950109501095010外码外码Student table主码主码在在SQL中通过中通过FOREIGNKEY实现实现李敏勇 刘晨 王敏 张立950019500295003 95010Sname sno数据完整性数据完整性(5-4)参照完整性(引用完整性)参照完整性(引用完整性)在插入或删除数据时,维护表间数据一致性的手段。一般在插入或删除数据时,维护表间数据一致

14、性的手段。一般建立在主码(主键)与外部码(外键)之间的关系。建立在主码(主键)与外部码(外键)之间的关系。数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院18在在SQL中通过中通过check、default、触发器触发器(trigger)等实等实现现数据完整性(数据完整性(5-5)用户定义的完整性用户定义的完整性体现实际运用的业务规则。体现实际运用的业务规则。例如:学生成绩例如:学生成绩0100分分职工年龄职工年龄1860岁岁保险金保险金+补贴补贴基本工资基本工资数据库原理及设计数据库原理及设计杭州电子科技大学软件

15、学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院19实施数据完整性的途径实施数据完整性的途径约束(约束(constraint)规则(规则(rule)默认值(默认值(default)标识列(标识列(identity)触发器(触发器(trigger)数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院20约束约束约束的用途是限制输入到表中的值的范围。约束是实施数据完整性的首选方法约束的分类列级约束:只对一列起作用的约束。列级约束:只对一列起作用的约束。表级约束:对表中的多列起作用的约束。表级约束

16、:对表中的多列起作用的约束。问题的提出数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院21约束的类型约束的类型PRIMARY KEY 约束UNIQUE 约束CHECK约束FOREIGN KEY 约束DEFAULT 约束数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院22PRIMARYKEY约束约束PRIMARY KEY约束利用表中的一列或多列数据唯一地标识某一行数据每个表只有一个PRIMARY KEY约束PRIMARY KEY约束的值必

17、须是唯一的不允许有空值SQL Server中最多可定义 16 列作为主键数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院23n直接在列名后增加关键字直接在列名后增加关键字 PRIMARYKEYCREATE TABLE Student( sno char(5) PRIMARY KEY, sname varchar(20) not null, ); 创建创建PRIMARYKEY约束约束创建创建sc表,其主码为(表,其主码为(sno,cno)? CREATE TABLE sc (sno char(5) PRIMARY K

18、EY, cno char(1) PRIMARY KEY, grade decimal(4,1) );数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院24创建创建PRIMARYKEY约束约束n在在CREATE TABLE语句各列定义的最后加语句各列定义的最后加: : PRIMARY KEY()CREATETABLEsc(snochar(5),cnochar(1),gradedecimal(4,1),PRIMARYKEY(sno,cno);数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院

19、杭州电子科技大学软件学院杭州电子科技大学软件学院25n删除表上已定义的主键删除表上已定义的主键ALTERTABLESC1DROPCONSTRAINTPK_SC;n在没有定义主键的表上,加上一个主键在没有定义主键的表上,加上一个主键ALTERTABLESCADDCONSTRAINTPK_SCprimarykey(sno,cno);删除和添加主键删除和添加主键数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院26UNIQUE约束约束UNIQUE 约束主要被用来确保不受主键约束的列上的数据唯一性。UNIQUE约束的创建和使

20、用指导:可以向表中的多列应用 UNIQUE 约束允许该列存在NULL 值向现有表应用 UNIQUE 约束时,会验证现有数据数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院27n在创建表时定义在创建表时定义UNIQUE约束约束lCREATE TABLE test1 ( . , tname varchar(20) unique, tmount int );lCREATE TABLE test1 (. , tname varchar(8) constraint UNIQ_ TNAME unique, tmount int

21、 );创建创建UNIQUE约束约束列级列级UNIQUEUNIQUE约束约束数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院28n在创建表时定义在创建表时定义UNIQUE约束约束lCREATE TABLE test2 ( even_id int primary key, even_name char(20), even_type char(20), even_time datetime, ) 创建创建UNIQUE约束约束CONSTRAINT UNIQ_EVEN UNIQUE(even_type,even_time)C

22、ONSTRAINT UNIQ_EVEN UNIQUE(even_type,even_time)要求:要求:在在even_type和和even_time上共同上共同建立惟一约束建立惟一约束表级表级UNIQUEUNIQUE约束约束数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院29n向向test1表中的表中的tname列添加列添加UNIQUE约束约束lALTERTABLEtest1ADDCONSTRAINTUNIQ_TNAMEUNIQUE(tname)n删除表上已定义的删除表上已定义的UNIQUE约束约束lALTERT

23、ABLEtest1DROPCONSTRAINTUNIQ_TNAME添加和删除添加和删除UNIQUE约束约束数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院30UNIQUE约束约束UNIQUE 与主键约束的区别UNIQUE 约束主要用在非主键的一列或多列上限制数据惟一的情况,而主键是用于惟一标识一行数据UNIQUE 约束允许该列上存在NULL值,而主键决不允许出现这种情况可以在一个表上设置多个UNIQUE 约束,而一个表上只能设置一个主键数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院

24、杭州电子科技大学软件学院杭州电子科技大学软件学院31CHECK约束约束CHECK约束通过检查输入表列的值来维护值域的完整性。CHECK约束通过对一个逻辑表达式的结果进行判断来对数据进行检查。age int CHECK(age=18 and age=0andgrade=100),数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院33lCreate Table Student ( sno char(5) not null, birthdate datetime not null schooldate datetime n

25、ot null , primary key (sno), );创建创建CHECK约束约束表级表级CHECK约束约束check(birthdategetdate(),check(birthdate=0andgmark=100)添加和删除添加和删除CHECK约束约束数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院35CHECK约束约束应用CHECK 约束的注意事项一个表可以定义多个CHECK约束,一个列上只允许创建一个列级CHECK约束。列级 CHECK 约束只能引用被约束的列,表级 CHECK 约束只能引用同一表中的

26、列。数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院36DEFAULT约束约束如果一个列的值在 插入时没有指定,DEFAULT 约束将自动输入一个值,可以是预先指定的常量、NULL 或者一个系统函数运行时的值语法:语法:CONSTRAINT 约束名约束名 DEFAULT 约束表达式约束表达式 数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院37DEFAULT约束约束l在创建表时使用default属性CREATETABLEuserInfo

27、(.countryvarchar(50)notnullDEFAULTChina,)l为已经创建好的表添加default属性USENorthwindALTERTABLEdbo.CustomersADDCONSTRAINTDF_contactnameDEFAULTUNKNOWNFORContactName应用 DEFAULT 约束的几种情况数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院38FOREIGNKEY约束约束应用FOREIGN KEY约束主要用来维护两个表之间的一致性关系。当一行新的数据加入到表格中,或对表格

28、中已经存在的外键上的数据进行修改时新的数据取值必须:存在于另一张表的主键上为NULL当主键所在表的数据被另一张表的外键引用时,用户无法对主键的数据进行修改或删除。数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院39n创建一个新的创建一个新的employee表,并向该表中的表,并向该表中的dno列添加列添加FOREIGNKEY约束约束CREATE TABLE employee(eno char(4) not null PRIMARY KEY, ename char(8) not null, sex char(2) n

29、ot null, age integer, marry char(1), title char(10), dno char(2) REFERENCES department(dno);FOREIGNKEY约束约束FOREIGN KEY约束约束数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院40表表employee和和department的参照关的参照关系系父表父表子表子表FOREIGNKEY约束约束数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大

30、学软件学院41n删除表上已定义的外键删除表上已定义的外键ALTERTABLEEMPLOYEEDROPCONSTRAINTFRNKEY_DNO;n在没有定义外键的表上添加外键在没有定义外键的表上添加外键ALTERTABLEEMPLOYEEADDCONSTRAINTFRNKEY_DNOFOREIGNKEY(dno)REFERENCESdepartment(dno);FOREIGNKEY约束约束数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院42FOREIGNKEY 约束约束FOREIGN KEY约束的默认实现策略向外键

31、所在表(employee)插入一行新元组,如输入外键的值不满足参照完整性约束规则,则系统拒绝。修改外键所在表(employee)的元组,如所修改外键的值不满足参照完整性约束规则,则系统拒绝。修改或删除父表(department)的主键,仅当子表(employee)中没有任何元组外键值与其相同时,系统才执行删除操作,否则拒绝。数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院43向外键所在表(向外键所在表(employee)插入一行新元组插入一行新元组FOREIGNKEY 约束约束数据库原理及设计数据库原理及设计杭州电

32、子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院44修改外键所在表(修改外键所在表(employee)的元组的元组FOREIGNKEY 约束约束数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院45删除父表(删除父表(department)的主键的主键dnoFOREIGNKEY 约束约束数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院46修改父表(修改父表(department)的主键的主键dno

33、01FOREIGNKEY 约束约束数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院47级联引用完整性级联引用完整性允许对父表某元组主键值删除或更新操作,相应外键所在表的具有该外键值的元组也将被删除或更新,保证参照完整性。语法:语法:CONSTRAINT 约束名约束名 FOREIGN KEY (列列,n)REFERENCES 引用表引用表 (引用列引用列 ,n) ONDELETECASCADE|NOACTION ONUPDATECASCADE|NOACTION NO ACTION:任何企图删除或者更新被其他表的外键所

34、引用的键都将引发一个错误,对数据的改变会被回滚。NO ACTION 是默认值CASCADE:若父表中的行变化了,则引用表中相应的行也自动变化数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院48 CREATETABLEemployee(enochar(4)PRIMARYKEY,enamevarchar(8),sexchar(2),ageint,marrychar(1),titlechar(10),dnochar(2),CONSTRAINTFRNKEY_DNOFOREIGNKEY(dno)REFERENCESdepar

35、tment(dno)ONDELETECASCADE);或者或者CREATETABLEemployee(enochar(4)PRIMARYKEY,FOREIGNKEY(dno)REFERENCESdepartment(dno)ONUPDATECASCADE);级联引用完整性级联引用完整性数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院49删除级联删除级联级联引用完整性级联引用完整性数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院50更新级联更新级联01级联引用完整性级联引用完整性数据库原理及设计数据库原理及设计杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院杭州电子科技大学软件学院51休息一会儿。休息一会儿。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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