SQL 常见用法
数据定义语言 (DDL)
-
CREATE
创建数据库对象,如数据库、表、索引、视图等。
1 | CREATE TABLE employees ( |
-
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 | INSERT INTO employees (employee_id, first_name, last_name, email) |
-
UPDATE
更新表中的现有数据。
1 | UPDATE employees |
-
DELETE
从表中删除数据。
1 | DELETE FROM employees WHERE employee_id = 1; |
-
SELECT
查询和检索数据库中的数据。
1 | SELECT first_name, last_name FROM employees |
事务控制语言 (TCL)
-
BEGIN
或START TRANSACTION
显式地开始一个新的事务。
1 | START TRANSACTION; |
-
COMMIT
提交当前事务,使所有自上次提交或回滚以来的数据库更改成为永久性的。
1 | COMMIT; |
-
ROLLBACK
回滚当前事务,并取消所有未提交的更改。
1 | ROLLBACK; |
-
SAVEPOINT
在事务内设置一个回滚点。
1 | SAVEPOINT savepoint_name; |
数据查询和分析
-
SELECT
子句:查询数据,可以结合多种子句进行复杂查询。
1 | SELECT column1, column2, ... |
-
DISTINCT
返回唯一不同的值。
1 | SELECT DISTINCT column_name FROM table_name; |
-
WHERE
指定选择条件。
1 | SELECT column1, column2, ... |
-
GROUP BY
将结果集分组,通常与聚合函数(如 COUNT、MAX、MIN、SUM、AVG)一起使用。
1 | SELECT column1, AVG(column2) |
-
HAVING
对GROUP BY
生成的分组进行条件过滤。
1 | SELECT column1, SUM(column2) |
-
ORDER BY
对结果集进行排序。
1 | SELECT column1, column2 |
-
JOIN
将两个或多个表的行结合起来,根据共同的字段。
1 | SELECT orders.order_id, customers.customer_name |
-
UNION
合并两个或多个SELECT
语句的结果集,但是删除重复的行。
1 | SELECT column_name FROM table1 |
-
UNION ALL
合并两个或多个SELECT
语句的结果集,不删除重复的行。
1 | SELECT column_name FROM table1 |
-
LIMIT
限制SELECT
语句返回的数据数量。
1 | SELECT column_name FROM table_name |
-
OFFSET
指定SELECT
语句开始返回记录的起点。
1 | SELECT column_name FROM table_name |
数据聚合函数
-
COUNT()
返回匹配指定条件的行数。
1 | SELECT COUNT(column_name) |
-
SUM()
返回数值列的总和。
1 | SELECT SUM(column_name) |
-
AVG()
返回数值列的平均值。
1 | SELECT AVG(column_name) |
-
MAX()
返回列中的最大值。
1 | SELECT MAX(column_name) |
-
MIN()
返回列中的最小值。
1 | SELECT MIN(column_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 | CREATE VIEW view_name AS |
-
DROP VIEW
删除一个数据库视图。
1 | DROP VIEW view_name; |
存储过程和函数
-
CREATE PROCEDURE
创建一个存储过程。
1 | CREATE PROCEDURE procedure_name () |
-
CALL
调用一个存储过程。
1 | CALL procedure_name(); |
-
CREATE FUNCTION
创建一个 SQL 函数。
1 | CREATE FUNCTION function_name (param1 datatype, param2 datatype, ...) |
-
DROP PROCEDURE
/DROP FUNCTION
删除一个存储过程或函数。
1 | DROP PROCEDURE IF EXISTS procedure_name; |
子查询 (Subqueries)
-
子查询允许你在另一个 SQL 查询中使用一个完整的
SELECT
查询。
1 | SELECT column_name |
SQL 约束 (Constraints)
约束用于指定表中数据的规则。常见的约束包括:
-
NOT NULL
- 确保列不包含空值。 -
UNIQUE
- 确保所有列的值都是唯一的。 -
PRIMARY KEY
- 唯一标识数据库表中的每条记录。 -
FOREIGN KEY
- 唯一标识另一个表中的记录。 -
CHECK
- 确保列中的值符合指定的条件。 -
DEFAULT
- 设置列的默认值。
1 | CREATE TABLE table_name ( |
CASE 表达式
-
CASE
语句在 SQL 中用于创建条件查询,如同编程中的if-else
逻辑。
1 | SELECT column_name, |
使用通配符的搜索
-
LIKE
在WHERE
子句中用来搜索列中的指定模式。%
代表零个或多个字符。_
代表一个单一的字符。
1 | SELECT * FROM table_name |
使用正则表达式的搜索
-
REGEXP
使用正则表达式进行模式匹配。
1 | SELECT * FROM table_name |