SQL数据库创建表与完整性约束.ppt
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
创建学生表
CREATE TABLE Student ( Sno char ( 7 ) PRIMARY KEY, Sname char ( 10 ) NOT NULL, Ssex char (2) CHECK (Ssex = '男' OR Ssex = '女'), Sage tinyint CHECK (Sage >= 15 AND Sage <=45), Sdept char (20 ) DEFAULT '计算机系' )
在列级完整性约束定义处可以定义的约束
• • • • • • NOT NULL:限制列取值非空。 DEFAULT:给定列的默认值。 UNIQUE:限制列取值不重。 CHECK:限制列的取值范围。 PRIMARY KEY:指定本列为主码。 FOREIGN KEY:定义本列为引用其他表的外码。使 用形式为: [FOREIGN KEY(<外码列名>)] REFERENCES < 外表名>(<外表列名>)
• nchar(n):定长存储,n<=4000 • nvarchar(n):不定长存储,长度最大 不超过n , n<=4000 • ntext:存储大于8000字节的文本 • 特点:每个字符占两个字节
二进制字符串类型
• Binary(n):固定长度,n <= 8000。 • Varbinary(n):可变长度,n <=8000 。 注:n为二进制数据的字节数 • image:大容量、可变长二进制字符数据, 可用于存储文件。
• 普通编码字符串类型 • 统一字符编码字符串类型 • 二进制字符串类型
普通编码字符串类型
• Char(n):定长存储,n<=8000 • Varchar(n):不定长存储(按实际长度 存储),长度最大不超过n , n<=8000
注:n 为字符个数
• Text:存储大于8000字节的文本
统一字符编码字符串类型
4.3 基本表的定义、删除及修改
• 4.3.1 基本表的定义与删除 • 4.3.2 修改表结构
4.3.1 基本表的定义与删除
• 1.定义基本表 使用SQL语言中的CREATE TABLE语句实 现,其一般格式为:
CREATE TABLE <表名>( <列名> <数据类型> [列级完整性约束定义] {, <列名> <数据类型> [列级完整性约束定义] … } [, 表级完整性约束定义 ] )
约束定义(续)
③外码引用约束
• 指明本表外码列引用的表及表中的主码列。
[ FOREIGN KEY (<本表列名>)] REFERENCES <外表名>(<外表主码列名>) 例: FOREIGN KEY (sno) REFERENCES 学生表(sno)
约束定义(续)
• ④默认值约束
• 格式:DEFAULT 默认值 • 例:定义系的默认值为“计算机系”。 DEFAULT ‘计算机系’
4.1.3 SQL语言功能概述
四部分:数据定义功能、数据控制功能、数据 查询功能和数据操纵功能。 SQL功能
数据查询 数据定义 数据操纵 数据控制 SELECT CREATE、DROP、ALTER INSERT、UPDATE、DELETE GRANT、REVOKE
命令动词
4.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字节
字符串型
约束定义
• ① 列取值非空约束
<列名> <类型> NOT NULL
例:sname char(10) NOT NULL
约束定义(续)
• ② 表主码约束
• 在定义列时定义主码(仅用于单列主码) 列定义 PRIMARY KEY 例: SNO char(7) PRIMARY KEY • 在定义完列时定义主码(用于单列或多列主 码) PRIMARY KEY (<列名序列>) 例: PRIMARY KEY(SNO) PRIMARY KEY(SNO,CNO)
日期时间型
• Datetime:8字节,年月日时分秒毫秒 (例:‘2001/08/03 10:30:00.000’ ) • SmallDateTime:4字节,年月日时分 (例: ‘2001/08/03 10:30:00’ ) • 日期、时间的输入格式
货币类型
• Money: 8 个字节,精确到货币单位的 千分之十。 • Smallmoney: 4 个字节,精确到货币单 位的千分之十。 • 限制到小数点后 4 位。 • 可以带有适当的货币符号。例如,100 英 镑可表示为 £ 100。
例: UNIQUE (SNO,CNO)
• 用于限制在一个列中不能有重复的值。 • 用在事实上具有惟一性的属性列上,比如每 个人的身份证号码、驾驶证号码等均不能有 重复值。 • 注意: • 允许有一个空值; • 在一个表中可以定义多个UNIQUE约束; • 可以在一个列或多个列上定义UNIQUE约 束。
约束定义(续)
• ⑤CHECK约束
• 格式:CHECK (约束表达式) • 例:定义成绩大于等于0。 CHECK ( grபைடு நூலகம்de >= 0 )
约束定义(续)
• ⑥UNIQUE约束
• 在列级约束定义(仅用于单列约束) 列定义 UNIQUE 例: SNAME char(7) UNIQUE • 在表级约束定义(用于单列或多列组合约束) UNIQUE (<列名序列>)
几点说明
• NOT NULL和DEFAULT只能是列级完整性约束; • 其他约束均可在表级完整性约束处定义。 • 注意以下几点:
• 第一,如果CHECK约束是定义多列之间的取值约束, 则只能在表级完整性约束处定义; • 第二,如果表的主码由多个列组成,则也只能在表级完 整性约束处定义,并将主码列用括号括起来,即:PRI MARY KEY(列1{[,列2 ] …}); • 第三,如果在表级完整性约束处定义外码,则“FOREI GN KEY (<外码列名>)”部分不能省。