SQL查询语句

数据查询语言。

数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。

一些简单语法:

  • select 列名-------->要查询的列名称
  • from 表名--------->要查询的表名称
  • where 条件-------->行条件(要查询的限制条件)
  • group by 分组列-------->对结果分组
  • having 分组条件-------->分组后的行条件(分组以后的查询限制条件)
  • order by 排序列-------->对结果分组
  • limit 起始行,行数-------->结果限定(从第几行开始,查几行)。

下面来介绍查询语言的具体用法。

案例及数据库基本操作接上一篇博文:https://blog.csdn.net/weixin_53186633/article/details/119618990

基础查询

查询表中记录:

select 列名1,列名2... from 表名;

例如:查询学生的学号及姓名:

select sid,sname from student;

如果要查询表中所有的记录的话,可以使用通配符‘*’来代替所有列。

select * from 表名;

例如:查询所有学生信息:

select * from student;

在这里插入图片描述

条件查询

select1,列2... from 表名 where 条件;

在where条件语句中可以使用如下运算符:

  • =(是)、!=(不是)、<>、<、<=、>、>=
  • between...and... (包含端点处的值)
  • in(集合):在集合范围内
  • is NULL:是否是空值
  • and:与
  • or:或
  • not:取反
    例如:
--查询年龄小于20的女生。
select * from student where sage<20 and sgender='女';  --1004 mary
--查询年龄大于等于17小于等于20的学生。
select * from student where sage between 17 and 20;

--查询姓名不为null的学生记录。
select * from student where NOT sname IS NULL;

模糊查询

selectfrom 表名 where 某列 like 条件;

其中,关于条件,SQL匹配了两种匹配方式:

(1)%:表示任意0个或多个字符

(2)_:表示任意单个字符

例如:

--查询姓名由五个字母构成,且第五个字母为e的学生信息
select * from student where sname like '____e';   --alice

--查询姓名以z开头的学生信息。
select * from student where sname like 'z%';    --zhangSan

在这里插入图片描述
在这里插入图片描述

字段控制查询

(1)去重:使用DISTINCT
(2)将Null转换为指定的值:IFNULL(列名,值)
(3)给列添加别名:列名 as 别名

例如:

创建雇员表emp:
在这里插入图片描述
在查询员工工资sal时,会出现重复数据,去掉重复记录:

select DISTINCT sal from emp;

计算雇员薪资sal和佣金comm之和,并将和起名为total:

select *,sal+IFNULL(comm,0) as total from emp;

在这里插入图片描述

排序

对查询结果进行排序

selectfrom 表名 [where 条件] order by 列名 asc/desc;

其中,ASC表示按照升序排列,DESC表示按照降序排列。

例如:查询所有学生信息,并将学生信息按照年龄降序排列:

select * from student order by sage DESC;

聚合函数

(1)COUNT(列名):统计指定列不为NULL的记录行数;
(2)max/min:查询列的最大/最小值
(3)sum(列名):求和
(4)avg(列名):平均值

例如:

查询emp表中拥有佣金的人数:

select COUNT(comm) cnt from emp;   --3

统计员工平均工资:

select AVG(sal) from emp;

分组查询

分组查询使用关键字group by

例如:查询每个部门的部门编号以及每个部门工资大于1500的人数。

select deptno,count(*) 
from emp
where sal>1500
GROUP BY deptno;

having子句

使用having子句对分组结果进行筛选。

where与having的区别:

where是对分组前的数据进行筛选。

having是对分组后的数据进行筛选,必须和group by结合使用。

limit分页查询

分页查询,用来限定查询结果的起始行和查询行数是MySQL独有的。

selectfrom 表名 [where 条件] limit 起始行索引,查询的行数

例如:查询员工表前三行记录:

select * from emp LIMIT 0,3;

多表连接查询

(1)内连接:选出两张表中互相匹配的记录(两张表根据数据相同的字段,将两张表连接起来)

(2)外连接:包括左外连接和右外连接

左外连接:又称为左连接,查询结果中包含左边表中所有的记录,右边表中没有匹配的记录显示为NULL。

selectfrom 左表 left join 右表 on 条件; 

右外连接:又称为右连接,包含右边表中所有的记录,左边表中没有匹配的记录显示为NULL。

selectfrom 左表 right join 右边 on 条件;
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐