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

在这里列举出一些创建约束的形式,共参考(均在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. 痛并快乐的造轮子之旅:awk访问数据库之旅

    俺是一枚悲催的数据统计程序员,从先辈的手里接收了这样的代码: #! /bin/sh alias statdb="mysql -h 192.168.1.1 -u stat -paaa stat ...

  2. getResources().getXml()获取xml

    获取XML文件的基本思路是,通过getResources().getXml()获的XML原始文件,得到XmlResourceParser对象,通过该对象来判断是文档的开头还是结尾,是某个标签的开始还是 ...

  3. Codeforces 463D Gargari and Permutations

    http://codeforces.com/problemset/problem/463/D 题意:给出k个排列,问这k个排列的最长公共子序列的长度. 思路:只考虑其中一个的dp:f[i]=max(f ...

  4. Linux中C/C++头文件一览

    1.Linux中一些头文件的作用: #include <assert.h>       //ANSI C.提供断言,assert(表达式) #include <glib.h>  ...

  5. 《Programming WPF》翻译 第5章 2.内嵌样式

    原文:<Programming WPF>翻译 第5章 2.内嵌样式 每一个“可样式化”的WPF元素都有一个Style属性,可以在内部设置这个属性--使用XAML属性-元素的语法(在第一章讨 ...

  6. Swing透明和变换

    以前或许大家对一个UI组件是否透明没有那么关心,但是自从Vista的毛玻璃出现后,UI透明就成了大家非常关注的一个话题,于是Java阵营开始了铺天盖地的讨论如何实现透明的效果,但是很不幸的是无论组件如 ...

  7. 【转】将 Linux 应用程序移植到 64 位系统上

    原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软 ...

  8. ASP.NET应用程序和ASP.NET网站所共有的文件: App_Browsers 等

    App_Browsers  包含 ASP.NET 用于标识个别浏览器并确定其功能的浏览器定义 (.browser) 文件.有关更多信息,请参见浏览器定义文件架构(browsers 元素)和如何:在 A ...

  9. Linux文件系统挂载管理

    http://itercast.com/lecture/19 文件系统创建好之后需要挂载到系统中方可使用,windows.Mac系统会自动挂载文件系统,而Linux下一般需要手工挂载或配置系统进行自动 ...

  10. /etc/fstab 文件详解 及 /etc/mtab

    /etc/fstab 文件解释 文件fstab包含了你的电脑上的存储设备及其文件系统的信息.它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的唯一文件. 这个文件的全路径是/etc/fstab ...