SQL serverio laikinosiose lentelėse duomenys saugomi laikinai. Laikinojoje lentelėje galite atlikti tas pačias operacijas, pvz., SELECT, INSERT, DELETE ir UPDATE, kaip ir įprastoje SQL lentelėje.
Temp lentelės yra tempdb duomenų bazėje ir yra matomos tik ryšio metu. Kai nutraukiate ryšį, SQL serveris ištrina laikinąją lentelę. Taip pat galite bet kada jį aiškiai ištrinti.
SQL serverio temp lentelių tipai
Yra dviejų tipų SQL Server temp lentelės: vietinės ir pasaulinės.
Vietinė temp lentelė
Vietinę laikinąją lentelę mato tik ją sukūręs ryšys. Kai šis ryšys nutrūksta arba vartotojas atsijungia nuo SQL serveris Pavyzdžiui, vietinė temp lentelė automatiškai pašalinama.
Norėdami sukurti vietinę laikinąją lentelę, lentelės pavadinimo pradžioje naudokite vieną maišos simbolį (#) su sakiniu CREATE TABLE. Čia yra sintaksė.
KURTILENTELĖ#TempTable (
1 stulpelis INT,
2 stulpelis VARCHAR(50)
);
Pavyzdžiui, šis kodas sukuria laikiną lentelę TempCustomer su vardu ir el. pašto laukeliu.
KURTILENTELĖ#TempCustomer (
ID int NOT NULL PIRMINIS RAKTAS
Visas vardas VARCHAR(50),
El. paštas VARCHAR(50)
);
Pasaulinė tempų lentelė
Visuotinė laikinoji lentelė yra laikina lentelė, matoma visiems ryšiams ir vartotojams. SQL serveris atmes jį, kai visi ryšiai ir vartotojai, kurie nurodo lentelę, bus atjungti.
Norėdami sukurti visuotinę laikinąją lentelę, prieš lentelės pavadinimą įrašykite dvigubą maišą (##) ir naudokite teiginį CREATE TABLE.
KURTILENTELĖ##TempTable (
1 stulpelis INT,
2 stulpelis VARCHAR(50)
);
Šis kodas sukuria pasaulinę temp lentelę pavadinimu TempCustomer.
KURTILENTELĖ##TempCustomer (
ID int NOT NULL PIRMINIS RAKTAS
Visas vardas VARCHAR(50),
El. paštas VARCHAR(50)
);
Šis kodas panašus į vietinės temp lentelės pavyzdį, tik su dviem maišos simboliais, o ne vienu. Dabar galite naudoti standartinės SQL komandos Norėdami pridėti arba manipuliuoti laikinosios lentelės duomenimis.
Kaip numesti laikinąją lentelę
SQL serverio egzempliorius automatiškai atmeta laikinąją lentelę, kai visi ją nurodantys vartotojai atsijungia. Kaip geriausia praktika, visada turėtumėte aiškiai atsisakyti temp lentelių, kad atlaisvintumėte tempdb atmintį.
Norėdami atmesti laikinąją lentelę, naudokite teiginį DROP TABLE IF EXISTS ir laikinosios lentelės pavadinimą.
Štai kaip panaikinti #TempCustomer lentelę:
NULEISTILENTELĖJEIYRA#TempCustomer
Naudokite tą patį kodą, bet pakeiskite lentelės pavadinimą, kad atsisakytumėte visuotinės laikinosios lentelės.
NULEISTILENTELĖJEIYRA##TempCustomer
Įprasti SQL temp lentelių naudojimo būdai
Laikinosios lentelės yra naudingos, kai reikia saugoti tarpinius sudėtingų užklausų rezultatus, kuriuos reikia toliau apdoroti. Pavyzdžiui, kuriant ataskaitas gali tekti sukurti laikinas lenteles, kad būtų saugomi kelių duomenų bazių užklausų rezultatai. Tada galite sugeneruoti galutinę ataskaitą vykdydami užklausą pagal laikinąsias lenteles.
Kitas scenarijus, kai naudingos laikinosios lentelės, yra tada, kai jums reikia užklausos rezultatų iš vienos lentelės, kad galėtumėte vykdyti kitą užklausą. Galite saugoti rezultatus laikinojoje lentelėje ir tada nurodyti juos naujoje užklausoje. Iš esmės laikinąją lentelę naudojate kaip darbo arba buferio lentelę, kurioje saugomi duomenys, kurių reikia konkrečiai užduočiai atlikti.
Temp lentelių naudojimas SQL serveryje
Duomenims laikinai saugoti ir apdoroti galite naudoti SQL serverio laikinąsias lenteles. Yra dviejų tipų laikinosios lentelės: vietinės ir pasaulinės. Vietinė laikinoji lentelė matoma ryšiui, kuriame ji sukurta, o visuotinė laikinoji lentelė matoma visuose ryšiuose.
Laikinosios lentelės automatiškai sunaikinamos, kai atsijungiate nuo serverio egzemplioriaus. Tačiau norėdami sutaupyti atminties, visada turėtumėte juos išmesti po naudojimo.