久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

MySQL基本語法的示例分析

136次閱讀
沒有評論

共計 3657 個字符,預(yù)計需要花費 10 分鐘才能閱讀完成。

自動寫代碼機器人,免費開通

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

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

MySQL 基本語法的示例分析

相關(guān)免費學(xué)習(xí)推薦:mysql 視頻教程

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

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

distinct:對結(jié)果去重

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

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

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

當我們篩選條件不止一個呢,比如我想找出 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;

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

MySQL 基本語法的示例分析
這是 teaches 表,ID 鍵表示老師的 ID,course_id 表示課程的 id,semester 表示開課的學(xué)期,假如我想找出教師都教了什么課,并把教師名字和 course_id 顯示出來。

/* 這條語句可以實現(xiàn),但是請問為什么可以實現(xiàn)呢?那是因為兩個表都有共同的主鍵:ID,當然 teaches 不止這一個主
鍵,我們看鍵旁邊有個 key,都是主鍵。但是我們不用管其他鍵,只要關(guān)注 ID 鍵就可以了,因為這是兩個表中共有的。這
里我還要特意提一下兩個表查詢,其實是一個表的一個記錄去遍歷另外一個表的記錄,當找到某一條 instruction 的 id 等
于 teaches 的 id,就將這條記錄保存到結(jié)果表中 */
SELECT NAME,course_id
where instructor.`ID` = teaches.`ID`;

鋪墊了這么就,我們來講一下 nature join:自然連接。改操作很簡單,就是把兩個表中的主鍵相等的記錄保存,如果兩個表有多個相同的 key 鍵,那么就要保證每個相同主鍵相同才能保存。

/* 上述例子完全可以用自然連接來查詢 */
SELECT NAME,course_id
FROM instructor NATURAL JOIN teaches;/* 如果你想知道自然連接后的表長啥樣,我滿足你 */
SELECT * --  顯示結(jié)果表的所有鍵
FROM instructor NATURAL JOIN teaches;

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

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

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

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

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

/* 通過 concat 函數(shù)來連接那么和 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 基本語法的示例分析

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

/* 創(chuàng)建一個與 student 表一樣結(jié)構(gòu)的表,什么叫一樣結(jié)構(gòu),就是 ss_1 表中鍵于 student 一樣 */
CREATE TABLE ss_1 LIKE student;

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

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

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

/*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 語句時針對結(jié)果表的,where 語句之后才有結(jié)果表,這也與我之前強調(diào) MySQL 查詢結(jié)果一切都是表!哪怕這個表只有一個鍵甚至一條記錄!

between and:選擇區(qū)間內(nèi)的記錄

/* 區(qū)間范圍,注意是閉區(qū)間,即 [90000 , 100000]*/
SELECT NAME
FROM instructor
WHERE salary BETWEEN 90000 AND 1000000;

當我們對查詢多個條件時,有時候可以通過鍵匹配

/* 類似于 python 的字典,里面的元素逐個對應(yīng) */
SELECT NAME,course_id
FROM instructor,teaches
WHERE (instructor.`ID`,dept_name) = (teaches.`ID`, Biology

關(guān)于“MySQL 基本語法的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向 AI 問一下細節(jié)

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-12-04發(fā)表,共計3657字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 阿拉善左旗| 武功县| 桑植县| 大姚县| 衡东县| 新乡县| 灵川县| 政和县| 固安县| 时尚| 南华县| 建宁县| 巩留县| 通山县| 乐都县| 含山县| 韶关市| SHOW| 呼玛县| 榆林市| 满城县| 阿拉善左旗| 英德市| 博白县| 鹤峰县| 进贤县| 昌乐县| 岳西县| 嘉祥县| 和顺县| 大同县| 疏勒县| 合水县| 涪陵区| 广元市| 庆元县| 长子县| 平江县| 阜新市| 德格县| 拜泉县|