MySQL上沒有跟SQL Server、Oracle一樣的Merge語法

但還是有相似的語法可以用

INSERT INTO ... ON DUPLICATE KEY UPDATE : 新增資料時遇到重複唯一值時更新部分欄位

REPLACE INTO : 新增資料時遇到重複唯一值時取代原先資料

INSERT IGNORE : 新增資料時當遇到重複唯一值時忽略該筆資料

Louis 發表在 痞客邦 留言(0) 人氣()

在MySQL上面建立procedure、function or trigger時,會看到要寫DEFINER = XXX@XXX 的語句

因為剛開始還不清楚這個語句會有什麼影響,還真的不小心撞到牆

所以紀錄並分享一下Definer跟SQL sercurity的功用

當我們原本撰寫的語法如下

CREATE PROCEDURE SP名稱()

Louis 發表在 痞客邦 留言(0) 人氣()

在資料庫管理權限的授予、移除是很重要的事情,最近因為專案開始接觸MySQL的操作,紀錄一下操作上學習到的部分

我們可以先檢查目前有配置了那些權限

SHOW GRANTS;

SHOW GRANTS FOR [使用者];

授予權限

Louis 發表在 痞客邦 留言(0) 人氣()

20200206_001

最近在研究如何透過SSRS製作儀錶板,RS報表大多都是報表形式,適合細看不適合當作彙整用的儀表板

如果能透過儀表板延伸到趨勢圖表在延伸到明細報表,這樣在數據圖表的閱讀性能大幅提升,也不用浪費既有報表改用其他報表工具

可以把一些概述的數據會是指標放在行動報表上,在透過延伸的功能串到既有的明細報表

在這邊跟大家分享一下使用行動報表的一些小技巧 - 參數篩選

如果是針對傳入資料集在報表中在進行篩選,那很簡單就讀入資料集後,在篩選清單中選擇要篩選的欄位

Louis 發表在 痞客邦 留言(0) 人氣()

20200106_001.png

最近剛好遇到工作上需要對特定資料表,根據排序後的第一筆資料進行刪除

過往可能需要先查詢出排序後第一筆資料關鍵Key值再進行刪除

範例資料

CREATE TABLE dbo.T1 ( C1 INT PRIMARY KEY IDENTITY(1,1))
INSERT INTO dbo.T1 DEFAULT VALUES

Louis 發表在 痞客邦 留言(0) 人氣()

20191226_001.png

Aggregate Function

彙整函數是大多撰寫SQL Script很常使用的,以下我簡單進行分類

Aggregate Function 種類

1. 計次型 - Count、Count_Big

2. 最大最小型 - MAX、MIN

Louis 發表在 痞客邦 留言(0) 人氣()

最近在處理DB方面的CI/CD,讓資料庫方面的異動能夠透過版控留存紀錄,在透過CI/CD去部屬到指定的環境當中。

這邊先不討論CI/CD方面怎麼處理,而是分享一下SQL Server如何透過讀取.sql檔然後在DB中執行的部分。

我們保存好的.sql檔是放在os的指定資料夾,透過sqlcmd的方式讀取檔案然後執行

格式

sqlcmd -s [伺服器] -u [User名稱] -p [密碼] -d [資料庫] -i [檔案名稱(包含路徑)]

Louis 發表在 痞客邦 留言(0) 人氣()

在處理交易型平台資料常常會遇到一個問題,我該如何清理資料表中老舊的資料,像是每天自動去清除三十天前的交易紀錄。

如果使用最簡單的 DELETE 語法,可能會影響線上交易並且產生大量的Transaction Log。

過往會建立Partition Table,然後透過搬動Parition分區到另一張資料表然後在 TRUNCATE TABLE清除掉。

但這樣需要先建立一個一模一樣的資料表,並且設定一樣的Partition Schema,會有點小麻煩。

在SQL Server 2016開啟,提供了TRUNCATE TABLE WITH PARTITION的語法能更方便的清除老舊的資料

Louis 發表在 痞客邦 留言(0) 人氣()

註解 2019-06-24 105353.png

遇到問題

要在A SQL Server中透過Link Server方式去執行B SQL Server的預設程序,發生了並未為RPC設定伺服器"B"

解決方法

RPC(Remote Procedure Call) 是一個電腦通訊協定,該協定允許執行於一台電腦的程式呼叫另一台電腦的子程式。

簡單來說就是該[Link Server]尚未開通RPC這個設定。

Louis 發表在 痞客邦 留言(0) 人氣()

整理工作上的筆記,在DB中非常少會使用到Cursor來回圈處理資料

真的有非常複雜要處理的資料,否則還是不建議使用Cursor

簡單用sys.all_obkects來做為範例

SET NOCOUNT ON

DECLARE @TableName NVARCHAR(100)

Louis 發表在 痞客邦 留言(0) 人氣()

問題

最近在處理動態SQL語法的工作

剛好同事就問說有沒有辦法處理動態語法是使用"LIKE"

Louis 發表在 痞客邦 留言(0) 人氣()

在撰寫預設程序(store procedure, SP)時

有時候會在當中呼叫其他的SP取得資料在進行加工

不時會發生 An INSERT EXEC statement cannot be nested 的問題

這幾天在撰寫一個共用SP來產生所要的資料時剛好遇到

來分享一下所遇到的狀況以及解決的方法

Louis 發表在 痞客邦 留言(1) 人氣()

1 2 3
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。