Tentokrát projdu moje tipy a triky, které by se mohly někomu hodit. Jde o spíš o maličkosti, které ulehčují práci.
Rychlá záloha tabulky
Prvním tipem je rychlá záloha tabulky.
/* Zazálohování tabulky do schématu bck*/ SELECT * INTO bck.BACKUP_DIM_CALENDAR_20231124 FROM l2.DIM_CALENDAR; SELECT * FROM bck.BACKUP_DIM_CALENDAR_20231124 |
Kontrola že jsem nic nepokazil
Když dělám, nějakou změnu a ovlivní jen určitou část tabulky. Kontroluji si, že jsem nezměnil počet řádků a sedí na sebe hodnoty. Ukážu to na tabulce vytvořené v minulém kroku.
/* Kontrola na počet záznamů */ SELECT COUNT(1) AS CNT FROM l2.DIM_CALENDAR; SELECT COUNT(1) AS CNT FROM bck.BACKUP_DIM_CALENDAR_20231124 /* Kontrola na hodnoty ve sloupcích - typicky je nutné udělat výčet sloupců a vyloučit upravované */ SELECT * FROM l2.DIM_CALENDAR EXCEPT SELECT * FROM bck.BACKUP_DIM_CALENDAR_20231124 |
Tipy s WHERE
Když píšu WHERE a často měním podmínky napíšu za WHERE 1 = 1 a s každou novou podmínkou pokračuji na novém řádku. Pak můžu jednoduše zakomentovat podmínku, kterou nechci použít.
Pokud chci z nějakého důvodu dotazu říct, aby nevracel žádná data – třeba z nějakého dočasného důvodu. Stačí jen do WHERE napsat 1 = 2.
SELECT * FROM l2.DIM_CALENDAR cal WHERE 1 = 1 AND cal.FLAG_WORKING_DAY = 1 /* Pracovní dny*/ AND cal.DIM_CALENDAR_DATE BETWEEN '2023-11-01' AND '2023-11-30' /* Listopad 2023 */ AND WEEK_DAY = 5 /* Pátek */ SELECT * FROM l2.DIM_CALENDAR cal WHERE 1 = 2 |
VALUES
Jiště jste si všimli klauzule VALUES při INSERTování záznamů. Nicméně se dá použít třeba i ve FROM nebo JOIN.
SELECT src.IID, src.TNAME FROM (VALUES ('KOKOS', 5), ('Palma', 3), ('Ostrov', 1)) AS src(TNAME, IID) |
Generování číselné řady bez rekurze
Někdy se hodí možnost vygenerovat čísla od 1 do x po sobě jdoucí. Lze to udělat rekurzí, ale existuje i způsob pomocí VALUES.
SELECT ones.N + 10*tens.N + 100*hundreds.N + 1000*thousands.N + 10000*tenthousands.N + 100000*hundredthousands.N + 1000000*milions.N AS N FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n), (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n), (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n), (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) thousands(n), (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tenthousands(n), (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundredthousands(n), (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) milions(n) ORDER BY 1
Spuštění SQL vícekrát v MSSQL
V MSSQL lze použít příkaz GO <x> pro spuštění předchozího SQL x-krát.
Stack overflow DB
Se StackOverFlow jste se jistě všichni setkali. Víte, ale že existuje mají volně dostupnou databázi v MSSQL na StackExchange, kde se lze zkoušet SQL?
Psaní na více řádků najednou
Ve většině IDE lze psát stejné informace na více řádků najednou. Jak toho docílit bývá někdy specifické. Ovšem nejčastěji se dá psát na více řádků pomocí zmáčknutí klávesy ALT a označení řádků na které chci psát myší. Je to velmi užitečné například pro dopsání uvozovek, case, atd.
Také je dobré si osvojit funkci najít a nahradit, včetně regex výrazů, kterou IDE podporují. Zajímavá je také možnost nahrát si makro v notepad++ . Hodí se pokud stejnou úpravu dělám například ob řádek.
Batch co spouští programy
Toto už není SQL tip, ale přišlo mi dobré ho sem zařadit. Protože při startu počítače (když dojde na to, že ho vypnu) se mi nechce ručně klikat na programy, tak jsem si na to napsal batch (ano je to na windows, ale na linuxu to bude velmi obdobné) co to udělá za mě. Batch pak vložím do adresáře po spuštění a OS ho bude po startu spouštět automaticky.
timeout 5 start "" C:\Programs\Vivaldi\Application\vivaldi.exe timeout 10 start "" "C:\Program Files (x86)\Microsoft SQL Server Management Studio 19\Common7\IDE\Ssms.exe" timeout 10 start "" "C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE" timeout 10 start "" "C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.2.1\bin\idea64.exe" timout 10 start "" c:\Programs\totalcmd\TOTALCMD64.EXE timeout 10 exit |
Programy by šly loadovat i z nějakého config souboru, ale tohle bohatě stačí. No a už víte v čem dělám. Než se zapne PC a spustí se programy mám akorát hotové kafe 😉
Doporučené články
Předchozí články
Co je to datový sklad (DWH)? – 1. díl
Základní tipy v datovém skladu (DWH) – 2. díl
Vrstvy datového skladu (DWH) – 3. díl
Pojmenovávání a dokumentace – 8. díl
Pokročilé agregační funkce – 10. díl
Příklady
k článku Tipy&Triky
SELECT dotazování – 2. příklady