列添加UNIQUE约束ALTERTABLE雇员表ADDCONSTRAINT
数据库原理与应用教程(第3版) 国家“十一五”规划教材 第3章 SQL语言基础及数据定义功能 3.1 基本概念 3.2 SQL的数据类型 3.3 数据定义功能 3.4 数据完整性 3.1 基本概念 3.1.1 SQL语言的发展 3.1.2 SQL语言的特点 3.1.3 SQL语言功能概述 3.1.1 SQL语言的发展 1986年10月由美国ANSI 公布最早的SQL标准。 1989年4月,ISO提出了具备完整性特征的SQL,称为SQL-89 。 1992年11月,ISO又公布了新的SQL标准,称为SQL-92(以上均为关系形式)。 1999年颁布SQL-99,是SQL92的扩展。 3.1.2 SQL语言的特点 1. 一体化 2. 高度非过程化 3. 简洁 4. 使用方式多样 3.1.3 SQL语言功能概述 3.2 SQL的数据类型 数值型 字符串型 日期时间型 数值型 准确型 整数 Bigint: 8字节, Int:4字节 Smallint:2字节, Tinyint:1字节 Bit:1位,存储1或0 小数 Numeric(p,q)或Decimal(p,q), 其中:p为数字位长度,q:小数位长度。 近似型 Float:8字节 Real:4字节 字符串型 普通编码字符串类型 统一字符编码字符串类型 二进制字符串类型 普通编码字符串类型 Char(n):定长存储,n<=8000 Varchar(n):不定长存储(按实际长度存储),长度最大不超过n , n<=8000 注:n 为字符个数 Text:存储大于8000字节的文本 统一字符编码字符串类型 nchar(n):定长存储,n<=4000 nvarchar(n):不定长存储,长度最大不超过n , n<=4000 ntext:存储大于8000字节的文本 特点:每个字符占两个字节 二进制字符串类型 Binary(n):固定长度,n <= 8000。 Varbinary(n):可变长度,n ( [列级完整性约束定义] {, [列级完整性约束定义] … } [, 表级完整性约束定义 ] ) 在列级完整性约束定义处可以定义的约束 NOT NULL:限制列取值非空。 DEFAULT:给定列的默认值。 UNIQUE:限制列取值不重。 CHECK:限制列的取值范围。 PRIMARY KEY:指定本列为主码。 FOREIGN KEY:定义本列为引用其他表的外码。使用形式为: [FOREIGN KEY()] REFERENCES () 几点说明 NOT NULL和DEFAULT只能是列级完整性约束; 其他约束均可在表级完整性约束处定义。 注意以下几点: 第一,如果CHECK约束是定义多列之间的取值约束,则只能在表级完整性约束处定义; 第二,如果表的主码由多个列组成,则也只能在表级完整性约束处定义,并将主码列用括号括起来,即:PRIMARY KEY(列1{[,列2 ] …}); 第三,如果在表级完整性约束处定义外码,则“FOREIGN KEY ()”部分不能省。 约束定义 ① 列取值非空约束 NOT NULL 例:sname char(10) NOT NULL 约束定义(续) ② 表主码约束 在定义列时定义主码(仅用于单列主码) 列定义 PRIMARY KEY 例: SNO char(7) PRIMARY KEY 在定义完列时定义主码(用于单列或多列主码) PRIMARY KEY () 例: PRIMARY KEY(SNO) PRIMARY KEY(SNO,CNO) 约束定义(续) 指明本表外码列引用的表及表中的主码列。 创建学生表 CREATE TABLE Student ( Sno char ( 7 ) PRI