顧名思義,主要的鍵,primary key,在一張表中,有且只有乙個字段,裡面的值具有唯一性
建立主鍵
隨錶建立
系統提供了兩種增加主鍵的方式:
1、直接在需要當做主鍵的字段之後,增加primary key屬性來確定主鍵
2、在所有字段之後增加primary key選項:primary key(字段資訊)
表後增加
基本語法:alter table 表名 add primary key(字段);
檢視主鍵
方案1: 檢視表結構
方案2:檢視表的建立語句
刪除主鍵
基本語法:alter table 表名 drop primary key;
復合主鍵
主鍵約束
主鍵一旦增加,那麼對對應的字段資料有要求:
1、當前字段對應的資料不能為空。
2、當前字段對應的資料不能有任何重複
主鍵分類
主鍵分類採用的是主鍵所對應的字段的業務意義分類:
業務主鍵:主鍵所在的字段,具有業務意義(學生id,課程id)
邏輯主鍵:自然增長的整型(應用廣泛)
自動增長:auto increment,當給定某個欄位的屬性之後,該列的資料在沒有提供確定資料的時候,系統會根據之前已經存在的資料進行自動增加後,填充資料
通常自動增長用於邏輯主鍵
原理自動增長的原理:
1、在系統中有維護一組資料,用來儲存當前使用了自動增長屬性的字段,記住當前對應的資料值,在給定乙個指定的步長。
2、當使用者進行資料插入的時候,如果沒有給定值,系統在原始值上加上步長變成新的資料
3、自動增長的觸發:給定屬性的字段沒有提供值
4、自動增長只適用於數值
使用自動增長
基本語法:在字段之後增加乙個屬性 auto_increment;
插入資料:觸發自動增長,不能給定具體值(可以給null)
修改自動增長
1、檢視自增長:自增長一旦觸發使用後,會自動地在表選項中增加乙個選項(一張表最多只能擁有乙個自增長)
2、表選項可以通過修改表結構來實現
基本語法:alter table 表名 auto_increment = 值;
刪除和增加自動增長
刪除自增長:就是在字段屬性之後不再保留auto_increment,當使用者修改自增長所在欄位時,如果沒有看到auto_increment屬性,系統會自動清除該自增長。
刪除自增長:alter table my_auto modify id int;
增加自增長:alter table my_auto modify id int auto_increment;
初始設定
在系統中,有一組變數用來維護自增長的初始值和步長
檢視:show variables like 『auto_increment%』;
修改自增長步長和初始值:
set auto_increment_increment = 值;
set auto_increment_offset = 值;
細節問題
1、一張表中只有乙個自增長,:自增長會上公升到表選項中。
2、如果資料插入中沒有觸發自增長(給定了資料),那麼自增長不會表現,使用者指定資料之後,自增長不參與,但是自增長默默根據當前使用者設定的值初始化下乙個值。
3、自增長在修改的時候,值可以較大,但是不能比當前已有的自增長欄位的值小。
資料庫列屬性
列屬性 列屬性 真正約束欄位的是資料型別,但是資料型別的約束很單一需要一些額外的約束來更加保證資料的合法性。有以下屬性 1.空屬性 null 預設 和not null 不為空 雖然預設的資料庫基本都是字段為空,都是在實際開發的時候,盡可能保證所有的資料都不應該為空,因為空資料沒有意義,空資料沒有辦法...
MySQL資料庫之主表與從表
域完整性 引用完整性 自定義完整性 建立主表 drop table if exists stuinfo create table stuinfo id tinyint primary key,name varchar 20 engine innodb 建立從表,新增外來鍵 drop table if...
MySQL資料庫 列約束
mysql可以對插入的資料進行特定的驗證,只有符合格式才允許插入,否則認為非法的插入,列如乙個人的性別只能是男或女 1 主鍵約束 primary key 首要的 主要的 鍵 不重複,乙個資料表只能有乙個,可以加快資料的查詢速度。不確定的可以用null,主鍵約束不允許為null 2 非空約束 not ...