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

在这里列举出一些创建约束的形式,共参考(均在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. 非索引列上的统计 <第二篇>

    非索引列上的统计 有时候,可能在连接或过滤条件中的列上没有索引.即使对这种非索引列,如果查询优化器知道这些列的数据分布(统计),它也很可能做出最佳的选择. 除了索引上的统计,SQL Server可以在 ...

  2. Berserk Rook

    Berserk Rook As you may know, chess is an ancient game for which almost everyone has at least a basi ...

  3. HDU 5424 Rikka with Graph II

    题目大意: 在 N 个点 N 条边组成的图中判断是否存在汉密尔顿路径. 思路:忽略重边与自回路,先判断是否连通,否则输出"NO",DFS搜索是否存在汉密尔顿路径. #include ...

  4. 解决Struts2.2.20版本的标签不支持style属性的问题

    我先把Exception错误信息贴出来:org.apache.jasper.JasperException: /WEB-INF/jsp/topicAction/addUI.jsp (line: 40, ...

  5. Merge Sorted Array 解答

    Question Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array ...

  6. ubuntu 配置jdk

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

  7. tiny210(s5pv210)移植u-boot(基于 2014.4 版本号)——NAND 启动

    我们知道 s5pv210启动方式有非常多种,sd卡和nand flash 启动就是当中的两种,前面我们实现的都是基于sd卡启动,这节我们開始实现从nand flash 启动: 从 NAND 启动 u- ...

  8. 22. 使用 awk / grep / head / tail 命令进行文本 / 日志分析 (/home/D/acc.log)

    一.awk     # 统计 a-read-file 接口 中,接口耗时 超过 0.007 秒的有多少个请求     D@Demon ~]$ awk '$7>0.007' acc.log | w ...

  9. MySql命令——游标

    1.游标的概念 有时,需要在检索出来的行中前进或后退一行或多行.这就是使用游标的原因.游标(cursor)是一个存储在 MySql 服务器上的数据库查询,它不是一条 select 语句,而是被该语句检 ...

  10. SQLSERVER执行时间统计工具SQLQueryStress

    有时候需要检测一下SQL语句的执行时间,相信大家都会用SET STATISTICS TIME ON开关打开SQLSERVER内置的时间统计 SET STATISTICS TIME ON 不过这款小工具 ...