IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> SQL复习day1 -> 正文阅读

[大数据]SQL复习day1

SQL

条件查询

关键字

BETWEEN…AND…在某个范围
NOT BETWEEN…AND…不在某个范围
IN(…)在一个列表
NOT IN(…)不在一个列表

注意列表和范围得区别

注意 我们的SQL关键字如 SELECT、WHERE、AND、OR都是大写的,但SQL其实是兼容写成select、where小写的。***大写这些关键字***有助于我们把关键字和你的表名,列名区分开,让SQL更容易理解。

条件查询(pt.2)

如果属性是字符串,我们会用到一些字符串相关的操作符号,其中LIKE(模糊查询)和%(通配符)

操作符解释example
=完全相等col_name=“abc”
!=不等于col_name!=“abcd”
LIKE没有通配符等价于 =col_name LIKE ‘‘abc’’
NOT LIKE没有通配符等价于 !=col_name NOT LIKE “abcd”
%代表0个以上的字符“%AT%” 代表AT前后可以有任意字符
_和%相似,代表1个字符“AT_” 代表AT后可以有一个字符

注意

在字符串表达式中的字符串需要用引号 " 包含,如果不用引号,SQL会认为是一个属性列的名字,如:col_name = color 表示 col_name和color两个属性一样的行 col_name = “color” 表示 col_name 属性为字符串 "color"的行.

查询结果Filtering过滤和sorting排序

  • DISTINCT: 你可以用 DISTINCT 关键字来指定某个或某些属性列唯一返回,因为 DISTINCT 语法会直接删除重复的行。

  • GROUP BY:返回唯一得到行,不过可以对具有相同的属性值的行做一些统计计算。

  • ASC/DESC: ORDER BY column ASC/DESC 这句话的意思就是让结果按照 col_name 列的具体值做 ASC升序 或 DESC 降序。

通过limit选取部分结果

LIMITOFFSET 子句通常和ORDER BY 语句一起使用,当我们对整个结果集排序之后,我们可以 LIMIT来指定只返回多少行结果 ,用 OFFSET来指定从哪一行开始返回。你可以想象一下从一条长绳子剪下一小段的过程,我们通过 OFFSET 指定从哪里开始剪,用 LIMIT 指定剪下多少长度。(从哪里开始剪不包括那里)

列出按上映年份最新上线的4部电影 ;
SELECT * FROM movies ORDER BY year DESC LIMIT 4;

使用JOINS进行多表联合查询

数据库范式

数据库范式是数据表设计的规范,在范式规范下,数据库里每个表存储的重复数据降到最少(这有助于数据的一致性维护),同时在数据库范式下,表和表之间不再有很强的数据耦合,可以独立的增长 (ie. 比如汽车引擎的增长和汽车的增长是完全独立的). 范式带来了很多好处,但随着数据表的分离,意味着我们要查询多个数据属性时,需要更复杂的SQL语句,也就是本节开始介绍的多表连接技术。这样SQL的性能也会面临更多的挑战,特别是当大数据量的表很多的情况下.

如果一个实体(比如Dog)的属性数据被分散到多个数据表中,我们就需要学习如何通过 JOIN连表技术来整合这些数据并找到我们想要查询的数据项.

使用JOINS进行多表联合查询

  • 主键 一般关系数据表中,都会有一个属性列设置为 主键(primary key)。主键是唯一标识一条数据的,不会重复复(想象你的身份证号码)。一个最常见的主键就是auto-incrementing integer(自增ID,每写入一行数据ID+1, 当然字符串,hash值等只要是每条数据是唯一的也可以设为主键. 借助主键(primary key)(当然其他唯一性的属性也可以),我们可以把两个表中具有相同 主键ID的数据连接起来(因为一个ID可以简要的识别一条数据,所以连接之后还是表达的同一条数据)(你可以想象一个左右连线游戏)。具体我们用到 JOIN 关键字。我们先来学习 INNER JOIN.

  • INNER JOIN

    SELECT column, another_table_column, …
    FROM mytable (主表)
    **  INNER JOIN another_table (要连接的表)
        ON mytable.id = another_table.id (想象一下刚才讲的主键连接,两个相同的连成1条) **
    WHERE condition(s)
    ORDER BY column, … ASC/DESC
    LIMIT num_limit OFFSET num_offset;
    

    通过ON条件描述的关联关系;INNER JOIN 先将两个表数据连接到一起. 两个表中如果通过ID互相找不到的数据将会舍弃。此时,你可以将连表后的数据看作两个表的合并,SQL中的其他语句会在这个合并基础上 继续执行(想一下和之前的单表操作就一样了).
    还有一个理解INNER JOIN的方式,就是把 INNER JOIN 想成两个集合的交集。(丢弃的数据如,A表中存在ID为98的数据,而B表中不存在ID为98的数据,则INNER JOIN会将ID为98的数据丢弃)
    在这里插入图片描述

  • 外连接(OUTER JOINS):

INNER JOIN 只会保留两个表都存在的数据(还记得之前的交集吗),这看起来意味着一些数据的丢失,在某些场景下会有问题.真实世界中两个表存在差异很正常,所以我们需要更多的连表方式,也就是本节要介绍的左连接LEFT JOIN,右连接RIGHT JOIN 和 全连接FULL JOIN. 这几个 连接方式都会保留不能匹配的行。

原理:在表A 连接 B, LEFT JOIN保留A的所有行,不管有没有能匹配上B 反过来 RIGHT JOIN则保留所有B里的行。最后FULL JOIN 不管有没有匹配上,同时保留A和B里的所有行。LEFT JOIN 和 RIGHT JOIN以及FULL JOIN都可以从字面上去理解,保留左表所有数据,保留右表所有数据,保留所有表的所有数据。

最后,给大家推荐一个sql的自学网站:http://xuesql.cn/
上面有关于sql的学习文章以及相关练习题,是学习和复习sql一个很好的网站!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:21:05  更:2022-03-03 16:25:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:07:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码