create database db3;#if not exists : 如果库不存在则创建 存在则不创建。如果没有该字段库存在则报错
create database if not exists db3;create database db4
comment 'this is db4'
location '/db4'
with dbproperties('ver'='1.0');create database db5
comment 'this is db4'
location '/db55' #元数据中是对应的
with dbproperties('ver'='1.0');
3.库的其他操作
#查看库
#通配符可以是 *任意个数任意内容的字符 |表示或
#格式:SHOW DATABASES [LIKE '匹配规则-不是正则表达式'];
show databases;#查看库的信息 :
#extended :有了该字段才可以查看库的属性
#格式 :desc database [extended] 库名;
desc database db5;#选库:use 库名
use db1;#删除库 :
#[IF EXISTS] :如果库存在则删除不存在则不删。如果没有该字段库不存在则报错。
#[RESTRICT|CASCADE] :默认使用的是RESTRICT只能删除空库 cascade:可以删除非空的库
#格式:DROP DATABASE [IF EXISTS] 库名 [RESTRICT|CASCADE];
drop database db1;
drop database if exists db1;
drop database db2 cascade;#查看库的信息-建库语句
show create database 库名;#修改数据库
--修改dbproperties
#ALTER DATABASE 库名 SET DBPROPERTIES ('属性名'='属性值', ...);
alter database db3 set dbproperties('ver'='1.0');--修改location
#ALTER DATABASE 库名 SET LOCATION 'HDFS的路径';
alter database db3 set location 'hdfs://hadoop102:8020/demo/db33'--修改owner user
#ALTER DATABASE 库名 SET OWNER USER 用户名;
desc database extended db3;
表和库的路径演示
createdatabase d1
location '/d1';createtable stu(
id int)
location '/d2';
表的操作
创建表
#[TEMPORARY] :创建一张临时表(当退出客户端时临时表被删除)#[EXTERNAL] :创建外部表 如果没有该字段创建的是管理表#[IF NOT EXISTS] :如果表不存在则创建存在则不创建 如果没有该字段表存在则报错CREATE[TEMPORARY][EXTERNAL]TABLE[IFNOTEXISTS][库名.]表名 [(字段名 字段类型 [COMMENT 字段的描述信息], 字段名2 字段类型 [COMMENT 字段的描述信息],...)][COMMENT 表的描述信息]#创建分区表 - 后面讲[PARTITIONED BY(字段名 字段类型 [COMMENT 字段的描述信息],...)]#创建分桶表 - 后面讲[CLUSTEREDBY(字段名1, 字段名2,...)#对分桶字段中的内容排序 - 后面讲[SORTED BY(字段名 [ASC|DESC],...)]INTO 桶的数量 BUCKETS][ROW FORMAT row_format]#存储格式 - 后面讲(默认是textfile)[STORED AS file_format]#一张表对应HDFS上的一个目录[LOCATION hdfs的路径]#表的属性[TBLPROPERTIES ('属性名'='属性值',...)]2.创建表案例#案例一#[IF NOT EXISTS] :如果表不存在则创建存在则不创建 如果没有该字段表存在则报错createtableifnotexists emp(id intcomment'this is id',name string comment'this is name')comment'this is emp'location '/demo/emp'tblproperties('ver'='1.0');#案例二(创建临时表)#[TEMPORARY] :创建一张临时表(当退出客户端时临时表被删除)createTEMPORARYtable emp2(id int,name string);#案例三 (基于现有的表创建一张新表)#create table 新表名 like 已经存在的表的表名;createtable emp3 like emp;#案例四:将查询的结果创建成一张表createtable 表名asselect查询语句;createtable emp5
asselect*from emp;
ROW FORAMT DELIMITED
[FIELDSTERMINATEDBYchar]-- 各字段之间用什么分隔[COLLECTION ITEMS TERMINATEDBYchar]-- 复杂数据类型中各元素之间用什么分隔开[MAP KEYSTERMINATEDBYchar]-- map的key和value用什么分隔开[LINESTERMINATEDBYchar]-- 每条数据之间用什么分隔[NULL DEFINED ASchar]-- 数据中的null在文件中用什么字符表示=======================================================================建表语句格式一(数据不是json数据)
createtable student(
name string,
friends array<string>,
students map<string,int>,
address struct<street:string,city:string,postal_code:int>)row format delimited
fieldsterminatedby','-- 各字段之间用什么分隔
collection items terminatedby'-'-- 复杂数据类型中各元素之间用什么分隔开
map keysterminatedby':';-- map的key和value用什么分隔开=====================================================================建表语句格式一(数据是json数据)
createtable student_json(
name string,
friends array<string>,
students map<string,int>,
address struct<street:string,city:string,postal_code:int>)row format serde 'org.apache.hadoop.hive.serde2.JsonSerDe';-- 用来处理json数据=======================================================================复杂数据类型如何查里面的元素:
select friends[0],students['xiaoyangyang'],address.city from student_json;说明:
select 数组类型[索引值],map类型['key'],struct类型.属性名 from student_json;=======================================================================1.表的操作#查看所有表showtables;#查看表信息#[formatted] :可以查看表的详细信息。没有该字段只能看字段信息desc[formatted] 表名;
创建外部表和内部表#创建外部表#[EXTERNAL] : 创建外部表 没有该字段就是内部表create external table external_table(id int,name string)row format delimited fieldsterminatedby'\t';#创建内部表-管理表createtable man_table(id int,name string)row format delimited fieldsterminatedby'\t';二 外部表和管理表的区别1.删除外部表时只会删除元数据。删除管理表时会将元数据和HDFS上的数据全部删除。2.truncatetable只能清空管理表。不能清空外部表。三 外部表和管理表相互转换#修改表的属性:alter table 表名 set tblproperties('属性名'='属性值');#FALSE是管理表 TRUE是外部表altertable external_table set tblproperties('EXTERNAL'='FALSE');
Is It A Tree?
问题
考试时应该做不出来,果断放弃 树是一种众所周知的数据结构,它要么是空的(null, void, nothing),要么是一个或的集合满足以下属性的节点之间有向边连接的节点较多。 •只有一个节点,称为根节点,它…
#include <iostream>
#include <cstring>
#include <queue>using namespace std;const int N 110;typedef pair<int, int> PII;int n, m;
int g[N][N], d[N][N];//存放地图//存每一个点到起点的距离int bfs()
{queue< PII > q;q.push({0, 0});m…