Osnove SQL-a za početnike sa lekcijama. SQL programski jezik šta vam treba

Od autora: Jesu li te zvali čajnikom? Pa, ovo se može popraviti! Svaki samovar je nekada bio čajnik! Ili je svaki profesionalac nekada bio samovar? Ne, opet nešto nije u redu! Generalno, MySQL je za početnike.

Zašto je lutkama potreban MySQL?

Ako ozbiljno planirate da svoj život povežete sa internetom, onda ćete već od prvih koraka u „webu“ naići na ovaj DBMS. MySQL se lako može nazvati “all-Internet” sistemom upravljanja bazom podataka. Ni jedan više ili manje ozbiljan resurs ne može bez njega; on je prisutan u admin panelu svakog hostinga. A najviše od svih popularnih CMS-a, pa čak i „domaćih“ motora izgrađeni su uz njegovo učešće.

Općenito, ne možete bez ove platforme. Ali da biste ga proučili, također će vam trebati pravi pristup, pravi alati i što je najvažnije želja i strpljenje. Nadam se da imate dovoljno poslednjih sastojaka. I budite spremni da vam mozak proključa i da vam para izlije iz glave, kao iz pravog čajnika

Ali MySQL je tako težak za lutke samo ako počnete da ga učite pogrešno. Vi i ja nećemo napraviti takvu grešku i počet ćemo naše upoznavanje s ovom tehnologijom od samog početka.

Osnovni koncepti

Prvo, prijeđimo na osnovne koncepte koje ćemo spomenuti u ovoj publikaciji:

Baza podataka (DB) je glavna komponenta DBMS-a. Baza podataka uključuje tabele koje se sastoje od kolona i zapisa (redova). Ćelije formirane na raskrsnici sadrže strukturirane podatke određenog tipa.

DBMS (sistem za upravljanje bazom podataka) je skup svih softverskih modula za administraciju baze podataka.

SQL je strukturirani jezik upita s kojim programer "komunicira" sa jezgrom (serverom) DBMS-a. Kao i svaki programski jezik, SQL ima vlastitu sintaksu, skup naredbi i operatora i podržane tipove podataka.

Mislim da nam je teorijsko znanje dovoljno za početak. Praksom ćemo „obojiti“ nedostajuće praznine u teoriji. Sve što je preostalo je odabrati pravi softverski alat.

Odabir pravog alata

Preturajući po čitavom nizu MySQL školjki za početnike, shvatio sam da one jednostavno ne postoje. Svi softverski proizvodi za administraciju DBMS zahtevaju već instaliran server baze podataka. Generalno, još jednom sam odlučio da ne izmišljam „skuter“, i odlučio sam se za domaći Denwer paket. Možete ga preuzeti na službenoj web stranici.

Već uključuje sve komponente DBMS-a, omogućavajući početniku da započne praktično upoznavanje sa MySQL-om odmah nakon jednostavne i jednostavne instalacije. Pored toga, Denwer uključuje još nekoliko alata neophodnih za početnike programera: lokalni server, PHP.

Prvi koraci

Neću opisivati ​​proces instalacije "džentlmenskog" seta, jer se tamo sve događa automatski. Nakon pokretanja instalacije, imajte vremena samo da pritisnete potrebne tipke. Upravo ono što vam treba u verziji MySQL for dummies.

Kada je proces instalacije završen, pokrenite lokalni server, pričekajte nekoliko sekundi. Nakon toga unesite localhost u adresnu traku vašeg pretraživača.

Na stranici "Ura, radi!" slijedite jedan od linkova prikazanih na slici. Nakon toga ćete biti odvedeni na phpMyAdmin - ljusku za administriranje baza podataka.

Prateći vezu http://downloads.mysql.com/docs/world.sql.zip, preuzet ćete primjer testne baze podataka sa službene MySQL web stranice. Idite ponovo na phpMyAdmin, u glavnom meniju na vrhu idite na karticu „Uvoz“. U prozoru Import to Current, u prvom odjeljku (File to Import), postavite vrijednost na Browse your computer.

U prozoru Explorer izaberite arhivu sa preuzetom bazom podataka primera. Ne zaboravite da kliknete na "OK" na dnu glavnog prozora.

Savjetujem vam da za sada ne mijenjate navedene vrijednosti parametara. Ovo može dovesti do pogrešnog prikaza uvezenih izvornih podataka. Ako phpMyAdmin sistem generiše grešku da ne može prepoznati algoritam kompresije baze podataka, onda ga raspakirajte i ponovite cijeli proces uvoza od početka.

Ako je sve prošlo kako treba, tada će se na vrhu pojaviti programska poruka da je uvoz uspješan, a još jedna (riječ) će se pojaviti s lijeve strane u listi baze podataka.

Pogledajmo njegovu strukturu iznutra kako biste mogli jasnije zamisliti s čim imate posla.

Kliknite na naziv MySQL baze podataka za početnike. Ispod nje će biti prikazana lista tabela od kojih se sastoji. Kliknite na jedan od njih. Zatim idite na gornju stavku menija „Struktura“. Glavna radna oblast će prikazati strukturu tabele: imena svih kolona, ​​tipove podataka i sve atribute.

Dobrodošli u razvoj baze podataka koristeći standardni SQL jezik upita. Sistemi za upravljanje bazama podataka (DBMS) imaju mnogo alata koji rade na širokom spektru hardverskih platformi.

  • Osnove relacione baze podataka

    U ovom poglavlju... | Organiziranje informacija | Šta je baza podataka | Šta je DBMS | Poređenje modela baza podataka | Šta je relaciona baza podataka

  • Osnove SQL-a

    U ovom poglavlju... | Šta je SQL | SQL Misconceptions | Pogled na različite SQL standarde | Uvod u standardne SQL naredbe i rezervirane riječi | Predstavljanje brojeva, simbola, datuma, vremena i drugih vrsta podataka | Nedefinirane vrijednosti i ograničenja

  • SQL komponente

    U ovom poglavlju... | Kreiranje baze podataka | Obrada podataka | Zaštita baze podataka | SQL je jezik posebno dizajniran za kreiranje i održavanje podataka u relacionim bazama podataka. I iako kompanije koje isporučuju sisteme za upravljanje takvim bazama podataka nude sopstvene implementacije SQL-a, razvoj samog jezika je određen i kontrolisan ISO/ANSI standardom.

  • Kreiranje i održavanje jednostavne baze podataka

    U ovom poglavlju... | Kreirajte, modificirajte i izbrišite tablicu iz baze podataka koristeći RAD alat. | Kreirajte, modificirajte i izbrišite tablicu iz baze podataka koristeći SQL. | Prijenos baze podataka na drugi DBMS.

  • Kreiranje višetabelarne relacijske baze podataka

    U ovom poglavlju... | Šta treba da bude u bazi podataka | Definiranje odnosa između elemenata baze podataka | Povezivanje tablica pomoću tipki | Dizajn integriteta podataka | Normalizacija baze podataka | Ovo poglavlje će predstaviti primjer kreiranja baze podataka sa više tablica.

  • Manipulisanje podacima iz baze podataka

    U ovom poglavlju... | Rad sa podacima | Dobivanje potrebnih podataka iz tabele | Prikaz informacija odabranih iz jedne ili više tabela | Ažuriranje informacija u tabelama i pogledima | Dodavanje novog reda u tabelu

  • Definiranje vrijednosti

    U ovom poglavlju... | Korištenje varijabli za smanjenje suvišnog kodiranja | Dohvaćanje često traženih informacija koje se nalaze u polju tablice baze podataka | Kombiniranje jednostavnih vrijednosti za stvaranje složenih izraza | Ova knjiga neprestano naglašava koliko je struktura baze podataka važna za održavanje integriteta baze podataka.

  • Složeni izrazi sa značenjem

    U ovom poglavlju... | Korištenje uvjetnih iskaza slučaja | Pretvaranje stavke podataka iz jednog tipa podataka u drugi | Uštedite vrijeme unosa podataka pomoću izraza sa vrijednostima zapisa | U poglavlju 2, SQL je nazvan podjezikom podataka.

  • "Ciljanje" na tražene podatke

    U ovom poglavlju... | Određivanje potrebnih tabela | Odvajanje potrebnih linija od svih ostalih | Stvaranje efektivnih klauzula gdje | Kako raditi sa null vrijednostima | Stvaranje složenih izraza sa logičkim veznicima | Grupiranje rezultata upita po koloni

  • Relacioni operatori

    U ovom poglavlju... | Tablice za spajanje koje imaju sličnu strukturu | Spajanje tablica koje imaju različite strukture | Dobivanje potrebnih podataka iz više tabela | SQL je jezik upita koji se koristi u relacionim bazama podataka.

  • Korištenje ugniježđenih upita

    U ovom poglavlju... | Dohvaćanje podataka iz više tablica korištenjem jednog SQL izraza | Pronalaženje stavki podataka poređenjem vrijednosti iz jedne tablice sa skupom vrijednosti iz druge | Pronalaženje stavki podataka upoređivanjem vrijednosti iz jedne tablice s jednom vrijednošću odabranom pomoću naredbe za odabir iz druge

  • Rekurzivni upiti

  • Osiguravanje baze podataka

    U ovom poglavlju... | Kontrola pristupa tabelama baze podataka | Odlučivanje o odobravanju pristupa | Davanje dozvola pristupa | Opoziv ovlaštenja pristupa | Sprečavanje pokušaja neovlaštenog pristupa

  • Zaštita podataka

    U ovom poglavlju... | Kako izbjeći korupciju baze podataka | Problemi uzrokovani istovremenim operacijama | Rješavanje ovih problema pomoću SQL motora | Postavljanje potrebnog nivoa sigurnosti pomoću naredbe set transakcije

  • Korištenje SQL-a u aplikacijama

    U ovom poglavlju... | SQL u aplikaciji | Dijeljenje SQL-a s proceduralnim jezicima | Kako izbjeći nekompatibilnosti | SQL kod ugrađen u proceduralni kod | Pozivanje SQL modula iz proceduralnog koda | Pozivanje SQL-a iz RAD alata | U prethodnim poglavljima smo uglavnom posmatrali SQL komande pojedinačno, tj. Formuliran je zadatak obrade podataka i kreiran je SQL upit za njega.

  • ODBC i JDBC

    U ovom poglavlju... | ODBC Definicija | Opis ODBC dijelova | Korištenje ODBC-a u klijent/server okruženju | Korištenje ODBC-a na Internetu | Korištenje ODBC-a u lokalnim mrežama | Korištenje JDBC | Svake godine računari jedne organizacije ili više različitih organizacija sve su više međusobno povezani. Stoga postoji potreba da se uspostavi zajednički pristup bazama podataka preko mreže.

  • SQL:2003 i XML

    U ovom poglavlju... | Korištenje SQL-a s XML-om | XML, baze podataka i Internet | Jedna od najznačajnijih novih karakteristika SQL:2003 je njegova podrška za XML (extensible Markup Language) datoteke, koje sve više postaju univerzalni standard za razmjenu podataka između različitih platformi.

  • Kursori

    U ovom poglavlju... | Definiranje opsega kursora u izjavi deklariranja | Kursor za otvaranje | Uzorkovanje podataka red po red | Zatvaranje kursora | SQL se razlikuje od većine najpopularnijih programskih jezika po tome što istovremeno izvršava operacije nad podacima svih redova tabele, dok proceduralni jezici obrađuju podatke red po red.

  • Danas, SQL kursevi "za lutke" postaju sve popularniji. To se može objasniti vrlo jednostavno, jer se u modernom svijetu sve više mogu naći takozvani „dinamički“ web servisi. Odlikuje ih prilično fleksibilna ljuska i baziraju se na Svi programeri početnici koji odluče posvetiti web stranice, prije svega upisuju se na SQL tečajeve "za lutke".

    Zašto učiti ovaj jezik?

    Prije svega, SQL se poučava kako bi se dalje kreirao širok spektar aplikacija za jedan od najpopularnijih blog motora danas - WordPress. Nakon što završite nekoliko jednostavnih lekcija, moći ćete kreirati upite bilo koje složenosti, što samo potvrđuje jednostavnost ovog jezika.

    Šta je SQL?

    Ili je strukturirani jezik upita kreiran sa jednom jedinom svrhom: da se odredi, omogući pristup i obradi u prilično kratkom vremenskom periodu. Ako znate značenje SQL-a, onda ćete shvatiti da je ovaj server klasifikovan kao takozvani “neproceduralni” jezik. Odnosno, njegove mogućnosti uključuju samo opis bilo koje komponente ili rezultata koje želite da vidite u budućnosti na sajtu. Ali kada ne označava tačno kakvi će se rezultati dobiti. Svaki novi zahtjev na ovom jeziku je kao dodatna “nadgradnja”. Upiti će se izvršavati redoslijedom kojim se unose u bazu podataka.

    Koje procedure se mogu izvesti koristeći ovaj jezik?

    Uprkos svojoj jednostavnosti, SQL baza podataka vam omogućava da kreirate širok spektar upita. Dakle, šta možete učiniti ako naučite ovaj važan programski jezik?

    • kreirati širok izbor stolova;
    • primati, pohranjivati ​​i modificirati primljene podatke;
    • mijenjajte strukture tablica po vlastitom nahođenju;
    • kombinirati primljene informacije u pojedinačne blokove;
    • izračunati primljene podatke;
    • osigurati potpunu zaštitu informacija.

    Koje su komande najpopularnije na ovom jeziku?

    Ako odlučite da pohađate kurs SQL for Dummies, tada ćete dobiti detaljne informacije o naredbama koje se koriste za kreiranje upita pomoću njega. Najčešći danas su:

    1. DDL je naredba koja definira podatke. Koristi se za kreiranje, modifikovanje i brisanje širokog spektra objekata u bazi podataka.
    2. DCL je naredba koja manipulira podacima. Koristi se za omogućavanje pristupa različitim korisnicima informacijama u bazi podataka, kao i za korištenje tabela ili pogleda.
    3. TCL je tim koji upravlja raznim transakcijama. Njegova glavna svrha je da odredi napredak transakcije.
    4. DML - manipuliše primljenim podacima. Njegov zadatak je omogućiti korisniku da premjesti različite informacije iz baze podataka ili ih unese tamo.

    Vrste privilegija koje postoje na ovom serveru

    Privilegije se odnose na one radnje koje određeni korisnik može izvršiti u skladu sa svojim statusom. Najminimalnija je, naravno, redovna prijava. Naravno, privilegije se s vremenom mogu promijeniti. Stari će biti izbrisani, a novi će biti dodati. Danas svi oni koji pohađaju kurseve SQL Servera "za lutke" znaju da postoji nekoliko vrsta dozvoljenih radnji:

    1. Tip objekta - korisniku je dozvoljeno da izvrši bilo koju naredbu samo u odnosu na određeni objekt koji se nalazi u bazi podataka. Istovremeno, privilegije se razlikuju za različite objekte. Oni su također vezani ne samo za određenog korisnika, već i za tabele. Ako je neko, koristeći svoje mogućnosti, kreirao tabelu, onda se smatra njenim vlasnikom. Stoga ima pravo da dodijeli nove privilegije drugim korisnicima u vezi sa informacijama u njemu.
    2. Tip sistema je tzv. data copyright. Korisnici koji su dobili takve privilegije mogu kreirati različite objekte u bazi podataka.

    Istorija SQL-a

    Ovaj jezik je kreirala IBM Research Laboratory 1970. godine. Tada mu je naziv bio malo drugačiji (SEQUEL), ali je nakon nekoliko godina korištenja promijenjen, blago skraćen. Unatoč tome, i danas mnogi svjetski poznati stručnjaci za programiranje i dalje izgovaraju ime na starinski način. SQL je kreiran sa jednim jedinim ciljem - izmisliti jezik koji bi bio toliko jednostavan da bi ga i obični korisnici Interneta mogli naučiti bez problema. Zanimljiva činjenica je da u to vrijeme SQL nije bio jedini takav jezik. U Kaliforniji je druga grupa stručnjaka razvila sličan Ingres, ali nikada nije postao široko rasprostranjen. Prije 1980. postojalo je nekoliko varijacija SQL-a koje su se samo malo razlikovale jedna od druge. Kako bi se spriječila zabuna, 1983. je stvorena standardna verzija, koja je i danas popularna. SQL kursevi "za lutke" omogućavaju vam da naučite mnogo više o servisu i da ga u potpunosti proučite za nekoliko sedmica.

    Strukturirani jezik upita ili SQL je deklarativni programski jezik za upotrebu u kvazirelacionim bazama podataka. Mnoge originalne karakteristike SQL-a preuzete su iz računa tuple, ali nedavna proširenja SQL-a uključuju sve više i više relacijske algebre.
    SQL je prvobitno kreirao IBM, ali mnogi dobavljači su razvili vlastite dijalekte. Usvojen je kao standard od strane američkog Nacionalnog instituta za standarde (ANSI) 1986. godine i ISO 1987. godine. U standardu SQL programskog jezika, ANSI je naveo da je službeni izgovor SQL-a "es q el". Međutim, mnogi stručnjaci za baze podataka koristili su "sleng" izgovor "Sequel", koji odražava originalni naziv jezika, Sequel, koji je kasnije promijenjen zbog sukoba žiga i imena sa IBM-om. Programiranje za početnike.
    SQL programski jezik je revidiran 1992. i ova verzija je poznata kao SQL-92. 1999 je zatim ponovo revidiran da postane SQL:1999 (AKA SQL3). Programiranje za lutke. SQL 1999 podržava objekte koji ranije nisu bili podržani u drugim verzijama, ali od kraja 2001. samo nekoliko sistema za upravljanje bazom podataka podržava SQL implementacije: SQL 1999.
    SQL, iako je definiran kao ANSI i ISO, ima mnoge varijacije i proširenja, od kojih većina ima svoje karakteristike, kao što je implementacija "PL/SQL" korporacije Oracle ili implementacija Sybase i Microsoft pod nazivom "Transact-SQL", što može biti zbunjujuće za onima koji su upoznati sa osnovama programiranja. Takođe nije neuobičajeno da komercijalne implementacije izostave podršku za glavne karakteristike standarda, kao što su tipovi podataka kao što su datum i vreme, preferirajući neku od sopstvenih varijanti. Kao rezultat toga, za razliku od ANSI C ili ANSI Fortrana koji se obično može prenijeti s platforme na platformu bez velikih strukturnih promjena, upiti SQL programskog jezika rijetko se mogu prenositi između različitih sistema baza podataka bez značajnih modifikacija. Većina ljudi u industriji baza podataka vjeruje da je ovaj nedostatak kompatibilnosti namjeran, kako bi se svakom programeru pružio vlastiti sistem upravljanja bazom podataka i vezao kupca za određenu bazu podataka.
    Kao što mu ime govori, SQL programski jezik je dizajniran za specifične, ograničene svrhe - ispitivanje podataka sadržanih u relacionoj bazi podataka. Kao takav, to je skup instrukcija programskog jezika za kreiranje uzoraka podataka, a ne proceduralni jezik kao što je C ili BASIC, koji su dizajnirani za rješavanje mnogo šireg spektra problema. Proširenja jezika kao što je "PL/SQL" su dizajnirana da riješe ovo ograničenje dodavanjem proceduralnih elemenata SQL-u uz zadržavanje prednosti SQL-a. Drugi pristup je ugrađivanje naredbi proceduralnog programskog jezika u SQL upite i interakcija s bazom podataka. Na primjer, Oracle i drugi podržavaju Javu u bazi podataka, dok PostgreSQL dozvoljava pisanje funkcija u Perl, Tcl ili C.
    Jedna šala o SQL-u: "SQL nije ni strukturiran ni jezik." Poenta šale je da SQL nije Turingov jezik. .

    Odaberite * od T
    C1 C2
    1 a
    2 b
    C1 C2
    1 a
    2 b
    Odaberite C1 iz T
    C1
    1
    2
    C1 C2
    1 a
    2 b
    Odaberite * od T gdje je C1=1
    C1 C2
    1 a

    Uz tabelu T, upit Select * from T će prikazati sve elemente svih redova u tabeli.
    Iz iste tabele, upit Select C1 from T će prikazati elemente iz kolone C1 svih redova u tabeli.
    Iz iste tabele, upit Select * from T gdje je C1=1 će prikazati sve elemente svih redova u kojima je vrijednost stupca C1 "1".

    SQL ključne riječi

    SQL riječi su podijeljene u nekoliko grupa.

    Prvi je Jezik za manipulaciju podacima ili DML(jezik upravljanja podacima). DML je podskup jezika koji se koristi za ispitivanje baza podataka i dodavanje, ažuriranje i brisanje podataka.

    • SELECT je jedna od najčešće korištenih DML naredbi i omogućava korisniku da specificira upit kao skup opisa željenog rezultata. Upit ne specificira kako bi rezultati trebali biti raspoređeni - prevođenje upita u formu koja se može izvršiti u bazi podataka je posao sistema baze podataka, tačnije optimizatora upita.
    • INSERT se koristi za dodavanje redova (formalni skup) postojećoj tabeli.
    • UPDATE se koristi za promjenu vrijednosti podataka u postojećem redu tabele.
    • DELETE specificira postojeće redove koji će biti obrisani iz tabele.

    Može se reći da tri druge ključne riječi spadaju u DML grupu:

    • POČNI RAD (ili POČNI TRANSAKCIJU, ovisno o SQL dijalektu) može se koristiti za označavanje početka transakcije baze podataka koja će ili završiti sve ili se uopće neće izvršiti.
    • COMMIT navodi da se spremaju sve promjene podataka napravljene nakon izvršenih operacija.
    • ROLLBACK specificira da se sve promjene podataka nakon posljednjeg urezivanja ili vraćanja moraju uništiti, sve do točke koja je zabilježena u bazi podataka kao “povratak”.

    COMMIT i ROLLBACK se koriste u područjima kao što su kontrola transakcija i zaključavanje. Obje instrukcije završavaju sve trenutne transakcije (skupove operacija na bazi podataka) i uklanjaju sva zaključavanja na promjeni podataka u tabelama. Prisustvo ili odsustvo BEGIN WORK ili sličnog izraza ovisi o određenoj SQL implementaciji.

    Druga grupa ključnih riječi pripada grupi Jezik definicije podataka ili DDL (Jezik definicije podataka). DDL omogućava korisniku da definira nove tablice i njihove povezane elemente. Većina komercijalnih SQL baza podataka ima svoje ekstenzije u DDL-u koje omogućavaju kontrolu nad nestandardnim, ali obično vitalnim elementima određenog sistema.
    Glavne tačke DDL-a su naredbe za kreiranje i brisanje.

    • CREATE specificira objekte (kao što su tabele) koji će biti kreirani u bazi podataka.
    • DROP specificira koji će postojeći objekti u bazi podataka biti obrisani, obično trajno.
    • Neki sistemi baza podataka također podržavaju naredbu ALTER, koja omogućava korisniku da promijeni postojeći objekt na različite načine - na primjer, dodavanjem stupaca postojećoj tablici.

    Treća grupa SQL ključnih riječi je Jezik kontrole podataka ili DCL (jezik kontrole podataka). DCL je odgovoran za prava pristupa podacima i omogućava korisniku da kontroliše ko ima pristup da pregleda ili manipuliše podacima u bazi podataka. Ovdje postoje dvije glavne ključne riječi.

    U ovom materijalu pokušao sam kombinirati sve glavne točke Transact-SQL, koji će pomoći početnicima programera baza podataka da savladaju ovaj jezik i pišu upite i aplikacije u Transact-SQL jeziku.

    Programiranje baza podataka, tačnije, baze podataka na kojima se pokreće Microsoft SQL Server, postalo je veoma popularno, zbog čega sam odlučio napraviti neku vrstu mini priručnika u kojem možete pronaći sve glavne stvari sa objašnjenjima i, naravno, primjerima.

    Da biste vježbali pisanje SQL upita ili kreiranje objekata baze podataka, možete koristiti besplatno izdanje SQL Server Expressa u vrijeme sastavljanja priručnika, najnovija verzija je Microsoft SQL Server 2014 Express.

    Transact-SQL referenca za početnike - opis reference

    Ova referenca će izgledati ovako, prvo ću dati mali sadržaj sa navigacijom, zatim će početi sama referentna knjiga, bit će komentari, objašnjenja i primjeri za svaku stavku. Također, ako smo već detaljno ispitali ili koristili negdje u materijalima na našoj web stranici ovaj ili onaj predmet ili radnju, ja ću, naravno, dati linkove tako da možete vidjeti detaljne primjere ili kako koristiti ovu ili onu radnju u praksi .

    Budući da je jednostavno nemoguće pokriti apsolutno sve, nemojte se iznenaditi ako ovdje nešto niste pronašli. Ponavljam još jednom da je ovaj priručnik kreiran za početnike Transact-SQL programere, kao i za jednostavne administratore koji povremeno moraju preuzeti neke podatke sa SQL servera.

    Za detaljno proučavanje T-SQL jezika, preporučujem da pročitate moju knjigu „Put T-SQL programera. Tutorial o Transact-SQL jeziku“, u kojem govorim o T-SQL jeziku što je moguće detaljnije, uz veliki broj primjera.

    Baza podataka

    Čak i novi Transact-SQL programer treba da zna kako da kreira bazu podataka ili da promeni njena svojstva, pa pre nego što pogledamo tabele, poglede, funkcije i sve ostalo, pogledajmo proces kreiranja, modifikacije i brisanja Transact-SQL baze podataka.

    Stvaranje

    Da biste kreirali bazu podataka, morate pokrenuti sljedeći upit:

    CREATE DATABASE test

    gdje je test naziv baze podataka.

    Više o kreiranju baze podataka na SQL serveru pričali smo u materijalu Kako napraviti bazu podataka u MS Sql 2008

    Uklanjanje

    Ako trebate izbrisati bazu podataka, možete koristiti upit:

    DROP DATABASE test

    Promjena

    Da biste promijenili parametre baze podataka, možete koristiti grafičko sučelje Management Studio-a, u kojem su svi parametri detaljno opisani, ili možete poslati upite ALTER DATABASE, na primjer, da biste omogućili automatsku kompresiju testne baze podataka, koristite sljedeći upit

    ALTER DATABASE test SET AUTO_SHRINK ON;

    --I da isključite ALTER DATABASE test POSTAVITE AUTO_SHRINK OFF;

    Nadam se da je jasno, ALTER DATABASE je naredba za promjenu, test je naziv baze podataka koja se mijenja, SET je naredba koja ukazuje da ćemo promijeniti parametre baze podataka, AUTO_SHRINK sam parametar, ON/OFF vrijednost parametra.

    Tipovi podataka

    Najčešći i najčešće korišteni

    • Tačne brojke
    • tinyint - 1 bajt
    • smallint - 2 bajta
    • int - 4 bajta
    • bigint - 8 bajtova numerički i decimalni ()
    • tip sa fiksnom preciznošću i skalom
    • novac - 8 bajtova

    smallmoney - 4 bajta

    • Približne brojke
    • float [ (n) ] – veličina zavisi od n (n može biti od 1 do 53, zadano 53)

    realno - 4 bajta

    • Datum i vrijeme
    • datum – datum
    • vrijeme - vrijeme

    datetime - datum koji uključuje doba dana sa delićima sekunde u 24-satnom formatu.

    • Nizovi znakova
    • char [ (n) ] – niz fiksne dužine, gdje je n dužina niza (od 1 do 8000). Veličina memorije je n bajtova.
    • varchar [ (n | max) ] je niz fiksne dužine, gdje je n dužina niza (od 1 do 8000). Ako navedete max, tada će maksimalna veličina memorije biti 2^31-1 bajta (2 GB), a ako navedete n, onda stvarna dužina unesenih podataka plus 2 bajta.
    • tekst – niz podataka promenljive dužine, maksimalna veličina 2,147,483,647 bajtova (2 GB).
    • nchar[(n)] je Unicode string fiksne dužine, gdje je n dužina niza (od 1 do 4000). Veličina memorije je dvostruko veća od vrijednosti n u bajtovima
    • nvarchar [ (n | max) ] je Unicode string fiksne dužine, gdje je n dužina niza (od 1 do 4000). Ako navedete max, maksimalna veličina memorije će biti 2^31-1 bajta (2 GB), a ako je n, tada će biti dvostruka stvarna dužina unetih podataka plus 2 bajta.

    ntext je niz podataka promenljive dužine, sa maksimalnom dužinom niza od 1,073,741,823 bajta.

    • Binarni podaci
    • varbinary [ (n | max) ] - binarni podaci promjenjive dužine, gdje n može imati vrijednost od 1 do 8000. Ako navedete max, maksimalna veličina memorije će biti 2^31-1 bajtova (2 GB). Kada je n specificirano, veličina memorije je stvarna dužina ulaznih podataka plus 2 bajta.
    • slika - binarni podaci promjenljive dužine, veličine od 0 do 2^31 - 1 (2,147,483,647) bajtova.

    Ostalo

    • xml – skladištenje xml podataka. Detaljno smo razgovarali u materijalu Transact-sql - rad s xml-om, a ako uopće ne znate što je XML, onda smo o tome govorili u članku Osnove XML-a za početnike.
    • tabela – skladištenje rezultujućeg skupa redova.

    Stolovi

    Na ovoj stranici ima dovoljno primjera kreiranja tabela, jer u skoro svakom članku koji se odnosi na SQL dajem primjer kreiranja probne tablice, ali da bismo konsolidirali znanje, napravimo, izmijenimo i izbrišemo probnu tablicu. Pogledajmo samo kako su tipovi podataka polja postavljeni u Transact-SQL tabelama.

    Stvaranje

    CREATE TABLE test_table( IDENTITY(1,1) NOT NULL, --identifikator, int cijeli broj, nije dozvoljeno NULL vrijednosti (50) NULL, --puno ime, niz od 50 znakova, NULL vrijednosti dozvoljene NULL, -- zbir, približna numerička vrijednost, NULL vrijednosti su dozvoljene NULL, --datum i vrijeme, NULL vrijednosti su dozvoljene (100) NULL --string dužine 100 znakova, NULL vrijednosti su dozvoljene) ON GO

    Dodavanje kolone

    ALTER TABLE test_table DODAJ prosto_pole numeric(18, 0) NULL
    • test_table je ime tabele;
    • add — naredba za dodavanje;
    • prosto_pole – naziv kolone;
    • pole numeric(18, 0) – tip podataka nove kolone;
    • NULL – parametar koji znači da se NULL vrijednost može pohraniti u ovo polje.

    Promjena tipa podataka

    Promenimo tip podataka novog polja koje smo upravo kreirali (prosto_pole) iz numeric(18, 0) u bigint i povećajmo dužinu polja za komentar na 300 karaktera.

    ALTER TABLE test_table ALTER COLUMN prosto_pole bigint;

    ALTER TABLE test_table ALTER COLUMN komentar varchar(300); Napomena!

    SQL server neće moći promijeniti tip podataka ako se vrijednosti u ovim poljima ne mogu pretvoriti, u kom slučaju ćete morati obrisati kolonu sa svim podacima i ponovo dodati ili obrisati sve podatke u ovom polju.

    Uklanjanje kolone

    Za brisanje određene kolone koristite naredbu drop, na primjer, da obrišete polje prosto_pole, koristite sljedeći upit

    ALTER TABLE test_table DROP COLUMN prosto_pole

    Brisanje tabele

    Da bismo izbrisali tabelu, napisaćemo ovaj jednostavan upit, gde je test_table tabela za brisanje

    DROP TABLE test_tabela

    Vrlo koristan objekat u bazi podataka je pogled (VIEW) ili, po našem mišljenju, jednostavno pogled. Ako neko ne zna, pogled je vrsta pohranjenog upita kojem se može pristupiti na isti način kao i tablici. Napravimo pogled na osnovu testne tabele test_table, i pretpostavimo da vrlo često treba da napišemo upit, na primer, prema uslovu, zbir je veći od 1000, pa da ne bismo svaki put pisali ovaj upit, jednom ćemo napisati pogled, a naknadno ćemo se referirati na njega.

    Stvaranje

    CREATE VIEW test_view KAO SELECT id, fio, comment IZ test_table GDJE suma > 1000 GO

    Primjer pristupa pogledu:

    SELECT * FROM test_view

    Promjena

    ALTER VIEW test_view KAO SELECT id, fio, comment IZ test_table GDJE suma > 1500 GO

    Uklanjanje

    DROP VIEW test_view

    System Views

    MS SQL Server DBMS ima sistemske objekte koji ponekad mogu pružiti prilično korisne informacije, na primjer, sistemske poglede. Sada ćemo analizirati nekoliko takvih reprezentacija. Možete im pristupiti na isti način kao i običnim prikazima ( na primjer, odaberite * iz prikaza naslova)

    • sys.all_objects – sadrži sve objekte baze podataka, uključujući parametre kao što su: ime, tip, datum kreiranja i drugi.
    • sys.all_columns – vraća sve kolone tabela sa njihovim detaljnim karakteristikama.
    • sys.all_views – Vraća sve poglede u bazi podataka.
    • sys.tables – sve tabele baze podataka.
    • sys.triggers – svi pokretači baze podataka.
    • sys.databases – sve baze podataka na serveru.
    • sys.sysprocesses – aktivni procesi, sesije u bazi podataka.

    Zapravo ih ima mnogo, tako da je nemoguće sve ih srediti. Ako želite vidjeti kako se mogu koristiti u praksi, to smo već učinili, na primjer, u materijalima

    Funkcije

    MS SQL server vam omogućava da kreirate funkcije koje će vratiti određene podatke, drugim riječima, korisnik sam može napisati funkciju i koristiti je u budućnosti, na primjer, kada je potrebno dobiti vrijednosti koje zahtijevaju složene proračune ili složene odabir podataka. Ponekad samo za smanjenje koda, kada će poziv funkcije zamijeniti često potrebne vrijednosti u različitim zahtjevima i aplikacijama.

    Stvaranje

    CREATE FUNCTION test_function (@par1 bigint, @par2 float) VRAĆA varchar(300) KAO POČETAK DEKLARI @rezult varchar(300) SELECT @rezult=comment IZ test_table GDJE id = @par1 I suma > @par2 VRAĆA @rezult END
    • CREATE FUNCTION – naredba za kreiranje funkcijskog objekta;
    • test_function – naziv nove funkcije;
    • @par1 i @par2 – dolazni parametri;
    • RETURNS varchar(300) – tip povrata;
    • DECLARE @rezult varchar(300) – deklaracija varijable tipa varchar(300);
    • Select izraz u našem slučaju je radnja funkcije;
    • RETURN @rezult – vraća rezultat;
    • BEGIN i END su početak i kraj koda funkcije, respektivno.

    Primjer korištenja u zahtjevu:

    SELECT test_function(1, 20)

    Promjena

    ALTER FUNCTION test_function (@par1 bigint, @par2 float) VRAĆA varchar(300) KAO POČETAK DECLARE @rezult varchar(300) SELECT @rezult=comment IZ test_table_new GDJE id = @par1 I suma >= @par2 VRAĆAJ @rezult END

    Uklanjanje

    DROP FUNCTION test_funkcija

    Ugrađene funkcije

    Osim što vam SQL server omogućava kreiranje prilagođenih funkcija, on također pruža mogućnost korištenja ugrađenih funkcija koje su DBMS programeri već napisali za vas. Ima ih mnogo, pa sam one najčešće podijelio u grupe i pokušao ih ukratko opisati.

    Funkcije sistema

    Ovdje ću dati neke primjere funkcija koje vraćaju različite sistemske podatke

    • @@VERSION – vraća verziju SQL servera;
    • @@SERVERNAME – vraća ime servera;
    • SUSER_NAME() – korisničko ime za prijavu na server, drugim riječima, pod kojim loginom radi ovaj ili onaj korisnik;
    • user_name() – korisničko ime baze podataka;
    • @@SERVICENAME – naziv DBMS servisa;
    • @@IDENTITY - posljednji identifikator umetnut u tabelu;
    • db_name() - naziv trenutne baze podataka;
    • db_id() – identifikator baze podataka.

    Agregatne funkcije

    Funkcije koje izračunavaju vrijednost na osnovu skupa (grupe) vrijednosti. Ako, prilikom pozivanja ovih funkcija, trebate navesti kolonu za prikaz rezultata, tada morate grupisati podatke (grupisati po) prema ovom polju. O ovoj konstrukciji smo detaljno raspravljali u članku Transact-SQL grupiranje podataka po grupi

    • avg – vraća prosječnu vrijednost;
    • count – broj vrijednosti;
    • max – maksimalna vrijednost;
    • min – minimalna vrijednost;
    • sum – zbir vrijednosti.

    Primjer upotrebe:

    SELECT COUNT(*) kao broj, SUM(suma) kao zbir, MAX(id) kao maksimalni, MIN(id) kao min, AVG(summa) kao avg FROM test_table

    Funkcije niza

    Ova vrsta funkcije radi s nizovima u skladu s tim.

    lijevo (string izraz, broj znakova) – vraća navedeni broj znakova u nizu koji počinje slijeva.

    Primjer

    SELECT LEFT("Primjer funkcije lijevo", 10) --Rezultat "Primjera"

    U redu (string izraz, broj znakova) – vraća navedeni broj znakova u nizu počevši s desna

    Primjer

    SELECT Right("Primjer desne funkcije", 10) -- Rezultat "Desne funkcije"

    Len (linija) – vraća dužinu niza.

    Primjer

    SELECT len("Primjer kako funkcionira funkcija len") --Rezultat 28

    Niže (linija) – vraća string u kojem su svi znakovi konvertovani u mala slova.

    Primjer

    SELECT lower("Primjer niže funkcije") --Rezultat "primjera niže funkcije"

    Upper (linija) - vraća string u kojem su svi znakovi konvertovani u velika slova.

    Primjer

    SELECT Upper("Primjer gornje funkcije") --Rezultat "PRIMJER GORNJE FUNKCIJE"

    Ltrim (linija) – vraća string sa uklonjenim svim vodećim razmacima.

    Primjer

    SELECT ltrim("Primjer o radu funkcije ltrim") --Rezultat "Primjera o radu funkcije ltrim"

    Rtrim (linija) – vraća string sa uklonjenim svim razmacima na desnoj strani

    Primjer

    SELECT Rtrim ("Primjer rada funkcije Rtrim") -- Rezultat "Primjera rada funkcije Rtrim"

    Zamijenite (linija, šta tražimo, čime da ga zamenimo?) – zamjenjuje u string izrazu sva pojavljivanja navedena u drugom parametru sa znakovima navedenim u trećem parametru.

    Primjer

    SELECT Replace ("Primjer funkcije zamjene", "rad", "ZAMJENA") -- rezultat "Primjer funkcije REPLACE funkcije zamjene"

    Replicate (linija, broj ponavljanja) – ponavlja liniju (prvi parametar) onoliko puta koliko je navedeno u drugom parametru.

    Primjer

    SELECT Replicate ("Replicate Example", 3) -- Rezultat "Replicate Example Replicate Example Replicate Example"

    Obrnuto (linija) – vraća sve obrnutim redoslijedom.

    Primjer

    SELECT Reverse ("Primjer funkcije Reverse") -- Rezultat "esreveR iitsknuf etobar op remirP"

    Space (broj mjesta) – vraća string kao određeni broj razmaka.

    Primjer

    SELECT Space(10) -- Rezultat " "

    Podniz (linija, početna pozicija, koliko karaktera) – vraća string dužine jednake broju navedenom u trećem parametru, počevši od znaka navedenog u drugom parametru.

    Primjer

    SELECT Substring("Primjer rada funkcije podniza", 11, 14) -- Rezultat "operacije funkcije"

    Matematičke funkcije

    Okrugli (broj, tačnost zaokruživanja) – zaokružuje numerički izraz na broj cifara navedenih u drugom parametru

    Primjer

    SELECT Round(10.4569, 2) -- Rezultat "10.4600"

    Kat (broj) – vraća cijeli broj zaokružen naniže.

    Primjer

    SELECT Floor(10.4569) -- Rezultat "10"

    Plafon (broj) – vraća cijeli broj zaokružen na gore.

    Primjer

    SELECT Plafon (10.4569) -- Rezultat "11"

    Snaga (broj, stepen) — vraća broj podignut na stepen naveden u drugom parametru.

    Primjer

    SELECT Power(5,2) -- Rezultat "25"

    Square (broj) – vraća brojčanu vrijednost na kvadrat

    Primjer

    SELECT Square(5) -- Rezultat "25"

    Abs (broj) – vraća apsolutnu pozitivnu vrijednost

    Primjer

    SELECT Abs(-5) -- Rezultat "5"

    Dnevnik(broj) – prirodni logaritam s pomičnim zarezom.

    Primjer

    SELECT Log(5) -- Rezultat "1.6094379124341"

    Pi– broj pi.

    Primjer

    SELECT Pi() -- Rezultat "3.14159265358979"

    rand– vraća nasumični broj s pomičnim zarezom između 0 i 1

    Primjer

    SELECT rand() -- Rezultat "0.713273187517105"

    Funkcije datuma i vremena

    Getdate()– vraća trenutni datum i vrijeme

    Primjer

    SELECT Getdate() -- Rezultat "2014-10-24 16:36:23.683"

    Dan(datum) – vraća dan od datuma.

    Primjer

    SELECT Day(Getdate()) -- Rezultat "24"

    Mjesec(datum) – vraća broj mjeseca od datuma.

    Primjer

    SELECT Month(Getdate()) -- Rezultat "10"

    Godina (datum) – vraća godinu od datuma

    Primjer

    SELECT godina(Getdate()) -- Rezultat "2014"

    DATEPART(odeljak datuma, datum) – vraća navedeni odjeljak od datuma (DD,MM,GGGG, itd.)

    Primjer

    SELECT DATEPART(MM,GETDATE()) -- Rezultat "10"

    Isdate (datum) – provjerava uneseni izraz da vidi da li je to datum

    Primjer

    SELECT Isdate(GETDATE()) -- Rezultat "1"

    Funkcije konverzije

    Cast (izraz kao tip podataka) – funkcija za pretvaranje jedne vrste u drugu. U primjeru pretvaramo tip float u int

    Primjer

    SELECT CAST(10.54 kao int) --rezultat 10

    Pretvori – (tip podataka, izraz, format datuma) je funkcija za pretvaranje jednog tipa podataka u drugi. Vrlo često se koristi za konvertovanje datuma, koristeći treći opcioni parametar - format datuma.

    Primjer

    SELECT GETDATE(), CONVERT(DATE, GETDATE(), 104) --Rezultat --2014-10-24 15:20:45.270 – bez konverzije;

    --2014-10-24 nakon konverzije.

    Funkcije tablice

    Stvaranje

    Kreiraju se kako bi se iz njih dobili podaci kao iz tabela, ali nakon različitih vrsta proračuna. O funkcijama tablica smo detaljno govorili u materijalu Transact-sql - Funkcije tablice i privremene tablice

    Promjena

    --ime naše funkcije CREATE FUNCTION fun_test_tabl (--dolazni parametri i njihov tip @id INT) --povratna vrijednost, tj. tablica VRAĆA TABLE KAO --odmah vraća rezultat RETURN (--sam upit ili neke kalkulacije SELECT * FROM test_table gdje je id = @id) GO

    Uklanjanje

    --ime naše funkcije ALTER FUNCTION fun_test_tabl (--dolazni parametri i njihov tip @id INT) --povratna vrijednost, tj. tablica VRAĆA TABLE KAO --odmah vraća rezultat RETURN (--sam upit ili neke kalkulacije SELECT * FROM test_table gdje je id = @id i suma > 100) GO

    DROP FUNCTION fun_test_tabl

    Kao što vidite, za kreiranje, promjenu ili brisanje takvih funkcija koriste se isti operatori kao i za obične funkcije, jedina razlika je koji tip funkcija vraća.

    Primjer pozivanja ove funkcije

    Procedure

    Procedure je skup SQL instrukcija koje se kompajliraju jednom i, kao i funkcije, mogu uzeti različite parametre. Koristi se za pojednostavljenje proračuna i izvođenje grupnih radnji.

    Stvaranje

    CREATE PROCEDURE sp_test_procedure (@id INT) AS --declare varijabli DECLARE @sum FLOAT --SQL iskazi SET @sum = 100 UPDATE test_table SET summa = summa + @sum GDJE id = @id GO

    Promjena

    ALTER PROCEDURE sp_test_procedure (@id int) AS --declare varijabli DECLARE @sum float --SQL iskazi SET @sum = 500 UPDATE test_table SET summa = summa + @sum GDJE id = @id GO

    Uklanjanje

    DROP PROCEDURE sp_test_procedure

    Pozivanje procedure

    Možete ga nazvati na različite načine, na primjer:

    IZVRŠITE sp_test_procedure 1 --ili IZVRŠITE sp_test_procedure 1

    Gdje su EXECUTE i EXEC poziv procedure, sp_test_procedure, respektivno, naziv naše procedure, 1 vrijednost parametra

    Sistemske procedure

    Sistemske procedure– to su procedure za izvođenje različitih administrativnih radnji kako na objektima na serveru tako i na konfiguraciji samog servera. Pozivaju se na isti način kao i obične procedure, ali u kontekstu bilo koje baze podataka.

    Ima ih ogroman broj, pa ću navesti samo nekoliko primjera.

    sp_configure– procedura za prikaz i unošenje promjena u konfiguraciju kernela DBMS-a. Prvi parametar je naziv konfiguracijskog parametra, drugi parametar je vrijednost.

    Primjer

    Promijenite vrijednost parametra EXEC sp_configure "Ad Hoc distribuirani upiti",1 ponovo konfigurirajte --primijenite EXEC sp_configure --samo pogledajte vrijednosti svih parametara

    gdje je 'Ad Hoc distribuirani upiti' naziv parametra, 1 koji odgovara vrijednosti koju želimo promijeniti, rekonfiguracija će primijeniti unesenu vrijednost.

    U praksi smo koristili ovu proceduru u materijalu Interdatabase Query u Transact-SQL-u

    sp_executesql– izvršava Transact-SQL naredbu ili skup iskaza koji se mogu generirati dinamički. Koristili smo ovu proceduru u promjenama podataka evidencije materijala u tablici koristeći Transact-SQL

    Primjer

    EXECUTE sp_executesql N"SELECT * FROM test_table WHERE id = @id", N"@id int", @id = 1

    Gdje je prvi parametar sql instrukcija (niz u Unicodeu), drugi je definicija svih parametara ugrađenih u sql instrukciju, treći je vrijednost parametara.

    sp_help– vraća detaljne informacije o bilo kojem objektu baze podataka.

    Primjer

    EXECUTE sp_help "test_table"

    sp_rename– preimenuje objekt u bazi podataka. Može se koristiti za preimenovanje tablica, indeksa, imena stupaca u tablicama. Ne preporučuje se korištenje ove procedure za preimenovanje korisničkih procedura, okidača, funkcija.

    Primjer preimenovanja tabele

    EXEC sp_preimenuj "test_table", "test_table_new"

    gdje je prvi parametar objekt sa starim imenom, a drugi parametar je novo ime objekta.

    Primjer preimenovanja stupca u tabeli

    EXEC sp_rename "test_table.summa", "summa_new", "COLUMN"

    Treći parametar označava da se kolona preimenuje.

    Okidači

    Trigger je normalna procedura, ali je poziva događaj, a ne korisnik. Događaj, na primjer, može biti umetanje novog reda u tabelu (umetanje), ažuriranje podataka u tabeli (ažuriranje) ili brisanje podataka iz tabele (brisanje).

    Stvaranje

    CREATE TRIGGER trg_test_table_update ON test_table za UPDATE --možete i obrisati, umetnuti KAO BEGIN --sql instrukcije u slučaju UPDATE END GO

    Promjena

    ALTER TRIGGER trg_test_table_update ON test_table za umetanje --možete i obrisati, ažurirati KAO BEGIN --sql instrukcije u slučaju umetanja END GO

    Uklanjanje

    DROP TRIGGER trg_test_table_update

    Omogući/onemogući

    --onemogući ONEMOGUĆI TRIGER trg_test_table_update ON test_table;

    -- omogući ENABLE TRIGGER trg_test_table_update ON test_table;

    Govorili smo o okidačima u članku - Kako kreirati okidač u Transact-SQL-u.

    Indeksi

    Ovo je objekt baze podataka koji poboljšava performanse preuzimanja podataka sortiranjem podataka prema određenom polju. Ako povučemo analogiju, na primjer, traženje određenih informacija u knjizi je mnogo lakše i brže na osnovu njenog sadržaja nego da ovaj sadržaj ne postoji. Sljedeći tipovi indeksa postoje u MS SQL Server DBMS: Grupirani indeks

    — sa takvim indeksom, redovi u tabeli se sortiraju po datom ključu, tj. navedeno polje. Tablica u MS SQL serveru može imati samo jedan tip indeksa i, počevši od MS SQL 2000, automatski se kreira kada se u tablici navede primarni ključ (PRIMARY KEY). Neklasterirani indeks

    – kada se koristi ovaj tip indeksa, indeks sadrži pokazivače na redove sortirane po navedenom polju, a ne po samim redovima, zbog čega dolazi do brzog traženja traženog reda. Tabela može imati nekoliko takvih indeksa. Indeks Columnstore

    Kada koristite ovaj tip indeksa, tabela odmah postaje samo za čitanje, drugim riječima, više neće biti moguće dodavati ili mijenjati podatke u tabeli da biste to učinili, morat ćete onemogućiti indeks, dodati/promijeniti podatke , zatim omogućite vraćanje indeksa.

    Takvi indeksi su pogodni za vrlo velike skupove podataka koji se koriste u skladištima.

    Operacije koje koriste agregatne funkcije koristeći grupisanje izvode se mnogo brže (nekoliko puta!) s takvim indeksom.

    Indeks Columnstore dostupan je počevši od verzije SQL Servera iz 2012. u izdanjima Enterprise, Developer i Evaluation.

    Stvaranje

    Grupirani indeks

    CREATE CLUSTERED INDEX idx_clus_one NA test_table(id) GO

    Gdje je CREATE CLUSTERED INDEX instrukcija za kreiranje grupisanog indeksa, idx_clus_one je ime indeksa, test_table(id) je tabela i ključno polje za sortiranje, respektivno.

    Neklasterirani indeks

    CREATE INDEX idx_no_clus ON test_table(summa) GO

    Indeks Columnstore

    CREATE columnstore INDEX idx_columnstore ON test_table(date_create) GO

    Isključi se

    --onemogući ALTER INDEX idx_no_clus ON test_table DISABLE --omogući, ponovo izgradi ALTER INDEX idx_no_clus ON test_table REBUILD

    Uklanjanje

    DROP INDEX idx_no_clus ON test_table GO

    Kursori

    Kursor - to je vrsta tipa podataka koji se uglavnom koristi u procedurama i okidačima. Predstavlja običan skup podataka, tj. rezultat zahtjeva.

    Primjer (sve ovo u kodu procedure)

    Deklarirati varijable DECLARE @id BIGINT DECLARE @fio VARCHAR(100) DECLARE @summa FLOAT --deklarirati kursor DECLARE test_cur KURSOR ZA SELECT id, fio, summa FROM test_table --otvoriti kursor OPEN test_cur --pročitati podatke prvog reda u kursoru --i upišite ih u varijable FETCH NEXT FROM test_cur INTO @id, @fio, @summa --pokreni petlju sve dok se linije u kursoru ne ponestanu DOK @@FETCH_STATUS = 0 BEGIN --možemo izvršiti sql instrukcije za svaku iteraciju petlje -- ...................SQL instrukcije................... - -pročitati sljedeći red kursora FETCH NEXT FROM test_cur INTO @id , @fio, @summa END --zatvoriti kursor CLOSE test_cur DEALLOCATE test_cur

    O kursorima smo detaljno govorili u materijalu Korišćenje kursora i petlji u Transact-SQL-u.

    DML upiti

    DML (Jezik za manipulaciju podacima) su SQL izrazi koji manipuliraju podacima. To uključuje odabir, ažuriranje, umetanje, brisanje.

    SELECT

    Primjer

    SELECT * FROM test_table

    UPDATE

    Koristi se za ažuriranje podataka

    Primjer

    Svi redovi u tabeli će biti ažurirani UPDATE test_table SET summa=500 -- samo redovi sa ID-om veći od 10 će biti ažurirani UPDATE test_table SET summa=100 GDJE id > 10

    INSERT

    Operater za dodavanje podataka

    Dodavanje jednog reda INSERT INTO test_table (fio, summa, date_create, comment) VRIJEDNOSTI ("Puno ime",100, "10/26/2014", "test record") --skupno dodavanje na osnovu upita INSERT INTO test_table SELECT fio , suma, date_create , komentar FROM test_table

    IZBRIŠI

    Ovaj operator možete koristiti za brisanje podataka.

    Primjer

    Brisanje cijele tabele DELETE test_table -- brisanje samo redova koji ispunjavaju uslov DELETE test_table WHERE suma > 100

    To je to, vodič je gotov! Nadam se da ti je pomoglo na neki način. Sretno!