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 数据 ...
随机推荐
- 使用QtCreator作为ROS调试器
如果你用过QtCreator,你一定会喜欢上它. 流畅的速度,强大的功能,优雅的外观,友好的界面,一切让人如此舒服.而且它支持从命令行作为调试器启动,只需加上-debug exe即可. 因此我想如果能 ...
- [LA] 3644 - X-Plosives [并查集]
A secret service developed a new kind of explosive that attain its volatile property only when a spe ...
- Could not open a connection to your authentication agent
执行ssh-add ~/.ssh/rsa 就会遇到上述错误了 解决方案: 先执行 eval `ssh-agent` (是-键上的那个`) 再执行 ssh-add ~/.ssh/rsa成功 ssh ...
- mysql use mysql hang
uat-db03:/root# mysql -A -uroot -p1234567 Warning: Using a password on the command line interface ca ...
- 【转】android cts failed items
原文网址:http://blog.csdn.net/linsa0517/article/details/19031479 Fail的一些修改 1.直接设置问题 estUnknownSourcesO ...
- statfs函数说明
函数: statfs 功能描述: 查询文件系统相关的信息. 用法: #include <sys/vfs.h> /* 或者 <sys/statfs.h> ...
- /proc/uptime
在Linux中,我们常常会使用到uptime命令去看看系统的运行时间,它与一个文件有关,就是/proc/uptime.这个文件里的两个参数所代表的意义如下. [root@app ~]#cat /pro ...
- Factorials 阶乘
Description N的阶乘写作N!表示小于等于N的所有正整数的乘积.阶乘会很快的变大,如13!就必须用32位整数类型来存储,70!即使用浮点数也存不下了.你的任务是找到阶乘最后面的非零位.举个例 ...
- 【POJ3299】Humidex(简单的数学推导)
公式题中已经给出,直接求解即可. #include <iostream> #include <cstdlib> #include <cstdio> #include ...
- jquery 自动跳出列表
先上效果图:当鼠标经过相亲会自动弹出取最新的10条数据