91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL數據庫約束條件和自增長序列是什么

發布時間:2021-12-04 14:23:08 來源:億速云 閱讀:294 作者:iii 欄目:MySQL數據庫

這篇文章主要介紹“MySQL數據庫約束條件和自增長序列是什么”,在日常操作中,相信很多人在MySQL數據庫約束條件和自增長序列是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”MySQL數據庫約束條件和自增長序列是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

一、約束(constraint)

  約束就是在表上強制執行的一種校驗規則,當執行DML操作時,數據必須符合這些規則,如果不符合,將無法執行。

  約束的全稱:約束條件,也稱之為完整性約束條件。可以保證表中數據的完整性,保證數據之間的商業邏輯。

約束條件包括:

1)非空約束 (not null),簡稱NN

2)唯一性約束(unique),簡稱UK

3)主鍵約束(primary),簡稱PK

4)外鍵約束(foreign key),簡稱FK

5)檢查約束(check),簡稱CK                                                                                                                                                  

1、非空約束 (not null)

非空約束用于確保字段值不為null。默認情況下任何列都允許null值,但是業務邏輯可以會要求某些列不能去null值,因此使用非空約束。

建表時設置:

create table tName(colName1 Type  not null,....);

建表后設置非空約束(ps:前提表中相應字段不能有null值)

alter table tableName modify colName type not null;       

取消非空約束

alter table tableName modify colName type null;

2、唯一性約束(unique)

用于保證字段或者字段的組合不出現重復值,但是允許為null值

建表時設置

create table tableName(colName1 Type1 unique,........ );

建表后設置

alter table tableName modify colName Type unique;alter table tableName add constraint  constraintName  unique(colName);

查看表中的唯一性約束名稱

show keys from tableName;

刪除唯一性約束

drop index uniqueName on tableName;

3、主鍵約束(primary)

主鍵約束在功能上講,相當于非空約束和唯一性約束的組合。主鍵字段可以是單字段也可以是字段組合,即在主鍵約束下的字段不允許有null值,也不允許出現重復值。主鍵可以用來在表中唯一的確定一行記錄。一個表中只允許建立一個主鍵,其他約束條件沒有個數限制。

主鍵選取的原則

1)主鍵應是對系統無意義的數據,如序號

2)永遠也不要更新主鍵,讓主鍵除了用于唯一標識一行記錄之外,再無其他用途

3)主鍵不應包含動態變化的數據,如時間戳

4)主鍵應自動生成,不要人為干預,以免使它帶有除了唯一標識一行以外的意義

5)主鍵盡量建立在單列上

建表時創建

create table tableName(colName1 Type1  primary key,........);

建表后創建

alter table tableName modify colName Type primary key;

alter table tableName add constraint constraintName primary key(colName);

刪除主鍵

alter table tableName drop primary key;

4、外鍵約束(foreign key)

外鍵約束條件定義在兩張表的字段或一張表的兩個字段上,用于保證相關兩個字段的關系。即字段A如果設置外鍵約束,那么字段A的值

必須要依賴于字段B里已經存在的值,但是可以為null。而字段B要求是表中的主鍵約束。

字段A所在的表我們稱之為從表,字段B所在的表稱之為主表。如果主表中的一個值被從表依賴時,此時主表的該記錄不允許被刪除。

外鍵約束會降低數據庫的性能:

如果在設置外鍵約束的表上頻繁的進行DML操作,那么每次DML操作都會檢查主表,產生額外的開銷。再一個就是,外鍵約束會確定主從表的先后生成順序,有時會影響業務邏輯。因此,外鍵約束要看需求而定,要慎用。

建表時設置

create table tableName(empno int primary key,ename varchar(20) not null,mgr int,constraint fk_name foreign key(mgr) references tableName(empno));-------------------mgr是字段A,empno是字段B,字段B必須有主鍵約束

建表后設置

alter table tableName1 add constraint FK_name foreign key(字段A)  references  tableName2(字段B);

刪除外鍵約束

alter table tableName drop foreign key fk_name

5、檢查約束(check)

檢查約束條件用來強制在字段上的每個值都要滿足檢查約束的條件。

mysql的檢查約束注意事項:

1) 寫法:check(條件) 。mysql在語法上通過,但是在約束條件上沒有效果。其他數據庫如oracle有效

2) 如果是集合性質的條件,如 gender 必須('f','m')中的某一個值,可以使用枚舉來替代檢查約束

      寫法:enum('f','m')

建表時設置:

create table tableName(name varchar(20) not null,age int check(age >and age <20),---語法通過,但是約束條件無效gender enum('f','m')---------集合性質的寫法,此法有效);

建表后設置:

alter table tableName add CONSTRAINT enum_age check(age>18);---其他數據庫約束條件有效,mysql無效alter table tableName modify gender enum('f','m','n');--mysql有效

二、mysql的自增長"序列"

1、序列的概念

序列(sequence)是一種用來生成唯一數字值的數據庫對象。序列的值通常是按遞增或遞減順序自動生成,用于自動產生表中主鍵的值,是一種高效的獲取唯一鍵值的途徑。通常為主鍵服務,是一組有序的整數值,如1,2,3,4,5,.......................

2.mysql特點

mysql不支持序列機制,但是mysql的auto_increment可以達到與序列機制一樣的效果。我們稱之為自增長序列。

1)auto_increment 關鍵字,用來對有主鍵約束的字段做自增操作。2)自增長序列默認從1開始3)自增長序列的步數為14)可以設置起始數字

用法如下:

建表時設置1:create table tname(tid int primary key auto_increment,

 ......

 );建表時設置1:   create table tname(

 tid int primary key auto_incrementauto_increment=100;建表后設置:alter table tableName auto_increment=100;取消自增長:alter table tablenName change colName colName Type unsigned not null;

3、函數:last_insert_id();

作用:獲取序列最后一次的值。select last_insert_id();

到此,關于“MySQL數據庫約束條件和自增長序列是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玛纳斯县| 墨竹工卡县| 天气| 湖南省| 苏尼特左旗| 南平市| 泰州市| 宜都市| 景德镇市| 安溪县| 通榆县| 沧州市| 磐石市| 阿图什市| 彰化市| 文化| 祁连县| 定陶县| 永昌县| 民丰县| 长宁区| 神池县| 荆州市| 呼图壁县| 社旗县| 三穗县| 灵武市| 阿克苏市| 五家渠市| 张北县| 屏东县| 女性| 景洪市| 修文县| 安庆市| 如皋市| 桓仁| 上犹县| 嘉义市| 水城县| 新巴尔虎左旗|