SQL命令大全,每条命令均有示例,小白看了也可成神!

举报
wljslmz 发表于 2022/09/29 21:40:59 2022/09/29
1.1k+ 0 0
【摘要】 今天给大家带来的是SQL命令列表,每条命令都会带有示例,对于sql初学者甚至小白来说无疑是个福音! SELECTSELECT 可能是最常用的 SQL 语句,每次使用 SQL 查询数据时,几乎都会用到它。例如,在下面的代码中,从customers表中查询name字段。SELECT nameFROM customers; SELECT *使用*代表查询表中的所有列SELECT * FROM cu...

今天给大家带来的是SQL命令列表,每条命令都会带有示例,对于sql初学者甚至小白来说无疑是个福音!

SELECT

SELECT 可能是最常用的 SQL 语句,每次使用 SQL 查询数据时,几乎都会用到它。

例如,在下面的代码中,从customers表中查询name字段。

SELECT name
FROM customers;

SELECT *

使用*代表查询表中的所有列

SELECT * FROM customers;

SELECT DISTINCT

SELECT DISTINCT 只返回不同的数据,意思就是如果有重复的记录,只会返回重复记录中的一条记录。

SELECT DISTINCT name
FROM customers;

SELECT INTO

SELECT INTO 将指定的数据从一个表复制到另一个表中。

SELECT * INTO customers
FROM customers_bakcup;

SELECT TOP

SELECT TOP 仅返回表中的最高x数字或百分比。

下面的代码将返回customers表中的前 50 个结果:

SELECT TOP 50 * FROM customers;

下面的代码将返回customers表的前 50%

SELECT TOP 50 PERCENT * FROM customers;

AS

as重命名就是给相关列起个别名,例如,在下面的代码中,我们将name列重命名为first_name:

SELECT name AS first_name
FROM customers;

FROM

FROM 指定查询的来源表

SELECT name
FROM customers;

WHERE

过滤查询,返回匹配条件的结果,一般条件将配合=,>,<,>=,<=等一起使用

SELECT name
FROM customers
WHERE name = ‘Bob’;

AND

AND 在单个查询中组合两个或多个条件,必须满足所有条件才能返回结果。

SELECT name
FROM customers
WHERE name = ‘Bob’ AND age = 55;

OR

OR 在单个查询中组合两个或多个条件,只要满足其中一个条件就能返回结果。

SELECT name
FROM customers
WHERE name = ‘Bob’ OR age = 55;

BETWEEN

BETWEEN 过滤指定范围内的值

SELECT name
FROM customers
WHERE age BETWEEN 45 AND 55;

LIKE

like用于模糊查询,在下面的示例代码中,将返回名称中包含字符 Bob 的数据

SELECT name
FROM customers
WHERE name LIKE%Bob%;

LIKE 的其他运算符:

  • %x — 将选择所有以 x 开头的值
  • %x% — 将选择包含 x 的所有值
  • x% — 将选择所有以 x 结尾的值
  • x%y — 将选择所有以 x 开头并以 y 结尾的值
  • _x% — 将选择所有具有 x 作为第二个字符的值
  • x_%— 将选择所有以 x 开头且长度至少为两个字符的值,您可以添加额外的 _ 字符来扩展长度要求,即x___%

IN

IN 允许我们在使用 WHERE 命令时指定要选择的多个值。

SELECT name
FROM customers
WHERE name IN (‘Bob’, ‘Fred’, ‘Harry’);

IS NULL

IS NULL 将仅返回具有 NULL 值的行。

SELECT name
FROM customers
WHERE name IS NULL;

IS NOT NULL

IS NOT NULL 则相反——它将只返回没有NULL 值的行。

SELECT name
FROM customers
WHERE name IS NOT NULL;

CREATE

CREATE 可用于创建数据库、表、索引或视图。

CREATE DATABASE

CREATE DATABASE 创建一个新数据库。

CREATE DATABASE dataquestDB;

CREATE TABLE

CREATE TABLE 在数据库中创建一个新表。

CREATE TABLE customers (
    customer_id int,
    name varchar(255),
    age int
);

CREATE INDEX

CREATE INDEX 为表生成索引,索引用于更快地从数据库中检索数据。

CREATE INDEX idx_name
ON customers (name);

CREATE VIEW

CREATE VIEW 根据 SQL 语句的结果集创建虚拟表,一个视图就像一张普通的表(可以像一张表一样查询),但它并 没有保存为数据库中的永久表。

CREATE VIEW [Bob Customers] AS
SELECT name, age
FROM customers
WHERE name = ‘Bob’;

DROP

DROP 语句可用于删除整个数据库、表或索引。

不言而喻,DROP 命令只应在绝对必要的情况下使用。

DROP DATABASE

DROP DATABASE 删除整个数据库,包括其所有表、索引等以及其中的所有数据。

使用该命令要极其小心哦!

DROP DATABASE dataquestDB;

DROP TABLE

DROP TABLE 删除一个表以及其中的数据。

DROP TABLE customers;

DROP INDEX

DROP INDEX 删除数据库中的索引。

DROP INDEX idx_name;

UPDATE

UPDATE 语句用于更新表中的数据,例如,下面的代码将customers表中名为Bob的年龄改为56.

UPDATE customers
SET age = 56
WHERE name = ‘Bob’;

DELETE

DELETE 可以删除表中的所有行(使用 *),也可以用作 WHERE 子句的一部分来删除满足特定条件的行。

DELETE FROM customers
WHERE name = ‘Bob’;

ALTER TABLE

ALTER TABLE 允许您在表中添加或删除列。

为customers表增加新列surname

ALTER TABLE customers
ADD surname varchar(255);

删除customers表中的surname列

ALTER TABLE customers
DROP COLUMN surname;

聚合函数 (COUNT/SUM/AVG/MIN/MAX)

聚合函数对一组值执行计算并返回单个结果。

COUNT

COUNT 返回与指定条件匹配的行数,在下面的代码中,我们使用的是*,因此customers将返回的总行数。

SELECT COUNT(*)
FROM customers;

SUM

SUM 返回数字列的总和。

SELECT SUM(age)
FROM customers;

AVG

AVG 返回数字列的平均值。

SELECT AVG(age)
FROM customers;

MIN

MIN 返回数字列的最小值。

SELECT MIN(age)
FROM customers;

MAX

MAX 返回数值列的最大值。

SELECT MAX(age)
FROM customers;

GROUP BY

GROUP BY 语句将具有相同值的行分组为汇总行,该语句通常与聚合函数一起使用。

例如,下面的代码将显示我们customers表格中出现的每个名字的平均年龄。

SELECT name, AVG(age)
FROM customers
GROUP BY name;

HAVING

HAVING 执行与 WHERE 子句相同的操作。不同之处在于 HAVING 用于聚合函数。

下面的示例将返回每个名称的行数,但仅适用于具有 2 个以上记录的名称。

SELECT COUNT(customer_id), name
FROM customers
GROUP BY name
HAVING COUNT(customer_id) > 2;

ORDER BY

ORDER BY sets the order of the returned results. The order will be ascending by default.

SELECT name
FROM customers
ORDER BY age;

DESC

DESC 将按降序返回结果。

SELECT name
FROM customers
ORDER BY age DESC;

OFFSET

OFFSET 语句与 ORDER BY 一起使用,并指定在开始从查询中返回行之前要跳过的行数。

SELECT name
FROM customers
ORDER BY age
OFFSET 10 ROWS;

FETCH

FETCH 指定在处理完 OFFSET 子句后要返回的行数。

OFFSET 子句是强制性的,而 FETCH 子句是可选的。

SELECT name
FROM customers
ORDER BY age
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;

连接 (内部、左、右、全)

JOIN 子句用于组合来自两个或多个表的行,JOIN 的四种类型是 INNER、LEFT、RIGHT 和 FULL。

INNER JOIN

INNER JOIN 选择在两个表中具有匹配值的记录。

SELECT name
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.customer_id;

LEFT JOIN

LEFT JOIN 从左表中选择与右表中的记录匹配的记录,在下面的例子中,左表是customers.

SELECT name
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id;

RIGHT JOIN

RIGHT JOIN 从右表中选择与左表中的记录匹配的记录,在下面的例子中,右表是orders.

SELECT name
FROM customers
RIGHT JOIN orders
ON customers.customer_id = orders.customer_id;

FULL JOIN

FULL JOIN 选择在左表或右表中匹配的记录。

与“AND”JOIN(INNER JOIN)相比,可以将其视为“OR”JOIN。

SELECT name
FROM customers
FULL OUTER JOIN orders
ON customers.customer_id = orders.customer_id;

EXISTS

EXISTS 用于测试子查询中是否存在任何记录。

SELECT name
FROM customers
WHERE EXISTS
(SELECT order FROM ORDERS WHERE customer_id = 1);

GRANT

GRANT 允许特定用户访问数据库对象,例如表、视图或数据库本身。

下面的示例将为名为“usr_bob”的用户赋予对customers表的 SELECT 和 UPDATE 访问权限。

GRANT SELECT, UPDATE ON customers TO usr_bob;

REVOKE

REVOKE 删除用户对特定数据库对象的权限。

REVOKE SELECT, UPDATE ON customers FROM usr_bob;

SAVEPOINT

SAVEPOINT 允许您标识事务中的一个点,可以稍后回滚到该点,类似于创建备份。

SAVEPOINT SAVEPOINT_NAME;

COMMIT

COMMIT 用于将每个事务保存到数据库中,COMMIT 语句将释放任何可能正在使用的现有保存点,并且一旦发出该语句,就无法回滚事务。

DELETE FROM customers
WHERE name = ‘Bob’;
COMMIT;

ROLLBACK

ROLLBACK 用于撤消未保存到数据库的事务,这只能用于撤消自上次发出 COMMIT 或 ROLLBACK 命令以来的事务,还可以回滚到之前创建的 SAVEPOINT。

ROLLBACK TO SAVEPOINT_NAME;

TRUNCATE

TRUNCATE TABLE 从数据库的表中删除所有数据条目,但保留表和结构。

TRUNCATE TABLE customers;

UNION

UNION 使用两个或多个 SELECT 语句组合多个结果集并消除重复行。

SELECT name FROM customers
UNION
SELECT name FROM orders;

UNION ALL

UNION ALL 使用两个或多个 SELECT 语句组合多个结果集并保留重复行。

SELECT name FROM customers
UNION ALL
SELECT name FROM orders;
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。