三、SQL数据操纵语言(增删改查)
1.insert 语句(增)
INSERT INTO 表名 (列1, 列2, 列3)
VALUES (值1, 值2, 值3);
2.Delete 语句(删)
//1.
DELETE FROM 表名
WHERE 条件;//2.
truncate table 表名; //更快,一次性删除整个表中的所有记录,无法选择性删除。不使用 WHERE
3.update 语句(改)
UPDATE 表名
SET 列1 = 新值1, 列2 = 新值2
WHERE 条件;
4.Select 语句(查)
SELECT 列1, 列2
FROM 表名
WHERE 条件;
//去重
select distinct 列名 from 表名;
//取别名
SELECT 原名 as 别名,[原名1 as 别名1] FROM 表名; SELECT COUNT(*) AS total_users FROM users;
Ⅰ. 在where子句中经常使用到的运算符
比较运算符 | > < <= >= = <> | 大于、小于、小于等于、大于等于、等于、不等于 |
between...and | 在某一区间的值 | |
IN() | 显示在In列中的值,例:in(100,200) | |
Like | 模糊查询 | |
is NULL | 判断是否为空 | |
逻辑运算符 | and | 多个条件同时成立 |
or | 任一条件成立 | |
not | 不成立,例:where not(num>100) |
模糊查找
通常使用
LIKE
关键字,并结合通配符。常用的通配符有:
- %:表示0个或多个字符。
_
:表示单个字符。
// 查找姓李的员工
SELECT *
FROM Employees
WHERE Name LIKE 'J%';// 查找名字含有ohn员工
SELECT *
FROM Employees
WHERE Name LIKE '_ohn';
Ⅱ.对查询结果进行计算、分组、排序
1.计算
//1.count
select count(*) from 表名;
select count(列名) from 表名 where 表达式;//2.sum
select sum(列名) from 表名 [where 表达式];//3.avg
select avg(列名) from 表名 [where 表达式];//4.min、max
select min(列名) from 表名 [where 表达式];
select max(列名) from 表名 [where 表达式];
2.分组
//根据 age 列对 users 表中的记录按降序排列SELECT age
FROM users
ORDER BY age DESC;
3.排序
//按 department 列分组,并计算每个部门的员工数量SELECT department, COUNT(*)
FROM employees
GROUP BY department;
having:与where都可以实现过滤,但是having可以使用合计函数,通常跟在group by后面
//将返回员工数量超过 10 的部门,并按员工数降序排列SELECT department, COUNT(*) AS number_of_employees
FROM employees
GROUP BY department
HAVING COUNT(*) > 10
ORDER BY number_of_employees DESC;
Ⅲ.单表查询
//1. 基本的 SELECT 查询SELECT * FROM 表名;//2. 选择特定列SELECT first_name, last_name FROM 表名;//3. 使用 WHERE 子句进行条件过滤SELECT * FROM 表名 WHERE 条件语句;//4. 使用 ORDER BY 排序结果SELECT * FROM 表名 ORDER BY 列名 DESC;//5. 使用 LIMIT 控制返回结果的行数 (返回前10行)SELECT * FROM 表名 LIMIT 10;//6. 使用 LIKE 进行模糊查询SELECT * FROM 表名 WHERE first_name LIKE 'A%';//7. 使用 DISTINCT 去重SELECT DISTINCT 列名 FROM 表名;
Ⅳ.连接查询
//1. 内连接(INNER JOIN)假设有两个表:users 和 orders。users 表包含用户信息,orders 表包含用户的订单信息
SELECT u.first_name, u.last_name, o.order_id
FROM users u
INNER JOIN orders o ON u.user_id = o.user_id;//2. 连接多个表SELECT u.first_name, u.last_name, o.order_id, p.product_name
FROM users u
INNER JOIN orders o ON u.user_id = o.user_id
INNER JOIN products p ON o.product_id = p.product_id;