字段約束
字符集、校對規則定義
◆ 構造資料庫必須遵循一定得規則,這種規則就是正規化。
◆ 目前關聯式資料庫有6中正規化,一般情況下,只滿足第三正規化即可。
◆ 第一正規化是資料庫的基本要求,不滿足這一點就不是關聯式資料庫。
◆ 資料表得每一列都是不可分割得基本資料項,同一列中不能有多個值,也不能存在重複的屬性。
不符合第一正規化:
學號姓名
班級1000
劉娜高三年級1班
符合第一正規化:
學號姓名
年級班級
1000
劉娜高三
1班◆ 資料表中的每條記錄必須是唯一的。為了實現區分,通常要為表加上乙個列用於儲存唯一標識,這個唯一屬性列被稱作主鍵列。
無法區分重複資料:
學號考試成績
日期230
582018-07-15
23058
2018-07-15
資料具有唯一性:
流水號學號
考試成績
日期201807152687
23058
2018-07-15
201807152694
23058
2018-07-15
◆ 每列都與主鍵有直接關係,不存在傳遞依賴
違反第三正規化:
爸爸兒子
女兒女兒的玩具
女兒的衣服
陳華陳浩
陳婷婷海綿寶寶
校服符合第三正規化:
爸爸兒子
女兒陳華
陳浩陳婷婷 女兒
女兒的玩具
女兒的衣服
陳婷婷海綿寶寶
校服◆ 依照第三正規化,資料可以拆分儲存到不同的資料表,彼此保持關聯
編號部門
**10
財務部1001
20技術部
1002
30銷售部
1003 編號
姓名性別
部門入職日期1陳浩
男102018-05-10
2李婷婷女30
2018-03-22
◆ mysql中的字段約束共有四種:
約束名稱
關鍵字描述
主鍵約束
primary key
字段值唯一,且不能為null
非空約束
not null
字段值不能為null
唯一約束
unique
字段值唯一,且可以為null
外來鍵約束
foreign key
保持關聯資料的邏輯性
◆ 主鍵約束要求欄位的值在全表必須唯一,而且不能為null值
◆ 建議主鍵一定要使用數字型別,因為數字的檢索速度會非常塊
◆ 如果主鍵是數字型別,還可以設定自動增長
create
table t_teacher(
id int
primary
keyauto_increment,.
....
.);
◆ 非空約束要求欄位的值不能為null值
◆ null值以為沒有值,而不是 「」 空字串
create
table t_teacher(
id int
primary
keyauto_increment
, name varchar
(200
)not
null
, married boolean
notnull
default
false);
# 不能為空時,default 預設值
◆ 唯一約束要求字段值如果不為null,那麼在全表必須唯一
create
table t_teacher(..
....
tel char(11
)not
null
unique
);
◆ 外來鍵約束用來保證關聯資料的邏輯關係
父表:deptno
dname
tel10
財務部1001
20技術部
1002
30銷售部
1003
子表:empno
name
***deptno
hiredate1陳浩
男102018-05-10
2李婷婷女30
2018-03-22
◆ 外來鍵約束的定義是寫在子表上的
create
table t_emp(
empno int
unsigned
primary
key,
ename varchar(20
)not
null
, *** enum
("男"
,"女"
)not
null
, deptno int
unsigned
, hiredate date
notnull
,foreign
key(deptno)
references t_dept(deptno));
# enum()規定字段值,只能在規定的字段值之內挑選乙個
# foreign key 規定外界約束
外建約束的閉環問題
◆ 如果形成外來鍵閉環,我們將無法刪除任何一張表的記錄。
ps: 所以建立資料表的時候不推薦使用外來鍵約束。
create
database[if
notexists
]《資料庫名》[[
default]]
character
set《字符集名》][
[default
]collate
《校對規則名》
];
if not exists 可以判斷資料庫是否存在,此宣告可以防止因資料庫存在,導致全部語句的中止。
R語言學習 資料匯入資料庫 MYSQL
將變數中的資料匯入資料庫 conn dbconnect mysql dbname networks username root 建立資料庫連線 dbsendquery conn,set sql mode ansi 啟動非嚴格模式 dbsendquery conn,set names gbk win7...
Mysql資料庫學習之資料定義語言
上文中我們學習了如何建立資料庫,本文將簡述建立表和修改表及常見約束的設定。語法 create table 表名 列名1 列的資料型別 列名2 列2的資料型別 列名n 列n的資料型別 如 在公司資料庫中,建立員工資訊表,id,姓名,性別,年齡,家庭住址,如下 use company create ta...
資料庫學習 DDL(資料庫定義語言)
create database if not exists 庫名 說明 if not exists的存在為了保證資料庫是唯一的,同時保證程式不阻塞drop database if exists 庫名 說明 if exists 為保證程式不阻塞show create table 表名 展示建立表的時候...