(17)大数据之hive的sql语句大全

创建数据库
create database if not exists myhive ;
创建数据库如果不存在myhive;
(17)大数据之hive的sql语句大全

创建数据库并且指定存储位置
create database myhive3 location ‘/myhive3’;
创建数据库myhive3 本地 ‘/myhive3’;
(17)大数据之hive的sql语句大全

修改数据库
可以修改一些数据库属性,但是数据库的元数据信息不可以改变,包括数据库的名称和数据库所在的位置。

alter database myhive3 set dbproperties(‘createtime’=‘20190501’);

修改数据库myhive3 设置 数据库属性(‘创建时间’=‘20190501’);
(17)大数据之hive的sql语句大全

查看数据库详细信息

desc database myhive3;
查看数据库myhive3;

desc database extended myhive3;
查看数据库拓展myhive3;(查看拓展信息,可以清楚地看到附加属性。)
(17)大数据之hive的sql语句大全

删除数据库操作

drop database myhive3
删除数据库myhive3;(注意:如果数据库下面有表的话,会报错)

drop database myhive3 cascade;
删除数据库,hyhive3 级联(注意:这样强制删除了数据库和数据表,准备跑路)

(17)大数据之hive的sql语句大全

内部表和外部表的区别

内部表&外部表
未被external修饰的是内部表(managed table),被external修饰的为外部表(external table);
区别:
内部表数据由Hive自身管理,外部表数据由HDFS管理;
内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己制定;
删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除;
对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;)

内部表(管理表)的操作

创建数据表
1,use hive;
使用hive数据库;
(17)大数据之hive的sql语句大全
2,create table stu(id int,name string);
创建数据表stu(名字 类型);
(17)大数据之hive的sql语句大全
3,insert into stu values(1,“zhangsan”);
插入stu的属性(id,name);
(17)大数据之hive的sql语句大全
4,select*from stu;
选择全部来自stu;
(17)大数据之hive的sql语句大全

关于字段类型

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Types

创建表并指定字段之间的分隔符
create table stu2(id int,name string) row format delimited fields deminated by ‘\t’ stored as textfile location ‘/user/stu2’;
创建表stu2(名字 类型)行格式以\t分割字段结束 储存为文本文件到本地。。。
(17)大数据之hive的sql语句大全
根据查询结果创建表
create table stu3 as select*from stu2;
创建表对于stu2的结果
(17)大数据之hive的sql语句大全
根据已存在的表结构创建表
create table stu4 like stu2;

(17)大数据之hive的sql语句大全
查询表的类型
desc formatted stu2;
查询格式(类型)stu2

(17)大数据之hive的sql语句大全

外部表的操作

创建表
create external table techer(id string, name string ) row format delimited fields teminated by ‘\t’;
external:外部
(17)大数据之hive的sql语句大全
从本地文件系统向表中加载数据
load data local inpath‘/export/servers/hivedatas/student.csv’ into table techer;
加载数据本地地址。。。到表techer;

加载数据并覆盖已有数据
load data local inpath ‘…’ overwrite into table techer;

如果删掉student表,hdfs的数据仍然存在,并且重新创建表之后,表中就直接存在数据了,因为我们的student表使用的是外部表,drop table之后,表当中的数据依然保留在hdfs上面了