大家好,这里是网络技术干货圈,今天给大家带来的是SQL命令列表,每条命令都会带有示例,对于sql初学者甚至小白来说无疑是个福音!
SELECT 可能是最常用的 SQL 语句,每次使用 SQL 查询数据时,几乎都会用到它。
例如,在下面的代码中,从customers表中查询name字段。
SELECT name
FROM customers;
使用*代表查询表中的所有列
SELECT * FROM customers;
SELECT DISTINCT 只返回不同的数据,意思就是如果有重复的记录,只会返回重复记录中的一条记录。
SELECT DISTINCT name
FROM customers;
SELECT INTO 将指定的数据从一个表复制到另一个表中。
SELECT * INTO customers
FROM customers_bakcup;
SELECT TOP 仅返回表中的最高x数字或百分比。
下面的代码将返回customers表中的前 50 个结果:
SELECT TOP 50 * FROM customers;
下面的代码将返回customers表的前 50%
SELECT TOP 50 PERCENT * FROM customers;
as重命名就是给相关列起个别名,例如,在下面的代码中,我们将name列重命名为first_name:
SELECT name AS first_name
FROM customers;
FROM 指定查询的来源表
SELECT name
FROM customers;
过滤查询,返回匹配条件的结果,一般条件将配合=,>,<,>=,<=等一起使用
SELECT name
FROM customers
WHERE name = ‘Bob’;
AND 在单个查询中组合两个或多个条件,必须满足所有条件才能返回结果。
SELECT name
FROM customers
WHERE name = ‘Bob’ AND age = 55;
OR 在单个查询中组合两个或多个条件,只要满足其中一个条件就能返回结果。
SELECT name
FROM customers
WHERE name = ‘Bob’ OR age = 55;
BETWEEN 过滤指定范围内的值
SELECT name
FROM customers
WHERE age BETWEEN 45 AND 55;
like用于模糊查询,在下面的示例代码中,将返回名称中包含字符 Bob 的数据
SELECT name
FROM customers
WHERE name LIKE ‘%Bob%’;
LIKE 的其他运算符:
IN 允许我们在使用 WHERE 命令时指定要选择的多个值。
SELECT name
FROM customers
WHERE name IN (‘Bob’, ‘Fred’, ‘Harry’);
IS NULL 将仅返回具有 NULL 值的行。
SELECT name
FROM customers
WHERE name IS NULL;
IS NOT NULL 则相反——它将只返回没有NULL 值的行。
SELECT name
FROM customers
WHERE name IS NOT NULL;
CREATE 可用于创建数据库、表、索引或视图。
CREATE DATABASE 创建一个新数据库。
CREATE DATABASE dataquestDB;
CREATE TABLE 在数据库中创建一个新表。
CREATE TABLE customers (
customer_id int,
name varchar(255),
age int
);
CREATE INDEX 为表生成索引,索引用于更快地从数据库中检索数据。
CREATE INDEX idx_name
ON customers (name);
CREATE VIEW 根据 SQL 语句的结果集创建虚拟表,一个视图就像一张普通的表(可以像一张表一样查询),但它并 没有保存为数据库中的永久表。
CREATE VIEW [Bob Customers] AS
SELECT name, age
FROM customers
WHERE name = ‘Bob’;
DROP 语句可用于删除整个数据库、表或索引。
不言而喻,DROP 命令只应在绝对必要的情况下使用。
DROP DATABASE 删除整个数据库,包括其所有表、索引等以及其中的所有数据。
使用该命令要极其小心哦!
DROP DATABASE dataquestDB;
DROP TABLE 删除一个表以及其中的数据。
DROP TABLE customers;
DROP INDEX 删除数据库中的索引。
DROP INDEX idx_name;
UPDATE 语句用于更新表中的数据,例如,下面的代码将customers表中名为Bob的年龄改为56.
UPDATE customers
SET age = 56
WHERE name = ‘Bob’;
DELETE 可以删除表中的所有行(使用 *),也可以用作 WHERE 子句的一部分来删除满足特定条件的行。
DELETE FROM customers
WHERE name = ‘Bob’;
ALTER TABLE 允许您在表中添加或删除列。
为customers表增加新列surname
ALTER TABLE customers
ADD surname varchar(255);
删除customers表中的surname列
ALTER TABLE customers
DROP COLUMN surname;
聚合函数对一组值执行计算并返回单个结果。
COUNT 返回与指定条件匹配的行数,在下面的代码中,我们使用的是*,因此customers将返回的总行数。
SELECT COUNT(*)
FROM customers;
SUM 返回数字列的总和。
SELECT SUM(age)
FROM customers;
AVG 返回数字列的平均值。
SELECT AVG(age)
FROM customers;
MIN 返回数字列的最小值。
SELECT MIN(age)
FROM customers;
MAX 返回数值列的最大值。
SELECT MAX(age)
FROM customers;
GROUP BY 语句将具有相同值的行分组为汇总行,该语句通常与聚合函数一起使用。
例如,下面的代码将显示我们customers表格中出现的每个名字的平均年龄。
SELECT name, AVG(age)
FROM customers
GROUP BY name;
HAVING 执行与 WHERE 子句相同的操作。不同之处在于 HAVING 用于聚合函数。
下面的示例将返回每个名称的行数,但仅适用于具有 2 个以上记录的名称。
SELECT COUNT(customer_id), name
FROM customers
GROUP BY name
HAVING COUNT(customer_id) > 2;
ORDER BY sets the order of the returned results. The order will be ascending by default.
SELECT name
FROM customers
ORDER BY age;
DESC 将按降序返回结果。
SELECT name
FROM customers
ORDER BY age DESC;
OFFSET 语句与 ORDER BY 一起使用,并指定在开始从查询中返回行之前要跳过的行数。
SELECT name
FROM customers
ORDER BY age
OFFSET 10 ROWS;
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 选择在两个表中具有匹配值的记录。
SELECT name
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.customer_id;
LEFT JOIN 从左表中选择与右表中的记录匹配的记录,在下面的例子中,左表是customers.
SELECT name
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id;
RIGHT JOIN 从右表中选择与左表中的记录匹配的记录,在下面的例子中,右表是orders.
SELECT name
FROM customers
RIGHT JOIN orders
ON customers.customer_id = orders.customer_id;
FULL JOIN 选择在左表或右表中匹配的记录。
与“AND”JOIN(INNER JOIN)相比,可以将其视为“OR”JOIN。
SELECT name
FROM customers
FULL OUTER JOIN orders
ON customers.customer_id = orders.customer_id;
EXISTS 用于测试子查询中是否存在任何记录。
SELECT name
FROM customers
WHERE EXISTS
(SELECT order FROM ORDERS WHERE customer_id = 1);
GRANT 允许特定用户访问数据库对象,例如表、视图或数据库本身。
下面的示例将为名为“usr_bob”的用户赋予对customers表的 SELECT 和 UPDATE 访问权限。
GRANT SELECT, UPDATE ON customers TO usr_bob;
REVOKE 删除用户对特定数据库对象的权限。
REVOKE SELECT, UPDATE ON customers FROM usr_bob;
SAVEPOINT 允许您标识事务中的一个点,可以稍后回滚到该点,类似于创建备份。
SAVEPOINT SAVEPOINT_NAME;
COMMIT 用于将每个事务保存到数据库中,COMMIT 语句将释放任何可能正在使用的现有保存点,并且一旦发出该语句,就无法回滚事务。
DELETE FROM customers
WHERE name = ‘Bob’;
COMMIT;
ROLLBACK 用于撤消未保存到数据库的事务,这只能用于撤消自上次发出 COMMIT 或 ROLLBACK 命令以来的事务,还可以回滚到之前创建的 SAVEPOINT。
ROLLBACK TO SAVEPOINT_NAME;
TRUNCATE TABLE 从数据库的表中删除所有数据条目,但保留表和结构。
TRUNCATE TABLE customers;
UNION 使用两个或多个 SELECT 语句组合多个结果集并消除重复行。
SELECT name FROM customers
UNION
SELECT name FROM orders;
UNION ALL 使用两个或多个 SELECT 语句组合多个结果集并保留重复行。
SELECT name FROM customers
UNION ALL
SELECT name FROM orders;
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。