1 . show databases;
2 . use databasename; //use default
3.show tables;
4. describe tablename;//describe user
5. create table user(id int,name string); //最简单的创建表
drop table tablename; //删除表
6. alter table user
add columns(columnname type); //增加一列
alter table user
change columnname newname type; //修改列
alter table user
rename to newname; //修改表名
7 .创建表指定分隔符,否则查询得到null
create table user(id int ,name string) row format delimited fields terminated by '\t' ;
因为hive中的数据是存储在hdfs中的,因此可以在hdfs中/user/hive/warehouse下面可以查看到所创建的表(在hdfs 表就是一个文件夹,表中的数据就是该文件夹里面的文件)
向表中导入数据:load data [local] inpath '/data' [overwrite] into table user;
//添加local表示从本地文件库中导入,否则从hdfs 上导入 ,overwrite表示是否覆盖表中的之前的数据
8.创建分区表:将相同的特性的数据归为一类,方便操作
create table person(id int,name string) partitioned by (flag int) row format delimited fields terminated by ' ';
//flag 就是一个分区标识符
alter table person
add partition(flag=0); //表示增加一个flag为0分区,此时就会在person生成flag=0的文件夹
alter table person
drop partition(flag=0); //删除分区
load data local inpath '/mnt/hgfs/linuxShared/hadoop/data.txt' into table person partition(flag=0); //将数据导入到指 定的分区中
select * from person // 将所有的分区中数据都查询出来
select * from person where flag=0 //查询出指定分区的数据
9.外部表:现有数据,然后创建表
1)hadoop fs -mkdir /data //首先创建文件夹,该文件夹指向表名
2)create external table ex_user(id int,name string) row format delimited fields by ' ' location '/data' //此时data文件 夹就是指向ex_user表的
注意:不管是内部表还是外部表都可以将数据文件上传到hdfs相应表问价下,直接查询
10.查询操作
select * from user;
select * from user where id=1;
select * from user where flag=1; //flag表示分区
select * from user order by id desc;
select name from user group by name;
select * from user u join person p on u.id=p.id; //hive表的连接操作只支持join连接表操作
11. hive中不支持表的更新(修改、删除)、不支持单条数据的插入操作。
insert into/overwrite table tablename1 select fields from tablename2;