文章目录

  • 1SQL语法
    • 1.1 SELECT 语句
      • 1.1.1SQL SELECT 语句
      • 1.1.2SQL SELECT 语法
    • 1.2DISTINCT 语句
      • 1.2.1 DISTINCT 的作用
      • 1.2.2 DISTINCT 的用法
      • 1.2.3 DISTINCT 的原理
    • 1.3LIMIT
      • 1.3.1指定初始位置
        • 1.3.1.1例子:在 emp 表中,使用 LIMIT 子句返回从第 3 条记录开始的行数为 5 的记录,SQL 语句和运行结果如下
      • 1.3.2不指定初始位置
        • 1.3.2.1例子显示 emp 表查询结果的前 3 行,SQL 语句和运行结果如下
      • 1.3.3 LIMIT 和 OFFSET 组合使用
        • 1.3.3.1在 emp 表中,使用 LIMIT OFFSET 返回从第 4 条记录开始的行数为 5 的记录,SQL 语句和运行结果如下。
      • 1.3.4总结
    • 1.4WHERE 子句
      • 1.4.1WHERE 子句中的运算符
      • 1.4.2例子
        • 1.4.2.1emp表
        • 1.4.2.2 查询emp表中job为人工智能,使用“=”
        • 1.4.2.3查询emp表中的sal大于20000的,使用">","<",">=","<="也类似
        • 1.4.2.4查询emp表中deptno不等于20,"<>"的使用
        • 1.4.2.5查询emp表中sal的值在20000-40000,"between"的使用
        • 1.4.2.6查询emp表中job有"端"字,"like"关键字的使用
        • 1.4.2.7查询emp表中deptno有10,30,50
        • 1.4.2.8查询没有comm值的
        • 1.4.2.9多重条件查询
          • 1.4.2.9.1查询deptno为20并且sal>20000
          • 1.4.2.9.2查询deptno为20或者sal>20000

1SQL语法

1.1 SELECT 语句

SELECT
[ALL|DISTINCT]
<目标列的表达式1> [别名],
<目标列的表达式2> [别名]…
FROM <表名或视图名> [别名],<表名或视图名> [别名]…
[WHERE<条件表达式>]
[GROUP BY <列名>
[HAVING <条件表达式>]]
[ORDER BY <列名> [ASC|DESC]]
[LIMIT <数字或者列表>];
简化版语法
SELECT *| 列名 FROM 表 WHERE 条件

1.1.1SQL SELECT 语句

SELECT 语句用于从表中选取数据。
结果被存储在一个结果表中(称为结果集)。

1.1.2SQL SELECT 语法

SELECT 列名称 FROM 表名称

以及:

SELECT * FROM 表名称

SQL 语句对大小写不敏感。SELECT 等效于 select。提示:星号(*)是选取所有列的快捷方式。

1.2DISTINCT 语句

1.2.1 DISTINCT 的作用

在MySQLl中,DISTINCT关键字的主要作用就是对数据库表中一个或者多个字段重复的数据进行过滤,只返回其中的一条数据给用户,DISTINCT只可以在SELECT中使用

1.2.2 DISTINCT 的用法

SELECT DISTINCT expression[,expression...]
FROM tables
[where conditions];

在使用distinct的过程中主要注意一下几点:

  1. 在对字段进行去重的时候,要保证DISTINCT在所有字段的最前面
  2. 如果DISTINCT关键字后面有多个字段时,则会对多个字段进行组合去重,只有多个字段组合起来的值是相等的才会被去重

1.2.3 DISTINCT 的原理

DISTINCT 进行去重的主要原理是通过先对要进行去重的数据进行分组操作,然后从分组后的每组数据中去一条返回给客户端,在这个分组的过程可能会出现两种不同的情况:

  1. DISTINCT 依赖的字段未全部包含索引:
    该情况由于索引不能满足整个去重分组的过程,所以需要用到临时表,MySQL 首先需要将满足条件的数据放到临时表中,然后在临时表中对该部分数据进行分组,然后从临时表中每个分组的数据中去一条数据,在临时表中进行分组的过程中不会对数据进行排序。

  2. DISTINCT 依赖的字段全部包含索引:
    该情况 MySQL 直接通过操作索引对满足条件的数据进行分组,然后从分组后的每组数据中去一条数据。

1.3LIMIT

当数据表中有上万条数据时,一次性查询出表中的全部数据会降低数据返回的速度,同时给数据库服务器造成很大的压力。这时就可以用 LIMIT 关键字来限制查询结果返回的条数。

LIMIT 是 MySQL 中的一个特殊关键字,用于指定查询结果从哪条记录开始显示,一共显示多少条记录。

LIMIT 关键字有 3 种使用方式,即指定初始位置、不指定初始位置以及与 OFFSET 组合使用。

1.3.1指定初始位置

LIMIT 关键字可以指定查询结果从哪条记录开始显示,显示多少条记录
LIMIT 指定初始位置的基本语法格式如下:

LIMIT 初始位置,记录数

其中,“初始位置”表示从哪条记录开始显示;“记录数”表示显示记录的条数。第一条记录的位置是 0,第二条记录的位置是 1。后面的记录依次类推。

注意:LIMIT 后的两个参数必须都是正整数。

1.3.1.1例子:在 emp 表中,使用 LIMIT 子句返回从第 3 条记录开始的行数为 5 的记录,SQL 语句和运行结果如下


由结果可以看到,该语句返回的是从第 3 条记录开始的之后的 5 条记录。LIMIT 关键字后的第一个数字“2”表示从第 3 行开始(记录的位置从 0 开始,第 3 行的位置为 2),第二个数字 5 表示返回的行数。

1.3.2不指定初始位置

LIMIT 关键字不指定初始位置时,记录从第一条记录开始显示。显示记录的条数由 LIMIT 关键字指定。

LIMIT 不指定初始位置的基本语法格式如下:

LIMIT 记录数

其中,“记录数”表示显示记录的条数。如果“记录数”的值小于查询结果的总数,则会从第一条记录开始,显示指定条数的记录。如果“记录数”的值大于查询结果的总数,则会直接显示查询出来的所有记录。

1.3.2.1例子显示 emp 表查询结果的前 3 行,SQL 语句和运行结果如下


结果中只显示了 3 条记录,说明“LIMIT 3”限制了显示条数为 3。

1.3.3 LIMIT 和 OFFSET 组合使用

LIMIT 可以和 OFFSET 组合使用,语法格式如下:

LIMIT 记录数 OFFSET 初始位置

参数和 LIMIT 语法中参数含义相同,“初始位置”指定从哪条记录开始显示;“记录数”表示显示记录的条数。

1.3.3.1在 emp 表中,使用 LIMIT OFFSET 返回从第 4 条记录开始的行数为 5 的记录,SQL 语句和运行结果如下。

由结果可以看到,该语句返回的是从第 4 条记录开始的之后的 5 条记录。即“LIMIT 5 OFFSET 3”意思是获取从第 4 条记录开始的后面的 5 条记录,和“LIMIT 3,5”返回的结果相同。

1.3.4总结

带一个参数的 LIMIT 指定从查询结果的首行开始,唯一的参数表示返回的行数,即“LIMIT n”、"LIMIT n OFFSET 0"与“LIMIT 0,n”返回结果相同。带两个参数的 LIMIT 可返回从任何位置开始指定行数的数据。

但是:LIMIT 0,n运行效率更高
LIMIT n运行效率低
LIMIT n OFFSET 0运行效率中

SELECT *
FROM emp
LIMIT 0,2 运行效率更高
SELECT *
FROM emp
LIMIT 2   运行效率低
SELECT *
FROM emp
LIMIT 2 OFFSET 0 运行效率中

1.4WHERE 子句

WHERE 子句用于过滤记录

1.4.1WHERE 子句中的运算符

下面的运算符可以在 WHERE 子句中使用:

运算符 描述
= 等于
<> 不等于。注释:在 SQL 的一些版本中,该操作符可被写成 !=
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式
IN 指定针对某个列的多个可能值

1.4.2例子

1.4.2.1emp表

1.4.2.2 查询emp表中job为人工智能,使用“=”

SELECT empno,job
FROM emp
WHERE job = "人工智能"

1.4.2.3查询emp表中的sal大于20000的,使用">“,”<“,”>=“,”<="也类似

SELECT ename,sal
FROM emp
WHERE sal > 20000;

1.4.2.4查询emp表中deptno不等于20,"<>"的使用

SELECT ename,deptno
FROM emp
WHERE deptno <> 20;

1.4.2.5查询emp表中sal的值在20000-40000,"between"的使用

SELECT ename,sal
FROM emp
WHERE sal BETWEEN 20000 AND 40000;

1.4.2.6查询emp表中job有"端"字,"like"关键字的使用

SELECT ename,job
FROM emp
WHERE job LIKE "%端%";

1.4.2.7查询emp表中deptno有10,30,50

SELECT ename,deptno
FROM emp
WHERE deptno IN(10,30,50);

1.4.2.8查询没有comm值的

SELECT *
FROM emp
WHERE comm IS NOT null;

1.4.2.9多重条件查询

在WHERE子句中可以使用逻辑运算符AND和OR来组成多条件查询。
使用AND谓词的语法格式如下:
布尔表达式1 AND 布尔表达式2 AND … AND 布尔表达式n
只有当全部的布尔表达式均为真时,整个表达式的结果才为真,只要有一个布尔表达式的结果为假,则整个表达式结果即为假。

使用OR谓词的语法格式如下。
布尔表达式1 OR 布尔表达式2 OR … OR 布尔表达式n
表示只要其中一个布尔表达式为真,则整个表达式的结果即为真;只有当全部布尔表达式的结果均为假时,整个表达式结果才为假。

1.4.2.9.1查询deptno为20并且sal>20000
SELECT *
FROM emp
WHERE deptno = 20 AND sal > 20000;

1.4.2.9.2查询deptno为20或者sal>20000

SQL笔记(一)SQL语法、SELECT语句、DISTINCT语句、LIMIT、LIMIT和OFFSET组合使用、WHERE 子句相关推荐

  1. SQL的基本用法 (select,distinct,where,order by,insert into,update,delete)

    学习目标: MySQL的基本用法 学习内容: 1.MySQL最经典的使用SQL语句来创建数据库和表: 2.MySQL最基本的CRUD(增删改查); 学习时间: 2021.3.10 学习产出: tips ...

  2. sql server中同时执行select和update语句死锁问题

    原始出处 http://oecpby.blog.51cto.com/2203338/457054 最近在项目中使用SqlServer的时候发现在高并发情况下,频繁更新和频繁查询引发死锁.通常我们知道如 ...

  3. 数据库之SQL(INSERT,INSERT SELECT,INSERT INTO语句)

    一.SQL SERVER 中如何在数据表里插入数据? INSERT语句,代码及效果如下: 但INSERT语句容易出现错误,什么错误呢? 不能将值NULL插入列,即不能插入非空列,必须插入数值,这个看数 ...

  4. SQL笔记:SQL中的数据透视表

    以下是在MySQL中通过SQL语句实现Excel中数据透视表/交叉表/二维表的功能.原理不作赘述,具体示例与代码如下: 1. 数据源预览 SELECT * FROM pivot_table; 2. 数 ...

  5. 学习Sql基础以及Sql的部分语法(语法部分为3w中copy)

    第一章 .net与c# .NET是Microsoft.NET的简称,包含了能在.NET Framework平台运行的所有编程语言. C# 是专门为.NET平台设计的一种语言. c#第一个成绩 (1)使 ...

  6. SQL server 中SQL语句实战操作

    学习网址链接: https://www.w3school.com.cn/sql/sql_top.asp 学习案例链接: https://wenku.baidu.com/view/720053b459f ...

  7. SQL基础---SQL SELECT DISTINCT 语句

    SQL SELECT DISTINCT 语句 本章讲解 SELECT DISTINCT 语句. SQL SELECT DISTINCT 语句 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希 ...

  8. SQL SELECT DISTINCT 语句 用法

    SQL SELECT DISTINCT 语句 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值. 语法 ...

  9. SQL去重 SELECT DISTINCT 语句(distinct)

    SQL SELECT DISTINCT 语句 在表中,可能会包含重复值.这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值. 关键词 DISTINCT 用于返回唯一不同的值. 语法 ...

最新文章

  1. SQL SERVER中什么情况会导致索引查找变成索引扫描
  2. VB6 二维数组去重实现
  3. Maven 连接私服资源库配置
  4. android 磁场传感器 罗盘,HMC5883L电子指南针罗盘模块 GY-271三轴磁场传感器 的相关教程 带Arduino 51源代码...
  5. 世界第一台电脑_电脑的诞生与发展
  6. 卷积神经网络(CNN)相关的基础知识
  7. 信号检测与估计理论_又又又送书啦!视觉SLAM十四讲:从理论到实践(第2版)...
  8. 改变定时器获取传感器频度_一文读懂传感器原理、作用及技术特点
  9. 电商直播还有什么新花样?
  10. word文件怎么压缩?
  11. matlab中men,matlab blackman函数
  12. 解决Mybatis报错并分析原因:Invalid bound statement (not found): com.xxx.mapper.xxx
  13. 87个电影调色PR预设包
  14. WordPress如何设置先登录再进入主页
  15. shell脚本——正则表达式(包含grep详细介绍及应用)
  16. vue 自定义验证规则rule只能为数字
  17. Java+mysql基于JSP的家教兼职网站
  18. 台式计算机内存卡与普通有啥区别,电脑硬盘和内存有什么区别?
  19. Linux内核中最牛逼的温控方案——IPA(一)
  20. python re正则提取ip地址_python 正则表达式匹配IP地址

热门文章

  1. 110款时尚人像风景调色效果Lr预设
  2. LRU页面置换算法模拟
  3. Back-off pulling image registry.access.redhat.com/rhel7/pod-infrastructure:latest
  4. (排行榜)2008第三季度中国外包企业排行(易观国际)
  5. 2023年2月天猫平台面膜品牌销量排行榜(天猫销售数据分析)
  6. 徐州社保容灾备份系统集成和设备采购goldengate
  7. 54部经典国外动画片:送给70-80年代的朋友 90年代后的一边画圈圈去41-50
  8. 由于装备新的计算机英语,大学英语4课后cloze及翻译原题带答案整理完整清晰
  9. Linux命令后面加
  10. 解析中国电子学会:全国青少年软件编程(Scratch)一级2019考试试卷!