hql、数据仓库、sql调优、hive sql、python

SQL/HQL

HQL(Hibernate Query Language) 是面向对象的查询语言
SQL的操作对象是数据列、表等数据库数据 ; 而HQL操作的是类、实例、属性

#FROM 
String hql = "from com.demo.bean.User" =  "select * from user"
#WHERE
"form User u  where u.id = 1 " = "select * form user where id = 1"
#查询出一个String/或者其他类型的属性,封装为List<Object>
        public List<String> getAllUsernames(){
                Session session = new HibernateSessionFactory().getSession();
                String hql = "select u.username from User as u where status = 0"; 
                Query query = session.createQuery(hql); 
                List<String> list = query.list();  //返回出的List对象中,封装的对象的类型,看具体的情况而定的
                return list;
        }
#使用统计函数
String hql = "select count(*) from User where status = 0";
String hql = "select count(*),min(u.age) from User as u where status = 0";
#分组和排序
String hql = “select u.username form User as u order by u.age desc”  按年龄的降序排列取出姓名
String hql =”select count(user),age from User group by age having count(user)>3”;
#实体更新和删除   HQL对数据库的修改操作,需要事务来实现
有条件删除   String hql = "delete from User where age<15";
有条件更新  String hql = "update User set username='tom' where id=2";
       public void updateSome(){
                Session session = new HibernateSessionFactory().getSession();
                String hql = "update User set username='tom' where id=2";
                Query query = session.createQuery(hql); 
                Transaction tr = session.beginTransaction();
                query.executeUpdate();
                tr.commit();
                session.close();
        }
#参数绑定
顺序占位符:用?来代表参数,用query.setXxx(0, ??); 给参数赋值,参数的序号从0开始
String hql = "update User set username=? where id=?";
引用占位符:用“:占位字符串”实现
 String hql = "from User where username=:username and password =:password";

数据仓库基本理论

数据仓库的定义 英文名称为Data Warehouse,可简写为DW或DWH。
为企业级别的决策制定过程,提供所有类型数据支持的战略集合。
它出于分析性报告和决策支持目的而创建,为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。
数据仓库的意义 根据以往的数据进行分析,优化流程和确定决策
数据仓库的特点 面向对象的、集成的、不可更新的、随时间变化的
数据仓库和数据库的区别
数据库 OLTP用于存放数据的仓库;数据库软件用来实现数据库的逻辑功能
数据仓库 OLAP主要用于数据挖掘和数据分析,辅助领导做决策
在IT架构体系,需要一个放数据的地方,这个地方就是数据库
在BI方面,数据库的表设计往往是某个应用,但针对数据分析和挖掘较为困难数据仓库的表结构是按照分析需求分析维度、** 分析指标**进行设计的
在这里插入图片描述
数据仓库分层ODS(临时存储层)、PDW(数据仓库层)、DM(数据集市层)、APP(应用层)
在这里插入图片描述
在这里插入图片描述

SQL性能调优

sql执行流程
1、客户端请求到服务端,服务端通过数据库连接池,用JDBC连接数据库驱动。
2、数据库端的连接池接收到服务端的连接,然后把服务端对数据库的请求交给数据库的线程。
3、通过数据库获取SQL接口,获取到连接中的SQL语句。
4、然后是通过数据库解析器对SQL进行解析(解析成数据库认识的语言)。
5、然后通过SQL查询优化器获得最优执行SQL。
6、最终把最优SQL交给数据库执行器。
7、执行器选择当前数据库的存储引擎(图例采用InnoDB为例)。
8、然后先去数据库的BufferPool(缓存)中查询,这里如果命中了缓存则直接返回结果。
9、如果没有在缓存中命中结果,那么会去硬盘中读取数据,然后返回结果集并缓存起来,以便下次取用。
数据库使用规范
1、表命名必须小写字母且下划线分割单词;
2、表名称及字段名称不要用数据库的关键字;
3、数据库表命名不超过32个字符;
4、遵循数据库三范式;
5、合理的反三范式使用(比如合理的冗余字段再一张表)
sql调优技巧
1.合理使用索引
B树索引常用于有序数据的访问,而哈希索引则常用于无序数据的访问。在使用索引时,需要根据实际情况选择合适的索引类型,避免使用不必要的索引。同时,建议为频繁访问的列创建索引,以提升查询效率。)
2.避免全表扫描
(优化SQL查询语句,使用索引和优化器来提升查询效率。在使用索引时,需要保证索引列和查询列保持一致,避免类型不匹配造成查询失败)
3.优化SQL查询语句
(尽可能避免子查询和视图的使用;注意优化日期和时间戳的格式;避免使用SELECT * 查询、避免SELECT DISTINCT 语句)
4.处理大量数据时,需要合理使用查询优化器,避免重复查询和不必要的排序操作
5.削减不必要的数据传输,需要避免传输不必要的数据列、避免重复查询和避免使用JOIN查询等

Kettle、Sqoop等ETL工具

kettle 水壶
在这里插入图片描述
在这里插入图片描述
sqoop
在这里插入图片描述

hive sql

Hive SQL是一种基于Hadoop的数据仓库工具
它允许用户使用类似于SQL的语法来查询和分析存储在Hadoop集群中的数据

1. 数据定义语言(DDL):
   - 创建数据库:`CREATE DATABASE database_name;`
   - 删除数据库:`DROP DATABASE database_name;`
   - 显示所有数据库:`SHOW DATABASES;`
   - 使用数据库:`USE database_name;`
   - 创建表:`CREATE TABLE table_name (column1 data_type, column2 data_type, ...);`
   - 删除表:`DROP TABLE table_name;`
   - 显示所有表:`SHOW TABLES;`
   - 修改表结构:`ALTER TABLE table_name ADD/ALTER/DROP COLUMN column_name data_type;`

2. 数据操作语言(DML):
   - 插入数据:`INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);`
   - 查询数据:`SELECT column1, column2, ... FROM table_name WHERE condition;`
   - 更新数据:`UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;`
   - 删除数据:`DELETE FROM table_name WHERE condition;`

3. 数据查询语言(DQL):
   - 聚合函数:`COUNT(), SUM(), AVG(), MIN(), MAX()`
   - 分组:`GROUP BY column1, column2, ... HAVING condition;`
   - 排序:`ORDER BY column1 ASC/DESC, column2 ASC/DESC, ...;`
   - 分页:`LIMIT start, count;`
   - 连接查询:`JOIN table1 ON table1.column = table2.column;`
   - 子查询:`SELECT * FROM table_name WHERE column IN (SELECT column FROM another_table);`

4. 数据控制语言(DCL):
   - 授权:`GRANT permissions ON database_name.table_name TO user_name;`
   - 撤销权限:`REVOKE permissions ON database_name.table_name FROM user_name;`
   - 创建用户:`CREATE USER user_name IDENTIFIED BY password;`
   - 删除用户:`DROP USER user_name;`

5. 其他常用语句:
   - 查看表结构:`DESCRIBE table_name;`
   - 查看表详情:`DESCRIBE FORMATTED table_name;`
   - 查看表分区:`SHOW PARTITIONS table_name;`
   - 查看表统计信息:`ANALYZE table_name;`
   - 查看表数据文件位置:`MSCK REPAIR table_name;`

hive sql和SQL的区别

1.hive不支持等值连接,一般使用left join、right join 或者inner join替代。
2、分号字符
分号是sql语句的结束符号,在hive中也是,但是hive对分号的识别没有那么智能,有时需要进行转义 “;” --> “\073”
3、NULL
sql中null代表空值,但是在Hive中,String类型的字段若是空(empty)字符串,即长度为0,那么对它 is null 判断结果为False
4、Hive不支持将数据插入现有的表或分区中
Hive仅支持覆盖重写整个表。
insert overwrite 表 (重写覆盖)
5、Hive不支持 Insert into 表 Values(), UPDATA , DELETE 操作
insert into 就是往表或者分区中追加数据。
6、Hive支持嵌入mapreduce程序,来处理复杂的逻辑
7、Hive支持将转换后的数据直接写入不同的表,还能写入分区,hdfs和本地目录
需避免多次扫描输入表的开销。
8、HQL不支持行级别的增、改、删,所有数据在加载时就已经确定,不可更改。

python

基础语法 http://t.csdnimg.cn/2xalS

Python的六大数据类型如下所示:    
(1)数字(Numbers):int(整型),long(长整型),complex(复数),float(浮点型),bool(布尔型);    
(2)字符串(String):"Python",'Python';    
(3)列表(List):[1,2,3,4],[5,6,7,[8,9],10];    
(4)字典(Dictionary):{1:"study",2:"Python"};    
(5)元组(Tuple):(1, "shuai",2);    
(6)集合(Set):{'P', 'y', 't', 'h', 'o', 'n'}
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
可变数据(3 个)  :List(列表)、Dictionary(字典)、Set(集合)

列表支持字符,数字,字符串甚至可以包含列表(也就是嵌套)
元组用"()"标识。内部元素用逗号隔开。但是元素不能二次赋值,相当于只读列表。
字典用"{ }"标识。字典由索引 (key) 和它对应的值 value 组成,
字典 (dictionary) 是除列表以外 Python 之中最灵活的内置数据结构类型。
列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

注释
#这是单行注释
"""
这是多行注释
这是多行注释
"""
'''
也可以用三个单引号来进行多行注释
也可以用三个单引号来进行多行注释
'''

分块 python的函数不需要{} 用缩进表示
Python 使用缩进来表示代码块。缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。

python可以用type函数来检查一个变量的类型:
type(name))

input()函数作为输出流,print()函数作为输入流

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Filter过滤器的使用!!!

什么是过滤器 当浏览器向服务器发送请求的时候&#xff0c;过滤器可以将请求拦截下来&#xff0c;完成一些特殊的功能&#xff0c;比如&#xff1a;编码设置、权限校验、日志记录等。 过滤器执行流程 过滤器的使用&#xff1a; /** Copyright (c) 2020, 2023, All rights …

【AIGC】AIGC——真正意义的智能,颠覆性的变革

AIGC——真正意义的智能&#xff0c;颠覆性的变革 AIGC&#xff08;AI Generated Content&#xff0c;即人工智能生成的内容&#xff09;可以通过以下几个方面来实现跨越&#xff1a; 技术跨越&#xff1a;AIGC可以通过不断的技术创新和进步&#xff0c;实现从简单的生成内容…

电脑键盘大小写切换按哪个键?正确操作分享!

“我在工作时&#xff0c;经常需要输入英文文档&#xff0c;但我不知道输入大小字母时应该按哪个键切换&#xff0c;有朋友可以教教我吗&#xff1f;” 在我们使用电脑时&#xff0c;输入英文文档是经常会遇到的事。当输入某些单词时&#xff0c;我们可能需要切换大小写。电脑键…

ASUS华硕ROG幻16 2023款GU603VU VV VI笔记本电脑原厂Win11.22H2系统

链接&#xff1a;https://pan.baidu.com/s/1AgevUZleCHBJgCBcIp5CFQ?pwdhjxy 提取码&#xff1a;hjxy 华硕笔记本2023款幻16原厂Windows11系统自带所有驱动、出厂主题壁纸、Office办公软件、MyASUS华硕电脑管家、Armoury Crate奥创控制中心等预装程序 文件格式&#xff1…

Centos开启防火墙和端口命令

Centos开启防火墙和端口命令 1 课堂小知识1.1 centos7简介1.2 iptables方式开启防火墙 2 操作步骤2.1 开启查看关闭firewalld服务状态2.2 查看端口是否开放2.3 新增开放端口2.4 查看开放的端口 3 防火墙的其他指令 1 课堂小知识 1.1 centos7简介 CentOS 7是CentOS项目发布的开…

.NET 使用Camunda快速入门

一.工作流介绍 1. 什么是工作流 工作流&#xff08;Workflow&#xff09;&#xff0c;是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。 工作流将一套大的业务逻辑分解成业务逻辑段&#xff0c; 并统一控制这些业务逻辑段的执行条件&#xff0c;执行顺序以及相互通…

48道Linux面试题

本博客将汇总 Linux 面试中常见的题目&#xff0c;并提供详细的解答。 文章目录 1、绝对路径用什么[符号表](https://so.csdn.net/so/search?q符号表&spm1001.2101.3001.7020)示&#xff1f;当前目录、上层目录用什么表示&#xff1f;主目录用什么表示? 切换目录用什么命…

GBASE南大通用 GCDW阿里云计算巢:自动化部署云原生数据仓库

目前&#xff0c;GBASE南大通用已与阿里云计算巢合作&#xff0c;双方融合各自技术优势&#xff0c;助力企业用户实现云上数据仓库的自动化部署&#xff0c;让用户在云端获取数据仓库服务“更简单”&#xff0c;让用户在云端使用数据仓库服务“更便捷”&#xff0c;满足企业用户…

数据挖掘(作业3

任务一 对以下数据集使用K均值聚类算法&#xff1a; 1&#xff09;观察实验结果是否符合预期&#xff1b; 2&#xff09;利用SSE标准确定K值&#xff1b; 3&#xff09;自行调参并观察对聚类结果的影响。 注意&#xff1a;需要把类别信息去掉。 “tutorial3_Data Explorat…

Oracle 12c rac 搭建 dg

环境 rac 环境 &#xff08;主&#xff09;byoradbrac 系统版本&#xff1a;Red Hat Enterprise Linux Server release 6.5 软件版本&#xff1a;Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit byoradb1&#xff1a;172.17.38.44 byoradb2&#xff1a;…

车路协同中 CUDA 鱼眼相机矫正、检测、追踪

在车路协同中,鱼眼一般用来补充杆件下方的盲区,需要实现目标检测、追踪、定位。在目标追踪任务中,通常的球机或者枪机方案,无法避免人群遮挡的问题,从而导致较高的ID Swich,造成追踪不稳定。但是鱼眼相机的顶视角安装方式,天然缓解了遮挡的问题,从而实现杆件下方的盲区…

关于“Python”的核心知识点整理大全46

目录 16.1.3 提取并读取数据 highs_lows.py highs_lows.py 16.1.4 绘制气温图表 highs_lows.py 16.1.5 模块 datetime ​编辑 16.1.6 在图表中添加日期 highs_lows.py 16.1.7 涵盖更长的时间 highs_lows.py highs_lows.py 16.1.9 给图表区域着色 highs_lows.py …

Linux操作系统(Crontab计划任务+NTP时间同步服务器)

如何修改linux系统时间 与时间相关的命令&#xff0c;查看当前的时间 运行 date 即可 cal 查看当前月份的日历 运行 timedatectl 查看时间详细参数 &#xff08; NTP&#xff1a; network time protocol 网络时间协议 &#xff09; &#xff08; local time : 本地时间 &#x…

搭建APP应用程序如何选择服务器

我经常收到许多关于如何搭建 APP 的询问。其中&#xff0c;如何选择服务器是许多初创企业和开发者经常面临的问题。带着这些问题我也通过一些科技手段收集整理了些知识&#xff0c;今天我就和大家来来探讨如何选择服务器&#xff0c;帮助您搭建一个稳定、高效、安全的 APP。 Ap…

MariaDB单机多实例的配置方法

1、什么是数据库的单机多实例 数据库的单机多实例是指在一台物理服务器上运行多个数据库实例。这种部署方式允许多个数据库实例共享相同的物理资源&#xff0c;如CPU、内存和存储&#xff0c;从而提高硬件利用率并降低成本。每个数据库实例可以独立运行&#xff0c;处理不同的…

python如何通过日志分析加入黑名单

python通过日志分析加入黑名单 监控nginx日志&#xff0c;若有人攻击&#xff0c;则加入黑名单&#xff0c;操作步骤如下&#xff1a; 1.读取日志文件 2.分隔文件&#xff0c;取出ip 3.将取出的ip放入list&#xff0c;然后判读ip的次数 4.若超过设定的次数&#xff0c;则加…

SwiftUI ArkUI 对比分析

下载链接&#x1f517;&#xff1a; https://download.csdn.net/download/gwh111/88670868 版本 1.0 (2023 年 4月) 更新说明&#xff1a; 4.7 修改问题和缺陷 4.13 新增缺陷讨论 4.14 新增引言和部分小结 4.17 高亮关键性代码&#xff0c;新增SwiftUI状态官方定义 目录 引言…

[Angular] 笔记 11:可观察对象(Observable)

chatgpt: 在 Angular 中&#xff0c;Observables 是用于处理异步数据流的重要工具。它们被广泛用于处理从异步操作中获取的数据&#xff0c;比如通过 HTTP 请求获取数据、定时器、用户输入等。Observables 提供了一种机制来订阅这些数据流&#xff0c;并可以在数据到达时执行相…

ElasticSearch:centos7安装elasticsearch7,kibana,ik中文分词器,云服务器安装elasticsearch

系统&#xff1a;centos7 elasticsearch: 7.17.16 安装目录&#xff1a;/usr/local 云服务器的安全组&#xff1a;开放 9200 和5601的端口 一、下载安装elasticsearch7.17.16 1、安装 #进入安装目录 cd /usr/local#下载elasticsearch wget https://artifacts.elastic.co/d…

ASP.NET Core 使用Log4Net写文本日志和数据库日志

1&#xff0c;先安装依赖 2&#xff0c;在项目目录新建Log4Net.config配置文件&#xff0c;必须要安装System.Data.SqlClient&#xff0c;不然日志存不进去数据库 <?xml version"1.0" encoding"utf-8"?> <log4net><!-- Define some outpu…