SQL学习过程
林林总总写一些SQL的基础,希望对大家有帮助~
一、关于数据分析
数据分析流程:收集数据(问卷,数据库)、分析数据结构、数据预处理(建模、数据分析)、展示结果。
数据平台:excel、数据库、数据中心(Hadoop、spark等)
二、数据库
数据库:为某种目的而组织起来的记录和文件的集合,通俗理解就是很多表。
现在大多数数据库是关系型数据库
表结构:字段/列 记录/行
基本上所有数据库都支持标准的SQL语法,例如:Oracle、SQL Server、MySQL、acess、DB2等,但SQL server使用T-sql,Oracle使用PL/SQL,非关系性数据库也会有能转化成sql引擎或插件,如hive sparksql
三、SQL的概念
SQL语言的概念:
①结构化查询语言,是一种编程语言;
②一种数据库查询和程序设计语言;
③用于存取数据以及查询、更新和管理关系数据库系统;
④各种数据处理逻辑与方法实现,都可以通过SQL语言来完成。
四、SQL的结构
实际工作中的逻辑架构
接下来具体介绍sql里的数据定义语言(DDL)、数据操作语言(DML)和数据查询语言(DQL)
数据定义语言(DDL)
创建数据库:create database 数据库名称;
删除数据库:drop database 数据库名称;
数据库命名规则:命名反映建库的内容,公司的其他规范,DB_demo
创建表:create table 表名 (列名-字段,类型-数值、字符等);
删除表:drop table 表名;
数据表命名规则:以姓名缩写_开始,以日期结束,中间反应表的内容,公司的其他规范,例如:my_order_20200508
在创建表时要注明字段类型,具体的数据类型如下:
数据类型
查看数据库与表
show databases; --查看目前所有数据库
use 数据库名称; – 进入数据库
show tables; --查看目前所在数据库所有表
desc 表名; – 查看表结构
数据库基本语句
ALTER TABLE 语句
主要解决问题:用于在已有的表中添加、修改或删除列,更新表名,字段类型等。
数据操作语言(DML)
数据库基本语句
updata数据替换
如:UPDATE my_order_20200508 SET create_time = Replace(create_time, ‘2016-’, ‘2020-’)
delect 语句
SQL实操
我这里使用的是navicat+mysql,具体的安装教程就不给大家一一介绍了,网上都有。
我是先在MySQL的命令程序里创建数据库,再使用navicat连接到MySQL,就能看到mysql下所有的数据库
接着可以使用navicat新建查询创建表,从表中插入数据,也可以直接导入数据。
那么我在这创建的表格如上
用查询语句查询一下一张表格上前五行的信息
这就是SQL语句最简单的用法
数据查询语言(DQL)
其中select from是必须的
having是对数据进行过滤
SQL的执行顺序为:FROM>JOIN>ON>WHERE>GROUP BY>AVG,SUM…>HAVING>SELECT>DISTINXT>ORDER BY>LIMIT
练习
查看表结构
查看表的前十行数据
找出购买金额大于200的顾客
去重加distinct关键字
找出购买金额大于20小于200的顾客
按金额结果进行降序排序
练习 group by
group by 必须结合汇总函数
统计顾客的累计购买金额
统计每个顾客每天的购买金额
练习:
购买金额大于20小于200的顾客
缺失值判断语句形式为
某字段 is null / is not null
模糊查询 like
练习:查找一月份的所有订单
数据库相关函数
在这里介绍的是常用的时间函数,日期转换函数,基本字符函数
时间函数练习
默认周日为第一天
日期转换函数
大写的y为四位年份,小写为两位,大写m/d为英文,小写为数字。
常用的是%Y-%m-%d-%H
基本字符函数
学完这些基本语句就可以尝试着实现sql的复杂查询了
查询订单表里购买金额最大和最小的顾客
SQL多表关联
查询所有用户的购买额度以及总销售额
关于union 后排序失效的问题,上网找了解决方案,解决方案如下:
union 的去重是针对记录完全一致
使用场景:进行汇总合并
多表连接:外关联和内关联
内关联练习:
外关联–左关联和右关联
所查询的结果与以什么表为准有关
例如左关联:
多表连接产生笛卡尔积
1.生成大表,列数为N+M-1,有就是两表少一列;
2.行数是两个表的乘积
实际中如果关联查询很慢,很有可能出现了笛卡尔积,应立刻停止查询
关于SQL的一些基础先写到这,有问题欢迎各位指出来,SQL的用法其实在很多地方都能用上,excel,access,还有R都能用上,有时间再更新啦~
快捷键
CTRL+/ 单行注释
CTRL+f 查找与替代