1 數據庫
1.1?新增
create database [if not exists] 數據庫名;
1.2 刪除
drop database [if exists] 數據庫名;
1.3 查詢
?(1) 查看所有數據庫
show databases;
(2) 查看當前數據庫下的所有表
show tables;
2 數據表
2.1 新增
(1) 創建表
create table [if not exists] db_name.table_name (column_name data_type(size) comment '注釋',...
) comment '表名';
??
(2) 復制表
-- 只復制表結構
create table 新表名 as
select * from 舊表名;-- 只復制表結構
create table 新表名 like 舊表名;?-- 復制表結構及其數據
create table 新表名 as
select * from 舊表名;
(3) 生成臨時表
表名 as (查詢語句)
(4) 創建視圖
create or replace view view_name as select statement
2.2 刪除
(1) 刪除表
drop table [if exists] 表名;
(2) 刪除視圖
drop view view_name;
2.3 修改
(1)??修改表名
-- rename:重命名,包括索引、表名
alter table 舊表名 rename to 新表名;
2.4 查詢
(1) 查看表結構
desc 表名;show create table 表名;
3 數據
3.1 新增
(1) insert into ...?values
-- 1 按指定列插入數據
insert into table_name
(field1,field2...fieldn )
values (value1,value2,...valueN)
,(...)
;-- 2 所有列插入數據
insert into table_name
values (value1,value2,...valueN)
;
(2) insert into ...?select
-- 1 從一個表中復制所有的列插入到另一個表中
insert into table2
select * from table1; -- 2 從一個表中復制指定列插入到另一個表的指定列中
insert into table2 (column_name(s))
select column_name(s) from table1;
3.2 刪除
(1) 清空表
truncate table table_name;
?3.3 查詢
(1) 條件查詢
select-- as:為表名稱或列名稱指定別名,提高可讀性列名1 as 列別名,列名2 as 列別名
from 表名 as 表別名
where 列名 運算符 列名/常量
[limit number]
(2) 去重查詢
select distinct 字段名1,... from table1;
?(3) 分組查詢
①group by
-- group by:根據一個或多個列對結果集進行分組,在分組的列上可以使用 count、sum、 avg等函數
select 列名,分組函數(列名)
from 表名
group by 列名
-- 分組后過濾
having 表達式
;
②group by ... grouping sets
-- grouping sets允許采用多種方式對結果分組,而不必使用多個select語句,從而提高執行性能.
-- grouping sets語法和普通group by類似,但需要額外執行所需的多個group by組合.例如以下sql的(列名1,列名2), ()),每個內層括號執行一個group by組合,空括號表示group by列表為空,即所有列
select 列名1,列名2,分組函數(列名)
from 表名
group by 列名1,列名2
grouping sets((列名1,列名2),())
;
(4) 排序查詢
-- 將查詢數據排序后再返回數據,按字段值升序/降序,控制NULL值在排序后的結果中的位置.默認升序
select 列名 from 表名 order by 列名 [asc|desc] [nulls first|nulls last]
4 多表關聯查詢
4.1?多表關系
????????①一對一:將其中一方假設成多的一方,在多的一方添加外鍵指向一的一方的主鍵,并且給外鍵字段添加unique約束;
? ? ? ? ②一對多:在多的一方添加外鍵指向一的一方的主鍵;
? ? ? ? ③多對多:借助一張中間表,在中間表中至少有兩個字段分別指向多對多雙方的主鍵.
4.2?連接查詢
(1) 內連接:獲取兩個表中字段匹配關系的記錄
select表1.列名11,表1.列名12,...,表2.列名21,表2.列名22
from 表1
[inner] join 表2 on 表1.列名11 = 表2.列名21and 表1條件and 表2條件
;
(2)?左連接:獲取左表所有記錄,即使右表沒有對應匹配的記錄
select表1.列名11,表1.列名12,...,表2.列名21,表2.列名22
from 表1
left join 表2 on 表1.列名11 = 表2.列名21and 表2條件
where 表1條件
;
(3)?右連接:獲取右表所有記錄,即使左表沒有對應匹配的記錄
select表1.列名11,表1.列名12,...,表2.列名21,表2.列名22
from 表1
right join 表2 on 表1.列名11 = 表2.列名21and 表1條件
where 表2條件
;
4.3 子查詢
(1) where型子查詢
-- 單值子查詢:把內層查詢結果當作外層查詢的比較條件
select 列名,列名... from 表1 where 列名1 = (select 列名1 from 表2);-- in子查詢:把內層查詢結果當作外層查詢的比較條件
-- 適用于子查詢得出的結果集記錄較少,主查詢中的表較大且又有索引的情況
select 列名,列名... from 表1 where 列名 in (select 列名 from 表2);-- exists子查詢:把外層sql的結果,拿到內層sql去查詢,如果內層的sql成立,則該行取出
-- 適用于外層的主查詢記錄較少,子查詢中的表大又有索引的情況
select 列名,列名... from 表1 where exists (select 列名 from 表2 where 表1.列名1 運算符 表2.列名1);
(2) from型子查詢
-- 內層的查詢結果當成臨時表,供外層sql查詢
select 列名1,列名2... from (select 列名1,列名2... from 表名) as 表別名;
4.4?聯合查詢
-- union:將不同表中相同列中查詢的數據展示出來,不包括重復數據
select 列名稱 from 表1名稱 union select 列名稱 from 表2名稱;-- union all:將不同表中相同列中查詢的數據展示出來,不包括重復數據
select 列名稱 from 表1名稱 union all select 列名稱 from 表2名稱;
5 針對性語法
MySQL_語法文章瀏覽閱讀925次。(5) 主鍵約束:約束該單字段(或字段組)的值具有唯一性,不為null且不為空,且只有一個主鍵約束.如主鍵是整數型,可配合auto_increment實現主鍵自增長.(6) 外鍵約束:限制兩個表的關系,保證該字段的值必須來自于主表的關聯列的值.使用時在從表添加外鍵約束,用于引用主表中某列的值.要求主鍵和外鍵的數據類型必須一致.(2) 默認值約束(default):約束該字段有默認值,即該字段不輸入值時,會給一個默認值.一般結合非空約束使用.(1) 非空約束:約束該字段的值不能為null._create table `notification` if not exishttps://blog.csdn.net/weixin_43875878/article/details/108302141Hive_語法文章瀏覽閱讀911次。【代碼】Hive_語法。_hive as 別名
https://blog.csdn.net/weixin_43875878/article/details/115050269