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 数据 ... 
随机推荐
- LeetCode_Insert Interval
			Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ... 
- key转成pvf
			https://www.godaddy.com/help/converting-an-exported-pfx-code-signing-file-to-pvk-and-spc-files-using ... 
- Navicat_Preminum
			一. 安装 参考http://blog.csdn.net/longyuhome/article/details/79206041. 软件准备• [OYKSOFT.COM]navicat11.0.8_p ... 
- Berserk Rook
			Berserk Rook As you may know, chess is an ancient game for which almost everyone has at least a basi ... 
- POJ 2752 Seek the Name, Seek the Fame  (KMP next 数组 变形)
			题意:给一个字符串S,判断在什么下标的时候,前缀和后缀相等,输出前缀和后缀相等的点. 分析:next数组的一种很巧妙的用法 next数组表示的意义是当前下标前面k字符和开头的前面k个字符相等 所以就会 ... 
- Smallest Rectangle Enclosing Black Pixels 解答
			Question An image is represented by a binary matrix with 0 as a white pixel and 1 as a black pixel. ... 
- js相对定位
			效果图: 
- 谷歌Cartographer学习(2)-原理阐述与源码解析
			最近终于写完了毕业论文.想仔细研究下Cartographer.无奈自己学识有限,先看下网上大牛的解析,作一个汇总. 一.泡泡机器人原创专栏-cartographer理论及实践浅析 http://mp. ... 
- java技术学习网址收藏
			Bootstrap:http://www.runoob.com/bootstrap/bootstrap-intro.html AngularJS : http://www.runoob.com/ang ... 
- JBoss AS 7性能调优(三)
			原文:http://www.mastertheboss.com/jboss-performance/jboss-as-7-performance-tuning/page-4 调优Webserver线程 ... 
