日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 數據庫 > 數據庫應用 > MySQL學習15:子查詢(二)

MySQL學習15:子查詢(二)

來源:程序員人生   發布時間:2016-06-06 16:25:14 閱讀次數:3564次

       2子查詢

       3由[NOT] IN/EXISTS引發的子查詢

       使用[NOT] IN引發的子查詢的語法結構:operand comparsion_operator [NOT] IN (subquery)。其中,=ANY運算

符與IN等價;!=ALL或<>ALL運算符與NOT IN等價。

        例子:

        1)查詢所有商品中價格等于超級本價格(任意1個)的商品

        SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price IN (SELECT 

goods_price FROM tdb_goods WHERE goods_cate = '超級本');


        2)查詢所有商品中價格不等于超級本價格(任意1個)的商品

        SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price NOT IN (SELECT 

goods_price FROM tdb_goods WHERE goods_cate = '超級本');


        使用[NOT] EXISTS引發的子查詢的語法結構:operand comparsion_operator [NOT] EXISTS (subquery);如果子

查詢返回任何行,EXISTS將返回TRUE;否則返回FALSE。這類情況我們使用的比較少。

        3子查詢利用

        (1)INSERT SELECT命令

        使用INSERT...SELECT插入記錄的語法結構:INSERT [INTO] table_name [(col_name,...)] SELECT ...;

        1)先來創建1個數據表tdb_goods_cates

        CREATE TABLE IF NOT EXISTS tdb_goods_cates(

              cate_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

              cate_name VARCHAR(40) NOT NULL

        );

        2)再對數據表tdb_goods中的記錄進行商品類型分類

        SELECT goods_cate FROM tdb_goods GROUP BY goods_cate;


        3)將查詢的結果寫入到數據表tdb_goods_cates

        INSERT tdb_goods_cates(cate_name) SELECT goods_cate FROm tdb_goods GROUP BY goods_cate;

        SELECT * FROM tdb_goods_cates;


        4)參照商品分類表tdb_goods_cates的商品類型cate_id去更新商品表tdb_goods的商品類型(這里用到多表更新和

連接)

        UPDATE tdb_goods INNER JOIN tdb_goods_cates ON goods_cate = cate_name SET goods_cate = cate_id;

        SELECT goods_id,goods_cate FROM tdb_goods;


        (2)多表更新

        多表更新的語法結構:

        UPDATE table_references SET col_name1={expr1|DEFAULT} [,col_name2={expr2|DEFAULT}] ... [WHERE

 where_condition];

        上述的例子就是多表更新。

        1多表更新1步到位

        我們在上面進行多表更新需要幾個步驟,我們可以將其幾個步驟結合在1起使用,也就是CREATE SELECT命

令哎創建數據表的同時將查詢結果直接寫入到指定的數據表中。

        創建數據表同時將查詢結果寫入到數據表的語法結構:

        CREATE TABLE [IF NOT EXISTS] table_name [(create_definition,...)] select_statement; 

        例子:

        1)查找數據表tdb_goods中的商品品牌(不屬于步驟,只是1個簡單的查詢)

        SELECT brand_name FROM tdb_goods GROUP BY brand_name;


        2)創建數據表的同時寫入記錄:

        CREATE TABLE tdb_goods_brands(

            brand_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,

            brand_name VARCHAR(40) NOT NULL 

        )

        SELECT brand_name FROM tdb_goods GROUP BY brand_name;

        SHOW TABLES;


        SELECT * FROM tdb_goods_brands;


        3)參照數據表tdb_goods_brands中的brand_id去更新數據表tdb_goods中的brand_name的品牌類型

        UPDATE tdb_goods AS g INNER JOIN tdb_goods_brands AS b ON g.brand_name = b.brand_name SET

 g.brand_name = b.brand_id;

        SELECT goods_id,brand_name FROM tdb_goods;


        (3)多表更新帶來的問題

       到這里我們還有1個問題,就是更新了tdb_goods數據表中的goods_cate字段和brand_name字段,更新后的都

是數字類型的,而原來的是字符串型的,因此需要修改tdb_goods數據表中的那兩個字段名稱和數據類型。

       1)查看tdb_goods數據表的表結構

       DESC tdb_goods;


       2)修改指定列的數據類型和字段名稱

       ALTER TABLE tdb_goods 

       CHANGE goods_cate cate_id SMALLINT UNSIGNED NOT NULL,

       CHANGE brand_name brand_id SMALLINT UNSIGNED NOT NULL;

       DESC tdb_goods;


       修改以后的檢查操作

       3)分別在tdb_goods_cates和tdb_goods_brands表插入記錄

       INSERT tdb_goods_cates(cate_name) VALUES('路由器'),('交換機'),('網卡');

       INSERT tdb_goods_brands(brand_name) VALUES('海爾'),('清華同方'),('神州');



       4)在tdb_goods數據表中寫入任意記錄

       INSERT tdb_goods(goods_name,cate_id,brand_id,goods_price) VALUES('LaserJet Pro P1606dn 黑白激光打印

機',12,4,1849);


       我們看到寫入記錄的時候中的cate_id是12,而在數據表tdb_goods_cates中的cate_id不存在12,但是仍然可以插

入記錄,這是沒有使用外鍵束縛的結果。

        
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲综合在线一区二区 | 精品中文字幕一区二区三区 | 91九色网 | 男女av网站 | av日韩久久 | 国产精品视频1区 | 99色综合| 亚洲最大av在线 | 欧美成人在线免费视频 | 3atv一区二区三区 | 精品一区二区精品 | 欧美日韩高清 | 韩国精品一区二区 | 久久久婷| 精品一区二区视频 | 麻豆少妇 | 伊人色综合网 | 99精品国产一区二区青青牛奶 | 国产麻豆精品在线观看 | 国产精品影院在线观看 | 中文字幕亚洲国产 | 日韩欧美一区二区三区久久婷婷 | 嫩草嫩草嫩草嫩草嫩草 | 国产 欧美 日韩 | 国产精品美女久久久免费 | 国产婷婷色一区二区三区在线 | 欧美福利网 | 日韩精品久久久久久 | 在线观看国产一区 | 91久久精品一区二区 | 欧美日韩三级 | 欧美一级黄色大片 | 亚洲精品一区在线 | 久久精品国产视频 | 久久精品日韩 | 毛片在线免费播放 | 高清久久 | 国产精品美女 | 中文字幕精品久久久久 | 欧美一区二区在线播放 | 国产高潮在线观看 |