一,DDL命令
DDL
(
data definition language
): 主要的命令有
CREATE
、
ALTER
、
DROP
等。
DDL
主要是用在定义、修改数据库对象的结构 或 数据类型。
![](https://i-blog.csdnimg.cn/blog_migrate/28a0e1d7ab2511e6e2ab12b67f033228.png)
1.数据库操作
创建数据库语法
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment] [LOCATION hdfs_path] [MANAGEDLOCATION hdfs_path]
[WITH DBPROPERTIES (property_name=property_value, ...)];
create database if not exists mydb1 comment 'create mydb1' location 'hdfs_path'
-- 查看所有数据库
show database;
-- 查看数据库信息
desc database mydb2;
desc database extended mydb2;
describe database extended mydb2;
--使用数据库
use mydb;
--删除数据库
-- 删除一个空数据库
drop database databasename;
-- 如果数据库不为空,使用 cascade 强制删除
drop database databasename cascade;
2.表操作
--创建表的语法
create [external] table [IF NOT EXISTS] table_name [(colName colType [comment 'comment'], ...)]
[comment table_comment]
[partition by (colName colType [comment col_comment], ...)] [clustered BY (colName, colName, ...)
[sorted by (col_name [ASC|DESC], ...)] into num_buckets buckets]
[row format row_format] [stored as file_format] [LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)] [AS select_statement];
--存储子句。
ROW FORMAT DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char]
[MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char] | SERDE serde_name
[WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)]
SerDe是 Serialize/Deserilize 的简称, hive使用Serde进行行对象的序列与反序列化。
文件格式(后续详细介绍)
stored as SEQUENCEFILE|TEXTFILE|RCFILE
。如果文件数据是纯文本,可以使用 STORED AS TEXTFILE
(缺省);如果数据需要压缩,使用
STORED AS SEQUENCEFILE(二进制序列文件)。
AS。后面可以接查询语句,表示根据后面的查询结果创建表
LIKE。like 表名,允许用户复制现有的表结构,但是不复制数据
内部表
&
外部表:
注意:EXTERNAL