mysql-表完成性约束
生活随笔
收集整理的這篇文章主要介紹了
mysql-表完成性约束
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一 介紹
約束條件與數據類型的寬度一樣,都是可選參數
作用:用于保證數據的完整性和一致性
主要分為:
說明:
1. 是否允許為空,默認NULL,可設置NOT NULL,字段不允許為空,必須賦值 2. 字段是否有默認值,缺省的默認值是NULL,如果插入記錄時不給字段賦值,此字段使用默認值 sex enum('male','female') not null default 'male' age int unsigned NOT NULL default 20 必須為正值(無符號) 不允許為空 默認是20 3. 是否是key 主鍵 primary key 外鍵 foreign key 索引 (index,unique...)?
二 not null與default
是否可空,null表示空,非字符串
not null - 不可空
null - 可空
默認值,創建列時可以指定默認值,當插入數據時如果未主動設置,則自動添加默認值
create table tb1(
nid int not null defalut 2,
num int not null
)
?
三 unique
============設置唯一約束 UNIQUE=============== 方法一: create table department1( id int, name varchar(20) unique, comment varchar(100) );方法二: create table department2( id int, name varchar(20), comment varchar(100), constraint uk_name unique(name) );mysql> insert into department1 values(1,'IT','技術'); Query OK, 1 row affected (0.00 sec) mysql> insert into department1 values(1,'IT','技術'); ERROR 1062 (23000): Duplicate entry 'IT' for key 'name' not null+unique的化學反應 聯合唯一?
四 primary key
primary key字段的值不為空且唯一
一個表中可以:
單列做主鍵
多列做主鍵(復合主鍵)
但一個表內只能有一個主鍵primary key
單列主鍵 多列主鍵?
五 auto_increment
約束字段為自動增長,被約束的字段必須同時被key約束
View Code 步長increment與起始偏移量offset:auto_increment_increment,auto_increment_offset?
六 foreign key
員工信息表有三個字段:工號 ?姓名 ?部門
公司有3個部門,但是有1個億的員工,那意味著部門這個字段需要重復存儲,部門名字越長,越浪費
解決方法:
我們完全可以定義一個部門表
然后讓員工信息表關聯該表,如何關聯,即foreign key
示范?
?
輔助理解 #一對多或稱為多對一 三張表:出版社,作者信息,書一對多(或多對一):一個出版社可以出版多本書關聯方式:foreign key??
View Code 一夫多妻制#妻子表的丈夫id外鍵到丈夫表的id?
#多對多 三張表:出版社,作者信息,書多對多:一個作者可以寫多本書,一本書也可以有多個作者,雙向的一對多,即多對多關聯方式:foreign key+一張新的表?
View Code 單張表:用戶表+相親關系表,相當于:用戶表+相親關系表+用戶表 多張表:用戶表+用戶與主機關系表+主機表中間那一張存放關系的表,對外關聯的字段可以聯合唯一?
#一對一 兩張表:學生表和客戶表一對一:一個學生是一個客戶,一個客戶有可能變成一個學校,即一對一的關系關聯方式:foreign key+unique View Code 例一:一個用戶只有一個博客用戶表:id nameegonalexwupeiqi博客表 fk+uniqueid url name_idxxxx 1yyyy 3zzz 2例二:一個管理員唯一對應一個用戶用戶表:id user passwordegon xxxxalex yyyy管理員表:fk+unique id user_id password 1 xxxxx 2 yyyyy?
七 練習
練習1:賬號信息表,用戶組,主機表,主機組
?View Code?
練習2:
轉載于:https://www.cnblogs.com/52forjie/p/7825589.html
總結
以上是生活随笔為你收集整理的mysql-表完成性约束的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转)MySQL数据库的优化-运维架构师
- 下一篇: python面向对象编程类的成员总结