mysql基礎二
阿新 • • 發佈:2018-02-01
得到 any all 函數 索引 運算 join mysql基礎 sql基礎
環境信息
數據庫:mysql-5.7.20
操作系統:Ubuntu-16.04.3
查詢
條件查詢
# 使用where關鍵字 select * from 表名 where 條件 # 比較運算符 >,>=,<,<=,!=,=,<> # 邏輯運算符 or,and,not # 模糊查詢like select * from 表名 where name like ‘%‘ # %代表任意多個字符 select * from 表名 where name like ‘T_‘ # _代表任意一個字符 # 範圍查詢 select * from 表名 where id in(1,2,3) # in在一個非連續的範圍內 select * from 表名 where id between 1 and 3 # between ... and ... 在一個連續的範圍內,全閉區間; # 判空 select * from 表名 where name is null # 沒有填寫 select * from 表名 where name is not null # 判斷非空
- 註意
運算的優先級由高到低的順序為小括號,not,比較運算符,邏輯運算符
分組
# 關鍵字group by
select age,count(*) from 表名 group by age # 通過年齡分組
# 關鍵字having,後面的條件和where一樣
select age,count(*) from 表名 group by age having age>20 # 通過年齡分組,然後對分組後的結果進行篩選
分頁
# 關鍵字limit
select * from 表名 limit start,count
# start 索引從0開始,得到count條數據,其按默認的id排序
排序
# 關鍵字order by
# asc 按從小到大排序
# desc 按從大到小排序
# 規則為先按列1排序,如果有相同的按列2排序,否則按默認
select * from 表名 order by 列1 asc|desc,列2 asc|desc;
常用聚合函數
說明:聚合函數不能加載where的後面
count(*):求列的總數;當count()內的字段一定沒有null值時,統計的是列表的行數;如果有null值,統計的是該字段非null的個數; select count(name) from 表名 where age > 20; max(age):求該列的最大值,指定列名,忽略NULL值;對於非數字,得到的是通過該列名排序後的最後一個 select max(age) from 表名 where age > 20; min(age):求該列的最小值,指定列名,忽略NULL值,對於非數字,得到的是通過該列名排序後的第一個 select min(age) from 表名; sum(age):該列之和,指定列名,忽略NULL值;如果指定的列不是可運算的值,結果為0 select sum(age) from 表名; avg(name):求列的平均值,對於非數字結果為0; select avg(age) from 表名;
連接查詢
# 當查詢結果的列來源於多張表時,需要將多張表連接成一個大的數據集,再選擇合適的列返回
# 內連接inner join
# 左連接left join
# 右連接right join
select * from 表1 inner或left或right join 表2 on 表1.列=表2.列
自關聯
# 表中的某一列,關聯了這個表中的另外一列
# 采用的依然是連接查詢的方式;
子查詢
# 標量子查詢
# 列級子查詢
# 行級字查詢
# 表級字查詢
格式:select * from 表名 where 條件+(子查詢)
關鍵字:
in:在範圍內;
any:任何一個;
all:等於所有;
mysql基礎二