5154

Good Luck To You!

如何编写查询数据的SQL语句?

SELECT * FROM table_name WHERE condition;

查询数据的 SQL 语句

SQL(Structured Query Language)是一种用于访问和操作关系数据库的标准语言,在数据查询方面,SQL 提供了强大的功能来获取、过滤、排序和汇总数据,以下是一些常见的查询数据 SQL 语句及其示例:

一、基本查询

选择特定列

语法:SELECT column1, column2, ... FROM table_name;

示例:从名为employees 的表中选择员工编号和姓名。

SQL 语句 说明
SELECT employee_id, first_name FROM employees; 查询employees 表中的employee_idfirst_name 列,获取员工的编号和名字信息。

选择所有列

语法:SELECT * FROM table_name;

示例:查询products 表的所有列数据。

SQL 语句 说明
SELECT * FROM products; 获取products 表中所有列的数据,包括产品的各种属性如产品 ID、名称、价格等。

使用别名

语法:SELECT column1 AS alias1, column2 AS alias2, ... FROM table_name;

示例:对students 表中的姓名和年龄列进行查询并设置别名。

SQL 语句 说明
SELECT first_name AS Name, age AS Age FROM students; 将查询结果中的first_name 列显示为Nameage 列显示为Age,使结果更具可读性。

二、条件查询

简单条件查询

语法:SELECT column1, column2, ... FROM table_name WHERE condition;

示例:查询工资大于 5000 的员工信息。

SQL 语句 说明
SELECT employee_id, first_name, salary FROM employees WHERE salary > 5000; 筛选出salary(工资)大于 5000 的员工的编号、姓名和工资信息。

多条件查询 AND

语法:SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2;

示例:查询部门为“Sales”且工资在 4000 到 6000 之间的员工。

SQL 语句 说明
SELECT employee_id, first_name, department FROM employees WHERE department = 'Sales' AND salary BETWEEN 4000 AND 6000; 找出既属于“Sales”部门,工资又在 4000 到 6000 区间内的员工相关信息。

多条件查询 OR

语法:SELECT column1, column2, ... FROM table_name WHERE condition1 OR condition2;

示例:查询职位是“Manager”或“Engineer”的员工。

SQL 语句 说明
SELECT employee_id, first_name, position FROM employees WHERE position = 'Manager' OR position = 'Engineer'; 获取职位为“Manager”或者“Engineer”的员工的编号、姓名和职位信息。

模糊查询

a. LIKE 运算符 百分号(%)通配符

如何编写查询数据的SQL语句?

语法:SELECT column1, column2, ... FROM table_name WHERE column LIKE '%pattern%';

示例:查询姓氏以“张”开头的员工。

SQL 语句 说明
SELECT employee_id, first_name FROM employees WHERE first_name LIKE '张%'; 查找first_name(姓名)以“张”开头的员工编号和姓名,%表示任意数量的字符。

b. LIKE 运算符 下划线(_)通配符

语法:SELECT column1, column2, ... FROM table_name WHERE column LIKE 'pattern_';

示例:查询邮箱地址第三个字符为“n”的员工。

SQL 语句 说明
SELECT employee_id, email FROM employees WHERE email LIKE '__n%'; 找到邮箱地址中第三个字符是“n”的员工编号和邮箱,__表示两个任意字符,%表示后续任意数量字符。

三、排序查询

语法:SELECT column1, column2, ... FROM table_name ORDER BY column1 ASC/DESC, column2 ASC/DESC;

示例:按照工资升序查询员工信息,若工资相同则按姓名降序排列。

SQL 语句 说明
SELECT employee_id, first_name, salary FROM employees ORDER BY salary ASC, first_name DESC; 根据salary(工资)升序排序员工记录,当工资相同时,再按照first_name(姓名)降序排序。

四、聚合函数查询

COUNT() 函数

语法:SELECT COUNT(*) FROM table_name;SELECT COUNT(column_name) FROM table_name;

示例:查询员工表中的总人数。

SQL 语句 说明
SELECT COUNT(*) FROM employees; 统计employees 表中的行数,即员工总人数,如果只想统计有工资记录的员工人数,可以使用SELECT COUNT(salary) FROM employees;

SUM() 函数

语法:SELECT SUM(column_name) FROM table_name;

如何编写查询数据的SQL语句?

示例:计算订单表中所有订单的总金额。

SQL 语句 说明
SELECT SUM(total_amount) FROM orders;orders 表中的total_amount(订单总金额)列求和,得到所有订单的总金额。

AVG() 函数

语法:SELECT AVG(column_name) FROM table_name;

示例:计算员工的平均年龄。

SQL 语句 说明
SELECT AVG(age) FROM employees; 求出employees 表中员工年龄的平均值。

4. MAX() 函数和 MIN() 函数

语法:SELECT MAX(column_name) FROM table_name;SELECT MIN(column_name) FROM table_name;

示例:查询产品的最高价格和最低价格。

SQL 语句 说明
SELECT MAX(price) AS MaxPrice, MIN(price) AS MinPrice FROM products; 分别获取products 表中产品价格的最高值和最低值,并设置别名为MaxPriceMinPrice

五、分组查询

语法:SELECT column1, column2, ..., aggregate_function(column_name) FROM table_name GROUP BY column1, column2, ...;

示例:按照部门分组统计每个部门的员工人数。

SQL 语句 说明
SELECT department, COUNT(*) AS NumberOfEmployees FROM employees GROUP BY department; 根据department(部门)列对employees 表进行分组,然后统计每个组(部门)的员工数量,并将统计结果命名为NumberOfEmployees

六、连接查询

内连接(INNER JOIN)

语法:SELECT columns FROM table1 INNER JOIN table2 ON table1.common_column = table2.common_column;

示例:查询员工及其对应的部门名称。

如何编写查询数据的SQL语句?

SQL 语句 说明
SELECT employees.first_name, departments.department_name FROM employees INNER JOIN departments ON employees.department_id = departments.department_id; 通过employees 表中的department_iddepartments 表中的department_id 进行连接,获取员工的名字以及他们所在的部门名称。

左连接(LEFT JOIN)

语法:SELECT columns FROM table1 LEFT JOIN table2 ON table1.common_column = table2.common_column;

示例:查询所有员工及他们所在的部门(如果有),即使员工没有分配部门也能显示出来。

SQL 语句 说明
SELECT employees.first_name, departments.department_name FROM employees LEFT JOIN departments ON employees.department_id = departments.department_id; 如果员工已经分配部门,则显示员工名字和部门名称;如果没有分配部门,部门名称将显示为空值(NULL),但员工名字仍会显示。

右连接(RIGHT JOIN)

语法:SELECT columns FROM table1 RIGHT JOIN table2 ON table1.common_column = table2.common_column;

示例:查询所有部门及部门中的员工(如果有),即使部门没有员工也能显示出来。

SQL 语句 说明
SELECT employees.first_name, departments.department_name FROM employees RIGHT JOIN departments ON employees.department_id = departments.department_id; 如果部门中有员工,则显示员工名字和部门名称;如果部门没有员工,员工名字将显示为空值(NULL),但部门名称仍会显示。

七、子查询

单行子查询作为条件

语法:SELECT column1, column2, ... FROM table_name WHERE column = (SELECT column FROM sub_table WHERE condition);

示例:查询工资高于公司平均工资的员工。

SQL 语句 说明
SELECT employee_id, first_name, salary FROM employees WHERE salary > (SELECT AVG(salary) FROM employees); 首先通过子查询(SELECT AVG(salary) FROM employees)计算出公司的平均工资,然后主查询筛选出工资高于这个平均值的员工信息。

多行子查询作为结果集

语法:SELECT (SELECT column1 FROM table1 WHERE condition1) AS column1, (SELECT column2 FROM table2 WHERE condition2) AS column2, ...;

示例:查询每个部门的最高工资和该部门的平均工资。

SQL 语句 说明
SELECT departments.department_name, (SELECT MAX(salary) FROM employees e1 WHERE e1.department_id = departments.department_id) AS MaxSalary, (SELECT AVG(salary) FROM employees e2 WHERE e2.department_id = departments.department_id) AS AvgSalary FROM departments; 对于每个部门,通过两个子查询分别获取该部门的最高工资和平均工资,并与部门名称一起显示。e1e2是对employees 表的别名引用,用于区分不同的子查询操作范围。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年6月    »
1
2345678
9101112131415
16171819202122
23242526272829
30
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.