MySQL之DQL简单查询

2024-09-02 13:04
文章标签 简单 mysql 查询 dql database

本文主要是介绍MySQL之DQL简单查询,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、结构化查询语言

1. 什么是SQL

结构化查询语言(Structured Query Language),后续通常简称SQL。SQL是用于存取数据以及查询、更新和管理关系数据库系统的标准语言。20世纪70年代由IBM公司开发,目前应用于各种关系型数据库。SQL是一套标准,百分之九十以上的SQL在各种关系型数据库中都是通用的,每种关系型数据库也有少量自己特定的操作方言。

2. SQL语言分类

SQL语言可分为如下5种

分类

名称

用途

代表关键字

DDL (Data Definition Language)

数据定义语言

用来定义数据库、表及其它对象的结构

CREATE、DROP、ALTER

DML (Data Manipulation Language)

数据操作语言

用来增加、修改、删除表中的数据

INSERT、DELETE、UPDATE

DQL (Data Query Language)

数据查询语言

用来查询表中的数据

SELECT、FROM、WHERE、ORDER BY 、GROUP BY、HAVING

DCL (Data Control Language)

数据控制语言

用来授予和收回权限

GRANT、REVOKE

TCL (Transaction Control Language)

事务处理语言

用来对数据进行提交和回滚

COMMIT、ROLLBACK

3. SQL语言书写规范

在介绍SQL书写规范之前,先简单了解几个概念:

关键字:是SQL语言保留的字符串,有着的特殊的功能。

语句:是一条完整的SQL命令。数据库只能执行一条完整的SQL命令。

子句:是部分SQL命令。一个SQL语句可能会有多个子句构成。

为了增加程序的可读性,在写SQL的时候,通常需要遵守如下规范:

1、一条SQL语句可以单行书写,也可以书写多行,以分号结尾。建议多行书写,增强代码可读性,通常每条子句占一行。

2、适当增加缩进或空格,提高程序的可读性。

3、SQL语句不区分大小写,也就是说SELECT,select,Select,执行时效果是一样的,关键字最好使用大写,其它语法元素(如列名、表名等)小写。

4、不能使用关键字,关键字不可以缩写、分开以及跨行书写,如SELECT不可以写成SEL或SELE CT等形式。

2、DQL-简单查询

1. SELECT简单查询作用

通过简单查询,可以查询表中的所有列或者指定列,通过算术运算符、列别名以及消除重复行可以改变查询结果的显示方式。

2. SELECT查询所有列

2.1 语法

SELECT * | 列名1,列名2,...列名n

FROM table;

说明:

1、“*”号代表指定表中的所有列名;

2、“|” 代表“或者”的含义,所以SELECT子句后面可以既可以写“*”,也可以写所有的列名,不能两种方式都写;

3、如果使用第二种方式,每个列名之间必须要用逗号分隔,最后一个列名后面不写逗号;

4、FROM子句后面写要查询的表名;

5、SQL语句的最后需要加分号;

例:查询所有部门信息

SELECT  *  FROM  dept;

或者

SELECT deptno,dname,loc FROM dept;

DEPTNO

DNAME

LOC

10

ACCOUNTING

NEW YORK

20

RESEARCH

DALLAS

30

SALES

CHICAGO

40

OPERATIONS

BOSTON

如上两种查询方式的结果完全相同,建议使用第二种方式,可读性强,效率稍高。

3. SELECT查询指定列

3.1 语法

SELECT 列名1[,列名2,...列名n]

FROM table;

说明:

1、[ ] 中括号里面的内容可以省略;

2、想显示哪列,写对应的列名就可以。

例:查询所有部门的部门编号、部门所在地

SELECT deptno,loc 
FROM dept;

查询结果如下:

DEPTNO

LOC

10

NEW YORK

20

DALLAS

30

CHICAGO

40

BOSTON

4. 算术运算符

4.1 算术运算符作用

可以在SELECT子句中使用算术运算符(只对数值型数据起作用),来改变查询结果的显示方式。

算术运算符包括:

运算符

作用

+

-

*

/

例:查询每个员工的姓名,工资,以及工资增加300后的金额。

SELECT ename, sal, sal+300  
FROM    emp;

查询结果如下:

ENAME

SAL

SAL+300

KING

5000

5300

BLAKE

2850

3150

CLARK

2450

2750

JONES

2975

3275

MARTIN

1250

1550

ALLEN

1600

1900

4.2 算术运算符优先级
  • 乘除优先于加减
  • 相同优先级按照从左至右的顺序依次计算
  • 可以使用括号提升优先级

例:比较如下两条SQL语句的查询结果,理解算术运算符优先级。

语句1:

SELECT ename, sal, 12*sal+100
FROM   emp;

语句2:

SELECT ename, sal, 12*(sal+100)
FROM   emp;

语句1的查询结果如下:

ENAME

SAL

12*SAL+100

KING

5000

60100

BLAKE

2850

34300

CLARK

2450

29500

JONES

2975

35800

MARTIN

1250

15100

......

......

......

语句2的查询结果如下:

ENAME

SAL

12*(SAL+100)

KING

5000

61200

BLAKE

2850

35400

CLARK

2450

30600

JONES

2975

36900

MARTIN

1250

16200

......

......

......

5. 空值

5.1 空值的含义

空值用NULL表示,表示一种无效的、未知的值,空值不是零,也不是空格。

例:查询员工姓名,岗位,工资,津贴

SELECT ename, job, sal, comm 
FROM   emp;

查询结果如下,其中SMITH的津贴为NULL值。

ENAME

JOB

SAL

COMM

SMITH

CLERK

800.00

NULL

ALLEN

SALESMAN

1600.00

300.00

WARD

SALESMAN

1250.00

500.00

.....

.....

.....

.....

5.2 空值参与运算

空值参与算术运算,运算后的结果仍为NULL

例:查询员工姓名,工资,津贴,以及工资和津贴的和。

SELECT  ename,sal,comm,sal+comm
FROM   emp;

查询结果如下,可以看到空值参与算术运算后,结果仍为空值

ENAME

SAL

COMM

SAL+COMM

SMITH

800

NULL

NULL

ALLEN

1600

300

1900

WARD

1250

500

1750

JONES

2975

NULL

NULL

......

......

......

......

5.3 空值的解决方法(扩展)

用ifnull(comm,0)来解决空值的问题,如果comm不为空,就返回原值 ,如果为空则返回默认值0

select ename,sal,comm,sal+ifnull(comm,0)
from emp;

查询结果

6. 列别名

6.1列别名作用及语法

列别名用来给查询语句中的列或者表达式重新命名,使语句的可读性更强。

语法:

SELECT 列名1 | 表达式1 [as] [列别名1],

列名2 | 表达式2 [as] [列别名2],

..列名n | 表达式n [as] [列别名n]

FROM table;

说明:

1、列别名可以直接写在列名或者表达式的后面,也可以加as关键子,加不加as没有任何区别,通常不加。

2、如果SELECT子句中有计算表达式,通常使用列别名。

例:查询员工姓名,工资,年薪(年薪=工资*12)

SELECT NAME , SAL , SAL*12  YearSal
FROM EMP;

查询结果如下:注意列的标题显示的是别名

ENAME

SAL

YearSal

SMITH

800

9600

ALLEN

1600

19200

WARD

1250

15000

JONES

2975

35700

......

......

......

注意:以下情况列别名两侧需要添加双引号

1、列别名中包含有空格

2、列别名中包含有特殊字符,如%,- 等。

例:查询员工姓名,工资,年薪(列别名要求Year Sal , 注意中间有空格)

SELECT NAME , SAL , SAL*12  "Year Sal"
FROM EMP;
6.2 课堂练习(2分钟)
  1. 查询出所有员工姓名、工资,以及工资上调20%之后的数值。

7. 消除重复行

7.1 消除重复行作用及语法

重复行是查询结果中有完全相同的数据行,如下面结果中第一行和第二行就是重复行。

JOB

DEPTNO

SALESMAN

30

SALESMAN

30

MANAGER

30

消除重复行是消除相同的查询结果,只保留一行重复数据,使用关键字 DISTINCT 来完成。

语法:

SELECT DISTINCT 列名1,列名2,....列名n

FROM table;

例:执行如下SQL语句,观察结果。

SELECT DISTINCT deptno
FROM emp;

DEPTNO

10

20

30

上述SQL语句的查询结果为:显示员工表中有几种不同的部门编号。

也可以使用DISTINCT关键字消除多列重复数据(同时考虑所有列的数据重复)

例:执行如下SQL语句,观察结果。

SELECT DISTINCT deptno,job 
FROM emp;

DEPTNO

JOB

20

CLERK

30

SALESMAN

20

MANAGER

30

MANAGER

10

MANAGER

20

ANALYST

10

PRESIDENT

30

CLERK

10

CLERK

可以看出,上述SQL语句的查询结果为:显示员工表中,每个部门有哪些不同的岗位类型。

这篇关于MySQL之DQL简单查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1130029

相关文章

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

redis群集简单部署过程

《redis群集简单部署过程》文章介绍了Redis,一个高性能的键值存储系统,其支持多种数据结构和命令,它还讨论了Redis的服务器端架构、数据存储和获取、协议和命令、高可用性方案、缓存机制以及监控和... 目录Redis介绍1. 基本概念2. 服务器端3. 存储和获取数据4. 协议和命令5. 高可用性6.

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySql死锁怎么排查的方法实现

《MySql死锁怎么排查的方法实现》本文主要介绍了MySql死锁怎么排查的方法实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录前言一、死锁排查方法1. 查看死锁日志方法 1:启用死锁日志输出方法 2:检查 mysql 错误

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

MySQL修改密码的四种实现方式

《MySQL修改密码的四种实现方式》文章主要介绍了如何使用命令行工具修改MySQL密码,包括使用`setpassword`命令和`mysqladmin`命令,此外,还详细描述了忘记密码时的处理方法,包... 目录mysql修改密码四种方式一、set password命令二、使用mysqladmin三、修改u

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav