一、SELECT语句
SQL语句中最常用的就是SELECT语句,该语句用于从数据库中获取所需的数据。基本语法如下:
SELECT column_name(s)
FROM table_name
WHERE condition;
其中,column_name(s)代表我们需要获取的列的名称,可以用星号(*)表示获取所有列的数据。table_name代表要查询的表的名称,condition是可选的过滤条件。
1. 获取所有数据
使用星号(*)表示获取所有列的数据,并使用FROM关键字指定要查询的表的名称。下面的代码片段展示了如何获取employee表中的所有数据:
SELECT *
FROM employee;
2. 获取指定列的数据
使用列名来指定需要获取的列的数据。下面的代码片段展示了如何获取employee表中的first_name和last_name字段:
SELECT first_name, last_name
FROM employee;
3. 使用WHERE语句过滤数据
WHERE语句用于过滤SELECT语句返回的数据,只返回满足条件的数据。在WHERE语句中,可以使用各种比较运算符和逻辑运算符。下面的代码片段展示了如何获取employee表中薪水大于5000的员工信息:
SELECT *
FROM employee
WHERE salary > 5000;
4. 使用LIKE语句进行模糊查询
使用LIKE语句进行模糊查询。下面的代码片段展示了如何获取employee表中名字以J开头的员工信息:
SELECT *
FROM employee
WHERE first_name LIKE 'J%';
5. 使用ORDER BY语句排序
使用ORDER BY语句可以按指定的列对结果进行排序。可以使用ASC或DESC关键字指定升序或降序排列。下面的代码片段展示了如何按照salary字段对employee表中的数据进行升序排序:
SELECT *
FROM employee
ORDER BY salary ASC;
6. 使用GROUP BY语句进行分组
使用GROUP BY语句对查询结果进行分组,统计每个组的数量。下面的代码片段展示了如何对employee表中的数据按照department_id进行分组,并统计每个部门的员工数量:
SELECT department_id, COUNT(*)
FROM employee
GROUP BY department_id;
二、INSERT语句
INSERT语句用于向数据库表中添加新数据。
1. 插入完整的数据
使用INSERT INTO语句向表中插入完整的数据。下面的代码片段展示了如何向employee表中插入一条新员工信息:
INSERT INTO employee (first_name, last_name, email, phone, hire_date, job_id, salary, commission_pct, manager_id, department_id)
VALUES ('Jane', 'Doe', 'jane.doe@example.com', '555-555-1212', '2021-01-01', 'IT_PROG', 6000, 0.10, 100, 60);
2. 插入部分数据
可以只向数据库表中插入部分数据。下面的代码片段展示了如何向employee表中插入一条新员工信息并省略部分可选字段:
INSERT INTO employee (first_name, last_name, email, phone, hire_date, job_id, salary, department_id)
VALUES ('John', 'Doe', 'john.doe@example.com', '555-555-1212', '2021-01-01', 'IT_PROG', 6500, 60);
三、UPDATE语句
UPDATE语句可以修改数据库表中的现有数据。
1. 更新单个字段
使用UPDATE语句可以修改表中的单个字段。下面的代码片段展示了如何将employee表中所有员工的salary字段增加1000:
UPDATE employee
SET salary = salary + 1000;
2. 更新多个字段
可以使用UPDATE语句同时修改表中的多个字段。下面的代码片段展示了如何将employee表中所有job_id为IT_PROG的员工的salary字段增加1000,并将department_id修改为70:
UPDATE employee
SET salary = salary + 1000, department_id = 70
WHERE job_id = 'IT_PROG';
四、DELETE语句
DELETE语句可以从数据库表中删除指定的行。
1. 删除单个行
可以使用DELETE语句删除表中的单个行。下面的代码片段展示了如何从employee表中删除employee_id为100的员工信息:
DELETE FROM employee
WHERE employee_id = 100;
2. 删除多个行
可以使用DELETE语句同时删除多个行。下面的代码片段展示了如何从employee表中删除job_id为IT_PROG的员工信息:
DELETE FROM employee
WHERE job_id = 'IT_PROG';
五、SELECT嵌套查询
SELECT嵌套查询常用于在一个查询中检索相关信息。
1. 常规嵌套查询
可以在SELECT语句中嵌套另一个SELECT语句。下面的代码片段展示了如何获取job_id为IT_PROG的平均薪水:
SELECT AVG(salary)
FROM employee
WHERE job_id = 'IT_PROG';
2. EXISTS子查询
可以使用EXISTS子查询检查是否存在符合条件的数据。下面的代码片段展示了如何检查employee表中是否有员工的薪水高于15000:
SELECT *
FROM employee e
WHERE EXISTS (
SELECT *
FROM job_history j
WHERE j.employee_id = e.employee_id
AND j.salary > 15000
);
3. NOT EXISTS子查询
可以使用NOT EXISTS子查询检查是否不存在符合条件的数据。下面的代码片段展示了如何检查employee表中是否不存在薪水高于15000的员工:
SELECT *
FROM employee e
WHERE NOT EXISTS (
SELECT *
FROM job_history j
WHERE j.employee_id = e.employee_id
AND j.salary > 15000
);
六、使用JOIN查询
JOIN查询是将两个或多个表中的数据联接在一起以进行查询的一种常见方法。
1. INNER JOIN查询
INNER JOIN查询返回两个表中匹配的行。下面的代码片段展示了如何使用INNER JOIN查询从employee和job表中获取员工的姓名和职位名称:
SELECT e.first_name, e.last_name, j.job_title
FROM employee e
INNER JOIN job j ON e.job_id = j.job_id;
2. LEFT JOIN查询
LEFT JOIN查询返回左边表中的所有行,以及右边表中匹配的行。下面的代码片段展示了如何使用LEFT JOIN查询从employee表和department表中获取员工的姓名和所在部门的名称:
SELECT e.first_name, e.last_name, d.department_name
FROM employee e
LEFT JOIN department d ON e.department_id = d.department_id;
3. RIGHT JOIN查询
RIGHT JOIN查询返回右边表中的所有行,以及左边表中匹配的行。下面的代码片段展示了如何使用RIGHT JOIN查询从employee表和job_history表中获取员工的姓名和过去的职位:
SELECT e.first_name, e.last_name, jh.job_id
FROM employee e
RIGHT JOIN job_history jh ON e.employee_id = jh.employee_id;
4. FULL OUTER JOIN查询
FULL OUTER JOIN查询返回匹配的行以及左边表和右边表中的所有行。下面的代码片段展示了如何使用FULL OUTER JOIN查询从employee表和job_history表中获取所有员工的姓名和过去的职位:
SELECT e.first_name, e.last_name, jh.job_id
FROM employee e
FULL OUTER JOIN job_history jh ON e.employee_id = jh.employee_id;
七、使用聚合函数
SQL中的聚合函数可以对一列或行的数据执行计算,并返回单个值。
1. COUNT函数
COUNT函数返回匹配条件的记录总数。下面的代码片段展示了如何获取employee表中的员工数量:
SELECT COUNT(*)
FROM employee;
2. SUM函数
SUM函数将匹配条件的数值列求和,并返回结果。下面的代码片段展示了如何获取employee表中所有员工的总薪水:
SELECT SUM(salary)
FROM employee;
3. AVG函数
AVG函数将匹配条件的数值列求平均数,并返回结果。下面的代码片段展示了如何获取employee表中所有员工的平均薪水:
SELECT AVG(salary)
FROM employee;
4. MAX函数
MAX函数将匹配条件的数值列求最大值,并返回结果。下面的代码片段展示了如何获取employee表中所有员工的最高薪水:
SELECT MAX(salary)
FROM employee;
5. MIN函数
MIN函数将匹配条件的数值列求最小值,并返回结果。下面的代码片段展示了如何获取employee表中所有员工的最低薪水:
SELECT MIN(salary)
FROM employee;