DQL(数据库查询)

什么是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分附加分
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值