Hive的DDL操作

MySQL
DDL 数据定义语言--create  alter  drop 
DML 数据操纵语言--insert delete update select 
DCL 数据控制语言--grant revoke deny


Hive的DDL操作
~库操作
~表操作

一、库操作
Hive 的数据库相当于关系型数据库中的命名空间,而从本质上来说,Hive 中的数据库就是 HDFS 上的一个目录。
数据库常用的操作有:创建、查看、修改、删除等。
  1.创建库
 #完整语法:
 CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
 [COMMENT database_comment]  //关于数据库的描述
 [LOCATION hdfs_path]    //指定数据库在HDFS上的存储位置
 [WITH DBPROPERTIES (property_name=property_value, ...)]; //指定数据库属性
    1)最简单的用法
        create database mydb;
        --当名为 mydb 的数据库当前不存在时才能创建成功,否则会报错,需要使用下面的用法。
        create database if not exists mydb;
    2)创建数据库指定存储位置
    创建数据库时,数据库的默认存储位置由参数 hive.metastore.warehouse.dir 指定,默认为 /user/hive/warehouse。
    需要注意的是,default 数据库没有自己的目录,是直接存放在参数 hive.metastore.warehouse.dir 指定目录下。另外,可以通过指定 LOCATION 选项指定数据库在 HDFS中的存储位置。
        create database mydb location '/db/mydb';
    3)创建数据库时指定描述信息
     create database mydb comment 'this is mydb database'; 
    4)创建数据库时指定键值对信息
     create database mydb with dbproperties ('own'='wei', 'day'='20200402');

     例:
     (1)创建普通的数据库
     create database t1;
     (2)创建库的时候检查存与否
     create database if not exists t1;
     (3)创建库的时候带注释
     create database if not exists t2 comment 'learning hive';
     (4)创建带属性的库
     create database if not exists t3 with dbproperties('creator'='hadoop','date'='2018-04-05');
     create database if not exists t4 with dbproperties('a'='1','b'='2');

  2.查看库:
     (1)查看有哪些数据库
     show databases;
     (2)显示数据库的详细属性信息
     desc database 库名;
     desc database extended t3;
     show databases like 's*';
     (3)查看正在使用哪个库
     在 hive命令行显示当前数据库两种方式。
     a)、可以在hive命令行执行以下语句显示当前数据库:
     select current_database();
     b)、可以设置hive属性在命令行显示当前数据库:
     set hive.cli.print.current.db=true;
     注: 这是当前的session窗口有效;永久修改,向hive-site.xml文件添加一下配置:
     <property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
    </property>
     (4)查看创建库的详细语句
     show create database t3;
     
  3.切换库:
     use database;

  4.删除库:
     默认情况下,hive 不允许删除包含表的数据库,有两种解决办法:
     # 手动删除库下所有表,然后删除库
     # 使用 cascade 关键字
     drop database if exists dbname cascade;
     默认情况下就是 restrict drop database if exists myhive ==== drop database if      exists myhive restrict
    例:
    (1)删除不含表的数据库
    语法:
     drop database 库名;--只能删除空库 里面有没有表格
     drop database if not exists 库名;
   例:show tables in t1;
     drop database t1;
     show databases;
     (2)删除含有表的数据库  
     语法:drop database 库名 cascade;--删除库 非空库  
   例:create database t3;
     use t3;
     create table a1(id int);
     drop database if exists t3 cascade;
     
  5.修改库:基本不用,一般只使用对扩展属性的修改
语法:
ALTER DATABASE 数据库名 SET DBPROPERTIES (属性名=属性值, ...); 
ALTER DATABASE 数据库名 SET OWNER [USER|ROLE] user_or_role;
例如,修改 mydb 的扩展属性。
alter database mydb set dbproperties ('own'='god', 'day'='2020-2-2');

二、表的操作:
1、Hive的数据类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值