1. 程式人生 > >mysql基礎二

mysql基礎二

得到 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基礎二