多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

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

MySQL學習15:子查詢(二)

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

       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久久偷偷做嫩草影院免费看 | 国产欧美精品一区二区三区四区 | 性欧美极品xxxx欧美一区二区 | 国产亚洲欧美另类专区 | jlzzjlzzjlzz日本亚洲 | 欧美在线亚洲国产免m观看 欧美在线一二三 | 午夜羞羞视频在线观看 | 久久99久久99精品免观看麻豆 | 男女上下爽无遮挡午夜免费视频 | 久久五月网 | 99精品久久秒播无毒不卡 | 欧美xxxx做受欧美gay | 国产永久高清免费动作片www | 国产精品性视频免费播放 | 中文字幕日本在线视频二区 | 日韩欧美精品在线观看 | 成人性毛片 | 国产精品嫩草影院视频 | 日本www在线播放 | 亚洲一区在线播放 | 国产在线观看中文字幕 | 成人免费毛片一区二区三区 | 手机成人在线视频 | 久久精品老司机 | 无码精品一区二区三区免费视频 | 一级大黄美女免费播放 | 精品成人一区二区三区免费视频 | 国产视频a | 欧洲美女人牲交一级毛片 | 在线高清一级欧美精品 | 国产午夜不卡在线观看视频666 | 欧美大片天天免费看视频 | 亚洲精品国产一区二区三区在 | 免费爱做网站在线看 | 国产在线每日更新 | 免费播放春色aⅴ视频 | 九色精品在线 | 欧美另类视频一区二区三区 | 亚洲天堂高清 | 国产一区二区三区精品久久呦 | jjzz韩国|