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中redo log 刷⼊磁盘的常见方法

《SQL中redolog刷⼊磁盘的常见方法》本文主要介绍了SQL中redolog刷⼊磁盘的常见方法,将redolog刷入磁盘的方法确保了数据的持久性和一致性,下面就来具体介绍一下,感兴趣的可以了解... 目录Redo Log 刷入磁盘的方法Redo Log 刷入磁盘的过程代码示例(伪代码)在数据库系统中,r

mysql中的group by高级用法

《mysql中的groupby高级用法》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,下面给大家介绍mysql中的groupby用法... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

Mysql用户授权(GRANT)语法及示例解读

《Mysql用户授权(GRANT)语法及示例解读》:本文主要介绍Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql用户授权(GRANT)语法授予用户权限语法GRANT语句中的<权限类型>的使用WITH GRANT

Mysql如何解决死锁问题

《Mysql如何解决死锁问题》:本文主要介绍Mysql如何解决死锁问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录【一】mysql中锁分类和加锁情况【1】按锁的粒度分类全局锁表级锁行级锁【2】按锁的模式分类【二】加锁方式的影响因素【三】Mysql的死锁情况【1

SQL BETWEEN 的常见用法小结

《SQLBETWEEN的常见用法小结》BETWEEN操作符是SQL中非常有用的工具,它允许你快速选取某个范围内的值,本文给大家介绍SQLBETWEEN的常见用法,感兴趣的朋友一起看看吧... 在SQL中,BETWEEN是一个操作符,用于选取介于两个值之间的数据。它包含这两个边界值。BETWEEN操作符常用

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

MySql match against工具详细用法

《MySqlmatchagainst工具详细用法》在MySQL中,MATCH……AGAINST是全文索引(Full-Textindex)的查询语法,它允许你对文本进行高效的全文搜素,支持自然语言搜... 目录一、全文索引的基本概念二、创建全文索引三、自然语言搜索四、布尔搜索五、相关性排序六、全文索引的限制七

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

SQL server配置管理器找不到如何打开它

《SQLserver配置管理器找不到如何打开它》最近遇到了SQLserver配置管理器打不开的问题,尝试在开始菜单栏搜SQLServerManager无果,于是将自己找到的方法总结分享给大家,对SQ... 目录方法一:桌面图标进入方法二:运行窗口进入方法三:查找文件路径方法四:检查 SQL Server 安