MySQL基础-----SQL语句之DQL数据查询语句(上篇)

 目录

前言

select基本语法

一、基础查询

1.查询多个字段

2.字段设置别名

3.去除重复记录

案例

二、条件查询

1.语法

2.条件

案例

 三、聚合函数

1.聚合函数

2.语法

 案例


前言

        前面我们学习了DML和DDL语句,那么本期我们学习数据查询的语句(DQL语句),DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记 录。

查询关键字 : SELECT
在一个正常的业务系统中,查询操作的频次是要远高于增删改的,当我们去访问企业官网、电商网站, 在这些网站中我们所看到的数据,实际都是需要从数据库中查询并展示的。而且在查询的过程中,可能还会涉及到条件、排序、分页等操作。

那么,本期我们主要学习的就是如何进行数据的查询操作。  

我们先来完成如下数据准备工作 :
drop table if exists employee;create table emp(
id int comment '编号',
workno varchar(10) comment '工号',
name varchar(10) comment '姓名',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idcard char(18) comment '身份证号',
workaddress varchar(50) comment '工作地址',
entrydate date comment '入职时间'
)comment '员工表';INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (1, '00001', '妲己', '女', 20, '123456789012345678', '北京', '2000-01-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (2, '00002', '韩信', '男', 18, '123456789012345670', '北京', '2005-09-01');INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (3, '00003', '亚瑟', '男', 38, '123456789712345670', '上海', '2005-08-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (4, '00004', '西施', '女', 18, '123456757123845670', '北京', '2009-12-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (5, '00005', '王昭君', '女', 16, '123456769012345678', '上海', '2007-07-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (6, '00006', '李白', '男', 28, '12345678931234567X', '北京', '2006-01-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (7, '00007', '李信', '男', 40, '123456789212345670', '北京', '2005-05-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (8, '00008', '小乔', '女', 18, '123456157123645670', '天津', '2015-05-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (9, '00009', '米莱迪', '女', 45, '123156789012345678', '北京', '2010-04-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (10, '00010', '刘备', '男', 53, '123456789012345670', '上海', '2011-01-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (11, '00011', '老船长', '男', 55, '123567897123465670', '江苏', '2015-05-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (12, '00012', '狂铁', '男', 32, '123446757152345670', '北京', '2004-02-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (13, '00013', '老夫子', '男', 88, '123656789012345678', '江苏', '2020-11-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (14, '00014', '武则天', '女', 65, '123456719012345670', '西安', '2019-05-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (15, '00015', '狄仁杰', '男', 70, '12345674971234567X', '西安', '2018-04-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (16, '00016', '朵莉亚', '女', 18, null, '北京', '2012-06-01');

表如下:

select基本语法

DQL 查询语句,语法结构如下:
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
我们在讲解这部分内容的时候,会将上面的完整语法进行拆分,分为以下几个部分:
  1. 基本查询(不带任何条件)
  2. 条件查询(WHERE
  3. 聚合函数(countmaxminavgsum
  4. 分组查询(group by
  5. 排序查询(order by
  6. 分页查询(limit

一、基础查询

在基本查询的 DQL 语句中,不带任何的查询条件,查询的语法如下:

1.查询多个字段

 查询指定字段

SELECT 字段1, 字段2, 字段3 ... FROM 表名 ; 

查询全部字段,即整条数据 

SELECT * FROM 表名 ;
注意 : * 号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)。

2.字段设置别名

SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;

3.去除重复记录

SELECT DISTINCT 字段列表 FROM 表名;

案例

A. 查询指定字段 name, workno, age并返回

select name,workno,age from emp;

B. 查询返回所有字段

select id ,workno,name,gender,age,idcard,workaddress,entrydate from emp;
select * from emp;

二者效果是一样的。

C. 查询所有员工的工作地址,起别名

select workaddress as '工作地址' from emp;
-- as可以省略
select workaddress '工作地址' from emp;

D. 查询公司员工的上班地址有哪些(不要重复)
select distinct workaddress '工作地址' from emp;

二、条件查询

1.语法

SELECT 字段列表 FROM 表名 WHERE 条件列表 ;

2.条件

常用的比较运算符如下:

比较运算符

功能

>

大于

>=

大于等于

<

小于

<=

小于等于

=

等于

<> 或 !=

不等于

BETWEEN ... AND ...

在某个范围之内(含 小、 大值)

IN(...)

在in之后的列表中的值,多选一

LIKE 占位符

模糊匹配(_匹配单个字符, %匹配任意个字符)

IS NULL

是NULL

常用的逻辑运算符如下:

逻辑运算符

功能

AND 或 &&

并且 (多个条件同时成立)

OR 或 ||

或者 (多个条件任意一个成立)

NOT 或 !

非 , 不是

案例

 A. 查询年龄等于 88 的员工

select * from emp where age=88;

 B. 查询年龄小于 20 的员工信息

select * from emp where age < 20;

C. 查询年龄小于等于 20 的员工信息 

select * from emp where age <= 20; 

D. 查询没有身份证号的员工信息 

select * from emp where idcard is null;

E. 查询有身份证号的员工信息 

select * from emp where idcard is not null;

F. 查询年龄不等于 88 的员工信息
select * from emp where age != 88;
select * from emp where age <> 88;

G. 查询年龄在15(包含) 20(包含)之间的员工信息
select * from emp where age >= 15 && age <= 20;
select * from emp where age >= 15 and age <= 20;
select * from emp where age between 15 and 20;

 H. 查询性别为 女 且年龄小于 25岁的员工信息

select * from emp where gender = '女' and age < 25;

I. 查询年龄等于18 20 40 的员工信息 

select * from emp where age = 18 or age = 20 or age =40;
select * from emp where age in(18,20,40);

 J. 查询姓名为两个字的员工信息 _ %

select * from emp where name like '__';

K. 查询身份证号最后一位是X的员工信息 

select * from emp where idcard like '%X';
select * from emp where idcard like '_________________X';

 三、聚合函数

1.聚合函数

概念: 将一列数据作为一个整体,进行纵向计算 。
常见的聚合函数:

函数

功能

count

统计数量

max

大值

min

小值

avg

平均值

sum

求和

2.语法

SELECT 聚合函数(字段列表) FROM 表名 ;

注意 : NULL值是不参与所有聚合函数运算的。

 案例

A. 统计该企业员工数量

select count(*) from emp; -- 统计的是总记录数
select count(idcard) from emp; -- 统计的是idcard字段不为null的记录数

对于 count 聚合函数,统计符合条件的总记录数,还可以通过 count( 数字 / 字符串 ) 的形式进行统计
查询,比如:
select count(1) from emp;
对于count(*) 、count(字段)、 count(1) 的具体原理,我们在进阶篇中SQL优化部分会详
细讲解,此处大家只需要知道如何使用即可。
B. 统计该企业员工的平均年龄
select avg(age) from emp;
C. 统计该企业员工的最大年龄
select max(age) from emp;

D. 统计该企业员工的最小年龄

 

select min(age) from emp;

E. 统计西安地区员工的年龄之和 

select sum(age) from emp where workaddress = '西安';

以上就是本期的全部内容,不过DQL语句还没结束呢,我们下一期继续学习。

分享一张壁纸:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/512223.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

并查集(数据结构)

并查集是一种数据结构&#xff0c;他的作用有两个&#xff1a; 1&#xff0c;合并&#xff1a;将两个子集合并成一个集合 2&#xff0c;查找&#xff1a;确定某个元素处在哪个集合 fa[x]存节点x的父节点 查找&#xff1a; 就是为了找到某个点的根节点&#xff0c;如果找到了…

LZO索引文件失效说明

在hive中创建lzo文件和索引时&#xff0c;进行查询时会出现问题.hive的默认输入格式是开启小文件合并的&#xff0c;会把索引也合并进来。所以要关闭hive小文件合并功能&#xff01;

每日一练 | 华为认证真题练习Day192

1、下面是路由器RTB的部分输出信息&#xff0c;关于输出信息描迷错误的是: A. 接口上动态加入的组播组个数是1。 B. 加入的组播组地址是225.1.1.2 C. DISPLAY IGMP GROUP命令用来查看IGMP组播组信息&#xff0c;包括通过成员报告动态加入的组播组和通过命令行静态加入的组播组…

Python里的全局变量、局部变量、类的self.*

问题 困惑&#xff0c;leetcode第538题&#xff0c;写成下面这种&#xff0c;不能得到正确的答案&#xff1a; class Solution_a:def traverse(self, root, cur_sum):# 思路&#xff1a;中序遍历可以打印出有序的数组&#xff0c;那么反一下&#xff0c;先右后中再左就可以打…

YOLOv8独家原创改进:特征融合涨点篇 | 广义高效层聚合网络(GELAN) | YOLOv9

💡💡💡本文独家改进:即结合用梯度路径规划(CSPNet)和(ELAN)设计了一种广义的高效层聚合网络(GELAN),高效结合YOLOv8,实现涨点。 将GELAN添加在backbone和head处,提供多个yaml改进方法 💡💡💡在多个私有数据集和公开数据集VisDrone2019、PASCAL VOC实现…

类变量【静态变量 static】

类变量【静态变量 static】 什么是类变量如何定义类变量如何访问类变量类变量使用注意事项和细节 什么是类变量 类变量&#xff0c;也叫静态属性/静态变量&#xff0c;是该类的所有对象共享的变量&#xff1b;   1&#xff09;任何一个该类的对象去访问它时&#xff0c;取到的…

DAY 11有效括号 删除字符串中的相邻重复项 逆波兰表达式

3.有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的…

eclipse搭建java web项目

准备条件 eclipsejdk1.8 &#xff08;配置jdk环境&#xff09;apache-tomcat-8.5.97&#xff08;记住安装位置&#xff09; 一 点击完成 开始创建javaweb项目 import java.io.IOException; import java.io.PrintWriter;import javax.servlet.ServletException; import javax.s…

CAD图纸归档平台、CAD图纸归档系统

CAD图纸归档平台是用于管理和存储CAD图纸的在线平台。这些平台提供了多种功能&#xff0c;包括图纸上传、下载、版本控制、共享、协作和搜索等。它们可以大大提高CAD图纸的管理效率和协作效率&#xff0c;减少纸质图纸的使用和存储成本&#xff0c;同时也方便用户随时随地访问和…

关于python函数参数传递

参数传递 在 python 中&#xff0c;类型属于对象&#xff0c;对象有不同类型的区分&#xff0c;变量是没有类型的&#xff1a; 在下面的代码示例重&#xff0c;[1,2,3] 是 List 类型&#xff0c;“qayrup” 是 String 类型&#xff0c;而变量 a 是没有类型&#xff0c;它仅仅…

奥维云网:森歌智能水洗集成灶开启集成灶4.0时代

新的一个商业“竞争年”正式到来。厨电集成灶行业率先发力。2曰27日&#xff0c;森歌以“勠力同心&#xff0c;共生共歌”为主题召开了盛大的全国优秀经销商峰会&#xff0c;并在峰会上一连发布了三个重磅消息&#xff0c;被视为集成灶行业的破冰行动&#xff01; 从国家统计局…

MySQL 学习记录 2

原文&#xff1a;https://blog.iyatt.com/?p13818 13 存储引擎 查看一下前面创建的一张表的创建语句&#xff0c;当时并没有显式指定引擎&#xff0c;MySQL 自动指定的 InnoDB&#xff0c;即默认引擎是这个。 创建表的时候要显式指定引擎可以参考这个语句 查看当前 MySQL …