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 数据 ...
随机推荐
- 痛并快乐的造轮子之旅:awk访问数据库之旅
俺是一枚悲催的数据统计程序员,从先辈的手里接收了这样的代码: #! /bin/sh alias statdb="mysql -h 192.168.1.1 -u stat -paaa stat ...
- getResources().getXml()获取xml
获取XML文件的基本思路是,通过getResources().getXml()获的XML原始文件,得到XmlResourceParser对象,通过该对象来判断是文档的开头还是结尾,是某个标签的开始还是 ...
- Codeforces 463D Gargari and Permutations
http://codeforces.com/problemset/problem/463/D 题意:给出k个排列,问这k个排列的最长公共子序列的长度. 思路:只考虑其中一个的dp:f[i]=max(f ...
- Linux中C/C++头文件一览
1.Linux中一些头文件的作用: #include <assert.h> //ANSI C.提供断言,assert(表达式) #include <glib.h> ...
- 《Programming WPF》翻译 第5章 2.内嵌样式
原文:<Programming WPF>翻译 第5章 2.内嵌样式 每一个“可样式化”的WPF元素都有一个Style属性,可以在内部设置这个属性--使用XAML属性-元素的语法(在第一章讨 ...
- Swing透明和变换
以前或许大家对一个UI组件是否透明没有那么关心,但是自从Vista的毛玻璃出现后,UI透明就成了大家非常关注的一个话题,于是Java阵营开始了铺天盖地的讨论如何实现透明的效果,但是很不幸的是无论组件如 ...
- 【转】将 Linux 应用程序移植到 64 位系统上
原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软 ...
- ASP.NET应用程序和ASP.NET网站所共有的文件: App_Browsers 等
App_Browsers 包含 ASP.NET 用于标识个别浏览器并确定其功能的浏览器定义 (.browser) 文件.有关更多信息,请参见浏览器定义文件架构(browsers 元素)和如何:在 A ...
- Linux文件系统挂载管理
http://itercast.com/lecture/19 文件系统创建好之后需要挂载到系统中方可使用,windows.Mac系统会自动挂载文件系统,而Linux下一般需要手工挂载或配置系统进行自动 ...
- /etc/fstab 文件详解 及 /etc/mtab
/etc/fstab 文件解释 文件fstab包含了你的电脑上的存储设备及其文件系统的信息.它是决定一个硬盘(分区)被怎样使用或者说整合到整个系统中的唯一文件. 这个文件的全路径是/etc/fstab ...