这是我参加[第四届青训营]笔记创作活动的第1天
一、认识sql以及mysql的安装
什么是数据库呢? 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。主要分为关系型数据库和非关系型数据(NoSQL)库两个大类。关系型数据库大多数都遵循SQL(结构化查询语言,Structured Query Language)标准。 常见的关系型数据库有mysql。
mysql安装流程
1、下载官网
downloads
点击community(gpl)downloads
点击如图位置
然后就下载成功,安装的时候一直点击next和finish就可以,可能还需要自己创建密码什么的,不要紧。值得注意的一个点就是mysql默认装在你的c盘,如果你的c盘空间不够的话建议先清理一下c盘之后再安装。
成功的页面
选择local instance mysql80,然后就全部完成了。
二、mysql的一些基础语法
use sql_store;
-- 不同语句之间要用分号
-- 不区分大小写
-- 选中一个数据库使用use
select
last_name,
points*10 as 'discount_factor'
-- *代表所有列
-- as重新命名
-- select distinct 去掉重复项
from customers
-- 从中选择一个表
where customer_id=1
-- 选择id=1的顾客
order by first_name排序
USE sql_store;
SELECT *
FROM order_items
WHERE order_id = 6 AND unit_price*quantity>30
-- != 、<>都是不等于
-- and的运算顺序高于or
-- where not表示否定逻辑
-- state in ('va','na')更加便捷
-- between and
-- 模糊查找 where last_name LIKE 'b___y'
-- % any number of characters
-- _ single character
-- 或者使用正则表达式来模糊查找REGEXP
-- ^ beginning
-- $ end
-- | logical or
-- [abcd]e ae be [a-f]
三、sql查询优化器
sql优化体系
1、大数据体系和sql
1.1大数据体系 one sql rules big data all
1.2sql的处理流程
parser->Analyzer->Optimizer->Executor analyzer and logical plan sql是一种声明式语言,用户只描述做什么。所以需要进行查询优化
2、常见的查询优化器
2.1分类
2.1.1 Top-down Optimizer从上往下 Bottom-up Optimizer从下往上
2.1.2 根据规则优化RBO 关系代数 运算符、等价变换(结合律、交换律、传递性) 优化规则 列裁剪、谓词下推、传递闭包、Runtime Filter
基于代价优化CBO 使用一个模型估算执行计划的代价,选择代价最小的执行计划
统计信息+推到规则->计算算子代价->计算执行计划代价->执行计划枚举
动态规划、贪心算法
社区开源实践 Apache calcite 、 统计的sql查询引擎(内置rbo/cbo)、 Calcite RBO、 HepPlanner、 优化规则,四种匹配规则 Calcite CBO VolcanoPlanner
前沿趋势 对sql优化器有新的要求: 引擎架构的进化、 Cloud、 湖仓一体、 DATA+AI