跳到主要内容

SQL通配符

提示
  1. 通配符的作用:SQL 中的通配符用于创建灵活的字符串匹配条件,如 % 匹配任意字符序列,_ 匹配任意单个字符。
  2. 实例应用:例如,使用 LIKE 'U_' 可选择国家名以 "U" 开头且后面只有一个字符的顾客。
  3. 通配符的不同表现:不同的数据库系统(如 SQL Server, PostgreSQL, MySQL, Oracle)中通配符的实现和功能可能略有不同。
提示
  1. 通配符的作用:SQL 中的通配符用于创建灵活的字符串匹配条件,如 % 匹配任意字符序列,_ 匹配任意单个字符。
  2. 实例应用:例如,使用 LIKE 'U_' 可选择国家名以 "U" 开头且后面只有一个字符的顾客。
  3. 通配符的不同表现:不同的数据库系统(如 SQL Server, PostgreSQL, MySQL, Oracle)中通配符的实现和功能可能略有不同。

在 SQL 中,视图包含与表类似的行和列,但视图并不实际存储数据。

你可以将视图视为从一个或多个表创建的虚拟表环境,以便更容易地处理数据。

如何在 SQL 中使用视图

在 SQL 中创建视图

我们可以使用 CREATE VIEW 命令在 SQL 中创建视图。例如,

CREATE VIEW us_customers AS
SELECT customer_id, first_name
FROM Customers
WHERE Country = 'USA';

这里,从 Customers 表创建了一个名为 us_customers 的视图。

现在要选择居住在 美国 的客户,我们可以简单地运行,

SELECT *
FROM us_customers;

更新视图

使用 CREATE OR REPLACE VIEW 命令可以更改或更新现有的 视图。例如,

CREATE OR REPLACE VIEW us_customers AS
SELECT *
FROM Customers
WHERE Country = 'USA';

这里,us_customers 视图被更新,以显示所有字段。

删除视图

我们可以使用 DROP VIEW 命令删除视图。例如,

DROP VIEW us_customers;

这里,SQL 命令删除了名为 us_customers 的视图。

注意: 如果视图不可用,上述命令会抛出错误。

用于复杂查询的视图

假设 AB 是两个表,我们想要从这两个表中选择数据。为此,我们必须使用 SQL JOIN

然而,每次使用 JOIN 可能是一项繁琐的任务。为此,我们可以创建一个视图来轻松获取记录。

让我们创建一个视图,

CREATE VIEW order_details AS
SELECT Customers.customer_id, Customers.first_name, Orders.amount
FROM Customers
JOIN Orders
ON Customers.customer_id = Orders.customer_id;

现在,要选择数据,我们可以运行

SELECT *
FROM order_details;

这里,SQL 命令从视图 order_details 中选择数据。

SELECT *
FROM Customers
WHERE country LIKE 'U_';

这里,SQL 命令选择国家名以 U 开头且后面只有一个字符的顾客。

表达式字符串匹配情况
U_U``UK``USA无匹配匹配无匹配

[] 通配符在 SQL 中的应用

SQL 中的 [] 通配符用于表示括号内的任意一个字符。例如,

-- 选择国家名以 UK 或 UA 开头且后面跟有任意多个字符的顾客

SELECT *
FROM Customers
WHERE country LIKE 'U[KA]%';

这里,SQL 命令选择国家名以 U 开头且后面跟有 KA 以及任意多个字符的顾客。

表达式字符串匹配情况
U[KA]%U``UK``UAE``USA无匹配匹配匹配无匹配

! 通配符在 SQL 中的应用

SQL 中的 ! 通配符用于从字符串中排除字符。例如,

-- 选择姓氏不以 D 或 R 开头的顾客
SELECT *
FROM Customers
WHERE last_name LIKE '[!DR]%';

这里,SQL 命令选择姓氏不以 DR 开头的顾客。

表达式字符串匹配情况
[!DR]%Doe``Reinhardt``Luna``D``O``R无匹配无匹配匹配无匹配匹配无匹配

不同数据库中的通配符字符

SQL Server

  • % - 零个或多个字符
  • _ - 单个字符
  • [] - 括号内的单个字符
  • ^ - 括号内未包含的任意字符
  • - - 范围内的单个字符

PostgreSQL 和 MySQL

  • % - 零个或多个字符
  • _ - 单个字符

Oracle

  • % - 零个或多个字符
  • _ - 单个字符
  • [] - 括号内的单个字符
  • {} - 转义字符