提醒:设定下面的语句是在数据库名为 db_student里执行的。
创建t_student表
CREATE TABLE t_student(id INT NOT NULL AUTO_INCREMENT,stuName VARCHAR(30) DEFAULT NULL,age INT,sex VARCHAR(4) DEFAULT NULL,gradeName VARCHAR(30) DEFAULT NULL,PRIMARY KEY(id)
);
为t_student表里添加一条数据
INSERT INTO t_student(stuName,age,sex,gradeName)VALUE('测试01',20,NULL,'大三');
1. 查询所有字段
- SELECT 字段1,字段2,字段3.FROM 表名;
- SELECT*FROM 表名;
SELECT id,stuName,age,sex,gradeName FROM t_student;SELECT stuName,id,age,sex,gradeName FROM t_student;/*改变查询表结果的字段顺序*/SELECT * FROM t_student;
2. 查询指定字段
SELECT 字段1,字段2,字段3._FROM 表名;
SELECT stuName,gradeName FROM t_student;/*查询指定字段*/
3. Where 条件查询
SELECT 字段1,字段2,字段3.FROM 表名 WHERE 条件表达式;
SELECT * FROM t_student WHERE id = 1;SELECT * FROM t_student WHERE age>21;
4. 带IN 关键字查询
SELECT 字段1,,字段2,字段3…FROM 表名 WHERE 字段INOT] IN 元素1,元素2,元素3);
SELECT * FROM t_student WHERE age IN(20,23);SELECT * FROM t_student WHERE age NOT IN(20,23);
5. 带BETWEEN AND 的范围查询
SELECT 字段1,字段2,字段3.-FROM 表名 WHERE 字段 INOTI BETWEEN 取值 1 AND 取值2;
SELECT * FROM t_student WHERE age BETWEEN 20 AND 23;/*范围查询*/SELECT * FROM t_student WHERE age NOT BETWEEN 20 AND 23;
6. 带LIKE 的模糊查询
, SELECT 字段1,字段2,字段3…FRONI 表名 WHERE 字段[NOT] LIKE “字符串”;
“%”代表任意字符;
“”代表单个字符;
SELECT * FROM t_student WHERE stuName LIKE'小强';/*模糊查询*/SELECT * FROM t_student WHERE stuName LIKE'小强%';/*带有小强的*/SELECT * FROM t_student WHERE stuName LIKE'小_';/*带有小的两个字段*/SELECT * FROM t_student WHERE stuName LIKE'小__';/*带有小的三个字段*/SELECT * FROM t_student WHERE stuName LIKE'%莉%';/*只要有莉的全部查询*/
7. 空值查询
SELECT 字段1,字段2,字段3.FROM 表名 WHERE 字段 IS [NOT] NULL,
SELECT * FROM t_student WHERE sex IS NULL;
SELECT * FROM t_student WHERE sex IS NOT NULL;
8. 带AND 的多条件查询
SELECT 字段1,字段 2.FROM 表名 WHERE 条件表达式 1 AND 条件表达式2[.AND 条件表达式口]
SELECT * FROM t_student WHERE gradeName ='大二' AND age = 20;
9. 带OR 的多条件查询
SELECT 字段1,字段2.FROM 表名 WHERE 条件表达式 1OR 条件表达式2[.OR 条件表达式 ]
SELECT * FROM t_student WHERE gradeName ='大二' OR age = 21;
10. DISTINCT 去重复查询
SELECT DISTINCT 字段名 FROM 表名;
SELECT gradeName FROM t_student;/*先查询gradeName全部的,方便对比去重效果*/
SELECT DISTINCT gradeName FROM t_student;/*去重复*/
11. 对查询结果排序
SELECT 字段1,字段 2.FROM 表名 ORDER BY 属性名[ASCDESC]
SELECT * FROM t_student ORDER BY age ASC;/*升序*/
SELECT * FROM t_student ORDER BY age DESC;/*降序*/
12. GROUPBY分组查询
GROUP BY 属性名[HAVING 条件表达式][WITH ROLLUP]
- 单独使用;
- 与 GROUP_CONCATO函数一起使用;
- 与聚合函数一起使用;
- 与HAVING 一起使用(限制!输出的结果);
- 与 WITH ROLLUP 一起使用(最后加入一个总和行);
SELECT * FROM t_student GROUP BY gradeName;/*单个使用毫无意义*/
SELECT gradeName ,GROUP_CONCAT(stuName) FROM t_student GROUP BY gradeName;/*聚合函数*/SELECT gradeName ,COUNT(stuName)FROM t_student GROUP BY gradeName;/*聚合函数*/
SELECT gradeName ,COUNT(stuName)FROM t_student GROUP BY gradeName HAVING COUNT(stuName)>3;/*聚合函数 对查询的结果筛选*/SELECT gradeName ,COUNT(stuName)FROM t_student GROUP BY gradeName WITH ROLLUP;/*对查询的结果数量总计*/
SELECT gradeName ,GROUP_CONCAT(stuName) FROM t_student GROUP BY gradeName WITH ROLLUP;
13. LIMIT 分页查询
SELECT 字段1,字段 2.FROM 表名 LINIT 初始位置,记录数;
SELECT * FROM t_student LIMIT 0,5;/*分页查询*/
SELECT * FROM t_student LIMIT 5,10;
SELECT * FROM t_student LIMIT 10,15;
推荐
- MySQL:常用的SQL语句
- MySQL:合并查询语句