大型数据库——创建约束

Posted 小姚同学要继续加油呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大型数据库——创建约束相关的知识,希望对你有一定的参考价值。

利用create命令创建表

其语法形式如下:

CREATE TABLE <表名>
(
<字段名> <数据类型>[列级完整性约束条件] 
[,<字段名> <数据类型>[列级完整性约束条件]]
[,<表级完整性约束条件>]
)

参数说明:
(1)<表名>是所要定义的基本表的名字。一个表它可以由一个或多个属性组成。
(2)<字段名>一般取有实际意义的名字。
(3)<数据类型>可以是前面介绍的数据类型。
(4)在SQL Server 2000中有下面几种完整性约束条件:
空值约束(NULL or NOT NULL);主键约束(primary key constraint);唯一性约束(unique constraint);检查约束(check constraint);缺省约束(default constraint);外部键约束(foreign key constraint);规则(rule);缺省值(default)。

关于创建表时运用约束的说明

(1)空值约束(NULL or NOT NULL)
空值NULL约束决定属性值是否允许为空值(NULL)。NULL表示没有输入任何内容,它不是零和空白,不允许为空值则用NOT NULL表示。
例如:设置属性teacher允许为空值。

CREATE TABLE t
(
 teacher char(8) NULL
)

(2)主键约束(primary key constraint)
主健约束要求主健属性取值必须惟一,一个表只能包含一个主健约束。如果没有在主健约束中指定CLUSTERED或NONCLUSTERED,并且没有为UNIQUE约束指定聚集索引,则将对该主健约束用CLUSTERED。

CREATE TABLE products
(
	id char(10) NOT NULL,
	name char(20) NOT NULL,
	price money,
	quantity  smallint  NULL,
	CONSTRAINT  pk_products  PRIMARY KEY CLUSTERED (id)
)

此例的主健名称是pk_products,在products表中关于id建立了一个索引排序。

(3)唯一性约束(unique constraint)
唯一性约束用于指定一个或者多个列的组合的值具有唯一性,以防止在列中输入重复的值。

CREATE TABLE student1
(
	sno char(8),
	sname char(16),
	constraint pk_student primary key(sno),
	constraint uniq_student unique(sname)
)

(4)检查约束(check constraint)
使用检查约束时,应该注意以下几点:
① 一个列级检查约束只能与限制的字段有关;一个表级检查约束只能与限制的表中字段有关。
② 一个表中可以定义多个检查约束。
③ 每个CREATE TABLE语句中每个字段只能定义一个检查约束。
④ 在多个字段上定义检查约束,则必须将检查约束定义为表级约束。
⑤ 检查约束中不能包含子查询。

create table employee(
Id char(8),
name char(8) CHECK(NAME LIKE[A-C,a-c][A-Z,a-z][A-Z][A-Z]),
sex char(2),
phonenum int,
constraint chk_sex check(sex in (’F’,’M’))default ‘F’,
Constraint chk_phonenum check(phonenum like(010)[8,9][0-9][0-9][0-9] [0-9][0-9][0-9][0-9]’))

(6)外部键约束
外部键约束用于强制参照完整性,提供单个字段或者多个字段的参照完整性。当使用外部键约束时,应该考虑以下几个因素:
① 外部键约束提供了字段参照完整性。
② 外部键从句中的字段数目和每个字段指定的数据类型必须和REFERENCES从句中的字段相匹配。
③ 外部键约束不能自动创建索引,需要用户手动创建。
④ 一个表中最多可以有31个外部键约束。
⑤ 在临时表中,不能使用外部键约束。
⑥ 主键和外部键的数据类型必须严格匹配。

[CONSTRAINT  约束名] FOREIGN KEY (外键列名)REFERENCES 参照表(参照列名)

数据表结构的管理

使用SQL命令修改表。

语法格式:

ALTER TABLE <表名>
	ADD<新列名><数据类型>[完整性约束]
	|ALTER COLUMN 列名 新类型
	|DROP COLUMN 列名
	|ADD PRIMARY KEY(列名[,]|ADD FOREIGN KEY(列名) REFERENCES 表名(列名)
	|ADD CONSTRAINT 约束名….
     	|DROP CONSTRAINT 约束名 

ex:将教学管理数据库中的学生表属性“性别”的长度改为2。

USE 教学管理                              		--打开教学管理数据库
GO
ALTER TABLE 学生表
       ALTER COLUMN 性别 CHAR(2) 

数据表结构的删除
可以用企业管理器或SQL语句删除基本表。
方法一:使用企业管理器
① 选中要删除的数据表,单击右键,在快捷菜单上选择“删除”。
② 在“除去对象”对话框中,单击“全部除去”。

方法二:使用SQL命令
SQL命令的一般格式为:

DROP  TABLE  <表名>

以上是关于大型数据库——创建约束的主要内容,如果未能解决你的问题,请参考以下文章

在约束布局中查看片段的绑定不起作用

Python - 循环加速 - 大型数据集

为啥 PL/SQL Bulk DML 对具有父子约束表的大型数据集运行缓慢?

THREE.js - 大型int作为Uniform

基于约束的SQL攻击

基于约束的SQL攻击