在数字化时代,数据库技术已经成为信息管理的基础。SQL(Structured Query Language,结构化查询语言)作为数据库的标准查询语言,是每个数据库开发者必须掌握的技能。从零开始,我们可以通过以下技巧与案例,轻松掌握SQL语句。

一、SQL基础语法

1. 数据库和数据表创建

-- 创建数据库
CREATE DATABASE mydatabase;

-- 使用数据库
USE mydatabase;

-- 创建数据表
CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT,
    department VARCHAR(50)
);

2. 数据插入

-- 插入数据
INSERT INTO employees (id, name, age, department) VALUES (1, 'Alice', 30, 'HR');

3. 数据查询

-- 查询所有数据
SELECT * FROM employees;

-- 查询特定列
SELECT name, age FROM employees;

4. 数据更新

-- 更新数据
UPDATE employees SET age = 31 WHERE id = 1;

5. 数据删除

-- 删除数据
DELETE FROM employees WHERE id = 1;

二、高级SQL技巧

1. 聚合函数

-- 计算平均年龄
SELECT AVG(age) AS average_age FROM employees;

-- 计算最大年龄
SELECT MAX(age) AS max_age FROM employees;

2. 子查询

-- 查询年龄大于30岁的员工
SELECT * FROM employees WHERE age > (SELECT AVG(age) FROM employees);

3. JOIN操作

-- 查询员工及其部门信息
SELECT e.name, d.department_name
FROM employees e
JOIN departments d ON e.department_id = d.id;

4. 窗口函数

-- 查询每个部门的平均年龄,并按部门排序
SELECT department, AVG(age) OVER (PARTITION BY department) AS avg_age
FROM employees
ORDER BY department;

三、案例实战

1. 查询公司员工年龄分布

-- 查询每个年龄段的人数
SELECT 
    CASE 
        WHEN age BETWEEN 20 AND 30 THEN '20-30'
        WHEN age BETWEEN 31 AND 40 THEN '31-40'
        WHEN age BETWEEN 41 AND 50 THEN '41-50'
        ELSE '50+' 
    END AS age_group,
    COUNT(*) AS num_employees
FROM employees
GROUP BY age_group;

2. 查询每个部门平均工资

-- 查询每个部门的平均工资
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;

3. 查询员工晋升记录

-- 查询员工晋升记录
SELECT e.name, e.age, e.department,
       p.position, p.start_date
FROM employees e
JOIN promotions p ON e.id = p.employee_id
ORDER BY p.start_date DESC;

通过以上技巧与案例,相信你已经对SQL语句有了更深入的了解。记住,实践是掌握SQL的关键,多动手操作,才能熟练运用SQL解决实际问题。祝你在数据库领域取得优异成绩!