SQL命令大全,每条命令均有示例,小白看了也可成神!
【摘要】 今天给大家带来的是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)