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

相关文章

MySQL字符串转数值的方法全解析

《MySQL字符串转数值的方法全解析》在MySQL开发中,字符串与数值的转换是高频操作,本文从隐式转换原理、显式转换方法、典型场景案例、风险防控四个维度系统梳理,助您精准掌握这一核心技能,需要的朋友可... 目录一、隐式转换:自动但需警惕的&ld编程quo;双刃剑”二、显式转换:三大核心方法详解三、典型场景

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

MySQL快速复制一张表的四种核心方法(包括表结构和数据)

《MySQL快速复制一张表的四种核心方法(包括表结构和数据)》本文详细介绍了四种复制MySQL表(结构+数据)的方法,并对每种方法进行了对比分析,适用于不同场景和数据量的复制需求,特别是针对超大表(1... 目录一、mysql 复制表(结构+数据)的 4 种核心方法(面试结构化回答)方法 1:CREATE

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数

GO语言实现串口简单通讯

《GO语言实现串口简单通讯》本文分享了使用Go语言进行串口通讯的实践过程,详细介绍了串口配置、数据发送与接收的代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录背景串口通讯代码代码块分解解析完整代码运行结果背景最近再学习 go 语言,在某宝用5块钱买了个

MyBatis-Plus使用动态表名分表查询的实现

《MyBatis-Plus使用动态表名分表查询的实现》本文主要介绍了MyBatis-Plus使用动态表名分表查询,主要是动态修改表名的几种常见场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录1. 引入依赖2. myBATis-plus配置3. TenantContext 类:租户上下文

MySQL MHA集群详解(数据库高可用)

《MySQLMHA集群详解(数据库高可用)》MHA(MasterHighAvailability)是开源MySQL高可用管理工具,用于自动故障检测与转移,支持异步或半同步复制的MySQL主从架构,本... 目录mysql 高可用方案:MHA 详解与实战1. MHA 简介2. MHA 的组件组成(1)MHA

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

MySQL基本表查询操作汇总之单表查询+多表操作大全

《MySQL基本表查询操作汇总之单表查询+多表操作大全》本文全面介绍了MySQL单表查询与多表操作的关键技术,包括基本语法、高级查询、表别名使用、多表连接及子查询等,并提供了丰富的实例,感兴趣的朋友跟... 目录一、单表查询整合(一)通用模版展示(二)举例说明(三)注意事项(四)Mapper简单举例简单查询

SpringBoot整合Apache Spark实现一个简单的数据分析功能

《SpringBoot整合ApacheSpark实现一个简单的数据分析功能》ApacheSpark是一个开源的大数据处理框架,它提供了丰富的功能和API,用于分布式数据处理、数据分析和机器学习等任务... 目录第一步、添加android依赖第二步、编写配置类第三步、编写控制类启动项目并测试总结ApacheS