SQL基础入门—— 简单查询与条件筛选
在SQL中,查询是从数据库中获取数据的核心操作,而条件筛选是查询中不可或缺的一部分。通过使用条件筛选,我们可以精准地从大量数据中提取我们需要的信息。本节将详细讲解如何使用SQL进行简单查询与条件筛选,包含常见的条件运算符和函数。
1. 使用WHERE进行条件筛选
WHERE
子句是SQL查询中用于指定条件的关键部分。它用于限制查询结果集,仅返回满足特定条件的行。条件可以基于列的值、计算结果或多种比较运算符。
1.1 基本条件筛选
SELECT * FROM employees
WHERE salary > 50000;
这个查询将返回所有薪水大于50,000的员工记录。
1.2 多条件筛选(AND,OR)
- AND:多个条件同时满足时才会返回结果。
- OR:至少满足一个条件即可返回结果。
SELECT * FROM employees
WHERE salary > 50000 AND department = 'Engineering';
这个查询返回薪水大于50,000并且属于"Engineering"部门的员工。
SELECT * FROM employees
WHERE department = 'Engineering' OR department = 'Sales';
这个查询返回所有属于"Engineering"或"Sales"部门的员工。
1.3 排除特定值(NOT)
使用NOT
关键字排除某些值。
SELECT * FROM employees
WHERE NOT department = 'HR';
这个查询返回所有部门不是"HR"的员工。
1.4 条件筛选中使用NULL值
在SQL中,NULL
表示缺失或未知的值。要筛选包含NULL
或不包含NULL
的记录,可以使用IS NULL
或IS NOT NULL
。
SELECT * FROM employees
WHERE salary IS NULL;
这个查询返回薪水为空的员工记录。
SELECT * FROM employees
WHERE salary IS NOT NULL;
这个查询返回所有薪水不为空的员工记录。
2. 使用LIKE, IN, BETWEEN等操作符
SQL提供了多个操作符来进行更加复杂和灵活的条件筛选。
2.1 LIKE 操作符
LIKE
用于进行模糊匹配,支持通配符。常见的通配符有:
%
:匹配零个或多个字符。_
:匹配单个字符。
SELECT * FROM employees
WHERE name LIKE 'John%';
这个查询返回所有名字以"John"开头的员工。
SELECT * FROM employees
WHERE name LIKE '_o%';
这个查询返回所有名字以"son"结尾的员工。
SELECT * FROM employees
WHERE name LIKE '_o%';
这个查询返回所有名字的第二个字符是"o"的员工。
2.2 IN 操作符
IN
用于检查一个列的值是否存在于指定的多个值中,它可以简化多个OR
条件的查询。
SELECT * FROM employees
WHERE department IN ('Engineering', 'Sales', 'Marketing');
这个查询返回所有属于"Engineering"、"Sales"或"Marketing"部门的员工。
2.3 BETWEEN 操作符
BETWEEN
用于选择范围内的值(包括边界值),适用于数字、日期和时间类型。
SELECT * FROM employees
WHERE salary BETWEEN 40000 AND 60000;
这个查询返回薪水在40,000到60,000之间的员工。
SELECT * FROM employees
WHERE hire_date BETWEEN '2023-01-01' AND '2023-12-31';
这个查询返回在2023年1月1日到12月31日之间入职的员工。
2.4 NOT 操作符
NOT
可以与其他操作符配合使用,排除符合条件的记录。
SELECT * FROM employees
WHERE department NOT IN ('HR', 'Finance');
这个查询返回所有不在"HR"和"Finance"部门的员工。
SELECT * FROM employees
WHERE salary NOT BETWEEN 50000 AND 70000;
这个查询返回薪水不在50,000到70,000之间的员工。
3. 基本的字符串操作与日期函数
SQL还提供了强大的字符串和日期操作功能,帮助开发者高效地处理和转换数据。
3.1 字符串操作
- CONCAT:将多个字符串连接在一起。
SELECT CONCAT(first_name, ' ', last_name) AS full_name FROM employees;
这个查询返回员工的全名。
- SUBSTRING:提取字符串的子串。
SELECT SUBSTRING(first_name, 1, 3) FROM employees;
这个查询返回员工名字的前3个字符。
- TRIM:去掉字符串两端的空格。
SELECT TRIM(name) FROM employees;
这个查询返回去除前后空格的员工名字。
- LENGTH:返回字符串的长度。
SELECT LENGTH(first_name) FROM employees;
这个查询返回员工名字的字符数。
- REPLACE:替换字符串中的部分内容。
SELECT REPLACE(email, 'example.com', 'newdomain.com') FROM employees;
这个查询将员工邮箱中的"example.com"替换为"newdomain.com"。
3.2 日期函数
- CURDATE:返回当前日期。
SELECT CURDATE();
这个查询返回当前日期。
- NOW:返回当前的日期和时间。
SELECT NOW();
这个查询返回当前的日期和时间。
- DATE_FORMAT:格式化日期。
SELECT DATE_FORMAT(hire_date, '%Y-%m-%d') FROM employees;
这个查询将员工的入职日期格式化为"年-月-日"的形式。
- DATEDIFF:计算两个日期之间的差值,返回天数。
SELECT DATEDIFF(NOW(), hire_date) AS days_since_hired FROM employees;
SELECT DATEDIFF(NOW(), hire_date) AS days_since_hired FROM employees;
这个查询返回员工入职至今的天数。
- DATE_ADD 和 DATE_SUB:在日期上增加或减少指定的时间。
SELECT DATE_ADD(hire_date, INTERVAL 1 YEAR) FROM employees;
这个查询返回员工入职日期之后1年的日期。
SELECT DATE_SUB(hire_date, INTERVAL 6 MONTH) FROM employees;
这个查询返回员工入职日期之前6个月的日期。
总结
SQL提供了多种强大的工具和操作符,用于执行简单查询和进行条件筛选。通过WHERE
子句,开发者可以精确地控制查询的结果集,利用LIKE
、IN
、BETWEEN
等操作符进行灵活的筛选,提升查询的效率和可读性。同时,SQL还提供了丰富的字符串和日期函数,使得开发者可以高效地操作和转换数据。掌握这些基本的查询技巧是开发者在实际工作中快速获取数据的基础。