1. DQL(Data Query Language:数据库查询语言)知识点概览
DQL(Data Query Language:数据库查询语言):
用来查询数据(记录),不会对数据进行改变,而是让数据库发送结果集给客户端
概览:
2.基本语法
select 列名1,列名2…….列名n from 表名 where 条件 group by 列名 having 条件 order by 列名;
这个SQL语句包含了DQL部分所有的查询知识点。简单点说,只要记住这句话,查询部分的语法基本就都掌握了。
下面我们将对各个部分分开进行详细说明。
3.查询方法概览
创建一个数据库和表格,方便查询演示。代码如下:
这里我是使用SQLyog创建的表格,使用cmd命令窗口也可以直接执行下列语句,后面的所有演示都是使用该软件写的,方便进行说明和注释
#创建数据库queryDemo
CREATE DATABASE queryDemo;
#进入数据库queryDemo
USE queryDemo;
#在queryDemo中创建demoStudent
CREATE TABLE demoStudent(
id INT PRIMARY KEY AUTO_INCREMENT,
`name` VARCHAR(20),
age INT,
score INT
)
#插入数据
INSERT INTO demoStudent(`name`,age,score) VALUES('张三',18,89);
INSERT INTO demoStudent(`name`,age,score) VALUES('李四',23,77);
INSERT INTO demoStudent(`name`,age,score) VALUES('王五',19,69);
INSERT INTO demoStudent(`name`,age,score) VALUES('赵六',18,89);
INSERT INTO demoStudent(`name`,age,score) VALUES('田七',20,92);
INSERT INTO demoStudent(`name`,age,score) VALUES('小明',22,85);
INSERT INTO demoStudent(`name`,age,score) VALUES('小红',25,97);
#01.基础查询
#查询所有列
SELECT*FROM demoStudent;
#查询指定列
SELECT id,`name` FROM demoStudent;
SELECT `name`,age,score FROM demoStudent;
#02.条件查询
#条件查询 运算符 关键字-- 1.运算符 =、!=、<>、<、<=、>、>=; -- 这些都是普通的数学运算符,就就不做说明了, <>:表示不等于
SELECT*FROM demoStudent
WHERE id=5;
SELECT*FROM demoStudent
WHERE age!=18;
SELECT*FROM demoStudent
WHERE age<>18;
SELECT*FROM demoStudent
WHERE score>90;
#-- 2.BETWEEN…AND(在...之间 ); IN(set):与set集合交集 ;IS NULL(是否为空 ); IS NOT NULL(是否为非空); AND( 并且);OR(或);NOT(非)
#查询2到4之间的学生
SELECT*FROM demoStudent
WHERE id BETWEEN 2 AND 4;
#in(set):指在数据库中数据与set的交集 获得包含有set中数据的记录(行)
SELECT*FROM demoStudent
WHERE age IN(25,22,30);
SELECT*FROM demoStudent
WHERE age IN('小','张三','哈哈');
# -- 检验null, 所以添加一个新数据
INSERT INTO demoStudent VALUES(8,'小花',20,NULL);
#分数为空的学生
SELECT*FROM demoStudent
WHERE score IS NULL;
#查询分数不为空的学生
SELECT*FROM demoStudent
WHERE score IS NOT NULL;
SELECT*FROM demoStudent
WHERE age=18 AND score>78;
SELECT*FROM demoStudent
WHERE age=22 OR age=25;
SELECT*FROM demoStudent
WHERE NOT age=18;
SELECT*FROM demoStudent
WHERE score>90;
SELECT*FROM demoStudent
WHERE `name`='张三';
#模糊查询
#任意一个字符
SELECT*FROM demoStudent
WHERE age LIKE '2_';
SELECT*FROM demoStudent
WHERE age LIKE '_8';
SELECT*FROM demoStudent
WHERE `name`LIKE '小_';
#%:任意0~n个字符
SELECT*FROM demoStudent
WHERE age LIKE '%8';
SELECT*FROM demoStudent
WHERE `name` LIKE '%小%';
#排序
#排序order by
#升序ASC
SELECT*FROM demoStudent
ORDER BY score ASC;
#降序DESC
SELECT*FROM demoStudent
WHERE score>80
ORDER BY score DESC;
1.方法概览
#排序
#排序order by
#升序ASC
SELECT*FROM demoStudent
ORDER BY score ASC;
#降序DESC
SELECT*FROM demoStudent
WHERE score>80
ORDER BY score DESC;
#字段控制查询
#字段控制查询 distinct 含义:去除表中id,name,age,score完全一样的学生
SELECT DISTINCT*FROM demoStudent;
#语句含义:去除表格中姓名一样的学生
SELECT DISTINCT `name`FROM demoStudent;
#聚合函数查询
# count(),sum(),avg(),max(),min()
#学生中最高分数
SELECT MAX(score) FROM demoStudent;
#学生中最低分数
SELECT MIN(score) FROM demoStudent;
#学生中平均分数
SELECT AVG(score) FROM demoStudent;
#学生人数
SELECT COUNT(*) FROM demoStudent;
#分组查询
#分组查询 group by having 语句含义:根据性别分组,并统计每个组有少人
#limit LIMIT用来限定查询结果的起始行,以及总行数
#.limit 作用:分页
#从数据表中第4条数据开始显示,每页显示三条数据
SELECT*FROM demoStudent LIMIT 3,5;