【小贪】数据库常用操作:MySQL, HQL, Spark SQL

近期致力于总结科研或者工作中用到的主要技术栈,从技术原理到常用语法,这次查缺补漏当作我的小百科。主要技术包括:

  • 数据库常用:MySQL, Hive SQL, Spark SQL
  • 大数据处理常用:Pyspark, Pandas
  • 图像处理常用:OpenCV, matplotlib
  • 机器学习常用:SciPy, Sklearn
  • 深度学习常用:Pytorch, numpy
  • 常用数据结构语法糖:itertools, collections
  • 常用命令: Shell, Git, Vim

以下整理错误或者缺少的部分欢迎指正!!!

数据库常用:MySQL, HQL, Spark SQL

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

性能对比

MySQLHive SQLSpark SQL
数据存储系统关系型数据库基于Hadoop的数据仓库系统在Spark上构建的分布式计算引擎
数据处理能力小规模结构化数据大规模非结构化和半结构化数据大规模非结构化和半结构化数据
执行引擎传统查询优化器和Executor将查询转换为MapReduceSpark引擎
分布式存储和处理×
实时查询×(只能离线分析)
可扩展性
优势管理索引、表分区表分区、分桶、UDF/UDAF提供DF接口

更详细的介绍:

  • Hive & Hbase
  • Spark SQL & Spark streaming
  • 数据库分类及数据库笔记目录

常用语法

MySQLHive SQLSpark SQL
关系适用大部分MySQL语法兼容hive
DDL(定义)CREATE DROP ALTER
DML(操作)INSERT DELETE UPDATE
DQL(查询)SELECT WHERE
DCL(控制)GRANT REVOKE
函数nvl(expr1, expr2)ifnull(expr1, expr2)同hive
merge into只能使用update/delete/insert代替
join on关联条件支持不等值连接××

MYSQL 常用

CREATE/DROP DATABASE/TABLE IF NOT EXISTS db/tab; -- 创建/删除数据库/表
USE db; -- 使用指定数据库
SET SQL_SAFE_UPDATES = 0; -- 关闭安全模式
SHOW DATABASES/TABLES; -- 查询所有数据库/表名;
desc 表名; -- 查询表结构CREATE TABLE student(  -- 列名 数据类型(包括int、double、varchar、date、datetime、timestamp)id INT primary key auto_increment,        NAME VARCHAR(20) unique,  age INT not NULL,adress VARCHAR(10) constraint 外键名 foreign key (外键列名) reference 主表名(主表列名),
);
INSERT INTO student VALUES('1','马云','55','男', '杭州', '66', '78'),('2', '柳青', '20', '女', '湖南', '86', NULL);ALTER TABLE 表名 rename 新表名;
ALTER TABLE 表名 ADD/MODIFY 列名 数据类型; -- 新增/修改列名、类型
ALTER TABLE 表名 CHANGE 列名 新列别 新数据类型;
ALTER TABLE 表名 DROP 列名;
ALTER TABLE 表名 ADD CONSTRAINT 外键名 FOREIGN KEY (外键列名) REFERENCES department 主表名(主表列名); -- 创建完表添加外键约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键名; -- 删除外键DELETE FROM student WHERE id = 9;
UPDATE student SET age = 99 WHERE id = 9;
DROP TABLE 表名;SELECT(DISTINCT) 字段列表 (as 别名)
FROM 表名列表
WHERE 条件列表       -- where在分组前限定,后不可跟聚合函数
group by 分组字段
having分组之后的条件  -- having在分组后限定,后可进行聚合函数的判断
order by 排序字段 ASC/DESC -- (ASC默认升序,DESC降序)
limit分页限制       -- 开始索引,每页查询条数-- as起别名; 计算math和english分数之和
SELECT math, english, math + IFNULL(english, 0) [AS] 总分 FROM student; -- 如果有null参与运算,计算结果都为null-- 查询姓名第二个字是化的;通配符:%任意多个字符,_单个字符
SELECT * FROM student WHERE NAME LIKE '_化%';-- 聚合函数;按性别分组分别查询男女生的平均分、人数,要求数学分数高于70分,分组后人数要大于两个 
SELECT sex, AVG(math), COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;-- 笛卡尔积
SELECT * FROM dept, emp;-- 内连接
SELECT emp.`name`,emp.`gender`,dept.`name` FROM emp,dept WHERE emp.`dept_id` = dept.`id`;  -- 隐式内连接
SELECT * FROM emp [INNER] JOIN dept ON emp.`dept_id` = dept.`id`;-- 外连接
SELECT t1.*,t2.name FROM emp t1 LEFT [outer] JOIN dept t2 ON t1.`dept_id` = t2.`id`; -- 左外连接:左表所有数据及交集部分
SELECT t1.*,t2.name FROM dept t2 RIGHT [outer] JOIN emp t1 ON t1.`dept_id` = t2.`id`; -- 右外连接:右表所有数据及交集部分/* 子查询 */
-- 子查询的结果是单行单列的,子查询可作为条件,使用运算符判断
SELECT * FROM emp WHERE emp.`salary` < (SELECT AVG(salary) FROM emp);
-- 子查询的结果是多行单列的,子查询可作为条件,使用运算符in判断
SELECT * FROM emp WHERE dept_id IN (SELECT id FROM dept WHERE NAME = '市场部' OR NAME = '财务部');
-- 子查询的结果是多行多列的,子查询可作为一张虚拟表参与查询
SELECT * FROM dept t1,(SELECT * FROM emp WHERE emp.`join_date` > '2011-11-11') t2 WHERE t1.`id` = t2.dept_id;-- 常用函数 
select if(boolean testCondition, T valueTrue, T valueFalseOrNull) from user;
case when 条件 then...
when 条件 thenelse 0 end 字段名; 
CONCAT(str1,str2,)  -- 连接字符串
CONCAT_WS(separator,str1,str2,...) -- 以分隔符连接字符串
GROUP_CONCAT( [distinct] 要连接的字段 [group by 字段] [separator '分隔符']) -- 分组连接字段-- with as;相当于创建e、d临时表
withe as (select * from scott.emp),d as (select * from scott.dept)
select * from e, d where e.deptno = d.deptno;-- union all多个select不去重不排序;union [distinct] 去重且排序
select id,score from union_test1 union [distinct] select id, score from union_test2;-- json data
jsonData = '{"message":{"location":[{"county":"浦东","city":"上海"},{"county":"西直门","city":"北京"}]}   }' --jsonData列数据为字符串格式,外面是单引号,里面是双引号
select get_json_object(jsonData,'$.message.location[0].city') from test --输出:上海

hive常用命令

hive # hive启动!
hive -e "sql语句"	# 不进入hive交互窗口执行sql语句
hive -f xxx.sql		# 不进入hive交互窗口执行脚本中的sql语句
hive>exit/quit; 	# 退出hive窗口
hive>dfs -ls /; 	# 查看hdfs文件系统
hive>! ls /opt/module/datas; # 查看本地文件系统
cat .hivehistory	         # 查看在hive中输入的所有历史命令
desc formatted table_name;   # 查询某个表的HDFS地址
dfs -ls address_url;	     # 进入该地址中可以看到相应分区的最后更新时间

分区表常用

-- 创建分区表常见写法
create table if not exists student2(id int, name string
)
[COMMENT table_comment] 
partitioned by (month string) -- [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]  -- 分区表
[CLUSTERED BY (col_name, col_name, ...)  -- 分桶表
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] 
row format delimited fields terminated by '\t' --[ROW FORMAT row_format] 
stored as textfile  -- [STORED AS file_format] 
location '/user/hive/warehouse/student2'; -- [LOCATION hdfs_path]-- 同时创建/删除多个分区
alter table dept_partition add/drop partition(month='201705'), partition(month='201704');-- 查看分区表有多少分区
show partitions dept_partition;
-- 查看分区表结构
desc formatted dept_partition;-- 从本地文件覆盖/追加表数据
load data [local] inpath '/opt/module/datas/student.txt' [overwrite] into table 表名 [partition (partcol1=val1,)];

高级操作merge into

MERGE INTO table_name alias1 
USING (table|view|sub_query) alias2
ON (join condition) 
WHEN MATCHED THEN UPDATE   -- DELETESET col1 = col1_val1, col2 = col2_val2
WHEN NOT MATCHED THEN INSERT (column_list) VALUES (column_values); 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/801558.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

行内元素、块级元素和行内块元素

行内元素、块级元素和行内块元素 元素类别的定义和区别: 解释行内元素、块级元素和行内块元素的基本特性。区分这三种元素在页面布局中的不同表现和用途。 行内元素&#xff08;inline elements&#xff09;通常用于文本内容&#xff0c;不会开始新的布局块&#xff0c;它们不会…

MATLAB算法实战应用案例精讲-【数模应用】中介效应分析(补充篇)(附R语言和python代码实现)

目录 前言 几个高频面试题目 中介效应分析与路径分析的区别 1.中介效应分析 2.路径分析 注意事项

2012年认证杯SPSSPRO杯数学建模D题(第二阶段)人机游戏中的数学模型全过程文档及程序

2012年认证杯SPSSPRO杯数学建模 D题 人机游戏中的数学模型 原题再现&#xff1a; 计算机游戏在社会和生活中享有特殊地位。游戏设计者主要考虑易学性、趣味性和界面友好性。趣味性是本质吸引力&#xff0c;使玩游戏者百玩不厌。网络游戏一般考虑如何搭建安全可靠、丰富多彩的…

第七篇:3.6 其他评估考虑/4.审计指南/5. 通用报告规范/6.披露指南、参考标准及其他 - IAB/MRC及《增强现实广告效果测量指南1.0》

翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效果测量定义和其他矩阵之- 3.1 广告印象&#xff08;AD Impression&#xff09;第三篇广告效果测量定义和其他矩阵之- 3.2 可见性 &#xff08;Viewability&#xff09;第四篇 …

c语言 — 文件操作【求个关注!】

文章目录 一1 为什么要使用文件&#xff1f;2 什么是文件&#xff1f;2.1 程序文件2.2 数据文件2.3 关于文件名问题&#xff01;2.4 扩展 3 关于流的思想3.1 标准流 4 文件信息区5 fopen函数与fclose函数5.1 fopen函数5.2 fclose函数 6 顺序读写函数的介绍6.1 fgetc函数6.2 fpu…

【b站咸虾米】jQuery的ajax异步操作 web前端后端分离技术的原理

课程地址&#xff1a;【jQuery的ajax异步操作 web前端后端分离技术的原理】 https://www.bilibili.com/video/BV1u5411M7ny/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 通过案例学习ajax异步操作。 介绍 php&#xff0c;前后端不分离的技术。 a…

oj赛(双周赛第二十四次)

目录 1. 八大藤校2025fall标化要求已全部出炉 2. 上海“2024人才储备”计划启动&#xff01; 伐木工小码哥 杰瑞吃奶酪 小码哥处理订单 黑手党 第k小的距离 养竹鼠 甜品配置 礼物 合数分解 均分糖果 持盾 咖啡品鉴师小码哥 1. 八大藤校2025fall标化要求已全部…

Spring Boot(七十二):集成JSch连接到sshd服务器并使用端口转发

1 JSch介绍 JSch是SSH2的纯Java实现。JSch允许您连接到sshd服务器并使用端口转发,X11转发,文件传输等,并且可以将其功能集成到您自己的Java程序中。 官方网址如下:JSch - Examples 2 实现原理 根据远程主机的IP地址,用户名和端口,建立会话(Session)设置用户信息(包括…

景芯2.5GHz A72训练营dummy添加(一)

景芯A72做完布局布线之后导出GDS&#xff0c;然后进行GDS merge&#xff0c;然后用Calibre对Layout添加Dummy。在28nm以及之前的工艺中&#xff0c;Dummy metal对Timing的影响不是很大&#xff0c;当然Star RC也提供了相应的解决方案&#xff0c;可以考虑Dummy metal来抽取RC。…

前端二维码工具小程序产品使用说明书

一、产品概述 前端二维码工具小程序是一款便捷实用的二维码生成与识别工具&#xff0c;通过本小程序&#xff0c;用户可以轻松根据文本或链接生成二维码&#xff0c;并支持扫一扫功能识别二维码内容&#xff0c;同时提供复制识别内容的功能。此外&#xff0c;本小程序还具备美…

快速删除node_modules

1.rd /s /q node_modules 2.rimraf node_modules/ 亲测可用

【C++】手搓 list 容器

送给大家一句话&#xff1a; 若结局非你所愿&#xff0c;就在尘埃落定前奋力一搏。—— 《夏目友人帐》 手搓 list 容器 1 前言1.1 底层结构1.2 使用场景1.3 功能简介 2 框架搭建2.1 节点类2.2 list 类2.3 迭代器类 3 功能实现3.1 begin() 与 end()3.2 插入操作3.3 删除操作3…

ATM04-6P 安费诺汽车连接器6芯压线端子胶壳

ATM04-6P是一款压线端子胶壳&#xff0c;属于Amphenol&#xff08;安费诺&#xff09;品牌 ATM04-6P 规格信息&#xff1a; 制造商:Amphenol 产品种类:汽车连接器 RoHS:是 产品:Connectors 位置数量:6 Position 型式:Receptacle (Female) 线规量程:22 AWG to 16 AWG 系列:ATM 颜…

10、Lambda表达式

Lambda表达式 简化匿名内部内的书写,JDK8开始的一种新语法形式 格式 ()->{}&#xff08;&#xff09;对应方法的形参-> 固定格式{} 对应着方法的方法体 注意&#xff1a;可以用来简化匿名内部类的书写 ​ 表达式只能简化函数式接口的匿名内部类的写法 ​ 函数式接口&…

ssm032基于Java的汽车客运站管理系统的设计与实现+jsp

汽车客运站管理系统的设计与实现 摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对汽车客运站售票信息管理混乱&…

layui后台框架,将左侧功能栏目 集中到一个页面,通过上面的tab切换 在iframe加载对应页面

实现上面的 功能效果。 1 html代码 <form class"layui-form layui-form-pane" action""><div class"layui-tab" lay-filter"demo"><ul class"layui-tab-title"><li id"a0" class"lay…

使用 proxySQL 来代理 Mysql

我有若干台云主机&#xff0c; 但是只有1个台vm 具有外部ip 而在另1台vm上我安装了1个mysql instance, 正常来讲&#xff0c; 我在家里的电脑是无法连接上这个mysql 尝试过用nginx 代理&#xff0c; 但是nginx只能代理http协议的&#xff0c; mysql 3306 并不是http协议 解决…

Leetcode面试经典150_Q12整数转罗马数字

题目&#xff1a; 罗马数字包含以下七种字符&#xff1a; I&#xff0c; V&#xff0c; X&#xff0c; L&#xff0c;C&#xff0c;D 和 M。 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M …

Leetcode 6. Z 字形变换

将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时&#xff0c;排列如下&#xff1a; P A H N A P L S I I G Y I R 之后&#xff0c;你的输出需要从左往右逐行读取&#xff0…

BM96 主持人调度(二)(贪心算法)

一开始写的时候忘了给start、end数组赋值了 import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xff0c;请勿修改&#xff0c;直接返回方法规定的值即可** 计算成功举办活动需要多少名主持人* param n int整型 有n个活动* param start…