复制表
將向數(shù)據(jù)庫(kù)增加一個(gè)相同的表tb_test2。而有的時(shí)候,可能希望只基于現(xiàn)有表的幾個(gè)列創(chuàng)建一個(gè)表。通過(guò)create?select語(yǔ)句中指定列就可以實(shí)現(xiàn):
mysql>?describe?tb_test;???????????????????????????????????????????????????????? +-----------+------------------+------+-----+---------+----------------+???????? |?Field?????|?Type?????????????|?Null?|?Key?|?Default?|?Extra??????????????????? +-----------+------------------+------+-----+---------+----------------+???????? |?id????????|?int(10)?unsigned?|?NO???|?PRI?|?NULL????|?auto_increment?|???????? |?firstname?|?varchar(25)??????|?NO???|?????|?NULL????|????????????????|???????? |?lastname??|?varchar(25)??????|?NO???|?????|?NULL????|????????????????|???????? |?email?????|?varchar(45)??????|?NO???|?????|?NULL????|????????????????|???????? |?phone?????|?varchar(10)??????|?NO???|?????|?NULL????|????????????????|???????? +-----------+------------------+------+-----+---------+----------------+???????? 5?rows?in?set?(0.01?sec)???????????????????????????????????????????????????????? mysql>?create?table?tb_test2?select?id,?firstname,?lastname,?email?from?tb_test; Query?OK,?0?rows?affected?(0.03?sec)???????????????????????????????????????????? Records:?0??Duplicates:?0??Warnings:?0?????????????????????????????????????????? mysql>?describe?tb_test2;??????????????????????????????????????????????????????? +-----------+------------------+------+-----+---------+-------+????????????????? |?Field?????|?Type?????????????|?Null?|?Key?|?Default?|?Extra?|????????????????? +-----------+------------------+------+-----+---------+-------+????????????????? |?id????????|?int(10)?unsigned?|?NO???|?????|?0???????|???????|????????????????? |?firstname?|?varchar(25)??????|?NO???|?????|?NULL????|???????|????????????????? |?lastname??|?varchar(25)??????|?NO???|?????|?NULL????|???????|????????????????? |?email?????|?varchar(45)??????|?NO???|?????|?NULL????|???????|????????????????? +-----------+------------------+------+-----+---------+-------+????????????????? 4?rows?in?set?(0.01?sec)? 創(chuàng)建臨時(shí)表有的時(shí)候,當(dāng)工作在非常大的表上 時(shí),可能偶爾需要運(yùn)行很多查詢(xún)獲得一個(gè)大量數(shù)據(jù)的小的子集,不是對(duì)整個(gè)表運(yùn)行這些查詢(xún),而是讓MySQL每次找出所需的少數(shù)記錄,將記錄保存到一個(gè)臨時(shí)表 可能更快一些,然后對(duì)這些臨時(shí)表進(jìn)行查詢(xún)操作。可以通過(guò)使用temporary關(guān)鍵字和create?table語(yǔ)句來(lái)實(shí)現(xiàn)。 ?mysql>?create?temporary?table?emp_temp?select?firstname,?lastname?from?tb_test; ????Query?OK,?0?rows?affected?(0.02?sec)??????????????????????????????????????????? ????Records:?0??Duplicates:?0??Warnings:?0?臨時(shí)表的創(chuàng)建與其它表一樣,只是它們存儲(chǔ)在操作系統(tǒng)指定的臨時(shí)目錄中。臨時(shí)表將在你連接MySQL期間存在,當(dāng)你斷開(kāi)時(shí),MySQL將自動(dòng)刪除表并釋放所有的內(nèi)存空間;當(dāng)然了,你也可以手動(dòng)的使用drop?table命令刪除臨時(shí)表。
查看數(shù)據(jù)庫(kù)中可用的表
可以使用show?tables命令完成。例如:
查看表結(jié)構(gòu)
可以使用describe語(yǔ)句查看表結(jié)構(gòu),例如:
另外,使用show命令也能得到相同的結(jié)果,例如:
mysql>?show?columns?in?tb_test;????????????????????????????????????????? +-----------+------------------+------+-----+---------+----------------+ |?Field?????|?Type?????????????|?Null?|?Key?|?Default?|?Extra??????????| +-----------+------------------+------+-----+---------+----------------+ |?id????????|?int(10)?unsigned?|?NO???|?PRI?|?NULL????|?auto_increment?| |?firstname?|?varchar(25)??????|?NO???|?????|?NULL????|????????????????| |?lastname??|?varchar(25)??????|?NO???|?????|?NULL????|????????????????| |?email?????|?varchar(45)??????|?NO???|?????|?NULL????|????????????????| |?phone?????|?varchar(10)??????|?NO???|?????|?NULL????|????????????????| +-----------+------------------+------+-----+---------+----------------+ 5?rows?in?set?(0.00?sec)?刪除表
刪除表是使用drop?table語(yǔ)句實(shí)現(xiàn)的,其語(yǔ)法如下:
更改表結(jié)構(gòu)
我 們會(huì)發(fā)現(xiàn),我們會(huì)經(jīng)常修改和改進(jìn)表結(jié)構(gòu),特別是在開(kāi)發(fā)初期;但是,每次進(jìn)行修改時(shí)不必都先刪除再重新創(chuàng)建表。相反,可以使用alter語(yǔ)句修改表的結(jié)構(gòu)。 利用這個(gè)語(yǔ)句,可以再必要時(shí)刪除、修改和增加列。和create?table一樣,alter?table提供了很多子句、關(guān)鍵字和選項(xiàng)。這里只是會(huì)說(shuō)一 些簡(jiǎn)單的使用,比如在表tb_demo表中插入一列,表示email,代碼如下:
新的列放在表的最后位置。不過(guò),還可以使用適當(dāng)?shù)年P(guān)鍵字(包括first、after和last)來(lái)控制新列的位置。如果想修改表,比如,剛剛加的email,我想加入一個(gè)not?null控制,代碼可以是這樣的:
?mysql>?alter?table?tb_demo?change?email?email?varchar(45)?not?null;Query?OK,?0?rows?affected?(0.11?sec)???????????????????????????????Records:?0??Duplicates:?0??Warnings:?0?如果覺(jué)的這個(gè)email這列沒(méi)有存在的必要了,可以使用下面的代碼刪除它,例如:
?mysql>?alter?table?tb_demo?drop?email;??Query?OK,?0?rows?affected?(0.09?sec)????Records:?0??Duplicates:?0??Warnings:?0??
與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
- 上一篇: 领航员和凯雷德哪个好 比较两款导航仪的性
- 下一篇: 已整理的知识体系