MySQL 数据表查询
查詢數據指從數據庫中獲取所需要的數據。查詢數據是數據庫操作中最常用,也是最重要的操作。用戶可以根據自己對數據的需求,使用不同的查詢方式。通過不同的查詢方式,可以獲得不同的數據。MySQL中是使用SELECT語句來查詢數據的。
一、MySQL數據表簡單查詢
簡單查詢即不含where的select語句。在此,我們講解簡單查詢中最常用的兩種查詢:查詢所有字段和查詢指定字段。
1.1、MySQL查詢所有字段
查詢所有字段 MySQL命令:
select * from students;1.2、MySQL查詢指定字段
查詢指定字段 MySQL命令:
select stuid from students;1.3 、常數的查詢
在SELECT中除了書寫列名,還可以書寫常數。可以用于標記
常數的查詢日期標記 MySQL命令:
1.4、從查詢結果中過濾重復數據
在使用DISTINCT 時需要注意:
在SELECT查詢語句中DISTINCT關鍵字只能用在第一個所查列名之前。
MySQL命令格式:
1.5、算術運算符(舉例加運算符)
在SELECT查詢語句中還可以使用加減乘除運算符。
查詢學生10年后的年齡 MySQL命令:
二、聚合函數
在開發中,我們常常有類似的需求:統計某個字段的最大值、最小值、 平均值等等。為此,MySQL中提供了聚合函數來實現這些功能。所謂聚合,就是將多行匯總成一行;其實,所有的聚合函數均如此——輸入多行,輸出一行。聚合函數具有自動濾空的功能,若某一個值為NULL,那么會自動將其過濾使其不參與運算。
聚合函數使用規則:
只有SELECT子句和HAVING子句、ORDER BY子句中能夠使用聚合函數。例如,在WHERE子句中使用聚合函數是錯誤的。
接下來,我們學習常用聚合函數。
| sum() | 計算指定列的數值和,如果指定列類型不是數值類型則計算結果為0 |
| avg() | 計算指定列的平均值,如果指定列類型不是數值類型則計算結果為0 |
| max() | 計算指定列的最大值,如果指定列是字符串類型則使用字符串排序運算 |
| min() | 計算指定列的最小值,如果指定列是字符串類型則使用字符串排序運算 |
| count() | 統計表中數據的行數或者統計指定列其值不為NULL的數據個數 |
2.1、sum()語句格式
MySQL語法格式:
select sum(字段名) from 數據表名;查詢該學生表中年紀的總和 MySQL命令:
select sum(age) from students;2.2、avg()語句格式
MySQL語法格式:
select avg(字段名) from 數據表名;查詢該學生表中年紀的平均數 MySQL命令:
select avg(age) from students;2.3、max()語句格式
MySQL語法格式:
select max(字段名) from 數據表名;查詢學生表中年齡最大的學生 MySQL命令:
select max(age) from students;2.4、min()語句格式
MySQL語法格式:
select min(字段名) from 數據表名;查詢該學生表中年紀最小的學生 MySQL命令:
select min(age) from students;2.5、count()語句格式
MySQL語法格式:
select count(字段名)from 數據表名;統計學生表中有多少人 MySQL命令:
select count(*) from students;三、條件查詢
數據庫中存有大量數據,我們可根據需求獲取指定的數據。此時,我們可在查詢語句中通過WHERE子句指定查詢條件對查詢結果進行過濾。
3.1、條件語句格式
select * from 表名 where 條件;3.2、條件的寫法
| > | 大于 |
| < | 小于 |
| <> | 不等于 |
| != | 不等于 |
| = | 等于 |
| <= | 小于等于 |
| >= | 大于等于 |
| or | 或 |
| and | 而且 |
| is null | 內容為空 |
| is not null | 內容不為空 |
| like | 模糊查詢 |
| in | 判斷某個字段是否存在給定的元組中 |
| between...and... | 判斷范圍 |
3.3、使用關系運算符查詢
查詢年齡小于25的學生的信息 MySQL命令
select * from students where age<25;3.4、使用in關鍵字查詢
N關鍵字用于判斷某個字段的值是否在指定集合中。如果字段的值恰好在指定的集合中,則將字段所在的記錄將査詢出來。
查詢stuid為18和20的學生信息 MySQL命令:
select * from students where stuid in (18,20);3.5、使用BETWEEN AND關鍵字查詢
BETWEEN AND用于判斷某個字段的值是否在指定的范圍之內。如果字段的值在指定范圍內,則將所在的記錄將查詢出來
查詢10到18歲的學生信息 MySQL命令:
3.6、使用空值查詢
在MySQL中,使用 IS NULL關鍵字判斷字段的值是否為空值。請注意:空值NULL不同于0,也不同于空字符串
查詢name不為空值的學生信息 MySQL命令:
3.7、使用LIKE關鍵字查詢
%用于匹配任意長度的字符串。例如,字符串“a%”匹配以字符a開始任意長度的字符串
_用于匹配一個任意的字符串。列入,字符串"ab_"匹配"ab"開始長度為3的字符串,如abc、abp等等..
查詢學生姓名以r為開頭的記錄 MySQL命令:
select * from student where name like "r%";3.8、使用LIMIT限制查詢結果的數量
查詢學生表中年紀最大的3位同學 MySQL命令:
select * from students age order by desc limit 3;3.9、使用GROUP BY進行分組查詢
統計學生男女人數 MySQL命令:
select count(gender),gender from students group by gender;4.0、使用 order by 對查詢結果進行排序。
從表中査詢出來的數據可能是無序的或者其排列順序不是我們期望的。為此,我們可以使用ORDER BY對查詢結果進行排序
升序排列 MySQL命令格式:
降序排列 MySQL命令格式:
select 字段名 from 數據表名 order by stuid desc;4.1、使用distinct去除重復的字段
去除重復的年齡[每個年齡只顯示一條記錄] MySQL命令格式:
select distinct age from students order by age ;四、多表連接查詢
將兩張表或多張表聯合起來查詢,這就是連接查詢。
4.1、交叉連接
交叉連接返回的結果是被連接的兩個表中所有數據行的笛卡兒積。
MySQL:語法格式:
select * from 表1,表2;由于這個交叉連接查詢在實際運用中沒有任何意義,所以只做為了解即可
4.2、內鏈接查詢(自然連接,等值鏈接)
內連接使用比較運算符對兩個表中的數據進行比較并列出與連接條件匹配的數據行,組合成新的 記錄。也就是說在內連接查詢中只有滿足條件的記錄才能出現在查詢結果中。
MySQL:語法格式:
select * from 表1,表2 where 表1.字段 = 表2.字段;?查詢學生所在班級 MySQL命令格式:
select * from students,classes where students.classID = classes.classID;4.3、外鏈接查詢
在使用內連接查詢時我們發現:返回的結果只包含符合查詢條件和連接條件的數據。但是,有時還需要在返回查詢結果中不僅包含符合條件的數據,而且還包括左表、右表或兩個表中的所有數據,此時我們就需要使用外連接查詢。外連接又分為左(外)連接和右(外)連接。
MySQL 語法格式:
select * from 表1 left join 表2 on 條件;LEFT? JOIN 左(外)連接:返回包括左表中的所有記錄和右表中符合連接條件的記錄。
RIGHT JOIN 右(外)連接:返回包括右表中的所有記錄和左表中符合連接條件的記錄。
關鍵字左邊的表被稱為左表,關鍵字右邊的表被稱為右表.
4.3.1、左外鏈接查詢
左外連接的結果包括LEFT JOIN子句中指定的左表的所有記錄,以及所有滿足連接條件的記錄。如果左表的某條記錄在右表中不存在則在右表中顯示為null。
查看班級下所有學生的老師姓名 MySQL命令:
select * from students left join teachers on students.teacherid = teachers.tid;4.3.2、右外鏈接查詢
右外連接的結果包括RIGHT JOIN子句中指定的右表的所有記錄,以及所有滿足連接條件的記錄。如果右表的某條記錄在左表中沒有匹配,則左表將返回null。
查看每個學生的姓名和班級名 MySQL命令:
select * from students right join classes on students.classid = classes.classid;五、子查詢
子查詢是指一個查詢語句嵌套在另一個查詢語句內部的查詢;該查詢語句可以嵌套在一個 SELECT、SELECT…INTO、INSERT…INTO等語句中。在執行查詢時,首先會執行子查詢中的語句,再將返回的結果作為外層查詢的過濾條件。
MySQL語法格式:
select 字段 from 表名 where 字段=(select classid from students where name = Sun dasheng)查詢所有年齡小于平均年齡的學生 MySQL:
select * from students where age<(select avg(age) from students);對于MySQL,不推薦使用子查詢,執行子查詢時,MYSQL需要創建臨時表,查詢完畢后再刪除這些臨時表,所以,子查詢的速度會受到一定的影響,這里多了一個創建和銷毀臨時表的過程。
以上就是本期的全部內容,覺得有用的話可以點下關注,后續還會帶來更多有用的知識。
總結
以上是生活随笔為你收集整理的MySQL 数据表查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科勒公司成为曼联的主要合作伙伴
- 下一篇: 宝塔Linux面板安装教程(+Mysql