SQL Server 基础VII
2017-03-24 10:41
197 查看
一.constraint 约束
1.constraint用来对表格中的数据进行约束条件设置的
constraint和create table语句或alter table语句一起使用
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
column3 datatype constraint,
....
);
2.通常在SQL中使用的约束条件有
not null:确保一列中没有无效值null
unique:确保一列中的所有值没有相同的
primary key:是前两者的结合,是唯一标识表格中的每一行
foreign key:唯一标识另一个表格中的行
check:确保一列中的所有值满足特定条件
default:没有指定值时,设置一个列的默认值
index:快速从数据库中创建和检索数据
注:constraint分为列级别和表级别,分别约束列和表
二.not null
1.not null
约束一列中不可以有无效值
eg.新建一个表格,并且使ID,LastName和FirstName这三列不可以有无效值存在
CREATE TABLE Persons
(
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Age int
);
注:如果是一个已经存在的表格,则可以使用alter table语句约束一列不可以有无效值
2.unique
约束一列中的所有值都互不相同
eg.创建一个新的表格persons,约束ID列的值不能有相同值出现
CREATE TABLE Persons
(
ID int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
eg.同时约束ID和LastName两列,而且命名这个约束为UC_Person
CREATE TABLE Persons
(
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT UC_Person UNIQUE (ID,LastName)
);
3.增加约束
eg.对一个已经存在的表格persons,对ID列进行约束
ALTER TABLE Persons
ADD UNIQUE (ID);
eg.对一个已经存在的表格persons,同时约束ID和LastName两列,并且命名这个约束为UC_Person
ALTER TABLE Persons
ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);
4.删除约束
eg.删除一个叫UC_Person的约束
ALTER TABLE Persons
DROP CONSTRAINT UC_Person;
三.primary key
1.primary key 主键
约束列不可以有重复的值,而且不可以有无效值,但是一个表格中只可以有一个primary key
eg.创建一个新的表格persons,而且创建一个primary key约束ID列
CREATE TABLE Persons
(
ID int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
eg.创建一个primary key约束ID和LastName列,并且把这个primary key命名为PK_Person
CREATE TABLE Persons
(
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);
2.对已经存在的表格创建primary key
eg.对一个已经存在的表格,创建一个primary key,约束ID列
ALTER TABLE Persons
ADD PRIMARY KEY (ID);
eg.对一个已经存在的表格,创建一个primary key,并且命名为PK_Person,约束ID和LastName两列
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);
注:如果是在已经存在的表格中创建primary key,那么必须在创建这个表格之初时,已经把要设置primary key的列设置为不包含无效值
3.删除primary key
eg.删除名为PK_Person的primary key
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;
四.foreign key
1.foreign key 外键
foreign key用来连接两个表格,一个表格中的foreign key在另一个表格中就是primary key
eg.创建一个新的表格orders,并且创建一个外键在personID这一列
CREATE TABLE Orders
(
OrderID int NOT NULL PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);
eg.创建一个新的表格orders,并且创建一个外键在personID这一列,且外键的名称为FK_PersonOrder
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
此时的外键FK_PersonOrder可以多次使用
2.对已经存在的表格
eg.对已经存在的表格orders,创建一个外键在PersonID列上面
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
eg.对已经存在的表格orders,创建一个外键在PersonID列上面,且命名为FK_PersonOrder
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
此时的外键FK_PersonOrder可以多次使用
3.删除
eg.删除名叫FK_PersonOrder的外键
ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;
五.check
1.check 查询
对一列里的数据起限制范围
eg.新建一个表格persons,并且新建一个check在age列上,保证age列的值都是大于等于18岁
CREATE TABLE Persons
(
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int CHECK (Age>=18)
);
eg.新建一个表格persons,并且新建一个check在age和city两列上,保证age列的值都是大于等于18岁,city列的值都是sandnes,而且这个check名称为CHK_Person
CREATE TABLE Persons
(
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255),
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);
2.对已经存在的表格
eg.创建一个check在age列
ALTER TABLE Persons
ADD CHECK (Age>=18);
eg.创建一个check在age和city两列,而且check名称为CHK_PersonAge
ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');
3.删除check
eg.删除一个叫CHK_PersonAge的check
ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;
六.default
1.default 默认
给一列提供一个默认值
eg.创建一个新表格persons,且给city列一个默认值sandnes
CREATE TABLE Persons
(
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255) DEFAULT 'Sandnes'
);
eg.创建一个新表格orders,且给orderdate列一个默认系统值,但是采用getdate()功能
CREATE TABLE Orders
(
ID int NOT NULL,
OrderNumber int NOT NULL,
OrderDate date DEFAULT GETDATE()
);
2.对已经存在的表格
eg.已经存在的表格persons,给city列一个默认值sandnes
ALTER TABLE Persons
ALTER COLUMN City SET DEFAULT 'Sandnes';
3.删除default
eg.删除city列的默认值
ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT;
1.constraint用来对表格中的数据进行约束条件设置的
constraint和create table语句或alter table语句一起使用
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
column3 datatype constraint,
....
);
2.通常在SQL中使用的约束条件有
not null:确保一列中没有无效值null
unique:确保一列中的所有值没有相同的
primary key:是前两者的结合,是唯一标识表格中的每一行
foreign key:唯一标识另一个表格中的行
check:确保一列中的所有值满足特定条件
default:没有指定值时,设置一个列的默认值
index:快速从数据库中创建和检索数据
注:constraint分为列级别和表级别,分别约束列和表
二.not null
1.not null
约束一列中不可以有无效值
eg.新建一个表格,并且使ID,LastName和FirstName这三列不可以有无效值存在
CREATE TABLE Persons
(
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Age int
);
注:如果是一个已经存在的表格,则可以使用alter table语句约束一列不可以有无效值
2.unique
约束一列中的所有值都互不相同
eg.创建一个新的表格persons,约束ID列的值不能有相同值出现
CREATE TABLE Persons
(
ID int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
eg.同时约束ID和LastName两列,而且命名这个约束为UC_Person
CREATE TABLE Persons
(
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT UC_Person UNIQUE (ID,LastName)
);
3.增加约束
eg.对一个已经存在的表格persons,对ID列进行约束
ALTER TABLE Persons
ADD UNIQUE (ID);
eg.对一个已经存在的表格persons,同时约束ID和LastName两列,并且命名这个约束为UC_Person
ALTER TABLE Persons
ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);
4.删除约束
eg.删除一个叫UC_Person的约束
ALTER TABLE Persons
DROP CONSTRAINT UC_Person;
三.primary key
1.primary key 主键
约束列不可以有重复的值,而且不可以有无效值,但是一个表格中只可以有一个primary key
eg.创建一个新的表格persons,而且创建一个primary key约束ID列
CREATE TABLE Persons
(
ID int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
eg.创建一个primary key约束ID和LastName列,并且把这个primary key命名为PK_Person
CREATE TABLE Persons
(
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);
2.对已经存在的表格创建primary key
eg.对一个已经存在的表格,创建一个primary key,约束ID列
ALTER TABLE Persons
ADD PRIMARY KEY (ID);
eg.对一个已经存在的表格,创建一个primary key,并且命名为PK_Person,约束ID和LastName两列
ALTER TABLE Persons
ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);
注:如果是在已经存在的表格中创建primary key,那么必须在创建这个表格之初时,已经把要设置primary key的列设置为不包含无效值
3.删除primary key
eg.删除名为PK_Person的primary key
ALTER TABLE Persons
DROP CONSTRAINT PK_Person;
四.foreign key
1.foreign key 外键
foreign key用来连接两个表格,一个表格中的foreign key在另一个表格中就是primary key
eg.创建一个新的表格orders,并且创建一个外键在personID这一列
CREATE TABLE Orders
(
OrderID int NOT NULL PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);
eg.创建一个新的表格orders,并且创建一个外键在personID这一列,且外键的名称为FK_PersonOrder
CREATE TABLE Orders
(
OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);
此时的外键FK_PersonOrder可以多次使用
2.对已经存在的表格
eg.对已经存在的表格orders,创建一个外键在PersonID列上面
ALTER TABLE Orders
ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
eg.对已经存在的表格orders,创建一个外键在PersonID列上面,且命名为FK_PersonOrder
ALTER TABLE Orders
ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);
此时的外键FK_PersonOrder可以多次使用
3.删除
eg.删除名叫FK_PersonOrder的外键
ALTER TABLE Orders
DROP CONSTRAINT FK_PersonOrder;
五.check
1.check 查询
对一列里的数据起限制范围
eg.新建一个表格persons,并且新建一个check在age列上,保证age列的值都是大于等于18岁
CREATE TABLE Persons
(
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int CHECK (Age>=18)
);
eg.新建一个表格persons,并且新建一个check在age和city两列上,保证age列的值都是大于等于18岁,city列的值都是sandnes,而且这个check名称为CHK_Person
CREATE TABLE Persons
(
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255),
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);
2.对已经存在的表格
eg.创建一个check在age列
ALTER TABLE Persons
ADD CHECK (Age>=18);
eg.创建一个check在age和city两列,而且check名称为CHK_PersonAge
ALTER TABLE Persons
ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');
3.删除check
eg.删除一个叫CHK_PersonAge的check
ALTER TABLE Persons
DROP CONSTRAINT CHK_PersonAge;
六.default
1.default 默认
给一列提供一个默认值
eg.创建一个新表格persons,且给city列一个默认值sandnes
CREATE TABLE Persons
(
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255) DEFAULT 'Sandnes'
);
eg.创建一个新表格orders,且给orderdate列一个默认系统值,但是采用getdate()功能
CREATE TABLE Orders
(
ID int NOT NULL,
OrderNumber int NOT NULL,
OrderDate date DEFAULT GETDATE()
);
2.对已经存在的表格
eg.已经存在的表格persons,给city列一个默认值sandnes
ALTER TABLE Persons
ALTER COLUMN City SET DEFAULT 'Sandnes';
3.删除default
eg.删除city列的默认值
ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT;
相关文章推荐
- SQL Server基础概念集
- SQL Server 连接基础知识
- MS SQL入门基础:SQL Server 2000 与Internet-支持Web 应用的新特性
- SQL Server 2000基础教程——字符串函数(二)
- SQL Server 基础概念集
- SQL Server 基础概念集
- MS SQL入门基础:SQL Server 2000 的全局变量
- 剖析SQL Server 2005查询通知之基础篇
- SQL Server 2000基础教程——字符串函数
- SQL Server基础
- 数据库基础系列之三:Sql Server连接端口
- MS SQL入门基础:用户和安全性管理--SQL Server的登录认证
- MS SQL入门基础:SQL Server 的工具--SQL Mail
- [转]剖析SQL Server 2005查询通知之基础篇
- SQL Server 基础概念集
- PpLK: SQL Server基础和 Transact - SQL语言
- 剖析SQL Server 2005查询通知之基础篇
- MS SQL入门基础:SQL Server 2000 的关键字
- SQL Server 索引基础知识(2)----聚集索引,非聚集索引
- SQL Server 基础概念集