国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

SQL語句 -非空約束 - 唯一約束 - 主鍵約束 - 默認約束 -外鍵約束

這篇具有很好參考價值的文章主要介紹了SQL語句 -非空約束 - 唯一約束 - 主鍵約束 - 默認約束 -外鍵約束。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

約束

約束介紹和分類

約束的概念:

約束是作用于表中列上的規(guī)則,用于限制加入表的數(shù)據(jù)

約束的存在保證了數(shù)據(jù)庫中數(shù)據(jù)的正確性、有效性和完整性

約束的分類如下:

約束名稱 描述 關鍵字
非空約束 保證列中所有數(shù)據(jù)不能有null值 NOT NULL
唯一約束 保證列中所有數(shù)據(jù)各不相同 UNIQUE
主鍵約束 主鍵是一行數(shù)據(jù)的唯一標識, 要求非空且唯一 PRIMARY KEY
檢查約束 保證列中的值滿足某一條件 CHECK
默認約束 保存數(shù)據(jù)時, 未指定值則采用默認值 DEFAULT
外檢約束 外鍵用來讓兩個表的數(shù)據(jù)之間建立連接, 保證數(shù)據(jù)的一致性和完整性 FOREING KEY

注意: MySQL不支持檢查約束

非空約束

概念: 非空約束用于保證列中所有數(shù)據(jù)不能有NULL值

語法:

添加約束:

-- 創(chuàng)建表時添加非空約束
CREATE TABLE 表名(
   列名 數(shù)據(jù)類型 NOT NULL,); 

-- 建完表后添加非空約束
ALTER TABLE 表名 MODIFY 字段名 數(shù)據(jù)類型 NOT NULL;

刪除約束:

ALTER TABLE 表名 MODIFY 字段名 數(shù)據(jù)類型;

唯一約束

概念: 唯一約束用于保證列中所有數(shù)據(jù)各不相同

語法:

添加約束:

-- 創(chuàng)建表時添加唯一約束
CREATE TABLE 表名(
   列名 數(shù)據(jù)類型 UNIQUE [AUTO_INCREMENT],
   -- AUTO_INCREMENT: 當不指定值時自動增長); 
CREATE TABLE 表名(
   列名 數(shù)據(jù)類型,[CONSTRAINT] [約束名稱] UNIQUE(列名)
); 

-- 建完表后添加唯一約束
ALTER TABLE 表名 MODIFY 字段名 數(shù)據(jù)類型 UNIQUE;

刪除約束

ALTER TABLE 表名 DROP INDEX 字段名;

主鍵約束

概念:

主鍵是一行數(shù)據(jù)的唯一標識,要求非空且唯一

一張表只能有一個主鍵

語法:

添加約束: AUTO_INCREMENT表示主鍵自增

-- 創(chuàng)建表時添加主鍵約束
CREATE TABLE 表名(
   列名 數(shù)據(jù)類型 PRIMARY KEY [AUTO_INCREMENT],); 
CREATE TABLE 表名(
   列名 數(shù)據(jù)類型,
   [CONSTRAINT] [約束名稱] PRIMARY KEY(列名)
);

-- 建完表后添加主鍵約束
ALTER TABLE 表名 ADD PRIMARY KEY(字段名);

刪除約束:

ALTER TABLE 表名 DROP PRIMARY KEY;

默認約束

概念: 保存數(shù)據(jù)時,未指定值則采用默認值

語法:

添加約束:

-- 創(chuàng)建表時添加默認約束
CREATE TABLE 表名(
   列名 數(shù)據(jù)類型 DEFAULT 默認值,); 

-- 建完表后添加默認約束
ALTER TABLE 表名 ALTER 列名 SET DEFAULT 默認值;

刪除約束:

ALTER TABLE 表名 ALTER 列名 DROP DEFAULT;

案例練習

按照下面圖片中的要求, 為表添加合適的約束:

sql添加非空約束,MySql,sql,數(shù)據(jù)庫,mysql

語句演示:

CREATE TABLE emp (
	id INT PRIMARY KEY AUTO_INCREMENT,
	ename VARCHAR(50) NOT NULL UNIQUE,
	joindate DATE NOT NULL,
	salary DOUBLE(7,2) NOT NULL,
	bonus DOUBLE(7,2) DEFAULT 0
);

外鍵約束

概念: 外鍵用來讓兩個表的數(shù)據(jù)之間建立鏈接,保證數(shù)據(jù)的一致性和完整性

語法:

添加約束:

-- 創(chuàng)建表時添加外鍵約束
CREATE TABLE 表名(
   列名 數(shù)據(jù)類型,[CONSTRAINT] [外鍵名稱] FOREIGN KEY(外鍵列名) REFERENCES 主表(主表列名) 
); 

-- 建完表后添加外鍵約束
ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY (外鍵字段名稱) REFERENCES 主表名稱(主表列名稱);

刪除約束:

ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名稱;

案例練習

例如我們有如下兩張表, 員工表和部門表, 在沒有添加外鍵約束的時候, 是可以直接刪除部門表的研發(fā)部的;但是我們知道這是不合理的, 因為員工表中, 前三個員工是屬于研發(fā)部的, 在有員工屬于研發(fā)部的情況下應該不能刪除才合理;

我們可以通過外鍵約束解決這個問題, 將兩張表建立連接: 添加外鍵, emp表的dep_id關聯(lián)dept表的id主鍵;

sql添加非空約束,MySql,sql,數(shù)據(jù)庫,mysql

創(chuàng)建部門表(注意要先創(chuàng)建部門表), 將id設置為主鍵, 并添加兩個部門

-- 部門表
CREATE TABLE dept(
	id INT PRIMARY KEY AUTO_INCREMENT,
	dep_name varchar(20),
	addr varchar(20)
);

-- 添加兩個部門
INSERT INTO dept(dep_name, addr) VALUES('研發(fā)部','廣州'),('銷售部', '深圳');

創(chuàng)建員工表添加員工, 并為員工表emp添加外鍵約束

-- 員工表 
CREATE TABLE emp(
	id INT PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR(20),
	age INT,
	dep_id INT,

	-- 添加外鍵 dep_id,關聯(lián) dept 表的id主鍵
	CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id)
);

-- 添加員工,dep_id 表示員工所在的部門
INSERT INTO emp (NAME, age, dep_id) VALUES 
('張三', 20, 1),
('李四', 20, 1),
('王五', 20, 1),
('趙六', 20, 2),
('孫七', 22, 2),
('周八', 18, 2);

不需要可以刪除外鍵

-- 刪除外鍵
ALTER TABLE emp DROP FOREIGN KEY fk_emp_dept;

建表后, 也是可以繼續(xù)添加外鍵的文章來源地址http://www.zghlxwxcb.cn/news/detail-792149.html

-- 添加外鍵
ALTER TABLE emp ADD CONSTRAINT fk_emp_dept FOREIGN KEY(dep_id) REFERENCES dept(id);

到了這里,關于SQL語句 -非空約束 - 唯一約束 - 主鍵約束 - 默認約束 -外鍵約束的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包