美文网首页
数据库笔记-SQL查询&过滤

数据库笔记-SQL查询&过滤

作者: adi0229 | 来源:发表于2020-01-23 15:43 被阅读0次

基础查询

以极客时间专栏《SQL必知必会》的王者荣耀表格为例。

SELECT语句

检索单个列

查询语句:

SELECT name
FROM heros

结果:

检索多个列

查询语句:

SELECT name, hp_max 
FROM heros

检索多个列

查询语句:

image.png

检索所有列

查询语句:

SELECT *
FROM heros

注:生产条件下,不推荐查询所有列名,最好列出所需列名,减轻数据库的负荷,提升性能。

检索不同的行

去重

查询语句:

SELECT DISTINCT role_main
FROM heros

限制结果

查询语句:

SELECT NAME,hp_max FROM heros LIMIT 5

查询语句:

SELECT NAME,hp_max FROM heros
LIMIT 5,6

查询排序

ORDER语句

按照一列排序

查询语句:

SELECT NAME,hp_max,hp_growth FROM heros
ORDER BY hp_growth
LIMIT 5

结果:


按照多列排序

查询语句:

SELECT NAME,hp_max,hp_growth,hp_start FROM heros
ORDER BY hp_start,hp_max
LIMIT 5

指定排序方向

查询语句:

SELECT NAME,hp_max,hp_growth,hp_start FROM heros
ORDER BY hp_max DESC
LIMIT 5

结果:


查询语句:

SELECT name ,hp_max,hp_growth,hp_start FROM heros
ORDER BY hp_max DESC, hp_growth 
LIMIT 5

结果:


查询过滤

WHERE语句

操作符 说明
= 等于
< 小于
> 大于
<> != 不等于
<= !> 小于等于
>= !< 大于等于
BETWEEN 在两个值之间
IS NULL 为 NULL 值

检查单个值

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start
FROM heros
WHERE hp_max > 8000
ORDER BY hp_max DESC 
LIMIT 5

结果:


匹配检查

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start
FROM heros
WHERE role_main = '战士'
ORDER BY hp_max DESC 
LIMIT 5

结果:


不匹配检查

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start
FROM heros
WHERE role_main <> '坦克'
ORDER BY hp_max DESC 
LIMIT 5

结果:


范围值检查

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start
FROM heros
WHERE hp_max BETWEEN 7500 AND 8000
ORDER BY hp_max DESC 

结果:


空值检查

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE role_assist IS NULL
ORDER BY hp_max DESC 
LIMIT 5

结果:


组合WHERE子句

AND 操作符

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE role_assist IS NULL AND hp_growth >380
ORDER BY hp_max DESC 

OR操作符

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE role_main = '射手' OR role_main = '法师'
ORDER BY hp_max DESC 
LIMIT 10

结果:


IN操作符

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE role_main IN ('射手','法师','刺客')
ORDER BY hp_max DESC 
LIMIT 10

结果:


NOT操作符

查询语句:

SELECT name ,role_main, hp_max,hp_growth,hp_start,role_assist
FROM heros
WHERE role_main NOT IN ('射手','法师','刺客')
ORDER BY hp_max DESC 
LIMIT 10

结果:


计算次序

SELECT的执行顺序:

SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...

优先级:

FROM > WHERE > GROUP BY > HAVING > SELECT 的字段 > DISTINCT > ORDER BY > LIMIT

示例:

SELECT DISTINCT player_id, player_name, count(*) as num # 顺序 5
FROM player JOIN team ON player.team_id = team.team_id # 顺序 1
WHERE height > 1.80 # 顺序 2
GROUP BY player.team_id # 顺序 3
HAVING num > 2 # 顺序 4
ORDER BY num DESC # 顺序 6
LIMIT 2 # 顺序 7

Ref:

  • 《MySQL必知必会》(Ben Forts)
  • 极客时间《SQL必知必会》

相关文章

  • 数据库笔记-SQL查询&过滤

    基础查询 查询排序 查询过滤 基础查询 以极客时间专栏《SQL必知必会》的王者荣耀表格为例。 SELECT语句 检...

  • sql注入思路及过程(笔记)

    access数据库: Sql注入原理分析: 网站程序存在可控传递参数,参数未进行过滤直接带入数据库查询,导致攻击者...

  • SQL 学习笔记

    《SQL 基础教程》学习笔记 01 - 数据库和 SQL 02 - 表的创建、删除和更新 03 - 查询基础 04...

  • 子查询和组合查询

    子查询 SELECT 语句是 SQL 的查询。 假如要从多个表中过滤数据,SQL 还允许创建子查询(subquer...

  • oracle学习笔记二——查询之过滤和排序

    二、过滤和排序 1.过滤:where (1)等值查询: --查询10号部门的员工 SQL>select * fro...

  • Mysql高性能-是什么影响了数据库

    Mysql高性能笔记 影响数据库的因素 sql查询速度 服务器硬件 网卡流量 磁盘IO 超高的QPS(每秒查询速度...

  • Swift-NSPredicate学习整理

    Cocoa框架中的NSPredicate用于查询,原理和用法都类似于SQL中的where,作用相当于数据库的过滤取...

  • MySql的基础用法

    概念 SQL:对数据库进行查询和修改的语言叫做SQL,SQL的含义结构化查询语言

  • sql

    sql-基础sql-基础查询-1sql-基础查询-2sql-更新 概览 数据库(Database,DB):将大量数...

  • 第九章 SQL查询数据库(二)

    第九章 SQL查询数据库(二) 调用用户定义函数的查询 InterSystems SQL允许您在SQL查询中调用类...

网友评论

      本文标题:数据库笔记-SQL查询&过滤

      本文链接:https://www.haomeiwen.com/subject/yhenzctx.html