Scott

SQL总结 4 months ago

sql
5045个字符
共有38人围观

SQL 语句详细分类


1. 数据查询语句(DQL - Data Query Language)

  • SELECT: 用于从数据库中查询数据。 sql SELECT column1, column2 FROM table_name WHERE condition; - 多表查询(JOIN): - INNER JOIN: 返回两个表中匹配的记录。 sql SELECT a.column1, b.column2 FROM table_a a INNER JOIN table_b b ON a.id = b.a_id; - LEFT JOIN: 返回左表的所有记录和右表中匹配的记录。 sql SELECT a.column1, b.column2 FROM table_a a LEFT JOIN table_b b ON a.id = b.a_id; - RIGHT JOIN: 返回右表的所有记录和左表中匹配的记录。 sql SELECT a.column1, b.column2 FROM table_a a RIGHT JOIN table_b b ON a.id = b.a_id; - FULL JOIN: 返回两个表中所有记录,不匹配的部分用 NULL 填充。 sql SELECT a.column1, b.column2 FROM table_a a FULL JOIN table_b b ON a.id = b.a_id; - 子查询: sql SELECT column1 FROM table_name WHERE column2 IN (SELECT column2 FROM another_table WHERE condition);
    • 聚合函数:
      • COUNT(): 统计行数。
      • SUM(): 求和。
      • AVG(): 求平均值。
      • MAX(): 求最大值。
      • MIN(): 求最小值。 sql SELECT COUNT(*) FROM table_name; SELECT AVG(column1) FROM table_name;

2. 数据操作语句(DML - Data Manipulation Language)

  • INSERT: 向表中插入新记录。 sql INSERT INTO table_name (column1, column2) VALUES (value1, value2); - 插入多行: sql INSERT INTO table_name (column1, column2) VALUES (value1, value2), (value3, value4);
  • UPDATE: 更新表中的现有记录。 sql UPDATE table_name SET column1 = value1 WHERE condition; - DELETE: 从表中删除记录。 sql DELETE FROM table_name WHERE condition;

3. 数据定义语句(DDL - Data Definition Language)

  • CREATE: 创建数据库对象(如表、索引、视图等)。 sql CREATE TABLE table_name ( column1 datatype constraints, column2 datatype constraints ); - 创建索引: sql CREATE INDEX index_name ON table_name (column1);

    • 创建视图: sql CREATE VIEW view_name AS SELECT column1, column2 FROM table_name WHERE condition; - ALTER: 修改数据库对象的结构。 - 添加字段: sql ALTER TABLE table_name ADD column_name datatype;
    • 修改字段类型: sql ALTER TABLE table_name MODIFY column_name new_datatype; - 删除字段sql ALTER TABLE table_name DROP COLUMN column_name;
    • 重命名字段: sql ALTER TABLE table_name RENAME COLUMN old_name TO new_name; - DROP: 删除数据库对象。 sql DROP TABLE table_name;
  • TRUNCATE: 删除表中的所有数据,但不删除表结构。

     TRUNCATE TABLE table_name;
    

    4. 数据控制语句(DCL - Data Control Language)

    • GRANT: 授予用户访问权限。 sql GRANT SELECT, INSERT ON table_name TO user_name;
  • REVOKE: 撤销用户的访问权限。

     REVOKE SELECT, INSERT ON table_name FROM user_name;
    

    5. 事务控制语句(TCL - Transaction Control Language)

    • BEGIN TRANSACTION: 开始一个事务。 sql BEGIN TRANSACTION;
  • COMMIT: 提交事务,使所有更改永久生效。

     COMMIT;
    
    • ROLLBACK: 回滚事务,撤销未提交的更改。 sql ROLLBACK;
  • SAVEPOINT: 在事务中设置保存点,以便部分回滚。

     SAVEPOINT savepoint_name;
    

    6. 其他常用语句

    • USE: 选择数据库。 sql USE database_name;
  • SHOW: 显示数据库对象的信息。

     SHOW TABLES;
     SHOW DATABASES;
    
    • DESCRIBE: 显示表的结构。 sql DESCRIBE table_name;
  • UNION: 合并多个查询结果。

     SELECT column1 FROM table1
     UNION
     SELECT column1 FROM table2;
    
    • GROUP BY: 对结果集进行分组。 sql SELECT column1, COUNT(*) FROM table_name GROUP BY column1;
  • HAVING: 对分组后的结果进行过滤。

     SELECT column1, COUNT(*) 
     FROM table_name 
     GROUP BY column1 
     HAVING COUNT(*) > 10;
    

    7. 高级查询技巧

    • 窗口函数:
      • ROW_NUMBER(): 为每一行分配一个唯一的行号。 sql SELECT column1, ROW_NUMBER() OVER (ORDER BY column1) AS row_num FROM table_name;
    • RANK(): 为每一行分配一个排名,相同值会有相同的排名。 sql SELECT column1, RANK() OVER (ORDER BY column1) AS rank FROM table_name; - 递归查询(WITH RECURSIVE): sql WITH RECURSIVE cte AS ( SELECT initial_query UNION ALL SELECT recursive_query FROM cte WHERE condition ) SELECT * FROM cte;

总结

  • DQL: 查询数据(SELECT)。
  • DML: 操作数据(INSERT、UPDATE、DELETE)。
  • DDL: 定义和修改数据库结构(CREATE、ALTER、DROP、TRUNCATE)。
  • DCL: 控制数据访问权限(GRANT、REVOKE)。
  • TCL: 控制事务(COMMIT、ROLLBACK、SAVEPOINT)。
  • 高级功能: 多表查询、子查询、窗口函数、递归查询等。

通过掌握这些 SQL 语句,可以更高效地管理和操作数据库!