DDL数据定义--Hive中数据可和表的基本操作(增删改查)
- 数据库
创建数据库:
CREATE DATABASE [ IF NOT EXISTS ] database_name
*****IF NOT EXISTS进行判断,避免创建的数据库已经存在的错误
创建一个数据库,指定数据库在HDFS上存放的位置:
CREATE DATABASE database_name location ' 存放在HDFS的路径 '
查询数据库:
显示数据库:show databases ;
过滤显示查询的数据库:show databases like ' 库名* ';
查看数据库详情:
显示数据库信息:desc database database_name;
显示数据库详细信息:desc datbase extended database_name;
切换当前数据库:
use database_name;
修改数据库:
为数据库设置键值对属性值:
alter database extended database_name set dbproperties(' createtime ' = ' 20170830 ');
删除数据库:
删除空数据库:drop database database_name;
删除数据库不存在用 IF EXISTS进行判断:drop database if exists database_name;
数据库不为空,采用cascade命令,强制删除:drop database database_name cascade;
- 表
创建表:
CREATE [ EXTERNAL ] TABLE [ IF NOT EXISTS ] table_name( //创建表,如果相同名字的表已经存在,则抛出异常,用户可以通过 IF NOT EXISTS 来忽略这个异常
//EXTERNAL关键字可以让用户创建一个外部表,默认都是内部表(管理表)
col_name data_type..... ) //创建表字段和字段类型
COMMENT table_comment //为表和列添加注释
PARTITIONEND BY ( col_name data_type .....) //创建分区表
CLUSTERED BY (col_name , col_name , ....) //创建分桶表
SORTED BY (col_name ASC / DESC,...) INTO num_byckets BUCKETS //这个命令不常用,对桶中的一个或多个列另外排序
row format delimited fields terminated by ' \t ' //以\t对字段进行分割
collection items terminated by '_' //MAP STRUCT 和 ARRAY 的分隔符(数据分割符号)
map keys terminated by ':' //MAP中的key与value的分隔符
lines terminated by '\n'; //行分隔符
管理表:
默认创建的表都是管理表,有时也称为内部表,因为这种表,Hive会(或多或少)控制着数据的生命周期。当我们删除一个管理表时,Hive也会删除这个表中的数据。
根据查询结果创建表(查询的结果会添加do新创建的表中):
create table if not exists student3 as select id , name from student ;