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 数据 ...
随机推荐
- MyFirstStruts2
package com.sdlc.action; public class HelloWorldAction { private String msg; public void setMessage( ...
- dwz分页实现分析
dwz给我们提供了一个很好的列表UI 我对它的分析后将页面分为四个部分 <form id="pagerForm" method="post" action ...
- UML--核心元素之业务实体
如果说参与者和用例描述了我们在这个问题领域中达到什么样的目标,那么业务实体就描述了我们使用什么来达到业务目标以及通过什么来记录这个业务目标. 如果把问题领域比喻成一幢大楼的话,业务实体就是构成这幢大楼 ...
- linux网络编程之TCP/IP基础
(一):TCP/IP协议栈与数据包封装 一.ISO/OSI参考模型 OSI(open system interconnection)开放系统互联模型是由ISO(International Organi ...
- hdu 5312 Sequence(数学推导+线性探查(两数相加版))
Problem Description Today, Soda has learned a sequence whose n-th (n≥) item )+. Now he wants to know ...
- 页面动态数据的滚动效果——jquery滚动组件(vticker.js)
<script language="javascript" src="lirms/Test/jquery-1.4.2.js"></script ...
- ABAP - 日期格式转换 & ABAP经常使用日期处理函数
ABAP - 日期格式转换 如今提供下面一些日期格式转换的函数: Below are several FMs which can be used to convert date format. 1. ...
- Codeforces 466 E. Information Graph
并查集.... E. Information Graph time limit per test 1 second memory limit per test 512 megabytes input ...
- 飘逸的python - hack输出流便于调试
当项目有很多文件时,要找出控制台的输出是在哪里print出来的很麻烦,不过这事对于强大的python来说小菜一碟. 先上代码和效果,再说明. import sys,traceback class my ...
- Https协议简析及中间人攻击原理
1.基础知识 1.1 对称加密算法 对称加密算法的特点是加密密钥和解密密钥是同一把密钥K,且加解密速度快,典型的对称加密算法有DES.AES等 ...