SQL学习笔记:表的约束
来源:互联网 发布:淘宝童装排名 编辑:程序博客网 时间:2024/06/11 15:22
- NOT NULL约束
- INDEX 索引
- CHECK 约束
- DEFAULT 约束
- UNIQUE 约束
- PRIMARY KEY 约束
- FOREIGN KEY
约束:简单的说,就是创建表的时候,对表或者其中的列的属性的初始化或修改或删除。
NOT NULL约束
强制列不接受NULL
值
CREATE TABLE forLearn( ID int NOT NULL,City varchar(255));
INDEX 索引
特点:
1. 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
2. 但是更新表会更新索引,所以Time更久。
3. 一般仅在需要查找的列上做索引。
语句:
CREATE INDEX index_name ON forLearn (myID,city);#创建索引DROP INDEX index_name ON forLearn; #删除索引
CHECK 约束
特点:
1. 如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
2. 如果对一个表定义 CHECK 约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。
创建时添加
CREATE TABLE ForLearn(_ID int NOT NULL,City varchar(255),CHECK (_ID>0) #_ID 必须为正值);
CREATE TABLE ForLearn2(_ID int NOT NULL,City varchar(255),CONSTRAINT chk_learn CHECK (_ID>0 and City='BeiJing') #创建多列CHECK约束);
创建后添加
use dyx;CREATE TABLE ForLearn4(_ID int NOT NULL,City varchar(255),_Name varchar(255) NOT NULL);ALTER TABLE ForLearn4ADD CHECK (_ID>0); #添加单列约束ALTER TABLE ForLearn4ADD CONSTRAINT City_Name CHECK (City='ShenZhen' and _Name='AsuraDong'); #添加多列约束
撤销约束
ALTER TABLE ForLearn4DROP CHECK City_Name;
DEFAULT 约束
用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新记录。
创建时添加
CREATE TABLE forLearn(myID int not null,city varchar(255) DEFAULT 'ShenZhen' #默认值设置为 ShenZhen );
创建后添加
ALTER TABLE forLearnALTER myID SET DEFAULT 1;
撤销
ALTER TABLE forLearnALTER myID DROP DEFAULT;
UNIQUE 约束
特点:
1. UNIQUE 约束唯一标识数据库表中的每条记录
2. 每个表可以有多个 UNIQUE 约束
3. UNIQUE 约束的列不能有重复值
创建的时候添加约束(单列):
CREATE TABLE forLearn( ID int NOT NULL, City varchar(255),UNIQUE (ID));
创建时候添加约束集合(多列):
CREATE TABLE forLearn(City_id int NOT NULL,City_index int NOT NULL,City_name varchar(255),CONSTRAINT ID_INDEX UNIQUE (City_id,City_index));
注意这里有坑:命名的时候像
index
,id
这种可能是BIF或关键词的,一定要加_
来区分一下。而数据库又是大小写不敏感,所以下面这句话就会报语法错误(找了很久,记录一下)
sql
CREATE TABLE forLearn
(
City_id int NOT NULL,
Index int NOT NULL,
City_name varchar(255),
CONSTRAINT ID_INDEX UNIQUE (City_id,Index)
);
创建后添加约束(单列)
ALTER TABLE forLearnADD UNIQUE (City_id);#有括号
创建后添加约束集合(多列)
ALTER TABLE forLearnADD CONSTRAINT IndexOfName UNIQUE (City_index,City_name);
撤销UNIQUE约束(单列):
ALTER TABLE forLearnDROP INDEX City_id; #无括号
撤销UNIQUE约束集合(多列):
ALTER TABLE forLearnDROP INDEX IndexOfName;
PRIMARY KEY 约束
特点:
1. 束唯一标识数据库表中的每条记录(和UNIQUE
一样)
2. 对应列的值不能重复
3. 对应列不能包含 NULL 值
4. 只能有一个PRIMARY KEY
约束(和UNIQUE
不一样)
5. 使用方法基本同UNIQUE
。撤销有不同
创建添加约束(单列)
CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),PRIMARY KEY (P_Id));
创建添加约束集合(多列)
CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName));
创建后添加约束(单列)
ALTER TABLE PersonsADD PRIMARY KEY (P_Id);
创建后添加约束集合(多列)
ALTER TABLE PersonsADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName);
撤销primary约束
ALTER TABLE PersonsDROP PRIMARY KEY; #因为每个表只有一个primary key。所以直接drop即可
FOREIGN KEY
一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
两个示例表如下所示:(截图)
创建时添加约束
CREATE TABLE Orders(O_Id int NOT NULL,OrderNo int NOT NULL,P_Id int,PRIMARY KEY (O_Id), FOREIGN KEY (P_Id) REFERENCES Persons(P_Id) #声明foreign key);
创建后
ALTER TABLE OrdersADD CONSTRAINT fk_PerOrders #给一个名字,便于删除FOREIGN KEY (P_Id)REFERENCES Persons(P_Id);
撤销约束
ALTER TABLE OrdersDROP FOREIGN KEY fk_PerOrders;
欢迎进一步交流本博文相关内容:
博客园地址 : http://www.cnblogs.com/AsuraDong/
CSDN地址 : http://blog.csdn.net/asuradong
也可以致信进行交流 : xiaochiyijiu@163.com
欢迎转载 , 但请指明出处 : )
- SQL学习笔记:表的约束
- SQL 数据库 学习 010 表和约束的区别、check约束、default约束、unique约束、not null约束
- mysql学习笔记(二)SQL的约束
- SQL学习笔记--创建表、约束、修改表
- Sql server 2005学习笔记之约束
- SQL学习笔记4——约束
- SQL Server 学习笔记之约束
- sql 表的约束
- MYSQL学习之二 :SQL的约束
- SQL的约束(学习补充)
- sql server约束笔记
- 黑马程序员之SQL 学习笔记:非空约束对数据更新的影响
- MYSQL的学习笔记-----MYSQL的约束
- 【SQL Server学习笔记】表基础:数据类型、创建表、键、约束、表变量、
- 经典SQL学习笔记 (五)-创建表、约束、修改表
- SQL学习之:约束
- T-SQL数据库规则约束及默认值设置学习笔记
- sql语句学习笔记(8)-添加约束,实现数据完整性
- 深入了解 gRPC:协议
- 机器学习相关书籍
- POJ3009 解题报告
- 合并两个有序链表
- 杨辉三角
- SQL学习笔记:表的约束
- List ADT的两种实现方式:ArrayList和LinkedList
- C++ 从函数返回指针(函数外返回局部静态变量的地址)
- leetcode Two Sum 解决思路
- poj3693(后缀数组+lcp+rmq)
- 170718 Linux 文件路径切换与查找
- HDU
- 正则表达式常用验证
- laravel5.4开启sql调试