Kun aloin saada osaksi Structured Query Language (SQL) noin 2014, muistan pesu internet-esimerkkejä. Näkisin ihmisten sanovan: ”Tämä käyttää dynaamista SQL: ää ”tai” se skripti on dynaaminen.”Vaikka näin esimerkkejä, en oikeastaan ymmärtänyt komponentteja, jotka tekivät siitä ”dynaamisen”, koska olin Uusi. Kuten olen saanut enemmän kokemusta, en ole vain oppinut kolme osatekijää, jotka muodostavat dynaaminen SQL, mutta myös miten soveltaa sitä eri käyttötilanteissa., Tämä lyhyt esittely on suunniteltu auttamaan SQL aloittelijoille, tai kuka tahansa muu, paremmin ymmärtämään komponentteja dynaaminen SQL.
Tietojen Esimerkkejä
käytän vaihtoehtoja markkinoilla kaupat käytettävissä tietoja Kaggle jos kiinnostaa.
mikä on dynaaminen SQL?
Vaikka sen soveltaminen voi olla monimutkaista, määritelmä dynaaminen SQL on todella yksinkertainen:
Dynaaminen SQL on SQL, joka rakentuu suorituksen.
Tämän avulla voit rakentaa yleiskäyttöinen kyselyn ja rakentaa lausuman sinun täytyy suorittaa lennossa käyttämällä muuttujia., Aion purkaa tämän esimerkin super perus dynaaminen SQL alla:
DECLARE @dynamic_sql NVARCHAR(max)select @dynamic_sql = 'select * from orderFlow'EXEC(@dynamic_sql)
vastakohta on dynaaminen SQL on staattinen SQL, joka on SQL-lause, joka ei muutu suorituksen aikana. Esimerkiksi:
SELECT * FROM orderFlow
Huomaa eroa? Staattista SQL: ää ei suoriteta komennolla eikä rakenneta muuttujien avulla.
Kolme Askelta Kirjoittaa Dynaaminen SQL
Jos haluat kirjoittaa dynaaminen SQL, muista kolme komponenttia :
- Julistaa Muuttujia
Ajatella käyttämällä muuttujia, kuten rakennusaineita SQL., Esimerkissä ilmoitin muuttujan nimeltä dynamic_sql ja annoin sille datatyypin nvarchar (max). Käytän max antaa minulle eniten tilaa syöttää SQL lausunto.
DECLARE @dynamic_sql NVARCHAR(max)
2. Muodosta SQL String
se, että voit syöttää minkä tahansa SQL haluat muuttujan dynamic_sql on osa mitä tekee tästä esimerkistä dynaaminen SQL ensinnäkin! Koska haluan palauttaa kaikki tulokset taulukosta, orderFlow, en aseta muuttuja yksinkertainen valitse ilmoitus, joka voidaan toteuttaa ilman virhe.
select @dynamic_sql = 'select * from orderFlow '
3., Suorita SQL statement
lauseke, joka rakennettiin vaiheessa kaksi on suoritettava. EXEC-komentoa käytetään tyypillisesti tallennettujen menettelyjen ajamiseen,mutta se voi suorittaa minkä tahansa merkkijonona tallennetun legit SQL-lausekkeen, kuten muuttujan dynamic_sql.
EXEC(@dynamic_sql)
Kuvitelkaa kanssa käyttöliittymä, joka on tekstikenttä, jonka avulla käyttäjä voi syöttää raaka-SQL, ja suorittaa sitten, että ilmoitus, kun käyttäjä napsauttaa ajaa. Olen käyttänyt samanlaisia toimintoja Business Intelligence-tuotteissa!, Nyt kun tiedät joitakin dynaaminen SQL, on helppo kuvitella, miten se voisi toimia kulissien takana.
Onnittelut! Nyt tiedät 3 komponentit dynamic SQL!, esimerkkejä:
Kuvittele, että olet luoda käyttöliittymä, jonka avulla käyttäjät voivat vuorovaikutuksessa tiedot, mutta sen sijaan, että ne kirjoittaa puhdasta SQL, voit anna heidän rakentaa lausuman, käyttäen 2 pudota luettelot:
Takana käytä tallennetut menettely ja dynaaminen SQL execute SQL rakennettu UI:
Huomaa, tallennetut menettely käyttää käyttäjä syöttää asuttamaan kaksi muuttujaa., Koska muuttujat on jo määritelty nähnyt käyttöliittymän mock-up, tallennetut menettely yksinkertaisesti tarvitsee rakentaa merkkijono ja suorittaa lausunnot. Lisäsin tilan, jotta käyttäjän ei tarvitse muistaa syöttää yhtä suorittaessaan menettelyä., Esimerkiksi:
Käyttötapaus 2:
Kuvittele, että haluat käyttää tallennettu menettely kyselyn orderFlow taulukon tietyn varastossa symboli:
CREATE PROCEDURE sp_example2
@stock_symbol NVARCHAR(6) = NullAS
SELECT * FROM orderFlow where sym = @stock_symbolHuomaa, että muuttujaa käytetään where Käytössä Tapauksessa 2. Näin voin syöttää varastosymbolin ja saada tuloksia tarvitsematta käyttää staattista kyselyä yhä uudelleen.,
The Downsides with Dynamic
There can be some downsides to using dynamic SQL., Se voi olla altis SQL injektio joten se mahdollinen turvallisuus huolenaihe. SQL-injektio tapahtuu yleensä kun pyytää käyttäjän syötettä, ja sen sijaan odotettavissa input, kuten käyttäjätunnus, käyttäjä syöttää SQL-käskyn, joka toimii tietokannan aiheuttaa odottamattomia asioita tapahtuu. SQL-injektio voi aiheuttaa vakavia ongelmia ja ovat yleinen hakkeri tekniikka.
suorituskyky voi olla toinen mahdollinen huolenaihe, koska toteutussuunnitelmaa ei voida välimuistia. Tapa toimia tämän ympärillä on käyttää tallennettuja menettelyjä ja sp_executesql-komentoa (ainakin Microsoft sql server)., Dynaamiset SQL-lausekkeet voivat monimutkaistua nopeasti ja niitä voi olla vaikea debugata, mikä tekee niistä uhkaavia aloittelijoille.
Lopullinen Ajatuksia
Vaikka se voi tuntua hankala tai työläs aluksi, dynaaminen SQL on tehokas tekniikka, koska sen avulla voit rakentaa ja suorittaa SQL-lauseiden suorituksen., Dynaaminen SQL koostuu kolmesta osasta:
- Julistaa Muuttujia
- Rakentaa SQL-Merkkijono
- Execute SQL
Siellä voi olla joitakin haittapuoli, kuten tehdä koodin vaikeampi debug, mutta se antaa joustavuutta käyttäjät voivat suuremmat huolenaiheet erityisesti silloin, kun ne toteutetaan asianmukaisesti.
Jos olet kiinnostunut oppimaan lisää SQL-tai Data Science, tutustu minun muita tutorials: