mysql查询语句4,MySQL(4):CRUD语句(2)——基本查询
“增刪改查”的查詢語句。
create table student(
id int,
name varchar(20),
chinese float,
english float,
math float
);
insert into student(id,name,chinese,english,math) values(1,'張小明',89,78,90);
insert into student(id,name,chinese,english,math) values(2,'李進',67,98,56);
insert into student(id,name,chinese,english,math) values(3,'王五',87,78,77);
insert into student(id,name,chinese,english,math) values(4,'李一',88,98,90);
insert into student(id,name,chinese,english,math) values(5,'李來財',82,84,67);
insert into student(id,name,chinese,english,math) values(6,'張進寶',55,85,45);
insert into student(id,name,chinese,english,math) values(7,'黃蓉',75,65,30);
查詢語句,一定是重點!
基本select語句
1. 基本語法
SELECT [DISTINCT] *|{column1, column2. column3..} FROM tableName;
select 指定查詢哪些列的數據。
column指定列名。
*號代表查詢所有列。
From指定查詢哪張表。
DISTINCT可選,指顯示結果時,是否剔除重復數據
select english from student;
select distinct english from student; -- 自動過濾重復的記錄
指定列名
select name, english from student;
2. 在select語句中可使用表達式對查詢的列進行運算
select name, english + chinese + english from student; -- 有表達式
select name, ?english + chinese + english + 10 from student;
sum怎么辦…
sum 好像是把所有行加起來,不是把列加起來……
3. 在select語句中可使用as語句
select name as 姓名, english as 英語, math as 數學 from student;
(甚至可以不加 as)
4. where語句
select * from student where name = '張小明';
select * from student where english > 90;
select * from student where chinese+math+english > 200;
5. where中常用運算法
比較
<> 不等于號
!= 等號
between ... and ... -- 閉區間!開區間呢?
in (范圍中) select * from student where math in (90,77);
like 模糊查詢
like語句中,% 代表零個或多個任意字符,_ 代表一個字符,例first_name like ‘_a%’;
is null 查詢為空 is not null 查詢非空 【注意】不能寫 = null
邏輯
select * from student where math <= 80;
select * from student where not (math > 90); -- 非
查詢英語分數在80-90之間的同學。
select * from student where (english >= 80) and (english <=90);
select * from student where english between 80 and 90;
查詢數學分數為89,90,91的同學。
select * from student where math in (89,90,91);
查詢所有姓李的學生成績。
select * from student where name like '李%';
select * from student where name like '李_'; -- (姓李的,且兩個字的名字)
查詢數學分>80,語文分>80的同學。
select * from student where (math > 80) and (chinese > 80);
6. order by
SELECT column1, column2. column3.. FROM table order by column asc|desc
Order by 指定排序的列,排序的列即可是表中的列名,也可以是select 語句后指定的列名。
asc 升序、desc 降序
ORDER BY 子句應位于SELECT語句的結尾。
對數學成績排序后輸出。
select * from student order by math desc;
select * from student order by math asc;
對總分排序后輸出,然后再按從高到低的順序輸出
select name 姓名, (chinese + math + english) 總分 from student order by 總分 desc;
對姓李的學生成績排序輸出
select name 姓名, (chinese + math + english) 總分 from student where name like '李%' order by 總分 asc;
聚合函數
1. count函數
count(列名)返回某一列,行的總數【注意】 返回的是一個數!
統計一個班級共有多少學生?
select count(*) from student;
統計數學成績大于90的學生有多少個?
select count(*) from student where math >= 90;
統計總分大于250的人數有多少?
select count(*) 總分大于250的人數 from student where (chinese + math + english) > 250;
2. sum函數
sum函數返回滿足where條件的行的和【注意】 是從上往下合計! 不是橫著加! 對行統計!
select sum(列名){,sum(列名)…} from tablename [WHERE where_definition] ? ?-- 列名的數據類型是數值型
統計一個班級數學總成績?
select sum(name) 數學總成績 from student;
統計一個班級語文、英語、數學各科的總成績
select sum(chinese) 語文總成績, sum(english) 英語總成績, sum(math) 數學總成績 from student;
統計一個班級語文、英語、數學的成績總和
select sum(chinese + english + math) from student; -- 這樣寫!
select sum(chinese) + sum(english) + sum(math) from student; -- 這樣也可以!
統計一個班級語文成績平均分
select sum(chinese)/count(*) from student;
注意:對多列求和,“,”號不能少。
3. avg函數
AVG函數返回滿足where條件的一列的平均值
求一個班級數學平均分
select avg(math) 數學平均分 from student; -- 注意,如果有一個空值null,會跳過這條記錄。
求一個班級總分平均分
select avg(math + chinese + english) from student;
sum函數、avg函數都會忽略掉null?
4. max/min函數
max/min函數返回滿足where條件的一列的最大/最小值
求班級最高分和最低分(數值統計)
select max(english+math+chinese) from student;
distinct 剔除重復結果
group by 分類
準備數據。
create table orders(
id int,
product varchar(20),
price float
);
insert into orders(id,product,price) values(1,'電視',900);
insert into orders(id,product,price) values(2,'洗衣機',100);
insert into orders(id,product,price) values(3,'洗衣粉',90);
insert into orders(id,product,price) values(4,'桔子',9);
insert into orders(id,product,price) values(5,'洗衣粉',90);
-- group by 的用法
-- 對訂單表中商品歸類后,顯示每一類商品的總價
SELECT product, SUM(price) FROM orders GROUP BY product;
-- 注意,是對產品分類后的,進行sum。sum參與的是分組后的sum
having 聚合后篩選 -- having 過濾 -- 查詢購買了幾類商品,并且每類總價大于100的商品 SELECT product, SUM(price) FROM orders GROUP BY product HAVING (SUM(price)>100); -- having 和 where均可實現過濾,但在having可以使用聚合函數,having通常跟在group by后,它作用于組。? -- 順序:group by … having … order by … -- 一共買了哪些類型的產品 SELECT product FROM orders GROUP BY product;
總結
以上是生活随笔為你收集整理的mysql查询语句4,MySQL(4):CRUD语句(2)——基本查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 早饭几点吃最好、最有利于减肥
- 下一篇: 斑秃是什么原因造成的