SQL学习笔记:表的约束
约束:简单的说,就是创建表的时候,对表或者其中的列的属性的初始化或修改或删除。
NOT NULL约束
强制列不接受NULL
值
CREATE TABLE forLearn
( ID int NOT NULL,City varchar(255));
INDEX 索引
特点:
- 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
- 但是更新表会更新索引,所以Time更久。
- 一般仅在需要查找的列上做索引。
语句:
CREATE INDEX index_name ON forLearn (myID,city);#创建索引
DROP INDEX index_name ON forLearn; #删除索引
CHECK 约束
特点:
- 如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
- 如果对一个表定义 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 ForLearn4
ADD CHECK (_ID>0); #添加单列约束
ALTER TABLE ForLearn4
ADD CONSTRAINT City_Name CHECK (City='ShenZhen' and _Name='AsuraDong'); #添加多列约束
撤销约束
ALTER TABLE ForLearn4
DROP CHECK City_Name;
DEFAULT 约束
用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新记录。
创建时添加
CREATE TABLE forLearn
(
myID int not null,
city varchar(255) DEFAULT 'ShenZhen' #默认值设置为 ShenZhen
);
创建后添加
ALTER TABLE forLearn
ALTER myID SET DEFAULT 1;
撤销
ALTER TABLE forLearn
ALTER myID DROP DEFAULT;
UNIQUE 约束
特点:
- UNIQUE 约束唯一标识数据库表中的每条记录
- 每个表可以有多个 UNIQUE 约束
- 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 forLearn
ADD UNIQUE (City_id);#有括号
创建后添加约束集合(多列)
ALTER TABLE forLearn
ADD CONSTRAINT IndexOfName UNIQUE (City_index,City_name);
撤销UNIQUE约束(单列):
ALTER TABLE forLearn
DROP INDEX City_id; #无括号
撤销UNIQUE约束集合(多列):
ALTER TABLE forLearn
DROP INDEX IndexOfName;
PRIMARY KEY 约束
特点:
- 束唯一标识数据库表中的每条记录(和
UNIQUE
一样) - 对应列的值不能重复
- 对应列不能包含 NULL 值
- 只能有一个
PRIMARY KEY
约束(和UNIQUE
不一样) - 使用方法基本同
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 Persons
ADD PRIMARY KEY (P_Id);
创建后添加约束集合(多列)
ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName);
撤销primary约束
ALTER TABLE Persons
DROP 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 Orders
ADD CONSTRAINT fk_PerOrders #给一个名字,便于删除
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id);
撤销约束
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders;
欢迎进一步交流本博文相关内容:
博客园地址 : http://www.cnblogs.com/AsuraDong/
CSDN地址 : http://blog.csdn.net/asuradong
也可以致信进行交流 : xiaochiyijiu@163.com
欢迎转载 , 但请指明出处 : )
SQL学习笔记:表的约束的更多相关文章
- ORALCE PL/SQL学习笔记
ORALCE PL/SQL学习笔记 详情见自己电脑的备份数据资料
- SQL学习笔记
SQL(Structured Query Language)学习笔记 [TOC] Terminal登录数据库 1.登录mysql -u root -p ; 2.显示所有数据库show database ...
- Oracle之PL/SQL学习笔记
自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家 ...
- iOS学习笔记——AutoLayout的约束
iOS学习笔记——AutoLayout约束 之前在开发iOS app时一直以为苹果的布局是绝对布局,在IB中拖拉控件运行或者直接使用代码去调整控件都会发上一些不尽人意的结果,后来发现iOS在引入了Au ...
- Mysql学习(慕课学习笔记5)约束
约束类型: 1.NOT NULL (非空约束) 2.PRIMARY KEY(主键约束) 每张数据表只能存在一个主键 主键保证记录的唯一性 主键自动为NOT NULL (Auto_increment ...
- sql 学习笔记 档
从下面的内容 3c school 1:Sql 它分为两部分: 6 2:查询 7 3:插入: 9 4:数据库更新 UPDATE 9 5:删除 DELETE 10 6:Sql TOP 子句: 10 7 ...
- Oracle下SQL学习笔记
主机字符串:as sysdba alter user scott account unlock;//解锁scott,不会就谷歌检索 DML语句,增.删.查.改 select语句:熟悉表结构 desc ...
- SQL学习笔记六之MySQL数据备份和pymysql模块
mysql六:数据备份.pymysql模块 阅读目录 一 IDE工具介绍 二 MySQL数据备份 三 pymysql模块 一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测 ...
- [SQL] SQL学习笔记之基础操作
1 SQL介绍 SQL 是用于访问和处理数据库的标准的计算机语言.关于SQL的具体介绍,我们通过回答如下三个问题来进行. SQL 是什么? SQL,指结构化查询语言,全称是 Structured Qu ...
- 5-06使用Sql 语句为表添加约束
约束名的命名规则推荐采用:约束类型_约束列. 为用户表添加约束 ALTER TABLE UserInfo ADD CONSTRALNT PK_UserId PRIMATY REY(UserId) CO ...
随机推荐
- 第八周 Leetcode 44. Wildcard Matching 水题 (HARD)
Leetcode 44 实现一种类似正则表达式的字符串匹配功能. 复杂度要求不高, 调代码稍微费点劲.. 好像跟贪心也不太沾边, 总之 *把待匹配串分成若干个子串, 每一个子串尽量在模式串中靠前的部分 ...
- bzoj1778
高斯消元+矩阵的逆 来自popoqqq大神 求矩阵的逆:把I-T放在左边,P/Q*S放在右边,这样就形成了一个n*2n的矩阵,然后把左边高斯消元,右边就是求完逆的矩阵,其实就是ans,矩阵的逆跟乘法逆 ...
- 【172】outlook邮箱设置
参考:outlook 2013设置 参考:Outlook设置hotmail邮箱POP3和SMTP服务器 注意
- Spring Theme简单应用
Spring MVC特性里由一个是关于Spring Theme主题的应用,所以写了个Demo 1.这里先看项目结构(Meven项目) 2.所需的POM依赖 <dependency> < ...
- P4727 [HNOI2009]图的同构记数
传送门 如果我们把选出子图看成选出边,进而看成对边黑白染色,那么就是上一题的弱化版了,直接复制过来然后令\(m=2\)即可 不过直接交上去会T,于是加了几发大力优化 不知为何华丽的被小号抢了rank2 ...
- java程序死锁,3种方式快速找到死锁代码
java程序中出现死锁问题,如果不了解排查方法,是束手无策的,今天咱们用三种方法找到死锁问题. 运行下面代码 package com.jvm.visualvm; /** * <a href=&q ...
- (前缀和 内存分配)51NOD 1081 子段求和
给出一个长度为N的数组,进行Q次查询,查询从第i个元素开始长度为l的子段所有元素之和. 例如,1 3 7 9 -1,查询第2个元素开始长度为3的子段和,1 {3 7 9} -1.3 + 7 + 9 ...
- [C陷阱和缺陷] 第1章 词法“陷阱”
有感自己的C语言在有些地方存在误区,所以重新仔细把"C陷阱和缺陷"翻出来看看,并写下这篇博客,用于读书总结以及日后方便自身复习. 第1章 词法"陷阱" 1.1 ...
- 小白的python之路 序
计算机专科毕业,.net开发已有8年有余,中途断断续续,似懂非懂,积累了一些经验知识,但是不求甚解,属于那种一瓶不满半瓶子晃荡,这么一个状态. 主要从事web开发,涉及一些前端jq等,还有接口开发,搜 ...
- working hard to be a professional coder
1:read 2 : code 3 : 勤奋 4:技术栈 就前端主流技术框架的发展而言,过去的几年里发展极快,在填补原有技术框架空白和不足的同时也渐渐趋于成熟.未来前端在已经趋向成熟的技术方向上面将会 ...