中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

昆明大型網(wǎng)站建設(shè)東莞網(wǎng)絡(luò)推廣及優(yōu)化

昆明大型網(wǎng)站建設(shè),東莞網(wǎng)絡(luò)推廣及優(yōu)化,掌網(wǎng)站開發(fā)的基本流程,寶安中心區(qū)范圍【MySQL】第十七部分 約束 文章目錄【MySQL】第十七部分 約束17. 約束17.1 約束的分類17.2 非空約束17.3 唯一性約束17.4 主鍵約束17.5 自增列約束17.6 外鍵約束17.7 默認(rèn)約束17.8 check約束總結(jié)17. 約束 約束: 可以在創(chuàng)建表的時(shí)候規(guī)定約束,也可以在表創(chuàng)建之后添加,約束顧名思…

【MySQL】第十七部分 約束


文章目錄

  • 【MySQL】第十七部分 約束
  • 17. 約束
    • 17.1 約束的分類
    • 17.2 非空約束
    • 17.3 唯一性約束
    • 17.4 主鍵約束
    • 17.5 自增列約束
    • 17.6 外鍵約束
    • 17.7 默認(rèn)約束
    • 17.8 check約束
  • 總結(jié)


17. 約束

約束: 可以在創(chuàng)建表的時(shí)候規(guī)定約束,也可以在表創(chuàng)建之后添加,約束顧名思義就是限制條件

17.1 約束的分類

單列約束:每個(gè)約束只約束一列

多列約束:每個(gè)約束可約束多列數(shù)據(jù)

列級(jí)約束:只能作用在一個(gè)列上,跟在列的定義后面

表級(jí)約束:可以作用在多個(gè)列上,不與列一起,而是單獨(dú)定義


17.2 非空約束

添加非空約束

# 1. 在創(chuàng)建表的時(shí)候添加非空約束
CREATE TABLE test1(id INT NOT NUll,name VARCHAR(10) NOT NULL,salary DECIMAL(10,2)
);# 2. 表創(chuàng)建后添加非空約束
ALTER TABLE test1
MODIFY salary DECIMAL(10,2) NOT NULL;

刪除非空約束

ALTER TABLE test1
MODIFY salary DECIMAL(10,2);

17.3 唯一性約束

知識(shí)點(diǎn):

  1. 同一個(gè)表可以有多個(gè)唯一約束
  2. 唯一約束可以是某一個(gè)列的值唯一,也可以多個(gè)列組合的值唯一
  3. 唯一性約束允許列值為空
  4. 在創(chuàng)建唯一約束的時(shí)候,如果不給唯一約束命名,就默認(rèn)和列名相同
  5. MySQL會(huì)給唯一約束的列上默認(rèn)創(chuàng)建一個(gè)唯一索引
  6. 唯一約束可以使用表級(jí)約束的寫法,上述的非空約束是不可以的

添加唯一約束

# 表級(jí)約束寫法:
create table 表名稱(字段名  數(shù)據(jù)類型,[constraint 約束名] UNIQUE(字段名,字段名)
);# 1. 在創(chuàng)建表的時(shí)候添加唯一約束
CREATE TABLE test2
(id INT UNIQUE, # (這種就是列級(jí)寫法)name VARCHAR(10)
);# 2. 在創(chuàng)建表的時(shí)候使用表級(jí)約束寫法
CREATE TABLE test3
(id INT,name VARCHAR(10),CONSTRAINT id_uni UNIQUE(id) 
);CREATE TABLE test4
(id INT,name VARCHAR(10),# 將id和name組合約束,表示只有當(dāng)id和name都重復(fù)才會(huì)報(bào)錯(cuò),否則都符合條件CONSTRAINT id_name_uni UNIQUE(id,name) # 多列約束
);# 3.在建表后添加唯一約束
ALTER TABLE test4 
ADD UNIQUE(name);# 4.在建表后添加唯一約束
ALTER TABLE test3
MODIFY name VARCHAR(10) UNIQUE;

刪除唯一約束

上述說過因?yàn)?strong>添加唯一性約束的列上也會(huì)自動(dòng)創(chuàng)建唯一索引,所以刪除唯一約束只能通過刪除唯一索引

# 通過該命令可以查看指定表中有哪些約束
SELECT * FROM information_schema.table_constraints WHERE table_name = '表名'; # 也可以通過該命令查看表的索引
SHOW INDEX FROM 表名稱;ALTER TABLE test3
DROP INDEX id_uni

17.4 主鍵約束

主鍵約束相當(dāng)于唯一約束和非空約束的組合,主鍵約束列不允許重復(fù),也不允許出現(xiàn)空值, 注意:

  1. 一個(gè)表當(dāng)中最多只能由一個(gè)主鍵約束,建立主鍵約束可以在在列級(jí)創(chuàng)建,也可以在表級(jí)創(chuàng)建
  2. 主鍵約束可以對(duì)應(yīng)一列或者多列(和上述唯一約束中說的多列約束一樣)
  3. 主鍵約束不需要去取約束名,MySQL的主鍵名總是PRIMARY
  4. 創(chuàng)建主鍵約束時(shí), 系統(tǒng)默認(rèn)會(huì)在所在的列或列組合上建立對(duì)應(yīng)的主鍵索引,如果刪除主鍵約束了,主鍵約束對(duì)應(yīng)的索引就自動(dòng)刪除了。

添加主鍵約束

# 1. 創(chuàng)建表時(shí)添加主鍵約束
CREATE TABLE test1
(id INT PRIMARY KEY ,name VARCHAR(10)
);# 2. 創(chuàng)建表時(shí)添加主鍵約束(表級(jí)寫法)
CREATE TABLE test2
(id INT,name VARCHAR(10),PRIMARY KEY(id)
);CREATE TABLE test3
(id INT,name VARCHAR(10),PRIMARY KEY(id,name)
);# 3. 表創(chuàng)建后添加
ALTER TABLE test3
MODIFY id INT PRIMARY key;# 4. 表創(chuàng)建后添加
ALTER TABLE test4
ADD PRIMARY KEY(id);

刪除主鍵約束

ALTER TABLE test5
DROP PRIMARY KEY;

17.5 自增列約束

使用的要求:

  1. 一個(gè)表中只能有一個(gè)自增列
  2. 自增列約束必須是主鍵列或者唯一鍵列
  3. 約束列的數(shù)據(jù)類型必須是整數(shù)類型
  4. 如果自增列指定了 0 和 null,會(huì)在當(dāng)前最大值的基礎(chǔ)上自增;如果自增列手動(dòng)指定了具體值,直接賦值為具體值。

添加自增約束

# 1. 創(chuàng)建表時(shí)添加自增約束
CREATE TABLE test5 
(id INT PRIMARY KEY auto_increment,name VARCHAR(10)
);INSERT INTO test5(name)
VALUES('a'),('b');# 2. 建表后添加自增約束
ALTER TABLE test6
MODIFY id INT auto_increment;

刪除自增約束

ALTER TABLE test6
MODIFY id INT;

17.6 外鍵約束

主表(父表):被引用的表,被參考的表

從表(子表):引用別人的表,參考別人的表

例如:員工表的員工所在部門這個(gè)字段的值要參考部門表:部門表是主表,員工表是從表。

注意點(diǎn):

  1. 如果想要指定外鍵約束的話,需要先創(chuàng)建主表,在創(chuàng)建從表
  2. 從表的外鍵列,必須參考主表中的主鍵列或者唯一約束列
  3. 從表外鍵列對(duì)應(yīng)主表的主鍵列或唯一約束列,二者數(shù)據(jù)類型必須要一致
  4. 刪除表的時(shí)候先刪除從表,再刪除主表
  5. 一個(gè)表可以建立多個(gè)外鍵約束

添加外鍵約束

# 語法:
create table 從表名稱(字段1  數(shù)據(jù)類型  primary key,字段2  數(shù)據(jù)類型,[CONSTRAINT <外鍵約束名稱>] FOREIGN KEY(從表的某個(gè)字段名) references 主表名 (被參考字段名)
);ALTER TABLE 從表名 ADD [CONSTRAINT 約束名] FOREIGN KEY (從表的某個(gè)字段名) REFERENCES 主表名(被引用字段名);# 1. 創(chuàng)建表時(shí)添加外鍵約束
CREATE TABLE dep
(d_id INT PRIMARY KEY,d_name VARCHAR(12)
);CREATE TABLE emp
(e_id INT PRIMARY KEY,e_name VARCHAR(10),department_id INT,FOREIGN KEY (department_id) REFERENCES dep(d_id)
);# 2. 建表后添加外鍵約束
ALTER TABLE emp
ADD FOREIGN KEY(department_id) REFERENCES dep(d_id) ;

刪除外鍵約束

# 第一步先查看約束名和刪除外鍵約束
SELECT * FROM information_schema.table_constraints WHERE table_name = '表名稱';ALTER TABLE 從表名 DROP FOREIGN KEY 外鍵約束名;# 第二步查看索引名和刪除索引
SHOW INDEX FROM 表名稱; #查看某個(gè)表的索引名ALTER TABLE 從表名 DROP INDEX 索引名;

約束關(guān)系是針對(duì)雙方的

  • 添加了外鍵約束后,主表的修改和刪除數(shù)據(jù)受約束
  • 添加了外鍵約束后,從表的添加和修改數(shù)據(jù)受約束
  • 在從表上建立外鍵,要求主表必須存在
  • 刪除主表時(shí),要求從表從表先刪除,或?qū)谋碇型怄I引用該主表的關(guān)系先刪除

17.7 默認(rèn)約束

給某個(gè)字段設(shè)置默認(rèn)值,如果此字段沒有顯式賦值,則賦值為默認(rèn)值。

添加默認(rèn)約束

# 1. 創(chuàng)建表時(shí)添加默認(rèn)約束
CREATE TABLE test1
(id INT PRIMARY KEY auto_increment,name VARCHAR(10),salary DECIMAL(10,2) NOT NULL DEFAULT 2000,gender CHAR DEFAULT '男'
);# 2. 建表后添加默認(rèn)約束
# 如果這個(gè)字段原來有非空約束,還想保留非空約束,那么在加默認(rèn)值約束時(shí),還得保留非空約束,否則非空約束就被刪除了,切記!!!!!!
ALTER table test2
MODIFY gender char(5) DEFAULT 'male' NOT NULL;

刪除默認(rèn)約束

ALTER table test2
MODIFY gender char(5) NOT NULL;

17.8 check約束

MySQL 5.7 不支持

check約束對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),看是否滿足預(yù)設(shè)的條件

CREATE TABLE test1
(id INT PRIMARY KEY,name VARCHAR(10),salary DECIMAL(10,2) CHECK(salary > 3000)
);

總結(jié)

以上就是今天要講的內(nèi)容,希望對(duì)大家有所幫助!!!

http://www.risenshineclean.com/news/51334.html

相關(guān)文章:

  • 網(wǎng)站設(shè)計(jì)風(fēng)格有哪幾種網(wǎng)站服務(wù)器查詢工具
  • 推廣之家邀請(qǐng)碼江西短視頻seo搜索報(bào)價(jià)
  • 唐山網(wǎng)站建設(shè)拓seo知識(shí)總結(jié)
  • 如何學(xué)做網(wǎng)頁做優(yōu)化的網(wǎng)站
  • 網(wǎng)站制作公司哪家專業(yè)免費(fèi)私人網(wǎng)站建設(shè)平臺(tái)
  • 網(wǎng)站沒有備案seo怎么優(yōu)化武漢廠商
  • 企業(yè)做網(wǎng)站的公司有哪些游戲推廣員平臺(tái)
  • 嵐山網(wǎng)站建設(shè)公司南昌seo公司
  • 廣州正規(guī)網(wǎng)站建設(shè)公司產(chǎn)品市場營銷策劃書
  • 做美圖+網(wǎng)站有哪些可以免費(fèi)做網(wǎng)站推廣的平臺(tái)
  • 個(gè)人風(fēng)采網(wǎng)站制作在線查網(wǎng)站的ip地址
  • django做的網(wǎng)站安全嗎seo 專業(yè)
  • 上饒網(wǎng)站開發(fā)2021百度熱搜年度榜
  • dede網(wǎng)站主頁打不開百度域名注冊
  • 政府部門網(wǎng)站建設(shè)意義小網(wǎng)站
  • 免費(fèi)一級(jí)域名注冊網(wǎng)站上海seo優(yōu)化公司
  • 焦作官網(wǎng)網(wǎng)站推廣工具seo百度站長工具查詢
  • 達(dá)美網(wǎng)站建設(shè)西安網(wǎng)站設(shè)計(jì)
  • 企業(yè)信息系統(tǒng)河南百度優(yōu)化seo
  • PK10如何自己做網(wǎng)站網(wǎng)絡(luò)營銷環(huán)境的分析主要是
  • 用win2003做網(wǎng)站市場營銷計(jì)劃方案
  • 臨沂企業(yè)網(wǎng)站建設(shè)seo站外優(yōu)化最主要的是什么
  • 公司網(wǎng)頁如何免費(fèi)制作seo分析工具
  • 凡科網(wǎng)站建站后 怎么編輯自己的代碼源如何創(chuàng)建一個(gè)自己的網(wǎng)站
  • 網(wǎng)上商城網(wǎng)站建設(shè)方案互聯(lián)網(wǎng)優(yōu)化是什么意思
  • 銘萬做網(wǎng)站怎么樣百度識(shí)圖在線
  • 網(wǎng)站頁面做多寬百度不能搜的十大禁詞
  • 北京專業(yè)網(wǎng)站開發(fā)公司湖南seo推廣多少錢
  • 江門建設(shè)建筑網(wǎng)站企業(yè)網(wǎng)站seo排名優(yōu)化
  • 南京網(wǎng)站制作公司南京樂識(shí)專心地推拉新接單平臺(tái)