2.《MySQL必知必会》检索与过滤
来源:互联网 发布:力港网络 知乎 编辑:程序博客网 时间:2024/05/17 04:28
注:博客中总结《MySQL必知必会》中的知识点,第4,5,6,7,8,9章的核心内容;
涉及到的操作符: SELECT,FROM,LIMIT,ORDER BY,WHERE,IN,NOT,LIKE,REGEXP;
书中用到的表的介绍及其脚本文件:《Mysql必知必会》中表的介绍
检索数据
1. 检索单个列
SELECT prod_name FROM products;-- 注:列名不区分大小写;
2. 检索多个列
SELECT prod_id,prod_name,prod_price FROM products;
3. 检索所有列
SELECT * FROM products;
4. 检索不同列
SELECT DISTINCT vend_id FROM products;-- 注:在使用DISTINCT时,如果想每列都唯一,则应该在每一列前面加上DISTINCT;
5. 限制结果
SELECT prod_name FROM productsLIMIT 5;-- 注:LIMIT 5,5表示返回从第5行开始后的5行;
排序检索数据
1. 排序数据
SELECT prod_name FROM productsORDER BY prod_name;
2. 按多个列排序
SELECT prod_id,prod_price,prod_nameFROM productsORDER BY prod_price,prod_name;
3. 指定排序方向
-- 默认是ASC(升序); DESC(降序);SELECT prod_id,prod_price,prod_nameFROM productsORDER BY prod_price DESC;
-- 先按产品价格降序,在按产品名升序;SELECT prod_id,prod_price,prod_nameFROM productsORDER BY prod_price DESC,prod_name;
过滤数据
1. 使用WHERE子句
SELECT prod_name, prod_priceFROM productsWHERE prod_price = 2.50;
SELECT prod_name, prod_priceFROM productsWHERE prod_name = 'fuses';-- 注:‘fuses’默认是不区分大小写的
2. 不匹配查询
-- 使用 <> 或 !=SELECT vend_id, prod_nameFROM productsWHERE vend_id <> 1003;
3. 范围值查询
SELECT prod_name, prod_priceFROM productsWHERE prod_price BETWEEN 5 AND 10;
4. 空值查询
SELECT prod_nameFROM productsWHERE prod_price IS NULL;
数据过滤
1. 组合WHERE子句
1.1 AND操作符
```SQLSELECT prod_id, prod_price, prod_nameFROM productsWHERE vend_id=1003 AND prod_price<=10;```
1.2 OR操作符
```SQLSELECT prod_id, prod_priceFROM productsWHERE vend_id=1002 OR vend_id=1003;```
1.3 计算次序
```SQLSELECT prod_name, prod_priceFROM productsWHERE vend_id=1002 OR vend_id=1003 AND prod_price>=10;```与下面返回的结果不同,AND操作符优先级高;```SQLSELECT prod_name, prod_priceFROM productsWHERE (vend_id=1002 OR vend_id=1003) AND prod_price>=10;```
2. IN操作符
SELECT prod_name, prod_priceFROM productsWHERE vend_id IN (1002, 1003)ORDER BY prod_name;
3. NOT操作符
SELECT prod_name, prod_priceFROM productsWHERE vend_id NOT IN (1002, 1003)ORDER BY prod_name;
用通配符进行过滤
1. LIKE操作符
1.1 百分号(%)通配符
SELECT prod_id,prod_nameFROM productsWHERE prod_name LIKE 'jet%';-- % 表示任意字符出现任意次
1.2 下划线(_)通配符
SELECT prod_id,prod_nameFROM productsWHERE prod_name LIKE '_ ton anvil';-- % 表示任意单个字符
2. 使用通配符的技巧
通配符搜索的处理一般花费时间较长,要避免过度使用;
用正则表达式进行过滤
正则表达式 - 用REGEXP来匹配文本中特殊的串
1. 基本字符匹配
SELECT prod_nameFROM productsWHERE prod_name REGEXP '.000'ORDER BY prod_name;-- . 正则表达式特殊符号,表示匹配任意一个字符;
2. 进行OR匹配
SELECT prod_nameFROM productsWHERE prod_name REGEXP '1000|2000'ORDER BY prod_name;-- | 正则表达式的OR操作符;
3. 匹配几个字符之一
SELECT prod_nameFROM productsWHERE prod_name REGEXP '[123] Ton'ORDER BY prod_name;-- [] 定义一直字符,匹配其中一个;[^123]匹配除123之外的任何字符;
4. 匹配范围
SELECT prod_nameFROM productsWHERE prod_name REGEXP '[1-5] Ton'ORDER BY prod_name;-- [0-9],[a-z]表示范围;
5. 匹配特殊字符
SELECT prod_nameFROM productsWHERE prod_name REGEXP '\\.'ORDER BY prod_name;-- \\ 转义符, \\r 转页,\\n 换行, \\t 制表符;
6. 匹配字符类
[:alnum:] 任意字母和数字,同[a-zA-Z0-9];[:alpha:] 任意字符,同[a-zA-Z];[:blank:] 空格和制表符;......
7. 匹配多个实例
SELECT prod_nameFROM productsWHERE prod_name REGEXP '\\([0-9 sticks?]\\)'ORDER BY prod_name;重复元素符 * 0个或多个匹配; + 1个或多个匹配; ? 0个或1个匹配; {n} 制定数目的匹配; {n,} 不少于制定数目的匹配; {n,m} 匹配数目的范围;
8. 定位符
SELECT prod_nameFROM productsWHERE prod_name REGEXP '^[0-9\\.]'ORDER BY prod_name;定位元字符 ^ 文本的开始; $ 文本的结尾; [[:<:]] 词的开始; [[:<:]] 词的结尾;
0 0
- 2.《MySQL必知必会》检索与过滤
- Mysql必知必会(笔记)【基本概念,检索,过滤】
- MySQL基础(2)——检索、排序与过滤
- MySQL必知必会笔记(二)SELECT语句 检索 排序 过滤 通配符搜索 正则表达式搜索
- MySQL必知必会笔记(二)SELECT语句 检索 排序 过滤 通配符搜索 正则表达式搜索
- MySQL必知必会笔记(二)SELECT语句 检索 排序 过滤 通配符搜索 正则表达式搜索
- MySQL检索数据(过滤+通配符+正则表达式)
- android开发实例02:列表字母索引与过滤检索
- 第3天-sql基本检索与数据过滤
- MySQL的备份与过滤
- 检索,查询,筛选,过滤
- mysql必知必会 - 排序检索数据
- MYSQL-中文检索匹配与正则表达式
- MYSQL-中文检索匹配与正则表达式
- sql必知必会学习笔记-二,检索,过滤数据
- MySQL-检索
- MySQL学习足迹记录07--数据过滤--用正则表达式进行检索
- 【MySQL】 SELECT语句 检索 排序 过滤 通配符搜索 正则表达式搜索
- 何时使用 Em 与 Rem
- 手把手教学,压力测试工具Jmeter
- c++第四次作业
- 变量类型命名
- 六位回文
- 2.《MySQL必知必会》检索与过滤
- CentOS下安装JDK的三种方法
- angular2学习笔记(10)
- Launcher3仿小米桌面
- iOS获取摄像头是否允许
- 欢迎使用CSDN-markdown编辑器
- 随记(3)
- JAVA线程同步
- monkey搭建