SQLShack (Suomi)

SQLShack (Suomi)

Tämä artikkeli on noin monia erilaisia SQL-tietotyypit, joita käytämme, kun työskentelet SQL Server. Alamme on nopea yleiskatsaus ja käydä läpi joitakin juttuja, kuten tietojen luokat, tyypit, mitä esineitä voimme työskennellä, ja miten luoda omia mukautettuja tietotyyppejä.

SQL-tietotyypit yleistä

potkia asioita pois, puhutaanpa mitä on data-tyyppi. Jos minun pitäisi määritellä se, sanoisin, että tietotyyppi määrittää objektiin tallennettavien tietojen lajin, koon ja laajuuden., Niin, tämä tuo meidät kysymykseen esineitä, jotka ovat data-tyypit:

  • Sarakkeita
  • Muuttujat
  • Kiinan
  • Parametrit

Nämä neljä SQL-tietotyypit esineitä ovat erittäin tärkeitä. Sarakkeet ovat tietenkin taulukoita varten. Aina kun luomme muuttujan, meidän on myös annettava sille tietotyyppi. Näiden lisäksi meillä on ilmaisuja ja parametrit, tehdä lista kohteita, jotka ovat menossa järjestää tietoja, ja siksi meidän täytyy määrittää, millaisia tietoja ne sisältävät.,

eteenpäin, katsotaanpa kolmenlaisia tietojen tyypit:

  • Sisäänrakennettu tietotyypit
  • Käyttäjän määrittämä alias tietotyypit
  • Käyttäjän määrittämä common language runtime (CLR) tietotyypit

ei ole paljon sanottavaa ensimmäiseen luokkaan. Nämä ovat tietotyyppejä, joihin olemme kaikki tottuneet. Alla on kaavio, jossa luetellaan tunnettu sisäänrakennettu tietotyypit ja niiden alueet:

  • Huom: Teksti, Ntext, ja Kuvan SQL-tietotyyppi poistetaan tulevassa versiossa SQL Server. On suositeltavaa välttää näiden tietotyyppien käyttöä uudessa kehitystyössä., Käytä varchar(max) nvarchar(max), ja varbinary(max) – tietotyyppien sijaan.

Seuraava, meillä on mitä me alussa mainitsin, ja ne ovat käyttäjän määrittämiä alias tietotyypit, joiden avulla voimme luoda omia tietotyyppejä, joka perustuu sisäänrakennettu luettelo yli.

viimeinen luokka on käyttäjän määrittämä common language runtime (CLR) tietotyypit, joiden avulla voimme luoda omia tietotyyppejä käyttäen .NET Framework., Tämä on hieman monimutkaisempi kuin edellä ja vaatii ohjelmointitaitoja rakentaa kokoonpano, rekisteröidä, että kokoonpano sisällä SQL Server, luoda uuden SQL-tietotyyppi perustuu siihen, että kokoonpano ja sitten voimme alkaa käyttää vasta perustettu tietotyyppi SQL Server.

SQL-tietotyypit näkökohdat

siirrytään seuraavaan osioon, joka on pohjimmiltaan vain teoria, mutta varmasti jotain, että sinun pitäisi ajatella, kun tietojen tallentaminen joko pysyvästi tai tilapäisesti.,

muunnos

tietokantakehittäjänä yksi yleisimmistä rutiineista koodia kirjoitettaessa on muunnos. Muuntaminen tapahtuu, kun objektin tietoja siirretään, verrataan tai yhdistetään toisen objektin tietoihin. Nämä konversiot voivat tapahtua automaattisesti, mitä me kutsumme Implisiittinen muuntaminen SQL Server tai manuaalisesti, joka tunnetaan Avointa muuntaminen, joka pohjimmiltaan tarkoittaa, kirjoittaa koodin nimenomaan tehdä jotain. Hyödyllinen nyrkkisääntö on, että eksplisiittinen muuntaminen on aina parempi kuin implisiittinen muuntaminen, koska se tekee koodista luettavamman., Nyt, että puhumme tuloksia, on myös syytä mainita, on tavaraa, joka voi auttaa meitä nimenomaista muuntaminen kuin VALETTU ja MUUNTAA toimintoja käytetään muuntaa ilmaus yksi SQL-tietotyyppi toiseen.

GUID

GUID on lyhenne sanoista Globally Unique Identifier. Se on tapa taata ainutlaatuisuus ja se on yksi suurimmista SQL tietotyypit. Guidin ainoa haittapuoli on 16 tavun koko. Vältä siis mahdollisimman paljon guids-indeksejä.

NULL vs., EI NULL

Jos olet kiinni kanssa SQL Server-oletukset, jotka voivat johtaa joidenkin tietojen eheys kysymyksiä. Sinun pitäisi aina yrittää määrittää nullability ominaisuus, Kun olet määrittelemässä sarakkeita taulukoissa. Takaisin perusasiat, null tarkoittaa tuntematonta tai puuttuu, joka pohjimmiltaan tarkoittaa, että se ei ole 0 tai tyhjä merkkijono, ja emme voi tehdä null-vertailua. Emme voi sanoa null = null. Tämä on ei voi tehdä. On olemassa ominaisuus nimeltä ANSI_NULLS että voimme asettaa ja hallita tämän vertailun null arvot.,

Harvasarakkeet

tämänkaltainen sarake on vain SQL Serverin säännöllinen sarake, paitsi ominaisuus, joka on asetettu päälle ja se käskee SQL Serveriä optimoimaan kyseisen sarakkeen null-tallennukseen.

SQL Data type guidelines

ensinnäkin, Käytä tehtävään aina oikeaa tietotyyppiä. Tämä on paljon suurempi kuin useimmat luulevat. Sillä voi olla merkittävä vaikutus tehokkuuteen, suorituskykyyn, tallennukseen ja tietokannan kehittämiseen.

Jos otamme kaksi ensimmäistä, kyselyn optimoija aikoo luoda toteutussuunnitelman riippuen siitä, mitä tietotyyppejä käytetään., Hyvin yksinkertainen esimerkki voisi olla, jos käytämme bigint tietojen tyyppi, jossa voisimme käyttää smallint – no niin, olemme todennäköisesti vain hidastaa kyselyn. Oikean SQL-tietotyypin valitseminen johtaa lopulta siihen, että kyselyoptimizer toimii tehokkaammin.

Se on hyvä idea tarjota asiakirjat itsellesi ja muille käyttämällä tietokannan tietotyypit menee esineitä. On sanomattakin selvää, mutta vältä epätarkkoja tietotyyppejä, Tarkista aina Microsoftin uusimmat asiakirjat uutisista ja päivityksistä., Jos on pieni mahdollisuus, että aiot työskennellä ei-Englanti tietoja, aina käyttää Unicode tietotyypit. Lisäksi, käytä sysname tietotyypit hallinnollisten skriptejä yli nvarchar.

SQL-tietotyyppi esimerkkejä

katsotaanpa hypätä yli SSMS ja nähdä, miten voimme työskennellä joitakin tietotyyppejä mainittu aiemmissa osissa. Käymme läpi muunnoksia, harvennettuja sarakkeita ja peitenimiä.

Conversion

Cast, Convert and Parse functions muuntaa yhden SQL-tietotyypin ilmaisun toiseen., Alla on esimerkkikysely, jota voidaan käyttää näytteessä ”AdventureWorks” – tietokannassa ”TransactionHistory” – taulukkoa vastaan. Se on tarttumalla ”ProductID” ja ”TransactionDate”, josta voimme käyttää sitä kaupantekopäivänä nähdä, miten muuntaminen toimii:

Tässä on tulos joukko erilaisia SQL-tietotyypit:

– Olemme käyttäneet Cast-toiminto vastaan TransactionDate muuntaa arvot nvarchar pituus 30. Seuraavaksi käytimme muuntaa tehdä sama asia, mutta sitten myös määritelty formaatti 110, joka antaa meille tietyn päivämäärän tyyli., Lopuksi, käytimme Parsea, joka toimii periaatteessa samalla tavalla, mutta voimme soveltaa siihen kulttuuria.,katso tulos asettaa ja nähdä, mitä meillä on:

  1. Tässä meillä on päivämäärä ja kellonaika tapahtuman, koska se istuu sisällä tietokantaan (datetime tietotyyppi)
  2. Tässä on mitä se näyttää, kun me heittää sen tekstin edustus
  3. Muuntaa ei sama asia, mutta tässä tapauksessa, olemme määritellään, miten Muuntaa toiminto kääntää ilmaisun (110 = kk-pp-vvvv)
  4. Jäsennys tässä tapauksessa, vain kääntää pyydetyt tiedot käyttämällä erityisiä kulttuuri (en-US)

Seuraava, katsotaanpa joitakin ylimääräistä tavaraa, että voimme tehdä Jäsentää toimintaa., Parse on suuri muuntaa Jouset päivämäärät ja kokonaislukuja. Esimerkiksi, jos me suorittaa Select-käskyn alla, se on napata merkkijono 100.000 ja kääntää sen osaksi kokonaisluku:

1
VALITSE PARSE(’100.,000’ KUTEN INT) KUIN StringToInt;

Tässä on tulos asettaa:

Nyt oletetaan, että haluamme tehdä sama asia uudelleen, mutta jostain syystä, kokonaisluku on merkki siitä, että SQL Server voi muuntaa kokonaisluvuksi:

1
VALITSE PARSE(’10O.,000′ KUTEN INT) KUIN StringToIntError;

Tässä on virhe viesti, että se heittää:

Msg 9819, Taso 16, Valtio, 1, Linja 2
Virhe voi muuntaa merkkijonon arvo ’10O.000′ tiedot tyyppi int käyttäen kulttuuria ”.,

Joten mitä voimme tehdä tässä tapauksessa on käyttää Try_Parse sijaan säännöllisen Jäsentää, koska, jos yritämme sama asia, ylhäältä, se palauttaa null-arvon sijaan virhe:

1
VALITSE TRY_PARSE(’10O.,000′ KUTEN INT) KUIN StringToIntNull;

Tässä on mitä se näyttää

Tämä menetelmä voidaan käyttää tunniste, jos jotain olisi virhe etuajassa AKA puolustava koodaus. Kokeiluja voi hakea myös kahdesta muusta SQL-tietotyypistä.

Harva sarakkeita

Kuten mainitsin alussa, harva sarakkeet vähentää null tilantarve., So, let’s jump to Object Explorer in our sample database, locate and query BillOfMaterials table to see how this works:

1
2

SELECT *
FROM Production.,BillOfMaterials bom;

Huomaa, että on olemassa paljon null-arvojen sisällä ProductAssemblyID ja EndDate sarakkeet:

näin Ollen voimme sanoa, että nämä kaksi ovat hyviä ehdokkaita harva sarakkeita., Niin, yksi tapa muuttaa tämä on yksinkertaisesti muuttaa kiinteistön suunnittelija tai voimme tehdä sen käyttäen T-SQL-koodi alla:

1
2
3
4

ALTER TABLE Tuotanto.BillOfMaterials ALTER COLUMN ProductAssemblyID ADD SPARSE;
GO
ALTER TABLE Production.,BillOfMaterials MUUTTAA SARAKKEEN EndDate LISÄTÄ HARVA;
MENNÄ

– Komentoja ei onnistunut ensimmäisellä kerralla, joten minulla oli menettää aihekokonaisuuksien indeksi (rivi 7) ja sitten kaikki meni hyvin:

Jos menemme takaisin Object Explorer, päivittää BillOfMaterials taulukosta, voimme nähdä, että nämä kaksi ovat nyt merkitty harva sarakkeet:

Mukava, hyvin. Harvoissa pylväissä on vielä yksi siisti asia, jota kutsutaan pylväskokonaisuuksiksi., Tämä on hyödyllistä tilanteessa, kun meillä on taulukko, joka sisältää kasan erikoiskoneiden sarakkeet, joita käytetään harvoin, kuten tässä esimerkissä ProductAssemblyID ja EndDate sarakkeita tai AddressLine2, MiddleName, jne. Niin, idea sarakkeen asetettu on, että SQL Server ottaa kaikki sarakkeet ja antaa meille luotu XML sarake, joka on päivitettävissä. Tämä voi johtaa suorituskyvyn parantamiseen sovelluksen, koska SQL Server voi toimia sarakkeen asettaa eikä kunkin harvan sarake erikseen.,

So, let’s add a column set using those two examples from above using the following command:

1
2
3

ALTER TABLE Production.,BillOfMaterials
LISÄÄ SparseColumns XML COLUMN_SET VARTEN ALL_SPARSE_COLUMNS;
MENNÄ

Joten, jos yritämme lisätä sarakkeen asettaa, mutta meidän pöytä on jo harva sarakkeita, se virhe pois:

Msg 1734, Taso 16, Valtion 1, Rivi 9
Voi luoda harva sarake set ’SparseColumns’ taulukossa ’BillOfMaterials’ koska taulukko sisältää jo yhden tai useamman harva sarakkeita. Taulukkoon ei voi lisätä harvaa sarakesaraketta, jos taulukossa on harvaa saraketta.,

Jos tähän joskus törmää, helpointa on kumota harvalukuiset palstat. Tämä onnistuu helposti suunnittelijalla. Vain avata Object Explorer, valitse sarake, jonka tarvitset, ja sisällä sarakkeen ominaisuuksia muuttaa On Jäsentää omaisuutta Ei kuten alla:

Nyt, jos me suorita komento yksi enemmän aikaa, se onnistuu:

bottom line tässä, älä lisää harva sarakkeet ensimmäinen – lisää sarake asetetaan ensin ja sitten harva sarakkeita. Siten sinun ei tarvitse tehdä sitä vaikealla tavalla., Mikä on todella siisti noin tämä, meidän DML-lausekkeita, kuten Select, Insert ja Update voi edelleen toimia vanhalla tavalla viittaamalla sarakkeet erikseen tai voimme tehdä sen käyttämällä sarakkeen sarjaa.

käyttäjän määrittelemät SQL-tietotyypit

paketoidaan asiat muokatun tietotyypin luomiseen. Aiomme luoda peitenimen tietotyyppi, joka perustuu toiseen tietotyyppiin. Sanotaan vain, että meillä on tarve säilyttää URL-osoitteita pöydässämme ja haluamme luoda todellisen URL-tietotyypin., All we need to do is execute the code from below:

1
2
3

CREATE TYPE url
FROM varchar(2048) NOT NULL
GO

URLs are just characters, so the varchar data type is perfect for this., Olen asettanut max arvo 2048 koska tätä säiettä, että olen löytänyt verkossa, jossa todetaan, että sinun pitäisi pitää Url-osoitteiden alle 2048 merkkiä:

Voimme nähdä tämä uusi SQL-tietotyyppi, jos me pään yli Object Explorer, alle Ohjelmoitavuus, Tyypit, Käyttäjän määrittämät tietotyypit kansioon:

täältä, voimme alkaa käyttää vasta perustettu tietotyyppi., Just an example:

1
2
3

ALTER TABLE Purchasing.Vendor
ADD PurchasingWebServiceURL2 url NULL
GO

Conclusion

In this article, we learned how to implement SQL data types., Aloitimme yleiskatsauksen tutustuaksemme joihinkin sisäänrakennettuihin tietotyyppeihin. Sitten puhuimme joitakin asioita harkita työskennellessään tietotyypit ja muuntaminen käyttäen valettu, muuntaa ja jäsentää toimintoja. Hyppäsimme myös SSMS: ään, jossa näytimme, miten muunnamme yhden tietotyypin ilmaisun toiseen. Kävimme läpi, miten työskennellä harva sarakkeita, ja sitten näimme myös, miten voit luoda omia mukautettuja tietotyyppejä.

toivon, että tämä artikkeli SQL-tietotyypit on ollut informatiivinen sinulle ja kiitos, että luet sen.,

  • Tekijä
  • Viimeisimmät Viestit
Bojan aka ”Boksi”, AP valmistunut tietotekniikan keskittyi Verkostojen ja sähköisen teknologian Copenhagen School of Design ja Tekniikka on ohjelmisto, analyytikko, jolla on kokemusta laadunvarmistuksesta, ohjelmisto, tuki -, tuote-evankeliointi, ja käyttäjän osallistumista.,
Hän on kirjoittanut laajasti sekä SQL-Shack ja ApexSQL Ratkaisu Center aiheista, jotka vaihtelevat asiakkaan teknologioita kuten 4K resoluutio ja teemoja, virhe käsittely-indeksi strategioiden ja suorituskyvyn seuranta.
Bojan töissä ApexSQL Nis, Serbia olennaisena osana joukkue keskittyy suunnitteluun, kehittämiseen ja testaukseen seuraavan sukupolven tietokannan työkaluja, kuten MySQL-ja SQL Server, ja sekä stand-alone työkaluja ja integraatiot osaksi Visual Studio, SSMS, ja VSCode.,
näytä enemmän siitä, Bojan LinkedIn
Näytä kaikki viestit Bojan Petrovic

Uusimmat viestit Bojan Petrovic (katso kaikki)
  • Visual Studio Code for MySQL ja MariaDB kehitys – elokuu 13, Vuoteen 2020 mennessä
  • SQL UPDATE-syntaksi selitti – 10. heinäkuuta 2020 mennessä
  • LUO NÄKYMÄ SQL: Työskentely indeksoitu näkemyksiä SQL Server – Maaliskuu 24, 2020

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *