3.1SQL概述
3.1.1SQL的发展
SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。由于它具有功能丰富、使用方便灵活、语言简洁易学等突出的优点,深受计算机工业界和计算机用户的欢迎。1980年10月,经美国国家标准局(ANSI)的数据库委员会X3H2批准,将SQL作为关系数据库语言的美国标准,同年公布了标准SQL,此后不久,国际标准化组织(ISO)也作出了同样的决定。
目前没有一个数据库能够支持SQL标准的所有概念和特性;同时各大软件厂商对SQL基本命令集还进行了不同程度的扩充和修改,又可以支持标准以外的一些功能特性。
3.1.2SQL的特点
SQL从功能上可以分为3部分:数据定义、数据操纵和数据控制。
其主要特点包括:
1.综合统一
数据描述、操纵、控制等功能一体化,可以独立完成数据库生命周期中的全部活动,包括:定义和修改、删除关系模式,定义和删除视图,插入数据,建立数据库;对数据库中的数据进行查询和更新;数据库重构和维护;数据库安全性、完整性控制,以及事务控制;嵌入式SQL和动态SQL定义。
2.高度非过程化
非关系数据库使用的是过程化语言,需要制定存储路径来完成请求,SQL非过程化,存取路径对用户是透明的。
3.面向集合的操作方式
操作对象、查询结果可以是元组的集合;插入、删除、更新操作的对象也是元组的集合。
4.以同一种语法结构提供多种使用方式
SQL即使独立的语言,又是嵌入式语言,可以嵌入到高级语言中。
5.语言简洁,易学易用
完成核心功能只用了9个动词,接近英语口语,易于学习使用。
3.1.3SQL的基本概念
支持SQL的关系数据库管理系统同样支持数据库三级模式结构。
3.2学生-课程数据库(样例)
学生-课程模式S-T
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
表数据如下:
3.3数据定义
SQL的数据定义功能包括模式定义、表定义、视图和索引的定义。
3.3.1模式的定义与删除
定义模式:
CREATE schema 模式名 AUTHORIZATION 用户名;
如果要创建模式,那么该用户必须有数据库管理员权限或获得了数据库管理员授予的CREATE schema权限。
例:为用户WANG定义一个模式:S-T
CREATE schema “S-T” AUTHORZATION WANG;
用户还可以在创建模式时创建表:
例:为用户WANG创建一个模式TEST,并定义一个表TAB
CREATE schema “TEST” AUTHORZATION WANG
CREATE TABLE TAB(COL1 INT,
COL2 CHAR(20)
);
删除模式:
DORP schema 模式名 CASCDE|RESTRICT;
其中CASCDE|RESTRICT必选其一,CASCDE(级联):在删除模式时把该模式的所有数据库对象全部删除;RESTRICT(限制):如果删除模式时,该模式已经定义了下属的数据库对象(表、视图)则拒绝执行删除。
例:删除模式TEST
DROP schema “TEST” CASCDE;
则表TAB也被删除,如果执行DROP schema “TEST” RESTRICT;则模式不会被删除。
3.3.2基本表的定义、删除和修改
定义基本表:
创建了模式就创建了一个数据库的命名空间,一个框架,而基本表则是这个命名空间中的数据,基本表的创建格式如下:
CREATE table 表名(列名1 数据类型 列级完整性约束条件,
列名2 数据类型 列级完整性约束条件
……
表级约束条件
);
例:建立一个学生表Student
CREATE table Student(Sno CHAR(9) PRIMARY KEY, /列级完整性约束条件,Sno为主码/
Sname CHAR(20) UNIQUE, /列级完整性约束条件,Sname值唯一/
Ssex CHAR(2),
Sage SMALLINT,
Sdept CHAR(20)
FOREIGN KEY(参照列名) REFERENCES 被参照表名(被参照列名)/表级完整性约束条件/
);
数据类型:
(1)二进制数据类型
二进制数据包括 Binary、Varbinary 和 Image
Binary 数据类型既可以是固定长度的(Binary),也可以是变长度的。
Binary[(n)] 是 n 位固定的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储空间的大小是 n + 4 个字节。
Varbinary[(n)] 是 n 位变长度的二进制数据。其中,n 的取值范围是从 1 到 8000。其存储空间的大小是 n + 4个字节,不是n 个字节。
在 Image 数据类型中存储的数据是以位字符串存储的,不是由 SQL Server 解释的,必须由应用程序来解释。例如,应用程序可以使用BMP、TIEF、GIF 和 JPEG 格式把数据存储在 Image 数据类型中。
(2)字符数据类型
字符数据的类型包括 Char,Varchar 和 Text
字符数据是由任何字母、符号和数字任意组合而成的数据。
Varchar 是变长字符数据,其长度不超过 8KB。Char 是定长字符数据,其长度最多为 8KB。超过 8KB 的ASCII 数据可以使用Text数据类型存储。例如,因为 Html 文档全部都是 ASCII字符,并且在一般情况下长度超过 8KB,所以这些文档可以 Text 数据类型存储在SQL Server 中。
(3)Unicode 数据类型
Unicode 数据类型包括 Nchar,Nvarchar 和Ntext
在 Microsoft SQL Server 中,传统的非 Unicode 数据类型允许使用由特定字符集定义的字符。在 SQL Server安装过程中,允许选择一种字符集。使用 Unicode 数据类型,列中可以存储任何由Unicode 标准定义的字符。在