一、基本查询语句
1、SELECT语句:用于从数据库中选择数据,其基本语法为SELECT column1, column2, ... FROM table_name;
,其中column1, column2, ...
是要查询的列名,table_name
是要查询的表名,要查询employees
表中的所有记录,可以使用SELECT * FROM employees;
。
2、DISTINCT关键字:用于去除查询结果中的重复行,要查询employees
表中所有不重复的部门编号,可以使用SELECT DISTINCT department_id FROM employees;
。
3、TOP关键字:用于限制查询结果返回的行数,要查询employees
表中的前5条记录,可以使用SELECT TOP 5 * FROM employees;
。
二、条件查询语句
1、WHERE子句:用于指定查询条件,常见的条件查询操作符包括=
(等于)、<>
(不等于)、>
(大于)、<
(小于)、>=
(大于等于)、<=
(小于等于)等,要查询employees
表中工资大于5000的员工,可以使用SELECT * FROM employees WHERE salary > 5000;
。
2、逻辑运算符:在WHERE子句中可以使用逻辑运算符来组合多个条件,常见的逻辑运算符包括AND
(与)、OR
(或)、NOT
(非),要查询employees
表中工资大于5000且职位为“经理”的员工,可以使用SELECT * FROM employees WHERE salary > 5000 AND position = 'Manager';
。
3、LIKE运算符:用于进行模糊查询,通配符%
表示任意长度的字符串,_
表示单个字符,要查询employees
表中名字以“J”开头的员工,可以使用SELECT * FROM employees WHERE name LIKE 'J%';
。
4、BETWEEN...AND...运算符:用于查询某个列的值是否在指定的范围内,要查询employees
表中入职日期在2020年1月1日到2020年12月31日之间的员工,可以使用SELECT * FROM employees WHERE hire_date BETWEEN '20200101' AND '20201231';
。
5、IN运算符:用于查询某个列的值是否在指定的集合中,要查询employees
表中职位为“经理”、“主管”或“工程师”的员工,可以使用SELECT * FROM employees WHERE position IN ('Manager', 'Supervisor', 'Engineer');
。
三、排序和分组查询语句
1、ORDER BY子句:用于对查询结果进行排序,可以按照升序(ASC)或降序(DESC)进行排序,要查询employees
表并按照工资升序排序,可以使用SELECT * FROM employees ORDER BY salary ASC;
。
2、GROUP BY子句:用于对查询结果进行分组,通常与聚合函数一起使用,要查询employees
表中每个部门的平均工资,可以使用SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id;
。
3、HAVING子句:用于对分组后的结果进行过滤,要查询employees
表中平均工资大于6000的部门,可以使用SELECT department_id, AVG(salary) AS avg_salary FROM employees GROUP BY department_id HAVING AVG(salary) > 6000;
。
四、连接查询语句
1、内连接(INNER JOIN):用于查询两个表中满足连接条件的记录,要查询employees
表和departments
表中部门名称为“销售”的员工信息,可以使用SELECT e.*, d.* FROM employees e INNER JOIN departments d ON e.department_id = d.department_id WHERE d.department_name = 'Sales';
。
2、外连接(LEFT JOIN或RIGHT JOIN):用于查询两个表中一个表中的所有记录和另一个表中满足连接条件的记录,要查询employees
表和departments
表中所有的员工信息以及对应的部门信息(如果部门不存在则显示为NULL),可以使用SELECT e.*, d.* FROM employees e LEFT JOIN departments d ON e.department_id = d.department_id;
。
五、示例表格及查询语句
假设有两个表,students
表和scores
表,结构如下:
students | scores |
student_id | student_id |
student_name | score |
age | course |
gender | grade |
以下是一些常见的查询语句:
1、查询所有学生的信息:SELECT * FROM students;
2、查询学生的年龄大于20的学生信息:SELECT * FROM students WHERE age > 20;
3、查询成绩大于80分的学生信息及其对应的课程和成绩:SELECT s.student_id, s.student_name, sc.course, sc.score FROM students s INNER JOIN scores sc ON s.student_id = sc.student_id WHERE sc.score > 80;
4、查询所有学生的成绩,如果没有成绩则显示为NULL:SELECT s.student_id, s.student_name, sc.score FROM students s LEFT JOIN scores sc ON s.student_id = sc.student_id;
六、相关问题与解答
1、问题:如何使用SQL Server 2012查询语句查询某个表中某一列的最大值?
解答:可以使用聚合函数MAX()
来实现,要查询employees
表中工资的最大值,可以使用SELECT MAX(salary) AS max_salary FROM employees;
。
2、问题:如何通过SQL Server 2012查询语句更新表中的数据?
解答:可以使用UPDATE
语句来更新表中的数据,要将employees
表中员工编号为1的工资更新为6000,可以使用UPDATE employees SET salary = 6000 WHERE employee_id = 1;
。