




免費(fèi)預(yù)覽已結(jié)束,剩余9頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
8.1 插入數(shù)據(jù)在使用數(shù)據(jù)庫(kù)之前,數(shù)據(jù)庫(kù)中必須要有數(shù)據(jù),MySQL中使用INSERT語(yǔ)句向數(shù)據(jù)庫(kù)表中插入新的數(shù)據(jù)記錄??梢圆迦氲姆绞接校翰迦胪暾挠涗?,插入記錄的一部分,插入多條記錄以及插入另一個(gè)查詢(xún)的結(jié)果,下面將介紹這些內(nèi)容。8.1.1 為表的所有字段插入數(shù)據(jù)使用基本的INSERT語(yǔ)句插入數(shù)據(jù)要求指定表名稱(chēng)和插入到新記錄中的值?;菊Z(yǔ)法格式為:INSERT INTO table_name (column_list) VALUES (value_list);table_name指定要插入數(shù)據(jù)的表名,column_list指定要插入數(shù)據(jù)的那些列,value_list指定每個(gè)列應(yīng)對(duì)應(yīng)插入的數(shù)據(jù)。注意,使用該語(yǔ)句時(shí)字段列和數(shù)據(jù)值的數(shù)量必須相同。本章將使用樣例表person,創(chuàng)建語(yǔ)句如下:CREATE TABLE person(id INT UNSIGNED NOT NULL AUTO_INCREMENT,name CHAR(40) NOT NULL DEFAULT ,age INT NOT NULL DEFAULT 0,info CHAR(50) NULL,PRIMARY KEY (id);向表中所有字段插入值的方法有兩種:一種是指定所有字段名,另一種是完全不指定字段名?!纠?.1】在person表中,插入一條新記錄,id值為1,name值為Green,age值為21,info值為lawyer,SQL語(yǔ)句如下:執(zhí)行插入操作之前,使用SELECT語(yǔ)句查看表中的數(shù)據(jù):mysql SELECT * FROM person;Empty set (0.00 sec)結(jié)果顯示當(dāng)前表為空,沒(méi)有數(shù)據(jù),接下來(lái)執(zhí)行插入操作:mysql INSERT INTO person (id ,name, age , info) - VALUES (1,Green, 21, Lawyer);Query OK, 1 row affected (0.00 sec)語(yǔ)句執(zhí)行完畢,查看執(zhí)行結(jié)果:mysql SELECT * FROM person;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 1 | Green | 21 | Lawyer |+-+-+-+-+可以看到插入記錄成功。在插入數(shù)據(jù)時(shí),指定了person表的所有字段,因此將為每一個(gè)字段插入新的值。INSERT語(yǔ)句后面的列名稱(chēng)順序可以不是person表定義時(shí)的順序。即插入數(shù)據(jù)時(shí),不需要按照表定義的順序插入,只要保證值的順序與列字段的順序相同就可以,如下面的例子?!纠?.2】在person表中,插入一條新記錄,id值為2,name值為Suse,age值為22,info值為dancer,SQL語(yǔ)句如下:mysql INSERT INTO person (age ,name, id , info) - VALUES (22, Suse, 2, dancer);語(yǔ)句執(zhí)行完畢,查看執(zhí)行結(jié)果:mysql SELECT * FROM person;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 1 | Green | 21 | Lawyer | 2 | Suse | 22 | dancer |+-+-+-+-+由結(jié)果可以看到,INSERT語(yǔ)句成功插入了一條記錄。使用INSERT插入數(shù)據(jù)時(shí),允許列名稱(chēng)列表column_list為空,此時(shí),值列表中需要為表的每一個(gè)字段指定值,并且值的順序必須和數(shù)據(jù)表中字段定義時(shí)的順序相同。請(qǐng)看【例8.3】。【例8.3】在person表中,插入一條新記錄,SQL語(yǔ)句如下:mysql INSERT INTO person - VALUES (3,Mary, 24, Musician);Query OK, 1 row affected (0.00 sec)語(yǔ)句執(zhí)行完畢,查看執(zhí)行結(jié)果:mysql SELECT * FROM person;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 1 | Green | 21 | Lawyer | 2 | Suse | 22 | dancer | 3 | Mary | 24 | Musician |+-+-+-+-+可以看到插入記錄成功。數(shù)據(jù)庫(kù)中增加了一條id為3的記錄,其他字段值為指定的插入值。本例的INSERT語(yǔ)句中沒(méi)有指定插入列表,只有一個(gè)值列表。在這種情況下,值列表為每一個(gè)字段列指定插入值,并且這些值的順序必須和person表中字段定義的順序相同。提示雖然可以使用INSERT插入數(shù)據(jù)時(shí)忽略插入數(shù)據(jù)的列名稱(chēng),如果不包含列名稱(chēng),那么VALUES關(guān)鍵字后面的值不僅要求必須完整而且順序必須和表定義時(shí)列的順序相同。如果表的結(jié)構(gòu)被修改,對(duì)列進(jìn)行增加、刪除或者位置改變操作,這些操作將使得用這種方式插入數(shù)據(jù)時(shí)的順序也必須同時(shí)改變。如果指定列名稱(chēng),則不會(huì)受到表結(jié)構(gòu)改變的影響。8.1.2 為表的指定字段插入數(shù)據(jù)為表的指定字段插入數(shù)據(jù),就是在INSERT語(yǔ)句中只向部分字段中插入值,而其他字段的值為表定義時(shí)的默認(rèn)值?!纠?.4】在person表中,插入一條新記錄,name值為Willam,age值為20,info值為sports man,SQL語(yǔ)句如下:mysql INSERT INTO person (name, age,info) - VALUES(Willam, 20, sports man);Query OK, 1 row affected (0.00 sec)提示信息表示插入一條記錄成功。使用SELECT查詢(xún)表中的記錄,查詢(xún)結(jié)果如下:mysql SELECT * FROM person;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 1 | Green | 21 | Lawyer | 2 | Suse | 22 | dancer | 3 | Mary | 24 | Musician | 4 | Willam | 20 | sports man |+-+-+-+-+可以看到插入記錄成功。如這里的id字段,查詢(xún)結(jié)果顯示,該字段自動(dòng)添加了一個(gè)整數(shù)值4。在這里id字段為表的主鍵,不能為空,系統(tǒng)會(huì)自動(dòng)為該字段插入自增的序列值。在插入記錄時(shí),如果某些字段沒(méi)有指定插入值,MySQL將插入該字段定義時(shí)的默認(rèn)值。下面例子說(shuō)明在沒(méi)有指定列字段時(shí),插入默認(rèn)值。【例8.5】在person表中,插入一條新記錄,name值為laura,age值為25,SQL語(yǔ)句如下:mysql INSERT INTO person (name, age ) VALUES (Laura, 25);Query OK, 1 row affected (0.00 sec)語(yǔ)句執(zhí)行完畢,查看執(zhí)行結(jié)果,mysql SELECT * FROM person;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 1 | Green | 21 | Lawyer | 2 | Suse | 22 | dancer | 3 | Mary | 24 | Musician | 4 | Willam | 20 | sports man | 5 | Laura | 25 | NULL |+-+-+-+-+可以看到,在本例插入語(yǔ)句中,沒(méi)有指定info字段值,查詢(xún)結(jié)果顯示,info字段在定義時(shí)指定默認(rèn)為NULL,因此系統(tǒng)自動(dòng)為該字段插入空值。提示要保證每個(gè)插入值的類(lèi)型必須和對(duì)應(yīng)列的數(shù)據(jù)類(lèi)型匹配,如果類(lèi)型不同,將無(wú)法插入,并且MySQL會(huì)產(chǎn)生錯(cuò)誤。8.1.3 同時(shí)插入多條記錄INSERT語(yǔ)句可以同時(shí)向數(shù)據(jù)表中插入多條記錄,插入時(shí)指定多個(gè)值列表,每個(gè)值列表之間用逗號(hào)分隔開(kāi),基本語(yǔ)法格式如下,INSERT INTO table_name (column_list) VALUES (value_list1), (value_list2),.,(value_listn);value_list1,value_list2,value_listn;分別表示第n個(gè)插入記錄的字段的值列表。【例8.6】在person表中,在name、age和info字段指定插入值,同時(shí)插入3條新記錄,SQL語(yǔ)句如下:INSERT INTO person(name, age, info)VALUES (Evans,27, secretary),(Dale,22, cook),(Edison,28, singer);語(yǔ)句執(zhí)行結(jié)果如下:mysql INSERT INTO person(name, age, info) - VALUES (Evans,27, secretary), - (Dale,22, cook), - (Edison,28, singer);Query OK, 3 rows affected (0.00 sec)Records: 3 Duplicates: 0 Warnings: 0語(yǔ)句執(zhí)行完畢,查看執(zhí)行結(jié)果:mysql SELECT * FROM person;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 1 | Green | 21 | Lawyer | 2 | Suse | 22 | dancer | 3 | Mary | 24 | Musician | 4 | Willam | 20 | sports man | 5 | Laura | 25 | NULL | 6 | Evans | 27 | secretary | 7 | Dale | 22 | cook | 8 | Edison | 28 | singer |+-+-+-+-+由結(jié)果可以看到,INSERT語(yǔ)句執(zhí)行后,person表中添加了3條記錄,其name和age字段分別為指定的值,id字段為MySQL添加的默認(rèn)的自增值。使用INSERT同時(shí)插入多條記錄時(shí),MySQL會(huì)返回一些在執(zhí)行單行插入時(shí)沒(méi)有的額外信息,這些包含數(shù)值的字符串的意思分別是: Records 表明插入的記錄條數(shù)。 Duplicates 表明插入時(shí)被忽略的記錄,原因可能是這些記錄包含了重復(fù)的主鍵值。 Warnings 表明有問(wèn)題的數(shù)據(jù)值,例如發(fā)生數(shù)據(jù)類(lèi)型轉(zhuǎn)換。【例8.7】在person表中,不指定插入列表,同時(shí)插入2條新記錄,SQL語(yǔ)句如下:INSERT INTO person VALUES (9,Harry,21, magician), (NULL,Harriet,19, pianist);語(yǔ)句執(zhí)行結(jié)果如下,mysql INSERT INTO person - VALUES (9,Harry,21, magician), - (NULL,Harriet,19, pianist);Query OK, 2 rows affected (0.01 sec)Records: 2 Duplicates: 0 Warnings: 0語(yǔ)句執(zhí)行完畢,查看執(zhí)行結(jié)果,mysql SELECT * FROM person;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 1 | Green | 21 | Lawyer | 2 | Suse | 22 | dancer | 3 | Mary | 24 | Musician | 4 | Willam | 20 | sports man | 5 | Laura | 25 | NULL | 6 | Evans | 27 | secretary | 7 | Dale | 22 | cook | 8 | Edison | 28 | singer | 9 | Harry | 21 | magician | 10 | Harriet | 19 | pianist |+-+-+-+-+由結(jié)果可以看到,INSERT語(yǔ)句執(zhí)行后,person表中添加了2條記錄,與前面介紹單個(gè)INSERT語(yǔ)法不同,person表名后面沒(méi)有指定插入字段列表,因此VALUES關(guān)鍵字后面的多個(gè)值列表都要為每一條記錄的每一個(gè)字段列指定插入值,并且這些值的順序必須和person表中字段定義的順序相同,帶有AUTO_INCREMENT屬性的id字段插入NULL值,系統(tǒng)會(huì)自動(dòng)為該字段插入唯一的自增編號(hào)。提示一個(gè)同時(shí)插入多行記錄的INSERT語(yǔ)句可以等同于多個(gè)單行插入INSERT語(yǔ)句,但是多行的INSERT語(yǔ)句在處理過(guò)程中,效率更高,因?yàn)镸ySQL執(zhí)行單條INSERT語(yǔ)句插入多行數(shù)據(jù),比使用多條INSERT語(yǔ)句快。所以在插入多條記錄時(shí),最好選擇使用單條INSERT語(yǔ)句的方式插入。8.1.4 將查詢(xún)結(jié)果插入到表中INSERT語(yǔ)句用來(lái)給數(shù)據(jù)表插入記錄時(shí),指定插入記錄的列值。INSERT還可以將SELECT語(yǔ)句查詢(xún)的結(jié)果插入到表中,如果想要從另外一個(gè)表中合并個(gè)人信息到person表,不需要把每一條記錄的值一個(gè)一個(gè)輸入,只需要使用一條INSERT語(yǔ)句和一條SELECT語(yǔ)句組成的組合語(yǔ)句即可快速地從一個(gè)或多個(gè)表中向一個(gè)表中插入多個(gè)行?;菊Z(yǔ)法格式如下:INSERT INTO table_name1 (column_list1)SELECT (column_list2) FROM table_name2 WHERE (condition)table_name1指定待插入數(shù)據(jù)的表;column_list1指定待插入表中要插入數(shù)據(jù)的那些列;table_name2指定插入數(shù)據(jù)是從哪個(gè)表中查詢(xún)出來(lái)的;column_list2指定數(shù)據(jù)來(lái)源表的查詢(xún)列,該列表必須和column_list1列表中字段個(gè)數(shù)相同,數(shù)據(jù)類(lèi)型相同;condition指定SELECT語(yǔ)句的查詢(xún)條件?!纠?.8】從person_old表中查詢(xún)所有的記錄,并將其插入到person表中。首先,創(chuàng)建一個(gè)名為person_old的數(shù)據(jù)表,其表結(jié)構(gòu)與person結(jié)構(gòu)相同,SQL語(yǔ)句如下:CREATE TABLE person_old(id INT UNSIGNED NOT NULL AUTO_INCREMENT,name CHAR(40) NOT NULL DEFAULT ,age INT NOT NULL DEFAULT 0,info CHAR(50) NULL,PRIMARY KEY (id);向person_old表中添加兩條記錄:mysql INSERT INTO person_old - VALUES (10,Harry,20, student), (11,Beckham,31, police);Query OK, 2 rows affected (0.00 sec)Records: 2 Duplicates: 0 Warnings: 0mysql SELECT * FROM person_old;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 11 | Harry | 20 | student | 12 | Beckham | 31 | police |+-+-+-+-+2 rows in set (0.02 sec)可以看到,插入記錄成功,peson_old表中現(xiàn)在有兩條記錄。接下來(lái)將person_old表中所有的記錄插入person表中,SQL語(yǔ)句如下:INSERT INTO person(id, name, age, info)SELECT id, name, age, info FROM person_old;語(yǔ)句執(zhí)行結(jié)果如下,mysql INSERT INTO person(id, name, age, info) - SELECT id, name, age, info FROM person_old;Query OK, 2 rows affected (0.00 sec)Records: 2 Duplicates: 0 Warnings: 0語(yǔ)句執(zhí)行完畢,查看執(zhí)行結(jié)果:mysql SELECT * FROM person;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 1 | Green | 21 | Lawyer | 2 | Suse | 22 | dancer | 3 | Mary | 24 | Musician | 4 | Willam | 20 | sports man | 5 | Laura | 25 | NULL | 6 | Evans | 27 | secretary | 7 | Dale | 22 | cook | 8 | Edison | 28 | singer | 9 | Harry | 21 | magician | 10 | Harriet | 19 | pianist | 11 | Harry | 20 | student | 12 | Beckham | 31 | police |+-+-+-+-+由結(jié)果可以看到,INSERT語(yǔ)句執(zhí)行后,person表中多了2條記錄,這兩條記錄和person_old表中的記錄完全相同,數(shù)據(jù)轉(zhuǎn)移成功。這里的id字段為自增的主鍵,在插入的時(shí)候要保證該字段值的唯一性,如果不能確定,可以插入的時(shí)候忽略該字段,只插入其他字段的值。提示這個(gè)例子中使用的person_old表和person表的定義相同,事實(shí)上,MySQL不關(guān)心SELECT返回的列名,它根據(jù)列的位置進(jìn)行插入,SELECT的第一列對(duì)應(yīng)待插入表的第一列,第二列對(duì)應(yīng)待插入表的第二列,等等。即使不同結(jié)果的表之間也可以方便的轉(zhuǎn)移數(shù)據(jù)。8.2 更新數(shù)據(jù)表中有數(shù)據(jù)之后,接下來(lái)可以對(duì)數(shù)據(jù)進(jìn)行更新操作,MySQL中使用UPDATE語(yǔ)句更新表中的記錄,可以更新特定的行或者同時(shí)更新所有的行?;菊Z(yǔ)法結(jié)構(gòu)如下:UPDATE table_name SET column_name1 = value1,column_name2=value2,column_namen=valuenWHERE (condition);column_name1,column_name2,column_namen為指定更新的字段的名稱(chēng);value1,value2,valuen為相對(duì)應(yīng)的指定字段的更新值;condition指定更新的記錄需要滿(mǎn)足的條件。更新多個(gè)列時(shí),每個(gè)“列-值”對(duì)之間用逗號(hào)隔開(kāi),最后一列之后不需要逗號(hào)?!纠?.9】在person表中,更新id值為10的記錄,將age字段值改為15,將name字段值改為L(zhǎng)iMing,SQL語(yǔ)句如下:UPDATE person SET age = 15, name=LiMing WHERE id = 10;更新操作執(zhí)行前可以使用SELECT語(yǔ)句查看當(dāng)前的數(shù)據(jù):mysql SELECT * FROM person WHERE id=10;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 10 | Harry | 20 | student |+-+-+-+-+由結(jié)果可以看到更新之前,id等于10的記錄的name字段值為harry,age字段值為20,下面使用UPDATE語(yǔ)句更新數(shù)據(jù),語(yǔ)句執(zhí)行結(jié)果如下:mysql UPDATE person SET age = 15, name=LiMing WHERE id = 10;Query OK, 1 row affected (0.00 sec)Rows matched: 1 Changed: 1 Warnings: 0語(yǔ)句執(zhí)行完畢,查看執(zhí)行結(jié)果:mysql SELECT * FROM person WHERE id=10;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 10 | LiMing | 15 | student |+-+-+-+-+由結(jié)果可以看到,id等于10的記錄中的name和age字段的值已經(jīng)成功被修改為指定值。提示保證UPDATE以WHERE子句結(jié)束,通過(guò)WHERE子句指定被更新的記錄所需要滿(mǎn)足的條件,如果忽略WHERE子句,MySQL將更新表中所有的行?!纠?.10】在person表中,更新age值為19到22的記錄,將info字段值都改為student,SQL語(yǔ)句如下:UPDATE person SET info=student WHERE id BETWEEN 19 AND 22;更新操作執(zhí)行前可以使用SELECT語(yǔ)句查看當(dāng)前的數(shù)據(jù):mysql SELECT * FROM person WHERE age BETWEEN 19 AND 22;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 1 | Willam | 20 | sports man | 3 | Green | 21 | Lawyer | 4 | Suse | 22 | dancer | 6 | Dale | 22 | cook | 8 | Harry | 21 | magician | 9 | Harriet | 19 | pianist |+-+-+-+-+可以看到,這些age字段值在19到22之間的記錄的info字段值各不相同。下面使用UPDATE語(yǔ)句更新數(shù)據(jù),語(yǔ)句執(zhí)行結(jié)果如下:mysql UPDATE person SET info=student WHERE age BETWEEN 19 AND 22;Query OK, 6 rows affected (0.00 sec)Rows matched: 6 Changed: 6 Warnings: 0語(yǔ)句執(zhí)行完畢,查看執(zhí)行結(jié)果:mysql SELECT * FROM person WHERE age BETWEEN 19 AND 22;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 1 | Willam | 20 | student | 3 | Green | 21 | student | 4 | Suse | 22 | student | 6 | Dale | 22 | student | 8 | Harry | 21 | student | 9 | Harriet | 19 | student |+-+-+-+-+由結(jié)果可以看到,UPDATE執(zhí)行后,成功將表中符合條件的記錄的info字段值都改為student。8.3 刪除數(shù)據(jù)從數(shù)據(jù)表中刪除數(shù)據(jù)使用DELETE語(yǔ)句,DELETE語(yǔ)句允許WHERE子句指定刪除條件。DELETE語(yǔ)句基本語(yǔ)法格式如下:DELETE FROM table_name WHERE ;table_name指定要執(zhí)行刪除操作的表;“WHERE ”為可選參數(shù),指定刪除條件,如果沒(méi)有WHERE子句,DELETE語(yǔ)句將刪除表中的所有記錄?!纠?.11】在person表中,刪除id等于10的記錄,SQL語(yǔ)句如下:執(zhí)行刪除操作前使用SELECT語(yǔ)句查看當(dāng)前id=10的記錄:mysql SELECT * FROM person WHERE id=10;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 10 | LiMing | 15 | student |+-+-+-+-+可以看到,現(xiàn)在表中有id=10的記錄,下面使用DELETE語(yǔ)句刪除記錄,語(yǔ)句執(zhí)行結(jié)果如下:mysql DELETE FROM person WHERE id = 10;Query OK, 1 row affected (0.02 sec)語(yǔ)句執(zhí)行完畢,查看執(zhí)行結(jié)果:mysql SELECT * FROM person WHERE id=10;Empty set (0.00 sec)查詢(xún)結(jié)果為空,說(shuō)明刪除操作成功?!纠?.12】在person表中,使用DELETE語(yǔ)句同時(shí)刪除多條記錄,在前面UPDATE語(yǔ)句中將age字段值在19到22之間的記錄的info字段值修改為student,在這里刪除這些記錄,SQL語(yǔ)句如下:DELETE FROM person WHERE age BETWEEN 19 AND 22;執(zhí)行刪除操作前使用SELECT語(yǔ)句查看當(dāng)前的數(shù)據(jù):mysql SELECT * FROM person WHERE age BETWEEN 19 AND 22;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 1 | Willam | 20 | student | 3 | Green | 21 | student | 4 | Suse | 22 | student | 6 | Dale | 22 | student | 8 | Harry | 21 | student | 9 | Harriet | 19 | student |+-+-+-+-+可以看到,這些age字段值在19到22之間的記錄存在表中。下面使用DELETE刪除這些記錄:mysql DELETE FROM person WHERE age BETWEEN 19 AND 22;Query OK, 6 rows affected (0.00 sec)語(yǔ)句執(zhí)行完畢,查看執(zhí)行結(jié)果:mysql SELECT * FROM person WHERE age BETWEEN 19 AND 22;Empty set (0.00 sec)查詢(xún)結(jié)果為空,刪除多條記錄成功?!纠?.13】刪除person表中所有記錄,SQL語(yǔ)句如下:DELETE FROM person;執(zhí)行刪除操作前使用SELECT語(yǔ)句查看當(dāng)前的數(shù)據(jù):mysql SELECT * FROM person;+-+-+-+-+| id | name | age | info |+-+-+-+-+| 2 | Laura | 25 | NULL | 5 | Evans | 27 | secretary | 7 | Edison | 28 | singer | 11 | Beckham | 31 | police |+-+-+-+-+結(jié)果顯示person表中還有4條記錄,執(zhí)行DELETE語(yǔ)句刪除這4條記錄:mysql DELETE FROM person;Query OK, 4 rows affected (0.00 sec)語(yǔ)句執(zhí)行完畢,查看執(zhí)行結(jié)果:mysql SELECT * FROM person;Empty set (0.00 sec)查詢(xún)結(jié)果為空,刪除表中所有記錄成功,現(xiàn)在person表中已經(jīng)沒(méi)有任何數(shù)據(jù)記錄。提示如果想刪除表中的所有記錄,還可以使用TRUNCATE TABLE語(yǔ)句,TRUNCATE將直接刪除原來(lái)的表并重新創(chuàng)建一個(gè)表,其語(yǔ)法結(jié)構(gòu)為T(mén)RUNCATE TABLE table_name。TRUNCATE直接刪除表而不是刪除記錄,因此執(zhí)行速度比DELETE快。8.4 綜合案例記錄的插入、更新和刪除本章重點(diǎn)介紹了數(shù)據(jù)表中數(shù)據(jù)的插入、更新和刪除操作。MySQL中可以靈活的對(duì)數(shù)據(jù)進(jìn)行插入與更新,MySQL中對(duì)數(shù)據(jù)的操作沒(méi)有任何提示,因此在更新和刪除數(shù)據(jù)時(shí),一要謹(jǐn)慎小心,查詢(xún)條件一定要準(zhǔn)確,避免造成數(shù)據(jù)的丟失。本章的綜合案例包含了對(duì)數(shù)據(jù)表中數(shù)據(jù)的基本操作,包括記錄的插入、更新和刪除。1. 案例目的創(chuàng)建表,對(duì)數(shù)據(jù)表進(jìn)行插入、更新和刪除操作,掌握表數(shù)據(jù)基本操作。表8.1 books表結(jié)構(gòu)字段名字段說(shuō)明數(shù)據(jù)類(lèi)型主鍵外鍵非空唯一自增b_id書(shū)編號(hào)INT(11)是否是是否b_name書(shū)名VARCHAR(50)否否是否否authors作者VARCHAR(100)否否是否否price價(jià)格FLOAT否否是否否pubdate出版日期YEAR否否是否否note說(shuō)明VARCHAR(100)否否否否否num庫(kù)存INT(11)否否是否否表8.2 books表中的記錄b_idb_nameauthorspricepubdatediscountnotenum1Tale of AAADickes2319950.85novel112EmmaTJane lura3519930.70joke223Story of JaneJane Tim4020010.80novel04Lovey DayGeorge Byron2020050.85novel305Old LandHonore Blade3020100.60law06The BattleUpton Sara3019990.65medicine407Rose HoodRichard Haggard2820080.90cartoon282. 案例操作過(guò)程步驟1:創(chuàng)建數(shù)據(jù)表books,并按【表8.1】結(jié)構(gòu)定義各個(gè)字段。CREATE TABLE books(id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,name VARCHAR(40) NOT NULL,authors VARCHAR(200) NOT NULL,price INT(11) NOT NULL,pubdate YEAR NOT NULL,note VARCHAR(255) NULL,num INT NOT NULL DEFAULT 0);步驟2:將【表8.2】中的記錄插入books表中,分別使用不同的方法插入記錄,執(zhí)行過(guò)程如下。表創(chuàng)建好之后,使用SELECT語(yǔ)句查看表中的數(shù)據(jù),結(jié)果如下:mysql SELECT * FROM books;Empty set (0.00 sec)可以看到,當(dāng)前表中為空,沒(méi)有任何數(shù)據(jù),下面向表中插入記錄。 指定所有字段名稱(chēng)插入記錄,SQL語(yǔ)句如下:mysql INSERT INTO books - (id, name, authors, price, pubdate,note,num) - VALUES(1, Tale of AAA, Dickes, 23, 1995, novel,11);Query OK, 1 row affected (0.02 sec)語(yǔ)句執(zhí)行成功,插入了一條記錄。 不指定字段名稱(chēng)插入記錄,SQL語(yǔ)句如下:mysql INSERT INTO books - VALUES (2,EmmaT,Jane lura,35,1993, joke,22);Query OK, 1 row affected (0.01 sec)語(yǔ)句執(zhí)行成功,插入了一條記錄。使用SELECT語(yǔ)句查看當(dāng)前表中的數(shù)據(jù):mysql SELECT * FROM books;+-+-+-+-+-+-+-+| id | name | authors | price | pubdate | note | num |+-+-+-+-+-+-+-+| 1 | Tale of AAA | Dickes | 23 | 1995 | novel | 11 | 2 | EmmaT | Jane lura | 35 | 1993 | joke | 22 |+-+-+-+-+-+-+-+2 rows in set (0.00 sec)可以看到,兩條語(yǔ)句分別成功插入了兩條記錄。 同時(shí)插入多條記錄。使用INSERT語(yǔ)句將剩下的多條記錄插入表中,SQL語(yǔ)句如下:mysql INSERT INTO books - VALUES(3, Story of Jane, Jane Tim, 40, 2001, novel, 0), - (4, Lovey Day, George Byron, 20, 2005, novel, 30), - (5, Old Land, Honore Blade, 30, 2010, law,0), - (6,The Battle,Upton Sara,33,1999, medicine,40), - (7,Rose Hood,Richard Kale,28,2008, cartoon,28);Query OK, 5 rows affected (0.00 sec)Records: 5 Duplicates: 0 Warnings: 0由結(jié)果可以看到,語(yǔ)句執(zhí)行成功,總共插入了5條記錄,使用SELECT語(yǔ)句查看表中所有的記錄:mysql SELECT * FROM books;+-+-+-+-+-+-+-+| id | name | authors | price | pubdate | note | num |+-+-+-+-+-+-+-+| 1 | Tale of AAA | Dickes | 23 | 1995 | novel | 11 | 2 | EmmaT | Jane lura | 35 | 1993 | joke | 22 | 3 | Story of Jane | Jane Tim | 40 | 2001 | novel | 0 | 4 | Lovey Day | George Byron | 20 | 2005 | novel | 30 | 5 | Old Land | Honore Blade | 30 | 2010 | law | 0 | 6 | The Battle | Upton Sara | 33 | 1999 | medicine | 40 | 7 | Rose Hood | Richard Kale | 28 | 2008 | cartoon | 28 |+-+-+-+-+-+-+-+7 rows in set (0.00 sec)由結(jié)果可以看到,所有記錄成功插入表中。步驟3:將小說(shuō)類(lèi)型(novel)的書(shū)的價(jià)格都增加5。執(zhí)行該操作的SQL語(yǔ)句
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 經(jīng)濟(jì)型酒店的國(guó)際化發(fā)展策略考核試卷
- 稀土元素在石油化工催化劑中的應(yīng)用考核試卷
- 自動(dòng)搬運(yùn)設(shè)備在半導(dǎo)體生產(chǎn)線(xiàn)的作用考核試卷
- 跨境人民幣資金池業(yè)務(wù)合作協(xié)議
- 物流貨物保險(xiǎn)理賠流程服務(wù)合同
- 零售行業(yè)智能攝像頭租賃與商品追溯服務(wù)協(xié)議
- 智能門(mén)鎖配置安裝與定期檢修服務(wù)條款
- 工業(yè)廢水回用與水資源綜合利用合作協(xié)議
- 考研保過(guò)班協(xié)議全面輔導(dǎo)與考試技巧提升合同
- 智能家居影視廣告拍攝與市場(chǎng)推廣服務(wù)合同
- EBSD初級(jí)原理和簡(jiǎn)單應(yīng)用
- ICU成人患者靜脈血管通路裝置評(píng)估與選
- DL∕T 2447-2021 水電站防水淹廠房安全檢查技術(shù)規(guī)程
- 球閥設(shè)計(jì)計(jì)算書(shū)
- 2024年6月29日四川省地市州事業(yè)單位選調(diào)筆試真題及解析
- 12月改革大學(xué)英語(yǔ)四級(jí)聽(tīng)力技巧省公開(kāi)課金獎(jiǎng)全國(guó)賽課一等獎(jiǎng)微課獲獎(jiǎng)?wù)n件
- 餐飲服務(wù)外包食堂衛(wèi)生管理方案
- 綠色設(shè)計(jì)產(chǎn)品評(píng)價(jià)技術(shù)規(guī)范 粉末冶金氣門(mén)座
- 醫(yī)用高分子材料行業(yè)發(fā)展趨勢(shì)
- 2024年醫(yī)學(xué)高級(jí)職稱(chēng)-皮膚與性病學(xué)(醫(yī)學(xué)高級(jí))歷年考試高頻考點(diǎn)試題附帶答案
- 中國(guó)公民健康素養(yǎng)66條知識(shí)講座課件
評(píng)論
0/150
提交評(píng)論