赞
踩
1、NVL函数与Coalesce差异
-- select nvl(null,8); -- 结果是 8
-- select nvl('',7); -- 结果是""
-- select coalesce(null,null,9); -- 结果是 9
-- select coalesce("",null,9); -- 结果是 ""
1.2、
2、hive 库、表、数据的增删改查语法
- -- create table test_kuming_202311041520.students
- -- ( id bigint, name string);
-
- -- select * from test_kuming_202311041520.students;
-
- -- drop table test_kuming_202311041520.students;
-
- -- insert into test_kuming_202311041520.students (id,name) values(1,"yyyy")
-
- ---- insert into 加不加表名,都可以。
- -- insert into test_kuming_202311041520.students (id,name) values(12,"wwww")
-
- -- insert into table test_kuming_202311041520.students (id,name) values(52,"9999")
-
- ---- overwrite 的错误用法
- -- insert overwrite table test_kuming_202311041520.students (id,name) values(52,"9999") -- 这样操作是错误的;
-
- -- overwrite 的正确用法
- -- insert overwrite table test_kuming_202311041520.students
- -- select * from test_kuming_202311041520.students where id = '1'
-
-
-
-
-

4、hive 表新增字段
5、SQL之with子句
6、分享10个高级sql写法
6.1、通过分组,组合某个字段的内容。
SELECT shopname, GROUP_CONCAT(shangpinname SEPARATOR '-')
from shop_dq_sjb GROUP BY shopname;
7、 在 数据库 中创建emp 和dept 数据
表的准备:dept(部门表)、emp(员工表)、salgrade(薪资等级表)、bonus(奖金表,没数据)
- -- select * from bonus;
- -- select * from DEPT;
- -- select * from EMP;
- -- select * from SALGRADE;
-
-
- CREATE TABLE BONUS (
- ENAME VARCHAR(100) ,
- JOB VARCHAR(100) ,
- SAL int NULL ,
- COMM decimal(10,2)
- );
-
- CREATE TABLE DEPT (
- DEPTNO int NOT NULL ,
- DNAME VARCHAR(140) NULL ,
- LOC VARCHAR(130) NULL
- );
-
-
- CREATE TABLE EMP (
- EMPNO int NOT NULL ,
- ENAME VARCHAR(100) NULL ,
- JOB VARCHAR(90) NULL ,
- MGR int NULL ,
- HIREDATE DATE NULL ,
- SAL int NULL ,
- COMM decimal(7,2) NULL ,
- DEPTNO int NULL
- );
-
-
- CREATE TABLE SALGRADE (
- GRADE int NULL ,
- LOSAL int NULL ,
- HISAL int NULL
- );
-
-
- INSERT INTO DEPT VALUES ('10', 'ACCOUNTING', 'NEW YORK');
- INSERT INTO DEPT VALUES ('20', 'RESEARCH', 'DALLAS');
- INSERT INTO DEPT VALUES ('30', 'SALES', 'CHICAGO');
- INSERT INTO DEPT VALUES ('40', 'OPERATIONS', 'BOSTON');
-
-
-
- INSERT INTO EMP VALUES ('7369', 'SMITH', 'CLERK', '7902', '1980-12-17 00:00:00' , '800', null, '20');
- INSERT INTO EMP VALUES ('7499', 'ALLEN', 'SALESMAN', '7698', '1981-02-20 00:00:00' , '1600', '300', '30');
- INSERT INTO EMP VALUES ('7521', 'WARD', 'SALESMAN', '7698', '1981-02-22 00:00:00' , '1250', '500', '30');
- INSERT INTO EMP VALUES ('7566', 'JONES', 'MANAGER', '7839', '1981-04-02 00:00:00' , '2975', null, '20');
- INSERT INTO EMP VALUES ('7654', 'MARTIN', 'SALESMAN', '7698', '1981-09-28 00:00:00' , '1250', '1400', '30');
- INSERT INTO EMP VALUES ('7698', 'BLAKE', 'MANAGER', '7839', '1981-05-01 00:00:00' , '2850', null, '30');
- INSERT INTO EMP VALUES ('7782', 'CLARK', 'MANAGER', '7839', '1981-06-09 00:00:00', '2450', null, '10');
- INSERT INTO EMP VALUES ('7788', 'SCOTT', 'ANALYST', '7566', '1987-04-19 00:00:00' , '3000', null, '20');
- INSERT INTO EMP VALUES ('7839', 'KING', 'PRESIDENT', null, '1981-11-17 00:00:00' , '5000', null, '10');
- INSERT INTO EMP VALUES ('7844', 'TURNER', 'SALESMAN', '7698', '1981-09-08 00:00:00' , '1500', '0', '30');
- INSERT INTO EMP VALUES ('7876', 'ADAMS', 'CLERK', '7788', '1987-05-23 00:00:00' , '1100', null, '20');
- INSERT INTO EMP VALUES ('7900', 'JAMES', 'CLERK', '7698', '1981-12-03 00:00:00', '950', null, '30');
- INSERT INTO EMP VALUES ('7902', 'FORD', 'ANALYST', '7566', '1981-12-03 00:00:00' , '3000', null, '20');
- INSERT INTO EMP VALUES ('7934', 'MILLER', 'CLERK', '7782', '1982-01-23 00:00:00' , '1300', null, '10');
-
-
- INSERT INTO SALGRADE VALUES ('1', '700', '1200');
- INSERT INTO SALGRADE VALUES ('2', '1201', '1400');
- INSERT INTO SALGRADE VALUES ('3', '1401', '2000');
- INSERT INTO SALGRADE VALUES ('4', '2001', '3000');
- INSERT INTO SALGRADE VALUES ('5', '3001', '9999');
-
-
-
-

8、 Hive——hive性能优化
9、oracle的 listagg() WITHIN GROUP () 行转列函数的使用
10、Mysql与Oracle函数差异以及SQL对比
11、oracle的 listagg() WITHIN GROUP () 行转列函数的使用
12、PostgreSQL 创建表时如何为列添加注释
13、关于Hive使用动态分区插入数据详解
16、Hive的hive.exec.parallel参数说明
17、hive.exec.parallel.thread.number
17.1、
set hive.execution.engine=mr; --mr引擎
set hive.exec.dynamic.partition=true; --允许动态分区
set hive.auto.convert.join=true; --此配置可能会导致数据倾斜
set hive.map.aggr=true; --是否开启Map端聚和
set hive.groupby.mapaggr.checkinterval = 100000 ;--在Map端进行聚和的条目数
set hive.groupby.skewindata = true; --有数据倾斜的时候进行负载均衡
set hive.exec.parallel=true; --并行开关
set hive.exec.parallel.thread.number =16; --并行条数
set hive.exec.dynamic.partition.mode=nonstrict; --非严格模式
--set hive.exec.max.dynamic.partitions=100000; --总共允许创建的最大动态分区数
--set hive.exec.max.dynamic.partitions.pernode=100000;--每个mapper或reducer可以创建的最大动态分区个数
--# map阶段内存不足
set mapreduce.map.memory.mb=8192;
set mapreduce.map.java.opts=-Xmx8120m;
--# reduce阶段内存不足
set mapreduce.reduce.memory.mb=8120;
set mapreduce.reduce.java.opts=-Xmx8120m;
18、Hive中如何调整MapReduce任务的内存占用
Hive中如何调整MapReduce任务的内存占用? – 编程技术之美-IT之美https://www.itzhimei.com/archives/4673.html
20、Hive操作——删除表(drop、delete ,truncate)
20.4、百度安全验证https://baijiahao.baidu.com/s?id=1708962497266232303&wfr=spider&for=pc
20.6、
21、hive常用日期函数
22、Hive SQL 语法大全
23、Hive sql - 常用窗口函数(万字超详解)
24、SQL四种方法实现行列转换超详细
26、hive sql
26.2、
28、动态分区的实现逻辑
- -- drop table `dwd.test_dong_202311301621`
- -- 创建表(带分区,带防止字段错位)
- CREATE TABLE `dwd.test_dong_202311301621`(
- `id` string COMMENT 'Id',
- `name_ed` string COMMENT '姓名',
- `dept_name` string COMMENT '部门')
- COMMENT 'dong_测试表'
- PARTITIONED BY (
- `b_n` string COMMENT '分区字段')
- stored as parquet --(etl任务,从其他数据库导入hive数仓,字段内容错位的时候,要加上这个条件)
-
-
- show create TABLE `dwd.test_dong_202311301621`;
-
-
- --===========插入数据
-
- set hive.exec.parallel=true;
- set hive.exec.parallel.thread.number=16;
-
- set hive.exec.dynamic.partition.mode=nonstrict;
- set hive.exec.dynamic.partition=true;
- set hive.execution.engine=mr;
- set hive.exec.max.dynamic.partitions=10000;
- set hive.exec.max.dynamic.partitions.pernode=10000;
-
- set mapreduce.map.memory.mb=7120;
- set mapreduce.map.java.opts=-Xmx7120m;
- set mapreduce.reduce.memory.mb=7120;
- set mapreduce.reduce.java.opts=-Xmx7120m;
-
- -- insert overwrite table dwd.test_dong_202311301621 partition(bsn_mon)
-
- insert overwrite table dwd.test_dong_202311301621 partition(b_n)
- select fy_id,wtdw,xitonglaiy,substring(current_timestamp(),-3,3)
- from dwd.dwd_fin_ywxt_otm_yjmxb_three limit 100;
-
-
-
- -- select count(*) from dwd.test_dong_202311301621;
- -- truncate table dwd.test_dong_202311301621;
- -- select * from dwd.test_dong_202311301621;
-
-
- --==================查看分区
-
- -- show partitions dwd.test_dong_202311301621;

29、一个简单存储过程插入数据
-
-
- -- CREATE table T500(
- -- id INTEGER);
- --
- -- select * from T500
-
- -- TRUNCATE table T1
-
-
-
- -- create procedure sum_total(a int)
- -- begin
- -- declare sum int default 0; -- default 是指定该变量的默认值
- -- declare i int default 0;
- -- while i<=a DO -- 循环开始
- -- set sum=sum+i;
- -- set i=i+1;
- -- -- 向一张表中插入数据(此表两个varchar字段)
- -- INSERT into T500 VALUES(i);
- -- end while; -- 循环结束
- -- select sum; -- 输出结果
- -- end;
- -- -- 执行存储过程
- -- call sum_total(499);
- --
- -- -- 删除存储过程
- -- drop procedure if exists sum_total;
-

30、查看一张表的数据大小
- select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data
- from information_schema.TABLES
- where table_schema = 'test926' and table_name='test_jack_500';
-
-
-
-
-
-
- --===================
- 修改数据库名字,和表名字,即可。
- where table_schema = 'test926' and table_name='test_jack_500';
-
-
-
- 测试多少条数据
- select count(*) from test_jack_500;

31、RDBMS是什么意思(关系型数据库管理系统的缩写)
31.1、
RDBMS是什么意思_笔记大全_设计学院https://www.python100.com/html/Q5S33ZGN7W54.html
- -- postpreSQL 数据库
-
- -- ads_port_cli_num_detail 表名
-
- ALTER TABLE ads_port_cli_num_detail ADD order_number_de VARCHAR(500); -- 添加字段
- COMMENT ON COLUMN ads_port_cli_num_detail.order_number_ord IS '订单号'; -- 字段添加(备注)
- COMMENT ON COLUMN ads_port_cli_num_detail.order_number_de IS '运单号';-- 字段添加(备注)
-
-
-
- -- 详情操作过程
- CREATE TABLE ads_fin_yjmxb_final_guangxi_gngj(
- etl_time VARCHAR(256) ,
- g_opecenter VARCHAR(256) ,
- g_period VARCHAR(256) ,
- g_inter_or_dom VARCHAR(256) ,
- g_inter_or_dom_fenkaitongji VARCHAR(256) ,
- g_inter_or_dom_tatal VARCHAR(256) ,
- g_zb_gngj VARCHAR(256)
- )
-
- -- 添加注释到表
- COMMENT ON TABLE ads_fin_yjmxb_final_guangxi_gngj IS '广西_国际国内的毛利占比_明细表';
-
- -- 添加注释到列
- COMMENT ON COLUMN ads_fin_yjmxb_final_guangxi_gngj.etl_time IS '调度时间';
- COMMENT ON COLUMN ads_fin_yjmxb_final_guangxi_gngj.g_opecenter IS '营运中心';
- COMMENT ON COLUMN ads_fin_yjmxb_final_guangxi_gngj.g_period IS '会计期间';
- COMMENT ON COLUMN ads_fin_yjmxb_final_guangxi_gngj.g_inter_or_dom IS '国际国内';
- COMMENT ON COLUMN ads_fin_yjmxb_final_guangxi_gngj.g_inter_or_dom_fenkaitongji
- IS '每个月国际国内数量';
- COMMENT ON COLUMN ads_fin_yjmxb_final_guangxi_gngj.g_inter_or_dom_tatal IS '每个月国际国内总数量';
- COMMENT ON COLUMN ads_fin_yjmxb_final_guangxi_gngj.g_zb_gngj IS '国际国内的毛利占比';
-
-

- -- 查看表信息
- -- 查看表中字段
- desc shop_dq;
- SHOW COLUMNS FROM emp;
- -- 查看创表sql语句
- show CREATE table shop_dq;
- -- 添加字段
- ALTER table shop_dq add yuc VARCHAR(100) comment '测试字段';
- -- 修改字段
- alter table shop_dq modify yuc int comment '测试字段int';
- -- 指定字段添加的位置
- alter table shop_dq add yuc_shop_id int AFTER shopid;
- -- 删除字段
- alter table shop_dq drop yuc_shop_id;
- -- 删除多个字段
- alter table shop_dq drop yuc_shop_id,drop yuc;
-
- -- 查询表信息
- select * from shop_dq
-
-
-
-
-
-

- -- 分区赋值与代码书写逻辑(动态分区与静态分区)
-
- set hive.exec.parallel=true;
- set hive.exec.parallel.thread.number=16;
-
- set hive.exec.dynamic.partition.mode=nonstrict;
- set hive.exec.dynamic.partition=true;
- set hive.execution.engine=mr;
- set hive.exec.max.dynamic.partitions=10000;
- set hive.exec.max.dynamic.partitions.pernode=10000;
-
- set mapreduce.map.memory.mb=7120;
- set mapreduce.map.java.opts=-Xmx7120m;
- set mapreduce.reduce.memory.mb=7120;
- set mapreduce.reduce.java.opts=-Xmx7120m;
-
-
- --动态分区赋值方法一
- insert overwrite table dwd.dwd_fin_ywxt_otm_yjmxb_two partition(bsn_mon)
- select
- '$[now(yyyy-MM-dd HH:mm:ss)]' AS ETL_TIME,
- fszt,
- concat(substring(orh.ddcjtimg,1,7),'-01') as bsn_mon
- from dwd.dwd_fin_ywxt_otm_yjmxb_one orh
-
-
- --动态分区赋值方法二
- insert overwrite table dwd.dwd_fin_yjmxb_final partition(bsn_mon='$[time(yyyy-MM-01,-1M)]')
- select
- '$[now(yyyy-MM-dd HH:mm:ss)]' AS ETL_TIME,
- id, --ID
- concat(substring(orh.ddcjtimg,1,7),'-01') as bsn_mon
- from dwd.dwd_fin_ywxt_otm_yjmxb_one orh
-
-
- --静态分区赋值方法一
- insert overwrite table dwd.dwd_fin_yjmxb_final partition(bsn_mon='202312')
- select
- '$[now(yyyy-MM-dd HH:mm:ss)]' AS ETL_TIME,
- id, --ID
- concat(substring(orh.ddcjtimg,1,7),'-01') as bsn_mon
- from dwd.dwd_fin_ywxt_otm_yjmxb_one orh
-
-
-
-
-

35、复制表,插入表数据
- SELECT * FROM `dept`
-
-
- -- ======= 复制一张表(除了数据没有复制过来,索引、存储引擎、备注、默认字符集等等都完成了复制)
- create table test_dept like dept;
- -- ========= 查询新表
- select * from test_dept;
- -- ========= 向新表插入数据(不用加values关键字)
- insert into test_dept select * from dept;
-
-
-
- https://blog.csdn.net/Crezfikbd/article/details/129796417
36、 SQL函数大全,史上最全,值得收藏!
- -- 对日期和时间的移位(指定时间格式)
- select date_sub(curdate(),INTERVAL 1 month);
- SELECT DATE_ADD(curdate(), INTERVAL -1 month);
- select TIMESTAMPADD(month,-1,curdate());
-
- select TIMESTAMPADD(month,-1,now());
-
- -- 两个时间相减
- select DATEDIFF('2023-12-23','2022-12-23');
37、MySQL中concat()、concat_ws()、group_concat()三个函数的使用技巧案例与心得总结
38、MySQL中float、double、decimal三个浮点类型的区别与总结!
38.2、
38.3、
39、MySQL(61)MySQL REGEXP:正则表达式
40、SQL中EXTRACT() 函数
41.2、
MySQL存储过程和触发器https://c.biancheng.net/mysql/85/
42、ddl和dml的区别
百度安全验证https://baijiahao.baidu.com/s?id=1708962497266232303&wfr=spider&for=pc
43、SQL中Exists用法
43.2、
44、 mysql中longtext和longblob有啥区别
44.2、
45、 图片保存在数据库中
- CREATE TABLE images (
- id INT(11) NOT NULL AUTO_INCREMENT,
- named VARCHAR(50) NOT NULL,
- datad LONGBLOB NOT NULL,
- PRIMARY KEY (id)
- );
-
-
-
- select * from images;
-
-
- -- truncate table images;
-
- -- === 查看图片可以存放的路径
- show global VARIABLES like '%secure%';
- -- ======= 测试一下
- select LOAD_FILE("D:/mysql/Uploads/my_images/my_image.png");
-
- -- 插入数据
- INSERT INTO images (named,datad) VALUES
- ('my_image.png',LOAD_FILE("D:/mysql/Uploads/my_images/my_image.png"));
-
-
- select * from images;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-

45.2、
45.3、
45.4、
47、各种数据库中别名的使用情况(注意细节)
47.1、先总结归纳说明一下
1、 在MySQL中group by,order by,having后可以使用别名,而在where后不可使用别名
2、 在Oracle中order by后可以使用别名,group by,having,where不可以使用别名,
所以尽量还是写规范点,套一层子查询。
3、hive与oracle 的用法是否一致,还需要去验证。
47.2、
1、SQL中别名的使用场景_sql别名使用规则-CSDN博客文章浏览阅读1k次。1.SQL 别名用于为 表 或 表中的列 提供临时名称。2.SQL 别名通常用于使 表名 或 列名 更具可读性。3.SQL 一个别名只存在于查询期间。4.别名使用 AS 关键字赋予。_sql别名使用规则https://blog.csdn.net/m0_54115614/article/details/130115898 2、mysql5.7可以在group by 、having、order by中使用别名,但是有where 不可以_substr怎么起别名groupby-CSDN博客文章浏览阅读519次。在 group by 、having、order by 可以使用别名 示例:select count(1) a,substr(landlord_name,1,2) as c from mjc_lease_details dGROUP BY c having c like '丁%' order by c等价于select count(1) a,substr(landlord_name,1,2) as c from mjc_lease_details dGROUP BY substr(landlor_substr怎么起别名groupby
https://blog.csdn.net/jokertiger/article/details/120853576
48、
49、-- 字符串处理函数
SELECT LOCATE(',', 'hello, world!');
-- 答案是6
SELECT SUBSTRING_INDEX('hello, world!',',', 1);
-- 答案是hello
SELECT SUBSTRING('hello, world!',1, 1);
-- 答案是h
SELECT LENGTH('hello, world!');
-- 答案是13
50、
51、
52、
53、
54、
55、
56、
57、
58、
59、
60、
61、
62、
63、
64、
65、
66、
67、
68、
69、
70、
71、
72、
73、
74、
75、
76、
77、
78、
79、
80、
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。