真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySQL怎么創(chuàng)建多個(gè)表的更新與刪除

本篇內(nèi)容主要講解“MySQL怎么創(chuàng)建多個(gè)表的更新與刪除”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“MySQL怎么創(chuàng)建多個(gè)表的更新與刪除”吧!

創(chuàng)新互聯(lián)建站專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、泉山網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5響應(yīng)式網(wǎng)站、商城網(wǎng)站制作、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為泉山等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

1.涉及多個(gè)表的更新與刪除
   創(chuàng)建測(cè)試用表:

mysql> create table users1
   -> (
   -> uid tinyint unsigned,
   -> uname varchar(255),
   -> gid tinyint unsigned
   -> );
Query OK, 0 rows affected (0.06 sec)

mysql> create table groups1
   -> (
   -> gid tinyint unsigned,
   -> gname varchar(255)
   -> );
Query OK, 0 rows affected (0.02 sec)

[@more@]mysql> insert into users1 values (0, 'root', 0);
Query OK, 1 row affected (0.00 sec)

mysql> insert into users1 values (201, 'ggyy', 101);
Query OK, 1 row affected (0.00 sec)

mysql> insert into users1 values (202, 'ssff', 101);
Query OK, 1 row affected (0.00 sec)

mysql> insert into groups1 values (0, 'root');
Query OK, 1 row affected (0.00 sec)

mysql> insert into groups1 values (101, 'guest');
Query OK, 1 row affected (0.00 sec)

mysql> select * from users1;
+------+-------+------+
| uid  | uname | gid  |
+------+-------+------+
|    0 | root  |    0 |
|  201 | ggyy  |  101 |
|  202 | ssff  |  101 |
+------+-------+------+
3 rows in set (0.00 sec)

mysql> select * from groups1;
+------+-------+
| gid  | gname |
+------+-------+
|    0 | root  |
|  101 | guest |
+------+-------+
2 rows in set (0.00 sec)

   下面的語句將users1表中屬于guest組的用戶的uid加10:

mysql> update users1, groups1 set users1.uid = users1.uid + 10 where users1.gid = groups1.gid and gr
oups1.gname = 'guest';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> select * from users1;
+------+-------+------+
| uid  | uname | gid  |
+------+-------+------+
|    0 | root  |    0 |
|  211 | ggyy  |  101 |
|  212 | ssff  |  101 |
+------+-------+------+
3 rows in set (0.00 sec)

   下面的語句將兩個(gè)表中g(shù)uest組的gid變?yōu)?02:

mysql> update users1, groups1 set users1.gid = 102, groups1.gid = 102 where users1.gid = groups1.gid
and groups1.gid = 101;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql> select * from users1;
+------+-------+------+
| uid  | uname | gid  |
+------+-------+------+
|    0 | root  |    0 |
|  211 | ggyy  |  102 |
|  212 | ssff  |  102 |
+------+-------+------+
3 rows in set (0.00 sec)

mysql> select * from groups1;
+------+-------+
| gid  | gname |
+------+-------+
|    0 | root  |
|  102 | guest |
+------+-------+
2 rows in set (0.00 sec)

   但是,這樣的語句就會(huì)產(chǎn)生錯(cuò)誤的結(jié)果:

mysql> update users1, groups1 set users1.gid = 102, groups1.gid = 102 where users1.gid = groups1.gid
and groups1.gname = 'guest';
Query OK, 2 rows affected (0.01 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> select * from users1;
+------+-------+------+
| uid  | uname | gid  |
+------+-------+------+
|    0 | root  |    0 |
|  211 | ggyy  |  102 |
|  212 | ssff  |  101 |
+------+-------+------+
3 rows in set (0.00 sec)

mysql> select * from groups1;
+------+-------+
| gid  | gname |
+------+-------+
|    0 | root  |
|  102 | guest |
+------+-------+
2 rows in set (0.00 sec)

   ssff用戶的gid沒有更新,想不太明白原因。

   下面的語句刪除users1表中屬于root組的用戶的記錄:

mysql> delete from users1 using users1, groups1 where users1.gid = groups1.gid and groups1.gname = '
root';
Query OK, 1 row affected (0.00 sec)

mysql> select * from users1;
+------+-------+------+
| uid  | uname | gid  |
+------+-------+------+
|  211 | ggyy  |  102 |
|  212 | ssff  |  102 |
+------+-------+------+
2 rows in set (0.02 sec)

mysql> select * from groups1;
+------+-------+
| gid  | gname |
+------+-------+
|    0 | root  |
|  102 | guest |
+------+-------+
2 rows in set (0.00 sec)

   該刪除語句可以寫成這樣的形式:“delete users1 from users1, groups1 where users1.gid = groups1.gid and groups1.gname = 'root';”。注意,from前面的是要?jiǎng)h除記錄的表,后面的是刪除操作涉及的幾個(gè)表(本例中是內(nèi)連接,可以為其它連接類型)。

   下面的語句刪除users1表中屬于guest組的用戶的記錄以及groups1表中g(shù)uest組的記錄。

mysql> delete from users1, groups1 using users1, groups1 where users1.gid = groups1.gid and groups1.
gname = 'guest';
Query OK, 3 rows affected (0.00 sec)

mysql> select * from users1;
Empty set (0.02 sec)

mysql> select * from groups1;
+------+-------+
| gid  | gname |
+------+-------+
|    0 | root  |
+------+-------+
1 row in set (0.00 sec)

   同樣,該刪除語句可以寫成這樣的形式:“delete users1, groups1 from users1, groups1 where users1.gid = groups1.gid and groups1.gname = 'guest';”。


2.隨機(jī)選擇記錄

   將ORDER BY子句和RAND()函數(shù)結(jié)合使用,可以達(dá)到隨機(jī)選擇表中記錄的效果:

mysql> select * from oraleng;
+--------------------------+--------------------------+
| ask                      | answer                   |
+--------------------------+--------------------------+
| How do you do?           | How do you do?           |
| How are you?             | Fine.Thank you.          |
| What's your name?        | My name is Jack Sparrow. |
| Where are you from?      | I'm from maldives.       |
| What's the weather like? | It's fine.               |
| What time is it now?     | It's seven o'clock.      |
| What day is it today?    | It's Wednesday.          |
+--------------------------+--------------------------+
7 rows in set (0.00 sec)

mysql> select * from oraleng order by rand() limit 1;
+--------------+-----------------+
| ask          | answer          |
+--------------+-----------------+
| How are you? | Fine.Thank you. |
+--------------+-----------------+
1 row in set (0.02 sec)

mysql> select * from oraleng order by rand() limit 1;
+-----------------------+-----------------+
| ask                   | answer          |
+-----------------------+-----------------+
| What day is it today? | It's Wednesday. |
+-----------------------+-----------------+
1 row in set (0.02 sec)

mysql> select * from oraleng order by rand() limit 1;
+-------------------+--------------------------+
| ask               | answer                   |
+-------------------+--------------------------+
| What's your name? | My name is Jack Sparrow. |
+-------------------+--------------------------+
1 row in set (0.02 sec)

mysql> select * from oraleng order by rand() limit 2;
+----------------------+---------------------+
| ask                  | answer              |
+----------------------+---------------------+
| What time is it now? | It's seven o'clock. |
| Where are you from?  | I'm from maldives.  |
+----------------------+---------------------+
2 rows in set (0.02 sec)


3.控制SELECT行為

   下面是一些能夠改變SELECT語句行為的關(guān)鍵字:

   DISTINCT:刪除結(jié)果集中的包含重復(fù)值記錄。
   SQL_CALC_FOUND_ROWS:計(jì)算符合查詢的總行數(shù)。不受LIMIT影響,通過調(diào)用FOUND_ROWS函數(shù)可以得到結(jié)果。
   SQL_CACHE和SQL_NO_CACHE:指定查詢結(jié)果是否需要高速緩存。
   SQL_BUFFER_RESULT:強(qiáng)制將查詢結(jié)果存儲(chǔ)到一個(gè)臨時(shí)表。這種緩沖消除了對(duì)查詢的表的鎖定。
   SQL_BIG_RESULT和SQL_SMALL_RESULT:指定結(jié)果集的期望大小。這樣可幫助找到對(duì)返回的記錄進(jìn)行排序和存儲(chǔ)的最佳方法(基于磁盤或者內(nèi)存中的臨時(shí)表)。
   SQL_HIGH_PRIORITY:提升與UPDATE, INSERT和DELETE語句相競(jìng)爭的查詢的優(yōu)先級(jí)??梢栽诜泵Φ臄?shù)據(jù)庫服務(wù)器上快速地執(zhí)行查詢。


4.從文件導(dǎo)入和向文件導(dǎo)出

   可以使用LOAD DATA INFILE語句將文件中的數(shù)據(jù)導(dǎo)入到表中,也可以使用SELECT...INTO OUTFILE語句將表中的記錄導(dǎo)出到文件中。

 1)分隔符

   在上述語句中,使用一些子句和關(guān)鍵字指定文件中的數(shù)據(jù)格式。

   LINES TERMINATED BY子句:指定記錄的結(jié)束符。(默認(rèn)情況下,n表示新的一行。)
   FIELDS子句:指定字段的分割符。FIELDS后面跟著TERMINATED BY, ESCAPED BY, ENCLOSED BY等關(guān)鍵字中的一個(gè)或多個(gè)。
               TERMINATED BY指定字段的結(jié)束符(默認(rèn)為t);ESCAPED BY用于跳過特殊的字符(默認(rèn)為反斜線);ENCLOSED BY指定包圍字段的符號(hào)(默認(rèn)無)。

 2)從文件中導(dǎo)入數(shù)據(jù)

   E:downloadcontact.txt是一個(gè)包含著一組聯(lián)系人信息的文本文件,其內(nèi)容如下:

河北聯(lián)通石家莊分公司,張少蘭,0311-87052200
河北聯(lián)通滄州分公司,王建榮,0317-3520079
河北聯(lián)通保定分公司,孫鳳睿,0312-3075574
河北聯(lián)通廊坊分公司,龐海靜,0316-2684535
河北聯(lián)通秦皇島分公司,代艷麗,0335-3050172
......

   現(xiàn)在創(chuàng)建一個(gè)用于存儲(chǔ)這些聯(lián)系人信息的表:

mysql> create table contact
   -> (
   -> name varchar(20),
   -> sex enum('男','女'),
   -> tel bigint,
   -> email varchar(50),
   -> company varchar(50)
   -> );
Query OK, 0 rows affected (0.13 sec)

   使用Load DATA INFILE語句向其中導(dǎo)入數(shù)據(jù):

mysql> load data infile 'E:downloadcontact.txt' into table contact
   -> fields terminated by ',' escaped by '-' lines terminated by 'rn'
   -> (company, name, tel);
Query OK, 46 rows affected (0.02 sec)
Records: 46  Deleted: 0  Skipped: 0  Warnings: 0

mysql> select * from contact limit 7;
+--------+------+-------------+-------+----------------------+
| name   | sex  | tel         | email | company              |
+--------+------+-------------+-------+----------------------+
| 張少蘭 | NULL | 31187052200 | NULL  | 河北聯(lián)通石家莊分公司 |
| 王建榮 | NULL |  3173520079 | NULL  | 河北聯(lián)通滄州分公司   |
| 孫鳳睿 | NULL |  3123075574 | NULL  | 河北聯(lián)通保定分公司   |
| 龐海靜 | NULL |  3162684535 | NULL  | 河北聯(lián)通廊坊分公司   |
| 代艷麗 | NULL |  3353050172 | NULL  | 河北聯(lián)通秦皇島分公司 |
| 齊衛(wèi)花 | NULL |  3132018225 | NULL  | 河北聯(lián)通張家口分公司 |
| 劉守政 | NULL |  3182698169 | NULL  | 河北聯(lián)通衡水分公司   |
+--------+------+-------------+-------+----------------------+
7 rows in set (0.00 sec)

   幾點(diǎn)說明:

 a.進(jìn)行導(dǎo)入的用戶必須具有FILE權(quán)限。
 b.文件路徑中的“”符號(hào)要用“”來代替。
 c.當(dāng)文件中各部分內(nèi)容與表中的字段數(shù)量或順序不符時(shí),可以在LOAD DATA INFILE語句的最后指定一個(gè)字段名的列表,來將文件中的各部分內(nèi)容映射到正確的字段中。

   介紹LOAD DATA INFILE語句中的一些關(guān)鍵字:

   LOCAL:指定INFILE是在客戶機(jī)的文件系統(tǒng)上。默認(rèn)情況下,認(rèn)為在服務(wù)器上。
   LOW_PRIORITY:延遲LOAD DATA語句的執(zhí)行,直到?jīng)]有其它的客戶端從表中讀取為止。
   IGNORE, REPLACE:當(dāng)插入的新記錄的一個(gè)鍵與已存在的記錄的重復(fù)時(shí),跳過該條新記錄或用新記錄替換已存在的記錄。

 3)向文件中導(dǎo)出記錄

   使用SELECT INTO...OUTFILE語句向文本文件contact2.txt中導(dǎo)出記錄:

mysql> select name, tel, company from contact where name like '張%'
   -> into outfile 'E:downloadcontact2.txt'
   -> fields enclosed by '"' lines terminated by 'rn';
Query OK, 4 rows affected (0.06 sec)

   查看一下該文件的內(nèi)容:

"張少蘭"    "31187052200"    "河北聯(lián)通石家莊分公司"
"張雷"    "3125902030"    "河北電信保定分公司"
"張東旺"    "3155960019"    "遷安市星宇商貿(mào)有限公司"
"張蕾"    "3123100913"    "保定企盟信息網(wǎng)絡(luò)有限公司"

   幾點(diǎn)說明:

 a.進(jìn)行導(dǎo)出的用戶必須具有FILE權(quán)限。
 b.導(dǎo)出文件事先不能存在。否則會(huì)發(fā)生錯(cuò)誤:

ERROR 1086 (HY000): File 'E:downloadcontact2.txt' already exists

 c.對(duì)于二進(jìn)制數(shù)據(jù),如BLOB類型,可以使用INTO DUMPFILE子句代替INTO OUTFILE子句。這樣MySQL將以一個(gè)單獨(dú)行的格式向文件寫入數(shù)據(jù)(沒有字段或記錄結(jié)束符),從而避免破壞二進(jìn)制數(shù)據(jù)。

到此,相信大家對(duì)“MySQL怎么創(chuàng)建多個(gè)表的更新與刪除”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


分享名稱:MySQL怎么創(chuàng)建多個(gè)表的更新與刪除
瀏覽地址:http://weahome.cn/article/ppdjog.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部