MySQL資料庫定義語言學習筆記

2021-10-02 12:10:59 字數 3144 閱讀 1857

字段約束

字符集、校對規則定義

◆ 構造資料庫必須遵循一定得規則,這種規則就是正規化。

◆ 目前關聯式資料庫有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 表名 展示建立表的時候...