MySQL数据库的数据查询

本文详细介绍了MySQL数据库的数据查询,包括基本查询、排序、条件查询、时间及字符串查询、聚合函数、分组过滤、子查询、合并查询和表连接查询等核心概念和操作,帮助读者深入理解SQL查询语法。
摘要由CSDN通过智能技术生成

数据查询

数据查询是学习对数据库的操作中的重点内容。

1 数据表的基本结构
  • 关系结构数据库是以表格(Table)进行数据存储,表格由行和列组成

  • 经验:执行查询语句返回的结果集是一张虚拟表

2 基本查询
  • 语法:SELECT 列名 FROM 表名
关键字 描述
SELECT 指定要查询的列
FROM 指定要查询的表

2.1 查询所有列

#查询t_employees表中所有员工的所有信息
SELECT * FROM t_employees;
SELECT 所有的列名 FROM t_employees;
  • 经验:生产环境下,优先使用列名查询。*的方式虽然看起来便捷,但实际上需要转换成全列名,效率低,可读性差

2.2 查询部分列

#查询表中的所有员工的编号、姓氏、邮箱
SELECT EMPLOYEE_ID,FIRST_NAME,Email FROM t_employees;
#查询表中所有员工的编号、部门编号
SELECT EMPLOYEE_ID,DEPARTMENT_ID FROM t_employees;

2.3 对列中的数据进行运算

#查询员工表中所有员工的编号、姓名、年薪
SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME,SALARY * 13 FROM t_employees;
算术运算符 描述
+ 列与列之间做加法运算
- 列与列之间做减法运算
* 列与列之间做乘法运算
/ 列与列之间做除法运算
  • 注意: % 在数据库中,代表的是占位符,而并非取余运算符

2.4 列的别名

  • 列 AS ‘列名’
#查询员工表中所有员工的编号、姓名、日薪(列的运算 / 22),列名均为中文
SELECT EMPLOYEE_ID AS '编号',FIRST_NAME AS '姓',LAST_NAME AS '名',SALARY / 22 AS'日薪' FROM t_employees;
#起别名,没有对原表的列名发生影响

2.5 查询结果去重

  • distinct 列名
#查询员工表中,所有经理的ID编号
SELECT DISTINCT MANAGER_ID AS '经理编号' FROM t_employees;
#查询员工表中,所有的工资 (去掉重复的)
SELECT DISTINCT SALARY FROM t_employees;
3 排序查询
  • 语法: SELECT 列名 FROM 表名 ORDER BY 排序列名 [排序规则]
排序规则 描述
ASC 做升序排序
DESC 做降序排序

3.1 依据单列进行排序

#查询员工的编号,名字,薪资,按照工资进行升序排序
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees ORDER BY salary ASC;
#查询员工的编号,名字,薪资,按照姓名进行升序排序
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees ORDER BY FIRST_NAME ASC;
#查询员工的编号,名字,薪资,按照工资进行降序排序
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees ORDER BY salary DESC;
  • 经验:当进行升序排序时,排序规则可以不显示声明。默认为升序排序规则

3.2 依据多列进行排序

#查询员工编号,名字,薪资,按照工资进行升序排序,如果工资相等,按照编号降序排序
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees
ORDER BY SALARY ASC,EMPLOYEE_ID DESC
#查询员工编号,名字,薪资,按照工资进行升序排序,如果工资相等,按照姓名降序排序
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees
ORDER BY SALARY ASC,FIRST_NAME DESC
4 条件查询
  • 语法: SELECT 列名 FROM 表名 WHERE 条件

    关键字 描述
    WHERE 在查询结果中,筛选符合条件的查询结果。条件为布尔表达式

4.1 等值判断(=)

#查询工资为2500的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees WHERE salary = 2500;
#查询姓为Steven的
SELECT EMPLOYEE_ID,FIRST_NAME,SALARY FROM t_employees WHERE FIRST_NAME='Steven';
  • 注意:与Java不同(==),MySQL中等值判断用 =

4.2 不等值判断(>、<、>=、<=、!=、<>)

#查询员工工资大于6000的员工的信息
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees 
WHERE salary>=6000;
#查询员工工资不等于2500的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees 
WHERE salary<>2500;(!=同理) 

4.3 逻辑判断(and、or、not)

#查询员工工资在6000~10000的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees
WHERE salary>=6000 AND salary<=10000;

#查询工资是10000的或者是9000的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees
WHERE salary =10000 OR salary = 9000;

#查询除了工资是10000的员工信息
SELECT EMPLOYEE_ID,FIRST_NAME,salary FROM t_employees
WHERE NOT salary =
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值