DDL语言
用于定义数据表结构和数据库对象的语言
针对数据库操作: 创建数据库
语法格式:
查询数据库CREATE (DATAbase|SCHEMA) [IF NOT EXISTS] database_name
// DATAbase与SCHEMA无区别
[COMMENT database_comment] // 添加数据库描述
[LOCATION dabatase_location] // 设置数据库存放地址
[WITH DBPROPERTIES(property_name=property_value,...)]; // 设置数据库属性
语法格式:
SHOW (DATAbaseS|SCHEMAS); // 查询当前所有数据库
SHOW (DATAbaseS|SCHEMAS) LIKE 'identifer_with_wildcards'; // 模糊查询数据库
DESCRIBE|DESC (DATAbase|SCHEMA) [EXTENDED]database_name;
extended 可以查询到数据库的属性parameters(不加extended无法看到parameters)parameters 创建表时由WITH DBPROPERTIES()语句创建
切换数据库USE database_name; // 切换数据库
SELECT current_database(); // 查看当前所处数据库
修改数据库
语法格式:
ALTER (DATAbase|SCHEMA) database_name
SET DBPROPERTIES(property_name=property_value,...);
ALTER (DATAbase|SCHEMA) database_name
SET OWNER [USER|ROLE] user_or_role;
删除数据库
语法格式:
DROP (DATAbase|SCHEMA) [IF EXISTS] database_name [RESTRINCT|CASCADE];
restrinct 如果当前数据库中有表的话,会告诉你删除数据库失败cascade 连同数据库中的表一起删除
针对数据表操作:
创建数据表
语法格式:
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name].table_name
[(col_name data_type [COMMENT col_comment],...[constraint_specification])]
// 列名 数据类型 【列描述】【约束】
[COMMENT table_comment] // 表描述
[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]
[SKEWED BY (col_name,col_name,...)]
ON ((col_value,col_value,...),(col_value,col_value,...),...)
[STORED AS DIRECTORIES] // 设置分桶表
[
[ROW FORMAT row format] // 设置格式
[STORED AS file_format] | [STORED BY 'storage.handler.class.name'] [WITH SERDEPROPERTIES(...)]] // 设置文件存储格式
[LOCATION hdfs_path] // 设置存储路径
[TBLPROPERTIES(property_name=property_value,...)] // 设置自定义表元数据
[AS select_statement];
/ * 第二种建表方法 * /
CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name].table_name
LIKE existing_table_or_view_name
[LOCATION hdfs_path]; // 创建表像已存在某某表结构一样
内部表(删除表会同时删除HDFS文件)外部表[EXTERNAL](删除表只会删除源数据,并不会删除HDFS文件,相当于一个外部链接)临时表[TEMPORARY](当前会话有效,会话结束,临时表消失)分区表[PARTITION]分桶表[CLUSTER]倾斜表[SKEWED]
查看数据表
DESCRIBE|DESC table_name;
SHOW CREATE TABLE table_name; // 查看建表语句
修改数据表
语法格式:
ALTER TABLE table_name RENAME TO new_table_name; // 更改表名
ALTER TABLE table_name SET TBLPROPERTIES table_properties;
// 更改自定义表元数据
ALTER TABLE table_name [PARTITION partition_spec] CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|ALTER column_name] [CASCADE|RESTRINCT]; // 更改列名列属性【列描述】【修改列在数据库中的排列位置】
ALTER TABLE table_name ADD COLUMNS(col_name col_type,col_name col_type,...);
// 增加列
删除数据表
语法格式:
DROP TABLE [IF EXISTS] table_name [PURGE];
如果指定purge,表中的数据删除后不会转到.Trash/Current目录,因此无法进行数据恢复



