语法
select 字段名1 , 字段名2 , ... , 字段名n from 表名;
如果要查询表中所有字段,则直接可以使用 * 来代替字段列表
示例代码
-- 查询 school 库中 student 表中所有数据
use school;
select * from student;
-- 查询表中所有学号
select sid from student;
-- 查询表中所有姓名
select sname from student;
去除重复(distinct)
-- 查询表中姓名非重复的字段
select distinct sname from student;
计算列
-- 数值型 + null 值
select 5 + null; -- 结果为null
-- 数值型 + IFNULL(1,2)
select 5 + IFNULL(NULL,0); -- 结果为5
起别名:给字段或者表起别名
-- 给字段起别名
select sid as "学号" from student;
-- 给字段起别名,忽略 as
select sname "姓名" from student;
-- 给表格起别名
select s.`sid` from student s;
where 子句后跟条件
运算符
运算符 | 作用 |
---|---|
> 、< 、 <= 、 >= 、 = 、<>(不等号) | 大小关系运算 |
BETWEEN…AND | 处于某个范围之间 |
IN | 集合 |
ISNULL | NULL 值用其判断 |
AND 或 && | 与 |
OR 或 || | 或 |
NOT 或 ! | 非 |
LIKE _:单个任意字符 %:多个任意字符 | 模糊查询 |
示例代码
-- 创建一个员工表
CREATE TABLE employ(
id INT(11), -- 员工编号
NAME VARCHAR(40), -- 员工姓名
age INT, -- 年龄
address VARCHAR(100), -- 通讯地址
salary DOUBLE(10,2) -- 工资
);
-- 像员工表中插入数据
INSERT INTO employ VALUES(1001,"张三",15,"河南省洛阳市应天龙门",8900);
INSERT INTO employ VALUES(1002,"李四",12,"北京市海淀区",8000);
INSERT INTO employ VALUES(1003,"王五",19,"陕西省安康市",9000);
INSERT INTO employ VALUES(1004,"马六",20,"四川省成都市",7200);
INSERT INTO employ VALUES(1005,"黄七",25,"台湾省台北市",6800);
INSERT INTO employ VALUES(1006,"康八",30,"河南省郑州市航空港区",10000);
INSERT INTO employ VALUES(1007,"万九",20,"内蒙古自治区",NULL);
-- 查询表
SELECT * FROM employ;
-- 查询工资大于 8000 的员工信息
SELECT * FROM employ WHERE salary > 8000;
-- 查询年龄不等于20的员工信息
SELECT * FROM employ WHERE age <> 20;
-- 查询年龄在 18到30 之间的员工信息
SELECT * FROM employ WHERE age BETWEEN 18 AND 30;
-- 查询年龄为 15 19 20 的员工信息
SELECT * FROM employ WHERE age IN(15,19,20);
-- 查询工资为 null 的员工信息
SELECT * FROM employ WHERE ISNULL(salary);
-- 查询年龄20岁,且工资是非空的员工信息
SELECT * FROM employ WHERE age = 20 AND NOT ISNULL(salary);
-- 查询年龄15岁或者20岁员工信息
SELECT * FROM employ WHERE age = 15 OR age = 20;
-- 查询员工地址中有省字的所有员工信息
SELECT * FROM employ WHERE address LIKE '%省%';
语法
order by 排序字段1 排序方式1 , 排序字段2 排序方式2...
排序方式
命令 | 作用 |
---|---|
ASC | 升序(默认的) |
DESC | 降序 |
注意:如果有多个排序条件时,当前边条件值相同时,才会判断第二条件,例如:年龄相同时,再按工资排序
示例代码
-- 按照工资进行升序排序
SELECT * FROM employ ORDER BY salary ASC;
-- 按照年龄进行降序排序
SELECT * FROM employ ORDER BY age DESC;
-- 按照年龄进行降序排序,当年龄相同时按照工资进行升序(注意:1004和1007俩个数据)
SELECT * FROM employ ORDER BY age DESC , salary ASC;
概述:聚合函数将一列数据作为一个整体,进行纵向的计算
常见的几个聚合函数
函数名 | 作用 |
---|---|
count | 计算个数,一般选择非空的列 |
max | 计算此列最大值 |
min | 计算此列最小值 |
sum | 计算此列和 |
avg | 计算此列平均值 |
注意:聚合函数的计算,必须排除 NULL 值才行
示例代码
-- 查询员工的个数
SELECT COUNT(id) AS "员工个数" FROM employ;
-- 查询最高工资的信息
SELECT MAX(salary) FROM employ;
-- 查询最小年龄
SELECT MIN(age) FROM employ;
-- 查询所有工资和
SELECT SUM(IFNULL(salary,0)) FROM employ;
-- 计算员工的平均年龄
SELECT AVG(age) FROM employ;
语法
group by 分组字段;
注意事项
示例代码
-- 根据年龄进行分组
SELECT age FROM employ GROUP BY age;
-- 根据年龄进行分组,并查询相同年龄个数大于等于2的年龄
SELECT age FROM employ GROUP BY age HAVING COUNT(age) >= 2;
-- 根据年龄进行分组,并查询对应年龄阶段员工的个数
SELECT age , COUNT(age) FROM employ GROUP BY age;
语法
-- limit 是 MySQL 的方言
limit 开始的索引,每页查询的记录条数;
公式:开始的索引 = (当前页码 - 1) * 每页显示的条数
示例代码
-- 每页显示 3条数据记录
SELECT * FROM employ LIMIT 0,3; -- 第一页
SELECT * FROM employ LIMIT 3,3; -- 第二页
SELECT * FROM employ LIMIT 6,3; -- 第三页