首先我們都知道只有成功創(chuàng)建數(shù)據(jù)庫(kù)后,才能創(chuàng)建數(shù)據(jù)表,數(shù)據(jù)表是字段的集合,在表中數(shù)據(jù)按行和列的格式存儲(chǔ)。
讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)、虛擬空間、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、甘南網(wǎng)站維護(hù)、網(wǎng)站推廣。
創(chuàng)建表
MySQL 使用 CREATE TABLE 創(chuàng)建表。其中有多個(gè)選擇,主要由表創(chuàng)建定義(create definition)、表選項(xiàng)定義(table options) 和區(qū)分選項(xiàng)(partition options)等內(nèi)容構(gòu)成。
表創(chuàng)建定義
由表列的名字、列的定義集可能的一個(gè)空值聲明、一個(gè)完整性約束或表索引項(xiàng)組成,表索引項(xiàng)主要定義表的索引、主鍵、外鍵等。
語(yǔ)法結(jié)構(gòu)
CREATE[TEMPORARY]TABLE tbl_name ( 字段名|數(shù)據(jù)類(lèi)型[列級(jí)完整性約束條件][默認(rèn)值] [,字段名2 數(shù)據(jù)類(lèi)型[列級(jí)完整性約束條件][默認(rèn)值]] [,....] [,表級(jí)完整性約束條件] )[ENGINE=引擎類(lèi)型]
Example:
新建一個(gè)客戶(hù)信息
mysql> USE mysql_test Database changed mysql> CRATE TABLE customers ->( -> cust_id INT NOT NULL AUTO_INCREMENT, -> cust_name CHAR(50) NOT NULL, -> cust_sex CHAR(1) NOT NULL DEFAULT 0, -> cust_address CHAR(50) NULL -> cust_contact CHAR(50) NULL -> PRIMARY KEY(CUST_ID) ->) Query OK, 0 rows affected(0.11 sec)
臨時(shí)表與持久表
TEMPORARY:表示臨時(shí)表,如果不選用則位持久表。
持久表一直存在,多個(gè)用戶(hù)或應(yīng)用程序可同時(shí)使用持久表,如果只需臨時(shí)存放數(shù)據(jù)可添加 TEMPORARY 關(guān)鍵字,臨時(shí)表只能對(duì)創(chuàng)建它的用戶(hù)可見(jiàn),斷開(kāi)數(shù)據(jù)庫(kù)連接時(shí),表會(huì)自動(dòng)清除。
數(shù)據(jù)類(lèi)型
數(shù)據(jù)類(lèi)型指系統(tǒng)中所允許的數(shù)據(jù)的類(lèi)型。每列都應(yīng)有適當(dāng)?shù)臄?shù)據(jù)類(lèi)型,來(lái)限制或允許該列的數(shù)據(jù)。 建表時(shí)必須為每列指定正確的數(shù)據(jù)類(lèi)型及數(shù)據(jù)長(zhǎng)度 (CHAR(50))
MySQL 主要數(shù)據(jù)類(lèi)型:
數(shù)值類(lèi)型:整型 int、浮點(diǎn) double、布爾 bool
日期和時(shí)間類(lèi)型:日期型、時(shí)間戳 timestamp、時(shí)間型 time
字符串類(lèi)型:定長(zhǎng)字符類(lèi)型char、可變長(zhǎng)字符類(lèi)型varchrar
空間數(shù)據(jù)類(lèi)型:單個(gè)幾何類(lèi)型 GEOMETRY等
關(guān)鍵字 AUTO_INCREMENT
AUTO_INCREMENT: 表中數(shù)據(jù)類(lèi)型為整型的列設(shè)置自增屬性 (++i),從當(dāng)前指或 1 開(kāi)始,表中只能有一個(gè) AUTO_INCREMENT。
當(dāng)一個(gè)表列被指定為 AUTO_INCREMENT 后,其值可被覆蓋,即可在表數(shù)據(jù)插入語(yǔ)句中為該列指定一個(gè)值(必須唯一),則該值將替換系統(tǒng)自動(dòng)生成的值,后續(xù)增量基于該插入的值
指定默認(rèn)值
DEFAULT:用于指定MySQL在未給值的情況下默認(rèn)的值(DEFAULT 0)
如果未指定默認(rèn)值,則自動(dòng)為其分配一個(gè)值,如若該列可取值NULL,則默認(rèn)NULL,若定義 NOT NULL,則默認(rèn)取決于該列的類(lèi)型:
一個(gè)沒(méi)有聲明 AUTO_INCREMENT 列 為數(shù)字類(lèi)型,默認(rèn) 0
一個(gè) AUTO_INCREMENT 列 默認(rèn)為順序中的下一個(gè)值
對(duì)于除 TIMESTAMP 以外的日期和時(shí)間類(lèi)型,默認(rèn)為該類(lèi)型適當(dāng)?shù)?#39;零'值
對(duì)于表中第一個(gè) TIMESTAMP 列,默認(rèn)值為當(dāng)前日期和時(shí)間
NULL值
NULL:沒(méi)有值或缺值,允許NULL的列,插入行時(shí)可以不給該列的值;不允許NULL值的列,則該列必須有數(shù)據(jù)
NULL 和 ''是不對(duì)等的 NOT NULL 列中允許'' 不允許 NULL
主鍵
PRIMARY KEY :指定主鍵,主鍵必須唯一且不能為NULL, 如果是單列,值必須唯一,如果是組合列,則其組合的值必須唯一
更新表
通過(guò)使用 ALTER TABLE 來(lái)修改數(shù)據(jù)庫(kù)
ADD[COLUMN]:新增表列,可增多列使用逗號(hào)分隔即可
Example:
mysql> ALTER TABLE mysqle_test.customers -> ADD COLUMN cust_city char(10) NOT NULL DEFAULT'ShenZhen' AFTER cust_sex; Query OK,0 rows affected(0.61 sec) Records:0 Duplicates:0 Warning:0
AFTER:將新增的列添加到cut_sexl 列之后
FIRST:將新增的列添加到表的第一列
若使用上述關(guān)鍵字則將新增的列添加至表最后
類(lèi)似的 可以使用 ADDPRIMARY KEY 、ADDFOREIGN KEY 、ADD INDEX 添加對(duì)應(yīng)的 主鍵、外鍵、索引
CHANGE[COLUMN]: 修改表中列的名稱(chēng)或數(shù)據(jù)類(lèi)型,可修改多列使用逗號(hào)分隔即可
mysql> ALTER TABLE mysqle_test.customers -> CHANGE COLUMN cust_sex sex char(1) NULL DEFAULT 'M' Query OK,0 rows affected(0.66 sec) Records:0 Duplicates:0 Warning:0
如果將數(shù)據(jù)類(lèi)型更換,可能會(huì)丟失該列原有的數(shù)據(jù),如果視圖改變的數(shù)據(jù)類(lèi)型于原有的數(shù)據(jù)類(lèi)型不兼容,則SQL命令不會(huì)執(zhí)行,且拋出錯(cuò)誤。
再兼容的情況下,該列的數(shù)據(jù)可能會(huì)被截?cái)?,如:一列的?shù)據(jù)類(lèi)型為 varchart(10),改為char(1),則該列中的數(shù)據(jù)'ShenZhen'會(huì)變?yōu)?#39;S'
ALTER [COLUMN]: 修改或刪除指定列的默認(rèn)值
mysql> ALTER TABLE mysqle_test.customers -> ALTER COLUMN cust_city SET DEFAULT 'ShangHai' Query OK,0 rows affected(0.36 sec) Records:0 Duplicates:0 Warning:0
MODIFY [COLUMN]: 修改指定列的數(shù)據(jù)類(lèi)型,通過(guò) 'FIRST' 或 'AFTER' 修改列的位置
mysql> ALTER TABLE mysqle_test.customers -> MODIFY COLUMN cust_name char(30) FIRST Query OK,0 rows affected(0.20 sec) Records:0 Duplicates:0 Warning:0
DROP [COLUMN]: 刪除列,該列所有數(shù)據(jù)一并刪除
mysql> ALTER TABLE mysqle_test.customers -> DROP COLUMN cust_city Query OK,0 rows affected(0.42 sec) Records:0 Duplicates:0 Warning:0
同樣 可使用 DROP PRIMARY KEY 、DROP FOREIGN KEY、DROP INDEX 刪除對(duì)應(yīng)的主鍵、外鍵、索引
RENAME[TO]:表重命名
mysql> ALTER TABLE mysqle_test.customers -> RENAME TOQuery OK,0 rows affected(0.42 sec)
重命名表
除了 ALTER TABLE 中的 RENAME TO 修改表名,還可通過(guò) RENAME TABLE 來(lái)修改單張和多張表(以逗號(hào)分隔)
mysql> RENAME TABLE mysql_test.back.customers TO mysqle_test.customers
刪除表
DROP[TEMPORARY]TABLE[IF EXISTS]刪除一個(gè)已存在的表,可以刪除多張表,前提操作人必須有權(quán)限,但是操作人在該張表上的權(quán)限不會(huì)被刪除
查看表
SHOW [FULL] TABLES [{FROM|IN}db_name] [LIKE'pattern'|WHERE expr]: 顯示指定數(shù)據(jù)庫(kù)中所有表名
Example:
mysql> USE mysql_testDatabase changedmysql> SHOW TABLES: Tables_in_mysql_test customers 1 row in set <0.01 sec>
SHOW [FULL] COLUMNS {FROM|IN}tb_name[{FROM|IN}db_name] 或 {DESCRIBE|DESC} tbl_name[col_name|wild]: 顯示指定數(shù)據(jù)庫(kù)表結(jié)構(gòu)。
MySQL 支持使用 DESCRIBE 代替 SHOW COLUMNS FROM 來(lái)查看表結(jié)構(gòu)
Example:
mysql> DESC mysql_test.custormes Field Type Null key Default Extra cust_id int<11> NO PRI NULL auto_increment cust_name char<50> NO Null cust_sex int<1> NO 0 3 row in set <1.56 sec>
以上就是mysql表定義語(yǔ)法詳細(xì)介紹的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!
本文標(biāo)題:mysql創(chuàng)建表的語(yǔ)法結(jié)構(gòu)和表的使用方法
文章地址:http://aaarwkj.com/article12/gopdgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶(hù)體驗(yàn)、云服務(wù)器、標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計(jì)、電子商務(wù)、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)