2025年数据库查询语句

数据库查询语句1 查询全表数据 写法 1 SELECT FROM 表名 写法 2 select 字段名称 1 字段名称 2 字段名称 n from 表名 写法 3 给表起别名 同时给字段起别名 as 可以省略 select 关键字段 1 AS 别名 1 关键字段 2 AS 别名 2

大家好,我是讯享网,很高兴认识大家。

1.查询全表数据

写法1:

SELECT * FROM 表名;

讯享网

写法2:

讯享网select 字段名称1, 字段名称2, ... 字段名称n from 表名;

写法3:给表起别名,同时给字段起别名,as可以省略

select 关键字段1 AS'别名1', 关键字段2 AS'别名2', ... 关键字段n AS'别名n' from 表名 AS'别名'; 

查询指定字段

讯享网select 关键字段1, 关键字段2, 关键字段 from 表名;

2.冗余数据去掉

select distinct 关键字段 from 表名;

3.查询时,可以将关键字段为整数类型进行求和

讯享网select 关键字段1, 关键字段2, (关键字段3+关键字段4), ... from 表名; 如果关键字段的值为null,进行数据运算时,需要给他赋一个期望值,ifnull(字段名称,期望值) select 关键字段1, 关键字段2, (关键字段3+ifnull(关键字段4,0)), ... from 表名; 

4.带条件查询

-- select指定字段名称 from 表名 where 条件;

-- where 后面可以使用 赋值运算符=,比较运算符<;<=,>,>=,!=

-- 查询关键字段大于某个值的记录 select 关键字段1, 关键字段2 ... from 表名 where 关键字段>值; -- mysql里面判断某个条件不等于,<>(不等于) --查询关键字段不等于某个值的记录 select 关键字段1, 关键字段2 ... from 表名 where 关键字段<>值; 

-- where后面跟多个条件,并列条件或或者的条件

-- 并列条件

讯享网-- and 值1<关键字段的值<值2的记录 select 关键字段1, 关键字段2 ... from 表名 where 关键字段>值1 and 关键字段<值2; -- && 值1<关键字段的值<值2的记录 select 关键字段1, 关键字段2 ... from 表名 where 关键字段>值1 && 关键字段<值2; -- between and --关键字段的值在值1和值2之间的记录 select 关键字段1, 关键字段2 ... from 表名 where 关键字段 between 值1 and 值2; 

-- 或条件

-- || 关键字段的值=值1或者=值2的记录 select * from 表名 where 关键字段=值1 || 关键字段=值2; -- or关键字段的值=值1或者=值2的记录 select * from 表名 where 关键字段=值1 or 关键字段=值2; -- in 关键字段的值=值1或者=值2的记录 select * from 表名 where 关键字段 in( 值1 , 值2); 

-- where条件后面可以跟某个字段为null或者部位null的格式

讯享网-- 关键字段=null的记录 select * from 表名 where 关键字段 is null; -- 关键字段!=null的记录 select * from 表名 where 关键字段 is not null; 

5.模糊查询

关键字like

select 指定字段列表 from 表名 where 字段名称 like '%字符%';

-- 需求:模糊查询所有姓为马的学生所有信息 SELECT * FROM student3 WHERE NAME LIKE '%马%' ; -- 需求:查询出姓名是两个字符的学生的所有信息 -- where 条件后面 字段名称 like '__' ; SELECT * FROM student3 WHERE NAME LIKE '__' ; -- 需求:模糊查询 学生姓名中第二个字是化的学生所有信息 SELECT * FROM student3 WHERE NAME LIKE '%_化%'; -- 需求:查询学生姓名是否三个字符的人 SELECT * FROM student3 WHERE NAME LIKE '___' ; 

6.聚合函数查询

-- 语法 select 聚合函数(字段名称) from 表名;

讯享网-- count(字段名称):查询当前表的记录数 -- 一般非业务字段 id,如果业务字段的有些值null,数据存在漏洞的! select count(字段名称) from 表名; -- sum(字段名称):求和,针对某列字段值进行求和(整数) select sum(字段名称) from 表名; -- avg(字段名称):平均分函数 select avg(字段名称) from 表名; --max(字段名称):最大值函数 select max(字段名称) from 表名; -- min(字段名称):最小值函数 select min(字段名称) from 表名; 

-- 复杂查询和聚合函数一块使用

-- 条件查询嵌套聚合函数,数学成绩大于平均分的记录 SELECT * FROM student3 WHERE math > (SELECT AVG(math) FROM student3) ;

7.排序查询

-- 关键字order by

--语法:select 字段列表 from 表名 order by 字段名称 排序规则

--排序规则:asc:升序(默认值)  desc:降序

讯享网-- 数学成绩升序排序 select * from student order by math asc; -- 英语成绩降序排序 select * from student order by english desc; 

 -- 多个字段排序
-- 语法:select 字段列表 from 表名 order by 字段名称1 排序规则1 ,字段名称2 排序规则2 ;
-- 需求:查询数学成绩降序,英语成绩是升序的所有学生信息
-- 如果数学成绩相同,按照英语成绩排序规则进行操作

-- 数学成绩降序排序,英语成绩升序排序 select * from student order by math desc,english asc; 

8.字符编码格式

show variables like '%character%';

set character_set_client=gbk;


讯享网

9.分组查询

分组查询的时候,使用select可以查询出分组的字段

select 字段列表(包括字段分组) from 表名 group by 分组字段名称;

按照性别分组,计算出他们组的数学平均分

select sex '性别',avg(math) '数学平均分' from student group by sex;

group by和where一块使用

--where 条件必须置于group by 之前,先满足条件,才能分组

-- group by的后面不能使用聚合函数

10.筛选having

-- having和group by:having 后面可以使用聚合函数,而且group by 不能使用聚合函数

-- where 在前面,下来group by,再是having筛选

数学成绩不大于70分的人不参与分组,筛选出总人数大于2的一组

select sex '性别' ,avg(math) '数学平均分',count(id) '总人数' from student

where math>70 group by sex having count(id)>2;

11.分页查询limit

-- select 字段列表 from 表名 limit 起始行数,每页显示的条数;

-- 起始行数=(当前页码-1)*每页显示的条数

已知参数:每页显示条数3条,查询第一页的数据

select * from student limit 0,3;

-- 第二页数据

select * from student limit 3,,3;

作业:

讯享网USE ee_2204_02; CREATE TABLE student( id INT, -- id编号 NAME VARCHAR(20), -- 姓名 chinese INT, -- 语文 english INT, -- 英语 math INT -- 数学 ); INSERT INTO student(id,NAME,chinese,english,math) VALUES(1,'行哥',89,78,90); INSERT INTO student(id,NAME,chinese,english,math) VALUES(2,'潘金莲',67,53,95); INSERT INTO student(id,NAME,chinese,english,math) VALUES(3,'凤姐',87,78,77); INSERT INTO student(id,NAME,chinese,english,math) VALUES(4,'旺财',88,98,92); INSERT INTO student(id,NAME,chinese,english,math) VALUES(5,'白小黑',82,84,67); INSERT INTO student(id,NAME,chinese,english,math) VALUES(6,'白小黄',55,85,45); INSERT INTO student(id,NAME,chinese,english,math) VALUES(7,'范蹦蹦',75,65,30); -- 查询表中所有学生的信息 SELECT* FROM student; -- 查询表中所有学生的姓名和英语成绩 SELECT NAME,english FROM student; -- 过滤表中重复数据(去重关键字distinct) SELECT DISTINCT english FROM student; -- 统计每个学生的总分 SELECT id '编号', NAME '姓名', (chinese+english+math)'总分' FROM student; -- 总分数上加上10分特长分 SELECT id '编号', NAME '姓名', (chinese+english+math+10)'总分' FROM student; -- 使用别名表示学生分数 SELECT s.`id` '编号', s.`name` '姓名', s.`chinese`'语文', s.`english` '英语', s.`math` '数学', (chinese+english+math+10)'总分' FROM student s; -- 查询姓名为行哥的学生成绩 SELECT * FROM student WHERE NAME='行哥'; -- 查询英语成绩大于90分的同学 SELECT * FROM student WHERE english>90; -- 查询总分大于200分的所有同学 SELECT * FROM student WHERE (chinese+english+math)>200; -- 查询英语分数在80-90之间的同学 SELECT * FROM student WHERE english BETWEEN 80 AND 90; -- 查询数学分数为89,90,91的同学 SELECT * FROM student WHERE math IN(89,90,91); -- 查询所有姓白的同学的英语成绩 SELECT NAME '姓名', english '英语成绩' FROM student WHERE NAME LIKE '%白%' ; -- 查询数学分>80并且语文分>80的同学 SELECT * FROM student WHERE math>80 AND chinese>80; -- 查询英语>80或者总分>200的同学 SELECT * FROM student WHERE english>80 OR (chinese+english+math)>200; -- 对数学成绩升序排序 SELECT * FROM student ORDER BY math ASC; -- 对总分降序排序,然后再按数学从高到低的顺序输出 SELECT * FROM student ORDER BY (chinese+english+math) DESC,math DESC; -- 对姓白的学生成绩排序输出(排序规则自己定义) SELECT * FROM student WHERE NAME LIKE '%白%' ORDER BY math ASC; -- 查询数学成绩大于等于平均分的所有学生信息 SELECT * FROM student WHERE math>=(SELECT AVG(math) FROM student); -- 查询出英语成绩最高分的学生信息 SELECT * FROM student WHERE english=(SELECT MAX(english) FROM student); -- 模糊查询出学生姓名中第二个字是金的学生信息 SELECT * FROM student WHERE NAME LIKE '%_金%'; -- 查询出英语成绩平均分是多少 SELECT AVG(english) FROM student; -- 查询出数学总分是多少 SELECT SUM(math) FROM student; -- 查询学生表中有多少条记录 SELECT COUNT(id) FROM student;

小讯
上一篇 2025-03-01 21:14
下一篇 2025-02-07 07:02

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/28678.html