插入數據 insert
#1. 插入完整數據(順序插入)#語法一:
insert into 表名(字段1,字段2,字段3…字段n) values (值1,值2,值3…值n);#語法二:
insert into 表名 values (值1,值2,值3…值n);#2. 指定字段插入數據#語法:
insert into 表名(字段1,字段2,字段3…) values (值1,值2,值3…);#3. 插入多條記錄#語法:
insert into 表名 values
(值1,值2,值3…值n),
(值1,值2,值3…值n),
(值1,值2,值3…值n);#4. 插入查詢結果#語法:
insert into 表名(字段1,字段2,字段3…字段n) select (字段1,字段2,字段3…字段n) from 表2 where …;
View Code
刪除數據 delete
#語法:
DELETE FROM 表名 WHERE CONITION;#示例:
DELETE FROM mysql.user WHERE password=’’;
View Code
更新數據 update
#語法:
UPDATE 表名 SET 字段1=值1, 字段2=值2,.. WHERE CONDITION;#示例:
update 表 set 字段名=值 where 條件
update 表 set age= 84 where name =alex;
update 表 set age= null where name =alex;
update 表 set age= 84, sex = 'female' where id = 1;
View Code
單表查詢
#語法
select distinct 要查的字段 from表
where 條件
group by 分組
having 過濾
order by 排序
limit 取前n個#執行順序
from --> where --> group by --> having --> select --> distinct --> order by -->limit1.找到表:from
2.拿著where指定的約束條件,去文件/表中取出一條條記錄3.將取出的一條條記錄進行分組group by,如果沒有group by,則整體作為一組4.將分組的結果進行having過濾5.執行 select6.去重 distinct7.將結果按條件排序:order by8.限制結果的顯示條數#二 \ 簡單查詢#查詢所有的字段\單個字段\給字段重命名\給字段去重
select * from表;
select 字段名1,字段名2from表;
select distinct 字段名1from表;
select 字段名 as 新的臨時名字from表;#查詢數據的四則運算
select emp_name,salary*12 from表;
select emp_name,salary*12 as annua_salary fromemployee;#定義顯示格式 concat/concat_ws
select emp_name,salary fromemployee;#姓名 : alex, 薪資:100000
select concat('姓名 :',emp_name,', 薪資 :',salary) fromemployee;
select concat('姓名 :',emp_name),concat('薪資 :',salary) fromemployee;#姓名 :薪資#alex : 100000
select concat_ws(':',emp_name,salary) fromemployee;
select concat_ws(':',emp_name,salary) as annual_salary fromemployee;#case語句
SELECT(#if條件判斷
CASE #一個if條件判斷句的開始
WHEN emp_name = 'jingliyang' #if
THEN emp_name #then if條件成立之后做的事兒
WHEN emp_name = 'alex' ## elif 另一個條件
THEN CONCAT(emp_name,'_BIGSB') # ELSE #else
concat(emp_name, 'SB') #沒有then 直接就是上述條件不滿足都走這個分支
END #end 就表示這個case語句結束了
) as new_name
FROM employee;
View Code
where 語句中可以使用:
1. 比較運算符:> < >= <= <> !=
2. between 80 and 100
3. in(80,90,100)
4. like 'egon%'
pattern可以是%或_,
%表示任意多字符
_表示一個字符
5. 邏輯運算符:在多個條件直接可以使用邏輯運算符 and or not
# 1:單條件查詢
SELECT emp_name FROM employee WHERE post='sale';
# 2:多條件查詢
SELECT emp_name,salary FROM employee WHERE post='teacher' AND salary>10000;
# 3:關鍵字 BETWEEN AND
SELECT emp_name,salary FROM employee WHERE salary BETWEEN 10000 AND 20000;
SELECT emp_name,salary FROM employee WHERE salary NOT BETWEEN 10000 AND 20000;
# 4:關鍵字IS NULL(判斷某個字段是否為NULL不能用等號,需要用IS)
SELECT emp_name,post_comment FROM employee WHERE post_comment IS NULL;
SELECT emp_name,post_comment FROM employee WHERE post_comment IS NOT NULL;
SELECT emp_name,post_comment FROM employee WHERE post_comment=''; # 注意''是空字符串,不是null
# 5:關鍵字IN集合查詢
SELECT emp_name,salary FROM employee WHERE salary=3000 OR salary=3500 OR salary=4000 OR salary=9000 ;
SELECT emp_name,salary FROM employee WHERE salary IN (3000,3500,4000,9000) ;
SELECT emp_name,salary FROM employee WHERE salary NOT IN (3000,3500,4000,9000) ;
# 6:關鍵字LIKE模糊查詢
# 通配符’%’
SELECT * FROM employee WHERE emp_name LIKE 'eg%';
# 通配符’_’
SELECT * FROM employee WHERE emp_name LIKE 'al__';
group by:
#單獨使用GROUP BY關鍵字分組
SELECT post FROM employee GROUP BY post;#注意:我們按照post字段分組,那么select查詢的字段只能是post,想要獲取組內的其他相關信息,需要借助函數
#GROUP BY關鍵字和GROUP_CONCAT()函數一起使用
SELECT post,GROUP_CONCAT(emp_name) FROM employee GROUP BY post; #按照崗位分組,并查看組內成員名
SELECT post,GROUP_CONCAT(emp_name) as emp_members FROM employee GROUP BY post;#GROUP BY與聚合函數一起使用
select post,count(id) as count from employee group by post; #按照崗位分組,并查看每個組有多少人
#常用聚合函數
SELECT COUNT(*) FROM employee; #計數
SELECT MAX(salary) FROM employee; #最大
SELECT MIN(salary) FROM employee; #最小
SELECT AVG(salary) FROM employee; #平均
SELECT SUM(salary) FROM employee WHERE depart_id=3; #求和
View Code
HAVING過濾:
HAVING與WHERE不一樣的地方在于!!!!!!
#!!!執行優先級從高到低:where > group by > having
#1. Where 發生在分組group by之前,因而Where中可以有任意字段,但是絕對不能使用聚合函數。
#2. Having發生在分組group by之后,因而Having中可以使用分組的字段,無法直接取到其他字段,可以使用聚合函數
使用正則表達式查詢:
SELECT * FROM employee WHERE emp_name REGEXP '^ale';
SELECT * FROM employee WHERE emp_name REGEXP 'on$';
SELECT * FROM employee WHERE emp_name REGEXP 'm{2}';