有时我们需要对已存在的记录进行操作(update, delete from),或者记录插入(insert into)。
update tab_nam set col_name = new value where ...;
例子:
update test_ljb set employee = 'Name' where employee = 'NewName';
delete from tab_nam where ...;
例子:
delete from test_ljb where employee = 'Test';
insert语句较为复杂,可分为单行插入、多行插入、查询插入。
单行插入,又分为部分字段插入,全字段插入。
insert into tab_nam(col_name1, col_name1, ...) values('values1', 'values2', ...);
例子
insert into test_ljb(employee, salary) values('Learn', '5000');
insert into tab_nam values ('V1', 'V2', ..., 'Vn');
例子
insert into test_ljb values('Learn', '5000', '200');
实际上,部分字段插入和全字段插入可以相互转换,如下,把
insert into test_ljb(employee, salary, bonus) values('Learn', '5000', '200'); --同一个结果
insert into test_ljb values('Learn', '5000', '200'); --同一个结果
insert into test_ljb(employee, salary) values('Learn', '5000'); --同一个结果
insert into test_ljb values('Learn', '5000', NULL); --同一个结果
insert all --这里和Mysql不一样
into tab_nam values()
into tab_nam values()
...
;
例子
insert all
into test_ljb values('insert1','','')
into test_ljb values('insert2','','')
into test_ljb values('insert3','','')
select 1 from dual;
insert into tab_nam
select ...
;
insert into test_ljb
select * from test_ljb
where 1=0;
顺便提一句,在Hive中没有truncate语句,所以想要删除所有记录,可以采用
insert overwrite test_ljb
select * from test_ljb
where 1=0;