SQL语法基础,进阶,高级

一、基础语法

1. 基本查询操作

  • SELECT:从表中选取数据,支持多列、别名(AS)、去重(DISTINCT)及分页(LIMIT/TOP)。
    SELECT name, age FROM users WHERE age > 20 ORDER BY age DESC LIMIT 10; 
    
  • WHERE:条件过滤,支持逻辑运算符(AND/OR/NOT)和范围匹配(BETWEEN/IN/LIKE)。
  • ORDER BY:结果排序,默认升序(ASC),可指定多列排序。
  • DISTINCT:去重,常用于统计唯一值。

2. 数据操作(CRUD)

  • 增(INSERT):插入单条或多条记录。
    INSERT INTO employees (id, name) VALUES (1, 'John'), (2, 'Jane'); 
    
  • 删(DELETE):删除符合条件的记录。
    DELETE FROM orders WHERE order_date < '2020-01-01'; 
    
  • 改(UPDATE):更新表中数据。
    UPDATE products SET price = price * 0.9 WHERE category = 'Electronics'; 
    

3. 表操作(DDL)

  • CREATE TABLE:定义表结构及约束(主键、外键、唯一性)。
    CREATE TABLE customers (
      id INT PRIMARY KEY,
      name VARCHAR(50) NOT NULL,
      email VARCHAR(100) UNIQUE
    );
    
  • ALTER TABLE:修改表结构(添加/删除列、修改约束)。
  • DROP TABLE:删除表。

二、进阶语法

1. 多表查询与联接

  • JOIN类型:
    • INNER JOIN:返回两表匹配的记录。
    • LEFT JOIN/RIGHT JOIN:保留左/右表所有记录,未匹配部分填充NULL
    • FULL JOIN:返回所有记录,无论是否匹配。
    SELECT * FROM orders 
    LEFT JOIN customers ON orders.customer_id = customers.id;
    
  • 子查询:嵌套查询实现复杂逻辑(如过滤条件、多行比较)。
    SELECT name FROM employees 
    WHERE department_id IN (SELECT id FROM departments WHERE location = 'New York');
    

2. 聚合与分组

  • 聚合函数:COUNT()SUM()AVG()MAX()MIN()
  • GROUP BY:按列分组后应用聚合函数。
    SELECT department_id, COUNT(*), AVG(salary) 
    FROM employees 
    GROUP BY department_id 
    HAVING COUNT(*) > 5; 
    

3. 视图与索引

  • 视图(View):虚拟表,简化复杂查询。
    CREATE VIEW high_salary_employees AS 
    SELECT * FROM employees WHERE salary > 100000; 
    
  • 索引(Index):加速查询,但需权衡写入性能。
    CREATE INDEX idx_name ON employees(name); 
    

三、高级语法

1. 事务与锁

  • 事务控制:确保操作原子性(BEGIN TRANSACTIONCOMMITROLLBACK)。
    BEGIN TRANSACTION;
    UPDATE accounts SET balance = balance - 100 WHERE id = 1;
    UPDATE accounts SET balance = balance + 100 WHERE id = 2;
    COMMIT; 
    
  • 隔离级别:控制事务并发读写行为(如READ COMMITTEDREPEATABLE READ)。

2. 存储过程与游标

  • 存储过程:预编译代码块,支持条件逻辑(IF/CASE)和循环(WHILE/FOR)。
    CREATE PROCEDURE get_employee_count @dep_id INT
    AS
    BEGIN
      SELECT COUNT(*) FROM employees WHERE department_id = @dep_id;
    END; 
    
  • 游标:逐行处理查询结果。
    DECLARE @name VARCHAR(50);
    DECLARE cursor_employees CURSOR FOR SELECT name FROM employees;
    OPEN cursor_employees;
    FETCH NEXT FROM cursor_employees INTO @name;
    

3. 性能优化与高级函数

  • 窗口函数:ROW_NUMBER()RANK()SUM() OVER(),实现复杂分析。
    SELECT name, salary, 
           ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank 
    FROM employees; 
    
  • EXPLAIN:分析查询执行计划,优化索引使用。
  • 物化视图:预计算复杂查询结果,提升读取性能。

四、学习建议

  1. 分阶段练习:从基础查询开始,逐步掌握多表联接、事务等高级功能。
  2. 实战项目:设计数据库并实现增删改查,模拟电商或日志系统场景。
  3. 性能调优:结合EXPLAIN分析慢查询,合理使用索引与分库分表。
    如需更详细的语法示例或特定数据库(如MySQL、Oracle)的差异,可参考原文来源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爪哇手记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值