文章目录
- 1. SQL
- 2. HQL
-
- 2.1. 数据定义语言DDL
- 2.2. 数据操纵语言DML
- 2.3. 数据查询语言DQL
- 2.4. 桶表的相关案例
- 2.5. Hive 的集合类型
- 2.6. Hive 严格模式
- 2.7. [Hive参数配置方式](https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties)
- 2.8. [Hive 函数](https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF)
- 2.9. [hive面试套路 - 累计报表](https://blog.youkuaiyun.com/u012808902/article/details/77874722)
- 3. FLINK-SQL
-
- 3.1. [Flink最锋利的武器:Flink SQL入门和实战 ](https://blog.youkuaiyun.com/u013411339/article/details/93267838?depth_1-utm_source=distribute.pc_relevant_right.none-task-blog-OPENSEARCH-1&utm_source=distribute.pc_relevant_right.none-task-blog-OPENSEARCH-1)
- 3.2. [Flink1.10集成Hive快速入门](https://mp.weixin.qq.com/s/EQIDS-DEmo4Ld-N4s1W_Iw)
- 4. 微语:你的每个点赞,我都认真当成了喜欢
1. SQL
1.1. 初始化操作
- 链接数据库
mysql -h 192.168.1.30 -P 3306 -uroot -p123456
- 退出数据库
exit/quit/ctrl+d
- 显示时间
select now();
- 显示数据库的版本
select version();
1.2. 数据定义语言DDL(Data Definition Language)
- 关键词:
create
alter
drop
truncate(删除当前表再新建一个一模一样的表结构)
- 创建数据库create database
hadoop-01
charset=utf8; # 注意有特殊字符时,用tab键上面的字符引起来 - 查看所有的数据库/表
show databases/tables
- 查看创建数据库的语句
show create database db_test;
\G格式化,在终端可以直接拷贝出sql语句 - 查看当前使用的数据库
select database();
- 使用数据库
use db_test;
- 删除数据库
drop database db_test;
- 创建表
- 格式
- auto_increment表示自动增长
- not null 表示不能为空
- primary key 表示主键
- default 默认值
- create table 数据表名字 (
字段
类型
约束
[, 字段 类型 约束]);
- 实例
-
create table xxxxx(id int, name varchar(30));
-
create table yyyyy(id int primary key not null auto_increment, name varchar(30));
-
创建students表(id、name、age、high、gender、cls_id)
create table students( id int unsigned not null auto_increment primary key, name varchar(30), age tinyint unsigned default 0, high decimal(5,2), gender enum("男", "女", "中性", "保密") default "保密", cls_id int unsigned, is_delete bit default 0 );
-
- 格式
- 查看表结构
desc xxxxx;
- 查看创建表的创建语句
show create table xxxxx;
\G格式化,在终端可以直接拷贝出sql语句 - 修改表
-
增加列
alter table 表名 add 列名 类型;
alter table students add birthday datetime;
-
修改字段:不重命名字段
alter table 表名 modify 列名 类型及约束
alter table students modify birthday date;
-
修改表-修改字段:重命名字段
alter table 表名 change 原名 新名 类型及约束;
alter table students change birthday birth date default "2020-03-30";
-
修改表-删除字段
alter table 表名 drop 列名;
alter table students drop high;
-
- 删除表
drop table xxxxx;
- 复制表结构,不包含数据
create table stu like students;
- 复制表结构和数据
create table stu1 (select * from students);
1.3. 数据操纵语言DML(Data Manipulation Language)
-
关键词:
insert
update
delete
-
注意点
- 开发中很少使用delete,删除有物理删除和逻辑删除,其中逻辑删除可以通过给表添加一个字段(isDel),若值为1,代表删除;若值为0,代表没有删除。此时,对数据的删除操作就变成了update操作了。
- truncate和delete的区别:
truncate是删除表,再重新创建这个表。属于DDL,delete是一条一条删除表中的数据,属于DML。
-
数据的增加
- 全列插入
insert [into] 表名 values(...)
-- auto_increment:从当前最大的自增值开始偏移,即使缺少了中间部分值,也可以指定,只要不冲突就可以,一般用0或者null insert into students values(0, "小李飞刀", 20,166.66,"女","1990-01-01",0); -- 是否删除位一般采用一个bit即可 insert into students values(null, "小李飞刀", 20,166.6,"女","1990-01-01",1); -- 枚举中 的 下标从1 开始 1---“男” 2--->"女".... insert into students values(null, "小李飞刀", 20,166.6,"2","1990-01-01",1);
- 部分插入
insert into 表名(列1,...) values(值1,...)
insert into students (name, gender) values ("小乔", 2);
- 多行插入
insert into students (name, gender) values ("大乔", 2),("貂蝉", 2); insert into students values(null, "小李飞刀", 20,166.6,"女","1990-01-01",1),(null, "小李飞刀", 20,166.6,"女","1990-01-01",1);
- 全列插入
-
修改数据
update 表名 set 列1=值1,列2=值2... where 条件;
-- 全部修改 update students set gender=1; -- 只要name是小李飞刀的 全部的修改 update students set gender=1 where name="小李飞刀"; -- 只要id为3的 进行修改 update students set gender=1 where id=3; -- 只要id为3的 进行修改,修改多列 update students set age=22, gender=1 where id=3;
-
删除数据
-
物理删除
delete from 表名 where 条件
delete from students
-