柚子快報激活碼778899分享:SQL筆記
柚子快報激活碼778899分享:SQL筆記
Insert
insert into TABLE_NAME values(...,...,...)
insert into TABLE_NAME(col1,col2,col3) values(...,...,...)
insert into TABLE_NAME(col1,col2,col3) select col1,col2,col3 from TABLE_NAME2
Delete
delete from TABLE_NAME where col=...
子查詢不能邊刪邊查,要重新命名
Update
update TABLE_NAME set col1=..., col2=...,col3=... where col=...
觸發(fā)器
create trigger NAME
#觸發(fā)條件
after insert/update/delete
on TABLE_NAME
for each row
begin
#執(zhí)行語句
insert into audit values(new.id,new.name);
end;
Replace
查詢替換
select *,replace(gender,'M','male') as new from employees
將替換的值生成新的一列new
更新替換
update TABLE_NAME
set COL_NAME = replace(COL_NAME,OLD,NEW)
where COL_NAME2 = XXX #篩選條件
插入替換
replace into TABLE_NAME
values(...,....,....)
如果主鍵不存在,直接插入 如果主鍵存在,則替換
Alter
結(jié)尾處添加 FIRST:第一列 AFTER <列名>:在該列之后
添加字段
alter table TABLE_NAME add COL_NAME COL_TYPE
刪除字段
alter table TABLE_NAME drop COL_NAME
修改字段名
alter table TABLE_NAME change OLD_COL NEW_COL NEW_TYPE
修改字段類型
alter table TABLE_NAME modify COL_NAME NEW_TYPE
alter table TABLE_NAME change COL_NAME COL_NAME NEW_TYPE
修改字段類型
直接用modify/change后加first/after …
修改字段默認值
alter table TABLE_NAME alter COL_NAME set default 默認值
修改表名
alter table TABLE_NAME rename NEW_NAME
外鍵約束
鏈接兩個表的變量 A表的外鍵約束作用:讓A表的某個字段依賴于B表中的某個字段
-- 創(chuàng)建表
create table TABLEA_NAME(
.......
-- 創(chuàng)建時添加表級外鍵約束
constraint FK_NAME foreign key (ACOL_NAME) references TABLEB_NAME (BCOL_NAME)
);
-- 已存在的表添加表級外鍵約束
alter table TABLEA_NAME add constraint FK_NAME
foreign key TABLEA_NAME(ACOL_NAME) references TABLEB_NAME(BCOL_NAME);
RIGHT&LEFT
取字符串的右側(cè)三個字符
right(STRING,3)
取字符串的左側(cè)兩個字符
left(STRING,2)
group_concat
select group_concat(COL_NAME1) from TABLE_NAME group by COL_NAME2
將同一個COL_NAME2下的COL_NAME1用逗號連接匯總
分頁查詢
page:查詢的頁數(shù) cnt:每頁的數(shù)據(jù)條數(shù)
select * from TABLE_NAME
limit page-1,cnt
in&exist
# in 實現(xiàn)
select * from TABLEA where COL_NAME in (select COL_NAME2 from TABLEB)
查詢TABLEA,查詢TABLEB,兩個查詢對比計算笛卡爾積
# exists 實現(xiàn)
select * from TABLEA a where exists (select COL_NAME2
from TABLEB b where a.COL_NAME = b.TABLEB )
查詢TABLEA,逐條與TABLEB對比,返回TRUE/FALSE 其中子查詢的select COL_NAME2 和 select *結(jié)果一樣
CASE WHEN
case when CONDITIONA
then VALUEA
when CONDITIONB
then VALUEB
.......
else VALUEE
end
SUM OVER & ROW_NUMBER OVER
select COL1,COL2,COL3, sum(COL3) over (order by COL1) from TABLE_NAME
按照col1的順序,計算該行col1列之前的所有col3的總和
select COL1,COL2,COL3, sum(COL3) over(partition by COL2 order by COL1 ) from TABLE_NAME
按col2 進行分組(partition ),每組以col1進行排序(order),并進行連續(xù)加總(sum)
select COL1,COL2, row_number() over (order by COL1) from TABLE_NAME
根據(jù)col1的排序添加行數(shù)
HAVING
執(zhí)行順序:where ----- group by ----- having where 對分組前的行進行操作 having 對分組后的數(shù)據(jù)進行操作
select COL1, count(COL2) cn from TABLE_NAME
group by COL1 having cn<2
RANK OVER
rank() over(order by … ):并列后間隔排名(1,2,2,4,5) dense_rank() over(order by … ):并列后間隔排名(1,2,2,3,4)
select COL1, rank() over(order by COL1) r
from TABLE_NAME
聚合函數(shù)+case when篩選
user_iddaterank_date2307-2822307-1512308-063
篩選用戶第一次和第二次登陸的日期
select user_id,
min(case when rank_date = 1 then date end),
min(case when rank_date = 2 then date end)
from TABLENAME
group by user_id
其中聚合函數(shù)用min,max都可以,因為實際只有一組數(shù)據(jù)
count(*) over(partition by)
分組基數(shù),還可以免于篩選時必須group by
語法記錄
NULL不用加""建立新一列可以直接select … as連接字符concat(...,...,...)統(tǒng)計字符中某個字符的個數(shù)length(string)-length(replace(string,"x",""))最大max(),最小min(),平均值avg()默認升序,desc降序,asc升序可以不用Join直接鏈接篩選
select * from
TABLE_NAMEA AS A, TABLE_NAMEB AS B, TABLE_NAMEC AS C
WHERE A.COL_NAME = B.COL_NAME
AND B.COL_NAME = C.COL_NAME
select后,對字段命名時,有沒有空格,有沒有as都可以依次排序 order by COL1 desc, COL2 asc控制小數(shù)位數(shù) format(COL,n)四舍五入round(COL,n)有條件count():count(COL="...." or null)日期max最近,min最遠數(shù)組in:where (col1,col2) in (select col1,col2 from t)日期加減:date_add(DATE,interval 1 day)ifnull(a,b):如果a是null,則返回b,若a不是null,則返回a提取日期年月日:year(DATE),month(DATE),day(DATE)修改日期格式:date_format(DATE,'%Y-%m-%d') / date_format(DATE,'%Y-%m')..... 中位數(shù):正序逆序排序均>=總數(shù)/2sum() group by有時候可以用 distinct ...,sum() over(partition by...) 替換獲取當前時間current_date
柚子快報激活碼778899分享:SQL筆記
參考閱讀
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。