Uvod v kazalce v SQL

Kazalci so začasne delovne prostore, ustvarjene v pomnilniku za obdelavo nekaterih ukazov SQL na kupu podatkov. Preveč zapletena definicija? Naj razumemo. Pomislite na kazalce kot na vsako zanko v SQL-u. Če želite opraviti nalogo v nizu podatkovnih vrstic, uporabljate kazalec. Recimo, da imate mizo za zaposlene, ki ima plačo za vsakega zaposlenega v organizaciji. Želite povečati plačo vsakega zaposlenega za določen odstotek. Tukaj bi uporabili kazalec. "Kako" je prikazano v nadaljevanju članka.

Torej kazalci ustvarijo začasen delovni prostor z izbranim nizom vrstic in kazalcem, ki kaže na trenutno vrstico. Ta niz vrstic, na katerem bo kazalec opravil želeno operacijo, se imenuje aktivni niz podatkov. Kazalec pridobiva vrstice iz rezultata, ena za drugo. Nato lahko izvajate katero koli operacijo SQL po eno vrstico.

Implicitni kazalci

Implicitni kazalci, kot že ime pove, so ustvarjeni s SQL razčlenjevalcem za poizvedbe DML. Poizvedbe DML so poizvedbe o manipulaciji podatkov. Te poizvedbe manipulirajo ali spreminjajo podatke. Ne posegajo v strukturo ali shemo baze podatkov. Poizvedbe, kot so SELECT, INSERT, UPDATE in DELETE, ustvarijo implicitni kazalec. Neizmerni kazalci so za končnega uporabnika skriti.

Eksplicitni kazalci

Eksplicitni kazalci so kazalci, ki jih ustvarijo uporabniki. Ko uporabnik naroči SQL razčlenjevalcu, naj ustvari kurzor za aktivni niz, se tako ustvarjen kurzor imenuje eksplicitni kazalec. Aktivni niz je določen s SELECT poizvedbo s strani uporabnika. V tem članku bomo podrobno pokrivali izrecne kazalce.

Dejanja kazalca - Življenjski cikel kazalca

Življenjski cikel kazalca običajno vključuje pet stopenj:

1. Izjavi: Prvi korak je razglasitev kazalca. Ta korak naloži sistemu, da ustvari kazalec z danim naborom podatkov. Niz podatkov je sestavljen s stavkom SQL. Na tej stopnji se ustvari aktivni niz, vendar začasni delovni prostor kazalca še ni odprt v pomnilniku.

2. Odprto: Nato sistem pokaže, da odpre kazalec. Na tej stopnji se začasni delovni prostor naloži v pomnilnik z aktivnim nizom in ustvari kazalec, ki kaže na prvo vrstico v aktivnem nizu.

3. Pridobi: To je ponavljajoč se korak v celotnem postopku. Prenesena je trenutna vrstica, na katero kaže kazalec, in želeno opravilo se izvede na podatkih vrstice Kazalec se premakne na naslednjo vrstico kazalca.

4. Zapri: Ko je obdelava podatkov končana, je treba kazalec zapreti.

5. Prerazporedi: To je zadnji korak za brisanje kazalca in sprostitev pomnilnika, procesorja in drugih sistemskih virov, dodeljenih kazalcu.

Izrecni kazalci - v akciji!

Ok, zdaj imamo osnovno razumevanje, kaj so kazalci in kako delujejo. Čas je, da si umažemo roke in sami ustvarimo nazorni kazalec.

Terminologija kazalcev v SQL

Razumejmo terminologije, uporabljene v tej skladnji.

Obseg kazalca

  • Področje uporabe kazalca je lahko GLOBALNO ali LOKALNO . V celotni povezavi je na voljo globalni kazalec. Lokalni kazalnik je omejen samo na shranjene postopke, funkcije ali poizvedbo, ki drži kazalec.
  • To je značilnost MS SQL Server. MySQL podpira samo krajevne kazalce.

Gibanje kazalca

  • MS SQL Server omogoča tudi nastavitev gibanja kazalca. Lahko je to običajen način Forward_Only, ki premakne kazalec iz prve vrstice na zadnjo vrstico. Lahko pa se pomaknete do prve, zadnje, prejšnje ali naslednje vrstice.
  • Kazatelji v MySQL se ne dajo premikati.

Vrsta kurzorja

  • Kazalec je lahko statičen, saj lahko predpomni aktivni niz do premestitve in lahko premika naprej in nazaj skozi ta predpomnjeni aktivni niz. Kazalec je lahko hiter naprej le v statičnem načinu.
  • Lahko je tudi dinamičen, da omogoči dodajanje ali brisanje vrstic v aktivnem nizu, ko je kazalec odprt. Te spremembe niso vidne drugim uporabnikom kurzorja v načinu tipkovnice. Kazatelji v MySQL so samo hitri.

Zaklep kazalca

  • Kazalne ključavnice so uporabne v več uporabniškem okolju. Vrstico zaklenejo tako, da na istih podatkih hkrati ne delujeta nobena dva uporabnika. To zagotavlja celovitost podatkov.
  • Zaklepanje, ki je samo za branje, navaja, da vrstice ni mogoče posodobiti.
  • Drsni ključavnice zaklenejo vrstico, ko so naložene v kazalcu in tako zagotovijo, da je naloga uspešna in da so posodobljeni podatki na voljo zunaj kazalca. Optimistični poskusi posodobitve vrstice brez zaklepanja. Če je bila vrstica posodobljena zunaj kazalca, naloga ne bo uspela.
  • MySQL podpira samo ključavnice samo za branje. To pomeni, da MySQL ne bo posodobil dejanske tabele, temveč bi kopiral podatke za izvajanje ukazov za posodobitev.

Tako vidimo, da so te možnosti na voljo samo v MS SQL Server. Zaradi tega je sintaksa za MySQL kazalce še bolj preprosta.

Primer

Zdaj posodobimo plačo zaposlenih v naši tabeli zaposlenih.

Spodnje podatke bomo uporabili v teh kazalcih v primeru SQL.

Naša kurzirana koda je naslednja:

DECLARE @sal float
DECLARE @newsal float
DECLARE Emp_Cur CURSOR FOR SELECT Salary, Updated_Salary FROM Employees
OPEN Emp_Cur
FETCH NEXT FROM Emp_Cur INTO @sal, @newsal
WHILE @@FETCH_STATUS = 0
BEGIN
SET @newsal = @sal*1.25
UPDATE Employees SET Updated_Salary = @newsal WHERE CURRENT OF Emp_Cur
FETCH NEXT FROM Emp_Cur INTO @sal, @newsal
END
CLOSE Emp_Cur
DEALLOCATE Emp_Cur

In izhod po izvedbi zgornjega ukaza kurzorja bi bil:

Zaključek - Kazalniki v SQL

Tako smo videli, kaj so kazalci, kako jih uporabljati in kje se jim izogniti. Kazatelji se izkažejo kot koristen pripomoček za razvijalce, vendar s ceno zmogljivosti. Bodite torej previdni, ko se odločite za kazalce.

Priporočeni članki

To je vodnik za Cursors v SQL. Tu obravnavamo vrste, življenjski cikel in terminologijo kazalca v SQL s primeri. Ogledate si lahko tudi druge naše predlagane članke -

  1. Vrste združitev v SQL
  2. SQL Alter ukaz
  3. Pogledi SQL
  4. Orodja za upravljanje SQL
  5. Vrste kazalcev v PL / SQL
  6. Prvih 6 vrst združitev v MySQL s primeri