山再高,往上攀,總能登頂;路再長,走下去,定能到達。
Mysql中Select 的用法
- ------前言------
- 【SELECT】
- 0.【準備工作】
- 0.1 創建一個庫
- 0.2 庫中創建表
- 0.3 表中加入一些數據
- 1.【查詢全部】
- 2.【查詢指定列】
- 2.1查詢指定列
- 2.2 查詢總和
- 2.3 別名查詢
- 2.4 去重查詢
- 3.【where】
- 3.1普通條件查詢
- 3.1區間查詢
- 3.2模糊查詢
- 4.【order by】
- 4.1 排序查詢
- 4.2 分頁查詢
- 5.【聚合函數】
- 5.1 count
- 5.2 sum
- 5.3 avg
- 5.4 max
- 5.5 min
- 6.【分組查詢】
- 6.1 group by
- 6.2 having
------前言------
在MySQL語句中,最重要的莫過于查詢了,也就是select的用法,前一篇博客我們只是給大家大概一個思路去學數據庫,由庫到表再到表中的數據,今天我們說的就是單表查詢表中數據,之后再給大家更新多表的聯合查詢等知識
在此之前為了方便大家可以一起練習,我們先來創建一些數據,以便大家可以知道我們查的是什么,在哪查的
除此之外,還有一些知識,來讓我們認識到更全面的查詢,大家按照順序觀看即可
【SELECT】
0.【準備工作】
0.1 創建一個庫
show databases; -- 查看庫
create database test; --創建一個名字為test的庫
0.2 庫中創建表
use test; -- 使用名字為test的庫
show tables; -- 查看test庫中是否有表
-- 創建一個名字為demoStudent的表格,包含id,名字,年齡,語數英各科成績 create table demoStudent( id int,name varchar(20),age int,chinese float,math float,english float);
0.3 表中加入一些數據
-- 插入六條數據insert into demoStudent(id,age,name,chinese,math,english)values(1,17,'張三',66,54,32),(2,17,'李四',22,22,54),(3,18,'王五',12,23,34),(4,17,'陳六',55,44,33),(5,18,'趙七',45,67,86),(6,17,'宋九',22,33,99);
1.【查詢全部】
-- select * from 表名;
select * from demoStudent;
2.【查詢指定列】
2.1查詢指定列
select 列名 from 表名; -- 該行是語法說明
select id,name,chinese from demoStudent;
2.2 查詢總和
那如果我們想查詢一下總成績,又該怎么辦呢?
答案也很簡單, 我們只需要加一下就好了
select name,chinese+math+english from demoStudent;
2.3 別名查詢
那么我們不想以chinese+math+english為列名當總成績的表頭又該怎么辦呢?
這就需要我們所說的別名查詢了~
select 列名1,列名2 as 列名2的新名字 from 表名;
select name,chinese+math+english as total from demoStudent;
2.4 去重查詢
當我們發現有兩條語文成績一樣的分數,但是我們只想要不重復的語文成績,這個時候我們又應該如何?
那就是去重查詢了~
select distinct 去重列名 from 表名;
select distinct chinese from demoStudent;
3.【where】
3.1普通條件查詢
-- 在表中查詢年齡為18的學生
select * from demoStudent where age = 18;
-- 查詢總成績小于100的學生
select name,chinese+math+english as total from demoStudent where chinese+math+english<100;
-- 查詢語文成績大于數學成績的學生
select * from demoStudent where chinese>math;
-- 查詢語文成績大于數學成績而且名字為張三的學生
select * from demoStudent where chinese>math and name='張三';
3.1區間查詢
-- 查詢語文成績在10到50之間的學生
語法:between...and...
select *from demoStudent where chinese between 10 and 50;
3.2模糊查詢
為了給大家演示,我們再插入一條數據
insert into demoStudent(id,name,age,chinese,math,english) values (7,'張五',17,11,22,33);-- 查詢表中所有姓名為張的(姓名幾個字行)
select *from demoStudent where name like '張%';
-- 查詢名字為什么張的學生(姓名兩個字)
select *from demoStudent where name like '_張';
-- 查詢名字為張什么的學生(姓名兩個字)
select *from demoStudent where name like '張_';
-- 查詢名字為張什么什么的學生(姓名三個字)
select *from demoStudent where name like '張__';
4.【order by】
4.1 排序查詢
-- 總分按照從高到低排序 desc
select name,chinese+math+english as total from demoStudent order by total desc;
-- 總分按照從低到高排序 asc
select name,chinese+math+english as total from demoStudent order by total asc;
4.2 分頁查詢
-- 查詢num1之后到num2的數據
select *from demoStudent order by id asc limit num1,num2;
5.【聚合函數】
5.1 count
-- 查詢數學成績大于50的有幾條
select count(math) from demoStudent where math>50;
5.2 sum
-- 查詢語文總成績
select sum(chinese) from demoStudent;
5.3 avg
-- 查詢英語的平均成績
select avg(english) from demoStudent;
5.4 max
-- 查詢英語的最大成績
select max(english) from demoStudent;
5.5 min
-- 查詢英語的最小成績
select min(english) from demoStudent;
6.【分組查詢】
6.1 group by
-- 顯示不同年齡的個數
select age,count(*) from demoStudent group by age ;
6.2 having
-- 查詢年齡為18的學生有幾個
select age,count(*) from demoStudent group by age having age =18;
今天的內容就到這里啦,內容比較多,大家加油啊!