MySQL——?jiǎng)?chuàng)建和操縱表(十四)

MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)囱淋,由瑞典MySQL AB 公司開發(fā)穿仪,目前屬于 Oracle 旗下產(chǎn)品启摄。MySQL 最流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)拂盯,在 WEB 應(yīng)用方面MySQL是最好的 RDBMS (Relational Database Management System筐付,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) 應(yīng)用軟件之一卵惦。

MySQL是一種關(guān)聯(lián)數(shù)據(jù)庫(kù)管理系統(tǒng),關(guān)聯(lián)數(shù)據(jù)庫(kù)將數(shù)據(jù)保存在不同的表中瓦戚,而不是將所有數(shù)據(jù)放在一個(gè)大倉(cāng)庫(kù)內(nèi)沮尿,這樣就增加了速度并提高了靈活性。

MySQL所使用的 SQL 語(yǔ)言是用于訪問數(shù)據(jù)庫(kù)的最常用標(biāo)準(zhǔn)化語(yǔ)言较解。MySQL 軟件采用了雙授權(quán)政策畜疾,它分為社區(qū)版和商業(yè)版,由于其體積小印衔、速度快啡捶、總體擁有成本低,尤其是開放源碼這一特點(diǎn)当编,一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫(kù)届慈。由于其社區(qū)版的性能卓越,搭配 PHP 和 Apache 可組成良好的開發(fā)環(huán)境忿偷。

創(chuàng)建表

MySQL不僅用于表數(shù)據(jù)操縱金顿,而且還可以用來執(zhí)行數(shù)據(jù)庫(kù)和表的所有操作,包括表本身的創(chuàng)建和處理鲤桥。一般有兩種創(chuàng)建表的方法:
(1)使用具有交互式創(chuàng)建和管理表的工具揍拆;
(2)表也可以直接用MySQL語(yǔ)句操縱。

一茶凳、表創(chuàng)建基礎(chǔ)

為利用CREATE TABLE創(chuàng)建表嫂拴,必須給出下列信息:
(1)新表的名字播揪,在關(guān)鍵字CREATE TABLE之后給出;
(2)表列的名字和定義筒狠,用逗號(hào)隔開猪狈。
CREATE TABLE語(yǔ)句也可能會(huì)包括其他關(guān)鍵字或選項(xiàng),但至少要包括表的名字和列的細(xì)節(jié)辩恼。創(chuàng)建customers的代碼如下:

CREATE TABLE customers
(
cust_id     int     NOT NULL AUTO_INCREMENT,
cust_name  char(50)  NOT NULL,
cust_address  char(50)   NULL,
cust_city     char(50)   NULL,
cust_state    char(50)   NULL,
cust_zip      char(50)   NULL,
cust_country   char(50)   NULL,
cust_contact   char(50)   NULL,
cust_email   char(50)   NULL,
PRIMARY KEY (cust_id)
)ENGINE=InnoDB;

二雇庙、使用NULL值

NULL值就是沒有值或缺值。允許NULL值的列也允許在插入行時(shí)不給出該列的值灶伊。不允許NULL值的列不接受該列沒有值的行疆前,換句話說,在插入或更新行時(shí)聘萨,該列必須有值竹椒。

每個(gè)表列或者是NULL列,或者是NOT NULL列米辐,這種狀態(tài)在創(chuàng)建時(shí)由表的定義規(guī)定胸完。NULL為默認(rèn)設(shè)置,如果不指定NOT NULL翘贮,則認(rèn)為指定的是NULL舶吗。

三、主鍵介紹

主鍵值必須唯一择膝。即,表中的每個(gè)行必須具有唯一的主鍵值检激。如果主鍵使用單個(gè)列肴捉,則它的值必須唯一。如果使用多個(gè)列叔收,則這些列的組合值必須唯一齿穗。為創(chuàng)建由多個(gè)列組成的主鍵,應(yīng)該以逗號(hào)分隔的列表給出各列名饺律,如下所示:

CREATE TABLE orderitems
(
order_num int NOT NULL,
order_item int NOT NULL,
prod_id char(10) NOT NULL,
quantity int NOT NULL,
item_price decimal(8,2) NOT NULL,
PRIMARY KEY (order_num,order_item)
)ENGINE=InnoDB;

四窃页、使用AUTO_INCREMENT

AUTO_INCREMENT告訴MySQL,本列每當(dāng)增加一行時(shí)自動(dòng)增量复濒。每次執(zhí)行一個(gè)INAERT操作時(shí)脖卖,MySQL自動(dòng)對(duì)該列增量(從而才有了這個(gè)關(guān)鍵字AUTO_INCREMENT),給該列賦予下一個(gè)可用的值巧颈。這樣給每個(gè)行分配一個(gè)唯一的cust_id畦木,從而可以用作主鍵值。

每個(gè)表只允許一個(gè)AUTO_INCREMENT列砸泛,而且它必須被索引(如十籍,通過使它成為主鍵)蛆封。

五、指定默認(rèn)值

如果在插入行時(shí)沒有給出值勾栗,MySQL允許指定此時(shí)使用的默認(rèn)值惨篱。默認(rèn)值用CREATAE TABLE語(yǔ)句的列定義中的DEFAULT關(guān)鍵字指定。示例如下:

CREATAE TABLE orderitems
(
order_num int NOT NULL,
order_item int NOT NULL,
prod_id char(10) NOT NULL,
quantity int NOT NULL DEFAULT 1,
item_price decimal(8,2) NOT NULL,
PRIMARY KEY(order_num,order_item)
)ENGINE=InnoDB;

quantity列包含訂單中每項(xiàng)物品的數(shù)量围俘。在例子中砸讳,給該列的描述添加文本DEFAULT 1指示MySQL,在未給出數(shù)量的情況下使用數(shù)量1楷拳。

六绣夺、引擎類型

與其他DBMS一樣,MySQL有一個(gè)具體管理和處理數(shù)據(jù)的內(nèi)部引擎欢揖。在使用CREATE TABLE語(yǔ)句時(shí)陶耍,該引擎具體創(chuàng)建表,而在你使用SELECT語(yǔ)句或進(jìn)行其他數(shù)據(jù)庫(kù)處理時(shí)她混,該引擎在內(nèi)部處理你的請(qǐng)求烈钞。多數(shù)時(shí)候,此引擎都隱藏在DBMS內(nèi)坤按,不需要過多關(guān)注它毯欣。

但MySQL與其他DBMS不一樣,它具有多種引擎臭脓。它打包多個(gè)引擎酗钞,這些引擎都隱藏在MySQL服務(wù)器內(nèi),全都能執(zhí)行CREATE TABLE和SELECT等命令来累。每個(gè)引擎具有各自不同的功能和特性砚作,為不同的任務(wù)選擇正確的引擎能獲得良好的功能和靈活性。如果忽略ENGINE=語(yǔ)句嘹锁,則使用默認(rèn)引擎(很可能是MyISAM)葫录,多數(shù)SQL語(yǔ)句都會(huì)默認(rèn)使用它。但并不是所有的語(yǔ)句都默認(rèn)使用它领猾,這就是為什么ENGINE=語(yǔ)句很重要的原因米同。以下十幾個(gè)需要知道的引擎:
(1)InnoDB是一個(gè)可靠的事務(wù)處理引擎,它不支持全文本搜索摔竿;
(2)MEMORY在功能等同于MyISAM面粮,但由于數(shù)據(jù)存儲(chǔ)在內(nèi)存(不是磁盤)中,速度很快(特別適合于臨時(shí)表)拯坟;
(3)MyISAM是一個(gè)性能極高的引擎但金,它支持全文本搜索,但不支持事務(wù)處理郁季。

操縱表

一冷溃、更新表

為更新表定義钱磅,可使用ALERT TABLE 語(yǔ)句。為了使用ALERT TABLE更改表結(jié)構(gòu)似枕,必須給出下邊的信息:
(1)在ALERT TABLE之后給出要改的表名(該表必須存在盖淡,否則將出錯(cuò));
(2)所做更改的列表凿歼。
給表添加一個(gè)列:

ALTER TABLE vendors ADD vend_phone CHAR(20);

這條語(yǔ)句給表vendors增加一個(gè)名為vend_phone的列褪迟,必須明確其數(shù)據(jù)類型。刪除剛添加的列:

ALTER TABLE vendors DROP COLUMN vend_phone;

二答憔、刪除表

刪除表(刪除整個(gè)表而不是其內(nèi)容)味赃,使用DROP TABLE語(yǔ)句即可:

DROP TABLE customers2;

這條語(yǔ)句刪除customers2(假設(shè)它存在)。刪除表沒有確認(rèn)虐拓,也不能撤銷心俗,執(zhí)行這條語(yǔ)句將永久刪除該表。

三蓉驹、重命名表

使用RENAME TABLE語(yǔ)句可以重命名一個(gè)表:

RENAME TABLE customers2 TO  customers;

RENAME TABLE語(yǔ)句所做的僅是重命名一個(gè)表城榛。可以使用下面的語(yǔ)句對(duì)多個(gè)表重命名:

RENAME TABLE backup_customers TO customers,
             backup_vendors TO vendors,
             backup_products TO products;

學(xué)習(xí)是一個(gè)慢慢積累的過程态兴,也是一件很快樂的事狠持,這種快樂來自于你的思考。完成一項(xiàng)學(xué)習(xí)任務(wù)固然重要瞻润,但更重要的是在完成的過程中學(xué)到了什么喘垂,掌握了什么,遇到一些什么問題绍撞,為什么會(huì)出現(xiàn)這種問題王污,根源是什么,都有哪些解決方案楚午,什么樣的情況適合這個(gè)方案。只有在不斷的思考尿招,你的能力才會(huì)有所提升矾柜!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市就谜,隨后出現(xiàn)的幾起案子怪蔑,更是在濱河造成了極大的恐慌,老刑警劉巖丧荐,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缆瓣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡虹统,警方通過查閱死者的電腦和手機(jī)弓坞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門隧甚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人渡冻,你說我怎么就攤上這事戚扳。” “怎么了族吻?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵帽借,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我超歌,道長(zhǎng)砍艾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任巍举,我火速辦了婚禮脆荷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘禀综。我一直安慰自己简烘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布定枷。 她就那樣靜靜地躺著孤澎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪欠窒。 梳的紋絲不亂的頭發(fā)上覆旭,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音岖妄,去河邊找鬼型将。 笑死,一個(gè)胖子當(dāng)著我的面吹牛荐虐,可吹牛的內(nèi)容都是我干的七兜。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼福扬,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼腕铸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起铛碑,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤狠裹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后汽烦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涛菠,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了俗冻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片礁叔。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖言疗,靈堂內(nèi)的尸體忽然破棺而出晴圾,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站爽丹,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏都毒。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一碰缔、第九天 我趴在偏房一處隱蔽的房頂上張望账劲。 院中可真熱鬧,春花似錦金抡、人聲如沸瀑焦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)榛瓮。三九已至,卻和暖如春巫击,著一層夾襖步出監(jiān)牢的瞬間禀晓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工坝锰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粹懒,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓顷级,卻偏偏與公主長(zhǎng)得像凫乖,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子弓颈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容