SQL语言-数据定义_第1页
SQL语言-数据定义_第2页
SQL语言-数据定义_第3页
SQL语言-数据定义_第4页
SQL语言-数据定义_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、5.1 SQL语言概述 SQL,结构化查询语言 w Structured Query Languagew 是一种介于关系代数与关系演算之间的语言w 已成为关系数据库的标准语言w 支持关系系统 Oracle、Informix、Sybase、MS SQL、INGRES、DB2、VF、FoxPro、Access等 SQL86w 由ANSI(美国国家标准局)于1986年10月公布w 1987年6月国际标准化组织OSI把它采纳为国际标准 SQL89w ISO于1989年4月公布,增强了完整性特征 SQL92w ISO于1992年公布,也称为SQL2 SQL99意义:自SQL成为国际标准语言以后,各个数据

2、库厂家纷纷推出各自支持的SQL软件或与SQL的接口软件。大多数数据库均用SQL作为共同的数据存取语言和标准接口,使不同数据库系统之间的互操作有了共同的基础。这个意义十分重大。因此,有人把确立SQL为关系数据库语言标准及其后的发展称为一场革命。 SQL成为国际标准,对数据库以外的领域也产生了很大影响,有不少软件产品将SQL语言的数据查询功能与图形功能、软件工程工具、软件开发工具、人工智能程序结合起来。SQL已成为关系数据库领域中一个主流语言。 意义: 大多数数据库开发商支持SQL/99,但并不是百分之百符合这个标准。目前市场上存在一些不同风格的SQL,因为每一个RDBMS开发商都试图扩展这个标准

3、,以增强产品的功能,提高产品的吸引力,因此各个DBMS产品在实现标准SQL语言时也各有差别,读者在使用某个DBMS产品时,应仔细阅读系统提供的有关手册。本书中我们将遵循SQL/99标准向大家介绍语句。但为了增强大家的认识,我们会通过SQL Server数据库阐述部分特性,与标准SQL/99会有一些偏离。 1、数据定义w DDL语言(数据定义语言),主要定义数据库的逻辑结构,包括定义基本表、视图和索引; 2、数据操纵w DML语言(数据操纵语言),包括数据查询和更新(插入、删除和修改)两大类操作; 3、数据控制w DCL语言(数据控制语言),包括对基本表和视图的授权,完整性规则的描述和事务控制;

4、 4、嵌入式SQLw 规定了SQL语句在宿主语言的程序中使用规则。1. SQL语言的组成: 1. 综合统一w 查询、操纵、定义、控制操作功能一体化w 语言风格统一,数据操作符统一性 2. 高度非过程化w 用户只需提出“做什么”,而不必指明“怎么做”w 隐蔽数据存取路径 3. 面向集合的操作方式w 操作的对象和结果都是元组的集合(关系)2. SQL语言的特点: 4. 以同一种语法结构提供两种使用方式w 交互式语言,一般DBMS都提供联机交互工具,用户可直接键入SQL命令对数据库进行操作,由DBMS来进行解释,针对所有DB用户。w 嵌入式语言,将SQL语句嵌入到高级语言(宿主语言),使应用程序充分

5、利用SQL访问数据库的能力,针对应用程序员。 w 两种类型的语法结构基本一致 5. 语言简洁,易学易用w 类似于英语的自然语言w 操作谓词少(核心功能只用9个动词)SQL功能动词 数据查询 数据定义 数据操纵 数据控制SELECTCREATE,DROP,ALTERINSERT,UPDATE,DELETEGRANT,REVOKE3. SQL对关系数据库模式的支持基本表基本表B1视图视图V1基本表基本表B3基本表基本表B4存储文件存储文件S1存储文件存储文件S2基本表基本表B2视图视图V2SQL外层外层/ /外模式外模式概念层概念层/ /概念模式概念模式内层内层/ /存储模式存储模式 基本表(ba

6、se table):w 数据库中实际独立存在的表(关系)w 存储在实际的文件中 存储文件w 存储基本表的数据 视图(view)w 是一个虚拟表w 从基本表或其他视图中导出的表w 没有实际的存储位置w 数据库中只存放视图的定义而不存放视图对应的数据,数据仍然存放在导出视图的基本表中3.2 数据定义 数据定义功能包括定义基本表、视图和索引操作对象操作方式创 建删 除修 改表CREAT TABLEDROP TABLEALTER TABLE视图CREAT VIEWDROP VIEW索引CREAT INDEXDROP INDEX准备工作:数据类型 数据类型用于给特定的列提供数据规则,数据类型用于给特定的

7、列提供数据规则,不同的不同的DBMS支持的数据类型不同,有支持的数据类型不同,有细微的差别。细微的差别。SQL提供的主要类型:提供的主要类型: 数值型、字符型、位串型、日期型数值型、字符型、位串型、日期型T-SQL数据类型 T-SQL中支持的、常用的数据类型 w 字符型 w 日期时间类型 w 数值类型 w 二进制型 w 位型 w 文本型 w 图像型 w 时间戳型 非unicod字符型 固定长度或可变长度的字符数据类型 允许定义的长度是1-8000 有两种w 固定长度的char( 10)类型w 可变长度的varchar( )类型 输入字符型数据时必须用单引号将数据括起来,例:hello unic

8、od字符型 使用 UNICODE UCS-2 字符集 定义值在 1 到 4,000 之间(含)。存储大小为两倍 n 字节。 有两种w 固定长度的nchar( )类型w 可变长度的nvarchar( )类型 输入字符型数据时格式,例:Nhello 日期时间类型 datetime和smalldatetime是用来存储日期和时间数据 比较内容 Datetime Smalldatetime 最小值 Jan 1,1753 Jan 1,1900 最大值 Dec 31,9999 Jun 6,2079 占用存储空间 8byte 4byte 精度 3.33毫秒 1分钟 整数类型 整数类型的比较 比较内容 Int

9、 Smallint Tinyint 最小值 -231 -215 0 最大值 231-1 215-1 255 占用存储空间 4byte 2byte 1byte 浮点数类型 比较内容FloatReal最小值-1.79E+308-3.40E+38最大值1.79E+3083.40E+38占用存储空间8Byte4Byte精度最多15位最多7位精确数类型 精确数类型有两种形式w Decimalw Numeric 与浮点类型数据的区别 w 可以自定义精度的位数w 例 num_col(5,2)货币型 货币类型的比较 比较内容MoneySmallmoney最小值-922,337,203,685,477.5808

10、-214,748.3648最大值922,337,203,685,477.5807214,748.3647占用存储空间8Byte4Byte精度小数点后4位小数点后4位位数据类型 位数据类型bit是一种逻辑数据类型 只有1和0两种数值 一般常用作true/false使用 定义bit列时,不允许为NULL,也不能建立索引 多个bit列可占用一个字节文本型和图像型 文本类型text 图像类型image 每行可以存储2GB的二进制大型对象 时间戳型 时间戳型表示Timestamp 由系统自动赋值的一个计数器数据 记录了数据行的操作顺序 时间戳列的数据保持惟一,它可以惟一标识表中的列 时间戳列的值实际来自

11、于事务日志 语句格式:CREATE TABLE ( 列级完整性约束条件 , 列级完整性约束条件 , );1、定义基本表 CREATE TABLE 列和表完整性约束条件列和表完整性约束条件 约束类型说明Not null防止NULL值进入该列 unqiue防止重复值进入该列 Default默认约束,将该列常用的值定义为缺省值,减少数据输入Check检查约束,通过约束条件表达式设置列值应满足的条件Primary key要求进入该列的所有值是唯一的,且不为NULL Foreign key表间约束列约束或表约束,分别取决于否应用于一个或多个列 例1 创建无约束的表结构 建立学生表student,由学号、

12、姓名、性别、年龄、系别5个属性组成。CREATE TABLE student (Sno char(8), Sname char(20) , Ssex char(1) Sage int, Sdept char(20) 创建有约束的表结构Create table student(sno char(8) primary key, sname char(8) not null unique, ssex char(2) default 男 check(ssex=男 or ssex=女), sage tinyint check(sage between 15 and 50), sdept char(20)

13、 T-SQL中具体创建约束时,分为命名约束与自命名约束,自命名约束不需要constraint关键字,直接在字段定义后创建,命名约束需要constraint关键字,对约束命名,位置在字段定义结束后。创建有约束的表结构create table sc(sno char(8), cno char(2), grade tinyint, constraint pk_sc primary key(sno,cno), constraint fk_stuid foreign key(sno) references student(sno), constraint fk_course foreign key(cn

14、o) references course(cno), constraint ck_grade check(grade=0 and grade=100) )注意:教材是标准SQL99语法,和具体的DBMS的语法有区别 语句格式ALTER TABLE ADD 完整性约束 ADD constraint 完整性约束 DROP constraint DROP COLUMN -T-SQL ALTER column -T-SQL 修改内容w 增加新列和新的完整性约束条件(ADD子句) w 删除指定的完整性约束条件(DROP子句) w 修改原有的列定义 ( ALTER子句)2、修改基本表 ALTER TABL

15、E 例2 向Student表中增加“入学时间”列,其数据类型为日期型。ALTER TABLE Student ADD Scome DATEtime; 例3 将Student表中年龄的数据类型改为半字长整数。ALTER TABLE Student ALTER Sage SMALLINT; 例4 删除sc表中成绩取值限制的约束ALTER TABLE Student DROP constraint ck_grade; 语句格式DROP TABLE 例5 删除Student表DROP TABLE Student 说明:w 删除基本表定义时,表中的数据、在此表上建立的索引将同时被删除;w 此表上的视图不

16、被删除,但已无法使用。3、删除基本表 DROP TABLE4、索引 表的索引就是表中数据的目录 索引基于表中的列创建,可以基于不同的列创建多个索引 在进行数据查询时,如果不使用索引,就需要将数据文件分块,逐个读到内存中进行查找比较操作。如果使用索引,可先将索引文件读入内存,根据索引项找到元组的地址,然后再根据地址将元组数据读入内存,并且由于索引文件中只含有索引项和元组地址,文件很小,而且索引项经过排序,索引可以很快的读入内存并找到相应元组地址,极大地提高查询的速度。 使用索引可保证数据的唯一性。在索引的定义中包括了数据唯一性的内容。 使用索引可加快连接速度 索引的分类 聚簇/聚集索引 w 索引

17、树的叶级页包含实际的数据;表的物理顺序与记录的索引顺序相同。非常类似于目录表,目录表的顺序与实际页码顺序。一个表只能有一个聚簇索引。 非聚簇/非聚集索引 w 记录的物理顺序与逻辑顺序没有必然关系,一个表也可以同时有多个非聚簇索引,类似于一本书同时有主题索引和作者索引。 Sql server 在创建主键是会根据主键自动创建聚簇索引,表中数据的物理顺序要重新排列,和聚簇索引的顺序保持一致。 SQL Server在某个列上建立unique约束时,会根据该列自动创建唯一索引。 语句格式CREATE UNIQUE CLUSTERINDEX ON (, ) ;w UNIQUE 表示每一个索引值只对应唯一的数据记录w CLUSTER 聚簇索引:索引项的顺序与表中记录的物理顺序相一致 相关说明w 索引可以提高数据检索速度w 索引可以保证行的唯一性。w 索引会增加系统的开销(空间、速度)w 索引由系统自动使用和维护建立索引 CREATE INDEX 例6 为学生-课程数据库中Student,Course,SC三个表建立索引。w Student表按姓名升序建立唯一索引;w SC表按学号升序课程号降序建立唯一索引。CR

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论