> 技术文档 > SQL实战宝典:常用语句全解析

SQL实战宝典:常用语句全解析


SQL 常用语句分类示例

数据查询(SELECT)

查询所有列:

SELECT * FROM employees;

查询特定列并排序:

SELECT first_name, last_name FROM employees ORDER BY hire_date DESC;

条件筛选(WHERE):

SELECT product_name, price FROM products WHERE price > 100 AND category = \'Electronics\';
数据操作(DML)

插入单条记录:

INSERT INTO customers (name, email) VALUES (\'John Doe\', \'john@example.com\');

批量插入:

INSERT INTO orders (customer_id, order_date) VALUES (101, \'2023-01-15\'), (102, \'2023-01-16\');

更新数据:

UPDATE employees SET salary = salary * 1.1 WHERE department = \'Engineering\';

删除数据:

DELETE FROM logs WHERE created_at < \'2022-01-01\';
表操作(DDL)

创建表:

CREATE TABLE users ( user_id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) NOT NULL UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);

修改表结构:

ALTER TABLE products ADD COLUMN stock_count INT DEFAULT 0;

删除表:

DROP TABLE temp_data;
高级查询

分组统计(GROUP BY):

SELECT department, COUNT(*) as emp_count, AVG(salary) as avg_salaryFROM employeesGROUP BY department;

多表连接(JOIN):

SELECT o.order_id, c.customer_name, p.product_nameFROM orders oJOIN customers c ON o.customer_id = c.customer_idJOIN order_items oi ON o.order_id = oi.order_idJOIN products p ON oi.product_id = p.product_id;

子查询:

SELECT employee_name FROM employees WHERE department_id IN ( SELECT department_id FROM departments WHERE location = \'New York\');
常用函数

字符串函数:

SELECT CONCAT(first_name, \' \', last_name) AS full_name, UPPER(email) AS email_upper, SUBSTRING(phone, 1, 3) AS area_codeFROM contacts;

日期函数:

SELECT order_id, DATEDIFF(day, order_date, shipped_date) AS processing_days, DATE_FORMAT(order_date, \'%Y-%m\') AS order_monthFROM orders;

聚合函数:

SELECT MAX(salary) AS max_salary, MIN(age) AS min_age, SUM(revenue) AS total_revenueFROM company_stats;
事务控制

事务处理:

BEGIN TRANSACTION;UPDATE accounts SET balance = balance - 100 WHERE account_id = 123;UPDATE accounts SET balance = balance + 100 WHERE account_id = 456;COMMIT;
索引优化

创建索引:

CREATE INDEX idx_customer_name ON customers(last_name, first_name);

查看执行计划:

EXPLAIN SELECT * FROM orders WHERE customer_id = 1005;
视图与存储过程

创建视图:

CREATE VIEW active_customers ASSELECT customer_id, name, email FROM customers WHERE last_purchase_date > DATE_SUB(NOW(), INTERVAL 6 MONTH);

创建存储过程:

CREATE PROCEDURE update_salary(IN emp_id INT, IN increase_percent DECIMAL(5,2))BEGIN UPDATE employees SET salary = salary * (1 + increase_percent/100) WHERE employee_id = emp_id;END;
窗口函数

排名计算:

SELECT product_id, sales_amount, RANK() OVER (ORDER BY sales_amount DESC) AS sales_rank, DENSE_RA