首页 技术 正文
技术 2022年11月14日
0 收藏 351 点赞 4,964 浏览 2988 个字

目录

约束:简单的说,就是创建表的时候,对表或者其中的列的属性的初始化或修改或删除。

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 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 约束

特点:

  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)
);

注意这里有坑:命名的时候像indexid这种可能是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 约束

特点:

  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 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

也可以致信进行交流 : https://www.shuzhiduo.com/A/xl56Ra2k5r/xiaochiyijiu@163.com

欢迎转载 , 但请指明出处  :  )


相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,083
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,558
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,407
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,180
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,817
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,900