MySQL使用查看表SELECT語句


來源:實驗樓

本節實驗中學習了 SELECT 語句的常用方法:

基本語法

數學符號條件

AND OR IN

通配符

排序

SQL 內置函數和計算

子查詢與連接查詢

輸入命令,下載代碼: git clone https://github.com/shiyanlou/SQL4

下載完成后,輸入命令開啟 MySQL 服務並使用 root 用戶登錄:

#打開 MySQL 服務

sudo service mysql start

#使用 root 用戶登錄

mysql -u root

剛才下載的 SQL4 目錄下,有兩個文件 MySQL-04-01.sql 和 MySQL-04-02.sql,其中第一個文件用於創建數據庫,第二個文件向數據庫中插入數據。 (SQL4目錄在桌面上,你可以用gedit查看里面兩個的文件。)

加載文件中的數據,需要在 MySQL 控制台中輸入命令,

搭建數據庫:

source /home/shiyanlou/Desktop/SQL4/MySQL-04-01.sql

向數據庫插入數據:

source /home/shiyanlou/Desktop/SQL4/MySQL-04-02.sql

SELECT 語句的基本格式為:

SELECT 要查詢的列名 FROM 表名字 WHERE 限制條件;

如果要查詢表的所有內容,則把 要查詢的列名 用一個星號 * 號表示,代表要查詢表中所有的列。

SELECT * FROM employee;

而大多數情況,我們只需要查看某個表的指定的列,比如要查看employee 表的 name 和 age:

SELECT name,age FROM employee;

SELECT 語句常常會有 WHERE 限制條件,用於達到更加精確的查詢。WHERE限制條件可以有數學符號 (=,<,>,>=,<=) ,剛才我們查詢了 name 和 age,現在稍作修改:

SELECT name,age FROM employee WHERE age>25;篩選出 age 大於 25 的結果:

或者查找一個名字為 Mary 的員工的 name,age 和 phone:

SELECT name,age,phone FROM employee WHERE name='Mary';

#篩選出 age 小於 25,或 age 大於 30 SELECT name,age FROM employee WHERE age<25 OR age>30;

如果需要包含25和30這兩個數字的話,可以替換為 age BETWEEN 25 AND 30;

關鍵詞IN和NOT IN的作用和它們的名字一樣明顯,用於篩選“在”或“不在”某個范圍內的結果,比如說我們要查詢在dpt3或dpt4的人:

SELECT name,age,phone,in_dpt FROM employee WHERE in_dpt IN ('dpt3','dpt4');

關鍵字 LIKE 在SQL語句中和通配符一起使用,通配符代表未知字符。SQL中的通配符是 _ 和 % 。

其中 _ 代表一個未指定字符,% 代表不定個未指定字符。

比如,要只記得電話號碼前四位數為1101,而后兩位忘記了,則可以用兩個 _ 通配符代替:

SELECT name,age,phone FROM employee WHERE phone LIKE '1101__'; 這樣就查找出了1101開頭的6位數電話號碼: https://doc.shiyanlou.com/MySQL/sql-04-09.png/wm

另一種情況,比如只記名字的首字母,又不知道名字長度,則用 % 通配符代替不定個字符:

SELECT name,age,phone FROM employee WHERE name LIKE 'J%'; 這樣就查找出了首字母為 J 的人: https://doc.shiyanlou.com/MySQL/sql-04-10.png/wm

計算出salary的最大、最小值,用這樣的一條語句:

SELECT MAX(salary) AS max_salary,MIN(salary) FROM employee;

有一個細節你或許注意到了,使用AS關鍵詞可以給值重命名,比如最大值被命名為了max_salary:

上面討論的 SELECT 語句都僅涉及一個表中的數據,然而有時必須處理多個表才能獲得所需的信息。

例如:想要知道名為 "Tom" 的員工所在部門做了幾個工程。員工信息儲存在 employee 表中,但工程信息儲存在project 表中。 對於這樣的情況,我們可以用子查詢:

SELECT of_dpt,COUNT(proj_name) AS count_project FROM project GROUP BY of_dpt HAVING of_dpt IN (SELECT in_dpt FROM employee WHERE name='Tom');

在處理多個表時,子查詢只有在結果來自一個表時才有用。但如果需要顯示兩個表或多個表中的數據,這時就必須使用連接 (join) 操作。

連接的基本思想是把兩個或多個表當作一個新的表來操作(派生),如下:

SELECT id,name,people_num FROM employee,department WHERE employee.in_dpt = department.dpt_name ORDER BY id;

這條語句查詢出的是,各員工所在部門的人數,其中員工的 id 和 name 來自 employee 表,people_num 來自 department 表: https://doc.shiyanlou.com/MySQL/sql-04-14.png/wm 另一個連接語句格式是使用 JOIN ON 語法,剛才的語句等同於:

SELECT id,name,people_num FROM employee JOIN department ON employee.in_dpt = department.dpt_name ORDER BY id;結果也與剛才的語句相同。

題:使用連接查詢的方式,查詢出各員工所在部門的人數與工程數,工程數命名為 count_project。(連接3個表,並使用COUNT內置函數)

答案參考:https://blog.csdn.net/u013716535/article/details/78428526

謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM