第二十一章 創(chuàng)建和刪除表.ppt_第1頁(yè)
第二十一章 創(chuàng)建和刪除表.ppt_第2頁(yè)
第二十一章 創(chuàng)建和刪除表.ppt_第3頁(yè)
第二十一章 創(chuàng)建和刪除表.ppt_第4頁(yè)
第二十一章 創(chuàng)建和刪除表.ppt_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、嵌入式數(shù)據(jù)庫(kù)-第一部分 MySQL教程,第21章 創(chuàng)建和刪除表,21.1 創(chuàng)建表 21.2 更新表 21.3 刪除表 21.4 重命名表 本章小結(jié) 練習(xí)題,創(chuàng)建表,Mysql不僅用于表數(shù)據(jù)操作,而且還可以用來(lái)執(zhí)行數(shù)據(jù)庫(kù)和表的所有操作,包括表本身創(chuàng)建和處理。 創(chuàng)建表的方法: 使用具有交互式創(chuàng)建和管理表的工具 可以直接用Mysql語(yǔ)句操作,表創(chuàng)建基礎(chǔ),語(yǔ)句格式: CREATE TEMPORARY TABLE IF NOT EXISTS tbl_name ( column_definition , . | index_definition ) table_option select_statemen

2、t;,說(shuō)明, TEMPORARY:該關(guān)鍵字表示用CREATE命令新建的表為臨時(shí)表。不加該關(guān)鍵字創(chuàng)建的表通常稱為持久表,在數(shù)據(jù)庫(kù)中持久表一旦創(chuàng)建將一直存在,多個(gè)用戶或者多個(gè)應(yīng)用程序可以同時(shí)使用持久表。有時(shí)候需要臨時(shí)存放數(shù)據(jù),例如,臨時(shí)存儲(chǔ)復(fù)雜的SELECT語(yǔ)句的結(jié)果。此后,可能要重復(fù)地使用這個(gè)結(jié)果,但這個(gè)結(jié)果又不需要永久保存。這時(shí),可以使用臨時(shí)表。用戶可以像操作持久表一樣操作臨時(shí)表。只不過(guò)臨時(shí)表的生命周期較短,而且只能對(duì)創(chuàng)建它的用戶可見(jiàn),當(dāng)斷開(kāi)與該數(shù)據(jù)庫(kù)的連接時(shí),MySQL會(huì)自動(dòng)刪除它們。 IF NOT EXISTS:在建表前加上一個(gè)判斷,只有該表目前尚不存在時(shí)才執(zhí)行CREATE TABLE操作

3、。用此選項(xiàng)可以避免出現(xiàn)表已經(jīng)存在無(wú)法再新建的錯(cuò)誤。 table_name:要?jiǎng)?chuàng)建的表的表名。該表名必須符合標(biāo)志符規(guī)則,如果有MySQL保留字必須用單引號(hào)括起來(lái)。 column_definition:列定義,包括列名、數(shù)據(jù)類型,可能還有一個(gè)空值聲明和一個(gè)完整性約束。,說(shuō)明, index_definition:表索引項(xiàng)定義,主要定義表的索引、主鍵、外鍵等。 table_option:用于描述表的選項(xiàng)。 select_statement:可以在CREATE TABLE語(yǔ)句的末尾添加一個(gè)SELECT語(yǔ)句,在一個(gè)表的基礎(chǔ)上創(chuàng)建表。,列定義column_definition格式如下: col_name t

4、ype NOT NULL | NULL DEFAULT default_value AUTO_INCREMENT UNIQUE KEY | PRIMARY KEY COMMENT string reference_definition,說(shuō)明: col_name:表中列的名字。列名必須符合標(biāo)志符規(guī)則,長(zhǎng)度不能超過(guò)64個(gè)字符,而且在表中要唯一。如果有MySQL保留字必須用單引號(hào)括起來(lái)。 type:列的數(shù)據(jù)類型,有的數(shù)據(jù)類型需要指明長(zhǎng)度n,并用括號(hào)括起,MySQL支持的數(shù)據(jù)類型在附錄C中介紹。 AUTO_INCREMENT:設(shè)置自增屬性,只有整型列才能設(shè)置此屬性。當(dāng)插入NULL值或0到一個(gè)AUTO_

5、INCREMENT列中時(shí),列被設(shè)置為value+1,在這里value是此前表中該列的最大值。AUTO_INCREMENT順序從1開(kāi)始。每個(gè)表只能有一個(gè)AUTO_INCREMENT列,并且它必須被索引。,類型: (1)對(duì)于沒(méi)有聲明AUTO_INCREMENT屬性的數(shù)字類型,默認(rèn)值是0。對(duì)于一個(gè)AUTO_INCREMENT列,默認(rèn)值是在順序中的下一個(gè)值。 (2)對(duì)于除TIMESTAMP以外的日期和時(shí)間類型,默認(rèn)值是該類型適當(dāng)?shù)摹傲恪敝?。?duì)于表中第一個(gè)TIMESTAMP列,默認(rèn)值是當(dāng)前的日期和時(shí)間。 (3)對(duì)于除ENUM的字符串類型,默認(rèn)值是空字符串。對(duì)于ENUM,默認(rèn)值是第一個(gè)枚舉值。 UNIQU

6、E KEY | PRIMARY KEY:PRIMARY KEY和UNIQUE KEY都表示字段中的值是唯一的。PRIMARY KEY表示設(shè)置為主鍵,一個(gè)表只能定義一個(gè)主鍵,主鍵一定要為NOT NULL。 COMMENT string:對(duì)于列的描述,string是描述的內(nèi)容。 reference_definition:指定參照的表和列,創(chuàng)建customers表格,CREATE TABLE customers ( cust_id int NOT NULL AUTO_INCREMENT, cust_name char(50) NOT NULL , cust_address char(50) NULL

7、 , cust_city char(50) NULL , cust_state char(5) NULL , cust_zip char(10) NULL , cust_country char(50) NULL , cust_contact char(50) NULL , cust_email char(255) NULL , PRIMARY KEY (cust_id) ) ENGINE=InnoDB;,表名,列名唯一,數(shù)據(jù)類型,主鍵,使用NULL值,CREATE TABLE orders ( order_num int NOT NULL AUTO_INCREMENT, order_date

8、 datetime NOT NULL , cust_id int NOT NULL , PRIMARY KEY (order_num) ) ENGINE=InnoDB;,CREATE TABLE vendors ( vend_id int NOT NULL AUTO_INCREMENT, vend_name char(50) NOT NULL , vend_address char(50) NULL , vend_city char(50) NULL , vend_state char(5) NULL , vend_zip char(10) NULL , vend_country char(5

9、0) NULL , PRIMARY KEY (vend_id) ) ENGINE=InnoDB;,注意: 不要把NULL與空串相混淆,NULL值是沒(méi)有值,他不是空串,如果指定 ,這個(gè)在NOT NULL中是允許的。 空串是一個(gè)有效值,它不是無(wú)值。 NULL值用關(guān)鍵字NULL而不是空串指定。 NULL為默認(rèn)值,如果不指定NOT NULL,則認(rèn)為指定的是NULL。,主鍵的介紹,主鍵必須是唯一的。表中的每個(gè)行必須有唯一的主鍵值。如果主鍵使用單個(gè)列,則它的值必須是唯一的。如果主鍵有多個(gè)列,則這些列的組合值必須唯一。,例:多個(gè)主鍵的情況 CREATE TABLE orderitems ( order_nu

10、m 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,觀察customers表格 CREATE TABLE customers ( cust_id int NOT NULL AUTO_INCREMENT, cust_name char(50)

11、 NOT NULL , cust_address char(50) NULL , cust_city char(50) NULL , cust_state char(5) NULL , cust_zip char(10) NULL , cust_country char(50) NULL , cust_contact char(50) NULL , cust_email char(255) NULL , PRIMARY KEY (cust_id) ) ENGINE=InnoDB;,觀察orders表格 CREATE TABLE orders ( order_num int NOT NULL A

12、UTO_INCREMENT, order_date datetime NOT NULL , cust_id int NOT NULL , PRIMARY KEY (order_num) ) ENGINE=InnoDB;,AUTO_INCREMENT告訴Mysql,本列每當(dāng)增加一行時(shí),自動(dòng)增量。每次執(zhí)行一個(gè)insert操作時(shí),Mysql自動(dòng)對(duì)該列增量,給該列賦予下一個(gè)可用的值。 給個(gè)表只允許有一個(gè)AUTO_INCREMENT列,而且它必須被索引(如:通過(guò)使它成為主鍵),指定默認(rèn)值,如果插入行時(shí)沒(méi)有給出值,Mysql允許指定此時(shí)使用的默認(rèn)值。 默認(rèn)值在 create table語(yǔ)句的列定義中的DE

13、FAULT關(guān)鍵字指定。,CREATE 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;,未給出數(shù)量的情況下數(shù)量為1,引擎類型,以上的列子使用的create table語(yǔ)句全部以ENGINE=InnoDB語(yǔ)句結(jié)束。

14、 Mysql有一個(gè)具有管理和處理數(shù)據(jù)的內(nèi)部引擎,當(dāng)你使用create table語(yǔ)句,該引擎具體創(chuàng)建表,而當(dāng)你使用select語(yǔ)句或進(jìn)行其他數(shù)據(jù)庫(kù)處理時(shí),該引擎內(nèi)部處理你的請(qǐng)求。,Mysql有多種引擎,它們具有各自不同的功能和特性,為不同的任務(wù)選擇正確的引擎能獲得良好的功能和靈活性。 InnoDB是一個(gè)可靠的事物處理引擎,它不支持全文本搜索 MyISAM是一個(gè)性能極高的引擎,它支持全文本搜索,但不支持事物處理。 注意:外鍵不能跨引擎。,更新表,語(yǔ)句格式: alter table tablename ( add column datatype null|not null constraints,

15、 change column columns datatype null|not null constraints, drop column, . ),必須給出更改的表名,所作更改的列表,例:給表添加一個(gè)列 alter table vendors add vend_phone char(20); 例:刪除剛才添加的列 alter table vendors drop column vend_phone;,用alter table定義外鍵,Alter table orderitems add comstraint fk_orderitems_orders foreign key(order_nu

16、m) references orders (order_num);,復(fù)雜表結(jié)構(gòu)的刪除,用新的列布局創(chuàng)建一個(gè)新表 使用insert select語(yǔ)句,從舊表復(fù)制到新表 重命名舊表(如果確定可以刪除它) 用舊表原來(lái)的名字重新命名新表 根據(jù)需要,重新創(chuàng)建觸發(fā)器、存儲(chǔ)過(guò)程、索引和外鍵。,刪除表,語(yǔ)句格式: drop table tablename; 例:刪除表格customers2 drop table customers2;,重命名表,語(yǔ)句格式 rename table used_name to new_name; 例:將表customers2改名為customers rename table customers2 to customers;,多個(gè)表的重命名 rename table backup_customers to customers, backup_vendors to vendors, backup_products to products;,小結(jié),本章介紹了幾條新的SQL語(yǔ)句。Create table用來(lái)創(chuàng)建新表,alter table用來(lái)更改表列,而用drop table用來(lái)刪除一個(gè)表。這些語(yǔ)句必須小心使用。本章還介

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論