HQL的基本语法

 数据库

目录

 数据库

创建数据库

显示所有数据库

 查看数据库信息

 修改数据库

 删除数据库

 表

创建表:

基本数据类型

 复杂数据类型

查看表:

 修改表

 DML

文件导入hive表中

Insert

Export&Import

创建数据库

CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
    [COMMENT database_comment]
    [LOCATION hdfs_path]
    [WITH DBPROPERTIES (property_name=property_value, ...)];

 DATABASE|SCHEMA:用于限定创建数据库或数据库模式
IF NOT EXISTS:目标对象不存在时才执行创建操作(可选)
COMMENT:起注释说明作用
LOCATION:指定路径,默认路径${hive.metastore.warehouse.dir}/database_name.db
WITH DBPROPERTIES:为数据库提供描述信息,如创建database的用户或时间


显示所有数据库

SHOW DATABASES [LIKE '通配表达式'];
*任意个任意字符  |或的关系

 查看数据库信息

DESCRIBE DATABASE [EXTENDED] db_name;
EXTENDED 为查看更多信息 WITH DBPROPERTIES

 修改数据库

 用户可以使用alter database命令修改数据库某些信息,其中能够修改的信息包括dbproperties、location、owner user。需要注意的是:修改数据库location,不会改变当前已有表的路径信息,而只是改变后续创建的新表的默认的父目录。

--修改dbproperties
ALTER DATABASE database_name SET DBPROPERTIES (property_name=property_value, ...);
 
--修改location
ALTER DATABASE database_name SET LOCATION hdfs_path;
 
--修改owner user
ALTER DATABASE database_name SET OWNER USER user_name;

 删除数据库

DROP DATABASE [IF EXISTS] database_name [RESTRICT|CASCADE];
RESTRICT:严格模式,若数据库不为空,则会删除失败,默认为该模式。
CASCADE:级联模式,若数据库不为空,则会将库中的表一并删除。

 表

创建表:

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] 
[db_name.]table_name   
[(col_name data_type [COMMENT col_comment], ...)]
[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]
[ROW FORMAT row_format] 
[STORED AS file_format]
[LOCATION hdfs_path]
[TBLPROPERTIES (property_name=property_value, ...)]

 TEMPORARY 临时表,该表只在当前会话可见,会话结束,表会被删除。
EXTERNAL   外部表,与之相对应的是内部表(管理表)。管理表意味着Hive会完全接管该表,包括元数据和HDFS中的数据。而外部表则意味着Hive只接管元数据,而不完全接管HDFS中的数据。
data_type  基本数据类型和复杂数据类型
PARTITIONED BY  创建分区表
CLUSTERED BY ... SORTED BY...INTO ... BUCKETS  创建分桶表
ROW FORMAT  指定SERDE,SERDE是Serializer and Deserializer的简写。1. Hive使用SERDE序列化和反序列化每行数据。2. SERDE关键字可用于指定其他内置的SERDE或者用户自定义的SERDE。例如JSON SERDE,可用于处理JSON字符串。

基本数据类型

HQL的基本语法_第1张图片

 复杂数据类型

HQL的基本语法_第2张图片

查看表:

SHOW TABLES [IN database_name] LIKE ['identifier_with_wildcards'];

desc 表名

 修改表

#表的重命名

ALTER TABLE table_name RENAME TO new_table_name;

#添加列

ALTER TABLE table_name ADD COLUMNS (col_name data_type [COMMENT col_comment], ...);

#更新列

ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name];

#替换列

ALTER TABLE table_name REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...);

#删除

DROP TABLE [IF EXISTS] table_name;

#清空

TRUNCATE [TABLE] table_name;

 DML

文件导入hive表中

LOAD DATA [LOCAL] INPATH 'filepath' 
[OVERWRITE] INTO TABLE tablename 
[PARTITION (partcol1=val1, partcol2=val2 ...)];

(1)local:表示从本地加载数据到Hive表;否则从HDFS加载数据到Hive表。

(2)overwrite:表示覆盖表中已有数据,否则表示追加。

(3)partition:表示上传到指定分区,若目标是分区表,需指定分区。

Insert

INSERT (INTO | OVERWRITE) TABLE tablename 
[PARTITION (partcol1=val1, partcol2=val2 ...)] 
select_statement;

(1)INTO:将结果追加到目标表

(2)OVERWRITE:用结果覆盖原有数据

Export&Import

Export导出语句可将表的数据和元数据信息一并到处的HDFS路径,Import可将Export导出的内容导入Hive,表的数据和元数据信息都会恢复。Export和Import可用于两个Hive实例之间的数据迁移。

--导出
EXPORT TABLE tablename TO 'export_target_path'
 
--导入
IMPORT [EXTERNAL] TABLE new_or_original_tablename FROM 'source_path' [LOCATION 'import_target_path']

你可能感兴趣的:(大数据开发,数据库,mysql)