sql 添加约束
在表中添加约束,基本常用的有两种类型,一个是创建表时同时添加约束,另一个是创建好表通过修改表添加约束,在这里是创建表时同时添加约束,但是有两种不同的用写法。
在这里列举出一些创建约束的形式,共参考(均在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 添加约束的更多相关文章
- SQL语句创建数据库,SQL语句删除数据库,SQL语句创建表,SQL语句删除表,SQL语句添加约束,SQL语句删除约束
创建数据库: CREATE DATABASE Test --要创建的数据库名称 ON PRIMARY ( --数据库文件的具体描述 NAME='Test_data', --主数据文件的逻辑名称 FIL ...
- sql语句添加约束
sql语句添加约束 --主键约束(Primary Key constraint):要求主键列的数据唯一,并且不允许为空. --唯一约束(Unique Constraint):要求该列唯一,允许为空,但 ...
- Sql语句在SqlServer中创建数据库、表格并添加约束
通过Sql语句来创建数据库与架构 创建数据库 数据库的创建首先是要引用主数据库的,需要在master数据库的环境下进行创建.大致的语法如下: -- 使用master数据库 use master -- ...
- 使用SQL语句向已有数据表添加约束
如果向存在数据的表里添加约束,有可能会出现数据不符合检查约束而造成添加约束失败. 如: 这是一个表,为身份证号添加检查约束. USE DEmo--指向当前操作的数据库 GO ALTER TABLE E ...
- 5-06使用Sql 语句为表添加约束
约束名的命名规则推荐采用:约束类型_约束列. 为用户表添加约束 ALTER TABLE UserInfo ADD CONSTRALNT PK_UserId PRIMATY REY(UserId) CO ...
- olacle数据库员工表的创建,及插入数据,添加约束,删除列,查询数据的sql语句
---删除原有的员工表drop TABLE employee;---创建员工表CREATE TABLE employee ( empno NUMBER(4) NOT NULL, ...
- Mysql通过sql语句添加约束和查看约束
一:添加约束 1.添加唯一约束:alter table student add constraint uk_name unique(name); 2.添加外键约束: alter table 表名 ad ...
- SQL PRIMARY KEY 约束\SQL FOREIGN KEY 约束\SQL CHECK 约束
SQL PRIMARY KEY 约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录. 主键必须包含唯一的值. 主键列不能包含 NULL 值. 每个表都应该有一个主键,并且每个表只能有一个主 ...
- SQL CREATE TABLE 语句\SQL 约束 (Constraints)\SQL NOT NULL 约束\SQL UNIQUE 约束
CREATE TABLE 语句 CREATE TABLE 语句用于创建数据库中的表. SQL CREATE TABLE 语法 CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据 ...
随机推荐
- replace 全局替换 和 数组去空
<script> /*var str = 'a,b,dhhhh,d'; str = str.replace(/h/g,'j'); alert(str);*/ </script> ...
- Swift UI
概述 Apple近日发布了Swift编程语言,Swift是供iOS和OS X应用编程的新编程语言.相信很多开发者都在学习这门新语言. 废话不多说,下面我就来学习使用Swift创建一个简单的UI应用 ...
- 开心菜鸟学习系列笔记-----Javascript(1)
js 一些常见的使用方法 // target : 不管是否出现冒泡,他都是代表最开始引发事件的对象 // this : 是指当前函数. //ie 事件对象 : window ...
- Codeforces 414B Mashmokh and ACM
http://codeforces.com/problemset/problem/414/B 题目大意: 题意:一个序列B1,B2...Bl如果是好的,必须满足Bi | Bi + 1(a | b 代表 ...
- Could not open a connection to your authentication agent
执行ssh-add ~/.ssh/rsa 就会遇到上述错误了 解决方案: 先执行 eval `ssh-agent` (是-键上的那个`) 再执行 ssh-add ~/.ssh/rsa成功 ssh ...
- java设计模式--行为型模式--模板方法
什么是模板方法,这个有待考虑,看下面: 模板方法 概述 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中. TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步 ...
- 阵列卡,组成的磁盘组就像是一个硬盘,pci-e扩展出sata3.0
你想提升性能,那么组RAID0,主板上的RAID应该是软RAID,肯定没有阵列卡来得稳定.如果你有闲钱,可以考虑用阵列卡. 不会的.即使不能起到RAID的作用,起码也可以当作直接连接了2个硬盘.不会影 ...
- shell脚本中局部变量local
shell脚本中局部变量 在shell中定义函数可以使代码模块化,便于复用代码.不过脚本本身的变量和函数的变量的作用域问题可能令你费解,在这里梳理一下这个问题. (1)Shell脚本中定义的变量是gl ...
- mysql5.5 无法创建实例,error 16001
今天想用jdbc做个小程序,结果发现好久不用的mysql不好用了,我装的是社区版(win7)环境下,按理说不可能出问题,找了一堆解决方案都没解决,准备重装的时候想把mysql服务停了,直接在dos输入 ...
- linux文件权限整理
网上对linux文件权限的已经很多,不过还是要自己整理一下,不然每次都要查资料. linux下所有东西都是文件,包括设备,所以这里的文件也包括文件夹. 先是查看文件权限:ls -lh xzc@xzc- ...