当前位置: 首页 > news >正文

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

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.lryc.cn/news/518974.html

相关文章:

  • 如何在 Ubuntu 22.04 上安装 Nagios 服务器教程
  • 数据库事务:确保数据一致性的关键机制
  • 词作词汇积累:错付、大而无当、语焉不详、愈演愈烈
  • selenium学习笔记
  • asp.net core webapi 并发请求时 怎么保证实时获取的用户信息是此次请求的?
  • 实时数仓:基于数据湖的实时数仓与数据治理架构
  • STM32 拓展 RTC案例1:使用闹钟唤醒待机模式 (HAL库)
  • ESP32S3使用串口0作为LOG输出
  • Linux:深入了解fd文件描述符
  • springboot 集成 etcd
  • 03_Redis基本操作
  • pycharm-pyspark 环境安装
  • Unity + Firebase + GoogleSignIn 导入问题
  • web-app uniapp监测屏幕大小的变化对数组一行展示数据作相应处理
  • 2025年VGC大众汽车科技社招入职测评综合能力英语口语SHL历年真题汇总、考情分析
  • Linux中配置Java环境变量
  • 完全自定义Qt翻译功能,不使用Qt Linguist的.ts 和 .qm类型翻译
  • 551 灌溉
  • php函数性能优化中应注意哪些问题
  • 安科瑞 Acrel-1000DP 分布式光伏监控系统在工业厂房分布式光伏发电项目中的应用
  • 鼠标自动移动防止锁屏的办公神器 —— 定时执行专家
  • 各种特种无人机快速发展,无人机反制技术面临挑战
  • 深入学习RabbitMQ的Direct Exchange(直连交换机)
  • HTML实战课堂之启动动画弹窗
  • 将本地的 Git 仓库上传到 GitHub 上(github没有该仓库)
  • 【Linux】模拟Shell命令行解释器
  • G-Star Landscape 2.0 重磅发布,助力开源生态再升级
  • Lianwei 安全周报|2024.1.7
  • ASP.NET Core 实现微服务 - Consul 配置中心
  • 使用redis的5种常用场景