MySQL的基本查詢
表的增刪查改
insert(插入)
insert [info] table_name [(colume, [,colume] ...)] values (value_list) ...
對于value_list我們通過,
作為分隔符
插入替換
-
我們使用
on duplicate key update
, 表示如果存在主鍵沖突, 會進行更新, 這個字段后面還有寫更新的字段 -
replace
: 和insert的方式一致
select (查詢)
-
select … from … where …
-
select可以計算表達式:
select math_grade+chinese_grade from ... where ...
-
可以重命名select what as …
-
distinct參數,表示可以進行數據的去重
where字句
-
MySQL中比較應該實用
=
而不是C/C++中的==
, 但是更推薦<=>
-
不等于,
!=或者<>
-
區間 between l and r [l,r]
-
在一個集合中
in (option ...)
-
is null和is not null表示是否為空
-
like: 模糊匹配,
%
表示任意多個字符,_
表示任意一個字符
注意點
-
select中as的執行順序后與where, 所以where字句不能使用as的重命名的名字.
-
where字句中可以加上
()
表示一個單元,這一點和C/C++
一致 -
空和
NULL
是不同的。
select進行排序
order by [colume...]
- 普通排序
order ... by
select name from stu order by math_grade [asc | desc]ascending表示升序, descending表示降序
- 層級排序(先數學 再語文 然后英語)
select name from stu order by math_grade asc, english_grade desc
注意點
order by
的順序還在別名的后面, 因此我們可以通過別名進行排序
limit(簡單的分頁功能) 避免內存壓力太大
limit 起始行(最開始是第一行), 步長(從開始行走的步長) 如果沒有起始行,默認是起始行=1
update(更新/修改)
update table_name set column = expr [,column=expr]
將倒數前三名的成績加5分
update stu_grade set grade=grade+5 order by grade asc limit 3;
刪除
delete from table_name [column...]
truncate可以清空auto_increment
truncate from table_name [colume...]
去重表中的數據
創建一個相似的表
create table new_table_name like old_table_name;
聚合查詢
-
count : 統計有多少行
select count(*) from table_name
-
sum : 進行聚合(只能是數字)
求平均分select sum(grade)/count(grade) from stu_grade;
-
avg : 求出平均值(只能是數字)
-
max : 數字最大值(只能是數字)mo
-
min : 數字最小值(只能是數字)
分組(group by字句)
提供根據某一列進行分組的需求
group by 表示你要通過那一列進行分組
select max(sal) as 最高, avg(sal) 平均 from table_name group by 列名
having
對聚合的數據進行條件篩選
having和where的區別:
-
where
是對具體的任意列進行條件篩選 -
having
是對分組聚合之后的結果進行條件少選