中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL基本語法的示例分析

發布時間:2021-04-14 10:30:34 來源:億速云 閱讀:257 作者:小新 欄目:MySQL數據庫

這篇文章將為大家詳細講解有關MySQL基本語法的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

先來看一下MySQL的最基本三大段語句,舉個例子:我想將下面instructor表中salary大于80000的教師名字找出

MySQL基本語法的示例分析

相關免費學習推薦:mysql視頻教程

select name  -- 這是最后篩選的元素,注意,在MySQL中一切結果都是以表的形式,哪怕這個表只有一個記錄
from instructor -- from語句表示從哪個表中進行查詢
where salary > 80000; -- where語句相當于選擇語句,限定條件,找出所需的記錄

MySQL基本語法的示例分析
查詢結果如圖!這三條語句是MySQL中最重要的三條,基本上所有的查詢都離不這三條。但是想要滿足復雜的查詢,就必須要更多的語句來支持。

distinct:對結果去重

/*用法如下,假如我想在上表instructor中,找出所有系的名字,可以發現在dept_name中,有的系是出現了一次以上,
因此要對系的名字進行去重*/select distinct dept_name
from instructor; -- 這里不需要限定條件,因此不用where語句

* :表示當前表所有鍵,所謂鍵其實就是表的行字段,比如instructor表的ID,name,dept_name等

/*類似上一個例子,我想找出instructor表中salary大于80000的教師,并顯示這些老師的所有信息*/select *
from instructor
where salary > 80000; -- 其實不加分號也行,分號表示執行到此結束,接下來的語句不執行

當我們篩選條件不止一個呢,比如我想找出salary大于80000的教師,我還要指定是計算機系的教師呢,即我要找出計算機系中salary大于80000的教師,此時我們要用到and語句

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;

接下來開始進行多個表之間的查詢,也是我們接下來的難點。先來補充一下鍵的基本概念,之前已經說了什么是鍵,這里說一下主鍵,也叫主碼,主鍵表示能唯一確定某一條記錄的鍵。舉個例子,我們的學號就是唯一能確定我們在校園的身份,就算學校中有人與我重名,我也能通過學號將我們身份分開。由此可見,名字不是主鍵,當遇到重名,名字就不能唯一確定某個學生了。

MySQL基本語法的示例分析
這是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;

MySQL基本語法的示例分析
我們可以看到,表的列明顯增加了,其實就是將兩個表的鍵整合在一起。如果你還不能完全理解自然連接,我再舉個例子,比如我們有個學生表
[ ‘徐小明 ,1號’,‘黃小珊 ,2號’],其中主鍵是學號。還有一個成績表
[‘1號,語文:87,數學:98’,‘2號,語文:94,數學:82’] ,其中學號也是這個表的主鍵。當我們想打印學生表,只要將兩個表自然連接即可,自然連接過程中,會將同一個學好的記錄整合成一個記錄,最后變成
[‘1號,徐小明,語文:87,數學:98’,‘2號,黃小珊,語文:94,數學:82’] 。其實自然連接就是笛卡爾積的優化版,大家可以自行了解笛卡爾積。

我們可以通過select來查詢變量或者函數

SELECT 'dd';SELECT 10*20;SELECT NOW(),UNIX_TIMESTAMP();

這里其實想讓大家注意,select語句后面的鍵,會成為結果的鍵名,知道這個后續對于我們的改名操作有很大幫助。比如剛剛這個例子:
MySQL基本語法的示例分析

concat():這是個連接兩個鍵的函數,用法類似于python的printf

/*通過concat函數來連接那么和dept_name*/
SELECT NAME,CONCAT(NAME,' : ',dept_name)FROM instructor;

MySQL基本語法的示例分析
不僅是鍵名,連鍵的記錄也會連接在一起。

as:給鍵或者表改名

/*比如剛剛那個例子*/
SELECT NAME,CONCAT(NAME,' : ',dept_name) as 'name+dept'FROM instructor;/*或者給表改名*/
SELECT NAME
FROM instructor as i
WHERE i.salary > 70000; -- 注意改名后,要想引用該表的鍵,要加上引用符號:.

MySQL基本語法的示例分析

講了這么就查詢,這里講一下創建表:create table。其實這個命令一般用的很少,我更喜歡用鼠標點擊來創建表,而不是敲代碼來創建。

/*創建一個與student表一樣結構的表,什么叫一樣結構,就是ss_1表中鍵于student一樣*/
CREATE TABLE ss_1 LIKE student;

剛剛例子中出現了like,其實like還可以用于字符匹配

/*like語句來進行字符匹配*/
SELECT dept_name
FROM department
WHERE building LIKE 'Watson%'; -- 這里用到%,類似于正則中的?,表示任意多個字符。這個查詢是想找出building
-- 中含有Watson的記錄。

order by:對結果表中的鍵進行排序,默認是升序,即記錄從上往下逐個遞增

/*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碼值升序排
-- 序

MySQL基本語法的示例分析
有沒有想過為什么order by要在where語句后面呢?因為order by語句時針對結果表的,where語句之后才有結果表,這也與我之前強調MySQL查詢結果一切都是表!哪怕這個表只有一個鍵甚至一條記錄!

between and:選擇區間內的記錄

/*區間范圍,注意是閉區間,即[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基本語法的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳朔县| 湖北省| 孝义市| 惠州市| 五大连池市| 会宁县| 盱眙县| 临城县| 陇西县| 百色市| 高尔夫| 类乌齐县| 竹山县| 锡林浩特市| 邮箱| 闸北区| 武陟县| 原平市| 封丘县| 武安市| 福鼎市| 普兰县| 门头沟区| 泽普县| 肇州县| 称多县| 邻水| 黄石市| 门源| 丰原市| 广平县| 延寿县| 青河县| 同心县| 石景山区| 莎车县| 马公市| 大荔县| 嘉禾县| 北宁市| 尉氏县|