您的位置:首页 > 数据库

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息