1、适用产品同学的sql教程,爆肝整理对产品岗的同学来说,现在越来越多的企业开始要求我们熟练掌握sql语句,尤其是一些数据产品经理,一些招聘的硬性要求就是要懂sql。我个人对这种现象的看法还好,懂一些基本的sql查询,对于数据服务部门或者研发同学是大大节省了时间,而且能力是自己的,学了又不吃亏。SQL的基本理解学习之前,我们可以简单地理解一下sql的基本定义。首先sql的定义就是结构化查询语言,不要看它的功能很强大,但基本语法和操作很简洁,基本上接近英语口语,学习起来还是比较容易的。我们日常和研发同学沟通的时候,常常会听到表这样一个概念。基本上数据和业务属性都会存储在一张张的表里。用常用的视角来定
2、义下这些概念就很好理解:一个数据库就类似一个excel文件;数据库中的一张表可以理解成excel文件中的一张sheet表;字段或者标题可以理解成sheet中的列表头;SQL基本书写规则1. 一条sql语句可以写成多行,要以分号(;)结尾,分号标志着一条sql语句结束;2. sql语句不区分大小写;3. 单词间以空格分隔;4. 字符串用单引号括起来;5. 查询时间用形如 2021-12-30 23:59:59 或者 2021-12-30 的格式;SQl基本使用场景查看表结构:在查询数据之前,我们大概看下表结构,提前知晓下自己所能查找的数据show create table tablename;确
3、定数据来源:from 关键字后面可以跟一张“表”,表示我们要查的数据的来源。这里说的“表”可以是数据库已经存在的普通表,例如from shop_login_log;也可以是由一条sql查出来的“结果集”,这种放在from后面的临时结果集可以称为“派生表”。派生表要用小括号()包裹,表示一个整体,例如select * from (select * from shop_login_log);筛选列select column1, column2, . 选取指定列。如果想取全部字段,可以用*星号表示,不推荐使用,尽量写明指定列,例如, select * from .自定义列例如在结果集第一列显示今天的
4、日期:select 2022-01-01, app_id from shop_login_log;select 子句也可以对列加以各种函数处理,变成自己想要的样式例如在显示买家的时候加上前缀称呼:select concat(login_date, ,login_hour) from shop_login_log;当想要查的数据没有数据来源时,可以只需要select 关键字例如想计算1+1的值:select 1+1;例如想查看当前时间:select now();筛选行where 关键字的作用就是筛选出符合条件的行;例如只查看卖家是华为旗舰店:where app_id = 1where 后面跟的筛
5、选条件可以是各种条件的组合,只有整个where的筛选条件都满足记录才能被筛选出来。常见的条件有 - 算术运符(加减乘除) - 比较运算符(大于、小于、不等于) - 逻辑运算符(and并且、or或者、not 否定),and运算符比or运算符的优先级高,所以注意用小括号来表示逻辑先后顺序例如 where status = 已签收 and (saler = 华为旗舰店 or saler = 荣耀旗舰店);在查找字符串类型的数据时,有时候不确定具体值是多少,那么可以使用 like 来表示模糊搜索例如找出商品充电宝:where sku like %充电宝%;表中有些字段的值可能是空的,空或者不空,可以用 is null 和 is not null 来表示(= null 或者 null 都是错的)例如找出创建时间为空的订单:where order_created is null;当我们想要范围查询时,可以用between and 来限定范围;和 = and =1000 and total_pay_fee =2021-11-01 and login_date2021-12-01group by client_typeorder by count(*) desc;我是红尘,我们下期见!