主頁 > 資料庫 > 手記系列之五 ----- SQL使用經驗分享

手記系列之五 ----- SQL使用經驗分享

2023-06-08 09:36:41 資料庫

前言

本篇文章主要介紹的關于本人從剛作業到現在使用Sql一些使用方法和經驗,從最基本的SQL函式使用,到一些場景的業務場景SQL撰寫,

SQL基礎函式使用

1.欄位轉換

CASE WHEN 
意義: If(a==b) a=c;
用法: 
1, CASE 欄位 WHEN 欄位結果1 THEN 欄位顯示結果1 WHEN 欄位結果2 THEN 欄位顯示結果2 END 
2, CASE WHEN 欄位1=欄位結果1 THEN 欄位顯示結果1 WHEN 欄位2=欄位結果2 THEN 欄位顯示結果2 END 

2.替換空值

意義: if(a==null) a=0;

MySQL:IFNULL
用法:IFNULL(欄位,0)別名
Oracle:NVL
用法:NVL(欄位,0)別名
Sybase: ISNULL
用法:ISNULL(欄位,0)別名

3.合計函式

GROUP BY
例:SELECT 欄位1, 【如sum】函式名(欄位2) FROM 表名 GROUP BY 欄位1

4.取某段資料

Mysql: LIMIT
用法: select * from 表 LIMIT 數字 ----取零到數字中的資料
select * from 表 LIMIT 數字1,數字2 ----取數字1到數字2中的資料
Oracle: rownum
用法:select * from 表 rownum<=2 ----取表中的頭兩條資料
Sybase : TOP
用法: SELECT TOP 2 * FROM 表名 ----選取表中的頭兩條資料
SELECT TOP 50 PERCENT * FROM 表名 ----選取表中50%的記錄


5.截取字串

substr
例:

select substr(欄位名,起始位置,長度)自定義名  from  表名

6.查詢結果增加序號

SET @rownum=0;
SELECT  @rownum := @rownum +1 AS aid, h.* FROM household h;

7.查詢平均小于的某某的資料

group by 和having的使用

SELECT user_id FROM t_user  GROUP BY user_id HAVING AVG(user_age)<22;

8.洗掉重復的元素,保留一條

delete from 表名 where   主鍵 in 
(select 主鍵 from 表名 group by 洗掉的欄位資料名 having count(1) > 1)
and   主鍵 not in (select min(主鍵) from 表名 group by 洗掉的欄位資料名 having count(1)>1) 

9. 日期格式使用

DATE_FORMAT 可以把日志格式化成想要的格式
DATE_FORMAT(date, format)

sql設定日期格式TO_DATE(欄位名,YYYY-MM-DD)欄位名

時間格式化:

SELECT DATE_FORMAT(a.`update_time`,'%Y-%m-%d %H:%i:%S') AS updateTime,
        a.`update_time` FROM        t_user a 

例如:

SELECT DATE_FORMAT('2018-10-10 00:00:00', '%Y%m%d')

查詢結果為 20181010

根據日期得到星期幾DAYOFWEEK是從周日開始,所以要減一,WEEKDAY是從0開始,所有要加一

SELECT DAYOFWEEK('2021-4-22')-1,WEEKDAY('2021-4-20')+1

10.UNION和UNION All比較

    UNION在進行表鏈接后會篩選掉重復的記錄  UNION ALL只是簡單的將兩個結果合并后就回傳
    
例:SELECT 欄位 FROM 表1              
            UNION 
    SELECT 欄位 FROM 表2 

    SELECT 欄位 FROM 表1
            UNION ALL 
    SELECT 欄位 FROM 表2 

11. sql之left join、right join、inner join的區別

left join(左聯接) 回傳包括左表中的所有記錄和右表中聯結欄位相等的記錄
左表回傳的值一定大于或等于右表的值

right join(右聯接) 回傳包括右表中的所有記錄和左表中聯結欄位相等的記錄
右表回傳的值一定大于或等于左表的值

inner join(等值連接) 只回傳兩個表中聯結欄位相等的行
左表回傳的值一定等于右表回傳的值

常用SQL

1.解鎖sql表

MySql

1.查看是否有鎖表

SHOW OPEN TABLES WHERE In_use > 0;

2.查詢產生鎖的具體sql

    select a.trx_id 事務id ,a.trx_mysql_thread_id 事務執行緒id,a.trx_query 事務sql from INFORMATION_SCHEMA.INNODB_LOCKS b,INFORMATION_SCHEMA.innodb_trx a where b.lock_trx_id=a.trx_id;

3.殺死產生鎖的事物執行緒

根據具體的sql判斷是不是死鎖,具體是什么業務,是否可以進行kill,
然后根據結果 kill掉產生鎖的事物執行緒:

select concat('KILL ',a.trx_mysql_thread_id ,';') from INFORMATION_SCHEMA.INNODB_LOCKS b,INFORMATION_SCHEMA.innodb_trx a where b.lock_trx_id=a.trx_id;

批量kill :

 select concat('KILL ',a.trx_mysql_thread_id ,';') from INFORMATION_SCHEMA.INNODB_LOCKS b,INFORMATION_SCHEMA.innodb_trx a where b.lock_trx_id=a.trx_id into outfile '/tmp/kill.txt';

SqlServer

查看被鎖表:

select   request_session_id   spid,OBJECT_NAME(resource_associated_entity_id) tableName   from   sys.dm_tran_locks where resource_type='OBJECT'

spid 鎖表行程 
tableName 被鎖表名
解鎖:

declare @spid  int Set @spid  = 57 
declare @sql varchar(1000)set @sql='kill '+cast(@spid  as varchar)
exec(@sql)

2.查看一個欄位的在那些表中

 SELECT DISTINCT TABLE_NAME FROM information_schema.`COLUMNS` WHERE COLUMN_NAME='ip' AND TABLE_SCHEMA='guard_scan' AND TABLE_NAME NOT LIKE 'vm%';

SqlServer:

 select table_name  from user_tab_columns where COLUMN_NAME='欄位'

3. 查詢所有表及其欄位和備注

        SELECT t.table_name,
		   t.colUMN_NAME,
		 t.DATA_TYPE || '(' || t.DATA_LENGTH || ')',
		 t1.COMMENTS
		 FROM User_Tab_Cols t, User_Col_Comments t1
		WHERE t.table_name = t1.table_name
		 AND t.column_name = t1.column_name;

4.sql資料自我復制

insert into test(name,age,gender)
select name,age,gender from test

5.洗掉重復資料,保留最小id的那一條

delete from table_name as ta where ta.唯一鍵 <> ( select max(tb.唯一鍵) from table_name as tb where ta.判斷重復的列 = tb.判斷重復的列);

6.SQL查詢相隔天數陳述句

--今天

select * from 表名 where to_days(時間欄位名) = to_days(now());

--昨天

SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 時間欄位名) = 1

--本周

SELECT * FROM  表名 WHERE YEARWEEK( date_format(  時間欄位名,'%Y-%m-%d' ) ) = YEARWEEK( now() ) ;

--本月

SELECT * FROM  表名 WHERE DATE_FORMAT( 時間欄位名, '%Y%m' ) = DATE_FORMAT( CURDATE( ) ,'%Y%m' ) 

--上一個月

SELECT * FROM  表名 WHERE PERIOD_DIFF(date_format(now(),'%Y%m'),date_format(時間欄位名,'%Y%m') =1

--本年

SELECT * FROM 表名 WHERE YEAR(  時間欄位名 ) = YEAR( NOW( ) ) 

--上一月

SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , date_format( 時間欄位名, '%Y%m' ) ) =1

--查詢本季度資料

select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(now());

--查詢上季度資料

select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(DATE_SUB(now(),interval 1 QUARTER));

--查詢本年資料

select * from `ht_invoice_information` where YEAR(create_date)=YEAR(NOW());

--查詢上年資料

select * from `ht_invoice_information` where year(create_date)=year(date_sub(now(),interval 1 year));

--查詢當前這周的資料

SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now());

--查詢上周的資料

SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-1;

--查詢當前月份的資料

select name,submittime from enterprise   where date_format(submittime,'%Y-%m')=date_format(now(),'%Y-%m')

--查詢距離當前現在6個月的資料

select name,submittime from enterprise where submittime between date_sub(now(),interval 6 month) and now();

--查詢上個月的資料

select name,submittime from enterprise   where date_format(submittime,'%Y-%m')=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),'%Y-%m')

7.mysql經緯度圓周計算

單位為米

SELECT st_distance_sphere(POINT('114.43107891381024', '30.52764363752110'), POINT('114.42638694658900', '30.54681469735225')) AS distcance

8.mysql的ip地址段查詢判斷

ip查詢前三段

SELECT SUBSTRING_INDEX(ip,'.',3) FROM t_ip 

示例:

SELECT SUBSTRING_INDEX(tia.ip_addr,'.',3),ip_addr FROM t_ip_all tia
WHERE  SUBSTRING_INDEX(tia.ip_addr,'.',3) = '192.168.21'

9.mysql的地址段大小查詢判斷

使用INET_ATON函式進行轉換

SELECT
    *
FROM
    表名
WHERE
    INET_ATON(ip) between  INET_ATON("192.168.21.0")
AND  INET_ATON("192.168.1.255")

其他

MySQL

1.查詢所有資料庫

show databases;

2.查詢指定資料庫中所有表名

select table_name from information_schema.tables where table_schema='database_name' and table_type='base table';

3.查詢指定表中的所有欄位名

select column_name from information_schema.columns where table_schema='database_name' and table_name='table_name';

4.查詢指定表中的所有欄位名和欄位型別

select column_name,data_type from information_schema.columns where table_schema='database_name' and table_name='table_name';

SQLServer

1.查詢所有資料庫

select * from sysdatabases;

2.查詢當前資料庫中所有表名

select * from sysobjects where xtype='U';

xtype='U':表示所有用戶表,xtype='S':表示所有系統表,

3.查詢指定表中的所有欄位名

select name from syscolumns where id=Object_Id('table_name');

4.查詢指定表中的所有欄位名和欄位型別

select sc.name,st.name from syscolumns sc,systypes st where sc.xtype=st.xtype and sc.id in(select id from sysobjects where xtype='U' and name='table_name');

Oracle

1.查詢所有資料庫

由于Oralce沒有庫名,只有表空間,所以Oracle沒有提供資料庫名稱查詢支持,只提供了表空間名稱查詢,

select * from v$tablespace;--查詢表空間(需要一定權限)

2.查詢當前資料庫中所有表名

select * from user_tables;

3.查詢指定表中的所有欄位名

select column_name from user_tab_columns where table_name = 'table_name';--表名要全大寫

4.查詢指定表中的所有欄位名和欄位型別

select column_name, data_type from user_tab_columns where table_name = 'table_name';--表名要全大寫

業務場景SQL

這是在一些常見的場景中個人撰寫以及收集的一些SQL,從剛開始作業的時候就有記錄,如有不妥或有更好的寫法,歡迎指出~

學生排名統計

一張表t,有class(班級)、name(學生)、score(成績)欄位

查詢每個班級成績最高的學生

思路:根據分組函式 group by 和最大值 max來實作,

Select name,class,max(score) from t group by class;

查找出每個班級成績前三的學生

思路: 通過雙重子查詢來查找
先對學生的成績進行排名,相同的為一列,然后在跟進這個結果得到前三成績的學生,

SELECT *  
FROM( SELECT NAME,score , class,(SELECT COUNT(*)+1 FROM t WHERE score>b.score AND class = b.class ) rank
        FROM t b) e
WHERE e.rank<=3
ORDER BY class,rank ASC;

思路二
直接找到每個班級學生的排名然后進行比較得出前三成績的學生

SELECT * FROM t a
    WHERE 4 >(SELECT count(*)+1 FROM t WHERE class = a.class and score>a.score)
    ORDER BY a.class,a.score DESC;

查找出每個班級成績第二的學生,

思路: 在條件里面發現最大的,然后去除最大的就是第二大的

SELECT class, MAX(score) FROM t  WHERE score NOT IN (SELECT MAX(score) FROM t GROUP BY class) GROUP BY class

查詢每名學生的學科總分并排名

思路: 先用group by和sum得到總分排名,然后再利用order by將結果進行排名

SELECT *,SUM(scroe)scroe FROM a GROUP BY sID ORDER BY scroe DESC;

查詢用一條SQL 陳述句 查詢出每門課都大于80 分的學生姓名

思路一:利用group by和having 函式來查詢

SELECT * FROM a GROUP BY scroe HAVING AVG(scroe) >80;

思路二:利用子查詢來查詢

SELECT * FROM a c WHERE scroe NOT IN (SELECT scroe FROM a b WHERE scroe<='80') GROUP BY sID;

在學生成績表中進行排名,相同的成績在同一列

場景一、分數相同排名相同(如果有兩個第二,就沒有第三名)

思路: 通過子查詢的分數進行查詢比較,然后在通過子查詢的結果進行排序

不包含班級

SELECT id,NAME,score, (SELECT COUNT(*)+1 FROM t_student WHERE score>t.score) rank  FROM t_student t ORDER BY rank ASC;    

根據班級進行區分

SELECT class,NAME,score,(SELECT COUNT(*)+1 FROM t WHERE score>b.`score` AND class=b.`class`  )rank FROM t b  ORDER BY class,rank;

場景二、分數相同排名相同(如果有兩個第二,有第三名)

思路:需要使用一個額外的變數進行查詢比較

SELECT id, NAME, score , 
CASE 
WHEN @prevRank = score THEN @curRank 
WHEN @prevRank := score THEN @curRank := @curRank + 1
END AS rank
FROM t_student t, 
(SELECT @curRank :=0, @prevRank := NULL) r
ORDER BY score

組織部門查詢

一張部門表,有id(主鍵)、name(名稱)、parent_id(父級ID)欄位

建表陳述句和測驗資料

CREATE TABLE `department` (
`id` int(11) NOT NULL,
`parent_id` int(11) DEFAULT NULL,
`name` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


INSERT INTO department (id, parent_id, NAME) VALUES
(1, NULL, '總公司'),
(2, 1, '人事部'),
(3, 1, '財務部'),
(4, 1, '市場部'),
(5, 2, '招聘組'),
(6, 2, '培訓組'),
(7, 5, '招聘一部'),
(8, 5, '招聘二部'),
(9, 6, '培訓一部'),
(10, 6, '培訓二部'),
(11, 4, '推廣組'),
(12, 11, '線上推廣部'),
(13, 11, '線下推廣部'),
(14, 12, 'SEM'),
(15, 12, 'SEO');

根據部門ID查詢該部門下面所有的子部門

思路: 由于不清楚部門層級,這里需要使用遞回查詢,需要定義一個變數和FIND_IN_SET函式來實作遞回查詢,當查詢到一個部門時,將其ID添加到一個變數中,然后繼續查詢其子部門,直到所有子部門都被查詢到為止,

SELECT au.id, au.name, au.parent_id
FROM (SELECT * FROM department WHERE parent_id IS NOT NULL) au,
(SELECT @pid := ?) pd
WHERE FIND_IN_SET(parent_id, @pid) > 0
AND @pid := CONCAT(@pid, ',', id)
UNION
SELECT id, NAME, parent_id
FROM department
WHERE id = ?
ORDER BY id;

如果是MySql8.0,可以使用WITH RECURSIVE關鍵字實作遞回查詢

WITH RECURSIVE cte AS (
    SELECT id, name, parent_id
    FROM department
    WHERE id = ? 
    UNION ALL
    SELECT d.id, d.name, d.parent_id
    FROM department d
    INNER JOIN cte ON d.parent_id = cte.id
)
SELECT *
FROM cte;

根據一個部門ID,查詢所有的上級部門

思路: 這篇的作者講得很詳細,這里就不在贅述了.

https://www.cnblogs.com/liuxiaoji/p/15219091.html

SELECT t2.id, t2.name, t2.parent_id
FROM (SELECT @r as _id,
            (SELECT @r := parent_id FROM department WHERE id = _id) as pid,
            @l := @l + 1 as lvl
        FROM (SELECT @r := ?, @l := 0) vars, dept as h
        WHERE @r <> 0) t1
JOIN department t2
ON t1._id = t2.id
ORDER BY T1.lvl DESC; 

如果是MySql8.0,可以使用WITH RECURSIVE關鍵字實作遞回查詢

WITH RECURSIVE cte AS ( SELECT id, name, parent_id FROM department WHERE id = ? UNION ALL SELECT d.id, d.name, d.parent_id FROM department d JOIN cte ON cte.parent_id = d.id ) SELECT id, name, parent_id FROM cte WHERE id <> ?;

其他

手記系列

記載個人從剛開始作業到現在各種雜談筆記、問題匯總、經驗累積的系列,

手記系列

  • 手記系列之一 ----- 關于微信公眾號和小程式的開發流程
  • 手記系列之二 ----- 關于IDEA的一些使用方法經驗
  • 手記系列之三 ----- 關于使用Nginx的一些使用方法和經驗
  • 手記系列之四 ----- 關于使用MySql的經驗

一首很帶感的動漫鋼琴曲~

<iframe frameborder="no" border="0" margin marginheight="0" height="86" src="https://www.cnblogs.com//music.163.com/outchain/player?type=2&id=38574228&auto=0&height=66"></iframe>

原創不易,如果感覺不錯,希望給個推薦!您的支持是我寫作的最大動力!
著作權宣告:
作者:虛無境
博客園出處:http://www.cnblogs.com/xuwujing
CSDN出處:http://blog.csdn.net/qazwsxpcm    
個人博客出處:https://xuwujing.github.io/

如果你對生活感覺到了絕望,請不要氣餒,因為這樣只會讓你更加絕望! 所謂的希望往往都是在絕望中萌發的,所以,請不要放棄希望!

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/554633.html

標籤:MySQL

上一篇:《SQL 必知必會》全決議

下一篇:返回列表

標籤雲
其他(160593) Python(38215) JavaScript(25484) Java(18209) C(15237) 區塊鏈(8270) C#(7972) AI(7469) 爪哇(7425) MySQL(7238) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5873) 数组(5741) R(5409) Linux(5347) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4585) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2434) ASP.NET(2403) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) .NET技术(1983) 功能(1967) HtmlCss(1955) Web開發(1951) C++(1933) python-3.x(1918) 弹簧靴(1913) xml(1889) PostgreSQL(1879) .NETCore(1863) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • 手記系列之五 ----- SQL使用經驗分享

    ## 前言 本篇文章主要介紹的關于本人從剛作業到現在使用Sql一些使用方法和經驗,從最基本的SQL函式使用,到一些場景的業務場景SQL撰寫。 ## SQL基礎函式使用 ### 1.欄位轉換 CASE WHEN 意義: If(a==b) a=c; 用法: 1, CASE 欄位 WHEN 欄位結果1 T ......

    uj5u.com 2023-06-08 09:36:41 more
  • 《SQL 必知必會》全決議

    > 不要哀求,學會爭取。若是如此,終有所獲。 > > 原文:https://mp.weixin.qq.com/s/zbOqyAtsWsocarsFIGdGgw ## 前言 你是否還在煩惱 SQL 該從何學起,或者學了 SQL 想找個地方練練手?好巧不巧,最近在作業之余登上牛客,發現了牛客不知道啥時候 ......

    uj5u.com 2023-06-08 09:36:17 more
  • GaussDB(DWS)查詢過濾器原理與應用

    摘要:GaussDB(DWS)查詢過濾器(黑名單)提供查詢過濾功能,支持自動隔離反復被終止的查詢,防止爛SQL再次執行。 本文分享自華為云社區《GaussDB(DWS)查詢過濾器原理與應用》,作者:門前一棵葡萄樹 。 一、概述 GaussDB(DWS)查詢過濾器(黑名單)提供查詢過濾功能,支持自動隔 ......

    uj5u.com 2023-06-08 09:36:10 more
  • Hive執行計劃之hive依賴及權限查詢和常見使用場景

    [TOC] ## 概述 Hive查看執行計劃的命令中還有兩個不怎么常用但很重要的命令,接下來詳細介紹一下。 有一個問題:**如何在hiveSQL執行之前就探查到這段邏輯的血緣依賴關系?** hive血緣是很多生產級數倉必須要提供的功能,大多數解決方案都是**使用hive hooks的方法通過SQL執 ......

    uj5u.com 2023-06-08 09:35:52 more
  • kafka的安裝和基本操作

    # 基本概念 ## 簡介 Kafka 最初是由 LinkedIn 即領英公司基于 Scala 和 Java 語言開發的分布式訊息發布-訂閱系統,現已捐獻給Apache 軟體基金會。其具有高吞吐、低延遲的特性,許多大資料實時流式處理系統比如 Storm、Spark、Flink等都能很好地與之集成。 總 ......

    uj5u.com 2023-06-08 09:35:45 more
  • 一份配置輕松搞定表單渲染,配置式表單渲染器在袋鼠云的實作思路與

    前段時間,[袋鼠云離線開發產品](https://www.dtstack.com/dtinsight?src=https://www.cnblogs.com/DTinsight/p/szsm)接到改造資料同步表單的需求。 一方面,[資料同步模塊](https://www.dtstack.com/dtinsight?src=szsm)的代碼可讀性和可維護性較差,導致在資料 ......

    uj5u.com 2023-06-08 09:35:23 more
  • GreatSQL洗掉磁區慢的跟蹤

    # GreatSQL洗掉磁區慢的跟蹤 ## 背景 某業務系統,每天凌晨會洗掉磁區表的一個磁區(按天磁區),耗時較久,從最開始的30秒,慢慢變為1分鐘+,影響到交易業務的正常進行。 在測驗環境進行了模擬,復現了洗掉磁區慢的情況,本次基于GreatSQL8.0.25-17進行測驗,官方mysql版本也存 ......

    uj5u.com 2023-06-07 10:00:28 more
  • GreatSQL洗掉磁區慢的跟蹤

    # GreatSQL洗掉磁區慢的跟蹤 ## 背景 某業務系統,每天凌晨會洗掉磁區表的一個磁區(按天磁區),耗時較久,從最開始的30秒,慢慢變為1分鐘+,影響到交易業務的正常進行。 在測驗環境進行了模擬,復現了洗掉磁區慢的情況,本次基于GreatSQL8.0.25-17進行測驗,官方mysql版本也存 ......

    uj5u.com 2023-06-07 09:43:44 more
  • 常用的 SQL Server 關鍵字及其含義

    SQL Server 是一種關系型資料庫管理系統(RDBMS),提供了用于管理和操作資料庫的各種關鍵字。 以下是一些常用的 SQL Server 關鍵字及其含義: 1. SELECT: 用于從資料庫中檢索資料。 2. INSERT: 用于將新記錄插入到資料庫表中。 3. UPDATE: 用于更新資料 ......

    uj5u.com 2023-06-07 08:19:39 more
  • Hive執行計劃之一文讀懂Hive執行計劃

    ## 概述 Hive的執行計劃描述了一個hiveSQL陳述句的具體執行步驟,通過執行計劃解讀可以了解hiveSQL陳述句被決議器轉換為相應程式語言的執行邏輯。通過執行邏輯可以知曉HiveSQL運行流程,進而對流程進行優化,實作更優的資料查詢處理。 同樣,通過執行計劃,還可以了解到哪些不一樣的SQL邏輯其 ......

    uj5u.com 2023-06-07 08:19:33 more