对产品岗的同学来说,现在越来越多的企业开始要求我们熟练掌握sql语句,尤其是一些数据产品经理,一些招聘的硬性要求就是要懂sql。我个人对这种现象的看法还好,懂一些基本的sql查询,对于数据服务部门或者研发同学是大大节省了时间,而且能力是自己的,学了又不吃亏。
SQL的基本理解学习之前,我们可以简单地理解一下sql的基本定义。首先sql的定义就是结构化查询语言,不要看它的功能很强大,但基本语法和操作很简洁,基本上接近英语口语,学习起来还是比较容易的。我们日常和研发同学沟通的时候,常常会听到‘表’这样一个概念。基本上数据和业务属性都会存储在一张张的表里。用常用的视角来定义下这些概念就很好理解:一个数据库就类似一个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;确定数据来源:
from 关键字后面可以跟一张“表”,表示我们要查的数据的来源。这里说的“表”可以是数据库已经存在的普通表,例如
from shop_login_log;也可以是由一条sql查出来的“结果集”,这种放在from后面的临时结果集可以称为“派生表”。派生表要用小括号()包裹,表示一个整体,例如
select * from (select * from shop_login_log);筛选列select column1, column2, ... 选取指定列。如果想取全部字段,可以用*星号表示,不推荐使用,尽量写明指定列,例如, select * from ...自定义列例如在结果集第一列显示今天的日期:
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 后面跟的筛选条件可以是各种条件的组合,只有整个where的筛选条件都满足记录才能被筛选出来。常见的条件有 - 算术运符(加减乘除) - 比较运算符(>大于、