約束:
一、概念:對錶中的資料進行限定,保證輸的格式正確性、有效性和完整性。
二、分類:
1、主鍵約束:primary key
(1)注意:
a.主鍵預設隱含非空條件和唯一條件
b.一張表只能有乙個字段為主鍵。
c.主鍵就是表中記錄的唯一標識。
(2)建立表時新增主鍵約束。
create table stu(
id int primary key,
`name` varchar(20)
);(3)刪除主鍵約束
alter table stu drop primary key;
(4)建立表後天劍主鍵約束
alter table stu modify id int primary key;
2、自動增長
注意:
a.自動增長 一般 是配合主鍵一起使用。
b.自動增長在手動新增是可以寫null,它會自動進行累進。
c.如果手動插入乙個值,那以後自動增長就會在此數值上增加,哪怕把所有數值都刪除,也會如此。
(1)建立是新增自動增長
create table stu(
id int primary key auto_increment,
`name` varchar(20)
);(2)刪除自動增長(注意,看者像是把主鍵也刪除了,但是沒有,因為主鍵刪除使用drop,哈哈)
alter table stu modify id int ;
(3)建立表後再新增自動增長
alter table stu modify id int auto_increment;
3、非空約束:not null,表示被修飾的那一列不能為null
(1)建立表示新增約束:
create table stu(
id int,
name varchar(20) not null
);(2)建立表後新增非空約束
alter table stu modify `name` varchar(20) not null;
(3)刪除非空約束
alter table stu modify `name` varchar(20);
4、唯一約束:unique,表示被修飾的那一列值不能重複
(1) 建立表是新增唯一性約束
create table stu(
id int,
`name` varchar(20) unique);
(2) 執行時新增唯一性約束
alter table stu modify `name` varchar(20) unique;
(3) 刪除唯一性約束 --- 比較特殊
alter table stu drop index `name`;
注意:
1、設定為唯一性的列,如果沒有新增非空條件,則允許有多個 null.
2、注意刪除唯一性的語句比較特殊。
4、外來鍵約束:foreign key
定義:讓表與另外乙個表產生關係,從而保證資料正確定,不能隨便被刪,也不能填不在範圍內資料。
(1)建立表是新增外來鍵
create table 表名(
…,外來鍵列,
constraint 外來鍵名稱 foreign key (外來鍵列) references 主表名(主表列名);
);
說明:
* 「constraint 外來鍵名稱」這個可以不寫,系統預設分配名字。
* 外來鍵名稱是自己給這個鍵定義的名稱,一般寫作:表a_主表_key,就像給某成立的新組織取名。
* 外來鍵列意思就是從當前表中,找乙個列來連線到主表。
* 主表名並不是說這個表是個主要的表,而是被連線的表名,因為一般都被連線的都是主鍵。
*主表列名就是當前表連線到主表中的哪個列,從而形成兩個表之間的關係。
*外來鍵的值可以為null.
舉例:
create table deparment(
id int primary key auto_increment,
dep_name varchar(20),
dep_location varchar(20)
);create table employee(
id int primary key auto_increment,
`name` varchar(20),
age int,
dep_id int,
constraint em_dept_key foreign key (dep_id) references deparment(id)
);
(2)建立了表之後新增外來鍵
alter table 表名add constraint 外來鍵名稱 foreign key (外來鍵列) references 主表名(主表列名);
(3)刪除外來鍵
alter table 表名drop foreign key 外鍵名;
(4)級聯操作
定義:修改主表中的被外來鍵的列,和它關聯的表中所有資料隨之更新。
* 新增級聯關係
alter table 表名 add constraint 外來鍵名稱 foreign key (外來鍵欄位名稱) references
主表名稱(主列表名稱) on update cascade on delete cascade;
舉例:
alter table employee add constraint em_dept_key foreign key (dep_id)
references deparment(id) on update cascade on delete cascade;
*分類:
a.級聯新增:on update cascade
b.級聯刪除(慎用):on delete cascade
動態表單資料庫設計
儲存結構去業務化 引數key value 通常系統引數就是這樣,很多配置項也是鍵值的。例如 分配比例,title,某某時間。碼表分為兩種 1 一種是沒有層級的 也就是用組就可以表達的。例如 性別,狀態。2 一種是有層級的 樹形的。例如 地域,樹形分類。樹形有些是無限層級的,有些也就是幾層。碼表分組 ...
Java Web專案表單資料存入資料庫中文亂碼解決
題記 第一篇部落格,編輯器的很多功能還不熟悉,粗略寫寫,可能的看官們請見諒。背景 用struts spring hibernate整合乙個小專案,有關編碼的設定如下 1 jsp頁面的pageencoding設定沒問題,charset設定成utf 8,form表單為get方式 2 struts配置時沒...
關於sql資料庫的約束
約束條件在資料庫中的使用。check 約束用於限制列中的值的範圍。如果對單個列定義 check 約束,那麼該列只允許特定的值。如果對乙個表定義 check 約束,那麼此約束會在特定的列中對值進行限制。建立約束 如以下例子 建立如下兩個表 create table kkk tel char 13 pr...