柚子快報激活碼778899分享:數(shù)據(jù)庫 Mysql知識總結
柚子快報激活碼778899分享:數(shù)據(jù)庫 Mysql知識總結
一、數(shù)據(jù)庫操作
1.創(chuàng)建庫
create database 庫名 charset = 'utf8';
2.查看當前庫
DESC databases 庫名;
3.查看當前所有庫
SHOW DATABASES;
4.使用庫
USE 庫名;
5.刪除庫
DROP DATABASE 庫名 [cascade]; ?-- 加中括號內容表示強制刪除
二、數(shù)據(jù)表操作
1.創(chuàng)建數(shù)據(jù)表
CREATE TABLE 表名
(
? id ? ? INT,
? name ? VARCHAR(30),
? gender VARCHAR(30)
);
2.查看當前表
DESC 表名;
3.查看當前所有表
SHOW TABLES;
4.刪除表
DROP TABLE 表名;
5.新增列
ALTER TABLE 表名 ADD 列名 類型;
6.修改列
ALTER TABLE 表名 change 舊列名 新列名 類型;
7.刪除列
ALTER TABLE 表名 drop 列名;
8.修改表名
ALTER TABLE 舊表名 rename to 新表名;
三、數(shù)據(jù)操作
1.插入數(shù)據(jù)
INSERT INTO 表名 values (1, '小明', '男');
2.修改數(shù)據(jù)
UPDATE 表名 SET 字段名 = '女' WHERE id = 4;
3.刪除一整行
DELETE FROM 表名 WHERE id = 5;
4.刪除一個格
UPDATE 表名 SET 字段名 = NULL WHERE id = 6;
5.刪除表中所有數(shù)據(jù)
DELETE FROM 表名;
四、建表條件
1.主鍵
primary key(既不重復,也不為空,放字段后)
2.刪除主鍵
ALTER TABLE 表名 DROP PRIMARY KEY;
3.自增
auto increment(放字段后)
4.標簽
comment = ''(放字段后)
5.非空
not null(放字段后)
6.唯一約束
unique(該字段不能重復,放字段后)
五、查詢語句
1.語句的執(zhí)行順序
目標列(第七):SELECT 列1,列2.....
來自表名(第一):from 表1
表連接(第二):(LEFT/RIGHT) JOIN 表2 ON 表1.字段1 = 表2.字段2
外部條件(第三):WHERE ? 篩選條件
分組(第四):GROUP BY 分組字段
內部條件(第五):HAVING 分組后篩選條件
排序(第六):ORDER BY 排序
選取(第八):LIMIT 起始索引, 條目數(shù);
2.查看表
select * from 表名;
3.指定列
SELECT 列名1, 列名2 FROM 表名; ? (列可常數(shù),可計算)
4.條件
SELECT * FROM 表名 WHERE 條件; ? (也可 between and 或 in 范圍)
5.模糊查詢
SELECT * FROM 表名 WHERE name LIKE '李%';
6.非空
······ WHERE 列名 IS NOT NULL;
7.排序
一級:select 列 from 表 [where] order by 條件(1) (Asc升/Desc降);
二級:select 列 from 表 [where] order by 條件(1) (升/降), 條件(2) (升/降);
8.分組
select 列,[聚合結果] from 表名 group by 分組條件列;
分組后查詢列只能是分組后所對應的字段,不一定為全部字段,強行使用可能會報錯(詳見第七題第4小題處)
9.分頁查詢
格式:select 列名 from 表名 limit m,n;
10.別名
表別名:在from 后的表名后添加 as 別名 ? ? 表名 as 別名
字段別名:在select 之后的字段名添加 as ? 列名 as 別名
11.連接查詢
(1)內:select 字段列表 from 左表 inner join 右表 on 連接規(guī)則 (and列指定);
(2)左:select 列名 from 左表 left outer join 右表 on 連接規(guī)則 (and列指定);
(3)右:select 列名 from 左表 right outer join 右表 on 連接規(guī)則 (and列指定);
12.子查詢
select 列 from 表 (select........) ?
可作為表或條件,子查詢作為表時括號后必加別名?。?!
六、Hive搭建
1.啟動hadoop
start-all.sh
2.檢查mysql服務是否可以使用
systemctl status mysqld
3.啟動metastore服務
hive --service metastore
4.實際開發(fā)中讓服務后臺運行(顯示進程號)
(1)nohup hive --service metastore &(本地)
(2)nohup hive --service hiveserver2 &(遠程)
5.查看運行的程序
(1)jps(本地:有RunJar即可)
(2)lsof -i:10000(遠程:有端口號服務即可)
6.使用客戶端連接
(1)hive(一代)
(2)beeline(二代) ? ? ?
7.指定jdbc鏈接的地址
!connect jdbc:hive2://node1:10000
用戶名:root
密碼不用謝
8.建表
(1)內部表:正常建 ? ?-- 刪除時會全刪 ? ? ? ? ?
(2)外部表:create external··· ? -- 刪除時只刪元數(shù)據(jù)
9.指定分隔符
row format delimited fields terminated by '分割符';
10.表的修改(添加字段)
alter table 表名 add columns(字段名 字段類型);
11.表的修改(修改字段)
alter table 表名 change 舊字段名 新字段 字段類型;
12.表的修改(修改表屬性)
(1)alter table 表名 ?set 屬性設置
(2)alter table tb_ddl2 set tblproperties('age'='20');
13.刪除表
(1)drop table 表名; ? ?-- 直接刪除表
(2)truncate table 表名; ? ?-- 清空表的元數(shù)據(jù)
14.表分類
(1)內部表 Managed Tabel
(2)外部表 External Tables
區(qū)別:
內部表會把表的所有數(shù)據(jù)刪除(元數(shù)據(jù)和行數(shù)據(jù))
外部表會把表的元數(shù)據(jù)刪除,保留hdfs上的文件數(shù)據(jù)
15.修改表內外部類型
(1)alter table 表名 set tblproperties('EXTERNAL'='TRUE'); -- 設置為外部表
(2)alter table 表名 set tblproperties('EXTERNAL'='FALSE');-- 設置為內部表
(3)desc formatted 表名; -- 驗證一下
16.數(shù)據(jù)寫入
(1)INSERT OVERWRITE TABLE 表名 values··· 覆蓋寫入(后可加查詢語句)
(2)INSERT INTO TABLE 表名 values··· 追加寫入(后可加查詢語句)
17.數(shù)據(jù)分區(qū)(分為多個目錄)
(1)創(chuàng)建主表
create table tb_user(
id int,
name string,
age int,
gender int,
create_time date
)row format delimited fields terminated by ',';
(2)創(chuàng)建分區(qū)表
create table new_tb_user(
? id int,
? name string,
? age ?int,
? gender int,
? create_time date
)partitioned by (分區(qū)列 int) ?-- 指定分區(qū)列,分區(qū)列不能是已存在列
row format delimited fields terminated by ',';
18.靜態(tài)分區(qū)
需先創(chuàng)建分區(qū)表,再添加分區(qū)內容
insert into new_tb_user partition(gender=0) values(1,'張',20,'2024-10-10 14:21:21');
19.動態(tài)分區(qū)
需先創(chuàng)建分區(qū)表,再添加分區(qū)內容
還要進行設置開啟
(1)set hive.exec.dynamic.partition.mode=nonstrict;
動態(tài)分區(qū)數(shù)據(jù)寫入,可以根據(jù)select中指定的字段數(shù)據(jù)最為分區(qū)的依據(jù)
(2)insert into 分區(qū)表名 partition(分區(qū)列) select id,name, age,create_time,gender from 主表名;
20.數(shù)據(jù)分桶(分為多個文件)
(1)創(chuàng)建主表見17題···
(2)創(chuàng)建分桶表
create table new_tb_buckets(
? id int,
? name string,
? age ?int,
? gender int,
? create_time date
)clustered by (gender) ? -- 拆分字段
? ?into 2 buckets ?-- 拆分數(shù)量
row format delimited fields terminated by ','; ? ?
21.動態(tài)分桶
原理:hash(字段)%分桶數(shù)
insert into new_tb_buckets select * from tb_user limit 100; ? -- 先分前100個
22.字符串切割
-- 字符串切割轉化為數(shù)組數(shù)據(jù)
(1)split(字段名,'-')[0] ?-- 讓該列以'-'切割,再取第一個
(2)split(split(字段名,'-')[0],":") ?-- 層層切割
23.正則表達式
rlike (\\d:數(shù)字開頭 \\w:字母開頭 \\s:匹配空白 \\S:匹配非空白)
···where email rlike '^\\d'; ?-- 表示以數(shù)字開頭
24.三大HS
(1)Udf函數(shù):計算前后數(shù)據(jù)量不變
(2)Udaf函數(shù):聚合,多行變少行
(3)Udtf函數(shù):爆炸,可以將數(shù)組中數(shù)據(jù)一行拆分為多行(見25題所示)
25.多看一眼就會···
(1)select 其他列,split(分割列,'分隔符') as 別名 from 表名; ?-- 分割
(2)select explode(split(分割列,'分隔符'))as 別名 from 表名; ?-- 爆炸
(3)select 其他列,新別名 from 表名 lateral view explode(split(分割列,'分隔符')) tb1 as 新別名; ?-- 全新展示
26.虛擬列
(1)INPUT_FILE_NAME,-- 顯示數(shù)據(jù)行所在的具體文件
(2)BLOCK OFFSET INSIDE FILE,-- 顯示數(shù)據(jù)行所在文件的偏移量
(3)ROW_OFFSET_INSIDE_BLOCK,-- 顯示數(shù)據(jù)所在HDFS塊的偏移量
-- 此虛擬列需要設置:SET hive.exec.rowoffset=true 才可使用
27.快速建表
(1)creste table 新表 like 老表; ?-- 只復制元數(shù)據(jù),沒有行數(shù)據(jù)
(2)as語法:creste table 新表名 as select * from 老表; ?-- 所有數(shù)據(jù)都復制
28.hive查詢流程
-- 1、物理創(chuàng)建txt文件并寫入內容
-- 2、啟動hadoop并遠程連接客戶端
-- 3、虛擬機創(chuàng)建目標目錄
-- 4、開網(wǎng)頁找到該目錄并托入文件
-- 5、創(chuàng)建表連接到目標目錄
create table abc.8o
(
? abc2 string
) location '/home/hadoop/worddata';
-- 6、對該表進行操作查詢,explode爆炸函數(shù)對分割后的數(shù)組逐行展示
select explode(split(abc2,' ')) from abc.8o;
柚子快報激活碼778899分享:數(shù)據(jù)庫 Mysql知識總結
相關文章
本文內容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。