日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql创建表时添加范式_MySql三大范式与数据库设计和表创建常用语句

發(fā)布時間:2023/12/2 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql创建表时添加范式_MySql三大范式与数据库设计和表创建常用语句 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

【數(shù)據(jù)庫設(shè)計的三大范式】

1.第一范式(1NF First Normal Fromate):數(shù)據(jù)表中的每一列(字段),必須是不可拆分的最小單元。也就是確保每一列的原子性。

例如: userInfo: ‘山東省煙臺市 13181621008’

=> userAds:’山東省煙臺市’

tel:’13181621008′

2.第二范式(2NF):滿足1NF后,要求:表中所有的列,都必須功能依賴于主鍵,而不能有任何一列與主鍵沒有關(guān)系。(一張表值描述一件事情)

3.第三范式(3NF):滿足2NF后,要求:表中的每一列都要與主鍵直接相關(guān),而不是間接相關(guān)。(表中的每一列,只能依賴于主鍵)

例如:訂單表中,需要有客戶相關(guān)信息,在分離出客戶表之后。訂單表中,只需要有一個用戶ID

即可。而不能有其他的客戶信息。因為,其他的用戶信息是直接關(guān)聯(lián)于用戶ID。而不是關(guān)聯(lián)于訂單ID。

【第二范式與第三范式的本質(zhì)區(qū)別】

在于有沒有分出兩張表,第二范式是說一張表中包含了多種不同實體的屬性,那么必須要分成多張表。第三范式要求,已經(jīng)分好了多張表的話,那么,一張表中只能有另一張表中的ID(主鍵),而不能有其他的信息(其他的信息,一律使用主鍵在另一種查詢)。

*/

USE mydb;

— 創(chuàng)建表:

定義列:列名 數(shù)據(jù)類型 列定義關(guān)鍵字

常用的列定義關(guān)鍵字:

UNSIGNED:設(shè)置列為無符號列。只能設(shè)置類型為數(shù)字類型的列

AUTO_INCREMENT :設(shè)置自動增長列。 自動增長列必須是主鍵。

【主鍵】

1.主鍵的注意事項? ① 主鍵默認非空! ② 只有主鍵才能設(shè)置自動增長(主鍵不一定自動增長,自動增長必須是主鍵)

2.設(shè)置主鍵的方式? ① 在列定義時設(shè)置:id INT PRIMARY KEY

② 在列定義完成后設(shè)置: PRIMARY KEY(id)

UNIQUE:設(shè)置唯一性約束。該字段不能出現(xiàn)重復(fù)值。

NOT NULL:設(shè)置非空約束。該字段不能為空。

DEFAULT:設(shè)置默認值約束。hight DOUBLE(3,2) DEFAULT(1.2) height如果不輸入默認1.2

FOREIGN KEY:設(shè)置外鍵約束。

【外鍵】

1、設(shè)置外鍵有哪些注意事項?

1、設(shè)置外鍵有哪些注意事項?

只有innoDB的數(shù)據(jù)庫引擎支持外鍵。

修改my.ini文件設(shè)置default-storage-engine=INNODB

②外鍵與參照列的數(shù)據(jù)類型必須相同

③設(shè)置外鍵的字段必須要有索引。如果沒有索引,設(shè)置外鍵時會自動生成一個索引

[數(shù)值型要求長度和無符號都相同,字符串要求類型相同,長度可以不同]

2、設(shè)置外鍵的語法?

[CONSTRAINT 外鍵名] FOREIGN KEY(外鍵字段)REFERENCES 參照表(參照字段)

[ON DELETE SET NULL ON UPDATE CASCADE] — 設(shè)置參照完整性

3、外鍵約束的參照操作。

參照操作:當對參照表的參照字段進行刪除或更新時,外鍵表中的外鍵如何應(yīng)對。

參照操作可選值:DESTRTCT 拒絕參照表刪除或更新參照字段

NO ACTION 與 RESTRICT相同,但這個指令只在MySQL生效

CASCADE 刪除或更新參照表的參照字段時,外鍵表的記錄同步刪除更新

SET NULL 刪除或更新參照表的參照字段時,外鍵表的外鍵設(shè)為NULL

*/

CREATE TABLE IF NOT EXISTS tb1(

-- IF NOT EXISTS 可以省略,省略后面重復(fù)創(chuàng)建報錯。如果不省略,則創(chuàng)建時表是否已存在,如果表存在則不再執(zhí)行創(chuàng)建

id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,

`name` VARCHAR(255), -- name 是系統(tǒng)關(guān)鍵字,所以使用反引號``包裹

age SMALLINT UNIQUE,

hight DOUBLE(3,2) DEFAULT(1.2)

-- PRIMARY KEY(id)

);

DROP TABLE IF EXISTS CLASSES;

CREATE TABLE IF NOT EXISTS CLASSES(

id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

CLASSNAME VARCHAR(255) NOT NULL

);

DROP TABLE IF EXISTS `USER`;

CREATE TABLE IF NOT EXISTS `USER`(

id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

CLSID INT UNSIGNED NOT NULL,

`NAME` VARCHAR(255) NOT NULL,

CONSTRAINT user_fk_classes FOREIGN KEY (clsid) REFERENCES classes(id)

);

SHOW COLUMNS FROM CLASSES;

SHOW TABLES;

— 顯示表結(jié)構(gòu)

SHOW COLUMNS FROM tb1;

— 顯示表的建表語句

SHOW CREATE TABLES TB1;

— 刪除表

DROP TABLE IF EXISTS tb1;

— 修改表名 ALTER TABLE 舊表名 RENAME [TO] 新表名;

ALTER TABLE TB1 RENAME TB2;

— 同時修改多表名 RENAME TABLE TB3 TO TB1[,`USER` TO USER1 ……];

RENAME TABLE TB3 TO TB1,`USER` TO USER1;

— 修改字段 列

— ALTER TABLE 表名 CHANGE 舊列名 新列名 列定義 [FIRST | AFTER 某一列]

— FIRST 將這個字段調(diào)整為表格第一列 AFTER 某一列:將這個字段放到某一列后面

ALTER TABLE TB1 CHANGE `NAME` `USERNAME` VARCHAR(200) NOT NULL AFTER AGE;

— MODIFY 只修改定義,不能改名

ALTER TABLE TB1 MODIFY `USERNAME` VARCHAR(200) NOT NULL AFTER AGE;

— 刪除表中某一列

ALTER TABLE TB1 DROP HEIGHT;

— 新增一列 必須部分:ALTER TABLE tb1 ADD HEIGHT DOUBLE(8,2)

ALTER TABLE tb1 ADD HEIGHT DOUBLE(8,2) DEFAULT 1.2 AFTER AGE;

— 新增多列 不能調(diào)整列的位置,只能插在最后。

ALTER TABLE TB1 ADD(

WEIGHT DOUBLE(3,2) UNSIGNED,

school VARCHAR(255)

)

— 增加主鍵約束

ALTER TABLE tb1 ADD PRIMARY KEY(id);

— 刪除主鍵約束

ALTER TABLE tb1 DROP PRIMARY KEY;

— 新增唯一性約束

ALTER TABLE TB1 ADD UNIQUE KEY (USERNAME);

— 刪除唯一性約束:由于創(chuàng)建唯一性約束會默認創(chuàng)建索引,所以刪除時,需刪除索引

ALTER TABLE TB1 DROP INDEX USERNAME;

— 設(shè)置默認值約束

ALTER TABLE TB1 ALTER AGE SET DEFAULT 20;

— 刪除默認值約束

ALTER TABLE TB1 ALTER AGE DROP DEFAULT;

— 設(shè)置外鍵約束 必選部分:ALTER TABLE tb1 ADD FOREIGN KEY (CLSID) REFERENCES CLASSES(ID)

ALTER TABLE tb1 ADD FOREIGN KEY (CLSID) REFERENCES CLASSES(ID) ON DELETE SET NULL ON UPDATE CASCADE;

— 刪除外鍵約束。由于創(chuàng)建外鍵時會默認

ALTER TABLE tb1 DROP FOREIGN KEY TB1_FK_CLASSES;

SHOW COLUMNS FROM TB1;

SHOW TABLES;

總結(jié)

以上是生活随笔為你收集整理的mysql创建表时添加范式_MySql三大范式与数据库设计和表创建常用语句的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。