SQL常见用法
Published in:2024-01-27 | category: 兴趣 工具

SQL 常见用法

数据定义语言 (DDL)

  • CREATE 创建数据库对象,如数据库、表、索引、视图等。

1
2
3
4
5
6
CREATE TABLE employees (  
employee_id INT PRIMARY KEY,
first_name VARCHAR(50),
last_name VARCHAR(50),
email VARCHAR(100)
);
  • ALTER 修改现有数据库对象的结构。

1
ALTER TABLE employees ADD COLUMN phone_number VARCHAR(15);  
  • DROP 删除数据库对象。

1
DROP TABLE employees;  
  • TRUNCATE 快速清空表中的所有行。

1
TRUNCATE TABLE employees;  
  • RENAME 更改数据库对象的名称。

1
RENAME TABLE employees TO staff;  

数据操纵语言 (DML)

  • INSERT 向表中插入新数据。

1
2
INSERT INTO employees (employee_id, first_name, last_name, email)  
VALUES (1, 'John', 'Doe', '[email protected]');
  • UPDATE 更新表中的现有数据。

1
2
3
UPDATE employees  
SET email = '[email protected]'
WHERE employee_id = 1;
  • DELETE 从表中删除数据。

1
DELETE FROM employees WHERE employee_id = 1;  
  • SELECT 查询和检索数据库中的数据。

1
2
3
4
SELECT first_name, last_name FROM employees  
WHERE last_name = 'Doe'
ORDER BY first_name
LIMIT 10;

事务控制语言 (TCL)

  • BEGINSTART TRANSACTION 显式地开始一个新的事务。

1
START TRANSACTION;  
  • COMMIT 提交当前事务,使所有自上次提交或回滚以来的数据库更改成为永久性的。

1
COMMIT;  
  • ROLLBACK 回滚当前事务,并取消所有未提交的更改。

1
ROLLBACK;   
  • SAVEPOINT 在事务内设置一个回滚点。

1
SAVEPOINT savepoint_name;  

数据查询和分析

  • SELECT 子句:查询数据,可以结合多种子句进行复杂查询。

1
2
SELECT column1, column2, ...  
FROM table_name;
  • DISTINCT 返回唯一不同的值。

1
SELECT DISTINCT column_name FROM table_name;  
  • WHERE 指定选择条件。

1
2
3
SELECT column1, column2, ...  
FROM table_name
WHERE condition;
  • GROUP BY 将结果集分组,通常与聚合函数(如 COUNT、MAX、MIN、SUM、AVG)一起使用。

1
2
3
SELECT column1, AVG(column2)  
FROM table_name
GROUP BY column1;
  • HAVINGGROUP BY 生成的分组进行条件过滤。

1
2
3
4
SELECT column1, SUM(column2)  
FROM table_name
GROUP BY column1
HAVING SUM(column2) > 1000;
  • ORDER BY 对结果集进行排序。

1
2
3
SELECT column1, column2  
FROM table_name
ORDER BY column1 ASC, column2 DESC;
  • JOIN 将两个或多个表的行结合起来,根据共同的字段。

1
2
3
SELECT orders.order_id, customers.customer_name  
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
  • UNION 合并两个或多个 SELECT 语句的结果集,但是删除重复的行。

1
2
3
SELECT column_name FROM table1  
UNION
SELECT column_name FROM table2;
  • UNION ALL 合并两个或多个 SELECT 语句的结果集,不删除重复的行。

1
2
3
SELECT column_name FROM table1  
UNION ALL
SELECT column_name FROM table2;
  • LIMIT 限制 SELECT 语句返回的数据数量。

1
2
SELECT column_name FROM table_name  
LIMIT 10;
  • OFFSET 指定 SELECT 语句开始返回记录的起点。

1
2
SELECT column_name FROM table_name  
LIMIT 10 OFFSET 5;

数据聚合函数

  • COUNT() 返回匹配指定条件的行数。

1
2
3
SELECT COUNT(column_name)  
FROM table_name
WHERE condition;
  • SUM() 返回数值列的总和。

1
2
SELECT SUM(column_name)  
FROM table_name;
  • AVG() 返回数值列的平均值。

1
2
SELECT AVG(column_name)  
FROM table_name;
  • MAX() 返回列中的最大值。

1
2
SELECT MAX(column_name)  
FROM table_name;
  • MIN() 返回列中的最小值。

1
2
SELECT MIN(column_name)  
FROM table_name;

数据控制语言 (DCL)

  • GRANT 授予用户访问及操作数据库的权限。

1
GRANT SELECT, INSERT ON database_name.table_name TO 'username'@'localhost';  
  • REVOKE 撤销用户的权限。

1
REVOKE SELECT, INSERT ON database_name.table_name FROM 'username'@'localhost';  

索引管理

  • CREATE INDEX 在表上创建索引以提高查询性能。

1
CREATE INDEX idx_column_name ON table_name (column_name);  
  • DROP INDEX 删除表上的索引。

1
DROP INDEX idx_column_name ON table_name;  

视图管理

  • CREATE VIEW 创建一个数据库视图。

1
2
3
4
CREATE VIEW view_name AS  
SELECT column_name
FROM table_name
WHERE condition;
  • DROP VIEW 删除一个数据库视图。

1
DROP VIEW view_name;  

存储过程和函数

  • CREATE PROCEDURE 创建一个存储过程。

1
2
3
4
CREATE PROCEDURE procedure_name ()  
BEGIN
-- SQL statements here
END;
  • CALL 调用一个存储过程。

1
CALL procedure_name();  
  • CREATE FUNCTION 创建一个 SQL 函数。

1
2
3
4
5
6
CREATE FUNCTION function_name (param1 datatype, param2 datatype, ...)  
RETURNS datatype
BEGIN
-- SQL statements here
RETURN value;
END;
  • DROP PROCEDURE / DROP FUNCTION 删除一个存储过程或函数。

1
2
DROP PROCEDURE IF EXISTS procedure_name;  
DROP FUNCTION IF EXISTS function_name;

子查询 (Subqueries)

  • 子查询允许你在另一个 SQL 查询中使用一个完整的 SELECT 查询。

1
2
3
SELECT column_name  
FROM table_name
WHERE column_name IN (SELECT column_name FROM other_table WHERE condition);

SQL 约束 (Constraints)

约束用于指定表中数据的规则。常见的约束包括:

  • NOT NULL - 确保列不包含空值。

  • UNIQUE - 确保所有列的值都是唯一的。

  • PRIMARY KEY - 唯一标识数据库表中的每条记录。

  • FOREIGN KEY - 唯一标识另一个表中的记录。

  • CHECK - 确保列中的值符合指定的条件。

  • DEFAULT - 设置列的默认值。

1
2
3
4
5
6
7
8
CREATE TABLE table_name (  
column1 datatype NOT NULL,
column2 datatype UNIQUE,
column3 datatype DEFAULT 0,
PRIMARY KEY (column1),
FOREIGN KEY (column2) REFERENCES other_table(column_name),
CHECK (column3 >= 0)
);

CASE 表达式

  • CASE 语句在 SQL 中用于创建条件查询,如同编程中的 if-else 逻辑。

1
2
3
4
5
6
7
SELECT column_name,  
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE result3
END AS new_column_name
FROM table_name;

使用通配符的搜索

  • LIKEWHERE 子句中用来搜索列中的指定模式。

    • % 代表零个或多个字符。
    • _ 代表一个单一的字符。
1
2
SELECT * FROM table_name  
WHERE column_name LIKE 'a%';

使用正则表达式的搜索

  • REGEXP 使用正则表达式进行模式匹配。

1
2
SELECT * FROM table_name
WHERE column_name REGEXP 'pattern';
Prev:
详细复现BERT
Next:
Shell命令汇总