您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關MySQL基本語法的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
相關免費學習推薦:mysql視頻教程
select name -- 這是最后篩選的元素,注意,在MySQL中一切結果都是以表的形式,哪怕這個表只有一個記錄 from instructor -- from語句表示從哪個表中進行查詢 where salary > 80000; -- where語句相當于選擇語句,限定條件,找出所需的記錄
查詢結果如圖!這三條語句是MySQL中最重要的三條,基本上所有的查詢都離不這三條。但是想要滿足復雜的查詢,就必須要更多的語句來支持。
/*用法如下,假如我想在上表instructor中,找出所有系的名字,可以發現在dept_name中,有的系是出現了一次以上, 因此要對系的名字進行去重*/select distinct dept_name from instructor; -- 這里不需要限定條件,因此不用where語句
/*類似上一個例子,我想找出instructor表中salary大于80000的教師,并顯示這些老師的所有信息*/select * from instructor where salary > 80000; -- 其實不加分號也行,分號表示執行到此結束,接下來的語句不執行
select * from instructor where salary > 80000 and dept_name = 'Comp. Sci.';/*同樣有and語句就有or語句,or表示或,即滿足一個條件即可。比如我想找出工資小于60000或者大于80000的教師*/select * from instructor where salary > 80000 or salary < 60000;
這是teaches表,ID鍵表示老師的ID,course_id表示課程的id,semester表示開課的學期,假如我想找出教師都教了什么課,并把教師名字和course_id顯示出來。
/*這條語句可以實現,但是請問為什么可以實現呢?那是因為兩個表都有共同的主鍵:ID,當然teaches不止這一個主 鍵,我們看鍵旁邊有個key,都是主鍵。但是我們不用管其他鍵,只要關注ID鍵就可以了,因為這是兩個表中共有的。這 里我還要特意提一下兩個表查詢,其實是一個表的一個記錄去遍歷另外一個表的記錄,當找到某一條instruction的id等 于teaches的id,就將這條記錄保存到結果表中*/ SELECT NAME,course_id where instructor.`ID` = teaches.`ID`;
鋪墊了這么就,我們來講一下nature join:自然連接。改操作很簡單,就是把兩個表中的主鍵相等的記錄保存,如果兩個表有多個相同的key鍵,那么就要保證每個相同主鍵相同才能保存。
/*上述例子完全可以用自然連接來查詢*/ SELECT NAME,course_id FROM instructor NATURAL JOIN teaches;/*如果你想知道自然連接后的表長啥樣,我滿足你*/ SELECT * -- 顯示結果表的所有鍵 FROM instructor NATURAL JOIN teaches;
我們可以看到,表的列明顯增加了,其實就是將兩個表的鍵整合在一起。如果你還不能完全理解自然連接,我再舉個例子,比如我們有個學生表
[ ‘徐小明 ,1號’,‘黃小珊 ,2號’],其中主鍵是學號。還有一個成績表
[‘1號,語文:87,數學:98’,‘2號,語文:94,數學:82’] ,其中學號也是這個表的主鍵。當我們想打印學生表,只要將兩個表自然連接即可,自然連接過程中,會將同一個學好的記錄整合成一個記錄,最后變成
[‘1號,徐小明,語文:87,數學:98’,‘2號,黃小珊,語文:94,數學:82’] 。其實自然連接就是笛卡爾積的優化版,大家可以自行了解笛卡爾積。
SELECT 'dd';SELECT 10*20;SELECT NOW(),UNIX_TIMESTAMP();
這里其實想讓大家注意,select語句后面的鍵,會成為結果的鍵名,知道這個后續對于我們的改名操作有很大幫助。比如剛剛這個例子:
/*通過concat函數來連接那么和dept_name*/ SELECT NAME,CONCAT(NAME,' : ',dept_name)FROM instructor;
不僅是鍵名,連鍵的記錄也會連接在一起。
/*比如剛剛那個例子*/ SELECT NAME,CONCAT(NAME,' : ',dept_name) as 'name+dept'FROM instructor;/*或者給表改名*/ SELECT NAME FROM instructor as i WHERE i.salary > 70000; -- 注意改名后,要想引用該表的鍵,要加上引用符號:.
/*創建一個與student表一樣結構的表,什么叫一樣結構,就是ss_1表中鍵于student一樣*/ CREATE TABLE ss_1 LIKE student;
/*like語句來進行字符匹配*/ SELECT dept_name FROM department WHERE building LIKE 'Watson%'; -- 這里用到%,類似于正則中的?,表示任意多個字符。這個查詢是想找出building -- 中含有Watson的記錄。
/*order by 按照某個屬性進行排序*/ /*這個查詢是想找出物理系的老師,并按工資進行排序*/ SELECT NAME , salary FROM instructor WHERE dept_name = 'Physics'ORDER BY salary;/*既然有升序,那就有降序*/ SELECT NAME , salary FROM instructor WHERE dept_name = 'Physics'ORDER BY salary DESC; -- DESC表示降序 /*我們還可以對多個鍵進行排序*/ SELECT * FROM instructor ORDER BY salary DESC , NAME ASC; -- 這里是先對工資進行降序排序,當工資一樣時,按英文首字母的ASC碼值升序排 -- 序
有沒有想過為什么order by要在where語句后面呢?因為order by語句時針對結果表的,where語句之后才有結果表,這也與我之前強調MySQL查詢結果一切都是表!哪怕這個表只有一個鍵甚至一條記錄!
/*區間范圍,注意是閉區間,即[90000 , 100000]*/ SELECT NAME FROM instructor WHERE salary BETWEEN 90000 AND 1000000;
/*類似于python的字典,里面的元素逐個對應*/ SELECT NAME,course_id FROM instructor,teaches WHERE (instructor.`ID`,dept_name) = (teaches.`ID`,'Biology');
關于“MySQL基本語法的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。