什么是DQL
- Data Query Language 简称DQL,数据库查询语言, 关键字为SELECT
简单查询
准备
新建一个考试成绩表,并添加数据
create table exam(
id int primary key auto_increment,
name varchar(20) not null,
chinese double,
math double,
english double
);
insert into exam values(null,'关羽',85,76,70);
insert into exam values(null,'张飞',70,75,70);
insert into exam values(null,'赵云',90,65,95);
insert into exam values(null,'刘备',null,55,38);
语法一
select * from 表名; 查询该表中所有列信息
select 列名,列名... from 表名; 查询表中指定列的信息
查询表中所有学生的考试成绩信息。
查询表中所有学生的姓名和对应的英语成绩。
英语老师需要查询班级英语成绩
语法二
select 表达式(列名执行运算) from 表名;
select 列名 as 别名 from 表名;
在所有学生各门分数上加10分特长分。
统计每个学生的总分。
使用别名表示学生分数。
在对列起别名时,as可以省略
语法三
select 列名 from 表名 where条件语句
查询姓名为关羽的学生成绩
查询英语成绩大于90分的同学
查询总分大于200分的所有同学姓名和对应的各科成绩以及总分
查询之运算符
相等= 不等 <> 或者 !=
between ...and... 在两者之间取值 between 70 and 80 等价于 >=70 <=80
注意:前面那个数要比后面那个数要小
in(值,值,值) 在指定值中任取一个 in(70,80,90) 值可以是70、80或者90
查询英语成绩为70,80,90的人的信息
like '模糊查询,表达式有两个占位符 % 任意字符串 _ 任意单个字符 张_ 张%
例如: name like '张%' 所有姓张学员 ,'%张%';含有张字
name like '张_' 所有姓张名字为两个字学员
is null 判断该列值为空
Is not null 判断不是为null
and 逻辑与 or 逻辑或 not 逻辑非
代码理解
-- 查询
-- sql语句的编写顺序和执行的顺序是不一样的
-- SELECT 后面跟的是具体展示的列名, 必须的,表名.列名
-- FROM 所有参与到查询中的表名 , 必须的
-- WHERE 条件
-- GROUP BY 分组的,列名
-- HAVING 分组之后的过滤,
-- ORDER BY 排序
-- LIMIT 分页
-- 注意 : 终止看到的数据可能存在与表中,也可能不存在(通过计算的)
-- 查询所有人的语文考试成绩
-- 1、确定有哪些表参与到查询中了,涉及到条件和结果的表一定会参与
-- 2、写条件,只要涉及所有的,就没有条件。
-- 3、写展示的内容。
SELECT name,chinese
FROM exam
-- 查询所有人的所有的成绩, * 所有的列
SELECT *
FROM exam
-- 需求:查询每个人的考试成绩,并求总分
-- 问题:
-- 1、null 不能参与任何计算,ifnull(col,val)
-- ifnull(col,val),col可能出现null的列名,出现了null之后怎么办
-- 2、列名太长,可以使用 as 起一个别名 , as 可以省略不写
-- 3、如果结果需要排序的话,可以使用order by ,默认是升序asc,降序desc
-- ORDER BY 列名,
SELECT exam.*,IFNULL(chinese,0)+math+english as 'total'
FROM exam
ORDER BY total desc
-- 受疫情影响,决定为每一个人+10分附加分