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;
posted @   一年都在冬眠  阅读(72)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示