普通查詢
查看整個(gè)表
-
格式:
- select * from 表名;
-
示例:
select * from students;
查詢指定字段
-
格式
- select 字段名1,字段名2 from 表名;
-
示例
select id, name from students;
給字段起別名
-
格式
- select 字段名1 as 新名字,字段名2 as 新名字 from 表名;
-
示例
select name as 姓名, age as 年齡 from students;
消除重復(fù)行
-
格式
- select distinct 字段名 from 表名;
-
示例
select distinct gender from students;
條件查詢
比較運(yùn)算
-
格式
- select 字段集合 from 表名 where 所需數(shù)據(jù)的范圍;
-
示例
select * from students where id > 5;
正則
-
格式
- select 字段集合 from 表名 where name rlike "正則表達(dá)式";
-
示例
select * from students where name rlike "^張";
范圍
-
連續(xù)
-
格式
- select 字段集合 from 表名 where 字段名 between 點(diǎn)值 and 點(diǎn)值;
-
示例
select * from students where id between 3 and 6;
-
-
非連續(xù)
-
格式
- select 字段集合 from 表名 where 字段名 in 不連續(xù)"值";
-
示例
select * from students where id in (5, 8 , 9);
-
數(shù)據(jù)排序
正序 asc
-
格式
- select 字段集合 from 表名 where 所需數(shù)據(jù)的范圍 order by "作為排序標(biāo)準(zhǔn)"的字段名 asc;
-
示例
select * from students where id >5 order by age asc;
反序 desc
-
格式
- select 字段集合 from 表名 where 所需數(shù)據(jù)的范圍 order by "作為排序標(biāo)準(zhǔn)"的字段名 desc;
-
示例
select * from students where id >5 order by age desc;
聚合函數(shù)
總數(shù) count
-
格式
- select count(字段集合) from 表名;
-
示例
select count(*) from students;
最大值 max
-
格式
- select max(字段名) from 表名;
-
示例
select max(age) from students;
最小值 min
-
格式
- select min(字段名) from 表名;
-
示例
select min(age) from students;
求和 sum
-
格式
- select sum(字段名) from 表名;
-
示例
select sum(age) from students;
平均值 avg
-
格式
- select avg(字段名) from 表名;
-
示例
select avg(height) from students;
分組 group by
group by + group concat()
-
格式
- select 字段名1, group_concat(字段名2 ,字段名3) from 表名 group by 字段名1;
-
示例
select id, group_concat(name, age) from students group by id;
group by + 聚合函數(shù)
-
格式
- select 字段名1, 函數(shù)名(字段名2) from 表名 group by 字段名1;
-
示例
select id, avg(height) from students group by id;
分頁(yè) limit
格式
- select 字段集合 from 表名 limit 起始索引號(hào), 每次顯示數(shù)量;
示例
select * from students limit 3, 5;
連接查詢
內(nèi)連接查詢(結(jié)果為,兩個(gè)表共有的數(shù)據(jù))
-
格式
- select 字段集合 表名1 inner join 表名2 on 表名1.表1字段 = 表名2.表2字段;
-
示例
select * from students inner join classes on students.classes_id = classes.id;
左連接查詢(對(duì)右表不存在的數(shù)據(jù)用null填充)
-
格式
- select 字段集合 表名1 left join 表名2 on 表名1.表1字段 = 表名2.表2字段;
-
示例
select * from students left join classes on students.classes_id = classes.id;
子查詢(一條查詢語(yǔ)句中嵌入了另一條查詢語(yǔ)句)
-
示例
select * from students where age > (select avg(age) from students);;
小結(jié)
查詢語(yǔ)句語(yǔ)法順序
- select distinct 字段集合
from 表名
where 取值范圍
group by 字段名
order by 字段名
limit 起始索引號(hào), 每次顯示數(shù)量
附 創(chuàng)建表sql
create database school_of_three_kindoms charset=utf8;
use school_of_three_kindoms;
-- 創(chuàng)建學(xué)生基本信息表
create table students(
-- 學(xué)籍號(hào):int unsigned無(wú)符號(hào)整型, auto_increment自增,primary key設(shè)置為主鍵,not null非空
id int unsigned auto_increment primary key not null,
-- 姓名: varchar(30)可變字符類(lèi)型, default ""默認(rèn)為空字符
name varchar(30) default "",
-- 年齡: tinyint unsigned無(wú)符號(hào)整型, default 0 默認(rèn)為 0
age tinyint unsigned default 0,
-- 身高: 浮點(diǎn)型(5個(gè)數(shù)字,包含2個(gè)小數(shù),如 180.05)
height decimal(5, 2),
-- 性別: enum枚舉類(lèi)型("1"對(duì)應(yīng)"男","2"對(duì)應(yīng)"女","3"對(duì)應(yīng)"保密"")
gender enum("男","女","保密"),
-- 所屬班級(jí): int unsigned 無(wú)符號(hào)整型,默認(rèn)值為0
classes_id int unsigned default 0
);
-- 創(chuàng)建班級(jí)
create table classes(
id int unsigned auto_increment primary key not null,
name varchar(20)
);
insert into students values
(null, "曹操", 50, 183.05, 1, 1),
(null, "夏侯?lèi)?, 40, 193.05, 1, 1),
(null, "許褚", 42, 186.05, 1, 1),
(null, "司馬懿", 48, 188.05, 1, 1),
(null, "劉備", 48, 179.01, 1, 2),
(null, "張飛", 46, 179.60, 1, 2),
(null, "關(guān)羽", 47, 188.01, 1, 2),
(null, "孫權(quán)", 39, 185.09, 1, 3),
(null, "周瑜", 30, 190.09, 1, 3),
(null, "大喬", 28, 162.32, 2, 3),
(null, "小喬", 26, 160.19, 2, 3),
(null, "刑天", 100, 900.15, 1, 4),
(null, "鬼符三通", 59, 179.68, 1, 5),
(null, "曹焱兵", 20, 186.34, 1, 5),
(null, "曹玄亮", 13, 160.21, 1, 5),
(null, "夏玲", 21, 176.02, 2, 5);
insert into classes values
(0, "班級(jí)1_魏"),
(0, "班級(jí)2_蜀"),
(0, "班級(jí)3_吳");