5154

Good Luck To You!

常用sql查询实例

SELECT * FROM table_name WHERE condition;

常用SQL查询实例

在数据库管理和数据分析中,SQL(结构化查询语言)是最常用和最重要的工具之一,它允许用户执行各种操作,如数据查询、插入、更新和删除,以下是一些常用的SQL查询实例,涵盖了从基础到高级的多种应用场景。

一、基础查询

查询所有列和记录

SELECT * FROM table_name;

这个查询会返回指定表中的所有列和所有记录。

id name age
1 Alice 30
2 Bob 25

查询特定列

SELECT column1, column2 FROM table_name;

此查询只返回指定的列。

id name
1 Alice
2 Bob

使用条件查询

3.1 简单条件

SELECT * FROM table_name WHERE condition;

查询年龄大于25的记录:

id name age
1 Alice 30

3.2 多条件(与条件)

SELECT * FROM table_name WHERE condition1 AND condition2;

查询年龄大于20且小于40的记录:

id name age
1 Alice 30
2 Bob 25

3.3 多条件(或条件)

SELECT * FROM table_name WHERE condition1 OR condition2;

查询年龄小于20或大于30的记录:

常用sql查询实例

id name age
2 Bob 25
1 Alice 30

二、排序和分组

按某列排序

SELECT * FROM table_name ORDER BY column_name;

升序排列:

id name age
2 Bob 25
1 Alice 30

降序排列:

SELECT * FROM table_name ORDER BY column_name DESC;
id name age
1 Alice 30
2 Bob 25

分组查询

2.1 基本分组

SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;

按名字分组并统计每个名字出现的次数:

name count
Alice 1
Bob 1

2.2 分组后排序

SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name ORDER BY count DESC;
name count
Alice 1
Bob 1

三、连接查询

内连接(INNER JOIN)

SELECT a.column1, b.column2 FROM table1 a INNER JOIN table2 b ON a.common_field = b.common_field;

有两个表employeesdepartments,通过department_id 进行连接:

常用sql查询实例

employee_id name department_id department_name
1 Alice 1 HR
2 Bob 2 Engineering

左连接(LEFT JOIN)

SELECT a.column1, b.column2 FROM table1 a LEFT JOIN table2 b ON a.common_field = b.common_field;

查询所有员工及其部门信息,即使某些员工没有对应的部门信息:

employee_id name department_id department_name
1 Alice 1 HR
3 Carol NULL NULL

右连接(RIGHT JOIN)

SELECT a.column1, b.column2 FROM table1 a RIGHT JOIN table2 b ON a.common_field = b.common_field;

查询所有部门及其员工信息,即使某些部门没有对应的员工信息:

employee_id name department_id department_name
1 Alice 1 HR
NULL NULL 2 Engineering

四、聚合函数

求和(SUM)

SELECT SUM(column_name) FROM table_name;

计算所有员工的年龄总和:

sum_age
55

平均值(AVG)

SELECT AVG(column_name) FROM table_name;

计算所有员工的平均年龄:

avg_age
27.5

最大值(MAX)和最小值(MIN)

SELECT MAX(column_name) FROM table_name;
SELECT MIN(column_name) FROM table_name;

查询年龄最大和最小的员工:

max_age min_age
30 25

五、子查询

单行子查询

SELECT column1 FROM table1 WHERE column2 = (SELECT column2 FROM table2);

查询与table2 中第一个员工相同部门的所有员工:

常用sql查询实例

name department_id
Alice 1

多行子查询(IN)

SELECT * FROM table1 WHERE column1 IN (SELECT column1 FROM table2);

查询在table2 中出现的所有员工:

id name department_id
1 Alice 1

六、问题与解答栏目

问题1:什么是内连接(INNER JOIN)?它与左连接(LEFT JOIN)有什么区别?

解答:内连接(INNER JOIN)返回两个表中满足连接条件的记录,只有当两个表中的记录都满足连接条件时,才会出现在结果集中,而左连接(LEFT JOIN)返回左表中的所有记录,以及右表中满足连接条件的记录,如果右表中没有满足连接条件的记录,结果集中对应的右表字段将为NULL,内连接是取交集,左连接是以左表为基础取并集。

问题2:如何计算一个表中某一列的最大值和最小值之间的差值?

解答:可以使用以下SQL语句来计算差值:SELECT (MAX(column_name) MIN(column_name)) AS difference FROM table_name;,这个查询首先分别计算出指定列的最大值和最小值,然后通过减法运算得到它们之间的差值,并将结果命名为difference

发表评论:

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

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

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.