mysql之基本select语句 运算符 排序分页

ops/2025/1/13 0:52:38/

1.SQL的分类

DDL:数据定义语言.

  • CREATE

  • ALTER

  • DROP

  • RENAME

  • TRUNCATE

DML: 数据操作语言.

  • INSERT

  • DELETE

  • UPDATE

  • SELECT 重中之重

DCL: 数据控制语言.

  • COMMIT

  • ROLLBACK

  • SAVEPOINT

  • GRANT

  • REVOKE

2.SQL语言的规则与规范

1.基本规则

  • SQL可以在一行或多行,为了提高可读性,通常写在多行

SELECT *  FROM emp;
  • 每条命令以;或\g或\G结束

  • 关键字不能被缩写也不能分行

  • 关于标点符号

    • 必须保证所有的(),单引号,双引号是成对结束的

    • 必须使用英文状态下的半角输入方式

    • 字符串型和日期时间类型的数据可以使用单引号(' ')表示

    • 列的别名,尽量使用双引用(" "),而且不建议省略as

2.SQL大小写规范(建议遵守)

  • MySQL在Windows环境下大小写是不敏感的

  • MySQL在Linux环境下大小写是敏感的

    • 数据库名,表名,表的别名,变量名是严格区分大小写的

    • 关键字,函数名,列名(或字段名),列的别名(字段的别名)是忽略大小写的

  • 推荐采用统一的书写规范:

    • 数据库名,表名,表的别名,字段名,字段别名等都小写

    • SQL关键字,函数名,绑定变量等都大写

3.注释

可以使用如下格式的注释结构

单行注释: #注释文字(MySQL特有的注释方式)

单行注释: -- 注释文字(--后面必须包含一个空格.)

4.导入现有的数据表,表的数据

source 文件的全路径名

4.最基本SCLECT语句

SELECT 1+1,3*2;
​
​
SELECT 1+1,3+2
FROM DUAL; #dual: 伪表
​
SELECT * FROM xxx
#  *就是表中所有的字段

5.列的别名

在列名后加空格再写名字就是别名

#as : (alias)

#类的别名可以使用一对双引号连起来

6.去除重复行

查询员工表中一共有哪些部门id呢?

select 后面加上DISTINCT(去重)

7.空值参与运算

  • 空值: null

  • null不等同于0,' ',' null '

  • 空值参与运算,结果一定也为空

8.着重号 ``

若命名与关键词重名的表,调用时可使用着重号区分

9.查询常数

10.显示表结构

DESCRIBE employees;显示了表中字段的详细信息

DESC 也可以

11.过滤数据

#查询90号员工信息
SELECT *
FROM employees
#过滤条件
WHERE id = 90;
​
SELECT *
FROM employees
WHERE name = '邱宛彦';
​
SELECT *
FROM employees
WHERE salary > 5000;

第四章: 运算符

1.算数运算符

  • +:加法

  • -:减法

  • *:乘法

  • /:除法

  • %:取余(模)

SELECT 10 + 5;   -- 结果是 15
SELECT 10 * 3;   -- 结果是 30
SELECT 10 % 3;   -- 结果是 1

2. 比较运算符 (Comparison Operators)

这些运算符用于比较两个值的关系。

  • =:等于

  • <=>: 安全等于

    • 作用于=相似,唯一的区别就是安全等于可以进行NULL运算

  • !=<>:不等于

  • <:小于

  • >:大于

  • <=:小于等于

  • >=:大于等于

  • IS NULL:检查是否为 NULL

  • IS NOT NULL:检查是否不为 NULL

SELECT 1=2,1!=2,1='1',1='a',0='a'
FROM DUAL;

字符串存在隐式转换.如果转换数值不成功,则看作0;

字符串和字符串之间比较,直接比较ASCII值,不会看作0;

只要有null参与比较,结果为null;

3. 逻辑运算符 (Logical Operators)

这些运算符用于结合多个条件。

and优先级高于or

  • AND:并且,两个条件都为真时结果为真

  • OR:或者,任意一个条件为真时结果为真

  • NOT:非,取反操作

  • XOR: 异或

4. 范围运算符 (Range Operators)

  • BETWEEN:指定一个范围(包括边界),用来筛选字段在某个范围内的记录

  • IN:用于检查某个字段是否在给定的一组值中

SELECT *
FROM employees
where salary between 100 and 200;

5. 字符串匹配运算符 (String Matching Operators)

这些运算符用于对字符串执行模式匹配操作。

  • LIKE:用于在字符串中进行简单的模式匹配

    • %(通配符)通常与LIKE搭配

      SELECT *
      FROM table
      WHERE name like 'A%'  #以A开头的姓名
      ​
      WHERE name like '%com' #以com结尾的结果
      ​
      WHERE name like 'A%com'  #以A开头以com结尾的结果

      一个下划线_代表一个字符

      WHERE name like '_A%'  #以A为第二个字符的姓名

      转义字符 \

  • NOT LIKE:与 LIKE 相反

  • REGEXP:用于进行正则表达式匹配 难

    • 点(.:匹配任意单个字符(除了换行符)。

      SELECT * 
      FROM table 
      WHERE column REGEXP 'a.b';   -- 匹配 "aab", "acb" 等

      脱字符(^:匹配字符串的开头。

      ​
      SELECT * 
      FROM table 
      WHERE column REGEXP '^abc';   -- 匹配以 "abc" 开头的字符串

      美元符号($:匹配字符串的结尾。

      SELECT * 
      FROM table 
      WHERE column REGEXP 'abc$';   -- 匹配以 "abc" 结尾的字符串

      方括号([]:匹配方括号内的任意单个字符。

      SELECT * 
      FROM table 
      WHERE column REGEXP '[aeiou]';   -- 匹配包含元音字母的字符串

      方括号内的脱字符([^]:匹配不在方括号中的字符。

      ​
      SELECT * 
      FROM table 
      WHERE column REGEXP '^[^aeiou]';   -- 匹配以辅音字母开头的字符串

      星号(*:匹配前面的字符或组零次或多次。

      ​
      SELECT * 
      FROM table 
      WHERE column REGEXP 'ab*c';   -- 匹配 "ac", "abc", "abbc", "abbbc" 等

      加号(+:匹配前面的字符或组一次或多次。

      ​
      SELECT * 
      FROM table 
      WHERE column REGEXP 'ab+c';   -- 匹配 "abc", "abbc", "abbbc" 等,但不匹配 "ac"

      问号(?:匹配前面的字符或组零次或一次。

      ​
      SELECT * FROM table WHERE column REGEXP 'ab?c';   -- 匹配 "ac" 或 "abc"

      竖线(|:逻辑“或”,匹配左边或右边的模式。

      ​
      SELECT * 
      FROM table 
      WHERE column REGEXP 'abc|def';   -- 匹配 "abc" 或 "def"

      圆括号(():分组模式。

      ​
      SELECT *
      FROM table 
      WHERE column REGEXP '(ab|cd)e';   -- 匹配 "abe" 或 "cde"

      大括号({n,m}:匹配前面的字符或组,出现至少 n 次,最多 m 次。

      ​
      SELECT * 
      FROM table 
      WHERE column REGEXP 'ab{2,4}c';   -- 匹配 "abbc", "abbbc", "abbbbc"
  • NOT REGEXP:与 REGEXP 相反

6. NULL 检查运算符 (NULL Check Operators)

  • IS NULL:检查某个值是否为 NULL

  • IS NOT NULL:检查某个值是否不为 NULL

7. 集合运算符 (Set Operators)

这些运算符用于操作两个或多个查询结果集。

  • UNION:合并两个查询的结果集,去除重复项(求并集去重)

  • UNION ALL:合并两个查询的结果集,包括重复项

  • INTERSECT:返回两个查询结果的交集

  • EXCEPT:返回第一个查询结果中存在而第二个查询结果中没有的记录(去交集)

第五章: 排序和分页

1.排序数据

1.1排序规则

如果没有使用排序操作,默认情况下查询的返回值写入数据的顺序显示的;

使用ORDER BY对查询到的数据进行排序操作

  • 升序: ASC(默认升序)

  • 降序: DESC

SELECT lastname
FROM employees
ORDER BY salary DESC;

1.可以使用列的别名,进行排序

2.列的别名只可以ORDER BY中使用,不能在WHERE中使用

3.ORDER BY语句和WHERE语句同时存在时.WHERE和FROM是紧密挨着的,在ORDER BY之前

SELECT lastname
FROM employees
WHERE salary>1000
ORDER BY salary;

4.二级排序

当排序之后别的数据相同时.

SELECT lastname
FROM employees
WHERE salary>1000
ORDER BY salary ASC,id ASC;

2.分页

#每页显示20条记录
select id,lastname
from employees
limit 0,20;#0是偏移量

公式: 显示第n页,每页显示pagesize条

limit (n-1)*pagesize

WHERE ORDER BY LIMIT 声明顺序如下

where
order by
limit

http://www.ppmy.cn/ops/149600.html

相关文章

智慧城市可行性研究报告(第四章)

4 智慧消防系统建设 4.1 项目建设依据 4.1.1 政策依据 智慧消防是智慧城市建设公共安全领域中不可或缺的部分,是智慧城市建设的亮点和突破口,自2017年1月19日公安部召开“2017年消防工作会议”以来,围绕“智慧消防”这一主体,国家不断出台各种举措,大力推动“智慧消防”…

React Context用法总结

1. 基本概念 1.1 什么是 Context Context 提供了一种在组件树中共享数据的方式&#xff0c;而不必通过 props 显式地逐层传递。它主要用于共享那些对于组件树中许多组件来说是"全局"的数据。 1.2 基本用法 // 1. 创建 Context const ThemeContext React.createC…

数据结构初阶---排序

一、排序相关概念与运用 1.排序相关概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。 稳定性&#xff1a;假定在待排序的记录序列中&#xff0c;存在多个具有相同的关键字的…

【Git】配置相关操作

Git 配置相关操作 Git的配置文件 Git有三个主要的配置文件&#xff1a; 三个配置文件的优先级是 ① < ② < ③ ① 系统全局配置(–system)&#xff1a;包含了适用于系统所有用户和所有仓库&#xff08;项目&#xff09;的配置信息&#xff0c;存放在 Git 安装目录下&…

【灵码助力安全3】——利用通义灵码辅助智能合约漏洞检测的尝试

前言 随着区块链技术的快速发展&#xff0c;智能合约作为去中心化应用&#xff08;DApps&#xff09;的核心组件&#xff0c;其重要性日益凸显。然而&#xff0c;智能合约的安全问题一直是制约区块链技术广泛应用的关键因素之一。由于智能合约代码一旦部署就难以更改&#xf…

大语言模型训练的数据集从哪里来?

继续上篇文章的内容说说大语言模型预训练的数据集从哪里来以及为什么互联网上的数据已经被耗尽这个说法并不专业&#xff0c;再谈谈大语言模型预训练数据集的优化思路。 1. GPT2使用的数据集是WebText&#xff0c;该数据集大概40GB&#xff0c;由OpenAI创建&#xff0c;主要内…

vue.js+vite搭建一个简单的新春祈福活动网站

vue.jsvite搭建一个简单的新春祈福活动网站&#xff01;使用canvas技术&#xff0c;绘制视觉特效。 功能有&#xff1a;燃放烟花&#xff0c;和撞钟祈福。祈福撞钟我设计了是按钮事件&#xff0c;播放一个mp4动画&#xff0c;配上播放一段撞钟的生效文件mp3. <template>&…

Kotlin语言的网络编程

Kotlin语言的网络编程 Kotlin作为一种现代的编程语言&#xff0c;其简洁、安全和高效的特性使得在开发各种应用时得到广泛认可。尤其是在网络编程方面&#xff0c;Kotlin凭借其与Java的高度兼容性以及丰富的库支持&#xff0c;使得网络操作变得更加简单易用。本文将详细探讨Ko…