在表中添加约束,基本常用的有两种类型,一个是创建表时同时添加约束,另一个是创建好表通过修改表添加约束,在这里是创建表时同时添加约束,但是有两种不同的用写法。

在这里列举出一些创建约束的形式,共参考(均在SQLServer2005中编译通过):

create database stuDB

go

use stuDB

go

----- 1.1 先创建表在创建表,然后通过修改表在创建约束(理论课中的示例)---

-- 先创建表

CREATE  TABLE  stuInfo  /*-创建学员信息表-*/

(

stuName  VARCHAR(20)  NOT  NULL ,  --学员姓名,非空(必填)

stuNo   CHAR(6)  NOT  NULL,   --学号,非空(必填)

stuAge  INT  NOT  NULL,  --年龄,INT类型不用指定大小,默认为个字节

stuID  NUMERIC(18,0),     --身份证号,NUMERIC (18,0)代表位数字,小数位数为

stuSeat   SMALLINT  IDENTITY (1,1),   --座位号,自动编号(标识列),从开始递增

stuAddress   TEXT   --住址,允许为空,即可选输入

)

GO

CREATE TABLE stuMarks

(

ExamNo  CHAR(7)  NOT NULL,  --考号

stuNo  CHAR(6)  NOT NULL,   --学号

writtenExam  INT  NOT NULL,  --笔试成绩

LabExam  INT  NOT NULL    --机试成绩

)

GO

-- 然后健约束

---- 添加主键约束(stuNo作为主键)

ALTER TABLE stuInfo

ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo)

---添加唯一约束(身份证号唯一,因为每人的身份证号全国唯一)

ALTER TABLE stuInfo

ADD CONSTRAINT UQ_stuID UNIQUE (stuID)

---添加默认约束(如果地址不填,默认为“地址不详”)

ALTER TABLE stuInfo

ADD CONSTRAINT DF_stuAddress DEFAULT ('地址不详') FOR stuAddress

---添加检查check约束,要求年龄只能在-岁之间

ALTER TABLE stuInfo

ADD CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40)

--添加外键约束(主表stuInfo和从表stuMarks建立关系,关联字段为stuNo)

ALTER TABLE stuMarks

ADD CONSTRAINT FK_stuNo

FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo)

GO

----- 1.2 先创建表在创建表,然后通过修改表在创建约束(项目实战中的的示例)

drop table stuMarks

drop table stuInfo

go

-- 先创建表

CREATE  TABLE  stuInfo  /*-创建学员信息表-*/

(

stuName  VARCHAR(20)  NOT  NULL ,  --学员姓名,非空(必填)

stuNo   CHAR(6)  NOT  NULL,   --学号,非空(必填)

stuAge  INT  NOT  NULL,  --年龄,INT类型不用指定大小,默认为个字节

stuID  NUMERIC(18,0),     --身份证号,NUMERIC (18,0)代表位数字,小数位数为

stuSeat   SMALLINT  IDENTITY (1,1),   --座位号,自动编号(标识列),从开始递增

stuAddress   TEXT   --住址,允许为空,即可选输入

)

GO

CREATE TABLE stuMarks

(

ExamNo  CHAR(7)  NOT NULL,  --考号

stuNo  CHAR(6)  NOT NULL,   --学号

writtenExam  INT  NOT NULL,  --笔试成绩

LabExam  INT  NOT NULL    --机试成绩

)

GO

-- 然后健约束, 注意:与前面的示例的区别是用“,”号隔开

ALTER TABLE stuInfo

ADD CONSTRAINT PK_stuNo PRIMARY KEY (stuNo)

---添加唯一约束(身份证号唯一,因为每人的身份证号全国唯一)

,CONSTRAINT UQ_stuID UNIQUE (stuID)

---添加默认约束(如果地址不填,默认为“地址不详”)

, CONSTRAINT DF_stuAddress DEFAULT ('地址不详') FOR stuAddress

---添加检查check约束,要求年龄只能在-岁之间

, CONSTRAINT CK_stuAge CHECK(stuAge BETWEEN 15 AND 40)

--添加外键约束(主表stuInfo和从表stuMarks建立关系,关联字段为stuNo)

, CONSTRAINT FK_stuNo

FOREIGN KEY(stuNo) REFERENCES stuInfo(stuNo)

GO

----- 2.1 创建表时同时添加约束----------

drop table stuMarks

drop table stuInfo

go

CREATE  TABLE  stuInfo  /*-创建学员信息表-*/

(

stuName  VARCHAR(20)  NOT  NULL ,  --学员姓名,非空(必填)

stuNo   CHAR(6) primary key ,   --学号,主键

stuAge  INT  NOT  NULL check(stuAge between 15 and 40),  --年龄,检查约束

stuID  NUMERIC(18,0)unique ,     --身份证号,NUMERIC (18,0)代表位数字,小数位数为,该列唯一约束

stuSeat   SMALLINT  IDENTITY (1,1),   --座位号,自动编号(标识列),从开始递增

stuAddress   TEXT  default '地址不详' --住址,允许为空,即可选输入,默认”地址不详“

)

GO

CREATE TABLE stuMarks

(

ExamNo  CHAR(7)  primary key,  --考号,主键

stuNo  CHAR(6)  NOT NULL foreign key references stuInfo(stuNo) ,  --学号,外键

writtenExam  INT  NOT NULL,  --笔试成绩

LabExam  INT  NOT NULL    --机试成绩

)

GO

----- 2.2 创建表时同时添加约束,另一个版本-------------

drop table stuMarks

drop table stuInfo

go

CREATE  TABLE  stuInfo  /*-创建学员信息表-*/

(

stuName  VARCHAR(20)  NOT  NULL ,  --学员姓名,非空(必填)

stuNo   CHAR(6),

CONSTRAINT pk_stuNo primary key (stuNo),   --学号,主键

stuAge  INT  NOT  NULL ,              --年龄,

constraint ck_stuAge check(stuAge between 15 and 40),-- 检查约束

stuID  NUMERIC(18,0) ,                 --身份证号,NUMERIC (18,0)代表位数字,小数位数为,该列唯一约束

constraint uq_stuId unique(stuID),

stuSeat   SMALLINT  IDENTITY (1,1),    --座位号,自动编号(标识列),从开始递增

stuAddress   TEXT  ,                   --住址,允许为空,即可选输入

)

GO

CREATE TABLE stuMarks

(

ExamNo  CHAR(7)  primary key,  --考号,主键

stuNo  CHAR(6)  NOT NULL  ,  --学号,外键

constraint fk_stuNo foreign key(stuNo) references stuInfo(stuNo),

writtenExam  INT  NOT NULL,  --笔试成绩

LabExam  INT  NOT NULL    --机试成绩

)

GO

-- 再来

drop table stuMarks

drop table stuInfo

go

CREATE  TABLE  stuInfo  /*-创建学员信息表-*/

(

stuName  VARCHAR(20)  NOT  NULL ,  --学员姓名,非空(必填)

stuNo   CHAR(6),

primary key (stuNo),   --学号,主键

stuAge  INT  NOT  NULL ,              --年龄,

check(stuAge between 15 and 40),-- 检查约束

stuID  NUMERIC(18,0) ,                 --身份证号,NUMERIC (18,0)代表位数字,小数位数为,该列唯一约束

unique(stuID),

stuSeat   SMALLINT  IDENTITY (1,1),    --座位号,自动编号(标识列),从开始递增

stuAddress   TEXT  ,                   --住址,允许为空,即可选输入

)

GO

CREATE TABLE stuMarks

(

ExamNo  CHAR(7)  primary key,  --考号,主键

stuNo  CHAR(6)  NOT NULL  ,  --学号,外键

foreign key(stuNo) references stuInfo(stuNo),

writtenExam  INT  NOT NULL,  --笔试成绩

LabExam  INT  NOT NULL    --机试成绩

)

GO

-- 添加复合主键

drop table stuMarks

drop table stuInfo

go

CREATE  TABLE  stuInfo  /*-创建学员信息表-*/

(

stuName  VARCHAR(20)  NOT  NULL ,  --学员姓名,非空(必填)

className   CHAR(6)  NOT  NULL,   --班级名称,非空(必填)

stuAge  INT  NOT  NULL,  --年龄,INT类型不用指定大小,默认为个字节

)

GO

-- 然后健约束, 注意:这里是复合主键

ALTER TABLE stuInfo

ADD CONSTRAINT PK_stuNo PRIMARY KEY (className,stuName)

-- OR

drop table stuInfo

go

-- 先创建表

CREATE  TABLE  stuInfo  /*-创建学员信息表-*/

(

stuName  VARCHAR(20)  NOT  NULL ,  --学员姓名,非空(必填)

className   CHAR(6)  NOT  NULL,   --班级名称,非空(必填)

CONSTRAINT PK_stuNo PRIMARY KEY (className,stuName),   -- 复合主键

stuAge  INT  NOT  NULL,  --年龄,INT类型不用指定大小,默认为个字节

)

GO

-- 再来一种

create table A

(

a1 int ,

b1 int not null

)

select * from A

alter table A alter column a1 float null

alter table A  alter column a1 float not null

alter table A add primary key (a1)

alter table A add check (b1 between 1 and 100)

sql 添加约束的更多相关文章

  1. SQL语句创建数据库,SQL语句删除数据库,SQL语句创建表,SQL语句删除表,SQL语句添加约束,SQL语句删除约束

    创建数据库: CREATE DATABASE Test --要创建的数据库名称 ON PRIMARY ( --数据库文件的具体描述 NAME='Test_data', --主数据文件的逻辑名称 FIL ...

  2. sql语句添加约束

    sql语句添加约束 --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. --唯一约束(Unique Constraint):要求该列唯一,允许为空,但 ...

  3. Sql语句在SqlServer中创建数据库、表格并添加约束

    通过Sql语句来创建数据库与架构 创建数据库 数据库的创建首先是要引用主数据库的,需要在master数据库的环境下进行创建.大致的语法如下: -- 使用master数据库 use master -- ...

  4. 使用SQL语句向已有数据表添加约束

    如果向存在数据的表里添加约束,有可能会出现数据不符合检查约束而造成添加约束失败. 如: 这是一个表,为身份证号添加检查约束. USE DEmo--指向当前操作的数据库 GO ALTER TABLE E ...

  5. 5-06使用Sql 语句为表添加约束

    约束名的命名规则推荐采用:约束类型_约束列. 为用户表添加约束 ALTER TABLE UserInfo ADD CONSTRALNT PK_UserId PRIMATY REY(UserId) CO ...

  6. olacle数据库员工表的创建,及插入数据,添加约束,删除列,查询数据的sql语句

    ---删除原有的员工表drop TABLE employee;---创建员工表CREATE TABLE employee       (       empno NUMBER(4) NOT NULL, ...

  7. Mysql通过sql语句添加约束和查看约束

    一:添加约束 1.添加唯一约束:alter table student add constraint uk_name unique(name); 2.添加外键约束: alter table 表名 ad ...

  8. SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束

    SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主 ...

  9. SQL CREATE TABLE 语句\SQL 约束 (Constraints)\SQL NOT NULL 约束\SQL UNIQUE 约束

    CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据 ...

随机推荐

  1. [TYVJ] P1031 热浪

    热浪 背景 Background USACO OCT09 9TH   描述 Description 德克萨斯纯朴的民眾们这个夏天正在遭受巨大的热浪!!!他们的德克萨斯长角牛吃起来不错,可是他们并不是很 ...

  2. Netbeans使用Xdebug调试的配置

    在phpinfo()信息里找到php.ini的位置并打开php.ini在文档最后添加如下代码: 注释原来xdebug配置 xdebug.remote_enable=onxdebug.remote_ha ...

  3. WEB打印插件jatoolsPrinter

    为什么选择 jatoolsPrinter 免费版? 支持无预览直接打印 真正免费,不加水印,没有ip或域名限制,不限时间,兼容ie6+ 无须注册,下载即用 提供经过微软数字签名的cab自动安装包,安装 ...

  4. 方案:解决 wordpress 中 gravatar 头像被墙问题

    Gravatar头像具有很好的通用性,但是却遭到了无辜的拦截,对于无法加载头像URL,我们在WordPress系统中通过修改默认的URL链接可以达到恢复头像的功能. 修改文件路径为 /wp-inclu ...

  5. 初探JS正则表达式

    1.概述     正则表达式是一个描述字符模式的对象.Javascript的正则表达式语法的是Perl5的正则表达式的子集.JS正则表达式有两种使用方式,文本模式和RegExp对象模式,实例如下: v ...

  6. UGUI 过渡动画插件,模仿NGUI的Tween (转载)

    最近在相亲,后来好朋友跟我说他写了一个好插件,于是我就把女朋友甩了,看看他的插件,可以在UGUI制作简单过渡动画. 我看了下是模仿NGUI的Tween, 我在筱程的基础上稍微改到人性化, 简单支持的让 ...

  7. ubuntu 配置jdk

    shawn@e014-anle-lnx:~$ sudo su # chmod 777 jdk-6u27-linux-i586.bin # ./jdk-6u27-linux-i586.bin # mv ...

  8. Linux基本操作 2-----Linux文件系统基本结构

    Linux的文件系统结构             Linux文件系统为一个倒转的单根树状结构 文件系统的根为"/" 文件系统严格区分大小写 路径使用“/”来分割,在windows使 ...

  9. CSS3 target伪类简介

    CSS3 target伪类是众多实用的CSS3特性中的一个.它用来匹配文档(页面)的URI中某个标志符的目标元素.具体来说,URI中的标志符通常会包含一个”#”字符,然后后面带有一个标志符名称,比如# ...

  10. 部分GDAL工具功能简介

    主要转自http://blog.csdn.net/liminlu0314?viewmode=contents 部分GDAL工具功能简介 gdalinfo.exe 显示GDAL支持的各种栅格文件的信息. ...