mysql常見的約束類型有哪些
6種mysql常見的約束:
1、非空約束()
非空約束用于確保當前列的值不為空值,非空約束只能出現在表對象的列上。
Null類型特征:所有的類型的值都可以是null,包括int、float等數據類型
2、唯一性約束()
唯一約束是指定table的列或列組合不能重復,保證數據的唯一性。
唯一約束不允許出現重復的值,但是可以為多個null。
同一個表可以有多個唯一約束,多個列組合的約束。
在創建唯一約束時,如果不給唯一約束名稱,就默認和列名相同。
唯一約束不僅可以在一個表內創建,而且可以同時多表創建組合唯一約束。
3、主鍵約束()PK
主鍵約束相當于唯一約束+非空約束的組合,主鍵約束列不允許重復,也不允許出現空值。
每個表最多只允許一個主鍵,建立主鍵約束可以在列級別創建,也可以在表級別創建。
當創建主鍵的約束時,系統默認會在所在的列和列組合上建立對應的唯一索引。
4、外鍵約束()FK
外鍵約束是用來加強兩個表(主表和從表)的一列或多列數據之間的連接的,可以保證一個或兩個表之間的參照完整性,外鍵是構建于一個表的兩個字段或是兩個表的兩個字段之間的參照關系。
創建外鍵約束的順序是先定義主表的主鍵,然后定義從表的外鍵。也就是說只有主表的主鍵才能被從表用來作為外鍵使用,被約束的從表中的列可以不是主鍵,主表限制了從表更新和插入的操作。
5、默認值約束()
若在表中定義了默認值約束,用戶在插入新的數據行時,如果該行沒有指定數據,那么系統將默認值賦給該列,如果我們不設置默認值,系統默認為NULL。
6、自增約束()
自增約束()可以約束任何一個字段,該字段不一定是字段,也就是說自增的字段并不等于主鍵字段。
但是約束的主鍵字段,一定是自增字段,即要與一起作用于同一個字段。
當插入第一條記錄時,自增字段沒有給定一個具體值,可以寫成/NULL,那么以后插入字段的時候,該自增字段就是從1開始,沒插入一條記錄,該自增字段的值增加1。當插入第一條記錄時,給自增字段一個具體值,那么以后插入的記錄在此自增字段上的值,就在第一條記錄該自增字段的值的基礎上每次增加1。
也可以在插入記錄的時候指定字段中不可重復的,不指定自增字段,而是指定其余字段進行插入記錄的操作。
mysql的約束有哪些?
1主鍵約束
2非空約束
3自定義約束check
4默認約束
5外鍵約束
本回答由網友推薦
怎樣在MySQL中使用檢查約束?
在建表的時候不需要設定檢查約束,只要把數據類型正確設定就可以了
約束是在程序里控制的,最好是在錄入進進行檢查,或在寫入時進行
檢查。只要你董得程序命令功能。錯在哪不確定,可能sex是字符型,你用了數字0、1。 可以確定的是,mysql手冊里寫的很清楚:“所有的存儲引擎均對check子句進行分析,但是忽略check子句。”
mysql完整性約束的作用
1.數據庫完整性約束能夠防止合法用戶使用數據庫時向數據庫中添加不合語義的數據。
2.利用基于DBMS的完整性控制機制來實現業務規則,易于定義,容易理解,而且可以降低應用程序的復雜性,提高應用程序的運行效率。同時,基于DBMS的完整性控制機制是集中管理的,因此比應用程序更容易實現數據庫的完整性。
3.合理的數據庫完整性設計,能夠同時兼顧數據庫的完整性和系統的效能。比如裝載大量數據時,只要在裝載之前臨時使基于DBMS的數據庫完整性約束失效,此后再使其生效,就能保證既不影響數據裝載的效率又能保證數據庫的完整性。
4.在應用軟件的功能測試中,完善的數據庫完整性有助于盡早發現應用軟件的錯誤。當某一列添加了主鍵約束后,那么這一列的數據就不能重復出現。這樣每行記錄中其主鍵列的值就是這一行的唯一標識。例如學生的學號可以用來做唯一標識,而學生的姓名是不能做唯一標識的,因為學習有可能同名。
主鍵列的值不能為NULL,也不能重復!
指定主鍵約束使用 KEY關鍵字完整性約束主要有實體完整性約束、參照完整性約束、函數依賴約束、統計約束四類。
實體完整性 實體完整性是指一個關系中所有主屬性(即主碼的屬性)不能取空值。所謂“空值”就是“不知道”或“無意義”的值。如主屬性取空值,就說明某個不可標識的實體,這與現實世界的應用環境相矛盾,因此這個實體一定不是完整的實體。
參照完整性約束 參照完整性約束是指參照關系中外碼的取值或者是空值(外碼的每個屬性均為空值)或者是取被參照關系中某個元組的主碼值。下面舉例說明。現有兩個關系模式:學生(學號,姓名,性別,專業號,年齡)和專業(專業號,專業名)。在實現參照完整性時要注意以下幾個問題:①外碼是否可以接受空值。因為外碼能否為空是依賴于應用環境的,如有兩個關系模式分別為選修(學號指定字段中不可重復的,課程好,成績)學生(學號,姓名,性別,年齡,所在系),選修關系中的外碼“學號”不能為空,如果為空,說明某個不知學號的學生選修了某門課程,這與學校的應用環境不符。②刪除被參照關系的原組時的考慮。有時需要刪除被參照關系的某個原組,而參照關系中又有若干原組的外碼值與被刪除的被參照關系中的主碼值相對應,這時要進行級聯刪除,即將參照關系中的所有外碼值與被參照關系中要刪除元組主碼值相對應的元組一起刪除,如果參照關系同時又是另一個關系的被參照關系則這種級聯刪除應該級聯刪除應該級聯下去。③修改被參照關系中主碼時的考慮。遇到這種情況時,做法同刪除被參照關系的元組類似,要做級聯修改,既修改被參照關系中主碼值的同時,用相同的方法修改參照關系中相應的外碼值。
函數依賴約束 大部分函數依賴約束都是隱含在關系模式結構中,特別是規范化程度較高的關系模式(如3nf或bcns)都由模式來保持函數依賴。在實際應用中,為了不使信息過于分離,一般不能過分地追求規范化。這樣在關系的字段間就可以存在一些函數要顯式地表示出來。
系統約束 即某個字段值與一個關系多個元組的統計值之間的約束關系。如,本部門經理的工資不得高于本部門職工的平均工資的5倍。其中職工的平均工資值是一個統計計算值。在許多場合,統計數據往往可以公開,而個別數據卻是保密的,但是個別數據值可以從統計數據推斷出來,所以要采取一定的防范措施防止數據泄密。
在sql 中,刪除外鍵約束時,將刪除強制引用完整性的要求。進行這個操作前需要對表的 alter 權限。
use ;
alter table dbo.
drop ;
你可以參考微軟官方文檔: