数据库day02 简单查询

关键字:SELECT

1. 计算表达式和函数的值

虽然 SELECT 语句通常用于从表中检索数据,但我们也可以用它计算表达式和函数的值。

2. 查询表中的字段

查询单个字段的值,用法:SELECT field_name FROM table_name
查询多个字段的值,多个字段之间用 , 分隔。用法:SELECT field_name1,field_name2 from table_name
还可以用 * 代指所有字段。用法:SELECT * FROM table_name
注意:在生产环境中,尽量不要使用 * 通配符。因为查询不必要的数据会降低查询和应用程序的效率!

3. 使用 WHERE 子句过滤记录

WHERE 子句后面接逻辑表达式。如果逻辑表达式的结果为真,这条记录就会添加到结果集中,否则就不会添加到结果集。

4. 给字段起别名

AS 可以给字段起别名。 用法:SELECT field_name AS another_name FROM table_name

注意:① AS 关键字可以省略,但是不推荐这样做。② AS 关键字不仅仅可以给字段起别名,还可以给表起别名。

5. 去除重复行

DISTINCT 可以对查询结果去重。用法:SELECT DISTINCT field_name FROM table_name

注意:① DISTINCT 是对所有查询字段的组合进行去重,也就是说每个字段都相同,才认为两条记录是相同的。② DISTINCT 关键字必须放在所有查询字段的前面。

6. 排序

ORDER BY 可以对结果集进行排序。 ASC 表示升序, DESC 表示降序,默认情况为升序。

SELECT field_name FROM table_name ORDER BY field_name ;                #升序
SELECT field_name FROM table_name ORDER BY field_name ASC ;           #升序
SELECT field_name FROM table_name ORDER BY field_name DESC ;         #降序

还可以对多个字段进行排序。即先按照第一个字段排序,当第一个字段相同时,再按照第二个字段排序,依此类推。

SELECT field_name1, field_name2 FROM table_name ORDER BY field_name1, field_name2 ; 

ORDER BY 可以对非选择字段进行排序,也就是说排序的字段不一定要在结果集中。
甚至,我们还可以对计算字段进行排序。

7. 限制结果集的数量

LIMIT 可以限制结果集的数量。它有两种使用方式: LIMIT offset, nums 和 LIMIT nums OFFSET offset 。
当 OFFSET 为 0 的时候,我们可以将其省略。
使用 LIMIT 可以很方便地实现分页查询
LIMIT rows OFFSET (page-1)*rows;

注意:不同的 DBMS用来限制结果集的关键字是不一样的。比如,Microsoft SQL Server 和Access 使用的是 TOP 关键字。

8. 计算字段

计算字段并不实际存在于数据库表中,它是由表中的其它字段计算而来的。一般我们会给计算字段起一个的别名。

9. 聚合函数

聚合函数是对某个字段的值进行统计的,而不是对某条记录进行统计。如果想计算某个学生各科成绩的总分,那么你应该使用计算字段。

聚合函数往往是搭配分组使用的。如果没有分组,那么聚合函数统计的是整个结果集的数据;如果分组了,那么聚合函数统计的是结果集中每个组的数据。

SQL 中一共有 5 个聚合函数。分别为 COUNT() , SUM() , AVG() , MAX() , MIN() 。

a. COUNT()

COUNT(*) 可以统计记录数。
SELECT COUNT(*) FROM table_name;
COUNT() 作用于某个具体的字段,可以统计这个字段的非 NULL 值的个数。
SELECT COUNT(field_name) FROM table_name;

b. SUM()

SUM() 用于统计某个字段非 NULL 值的和。
SELECT SUM(field_name) FROM table_name;

c. AVG()

AVG() 用于统计某个字段非 NULL 值的平均值。
SELECT AVG(field_name) FROM table_name;

d. MAX()

MAX() 用于统计某个字段非 NULL 值的最大值。
SELECT MAX(field_name) FROM table_name;

e. MIN()

MIN() 用于统计某个字段非 NULL 值的最小值。
SELECT MIN(field_name) FROM table_name;

f. DISTINCT

我们还可以对字段中不同的值进行统计。先用 DSITINCT 去重,再用聚合函数统计。
SELECT COUNT(DISTINCT field_name) FROM table_name;

10. 分组

GROUP BY 可以对记录进行分组。
a. 搭配聚合函数使用
SELECT COUNT(*) FROM table_name GROUP BY field_name;
b. GROUP_CONCAT
如果想知道每个分组的数据都有哪些,可以使用GROUP_CONCAT() 函数。
SELECT GROUP_CONCAT(field_name1), field_name2 FROM table_name GROUP BY field_name2;

c. 多字段分组
我们可以对多个字段进行分组。也就是说,每个字段的值都相同的记录为一组。
SELECT COUNT(*) AS num, field_name1, field_name2 FROM heros GROUP BY field_name1, field_name2 ORDER BY num DESC;
d. HAVING 过滤分组
HAVING 可以过滤分组。

WHERE 和 HAVING 的区别:WHERE 和 HAVING 都可以用来过滤数据,但是两者有着很明显的区别。WHERE 是分组前用来过滤记录的,HAVING 是分组后用来过滤分组的。

注意:虽然 DBMS 实现的时候 ,往往会对分组进行排序。但是如果没有明确的 ORDER BY 子句,我们就不应该假定结果集是有序的。

  1. SELECT 的顺序
    SELECT 是 RDBMS 中执行最多的操作。我们不仅仅要理解 SELECT 的语法,还要理解它底层执行的原理。
    有两个关于 SELECT 的顺序,我们需要记住。
    a. 语法中关键字的顺序
    SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ... LIMIT ...
    b. 语句的执行顺序
    不同的 RDBMS,它们 SELECT 语句的执行顺序基本是相同的。
    FROM --> WHERE --> GROUP BY --> HAVING --> SELECT --> DISTINCT --> ORDER BY -->LIMIT
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值