MySQL(三)操作符 连接操作
LIKE操作符
- 用于在 WHERE 子句中搜索列中的指定模式,是进行模糊查询的关键字
- 通常与 % 和 _ 通配符一起使用
SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;
通配符
- %:匹配任意字符(包括零个字符)
- _:匹配单个字符
_的用法:
使用 _ 通配符找出所有产品名称为三个字符,第一个字符为 "D",第二个字符为 "e" 的产品
SELECT ProductName, Category
FROM Products
WHERE ProductName LIKE 'De_';
SQL通配符
- 可用于替代字符串中的任何其他字符
- 通配符与 LIKE 操作符一起使用,用于搜索表中的数据
通配符 | 描述 |
---|---|
% | 替代 0 个或多个字符 |
_ | 替代一个字符 |
[charlist] | 字符列中的任何单一字符 |
[^charlist]或[!charlist] | 不在字符列中的任何单一字符 |
[cahrlist]用法
选取 name 以 "G"、"F" 或 "s" 开始的所有网站
SELECT * FROM Websites
WHERE name REGEXP '^[GFs]';
[^charlist]用法
选取 name 不以 "G"、"F" 或 "s" 开始的所有网站
SELECT * FROM Websites
WHERE name REGEXP '^[^GFs]';
IN操作符
- 允许在 WHERE 子句中规定多个值
SELECT column1, column2, ...
FROM table_name
WHERE column IN (value1, value2, ...);
BETWEEN操作符
- 选取介于两个值之间的数据范围内的值,这些值可以是数值、文本或者日期
- 在不同数据库中,BETWEEN操作符是否选取两端值是不一样的
SELECT column1, column2, ...
FROM table_name
WHERE column BETWEEN value1 AND value2;
- 如果需要筛选不在范围内的数据,用 NOT BETWEEN
- 带有IN的BETWEEN操作符:
SELECT column1, column2, ...
FROM table_name
WHERE (column BETWEEN value1 AND value2)
AND column [NOT] IN (value1,value2,...);
- 带有文本值的BETWEEN操作符
选取 name 以介于 'A' 和 'H' 之间字母开始的所有网站
SELECT * FROM WebsitesWHERE name BETWEEN 'A' AND 'H';
- 带有日期值的BETWEEN操作符
选取 date 介于 '2016-05-10' 和 '2016-05-14' 之间的所有访问记录
SELECT * FROM access_log
WHERE date BETWEEN '2016-05-10' AND '2016-05-14';
别名
- 为表名称或列名称指定别名
- 如果要指定多个列的别名,需要用逗号隔开
- 如果列名称包含空格,要求使用双引号或方括号
- 列别名
SELECT column_name AS alias_name
FROM table_name;
- 表别名
SELECT column_name(s)
FROM table_name AS alias_name;
JOIN连接
- 用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段
SELECT column1, column2, ...
FROM table1
JOIN table2 ON condition;
1、INNER JOIN
- 如果表中有至少一个匹配,则返回行,等同于JOIN
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;
2、LEFT JOIN
- 即使右表中没有匹配,也从左表返回所有的行
SELECT column_name(s)
FROM table1
LEFT JOIN table2
ON table1.column_name=table2.column_name;
3、RIGHT JOIN
- 即使左表中没有匹配,也从右表返回所有的行
SELECT column_name(s)
FROM table1
RIGHT JOIN table2
ON table1.column_name=table2.column_name;
4、CROSS JOIN
- 返回两个表的所有记录,无论另一个表是否匹配
- 笛卡尔集
SELECT column_name(s)
FROM table1
CROSS JOIN table2;
5、自连接(SELF JOIN)
- 表与自身连接
SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;
- T1 和 T2 是同一表的不同表别名
UNION操作符
- 合并两个或多个 SELECT 语句的结果
- 每个 SELECT 语句必须具有相同数量的列,且对应列的数据类型必须相似
- 默认去除重复的记录,如果要保留所有重复记录,可以使用UNION ALL操作符
- UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名
SELECT column1, column2, ...
FROM table1
UNION
SELECT column1, column2, ...
FROM table2;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)