MySQL之進化篇

MySQL之實用篇 MySQL之牛刀小試

子查詢是指出現在其他SQL語句內的SELECT子句. 例如: SELECT * FROM t1 WHERE column1 = (SELECT column2 FROM t2) 其中 SELECT * FRIN t1 稱為outerQuery SELECT column2 FROM t2 稱為subQuery 注意:子查詢指嵌套在查詢內部,且必須始終出現在圓括號內. 子查詢可以包含多個關鍵字或者條件,如 DISTINCT , GROUP BY, ORDER BY,函數等. 子查詢的外層查詢可以是SELECT , INSERT, UPDATE,SET 或DO. 子查詢可以返回標量,一行,一列或子查詢.

###下面是我創建的goods表結構以及添加的一些數據

###子查詢 ######查詢商品價格的平均值

SELECT AVG(goods_price) FROM goods
復制代碼

######查詢商品價格的平均值并對值進行四舍五入取兩位小數 SELECT ROUND(AVG(goods_price),2) FROM goods

######子查詢 查詢出價格大于平均值得商品 SELECT goods_id,goods_name,goods_price FROM goods WHERE goods_price > ANY (SELECT goods_price FROM goods WHERE goods_cate = '超級本') ORDER BY goods_price DESC SELECT goods_id,goods_name,goods_price FROM goods WHERE goods_price NOT IN (SELECT goods_price FROM goods WHERE goods_cate = '超級本') ORDER BY goods_price DESC

  • AVG,MAX,MIN、COUNT、SUM為聚合函數(平均值,最大值,最小值,行數,求和)
  • ROUND 是四舍五入 2代表保留兩位小數
  • 用ANY,SOME或ALL修飾比較運算符 (ANY,SOME 代表的滿足任意一個就可以,ALL代表必須全部滿足)
  • [NOT] IN ,[NOT] EXISTS

多表插入

INSERT [INTO] table_name[(column_name,....)] SELECT ...

再創建一個新的表

CREATE TABLE IF NOT EXISTS goods_cates(cate_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, cate_name TEXT NOT NULL)
復制代碼

######查詢商品的分類 SELECT goods_cate FROM goods GROUP BY goods_cate ######插入所有商品的分類到goods_cate分類的表中 INSERT INTO goods_cates(cate_name) SELECT goods_cate FROM goods GROUP BY goods_cate ###多表更新 ######UPDATE table_references SET column_name1 = {expr1 | DEFAULT} [, column_name2 = {expr2 | DEFAULT}] ...... [WHERE where_condition]

for example:

UPDATE goods INNER JOIN goods_cates ON goods_cate = cate_name SET goods_cate = cate_id
復制代碼

CREATE ...SELECT

######創建數據表的同時將查詢結果寫入到數據表 CREATE TABLE [IF NOT EXISTS] table_name [(create_definition,....)] select_statement for example:

CREATE TABLE goods_brands (brand_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, brand_name TEXT NOT NULL) SELECT brand_name FROM goods GROUP BY brand_name
復制代碼

######再進行剛剛的多表更新 UPDATE goods INNER JOIN goods_brands ON goods.brand_name = goods_brands.brand_name SET goods.brand_name = goods_brands.brand_id ###連接 ######MySQL在SELECT 語句,多表更新,多表刪除語句中支持JOIN 操作 #####語法結構 table_reference {[INNER | CROSS] JOIN | {LEFT | RIGHT} [OUTER] JOIN} table_reference ON conditional_expr

A表 + 連接類型{INNER JOIN | LEFT JOIN | RIGHT JOIN} + B表 ON + 連接的條件

#####數據表參照 table_reference

table_name [[AS] alias] | table_subquery [AS] alias
復制代碼
  • 數據表可以使用table_name AS alias_name 或 table_name alias_name 賦予別名
  • table_subquery可以作為子查詢使用在FROM子句中,這樣的子查詢必須為其賦予別名 #####連接類型
  • INNER JOIN (內連接) 在MySQL中,JOIN , CROSS JOIN 和 INNER JOIN 是等價的
  • LEFT [OUTER] JOIN (左外連接)
  • RIGHT [OUTER] JOIN (右外連接) ######注意:使用ON關鍵字來設定連接條件,也可以使用WHERE來代替通常使用ON關鍵字來設定連接條件,使用WHERE關鍵字進行結果集記錄的過濾 #####內連接

for example:

SELECT goods_id, goods_name, cate_name FROM goods INNER JOIN goods_cates ON goods_cate = cate_id
復制代碼

###外鏈接

  • 如果使用內連接查找的記錄在連接數據表中不存在,并且在WHERE子句中嘗試一下操作: column_name IS NULL 時,如果column_name被定義為NOT NULL, MySQL將在找到符合連接條件的記錄后停止搜索更多的行
  • A LEFT JOIN B join_condition
  • 數據表B的結果集依賴數據表A
  • 數據表A的結果集根據左連接條件依賴所有數據表(B表除外)
  • 左外連接條件決定如何縮減數據表B(在沒有指定WHERE條件的情況下)
  • 如果數據表A的魔調記錄符合WHERE條件,但是在數據表B不存在連接條件的記錄,將會生成一個所有列為空的額外的B行 #####左外連接

for example:

SELECT goods_id, goods_name, cate_name FROM goods LEFT JOIN goods_cates ON goods_cate = cate_id
復制代碼

#####右外連接

for example:

SELECT goods_id, goods_name, cate_name FROM goods RIGHT
復制代碼

######多表連接 ######我們先把goods表的兩個字段名稱以及類型修改一下 ALTER TABLE goods CHANGE brand_name brand_id SMALLINT NOT NULL UNSIGNED ALTER TABLE goods CHANGE goods_cate cate_id SMALLINT NOT NULL UNSIGNED

for example :

SELECT goods_id,goods_name, goods_price, cate_name ,brand_name FROM goods AS good 
INNER JOIN goods_cates AS cate ON good.cate_id = cate.cate_id 
INNER JOIN goods_brands AS brand ON good.brand_id = brand.brand_id
復制代碼

###無限分類的數據表設計 CREATE TABLE goods_types ( type_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMEN type_name TEXT NOT NULL, parent_id SMALLINT UNSIGNED NOT NULL DEFAULT 0 )

  • INSERT goods_types(type_name,parent_id) VALUES('家用電器',DEFAULT);

  • INSERT goods_types(type_name,parent_id) VALUES('電腦、辦公',DEFAULT);

  • INSERT goods_types(type_name,parent_id) VALUES('大家電',1);

  • INSERT goods_types(type_name,parent_id) VALUES('生活電器',1);

  • INSERT goods_types(type_name,parent_id) VALUES('平板電視',3);

  • INSERT goods_types(type_name,parent_id) VALUES('空調',3);

  • INSERT goods_types(type_name,parent_id) VALUES('電風扇',4);

  • INSERT goods_types(type_name,parent_id) VALUES('飲水機',4);

  • INSERT goods_types(type_name,parent_id) VALUES('電腦整機',2);

  • INSERT goods_types(type_name,parent_id) VALUES('電腦配件',2);

  • INSERT goods_types(type_name,parent_id) VALUES('筆記本',9);

  • INSERT goods_types(type_name,parent_id) VALUES('超級本',9);

  • INSERT goods_types(type_name,parent_id) VALUES('游戲本',9);

  • INSERT goods_types(type_name,parent_id) VALUES('CPU',10);

  • INSERT goods_types(type_name,parent_id) VALUES('主機',10);

######查詢父類下邊的子類 SELECT s.type_id,s.type_name,p.type_name FROM goods_types AS s LEFT JOIN goods_types AS p ON s.parent_id = p.type_id ######查父類下的父類的子類 SELECT p.type_id,p.type_name,s.type_name FROM goods_types AS p LEFT JOIN goods_types AS s ON s.parent_id = p.type_id GROUP BY p.type_name ORDER BY p.type_id

SELECT p.type_id,p.type_name,s.type_name child_count FROM goods_types AS p LEFT JOIN 
goods_types AS s ON s.parent_id = p.type_id
復制代碼

###多表刪除 DELETE table_name [.] [table_name[.]]..... FROM table_references [WHERE where_condition]

for example:

SELECT goods_id,goods_name FROM goods GROUP BY goods_name HAVING count(goods_name) >= 2;DELETE t1 FROM goods AS t1 LEFT JOIN (SELECT goods_id,goods_name FROM goods GROUP BY goods_name HAVING count(goods_name) >= 2) AS t2 ON t1.goods_name = t2.goods_name WHERE t1.goods_id > t2.goods_id;
復制代碼

轉載于:https://juejin.im/post/5a31ea556fb9a045204c3b7e

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/278888.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/278888.shtml
英文地址,請注明出處:http://en.pswp.cn/news/278888.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android 9.0新ui,SystemUI分析(Android9.0)

8種機械鍵盤軸體對比本人程序員,要買一個寫代碼的鍵盤,請問紅軸和茶軸怎么選?一、SystemUI組成SystemUI是Android的系統界面,包括狀態欄statusbar、鎖屏keyboard、任務列表recents等等,都繼承于SystemUI這個類&#xf…

WMI技術介紹和應用——WMI概述

https://blog.csdn.net/breaksoftware/article/details/8424317轉載于:https://www.cnblogs.com/diyunpeng/p/9982885.html

解決App啟動時白屏的問題

第一次 03-25 11:02:34.431 6908-6908/com.newenergyjinfu.jytz D/App: before_onCreate: 239 03-25 11:02:34.513 6908-6908/com.newenergyjinfu.jytz D/App: after_initOkGo( initPicasso): 316 03-25 11:02:34.570 6908-6908/com.newenergyjinfu.jytz D/App: after_ J…

chromebook刷機_如何為不支持Chrome操作系統的網站欺騙Chromebook用戶代理

chromebook刷機Not all browsers handle websites the same, and if they don’t support your operating system or browser, you could be denied access. Luckily, you can spoof the user agent on Chrome OS to make it look like you use a completely different system.…

什么時候可以升級HarmonyOS,華為鴻蒙OS即將迎來升級 手機版本或仍需時間

原標題:華為鴻蒙OS即將迎來升級 手機版本或仍需時間在2019年的華為開發者大會上,華為消費者業務CEO余承東正式對外發布了HarmonyOS。時隔一年后,華為開發者大會2020即將拉開帷幕。此次大會,HarmonyOS無疑仍會是重頭戲之一&#xf…

Shell_mysql命令以及將數據導入Mysql數據庫

連接MYSQL數據庫 mysql -h${db_ip} -u${db_user} -p${db_pawd} -P${db_port} -D${db_name} -s -e "${sql}" db_ip:主機地址 db_user :數據庫用戶名 db_pwd:密碼 db_port:端口號 db_name:數據庫名稱 sql&…

cocos android-1,cocos2dx在windows下開發,編譯到android上(1)

轉自:http://www.2cto.com/kf/201205/130697.html下面我給大家介紹下,用vs2010開發cocos2dx,然后如何使其編譯到android上。步驟如下:1、必要條件,你的eclipse能把代碼編譯到安卓手機或虛擬機上,如果這一步…

中藥ppi網絡圖太雜亂_太雜亂了嗎? 這是您的iPhone,iPad,Android或臺式機的15張簡約壁紙...

中藥ppi網絡圖太雜亂Busy wallpaper images don’t work very well on your iPhone, iPad, or any device where you need to have lots of icons on the screen. Here’s a set of minimalistic wallpaper images that won’t clutter up your desktop. 繁忙的墻紙圖像在iPhon…

算法61---兩個字符串的最小ASCII刪除和【動態規劃】

一、題目: 給定兩個字符串s1, s2,找到使兩個字符串相等所需刪除字符的ASCII值的最小和。 示例 1: 輸入: s1 "sea", s2 "eat" 輸出: 231 解釋: 在 "sea" 中刪除 "s" 并將 "s" 的值(115)加入總和。 在…

android設置時間widget,【Android】時間與日期Widget(DatePicker 與 TimePicker)

public class Activity01 extends Activity{TextViewm_TextView;//聲明dataPickerDatePickerm_DatePicker;//聲明TimePickerTimePickerm_TimePicker;Button m_dpButton;Button m_tpButton;//java中的Calendar類Calendar c;/** Called when the activity is first created. */Ov…

初學者java學習計劃_初學者:計劃在Windows 7 Media Center中錄制直播電視的時間

初學者java學習計劃If you’re a new user to Windows 7 Media Center you know it can act as a DVR and pause or record Live TV. You can set up a schedule for it to record your favorite TV programs as well. 如果您是Windows 7 Media Center的新用戶,則知…

雙數據源配置

從此抄錄&#xff1a;https://blog.csdn.net/ll535299/article/details/78203634 1、先配置兩個數據源&#xff0c;附上主要代碼&#xff0c;給自己回憶&#xff0c;詳解見開頭鏈接 <!-- 配置數據源 --> <bean id"szDS" class"com.alibaba.druid.pool.…

如何在Office 2007中查看關于對話框和版本信息

One of our favorite readers wrote in today asking how to tell if his Word 2007 installation was running Service Pack 1, since he couldn’t find the About dialog, which got me thinking… I bet most people don’t know where it is! 我們最喜歡的一位讀者今天寫信…

windows全局熱鍵_在Windows中創建快捷方式或熱鍵以清除剪貼板

windows全局熱鍵Have you ever copied something to the clipboard that you don’t want to leave there in case somebody else is going to use your computer? Sure, you can copy something else to the clipboard real quick, but can’t you just make a shortcut or h…

android+notepad教程,Android Sample學習——NotePad

android.view.Menu專場Interface for managing the items in a menu.By default, every Activity supports an options menu of actions or options. You can add items to this menu and handle clicks on your additions. The easiest way of adding menu items is inflating…

Windows應用程序開發

Windows窗體應用程序開發&#xff1a;WinForm、桌面應用程序&#xff0c;有可執行文件(.exe)即安裝包。是一種C/S&#xff08;客戶機/服務器&#xff09;架構應用程序 1.Windows窗體應用程序&#xff0c;用可視化的窗體和控件生成豐富界面的&#xff0c;可交互操作的應用程序。…

獲取outlook 會議_如何僅在Microsoft Outlook中僅獲取您關注的電子郵件的通知

獲取outlook 會議Some emails are more important than others. Rather than getting alerts every time an email arrives, configure Microsoft Outlook to only alert you when the important stuff hits your inbox, rather than any old email that can wait until you ch…

jq html 多一個引號,為什么jQuery模板會為某些字符串添加雙引號

背景我正在使用jQuery模板,ASP.Net MVC Razor視圖和Twitter.問題使用帶有一些字符串的jQuery模板會自動導致這些字符串被包含在“細節我創建了一個如下所示的jQuery模板&#xff1a;before ${text.parseUserName().parseHashTag()} after${created_at}${prettyDate(created_at)…

從Windows計算機上完全刪除iTunes和其他Apple軟件

If you are giving up on iTunes for another music player, uninstalling it completely can be a hassle. Here we show you how to completely remove all traces of it including QuickTime, iTunes Helper, Bonjour…all of it. 如果您在iTunes上放棄了其他音樂播放器&…

html仿微信滑動刪除,使用Vue實現移動端左滑刪除效果附源碼

左滑刪除在移動端是很常見的一種操作&#xff0c;常見于刪除購物車中的商品&#xff0c;刪除收藏夾中文章等等場景。我們只需要手指按住要刪除的對象&#xff0c;然后輕輕向左滑動&#xff0c;便會出現刪除按鈕&#xff0c;然后點擊刪除按鈕即可刪除對象。點擊下載源碼今天我給…