2020-11-03

SQL

image-20200927191218163

image-20200927191327617

image-20200927192652432

image-20200927192711582

image-20200927192730812

sql

如果要的数据是从3-4,那么offset就应该是2

在用join进行多表联合查询时,inner join是将两个表合并后将主键相同的数据保留下来,比如A表,B表,B表中没有主键全乎的数据,那么A表中的那些数据就会丢掉。、

left join,right join full join

image-20200927204757346

image-20200927212123091

使用特殊字null

之前我们已经接触过NULL. 在数据库中,NULL表达的是 "无"的概念,或者说没有东西。因为 NULL的存在,我们需要在编写SQL时考虑到某个属性列可能是 NULL的情况, 这种特殊性会造成编写SQL的复杂性,所以没有必要的情况下,我们应该尽量减少 NULL的使用,让数据中尽可能少出现 NULL的情况。

如果某个字段你没有填写到数据库,很可能就会出现NULL 。所有一个常见的方式就是为字段设置默认值,比如 数字的默认值设置为0,字符串设置为 ""字符串. 但是在一些NULL 表示它本来含义的场景,需要注意是否设置默认值还是保持NULL。 (f比如, 当你计算一些行的平均值的时候,如果是0会参与计算导致平均值差错,是NULL则不会参与计算).

还有一些情况很难避免 NULL 的出现, 比如之前说的 outer-joining 多表连接,A和B有数据差异时,必须用 NULL 来填充。这种情况,可以用IS NULLIS NOT NULL 来选在某个字段是否等于 NULL.

image-20200928142902118

在查询中使用表达式

之前我们在SQL中的出现col_name(属性名)的 地方,我们都只是写上col_name自身。其实在SQL中可以用col_name的地方,都可以用表达式 来指定对属性进行一定的计算或处理。举个例子:假设有一个col_name是出生日期,现在要求SQL返回当前的年龄,这就可以用一个时间计算表达式对 出生日期做计算得到年龄。表达式可以对 数字运算,对字符串运算,也可以在表达式中只包含常量不包含col_name(如:SELECT 1+1)

当我们用表达式对col属性计算时,很多事可以在SQL内完成,这让SQL更加灵活,但表达式如果长了则很难一下子读懂。所以SQL提供了AS关键字, 来给表达式取一个别名.类似于 import tensorflow as tf

image-20200928142649987

image-20200928142708563

也可以用于给表等取别名。

在查询中统计数据

SQL默认支持一组统计表达式,他们可以完成数据统计,如:计数,求平均等。 以Movies表数据为例,这些统计表达式可以帮我们回答以下问题:“Pixar公司生产了多少电影?”, 或 “每一年的票房冠军是谁?”.

image-20200928142143392

常用函数

image-20200928142211012

分组统计

GROUP BY 数据分组语法可以按某个col_name对数据进行分组,如:GROUP BY Year指对数据按年份分组, 相同年份的分到一个组里。如果把统计函数和GROUP BY结合,那统计结果就是对分组内的数据统计了.
GROUP BY 分组结果的数据条数,就是分组数量,比如:GROUP BY Year,全部数据里有几年,就返回几条数据, 不管是否应用了统计函数.

image-20200928142339201

先对数据用where来筛选数据,再将结果用group by分组,如果还需要对分好组的数据进行筛选 就可以用having语法来解决

image-20200928142024533

完整的select查询语法

image-20200928141506709

--select中还能套select
SELECT(select(Domestic_sales+International_sales)as total_sale FROM movies
left join Boxoffice on movies.id = Boxoffice.movie_id
       order by total_sale desc limit 1)-
       ( Domestic_sales+International_sales)as sub_sale,title FROM movies
left join Boxoffice
   on movies.id = Boxoffice.movie_id

count(*)记得搞一下

一个语句全部完成后才能有;

select 查询列时,列名不区分大小写

表示一个字符串的时候(中间有空格)用双引号""

SELECT * FROM movies
ORDER BY title
limit 5 offset 5
//这里offset 5 从5开始,5不算。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值