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

在这里列举出一些创建约束的形式,共参考(均在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. 转:Reddit排名算法工作原理

    http://www.aqee.net/how-reddit-ranking-algorithms-work/ 这是一篇继<Hacker News 排名算法工作原理>之后的又一篇关于排名算 ...

  2. LeetCode_Permutations II

    Given a collection of numbers that might contain duplicates, return all possible unique permutations ...

  3. Android自定义日历,可以点击、标注日期、节气、旧历等

    1. [图片] 9A59974C-47D4-47E3-8136-3F873EB9BBDC.jpg 2. [图片] left_arrow_pre.png 3. [图片] left_arrow.png 4 ...

  4. linux sed 使用

    sed对文本的处理很强大,并且sed非常小,参数少,容易掌握,他的操作方式根awk有点像.sed按顺序逐行读取文件.然后,它执行为该行指定的所有操作,并在完成请求的修改之后的内容显示出来,也可以存放到 ...

  5. mysql的日志

    是否启用了日志mysql>show variables like ‘log_bin’; 怎样知道当前的日志mysql> show master status; 看二进制日志文件用mysql ...

  6. 【转】DM8168添加DSP音频编解码算法--集成现有voice或audio codec

    本文根据“How to integrate audio/voice in RPE in EZSDK.pdf”整理,建议读者直接下载,参考原文件.原文件下载链接: http://download.csd ...

  7. Ajax 获取数据代码

    无刷新获取字符串: Html网页中: <script> //定义异步对象 var xmlHttp; //封装方法 function CreateXMLHTTP() { try { xmlH ...

  8. Unity 代码检测单击,双击,拖放

    今天小伙伴问我如何自己写一段代码检测 单击 双击 和 拖放.于是就写了这段代码O(∩_∩)O~ 代码如下: using UnityEngine; using System.Collections; p ...

  9. 一个简单的面试题 很多人也会懵 i++ 和++i的区别

    以下分别输出i的值分别为多少 NSInteger i = 0 ; NSLog(@"%ld",i++); NSLog(@"%ld",i++); NSLog(@&q ...

  10. Guice 学习(六)使用Provider注入服务( Provider Inject Service)

    1.定义接口 package com.guice.providerInject; import com.google.inject.ProvidedBy; public interface Servi ...