SQL nyelvtanulás. Dedikált igazi Dummies vagy MySQL kezdőknek

Bemutatom figyelmébe az SQL kezdőknek című cikk ingyenes fordítását

Egyre több modern webalkalmazás lép interakcióba adatbázisokkal, általában a nyelv használatával SQL. Szerencsére ezt a nyelvet nagyon könnyű megtanulni. Ebben a cikkben elkezdjük megismerni az SQL-lekérdezések alapjait és az adatbázissal való interakciójukat. MySQL.

Amire szükséged van

Az SQL (Structured Query Language) egy olyan nyelv, amelyet relációs adatbázis-kezelő rendszerekkel (DBMS) való együttműködésre terveztek, mint pl. MySQL, Oracle, Sqliteés mások. A cikkben szereplő SQL-lekérdezések végrehajtásához feltételezem, hogy megvan MySQL. Használatát is javaslom phpMyAdmin vizuális megjelenítésként MySQL.

A következő alkalmazások megkönnyítik a telepítést MySQLés phpMyAdmin számítógépére:

  • WAMP Windowshoz
  • MAMP for Mac

Kezdjük el a lekérdezések végrehajtását a parancssorban. WAMP már tartalmazza a konzolban MySQL. Mert MAMP lehet, hogy ezt el kell olvasnod.

ADATBÁZIS LÉTREHOZÁSA: Hozzon létre egy adatbázist

A legelső kérésünk. Létrehozunk egy adatbázist, amivel dolgozni fogunk.

Először is nyissa meg a konzolt MySQLés jelentkezz be. Mert WAMP, alapértelmezés szerint üres jelszót használnak. Mert MAMP a jelszónak "root"-nak kell lennie.

Bejelentkezés után írja be ezt a kérést, és kattintson Belép:

ADATBÁZIS LÉTREHOZÁSA my_first_db;

Ne feledje, hogy egy pontosvessző (;) kerül hozzáadásra a lekérdezés végéhez, ugyanúgy, mint a kódban egy sor végén.

Hasonlóképpen a kulcsszavakat ADATBÁZIS LÉTREHOZÁSA nem érzékeny a kis- és nagybetűkre, mint az összes kulcsszó SQL. De a jobb olvashatóság érdekében nagybetűvel írjuk őket.

Megjegyzés: karakterkészlet és leválogatási sorrend

Ha be szeretné állítani az alapértelmezett karakterkészletet és a leválogatási sorrendet, használja a következő lekérdezést:

ADATBÁZIS LÉTREHOZÁSA my_first_db ALAPÉRTELMEZETT KARAKTER BEÁLLÍTÁS utf8 COLLATE utf8_general_ci;

A támogatott karakterkészletek és leválogatások listáját itt találja MySQL.

ADATBÁZISOK MUTATÁSA: Az összes adatbázis listája

Ez a lekérdezés az összes adatbázis megjelenítésére szolgál.

ADATBÁZIS DROP: Dobj el egy adatbázist

Ezzel a lekérdezéssel törölhet egy meglévő adatbázist.

Legyen óvatos ezzel a lekérdezéssel, mert nem nyomtat semmilyen figyelmeztetést. Ha vannak táblák és adatok az adatbázisban, a lekérdezés egy pillanat alatt eldobja mindet.

Technikai szempontból ez nem kérés. Ez egy "operátor", és nincs szükség pontosvesszőre a végén.

Beszámol MySQL hogy ki kell választania az alapértelmezett adatbázist és dolgoznia kell vele a munkamenet végéig. Most készen állunk a táblák és az adatbázis többi részének létrehozására.

Mi az adatbázistábla?

Az adatbázisban lévő táblát tekintheti normál táblaként vagy csv-fájlként, amely strukturált adatokat tartalmaz.

Mint ebben a példában, a táblázatban sornevek és adatoszlopok vannak. SQL lekérdezések segítségével elkészíthetjük ezt a táblát. Adatokat is hozzáadhatunk, olvashatunk, módosíthatunk és törölhetünk.

TÁBLÁZAT LÉTREHOZÁSA: Hozzon létre egy táblázatot

Ezzel a lekérdezéssel táblát hozhatunk létre az adatbázisban. Sajnos a dokumentáció MySQL nem túl barátságos az új felhasználók számára. Ennek a lekérdezésnek a felépítése nagyon bonyolult lehet, de kezdjük egyszerűvel.

A következő lekérdezés két oszlopos táblázatot hoz létre.

CREATE TABLE felhasználók (felhasználónév VARCHAR(20), létrehozás_dátuma DATE);

Megjegyzés: a lekérdezést több sorba is írhatjuk és használhatjuk Tab visszavonulásra.

Az első sorral minden egyszerű. nevű táblát készítünk felhasználókat. Továbbá zárójelben a táblázat oszlopai vesszővel elválasztva szerepelnek. Minden oszlopnév után jön az adattípus, pl. VARCHAR vagy DÁTUM.

VARCHAR(20) azt jelenti, hogy az oszlop karakterlánc típusú, és nem lehet hosszabb 20 karakternél. DÁTUM- a dátumok tárolására szolgáló adattípus a következő formátumban: "ÉÉÉÉ-HH-NN".

elsődleges kulcs

Mielőtt végrehajtanánk ezt a lekérdezést, be kell szúrnunk egy oszlopot Felhasználói azonosító, amely az ELSŐDLEGES KULCS lesz. Anélkül, hogy túlságosan belemennénk a részletekbe, elképzelhető, hogy egy elsődleges kulcs a táblázat minden adatsorának felismerésének módja.

A kérés a következőképpen alakul:

CREATE TABLE felhasználók (felhasználói_azonosító INT AUTO_INCREMENT ELSŐDLEGES KULCS, felhasználónév VARCHAR(20), létrehozás_dátuma DATE);

INT- 32 bites egész típusú (numerikus). AUTO_INCREMENT automatikusan új azonosítószámot generál minden alkalommal, amikor adatsort ad hozzá. Nem kötelező, de kényelmesebb vele.

Ez az oszlop nem lehet egész szám, bár ez a leggyakoribb adattípus. Az elsődleges kulcs oszlop nem kötelező, de ajánlott az adatbázis teljesítményének és architektúrájának javítása érdekében.

Futtassunk le egy lekérdezést:

TÁBLÁZATOK MUTATÁSA: Az összes táblázat listája

A lekérdezés lehetővé teszi, hogy lekérje az aktuális adatbázis összes táblájának listáját.

MAGYARÁZAT: Mutasd a táblázat szerkezetét

Ezzel a lekérdezéssel megtekintheti egy meglévő tábla szerkezetét.

Ennek eredményeként megjelennek a mezők (oszlopok) és tulajdonságaik.

Drop TABLE: Dobj le egy asztalt

Mint DROP ADATBÁZISOK, ez a lekérdezés figyelmeztetés nélkül törli a táblát és annak tartalmát.

ALTER TABLE: Táblázat módosítása

Egy ilyen lekérdezés összetett szerkezetű lehet, mivel többszörös módosítást hajthat végre a táblán. Nézzünk egyszerű példákat.

Az olvashatóság miatt SQL, ez a kérés nem szorul magyarázatra.

Az eltávolítása ugyanolyan egyszerű. A kérést óvatosan használja, az adatok figyelmeztetés nélkül törlődnek.

Adja hozzá újra a mezőt email, később szüksége lesz rá:

ALTER TABLE felhasználók ADD email VARCHAR(100) AFTER felhasználónév;

Néha előfordulhat, hogy módosítani kell egy oszlop tulajdonságait, nem szükséges törölni és újra létrehozni.

Ez a lekérdezés átnevezi a mezőt felhasználónév v felhasználónévés megváltoztatja a típusát VARCHAR(20) a VARCHAR(30). Az ilyen változtatások nem érintik a táblázat adatait.

INSERT: Adatok hozzáadása egy táblázathoz

Adjunk rekordokat a táblához lekérdezések segítségével.

Amint látod, ÉRTÉKEK() vesszővel elválasztott értéklistát tartalmaz. A karakterlánc-értékek idézőjelek közé vannak zárva. Az értékeknek a táblázat létrehozásakor megadott sorrendben kell lenniük.

Vegye figyelembe, hogy az első érték NULLA az elsődleges kulcshoz, amelynek mezőjét elneveztük Felhasználói azonosító. Mindezt azért, mert a mező meg van jelölve AUTO_INCREMENTés az id automatikusan generálódik. Az első adatsor azonosítója 1 lesz. A következő hozzáadott sor 2 lesz, és így tovább.

Alternatív szintaxis

Itt van egy másik szintaxis a sorok beszúrásához.

Ezúttal a kulcsszót használtuk KÉSZLET ahelyett ÉRTÉKEK. Jegyezzünk meg néhány dolgot:

  • Az oszlop elhagyható. Például nem rendeltünk értéket a mezőhöz Felhasználói azonosító mert úgy van megjelölve AUTO_INCREMENT. Ha nem rendel értéket egy mezőhöz típussal VARCHAR, akkor alapértelmezés szerint egy üres karakterlánc értékét veszi fel (ha a táblázat létrehozásakor nem adtunk meg másik alapértelmezett értéket).
  • Minden oszlopra név szerint hivatkozhatunk. Ezért a mezők tetszőleges sorrendben mehetnek, az előző szintaxistól eltérően.

Alternatív szintaxisszám 2

Íme egy másik példa.

A mezők az eddigiekhez hasonlóan név szerint is elérhetők, tetszőleges sorrendben jelenhetnek meg.

Ezzel a lekérdezéssel lekérheti az utoljára beszúrt sor azonosítóját.

MOST()

Itt az ideje, hogy megmutassa, hogyan kell használni a funkciókat MySQL kérésekben.

Funkció MOST() az aktuális dátumot adja vissza. Használja az aktuális dátum automatikus hozzáadásához a típust tartalmazó mezőhöz DÁTUM.

Felhívjuk figyelmét, hogy figyelmeztetést kaptunk a következőtől: MySQL, de ez nem olyan fontos. Az ok az, hogy a funkció MOST() valójában időinformációkat ad vissza.

Létrehoztunk egy mezőt Dátum létrehozása, amely csak dátumot tartalmazhat, időt nem, ezért az adatok csonkolva lettek. Ahelyett MOST() használhatnánk TURÁTUM(), amely csak az aktuális dátumot adja vissza, de a végeredmény ugyanaz.

SELECT: Adatok lekérése egy táblázatból

Nyilvánvalóan az általunk írt adatok haszontalanok, amíg el nem tudjuk olvasni. A kérés segít KIVÁLASZTÁS.

A lekérdezés használatának legegyszerűbb példája KIVÁLASZTÁS táblázatból való adatok kiolvasása:

A csillag (*) azt jelenti, hogy a táblázat összes oszlopát meg akarjuk kapni. Ha csak bizonyos oszlopokat kell beszereznie, használja a következőket:

Leggyakrabban csak bizonyos sorokat szeretnénk elérni, nem mindegyiket. Például vegyük le a felhasználó e-mail címét nettuts.

Hasonló az IF feltételhez. A WHERE lehetővé teszi, hogy feltételt állítson be a lekérdezésben, és megkapja a kívánt eredményt.

Az egyenlőségfeltétel egyszerű jelet (=) használ, nem pedig kettős előjelet (==), amelyet a programozás során használhat.

Más feltételeket is használhat:

ÉSés VAGY feltételek kombinálására használják:

Vegye figyelembe, hogy a numerikus értékeket nem kell idézőjelbe tenni.

BAN BEN()

Több értékkel való összehasonlításra szolgál.

MINT

Lehetővé teszi a keresési minta beállítását.

A százalékjel (%) a minta megadására szolgál.

RENDELÉS feltétel szerint

Használja ezt a feltételt, ha az eredményt rendezve szeretné visszaadni:

Az alapértelmezett sorrend a ASC(Növekvő). Hozzáadás DESC fordított sorrendbe rendezéséhez.

LIMIT … OFFSET…

Korlátozhatja a visszaadott sorok számát.

2. KORLÁT veszi az első két sort. 1. KORLÁTOZÁS 2 egy sort foglal, az első kettő után. KORLÁTOZÁS 2, 1 ugyanazt jelenti, csak az első szám az eltolás, a második pedig korlátozza a sorok számát.

FRISSÍTÉS: Adatok frissítése a táblázatban

Ez a lekérdezés a táblázat adatainak frissítésére szolgál.

A legtöbb esetben együtt használják AHOL adott sorok frissítéséhez. Ha feltétel AHOL nincs beállítva, a változtatások minden sorra vonatkoznak.

A módosítható sorok korlátozásához használhatja HATÁR.

TÖRLÉS: Adatok törlése egy táblából

Mint , ezt a lekérdezést gyakran a feltétellel együtt használják AHOL.

CSONKA TÁBLÁZAT

A táblázat tartalmának eltávolításához használja a következő lekérdezést:

TÖRLÉS A felhasználók közül;

A jobb teljesítmény érdekében használja .

Állítsa vissza a terepi számlálót is AUTO_INCREMENT, így az újonnan hozzáadott sorok azonosítója 1 lesz. Használatakor ez nem fog megtörténni, és a számláló tovább fog növekedni.

Karakterláncértékek és speciális szavak megszökése

Karakterlánc értékek

Néhány karaktert meg kell szöktetni, különben problémák adódhatnak.

A visszalépéshez a fordított perjel (\) szolgál.

Ez biztonsági okokból nagyon fontos. Minden felhasználói adatot meg kell szabadítani, mielőtt az adatbázisba írná őket. V PHP használja a mysql_real_escape_string() függvényt vagy előkészített lekérdezéseket.

Különleges szavak

Mert be MySQL sok fenntartott szó, mint pl KIVÁLASZTÁS vagy , az ellentmondások elkerülése érdekében az oszlop- és táblázatneveket tegye idézőjelek közé. És nem közönséges idézőjeleket kell használni, hanem backticket (`).

Tegyük fel, hogy valamilyen oknál fogva egy oszlopot szeretne hozzáadni :

Következtetés

Köszönöm, hogy elolvastad a cikket. Remélem, sikerült megmutatnom ezt a nyelvet SQL nagyon funkcionális és könnyen megtanulható.

Ez az oktatóanyag olyasmi, mint a "memóriám pecsétje" az SQL nyelvben (DDL, DML), azaz. ezek a szakmai tevékenységem során felhalmozódott információk folyamatosan a fejemben tárolódnak. Ez számomra elegendő minimum, amit leggyakrabban adatbázisokkal való munkavégzés során használnak. Ha teljesebb SQL konstrukciók használatára van szükség, akkor általában az interneten található MSDN könyvtárhoz fordulok segítségért. Véleményem szerint nagyon nehéz mindent a fejében tartani, és erre nincs is különösebb szükség. De az alapvető konstrukciók ismerete nagyon hasznos, mert. szinte ugyanabban a formában alkalmazhatók számos relációs adatbázisban, mint például az Oracle, MySQL, Firebird. A különbségek elsősorban az adattípusokban vannak, amelyek részleteiben eltérhetnek. Kevés az alapvető SQL nyelvi konstrukció, és folyamatos gyakorlással gyorsan megjegyzik őket. Például objektumok (táblázatok, megszorítások, indexek stb.) létrehozásához elegendő, ha kéznél van a környezet szövegszerkesztője (IDE) az adatbázisokkal való munkavégzéshez, és nem kell megtanulni a vizuális eszközkészletet meghatározott típusú adatbázisokkal (MS SQL, Oracle, MySQL, Firebird stb.) dolgozik. Ez azért is kényelmes, mert a teljes szöveg a szeme előtt van, és nem kell számos lapon átfutnia például index vagy korlát létrehozásához. Az adatbázissal való folyamatos munka során egy objektum létrehozása, módosítása, és különösen újbóli létrehozása szkriptek segítségével sokszor gyorsabb, mint vizuális módban. Szkript módban is (illetve kellő körültekintéssel) könnyebben beállítható és ellenőrizhető az objektumok elnevezési szabályai (szubjektív véleményem). Ezenkívül a szkriptek kényelmesen használhatók, ha az egyik adatbázisban (például egy tesztben) végrehajtott változtatásokat ugyanabban a formában kell átvinni egy másik adatbázisba (produktív).

Az SQL nyelv több részre oszlik, itt a 2 legfontosabb részét veszem figyelembe:
  • DML – Data Manipulation Language (adatkezelési nyelv), amely a következő konstrukciókat tartalmazza:
    • SELECT - adatkiválasztás
    • INSERT - új adatok beszúrása
    • UPDATE - adatfrissítés
    • DELETE - adatok törlése
    • MERGE - adatok összevonása
Mivel Gyakorló vagyok, ezért ebben a tankönyvben kevés elmélet lesz, és minden konstrukciót gyakorlati példákkal magyarázunk meg. Ráadásul úgy gondolom, hogy egy programozási nyelvet, és főleg az SQL-t csak úgy lehet elsajátítani a gyakorlatban, ha önállóan hozzáérünk, és megértjük, mi történik, ha végrehajtunk egy ilyen vagy olyan konstrukciót.

Ez az oktatóanyag a Lépésről lépésre elven készült, azaz. sorban és lehetőleg azonnal a példák után kell elolvasni. De ha az út során részletesebben meg kell tanulnia egy parancsot, akkor használjon egy adott keresést az interneten, például az MSDN könyvtárban.

Az oktatóanyag megírásakor egy MS SQL Server 2014-es verziójú adatbázist, a szkriptek futtatásához pedig az MS SQL Server Management Studio (SSMS) programot használtam.

Röviden az MS SQL Server Management Studio-ról (SSMS)

Az SQL Server Management Studio (SSMS) a Microsoft SQL Server segédprogramja adatbázis-összetevők konfigurálására, kezelésére és adminisztrálására. Ez a segédprogram tartalmaz egy parancsfájl-szerkesztőt (amelyet főként fogunk használni) és egy grafikus programot, amely az objektumokkal és a szerver beállításaival működik. Az SQL Server Management Studio fő eszköze az Object Explorer, amely lehetővé teszi a felhasználó számára a szerverobjektumok megtekintését, lekérését és kezelését. Ez a szöveg részben a Wikipédiából származik.

Új szkriptszerkesztő létrehozásához használja az Új lekérdezés gombot:

Az aktuális adatbázis megváltoztatásához használja a legördülő listát:

Egy adott parancs (vagy parancscsoport) végrehajtásához válassza ki azt, és nyomja meg az "Execute" gombot, vagy nyomja meg az "F5" billentyűt. Ha jelenleg csak egy parancs van a szerkesztőben, vagy ha az összes parancsot végre kell hajtani, akkor semmit sem kell kiválasztania.

A szkriptek végrehajtása után, különösen az objektumokat (táblákat, oszlopokat, indexeket) létrehozó szkriptek végrehajtása után a változások megtekintéséhez használja a helyi menü Frissítés parancsát, kiemelve a megfelelő csoportot (például Táblázatok), magát a táblát vagy a benne lévő Oszlopok csoportot. .

Valójában csak ennyit kell tudnunk az itt közölt példák kiegészítéséhez. Az SSMS segédprogram többi részét könnyű megtanulni önállóan.

Egy kis elmélet

A relációs adatbázis (RDB, vagy csak egy adatbázis kontextusában) egymáshoz kapcsolódó táblák gyűjteménye. Nagyjából az adatbázis egy olyan fájl, amelyben az adatok strukturált formában vannak tárolva.

DBMS - ezen adatbázisok kezelésének rendszere, azaz ez egy eszközkészlet egy adott típusú adatbázissal (MS SQL, Oracle, MySQL, Firebird stb.) való munkához.

jegyzet
Mivel az életben a köznyelvben többnyire azt mondjuk: „Oracle DB”, vagy akár csak „Oracle”, ami valójában „Oracle DBMS”-t jelent, akkor ennek az oktatóanyagnak a kontextusában néha a DB kifejezést fogjuk használni. A szövegkörnyezetből szerintem kiderül, hogy pontosan mi forog kockán.

A táblázat oszlopok gyűjteménye. Az oszlopokat mezőknek vagy oszlopoknak is nevezhetjük, ezeket a szavakat szinonimákként fogják használni, és ugyanazt a dolgot fejezik ki.

A tábla az RDB fő objektuma, minden RDB adat soronként kerül tárolásra a tábla oszlopaiban. A sorok, rekordok is szinonimák.

Minden táblázathoz, valamint oszlopaihoz neveket adunk, amelyekkel később hivatkozunk rájuk.
Az objektumnév (táblanév, oszlopnév, indexnév stb.) az MS SQL-ben legfeljebb 128 karakter hosszú lehet.

Tájékoztatásul– az ORACLE adatbázisban az objektumok nevei legfeljebb 30 karakter hosszúak lehetnek. Ezért egy adott adatbázishoz saját szabályokat kell kidolgoznia az objektumok elnevezésére, hogy betartsa a karakterszám korlátját.

Az SQL egy olyan nyelv, amely lehetővé teszi az adatbázis lekérdezését a DBMS-en keresztül. Egy adott DBMS-ben az SQL nyelvnek lehet egy meghatározott megvalósítása (saját dialektusa).

A DDL és a DML az SQL nyelv egy részhalmaza:

  • A DDL nyelv az adatbázis-struktúra létrehozására és módosítására szolgál, pl. táblák és kapcsolatok létrehozásához/módosításához/törléséhez.
  • A DML nyelv lehetővé teszi a táblaadatok kezelését, pl. soraival. Lehetővé teszi adatok kiválasztását a táblákból, új adatok hozzáadását a táblázatokhoz, valamint a meglévő adatok frissítését és törlését.

SQL nyelven kétféle megjegyzés használható (egysoros és többsoros):

Egysoros megjegyzés
és

/* többsoros megjegyzés */

Valójában ennek elméletéhez minden elég lesz.

DDL – Adatdefiníciós nyelv (adatleíró nyelv)

Vegyünk például egy táblázatot az alkalmazottak adataival, olyan formában, amelyet egy nem programozó személy ismer:

Ebben az esetben a táblázat oszlopainak nevei a következők: Személyi szám, Teljes név, Születési idő, E-mail, Beosztás, Osztály.

Ezen oszlopok mindegyike jellemezhető a benne lévő adatok típusával:

  • Személyi szám - egész szám
  • teljes név - string
  • Születési dátum - dátum
  • E-mail - karakterlánc
  • Pozíció - karakterlánc
  • osztály - húr
Az oszlop típusa egy olyan jellemző, amely jelzi, hogy ez az oszlop milyen adatokat tud tárolni.

Kezdetben elegendő csak az MS SQL-ben használt alábbi alapvető adattípusokra emlékezni:

Jelentése Jelölés MS SQL-ben Leírás
Változó hosszúságú karakterlánc varchar (N)
és
nvarchar(N)
Az N számmal megadhatjuk a maximálisan lehetséges karakterlánchosszt a megfelelő oszlophoz. Például, ha azt akarjuk mondani, hogy a "Név" oszlop értéke legfeljebb 30 karaktert tartalmazhat, akkor a típusát nvarchar (30)-ra kell állítani.
A varchar és az nvarchar közötti különbség az, hogy a varchar lehetővé teszi a karakterláncok ASCII formátumban történő tárolását, ahol egy karakter 1 bájtot foglal el, míg az nvarchar Unicode formátumban tárolja a karakterláncokat, ahol minden karakter 2 bájtot foglal el.
A varchar típust csak akkor használja, ha 100%-ban biztos abban, hogy a mezőnek nem kell Unicode karaktereket tárolnia. Például a varchar használható e-mail címek tárolására, mert általában csak ASCII karaktereket tartalmaznak.
Fix hosszúságú húr char (N)
és
nchar (N)
Ez a típus abban különbözik a változó hosszúságú karakterlánctól, hogy ha a karakterlánc hossza kisebb, mint N karakter, akkor mindig jobbra kitömörítjük N szóköz hosszára, és ebben a formában tároljuk az adatbázisban, pl. az adatbázisban pontosan N karaktert foglal el (ahol egy karakter 1 bájtot foglal el a char és 2 bájtot nchar esetén). Gyakorlatomban ezt a típust nagyon ritkán használják, és ha használják, akkor főleg a char (1) formátumban, pl. amikor a mezőt egyetlen karakter határozza meg.
Egész szám int Ez a típus lehetővé teszi, hogy az oszlopban csak pozitív és negatív egész számokat használjunk. Referenciaként (ez most nem annyira releváns számunkra) - az int típus által megengedett számtartomány -2 147 483 648 és 2 147 483 647 között. Általában ez a fő típus, amelyet az azonosítók beállítására használnak.
Valós vagy valós szám úszó Egyszerűen fogalmazva, ezek olyan számok, amelyekben tizedesvessző is lehet.
dátum dátum Ha csak a Dátumot kell tárolni az oszlopban, amely három részből áll: Szám, Hónap és Év. Például 2014. 02. 15. (2014. február 15.). Ez a típus használható a "Felvétel dátuma", "Születési dátum" stb. oszlophoz, azaz. olyan esetekben, amikor fontos számunkra, hogy csak a dátumot rögzítsük, vagy amikor az időkomponens számunkra nem fontos és eldobható, vagy ha nem ismert.
Idő idő Ez a típus akkor használható, ha az oszlopnak csak időadatokat kell tárolnia, pl. Órák, percek, másodpercek és ezredmásodpercek. Például 17:38:31.3231603
Például a napi „Repülés indulási ideje”.
dátum és idő dátum idő Ez a típus lehetővé teszi a dátum és az idő egyidejű tárolását. Például 2014.02.15. 17:38:31.323
Ez lehet például egy esemény dátuma és időpontja.
Zászló bit Ez a típus hasznos az Igen/Nem értékek tárolására, ahol az Igen 1ként, a Nem pedig 0ként kerül tárolásra.

Továbbá a mező értéke, ha nem tiltott, nem adható meg, erre a célra a NULL kulcsszót használjuk.

A példák futtatásához hozzunk létre egy Teszt nevű tesztadatbázist.

Egy egyszerű adatbázis (további paraméterek megadása nélkül) a következő parancs futtatásával hozható létre:

ADATBÁZIS LÉTREHOZÁSA Teszt
Az adatbázist a paranccsal törölheti (nagyon óvatosnak kell lennie ezzel a paranccsal):

DROP DATABASE teszt
Az adatbázisunkra való váltáshoz futtassa a következő parancsot:

USA teszt
Alternatív megoldásként válassza ki a Teszt adatbázist az SSMS menüterület legördülő listából. Munkám során gyakran használom ezt a módszert az adatbázisok közötti váltásra.

Az adatbázisunkban most már létrehozhatunk egy táblázatot a leírások felhasználásával, szóközök és cirill karakterek használatával:

TÁBLÁZAT LÉTREHOZÁSA [Alkalmazottak]([Személyzeti szám] int, [Név] nvarchar(30), [Születési dátum] dátum, nvarchar(30), [Pozíció] nvarchar(30), [Osztály] nvarchar(30))
Ebben az esetben a neveket szögletes zárójelbe kell írnunk […].

De az adatbázisban a nagyobb kényelem érdekében jobb, ha az objektumok összes nevét latinul adja meg, és nem használ szóközt a nevekben. Az MS SQL-ben általában ebben az esetben minden szó nagybetűvel kezdődik, például a "Személyzeti szám" mezőben beállíthatjuk a Személyi Szám nevet. A névben számokat is használhat, például Telefonszám1.

Egy megjegyzésre
Egyes adatbázis-kezelő rendszerekben a „PHONE_NUMBER” név következő formátuma előnyösebb lehet, például ezt a formátumot gyakran használják az ORACLE adatbázisban. Természetesen a mezőnév beállításakor kívánatos, hogy az ne egyezzen a DBMS-ben használt kulcsszavakkal.

Emiatt elfelejtheti a szögletes zárójeles szintaxist, és törölheti az [Employees] táblát:

DROP TABLE [Alkalmazottak]
Például egy alkalmazottakat tartalmazó tábla elnevezhető „Alkalmazottak”, a mezői pedig a következő neveket kaphatják:

  • Azonosító – Személyi szám (alkalmazotti azonosító)
  • Név – teljes név
  • Születésnap – Születési dátum
  • Email
  • Pozíció
  • Osztály – Osztály
Nagyon gyakran az ID szót használják az azonosító mező elnevezésére.

Most készítsük el a táblázatunkat:

TÁBLÁZAT LÉTREHOZÁSA Alkalmazottak(ID int, Név nvarchar(30), Születésnapi dátum, E-mail nvarchar(30), Beosztás nvarchar(30), Osztály nvarchar(30))
A NOT NULL beállítással megadhatja a szükséges oszlopokat.

Egy már létező tábla esetén a mezők újradefiniálhatók a következő parancsokkal:

Frissítés azonosító mező ALTER TABLE Alkalmazottak ALTER COLUMN ID int NOT NULL -- frissítés Név mező ALTER TABLE Alkalmazottak ALTER COLUMN Név nvarchar(30) NOT NULL

Egy megjegyzésre
Az SQL nyelv általános koncepciója a legtöbb DBMS-nél változatlan marad (legalábbis azt a DBMS-ből tudom megítélni, amellyel alkalmam volt dolgozni). A DDL-ek különbsége a különböző DBMS-ekben elsősorban az adattípusokban van (itt nem csak a nevük, hanem a megvalósítás részletei is eltérhetnek), az SQL nyelv megvalósításának sajátosságai is kissé eltérhetnek (azaz a A parancsok ugyanazok, de lehetnek kis eltérések a nyelvjárásban, de nincs egységes szabvány). Az SQL alapjainak ismeretében könnyedén válthat egyik DBMS-ről a másikra. ebben az esetben csak az új DBMS-ben a parancsok megvalósításának részleteit kell megértenie, pl. a legtöbb esetben elég lesz csak egy hasonlatot vonni.

Táblázat létrehozása CREATE TABLE Employees(ID int, -- az ORACLE-ben az int a szám(38) megfelelője (wrapper) Név nvarchar2(30). (30) , Pozíció nvarchar2(30), Department nvarchar2(30)); -- az ID és a Név mezők frissítése (itt a MODIFY(…) használatos ALTER COLUMN ALTER TABLE helyett Alkalmazottak MODIFY(ID int NOT NULL,Name nvarchar2(30) NOT NULL); -- PK hozzáadása (ebben az esetben a konstrukció úgy néz ki, mint az MS SQL-ben, ez lent lesz látható) ALTER TABLE Alkalmazottak ADD CONSTRAINT PK_Employees PRIMARY KEY(ID);
Az ORACLE esetében eltérések mutatkoznak a varchar2 típus megvalósításában, a kódolása az adatbázis beállításaitól függ és a szöveg menthető például UTF-8 kódolásban. Ezenkívül az ORACLE-ben a mező hossza bájtokban és karakterekben is beállítható, ehhez további BYTE és CHAR opciókat használnak, amelyeket a mező hossza után adnak meg, például:

NÉV varchar2(30 BYTE) -- a mező kapacitása 30 bájt lesz NÉV varchar2(30 CHAR) -- a mező kapacitása 30 karakter lesz
A varchar2(30) típusú egyszerű specifikáció esetén az ORACLE-ben, hogy alapértelmezés szerint melyik opció lesz használatban BYTE vagy CHAR, az adatbázis beállításoktól függ, néha az IDE beállításokban is beállítható. Általánosságban elmondható, hogy néha könnyen össze lehet keveredni, ezért az ORACLE esetében, ha a varchar2 típust használjuk (és ez itt néha indokolt is pl. UTF-8 kódolás esetén), akkor inkább kifejezetten CHAR-t írok (mert általában kényelmesebb a karakterlánc hosszát karakterben olvasni).

De ebben az esetben, ha már van néhány adat a táblában, akkor a parancsok sikeres végrehajtásához szükséges, hogy a táblázat összes sorában az ID és a Név mezőket ki kell tölteni. Mutassuk meg ezt egy példával, szúrjunk be adatokat a táblázatba az ID, Position és Department mezőkbe, ezt a következő scripttel tehetjük meg:

INSERT Alkalmazottak(azonosító,beosztás,részleg) ÉRTÉKEK (1000,N"Igazgató",N"Adminisztráció"), (1001,N"Programozó",N"IT"), (1002,N"Könyvelő",N"Számvitel" ), (1003,N"Senior programozó",N"IT")
Ebben az esetben az INSERT parancs is hibát fog kiütni, mert beszúráskor nem adtuk meg a szükséges Név mező értékét.
Ha ezek az adatok már szerepeltek volna az eredeti táblában, akkor az "ALTER TABLE Employees ALTER COLUMN ID int NOT NULL" parancs sikeresen végrehajtásra került volna, és az "ALTER TABLE Employees ALTER COLUMN Name int NOT NULL" parancs hibát adott volna. üzenetet, hogy a Név mezőben NULL (nincs megadva) értékek vannak.

Adjunk hozzá értékeket a Név mezőhöz, és töltsük ki újra az adatokat:


Valamint a NOT NULL opció közvetlenül használható új tábla létrehozásakor, pl. a CREATE TABLE paranccsal összefüggésben.

Először törölje a táblát a következő paranccsal:

DROP TABLE Alkalmazottak
Most hozzunk létre egy táblázatot kötelező ID és Név oszlopokkal:

TÁBLÁZAT LÉTREHOZÁSA Alkalmazottak (ID int NOT NULL, Név nvarchar(30) NOT NULL, Születésnapi dátum, E-mail nvarchar(30), Beosztás nvarchar(30), Osztály nvarchar(30))
Az oszlop neve után NULL-t is írhat, ami azt jelenti, hogy a NULL értékek (nincs megadva) megengedettek benne, de ez nem szükséges, mivel ez a jellemző alapértelmezés szerint benne van.

Ha éppen ellenkezőleg, egy meglévő oszlopot szeretne opcionálissá tenni, akkor használja a következő parancsszintaxist:

ALTER TABLE Alkalmazottak ALTER COLUMN Név nvarchar(30) NULL
Vagy egyszerűen:

ALTER TABLE Alkalmazottak ALTER COLUMN Név nvarchar(30)
Ezzel a paranccsal a mező típusát is módosíthatjuk egy másik kompatibilis típusra, vagy módosíthatjuk a hosszát. Például bővítsük ki a Név mezőt 50 karakterre:

ALTER TABLE Alkalmazottak ALTER COLUMN Név nvarchar(50)

elsődleges kulcs

Táblázat létrehozásakor kívánatos, hogy legyen egy egyedi oszlopa vagy oszlopkészlete, amely minden sorához egyedi – a rekord ezzel az egyedi értékkel egyedileg azonosítható. Ezt az értéket a tábla elsődleges kulcsának nevezzük. Alkalmazottak táblánkban ez az egyedi érték lehet az azonosító oszlop (amely a "Munkavállalói létszámot" tartalmazza - még akkor is, ha esetünkben ez az érték minden alkalmazottnál egyedi és nem ismételhető meg).

Létrehozhat elsődleges kulcsot egy meglévő táblához a következő paranccsal:

TÁBLÁZAT MÓDOSÍTÁSA Alkalmazottak ADD CONSTRAINT PK_Employees PRIMARY KEY(ID)
Ahol a „PK_Employees” az elsődleges kulcsért felelős kényszer neve. Az elsődleges kulcs általában a „PK_” előtaggal, majd a táblanévvel van elnevezve.

Ha az elsődleges kulcs több mezőből áll, akkor ezeket a mezőket zárójelben, vesszővel elválasztva kell felsorolni:

TÁBLÁZAT MÓDOSÍTÁSA tábla_neve ADD CONSTRAINT megszorítás_neve ELSŐDLEGES KULCS(1. mező,2. mező,…)
Érdemes megjegyezni, hogy az MS SQL-ben az elsődleges kulcsban szereplő összes mezőnek NOT NULL karakterisztikával kell rendelkeznie.

Valamint az elsődleges kulcs közvetlenül definiálható táblázat létrehozásakor, pl. a CREATE TABLE paranccsal összefüggésben. Töröljük a táblázatot:

DROP TABLE Alkalmazottak
Ezután hozza létre a következő szintaxis használatával:

TÁBLÁZAT LÉTREHOZÁSA Alkalmazottak(ID int NOT NULL, Név nvarchar(30) NOT NULL, Születésnapi dátum, E-mail nvarchar(30), Beosztás nvarchar(30), Osztály nvarchar(30), CONSTRAINT PK_Employees PRIMARY KEY(ID) -- írja le a PK-t utána minden mező megkötésként)
Létrehozás után töltse ki a táblázat adatait:

INSERT Alkalmazottak (azonosító, beosztás, osztály, név) ÉRTÉKEK (1000,N"Igazgató",N"Adminisztráció",N"Ivanov II.), (1001,N"Programozó",N"IT",N" Petrov PP" ), (1002,N"Könyvelő",N"Számvitel",N"Sidorov SS"), (1003,N"Senior Programmer",N"IT",N"Andreev A. A.")
Ha a táblázat elsődleges kulcsa csak egy oszlop értékeiből áll, akkor a következő szintaxis használható:

TÁBLÁZAT LÉTREHOZÁSA Alkalmazottak(ID int NOT NULL CONSTRAINT PK_Employees PRIMARY KEY, -- adja meg a mező jellemzőiként Név nvarchar(30) NOT NULL, Születésnapi dátum, E-mail nvarchar(30), Beosztás nvarchar(30), Osztály nvarchar(30))
Valójában a kényszernév elhagyható, ebben az esetben rendszernevet kap (például "PK__Employee__3214EC278DA42077"):

TÁBLÁZAT LÉTREHOZÁSA Alkalmazottak(ID int NOT NULL, Név nvarchar(30) NOT NULL, Születésnapi dátum, E-mail nvarchar(30), Beosztás nvarchar(30), Osztály nvarchar(30), ELSŐDLEGES KULCS(ID))
Vagy:

TÁBLÁZAT LÉTREHOZÁSA Alkalmazottak (ID int NEM NULL ELSŐDLEGES KULCS, Név nvarchar(30) NOT NULL, Születésnapi dátum, E-mail nvarchar(30), Beosztás nvarchar(30), Osztály nvarchar(30))
De azt javaslom, hogy mindig kifejezetten állítsa be a megszorítás nevét az állandó táblákhoz, mert kifejezetten megadott és érthető névvel, utólag könnyebben kezelhető, például törölheti:

ALTER TABLE Alkalmazottak DROP CONSTRAINT PK_Employees
De egy ilyen rövid szintaxis, a korlátozások nevének megadása nélkül, kényelmesen használható ideiglenes adatbázistáblák létrehozásakor (az ideiglenes tábla neve # vagy ## karakterekkel kezdődik), amelyeket a használat után törölnek.

Foglaljuk össze

Eddig a következő parancsokkal foglalkoztunk:
  • TÁBLÁZAT LÉTREHOZÁSA tábla_neve (mezők és típusaik felsorolása, korlátozások) - új tábla létrehozására szolgál az aktuális adatbázisban;
  • DROP TABLE tábla_neve - egy tábla törlésére szolgál az aktuális adatbázisból;
  • ALTER TABLE táblázat_neve ALTER OSZLOP oszlopnév … – az oszlop típusának frissítésére vagy beállításainak módosítására szolgál (például a NULL vagy NOT NULL karakterisztika beállítására);
  • ALTER TABLE táblázat_neve HOZZÁADÁSA KORLÁTOZÁS megszorítás_neve ELSŐDLEGES KULCS(mező1, mező2,…) – elsődleges kulcs hozzáadása egy meglévő táblához;
  • ALTER TABLE táblázat_neve DROP CONSTRAINT megszorítás_neve – távolítsa el a megszorítást a táblából.

Egy kicsit az ideiglenes asztalokról

Vágás az MSDN-ből. Az MS SQL Serverben kétféle ideiglenes tábla létezik: helyi (#) és globális (##). A helyi ideiglenes táblákat csak az alkotóik láthatják mindaddig, amíg az SQL Server-példánnyal való kapcsolati munkamenet meg nem szakad, miután létrehozták őket. A helyi ideiglenes táblák automatikusan törlődnek, miután a felhasználó leválasztja az SQL Server egy példányát. A globális ideiglenes táblák minden felhasználó számára láthatók a csatlakozási munkamenetek során a táblák létrehozása után, és törlődnek, amikor az ezekre a táblákra hivatkozó összes felhasználó leválasztja az SQL Server példányát.

Az ideiglenes táblák a tempdb rendszeradatbázisban jönnek létre, pl. létrehozásukkal nem tömítjük el a fő adatbázist, ellenkező esetben az ideiglenes táblák teljesen megegyeznek a normál táblákkal, a DROP TABLE paranccsal is törölhetők. A helyi (#) ideiglenes táblákat gyakrabban használják.

Ideiglenes tábla létrehozásához használhatja a CREATE TABLE parancsot:

TÁBLÁZAT LÉTREHOZÁSA #Temp(ID int, Név nvarchar(30))
Mivel az MS SQL ideiglenes táblája hasonló egy normál táblához, a DROP TABLE paranccsal megfelelően törölheti is:

DROP TABLE #Temp

Létrehozhat egy ideiglenes táblát (valamint egy normál táblát is), és azonnal kitöltheti a lekérdezés által visszaadott adatokkal a SELECT ... INTO szintaxis használatával:

VÁLASSZA KI AZONOSÍTÓT, Név INTO #Temp FROM alkalmazottaktól

Egy megjegyzésre
A különböző DBMS-ekben az ideiglenes táblák megvalósítása eltérő lehet. Például az ORACLE és Firebird DBMS-ben az ideiglenes táblák szerkezetét a CREATE GLOBAL TEMPORARY TABLE paranccsal előre meg kell határozni, jelezve az abban való adatok tárolásának sajátosságait, majd a felhasználó a fő táblák között látja és ezzel dolgozik. mint egy rendes asztalnál.

Az adatbázis normalizálása - altáblákra (könyvtárra) bontás és kapcsolatok meghatározása

Jelenlegi Alkalmazottak táblázatunk hátránya, hogy a felhasználó bármilyen szöveget beírhat a Pozíció és az Osztály mezőkbe, ami elsősorban hibás, hiszen az egyik alkalmazottnál egyszerűen az „IT”-t jelölheti meg osztályként, a másodiknál ​​pedig például , írja be az "IT részleget", legyen a harmadik "IT". Emiatt nem lesz egyértelmű, hogy mire gondolt a felhasználó, pl. Ezek az alkalmazottak ugyanannak az osztálynak az alkalmazottai, vagy a felhasználó leírta magát, és ez 3 különböző részleg? És még inkább, ebben az esetben nem tudjuk helyesen csoportosítani az adatokat néhány jelentéshez, ahol szükség lehet az alkalmazottak számának feltüntetésére az egyes részlegek összefüggésében.

A második hátrány ezen információk tárolásának mennyisége és megkettőzése, pl. minden alkalmazottnál fel van tüntetve az osztály teljes neve, amihez szükséges egy hely az adatbázisban az osztály nevéből származó egyes karakterek tárolására.

A harmadik hátrány a mezők frissítésének nehézsége, ha egy pozíció neve megváltozik, például ha át kell nevezni a „Programozó” pozíciót „Junior programozó”-ra. Ebben az esetben a táblázat minden olyan sorát módosítanunk kell, amelyben a Pozíció egyenlő a „Programozó”-val.

E hiányosságok elkerülése érdekében az adatbázis úgynevezett normalizálását alkalmazzák - altáblákra, referenciatáblákra bontva. Nem szükséges az elmélet dzsungelébe mászni és tanulmányozni, hogy mik is azok a normálformák, elég megérteni a normalizálás lényegét.

Hozzunk létre 2 referenciatáblázatot "Pozíciók" és "Részlegek", az első neve Pozíciók, a második pedig Tanszék:

TÁBLÁZAT LÉTREHOZÁSA Pozíciók(ID int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Positions PRIMARY KEY, Name nvarchar(30) NOT NULL) CREATE TABLE Részlegek(ID int IDENTITY(1,1) NOT NULL CONSTRAINT PK_Részlegek PRIMARY KEY(3 ) NEM NULLA)
Vegyük figyelembe, hogy itt az új IDENTITY opciót használtuk, ami azt jelenti, hogy az ID oszlopban lévő adatok automatikusan sorszámozásra kerülnek, 1-től kezdve, 1-es lépéssel, azaz. új rekordok hozzáadásakor egymás után hozzárendeljük az 1, 2, 3 és így tovább értékeket. Az ilyen mezőket általában automatikus növekedésnek nevezik. Egy táblában csak egy IDENTITY tulajdonságú mező adható meg, és általában, de nem feltétlenül, egy ilyen mező a tábla elsődleges kulcsa.

Egy megjegyzésre
A különböző DBMS-ekben a mezők számlálóval való megvalósítása eltérő módon történhet. A MySQL-ben például egy ilyen mező az AUTO_INCREMENT opcióval van definiálva. Az ORACLE-ban és a Firebirdben ezt a funkciót korábban SEQUENCE-ek segítségével lehetett emulálni. De amennyire én tudom, az ORACLE most hozzáadta a GENERATED AS IDENTITY opciót.

Töltse ki ezeket a táblázatokat automatikusan, az Alkalmazottak tábla Beosztás és Osztály mezőiben rögzített aktuális adatok alapján:

Töltse ki a Pozíciók táblázat Név mezőjét az Alkalmazottak tábla Pozíció mezőjének egyedi értékeivel. INSERT Positions(Name) SELECT DISTINCT FROM Employees WHERE A pozíció NEM NULL -- törölje el azokat a rekordokat, amelyeknél nincs megadva pozíció
Ugyanígy járunk el az osztályok táblázattal is:

INSERT Részlegek (Név) SELECT DISTINCT FROM FROM Alkalmazottak, ahol az osztály NEM NULL
Ha most megnyitjuk a Pozíciók és Részlegek táblákat, akkor az ID mező mellett számozott értékkészletet fogunk látni:

SELECT * FROM Pozíciók

SELECT * FROM Osztályok

Ezek a táblázatok mostantól a pozíciók és részlegek beállítására szolgáló könyvtárak szerepét töltik be. Most a munkakör- és részlegazonosítókra fogunk hivatkozni. Először is hozzunk létre új mezőket az Alkalmazottak táblában az azonosító adatok tárolására:

Mező hozzáadása a pozícióazonosítóhoz ALTER TABLE Alkalmazottak ADD PositionID int -- mező hozzáadása az osztályazonosítóhoz ALTER TABLE Alkalmazottak ADD Osztályazonosító int
A hivatkozási mezők típusának meg kell egyeznie a könyvtárakkal, ebben az esetben az int.

Egyszerre több mezőt is hozzáadhat a táblázathoz egy paranccsal, a mezőket vesszővel elválasztva felsorolva:

ALTER TABLE Alkalmazottak ADD PositionID int, DepartmentID int
Most írjunk hivatkozásokat (hivatkozási megszorításokat - IDEGEN KULCS) ezekhez a mezőkhöz, hogy a felhasználónak ne legyen lehetősége olyan értékeket írni ezekbe a mezőkbe, amelyek nem szerepelnek a könyvtárakban található azonosító értékek között.

TÁBLÁZAT MÓDOSÍTÁSA Alkalmazottak ADD CONSTRAINT FK_Employees_PositionID FORIGN KEY(PositionID) REFERENCES Pozíciók(ID)
És ugyanezt tesszük a második mezővel is:

TÁBLÁZAT MÓDOSÍTÁSA Alkalmazottak ADD CONSTRAINT FK_Employees_DepartmentID FOREIGN KEY(Osztályazonosító) HIVATKOZÁSOK Osztályok (ID)
Mostantól a felhasználó csak a megfelelő referenciakönyv azonosítóit írhatja be ezekbe a mezőkbe. Ennek megfelelően egy új osztály vagy pozíció használatához először új bejegyzést kell hozzáadnia a megfelelő címtárhoz. Mivel a beosztások és az osztályok ma már egy példányban könyvtárakba kerülnek, majd a név megváltoztatásához elég csak a címtárban módosítani.

A hivatkozási kényszer neve általában összetett, az "FK_" előtagból áll, ezt követi a tábla neve, az aláhúzás után pedig a mezőnév következik, amely a keresőtábla azonosítójára utal.

Az azonosító (ID) általában egy belső érték, amelyet csak kapcsolatokra használnak, és az, hogy milyen értéket tárolnak, az a legtöbb esetben teljesen közömbös, így nem kell megpróbálni megszabadulni a számsorokban keletkező lyukaktól. táblázattal végzett munka során, például miután törölte a rekordokat a kézikönyvből.

TÁBLÁZAT MÓDOSÍTÁSA tábla ADD CONSTRAINT megkötés_neve FOREIGN KEY(1. mező,2. mező,…) REFERENCIÁK keresőtábla(1. mező,2. mező,…)
Ebben az esetben a "tábla_hivatkozás" táblában az elsődleges kulcsot több mező (field1, field2, ...) kombinációja képviseli.

Valójában most frissítsük a PositionID és a DepartmentID mezőket a könyvtárak azonosítóértékeivel. Használjuk erre a célra az UPDATE DML parancsot:

UPDATE e SET PositionID=(AZONOSÍTÓ VÁLASZTÁSA A pozíciókból WHERE Név=e.Pozíció), Osztályazonosító=(VÁLASZT AZONOSÍTÓT RÉSZLEGEKBŐL WHERE Név=e.Osztály) FROM Alkalmazottak e
Nézzük meg, mi történik a lekérdezés futtatásával:

SELECT * FROM Alkalmazottak

Ennyi, a PositionID és DepartmentID mezők ki vannak töltve a megfelelő pozíciókkal és részlegekkel a szükséges azonosítókkal a Munkavállalók tábla Pozíció és Osztály mezőiben most, ezeket a mezőket törölheti:

TÁBLÁZAT MÓDOSÍTÁSA Alkalmazottak DROP COLUMN Pozíció, Osztály
A táblázat most így néz ki:

SELECT * FROM Alkalmazottak

ID Név születésnap Email Pozícióazonosító Osztályazonosító
1000 Ivanov I.I. NULLA NULLA 2 1
1001 Petrov P.P. NULLA NULLA 3 3
1002 Sidorov S.S. NULLA NULLA 1 2
1003 Andreev A.A. NULLA NULLA 4 3

Azok. végül megszabadultunk a felesleges információk tárolásától. Most a pozíció- és osztályszámok alapján egyedileg meghatározhatjuk a nevüket a keresőtáblázatokban található értékek segítségével:

SELECT e.ID,e.Name,p.Name PositionName,d.Name OsztályNév FROM Alkalmazottak e LEFT JOIN Részlegek d BE d.ID=e.Osztályazonosító LEFT JOIN Pozíciók p ON p.ID=e.PositionID

Az Object Inspectorban az adott táblához létrehozott összes objektumot láthatjuk. Innen különféle manipulációkat is végezhet ezekkel az objektumokkal - például átnevezhet vagy törölhet objektumokat.

Azt is érdemes megjegyezni, hogy egy táblázat utalhat önmagára, i.e. rekurzív hivatkozást hozhat létre. Például adjunk hozzá egy másik Vezetőazonosító mezőt az alkalmazottakat tartalmazó táblázatunkhoz, amely azt jelzi, hogy kihez tartozik az alkalmazott. Hozzunk létre egy mezőt:

TÁBLÁZAT MÓDOSÍTÁSA Alkalmazottak ADD ManagerID int
Ebben a mezőben a NULL érték megengedett, a mező üres lesz, ha például nincs felettes a munkavállaló felett.

Most hozzunk létre egy IDEGEN KULCSOT az Alkalmazottak táblázatban:

TÁBLÁZAT MÓDOSÍTÁSA Alkalmazottak ADD CONSTRAINT FK_Employees_ManagerID IDEGEN KULCS (ManagerID) REFERENCIÁK Alkalmazottak (azonosító)
Most készítsünk egy diagramot, és nézzük meg, hogyan néznek ki rajta a táblázataink közötti kapcsolatok:

Ennek eredményeként a következő képet kell látnunk (az Alkalmazottak tábla a Pozíciók és Osztályok táblákhoz kapcsolódik, és önmagára is vonatkozik):

Végül érdemes megemlíteni, hogy a referenciakulcsok további opciókat tartalmazhatnak a CASCADE TÖRLÉSÉN és az ON UPDATE CASCADE-n, amelyek megmondják, hogyan kell viselkedni a keresőtáblázatban hivatkozott rekord törlésekor vagy frissítésekor. Ha ezek az opciók nincsenek megadva, akkor nem tudjuk megváltoztatni annak a bejegyzésnek az azonosítóját a címtártáblázatban, amelyik tartalmaz hivatkozásokat egy másik táblából, és nem törölhetünk ilyen bejegyzést a könyvtárból mindaddig, amíg nem töröljük az összes erre a bejegyzésre hivatkozó sort, vagy frissítse ezeket a hivatkozási sorokat egy másik értékre.

Például hozzuk létre újra a táblázatot az FK_Employees_DepartmentID ON DELETE CASCADE opciójával:

DROP TABLE Alkalmazottak TÁBLÁZAT LÉTREHOZÁSA Alkalmazottak(ID int NEM NULL, Név nvarchar(30), Születésnapi dátum, E-mail nvarchar(30), Pozícióazonosító int, Osztályazonosító int, MenedzserID int, CONSTRAINT PK_Employees FOREGYESÜLT KULCS (ID), CONSTRAINTFOREDepartmentFKIDIGEpartment(ID), CONSTRAINT ) REFERENCIÁK Részlegek(ID) CASCADE TÖRLÉSÉNEK, CONSTRAINT FK_Employees_PositionID FOREIGN KEY(PositionID) REFERENCES Pozíciók(ID), CONSTRAINT FK_Employees_ManagerID FOREIGN KEY (ManagerID) )ÉRTÉKEK (1000,N"Ivanov II","19550219",2,1,NULL), (1001,N"Petrov PP","19831203",3,3,1003), (1002 ,N"Sidorov SS" "19760607",1,2,1000), (1003,N"Andreev AA","19820417",4,3,1000)
Távolítsuk el a 3-as azonosítójú osztályt a Részlegek táblázatból:

Osztályok TÖRLÉSE WHERE ID=3
Nézzük az Alkalmazottak táblázat adatait:

SELECT * FROM Alkalmazottak

ID Név születésnap Email Pozícióazonosító Osztályazonosító MenedzserID
1000 Ivanov I.I. 1955-02-19 NULLA 2 1 NULLA
1002 Sidorov S.S. 1976-06-07 NULLA 1 2 1000

Mint látható, a 3. osztály adatai is törlésre kerültek az Alkalmazottak táblából.

Az ON UPDATE CASCADE opció hasonlóan viselkedik, de az azonosító érték frissítésekor lép érvénybe a könyvtárban. Például, ha megváltoztatjuk a pozícióazonosítót a pozíciókatalógusban, akkor ebben az esetben az Alkalmazottak táblában lévő részlegazonosító frissül az új azonosító értékre, amelyet a címtárban beállítottunk. De ebben az esetben ezt egyszerűen nem lehet bemutatni, mert. a Részlegek tábla ID oszlopában található az IDENTITY opció, amely megakadályozza, hogy a következő lekérdezést hajtsuk végre (a részlegazonosító 3 módosítása 30-ra):

UPDATE Részlegek SET ID=30 WHERE ID=3
A legfontosabb dolog az, hogy megértsük a CASCADE TÖRLÉSÉN és a UPDATE CASCADE-n e két lehetőség lényegét. Nagyon ritkán használom ezeket a lehetőségeket, és azt javaslom, hogy alaposan gondolja át, mielőtt megadja őket hivatkozási megszorításban. Ha véletlenül töröl egy rekordot a referenciatáblából, az nagy problémákhoz vezethet, és láncreakciót idézhet elő.

Állítsuk vissza a 3. osztályt:

Engedély megadása IDENTITY értékek hozzáadásához/módosításához. SET IDENTITY_INSERT Részlegek BE INSERT Részlegek(ID,Név) VALUES(3,N"IT") -- IDENTITY értékek hozzáadásának/módosításának megtagadása> SET IDENTITY_INSERT Részlegek KI
Teljesen törölje az Alkalmazottak táblát a TRUNCATE TABLE paranccsal:

CSONKA TÁBLÁZAT Alkalmazottak
És ismét töltse be az adatokat az előző INSERT paranccsal:

BESZÁLLÍTÁS: Alkalmazottak (azonosító, név, születésnap, pozícióazonosító, osztályazonosító, vezetőazonosító) ÉRTÉKEK (1000,N"Ivanov II","19550219",2,1,NULL), (1001,N"Petrov P.P." ,19831203",3 ,3,1003), (1002,N"Sidorov SS","19760607",1,2,1000), (1003,N"Andreev AA","19820417" ,4,3,1000)

Foglaljuk össze

Jelenleg néhány további DDL parancsot adtunk hozzá tudásunkhoz:
  • Az IDENTITY tulajdonság hozzáadása a mezőhöz - lehetővé teszi a mező automatikus kitöltését (számlálómező) a táblázathoz;
  • ALTER TABLE táblázat_neve HOZZÁAD mezők_listája_karakterisztikával – lehetővé teszi új mezők hozzáadását a táblázathoz;
  • ALTER TABLE táblázat_neve DROP OSZLOP mezők_listája - lehetővé teszi a mezők eltávolítását a táblázatból;
  • ALTER TABLE táblázat_neve HOZZÁADÁSA KORLÁTOZÁS megszorítás_neve IDEGEN KULCS(mezők) IRODALOM lookup_table(fields) – lehetővé teszi a tábla és a keresőtábla közötti kapcsolat meghatározását.

Egyéb korlátozások - EGYEDI, ALAPÉRTÉKELÉS, ELLENŐRZÉS

Az EGYEDI kényszerrel azt mondhatjuk, hogy egy adott mezőben vagy mezőkészletben minden sor értékének egyedinek kell lennie. Az Alkalmazottak tábla esetében az E-mail mezőben tudunk ilyen korlátozást bevezetni. Csak előre töltse fel az e-mailt értékekkel, ha még nincsenek megadva:

UPDATE Alkalmazottak SET Email=" [e-mail védett]"WHERE ID=1000 FRISSÍTÉS Alkalmazottak e-mail-beállítása=" [e-mail védett]" WHERE ID=1001 UPDATE Munkavállalók BEÁLLÍTÁSA E-mail=" [e-mail védett]"WHERE ID=1002 FRISSÍTÉS Az alkalmazottak e-mail-beállítása=" [e-mail védett]" WHERE ID=1003
És most egyedi korlátozást írhat elő erre a mezőre:

ALTER TABLE Alkalmazottak ADD CONSTRAINT UQ_Employees_Email EGYEDI(E-mail)
Mostantól a felhasználó nem tudja megadni ugyanazt az e-mail-címet több alkalmazott számára.

Az egyediségi megszorítást általában a következőképpen nevezik el - először az "UQ_" előtag következik, majd a tábla neve, az aláhúzás után pedig annak a mezőnek a neve, amelyre ez a megszorítás vonatkozik.

Ennek megfelelően, ha a mezők kombinációjának egyedinek kell lennie a táblázat soraiban, akkor vesszővel elválasztva felsoroljuk őket:

TÁBLÁZAT MÓDOSÍTÁSA táblázat_neve ADD CONSTRAINT megszorítás_neve EGYEDI(mező1,mező2,…)
Ha egy ALAPÉRTELMEZETT kényszert adunk egy mezőhöz, beállíthatunk egy alapértelmezett értéket, amely akkor lesz helyettesítve, ha a mező nem szerepel az INSERT parancsmezőlistában, amikor új rekordot szúrunk be. Ez a korlátozás közvetlenül beállítható a táblázat létrehozásakor.

Adjunk hozzá egy új "Toborzás dátuma" mezőt az Employees táblához, nevezzük el HireDate-nek, és mondjuk, hogy ennek a mezőnek az alapértelmezett értéke az aktuális dátum lesz:

TÁBLÁZAT MÓDOSÍTÁSA Alkalmazottak ADD HireDate dátum NOT NULL ALAPÉRTELMEZETT SYSDATETIME()
Vagy ha a HireDate oszlop már létezik, akkor a következő szintaxis használható:

TÁBLÁZAT MÓDOSÍTÁSA Alkalmazottak ADD DEFAULT SYSDATETIME() FOR HireDate
Itt nem adtam meg a megszorítás nevét, mert a DEFAULT esetében az volt a véleményem, hogy ez nem olyan kritikus. De ha jól csinálod, akkor szerintem nem kell lustálkodni és normális nevet kell beállítani. Ez a következőképpen történik:

ALTER TABLE Alkalmazottak ADD CONSTRAINT DF_Employees_HireDate DEFAULT SYSDATETIME() FOR HireDate
Mivel ez az oszlop korábban nem létezett, minden rekordhoz hozzáadva az aktuális dátum értéke bekerül a HireDate mezőbe.

Új bejegyzés hozzáadásakor automatikusan bekerül az aktuális dátum is, természetesen, ha nem állítjuk be kifejezetten, pl. nincs megadva az oszlopok listájában. Mutassuk meg ezt egy példával anélkül, hogy megadnánk a HireDate mezőt a hozzáadott értékek listájában:

INSERT Alkalmazottak(ID,Név,E-mail)VALUES(1004,N"Szergejev S.S."," [e-mail védett]")
Nézzük meg mi történt:

SELECT * FROM Alkalmazottak

ID Név születésnap Email Pozícióazonosító Osztályazonosító MenedzserID Bérelési dátum
1000 Ivanov I.I. 1955-02-19 [e-mail védett] 2 1 NULLA 2015-04-08
1001 Petrov P.P. 1983-12-03 [e-mail védett] 3 4 1003 2015-04-08
1002 Sidorov S.S. 1976-06-07 [e-mail védett] 1 2 1000 2015-04-08
1003 Andreev A.A. 1982-04-17 [e-mail védett] 4 3 1000 2015-04-08
1004 Szergejev S.S. NULLA [e-mail védett] NULLA NULLA NULLA 2015-04-08

A CHECK ellenőrzési kényszer akkor használatos, ha ellenőrizni kell a mezőbe beszúrt értékeket. Vezessük be például ezt a korlátozást a személyi szám mezőre, ami a munkatársunk azonosítója (ID). Ezzel a megszorítással tegyük fel, hogy a létszámnak 1000 és 1999 között kell lennie:

TÁBLÁZAT MÓDOSÍTÁSA Alkalmazottak ADD CONSTRAINT CK_Employees_ID ELLENŐRZÉSE (AZONOSÍTÓ 1000 ÉS 1999 KÖZÖTT)
A kényszer neve általában ugyanaz, először a "CK_" előtaggal, majd a tábla nevével és annak a mezőnek a nevével, amelyre a megszorítás vonatkozik.

Próbáljunk meg egy érvénytelen bejegyzést beszúrni, hogy ellenőrizzük a korlátozás működését (a megfelelő hibát kell kapnunk):

INSERT Alkalmazottak(azonosító,e-mail) ÉRTÉKEK(2000," [e-mail védett]")
Most változtassuk meg a beszúrandó értéket 1500-ra, és győződjön meg arról, hogy a rekord be van szúrva:

INSERT Alkalmazottak(azonosító,e-mail) ÉRTÉKEK(1500," [e-mail védett]")
Létrehozhat EGYEDI és CHECK kényszereket név megadása nélkül is:

ALTER TABLE Alkalmazottak ADD EGYEDI(E-mail) ALTER TABLE Alkalmazottak ADD ELLENŐRZÉS (AZONOSÍTÓ 1000 ÉS 1999 KÖZÖTT)
De ez nem jó gyakorlat, és jobb, ha kifejezetten megadja a megszorítás nevét, mert hogy később rájöjjön, mi lesz a nehezebb, ki kell nyitnia az objektumot, és meg kell néznie, mi a felelős.

Jó névvel sok információ megtudható egy kényszerről közvetlenül a nevéből.

És ennek megfelelően ezek a korlátozások azonnal létrehozhatók egy tábla létrehozásakor, ha még nem létezik. Töröljük a táblázatot:

DROP TABLE Alkalmazottak
És hozza létre újra az összes létrehozott megszorítással egyetlen CREATE TABLE paranccsal:

TÁBLÁZAT LÉTREHOZÁSA Alkalmazottak(ID int NEM NULL, Név nvarchar(30), Születésnapi dátum, E-mail nvarchar(30), Pozícióazonosító int, Osztályazonosító int, Bérbeadás dátuma NEM NULL ALAPÉRTELMEZETT SYSDATETIME(), -- ALAPÉRTELMEZTETÉS esetén egy CONSTRAINT PK_Employees PRIMARY Employees KEY kivétel (ID), CONSTRAINT FK_Employees_DepartmentID FOREIGN KEY(Osztályazonosító) REFERENCES Részlegek(ID), CONSTRAINT FK_Employees_PositionID FOREIGN KEY(PositionID) REFERENCES Pozíciók(ID), CONSTRAINT UQ_CK_Employees(CHINTECEK00)

BESZÁLLÍTÁS: Alkalmazottak (azonosító, név, születésnap, e-mail, pozícióazonosító, osztályazonosító) ÉRTÉKEK (1000,N"Ivanov I.I.","19550219"," [e-mail védett]",2,1), (1001,N"Petrov P.P.","19831203"," [e-mail védett]",3,3), (1002,N"Sidorov S.S.","19760607"," [e-mail védett]",1,2), (1003,N"Andreev A.A.","19820417"," [e-mail védett]",4,3)

Néhány szó az ELSŐDLEGES KULCS és az EGYEDI megszorítások létrehozásakor létrehozott indexekről

Amint a fenti képernyőképen látható, az ELSŐDLEGES KULCS és az EGYEDI megszorítások létrehozásakor automatikusan létrejöttek az azonos nevű indexek (PK_Employees és UQ_Employees_Email). Alapértelmezés szerint az elsődleges kulcs indexe CLUSTERED, az összes többi index pedig NONCLUSTERED néven jön létre. Érdemes elmondani, hogy a fürtözött index fogalma nem minden DBMS-ben érhető el. Egy táblának csak egy CLUSTERED indexe lehet. CLUSTERED - azt jelenti, hogy a tábla rekordjai ezen index szerint lesznek rendezve, az is elmondható, hogy ennek az indexnek közvetlen hozzáférése van az összes táblaadathoz. Úgymond a táblázat fő indexe. Még durvábban fogalmazva az asztalra csavarozott index. A fürtözött index egy nagyon hatékony eszköz, amely segíthet a lekérdezés optimalizálásában, csak ezt tartsa szem előtt. Ha azt akarjuk mondani, hogy a fürtözött indexet nem az elsődleges kulcsban, hanem egy másik indexhez használjuk, akkor az elsődleges kulcs létrehozásakor meg kell adnunk a NONCLUSTERED opciót:

TÁBLÁZAT MÓDOSÍTÁSA tábla_neve ADD CONSTRAINT megszorítás_neve ELSŐDLEGES KULCS NEM CLUSTERED(mező1,mező2,…)
Tegyük például a PK_Employees kényszerindexet nem fürtözött, az UQ_Employees_Email kényszerindexet pedig fürtözötté. Először is távolítsuk el ezeket a korlátozásokat:

ALTER TABLE Alkalmazottak DROP CONSTRAINT PK_Employees ALTER TABLE Alkalmazottak DROP CONSTRAINT UQ_Employees_Email
Most pedig hozzuk létre őket a CLUSTERED és NONCLUSTERED opciókkal:

TÁBLÁZAT MÓDOSÍTÁSA Alkalmazottak ADD CONSTRAINT PK_Employees PRIMARY KEY NONCLUSTERED (ID) ALTER TABLE Munkavállalók ADD CONSTRAINT UQ_Employees_Email EGYEDI KÖSZÖRÖTT (E-mail)
Most, amikor kiválasztunk az Employees táblából, láthatjuk, hogy a rekordok az UQ_Employees_Email fürtözött index szerint vannak rendezve:

SELECT * FROM Alkalmazottak

ID Név születésnap Email Pozícióazonosító Osztályazonosító Bérelési dátum
1003 Andreev A.A. 1982-04-17 [e-mail védett] 4 3 2015-04-08
1000 Ivanov I.I. 1955-02-19 [e-mail védett] 2 1 2015-04-08
1001 Petrov P.P. 1983-12-03 [e-mail védett] 3 3 2015-04-08
1002 Sidorov S.S. 1976-06-07 [e-mail védett] 1 2 2015-04-08

Ezt megelőzően, amikor a fürtözött index a PK_Employees index volt, a rekordokat alapértelmezés szerint az ID mező szerint rendezték.

De ebben az esetben ez csak egy példa, amely megmutatja a fürtözött index lényegét, mert. Valószínűleg az Alkalmazottak táblát az azonosító mező fogja lekérdezni, és bizonyos esetekben maga is referenciaként szolgálhat.

Könyvtáraknál általában célszerű a fürtözött indexet az elsődleges kulcsra építeni, mert a kérésekben gyakran hivatkozunk a címtárazonosítóra, hogy megkapjuk például a nevet (Position, Department). Itt felidézzük, amiről fentebb írtam, hogy a fürtözött index közvetlen hozzáféréssel rendelkezik a tábla soraihoz, és ebből következik, hogy minden oszlop értékét további többletköltség nélkül megkaphatjuk.

A fürtözött index előnyösen alkalmazható a leggyakrabban kiválasztott mezőkre.

Néha a táblák egy helyettesítő mező alapján hoznak létre kulcsot, ilyenkor célszerű megtartani a CLUSTERED index beállítást egy megfelelőbb indexhez, és megadni a NONCLUSTERED beállítást egy helyettesítő elsődleges kulcs létrehozásakor.

Foglaljuk össze

Ebben a szakaszban megismerkedtünk minden típusú korlátozással, a legegyszerűbb formájukban, amelyeket egy paranccsal hoznak létre, például "ALTER TABLE table_name ADD CONSTRAINT constraint_name ...":
  • ELSŐDLEGES KULCS- elsődleges kulcs;
  • IDEGEN KULCS- linkek létrehozása és az adatok hivatkozási integritásának ellenőrzése;
  • EGYEDI- lehetővé teszi az egyediség megteremtését;
  • JELÖLJE BE- lehetővé teszi a bevitt adatok helyességének elvégzését;
  • ALAPÉRTELMEZETT– lehetővé teszi az alapértelmezett érték beállítását;
  • Azt is érdemes megjegyezni, hogy minden korlátozás eltávolítható a " paranccsal ALTER TABLE táblázat_neve DROP CONSTRAINT megszorítás_neve".
Részben érintettük az indexek témakörét és elemeztük a klaszter fogalmát ( FÜRTÖZÖTT) és nem fürtözött ( NEM KLASZTER) index.

Önálló indexek létrehozása

Az önellátás itt azokra az indexekre vonatkozik, amelyeket nem PRIMER KULCS vagy EGYEDI kényszerhez hoztak létre.

A mező vagy mezők indexei a következő paranccsal hozhatók létre:

CREATE INDEX IDX_Employees_Name ON Employees(Név)
Itt megadhatja a CLUSTERED, NONCLUSTERED, UNIQUE opciókat is, valamint megadhatja az egyes mezők rendezési irányát is ASC (alapértelmezett) vagy DESC:

EGYEDI NEM CLUSTERED INDEX LÉTREHOZÁSA UQ_Employees_EmailDesc ON Employees (DESC e-mail)
Nem fürtözött index létrehozásakor a NONCLUSTERED opció elhagyható, mint ez alapértelmezés szerint benne van, itt egyszerűen csak azért jelenik meg, hogy jelezze a CLUSTERED vagy NONCLUSTERED opció pozícióját a parancsban.

Az indexet a következő paranccsal távolíthatja el:

DROP INDEX IDX_Employees_Name ON Employees
Egyszerű indexek, akárcsak a megszorítások, a CREATE TABLE paranccsal hozhatók létre.

Például töröljük újra a táblázatot:

DROP TABLE Alkalmazottak
És hozza létre újra az összes létrehozott kényszerrel és indexszel egyetlen CREATE TABLE paranccsal:

TÁBLÁZAT LÉTREHOZÁSA Alkalmazottak(ID int NOT NULL, Név nvarchar(30), Születésnapi dátum, E-mail nvarchar(30), Pozícióazonosító int, Osztályazonosító int, Felvételi dátum dátuma NOT NULL CONSTRAINT DF_Employees_HireDate DEFAULT SYSDATEPK_IMARYm(), Manager KEYIDEIDPK_IMARY(), ), Korlátozott FK_EMSPLOUPEES_DEPOARTOPARTOPARTOPARTOPARTOPARTOPARTOPARTOPARTOPARTARYID (OSZTÁLYID) Referenciák (ID), Korlátozás FK_EMSPLYES_POSEIDID idegen kulcs (POSITIONID) Referenciák Pozíciók (ID), Korlátozás FK_EMSPLOVEES_MANAGERID külföldi kulcs (vezetőiId) Referenciák Alkalmazottak (ID), Korlátozás UQ_EMSPLYES_EMAIL UNIQ CRECK (ID 1000 és 1999), INDEX IDX_Employees_Name(Name))
Végül illessze be alkalmazottaink táblázatába:

Az alkalmazottak (azonosító, név, születésnap, e-mail, beosztás azonosító, osztályazonosító, vezetőazonosító) ÉRTÉKEK BEHELYEZÉSE (1000,N"Ivanov II","19550219"," [e-mail védett]",2,1,NULL), (1001,N"Petrov P.P.","19831203"," [e-mail védett]",3,3,1003", (1002,N"Sidorov S.S.","19760607"," [e-mail védett]",1,2,1000", (1003,N"Andreev A.A.","19820417"," [e-mail védett]",4,3,1000)
Ezenkívül érdemes megjegyezni, hogy az értékek beépíthetők egy nem fürtözött indexbe, ha megadja őket az INCLUDE-ban. Azok. ebben az esetben az INCLUDE index némileg egy fürtözött indexhez fog hasonlítani, csak most az index nincs csatolva a táblázathoz, hanem a szükséges értékek az indexhez. Ennek megfelelően az ilyen indexek nagyban javíthatják a kiválasztási lekérdezések (SELECT) teljesítményét, ha a felsorolt ​​mezők mindegyike benne van az indexben, akkor lehetséges, hogy egyáltalán nem kell hozzáférni a táblához. De ez természetesen növeli az index méretét, mert a felsorolt ​​mezők értékei megkettőződnek az indexben.

Vágás az MSDN-ből.Általános parancsszintaxis indexek létrehozásához

LÉTREHOZÁS [EGYEDI] [CLASZTERES | NONCLUSTERED ] INDEX index_neve BE (oszlop [ ASC | DESC ] [ ,...n ]) [ INCLUDE (oszlop_neve [ ,...n ]) ]

Foglaljuk össze

Az indexek növelhetik az adatvisszakeresés (SELECT) sebességét, de az indexek csökkentik a táblaadatok frissítésének sebességét, mert minden módosítás után a rendszernek újra kell építenie egy adott tábla összes indexét.

Kívánatos minden esetben megtalálni az optimális megoldást, az arany középutat, hogy mind a mintavételi teljesítmény, mind az adatmódosítás megfelelő szinten legyen. Az indexek létrehozásának stratégiája és számuk sok tényezőtől függhet, például attól, hogy milyen gyakran változnak a táblázat adatai.

Következtetés a DDL-ről

Mint látható, a DDL nyelv nem olyan bonyolult, mint amilyennek első pillantásra tűnhet. Itt csak három táblázat felhasználásával szinte az összes főbb tervét meg tudtam mutatni.

A lényeg az, hogy megértsük a lényeget, a többi pedig gyakorlás kérdése.

Sok sikert az SQL nevű csodálatos nyelv elsajátításához.

Az SQL Server 2012 DBMS elméleti alapjait egyszerű és hozzáférhető módon tekintjük át, bemutatjuk az MS SQL Server 2012 telepítését, konfigurálását és támogatását, valamint a Transact-SQL adatkezelési nyelv leírását. Megfontolt egy adatbázis létrehozása, táblák és tartalmuk, lekérdezések, indexek, nézetek, triggerek, tárolt eljárások és felhasználó által definiált függvények módosítása.
Megjelenik a biztonság hitelesítéssel, titkosítással és engedélyezéssel történő megvalósítása. Figyelmet fordítanak a DBMS-adminisztrációs feladatok automatizálására. Megfontolandó az adatok biztonsági másolatainak készítése és a rendszer-helyreállítás végrehajtása. Leírja a Microsoft Analysis Services, a Microsoft Reporting Services és más üzleti intelligencia eszközöket. Figyelembe veszik az XML dokumentumokkal való munkavégzés technológiáját, a téradatkezelést, a teljes szöveges keresést és még sok mást. Kezdő programozóknak.

A modern világban az információ a legnagyobb érték, de ugyanolyan fontos, hogy ezeket az információkat kezelni tudjuk. Ez a könyv az SQL lekérdezési nyelvről és az adatbáziskezelésről szól. Az anyag bemutatása az alapvető lekérdezések leírásától kezdve az összekapcsolások, részlekérdezések és tranzakciók segítségével végzett összetett manipulációkig tart. Ha megpróbálja kitalálni, hogyan kell adatbázisokat rendszerezni és kezelni, ez a könyv nagyszerű gyakorlati útmutató lesz, és minden szükséges eszközt megad. Ennek a kiadásnak a sajátossága az anyag egyedi bemutatási módja, amely megkülönbözteti az O\'Reilly's Head First sorozatot számos unalmas programozási könyvtől.

Ez a könyv megtanítja Önnek, hogyan dolgozzon SQL-parancsokkal és -utasításokkal, hogyan hozhat létre és konfigurálhat relációs adatbázisokat, hogyan tölthet be és módosíthat adatbázis-objektumokat, futhat le hatékony lekérdezéseket, hogyan javíthatja a teljesítményt és hogyan építhet biztonságot. Megtanulja a DDL-utasítások használatát és az API-k alkalmazását, az XML- és Java-szkriptek integrálását, az SQL-objektumok használatát, a webszerverek létrehozását, a távoli hozzáféréssel való munkát és az elosztott tranzakciók végrehajtását.
Ebben a könyvben olyan információkat találhat, mint például a memórián belüli adatbázisokkal való munkavégzés leírása, a streaming és a beágyazott adatbázisok, a mobil és kézi eszközök adatbázisai és még sok más.

Az SQL for Mortals egy teljes bevezetés a Structured Query Language-be, kifejezetten kezdőknek írva.

Ha még nem ismeri az adatbázis-kezelést, ez a könyv megtanítja Önnek, hogyan dolgozzon könnyen és gördülékenyen az SQL-lel, egyszerű lekérdezések és összetett műveletek segítségével. Az SQL elsajátítása:

- Az adatbázis-kezelési fogalmak jelentésének megértése a relációs adatbázisok tömör és egyszerű bevezetésével.
— Kövesse ezeket az utasításokat az alapvető SQL-parancsok használatához az adattáblázatokban elhelyezett információk kereséséhez és kezeléséhez. Tanulja meg az adatok kiválasztását és összegzését, valamint azok ügyes kezelését.
- Hatékonyan dolgozhat összetett adattáblákkal azáltal, hogy fejlett lekérdezési technikákat alkalmaz egynél több táblára egyidejűleg, összetett lekérdezéseket és részlekérdezéseket készítve.
- Új adattáblázatok létrehozása kiskereskedelmi üzleti alkalmazásokhoz. Ismerje meg a hatékony adatbázis-tervezés fontos alapelveit és az adatok integritását és védelmét biztosító technikákat.
- Tanulja meg az SQL használatát programozási nyelvekkel egy külön programozói fejezet segítségével.

Az SQL régebbi, mint a legtöbbünk, így nem állíthatom, hogy néhány rendkívüli dolgot közvetítek ezen a könyvön keresztül. Ami ezt a címet egyedivé teszi, az a karcsú mérete. Ha valódi kompakt gyakorlati útmutatót keres az SQL-ről, akkor ez a könyv neked szól. A kezdők számára megpróbáltam az óceánt egy vödörbe zárni, hogy a lehető legrövidebb időn belül felvértezzem őket SQL-ismeretekkel. Az SQL nyelv túl terjedelmes, és ennek a hatalmas nyelvnek minden aspektusának bemutatása nagyon fárasztó feladat. Eltekintve a legkevésbé használt funkcióktól, ez a könyv úgy készült, hogy a nyelv működőbb területeire összpontosítson. Célja, hogy segítsen gyorsan önállóan megtanulni az SQL-t. Ez egy oktató jellegű megközelítést követ, miközben több száz gyakorlati gyakorlatot tartalmaz illusztrációkkal kiegészítve, hogy rövid időn belül megtanítsa az SQL-t. A könyv minden túlzás nélkül rekordidő alatt teszi közzé az SQL-t. A könyv kifejezetten lefedi a világ első számú DBMS-ének ingyenes platformját az SQL feltárására: Oracle Database Express Edition. Azért választottam az Oracle XE-t, mert ingyenesen fejleszthető, telepíthető és terjeszthető; gyorsan letölthető; és egyszerűen kezelhető.

Az Oracle PL/SQL kezdetével elkezdheti használni a beépített nyelv használatát, amelyet minden Oracle fejlesztőnek és adatbázis-adminisztrátornak ismernie kell. Az Oracle Database tele van beépített alkalmazásfunkciókkal, amelyek használata ingyenes, és a PL/SQL a belépőjegy ezeknek a funkcióknak a saját kódjából való megismeréséhez és használatához. Ezzel az üzleti logikát az adatbázisban központosíthatja, az alkalmazáslogikát tehermentesítheti, valamint automatizálhatja az adatbázis- és alkalmazás-adminisztrációs feladatokat.

A szerző Don Bales a Beginning Oracle PL/SQL-ben gyors tempójú és példákkal teli oktatóanyagot biztosít. Tanuljon Don széleskörű tapasztalatából, és fedezze fel a PL/SQL leggyakrabban használt aspektusait anélkül, hogy időt pazarolna a homályos és elavult funkciókra.

Az „SQL. A Felhasználói Biblia egyedülálló abban, hogy minden fejezet összehasonlítja az SQL lekérdezési nyelvi szabvány implementációit a három vezető DBMS-ben. Az eredmény egy átfogó és praktikus referencia az adatbázis-felhasználók számára, a kezdőktől a profikig. Ez az SQL-ről szóló könyv kényelmesen ötvözi az elméletet a gyakorlattal, új technológiák leírását tartalmazza, és lehetővé teszi az SQL lekérdezési nyelvi szabvány és annak megvalósításainak számos árnyalatának megértését. Használható referenciaként - egyfajta asztali kézikönyvként.
— Ismerje meg az SQL lekérdezési nyelv és a relációs adatbázisok alapjait
- Tanuljon meg dolgozni táblákkal, nézetekkel, sorozatokkal és egyéb adatbázis-objektumokkal
- Ismerje meg, hogyan alkalmazhat tranzakciókat és zárakat többfelhasználós környezetben
- Ismerje meg az SQL szabvány és a három vezető adatbázis-szállító által kínált funkciókat
- Ismerje meg a metaadatok elérését és az adatbázisbiztonság megvalósítását
- Fedezzen fel további témákat: SQL–XML integráció, OLAP üzleti intelligencia és még sok más

Ha rendelkezik alapvető HTML-ismeretekkel, akkor Robin Nixon, egy tapasztalt fejlesztő és számos bestseller webmaster könyv szerzőjének könyve segítségével könnyedén megtanulhatja, hogyan hozhat létre dinamikus webhelyeket, amelyeket magas szintű felhasználói interakció jellemez.
Fedezze fel a PHP és a MySQL kombinációját, tanulja meg, hogyan könnyítik meg a modern webhelyek készítését, és tanulja meg, hogyan adhat hozzá JavaScript-képességeket ezekhez a technológiákhoz, lehetővé téve csúcstechnológiás alkalmazások létrehozását.
Ez az útmutató minden technológiát külön-külön megvizsgál, bemutatja, hogyan lehet a PHP-t, a MySQL-t és a javascriptet egyetlen egésszé kombinálni, képet ad a legmodernebb webes programozási koncepciókról. Az egyes fejezetekben található részletes esettanulmányok és kvízek segítségével a gyakorlatban is átültetheti a tanultakat.

Ez az útmutató segít Önnek:
— elsajátítani a PHP és az objektum-orientált programozás alapjait;
- alaposan tanulmányozza a MySQL-t, kezdve az adatbázisok felépítésével és befejezve az összetett lekérdezések összeállítását;
- olyan weboldalakat készíteni, amelyek PHP-t és MySQL-t használnak az űrlapok és más HTML-komponensek kombinálására;
- megtanulja a javascriptet, kezdve a függvényekkel és az eseménykezeléssel, és a dokumentumobjektum-modellhez (DOM) való hozzáféréssel bezárólag;
— szoftverkönyvtárak és -csomagok használata, beleértve a Smarty rendszert, a PEAR szoftvertárat és a Yahoo! felhasználói felület;
- Ajax-hívásokat kezdeményezhet, és webhelyét rendkívül dinamikus információs környezetté alakíthatja;
- fájlokat, képeket feltölteni a weboldalra és azokkal dolgozni, ellenőrizni a felhasználó által megadott adatokat;
- Gondoskodjon alkalmazásai biztonságáról.

A lekérdezések nem futnak elég gyorsan? Kíváncsi a memórián belüli adatbázis szolgáltatásaira 2014-ben? Eleged van a csalódott felhasználók telefonhívásaiból? Grant Fritchey SQL Server Query Performance Tuning című könyve a válasz az SQL Server lekérdezési teljesítményével kapcsolatos problémákra. A könyv átdolgozásra került, hogy lefedje a legfrissebb teljesítményoptimalizálási funkciókat és technikákat, különös tekintettel az újonnan hozzáadott, memóriában lévő adatbázis-szolgáltatásokra, amelyeket korábban Project Hekaton kódnéven ismertek. Ez a könyv megadja azokat az eszközöket, amelyekre szüksége van ahhoz, hogy a lekérdezéseket a teljesítmény szem előtt tartásával közelítse meg.

Az SQL Server Query Performance Tuning segítségével megismerheti a gyenge teljesítmény okait, hogyan lehet azonosítani és kijavítani őket. Megtanul proaktívnak lenni a teljesítmény alapvonalainak meghatározásában olyan eszközök segítségével, mint a Performance Monitor és az Extended Events. Megtanulod felismerni a szűk keresztmetszeteket, és megszüntetni őket, mielőtt csörög a telefon. Néhány gyors megoldást is megtudhat, de a hangsúly a teljesítményre való tervezésen és a megfelelő megoldáson van, valamint a problémák megoldásán, mielőtt azok bekövetkeznének. Örömet szerezhet a felhasználóknak. Csendesítsd el azt a csengő telefont. Alkalmazza az SQL Server Query Performance Tuning alapelveit és tanulságait a gyakorlatba még ma.

Lefedi a Project Hekaton memóriabeli funkcióit
Segít meghatározni a teljesítmény alapértékeit és nyomon követni azokat
Útmutató a hibaelhárításhoz és a felhasználókat frusztráló szűk keresztmetszetek kiküszöböléséhez
Amit meg fogsz tanulni
— A teljesítmény alapértékeinek megállapítása és ezek követése
— A lassú teljesítményhez vezető szűk keresztmetszetek felismerése és megszüntetése
- Gyorsjavítások telepítése, ha szükséges, hosszú távú megoldások nyomon követése
— A legjobb gyakorlatok alkalmazása a T-SQL-ben a teljesítmény kockázatának minimalizálása érdekében
— A szükséges teljesítményű tervezés gondos lekérdezéssel és indextervezéssel
— Használja ki az SQL Server 2014 legújabb teljesítményoptimalizálási funkcióit
— Ismerje meg az új, memóriában lévő adatbázis-szolgáltatásokat, amelyek korábban Project Hekaton néven voltak kódolva

Az SQL könyv 10 percben egyszerű és praktikus megoldásokat kínál azoknak, akik gyorsan szeretnének eredményt elérni. Mind a 22 leckén keresztül, amelyek mindegyike legfeljebb 10 percet vesz igénybe, mindent megtanul, ami az SQL gyakorlati használatához szükséges. A könyvben található példák alkalmasak IBM DB2, Microsoft Access, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, SQLite, MariaDB és Apache OpenOffice Base rendszerekhez. A szemléltető példák segítenek megérteni, hogyan épülnek fel az SQL utasítások. A tippek rövid utat tesznek a megoldásokhoz. A figyelmeztetések segítenek elkerülni a gyakori hibákat. A megjegyzések további felvilágosítást adnak.

Ebben a cikkben megpróbáltam egyesíteni az összes fő pontot Transzaktálj SQL-t hogy segítse a kezdő adatbázis-programozókat a nyelv elsajátításában, valamint lekérdezések és alkalmazások megírásában a Transact-SQL-ben.

Az adatbázis-programozás, pontosabban a Microsoft SQL Servert futtató adatbázisok nagy népszerűségnek örvendtek, ezért is döntöttem úgy, hogy készítek egyfajta mini referenciakönyvet, amelyben minden fontosabb pont megtalálható magyarázatokkal és természetesen példákkal.

Az SQL lekérdezések írásának vagy adatbázis-objektumok létrehozásának gyakorlásához használhatja az SQL Server Express ingyenes kiadását, az útmutató összeállításának időpontjában a legújabb verzió a Microsoft SQL Server 2014 Express.

Transact-SQL referencia kezdőknek – Referencia leírás

Ez az útmutató így fog kinézni, először adok egy kis tartalomjegyzéket navigációval, majd maga az útmutató kezdődik, minden elemhez megjegyzések, magyarázatok és példák lesznek. Továbbá, ha már részletesen megvizsgáltuk vagy felhasználtuk ezt vagy azt az objektumot vagy műveletet valahol az oldalunk anyagai között, akkor természetesen linkeket helyezek el, hogy részletes példákat lásson, vagy hogyan kell ezt vagy azt a műveletet a gyakorlatban használni. .

Mivel egyszerűen lehetetlen mindent lefedni, ezért ne lepődjön meg, ha itt nem talált valamit. Ez az útmutató ismét a kezdő Transact-SQL programozók, valamint az egyszerű rendszergazdák számára készült, akiknek időnként fel kell tölteniük néhány adatot az SQL-kiszolgálóról.

A T-SQL nyelv részletes tanulmányozásához javaslom, hogy olvassa el a „The T-SQL Programmer's Way. Transact-SQL Language Tutorial ”, amelyben a lehető legrészletesebben, sok példával beszélek a T-SQL nyelvről.

Adatbázis

Még egy kezdő Transact-SQL programozónak is tudnia kell, hogyan kell adatbázist létrehozni vagy megváltoztatni tulajdonságait, ezért mielőtt megnéznénk a táblákat, nézeteket, függvényeket és minden mást, járjuk végig az adatbázis létrehozásának, módosításának és eldobásának folyamatát a Transact-ban. SQL.

Teremtés

Adatbázis létrehozásához a következő lekérdezést kell futtatnia:

ADATBÁZIS-teszt létrehozása

ahol a teszt az adatbázis neve.

Az adatbázis SQL Serveren való létrehozásával kapcsolatos további információkért a Hogyan készítsünk adatbázist MS Sql 2008-ban című anyagban beszéltünk.

Eltávolítás

Ha törölnie kell egy adatbázist, használja a lekérdezést:

DROP DATABASE teszt

A változás

Az adatbázis paramétereinek megváltoztatásához használhatja a Management Studio grafikus felületét, amelyben minden paraméter részletesen le van írva, vagy küldhet ALTER DATABASE lekérdezéseket, például a teszt adatbázis automatikus tömörítésének engedélyezéséhez használja a következő lekérdezést

ALTER DATABASE teszt SET AUTO_SHRINK ON; --A az ALTER DATABASE teszt kikapcsolásához SET AUTO_SHRINK OFF;

Remélem érthető, ALTER DATABASE paranccsal lehet változtatni, tesztelni a módosítandó adatbázis nevét, SET paranccsal jelezni, hogy megváltoztatjuk az adatbázis paramétereit, AUTO_SHRINK magát a paramétert, BE/KI a paraméter értékét.

Adattípusok

A leggyakoribb és leggyakrabban használt

Pontos számok

  • tinyint - 1 bájt
  • smallint - 2 bájt
  • int - 4 bájt
  • bigint - 8 bájt
  • numerikus és decimális( típus rögzített pontossággal és léptékkel)
  • pénz - 8 bájt
  • kis pénz - 4 bájt

Hozzávetőleges számok

  • float [ (n) ] - a méret n-től függ (n 1 és 53 között lehet, alapértelmezés szerint 53)
  • valódi - 4 bájt

dátum és idő

  • dátum - dátum
  • idő - idő
  • A datetime egy olyan dátum, amely a napszakot a másodperc törtrészében, 24 órás formátumban tartalmazza.

Karakterláncok

  • A char [ (n) ] egy rögzített hosszúságú karakterlánc, ahol n a karakterlánc hossza (1-től 8000-ig). A tárhely mérete n bájt.
  • A varchar [ (n | max) ] egy fix hosszúságú karakterlánc, ahol n a karakterlánc hossza (1 és 8000 között). Ha max adjuk meg, akkor a maximális tárolási méret 2 ^ 31-1 bájt (2 GB), ha pedig n, akkor a bevitt adatok tényleges hossza plusz 2 bájt.
  • szöveg – Változó hosszúságú karakterlánc-adatok, maximális méret 2 147 483 647 bájt (2 GB).
  • Az nchar [ (n) ] egy Unicode fix hosszúságú karakterlánc, ahol n a karakterlánc hossza (1 és 4000 között). A tárhely mérete kétszerese n bájtban kifejezett értékének
  • Az nvarchar [ (n | max) ] egy Unicode fix hosszúságú karakterlánc, ahol n a karakterlánc hossza (1 és 4000 között). Ha max van megadva, akkor a maximális tárhely mérete 2^31-1 bájt (2 GB), ha pedig n, akkor a bevitt adatok tényleges hosszának kétszerese plusz 2 bájt.
  • ntext – Változó hosszúságú karakterlánc-adatok, maximális karakterlánchosszúsággal 1 073 741 823 bájt.

Bináris adatok

  • bináris [ (n) ] - rögzített hosszúságú, n bájt méretű bináris adat, ahol n egy 1 és 8000 közötti érték. A tárolás mérete n bájt.
  • varbinary [ (n | max) ] - változó hosszúságú bináris adat, ahol n értéke 1 és 8000 között lehet. Ha max értéket ad meg, akkor a maximális tárterület 2 ^ 31-1 bájt (2 GB) lesz. Ha n van megadva, akkor a tárhely mérete a bevitt adatok tényleges hossza plusz 2 bájt.
  • kép - változó hosszúságú, 0-tól 2^31-ig terjedő bináris adatok - 1 (2 147 483 647) bájt.

Egyéb

  • xml - xml adatok tárolása. Részletesen megvitattuk a Transact-sql anyagban - xml-lel dolgozva, és ha egyáltalán nem tudja, mi az XML, akkor az XML alapjai kezdőknek című cikkben beszéltünk róla.
  • táblázat - a kapott sorkészlet tárolása.

táblázatok

Ezen az oldalon van elég példa táblák készítésére, hiszen szinte minden SQL-lel kapcsolatos cikkben hozok példát teszttábla készítésére, de az ismeretek megszilárdítása érdekében készítsünk, módosítsunk, töröljünk teszttáblát. Nézzük csak meg, hogyan vannak beállítva a mezőadattípusok a táblákban a Transact-SQL-ben.

Teremtés

CREATE TABLE test_table( IDENTITY(1,1) NOT NULL,--azonosító, integer int, NULL értékek nem megengedettek (50) NULL, --Name, string 50 karakter hosszú, NULL értékek NULL megengedett, --sum , hozzávetőleges számérték, nullák megengedettek NULL, --dátum és idő, nullák megengedettek (100) NULL --karakterlánc 100 karakter hosszú, nulla megengedett) ON GO

Oszlop hozzáadása

ALTER TABLE teszt_tábla ADD prosto_pólus numeric(18, 0) NULL
  • teszt_tábla a tábla neve;
  • add - add hozzá a parancsot;
  • prosto_pole – oszlopnév;
  • pole numeric(18, 0) – az új oszlop adattípusa;
  • NULL – paraméter, amely azt jelenti, hogy ebben a mezőben NULL érték tárolható.

Az adattípus módosítása

Változtassuk meg az imént létrehozott új mező (prosto_pole) adattípusát numeric(18, 0)-ról bigintre, és növeljük a megjegyzésmező hosszát 300 karakterre.

ALTER TABLE teszt_tábla ALTER COLUMN prosto_pole bigint; ALTER TABLE teszt_tábla ALTER COLUMN megjegyzés varchar(300);

Jegyzet! Az SQL Server nem tudja megváltoztatni az adattípust, ha nem lehet konvertálni ezekben a mezőkben az értékeket, ebben az esetben törölnie kell az összes adatot tartalmazó oszlopot, és újból hozzá kell adnia vagy törölnie kell az összes adatot. ezt a mezőt.

Oszlop törlése

Egy adott oszlop eltávolításához használja a drop parancsot, például a prosto_pole mező eltávolításához használja a következő lekérdezést

ALTER TABLE teszt_tábla DROP COLUMN prosto_pole

Táblázat törlése

Egy tábla törléséhez írjunk egy ilyen egyszerű lekérdezést, ahol a teszt_tábla a törölni kívánt tábla

DROP TABLE teszt_tábla

Reprezentáció

Az adatbázisban nagyon hasznos objektum a nézet (VIEW), vagy véleményünk szerint csak egy nézet. Ha valaki nem tudja, akkor a nézet egyfajta tárolt lekérdezés, amely ugyanúgy elérhető, mint egy táblázat. Hozzon létre egy nézetet a teszt_tábla teszttábla alapján, és tegyük fel, hogy nagyon gyakran kell lekérdezést írnunk, például az összeg feltétel szerint több, mint 1000, ezért, hogy ne írjuk le minden alkalommal ezt a lekérdezést a nézetet egyszer, és utána hivatkozunk rá.

Teremtés

CREATE VIEW test_view AS SELECT id, fio, comment FROM test_table WHERE summa > 1000 GO

Hívási példa megtekintése:

SELECT * FROM teszt_nézet

A változás

ALTER VIEW test_view AS SELECT id, fio, comment FROM test_table WHERE summa > 1500 GO

Eltávolítás

DROP VIEW test_view

Rendszernézetek

Az MS SQL Server DBMS rendszerobjektumokkal is rendelkezik, amelyek néha igen hasznos információkat szolgáltathatnak, például rendszernézeteket. Most néhány ilyen ábrázolást elemezünk. Ugyanúgy érhetők el, mint a normál nézetekben ( például válassza ki a *-t a címnézetből)

  • sys.all_objects – tartalmazza az összes adatbázis-objektumot, beleértve az olyan paramétereket, mint a név, típus, létrehozás dátuma és mások.
  • sys.all_columns – a táblázatok összes oszlopát adja vissza részletes jellemzőivel.
  • sys.all_views – Visszaadja az adatbázis összes nézetét.
  • sys.tables – minden adatbázistábla.
  • sys.triggers – minden adatbázis-trigger.
  • sys.databases – minden adatbázis a szerveren.
  • sys.sysprocesses - aktív folyamatok, munkamenetek az adatbázisban.

Valójában nagyon sok van belőlük, így lehetetlen mindent megoldani. Ha szeretné látni, hogyan használhatók a gyakorlatban, akkor ezt már megtettük például az anyagokban

Funkciók

Az MS SQL Server lehetővé teszi olyan függvények létrehozását, amelyek bizonyos adatokat adnak vissza, más szóval a felhasználó maga írhat egy függvényt és használhatja azt később, például amikor olyan értékeket kell beszereznie, amelyek összetett számításokat vagy összetett adatmintavételt igényelnek. Néha csak a kód csökkentése a cél, amikor egy függvényhívás lecseréli a gyakran szükséges értékeket a különböző lekérdezésekben és alkalmazásokban.

Teremtés

FUNKCIÓ LÉTREHOZÁSA teszt_függvény (@par1 bigint, @par2 float) RETURNS varchar(300) AS BEGIN DECLARE @rezult varchar(300) SELECT @rezult=comment FROM teszt_tábla WHERE id = @par1 AND summa > @par2 RETURN @rezult END
  • CREATE FUNCTION - parancs egy függvényobjektum létrehozásához;
  • teszt_függvény - az új függvény neve;
  • @par1 és @par2 bejövő paraméterek;
  • RETURNS varchar(300) – visszatérési típus;
  • DECLARE @result varchar(300) – varchar(300) típusú változó deklarációja;
  • A select utasítás esetünkben a függvény művelete;
  • RETURN @result - visszaküldi az eredményt;
  • A BEGIN és az END a függvénykód eleje és vége.

Példa a lekérdezésben való használatára:

SELECT teszt_függvény(1, 20)

A változás

ALTER FUNCTION test_function (@par1 bigint, @par2 float) RETURNS varchar(300) AS BEGIN DECLARE @rezult varchar(300) SELECT @rezult=comment FROM test_table_new WHERE id = @par1 AND summa >= @par2 RETURN @rezult END

Eltávolítás

DROP FUNCTION teszt_függvény

Beépített funkciók

Amellett, hogy az SQL Server lehetővé teszi a felhasználó által definiált függvények létrehozását, lehetőséget biztosít olyan beépített függvények használatára is, amelyeket a DBMS fejlesztők már megírtak Önnek. Nagyon sok van, ezért a leggyakoribbakat csoportokba osztottam, és igyekeztem röviden leírni.

Rendszerfunkciók

Itt adok néhány példát olyan függvényekre, amelyek különféle rendszeradatokat adnak vissza.

  • @@VERSION – az SQL szerver verzióját adja vissza;
  • @@SZERVERNÉV - a szerver nevét adja vissza;
  • FELHASZNÁLÓ_NAME() - felhasználó bejelentkezési név a szerveren, más szóval, milyen bejelentkezési néven dolgozik ez vagy az a felhasználó;
  • user_name() – adatbázis felhasználónév;
  • A @@SERVICENAME a DBMS szolgáltatás neve;
  • @@AZONOSÍTÓ az utoljára beszúrt azonosító a táblázatba;
  • db_name() az aktuális adatbázis neve;
  • A db_id() az adatbázis azonosítója.

Összesített függvények

Olyan függvények, amelyek értékhalmaz (értékcsoport) alapján számítanak ki valamilyen értéket. Ha ezeknek a függvényeknek a meghívásakor meg kell adni egy oszlopot az eredmény megjelenítéséhez, akkor ezen mező szerint kell az adatokat csoportosítani (csoportosítás szerint). Ezt a konstrukciót részletesen tárgyaltuk a Transact-SQL adatcsoportok csoportosítása szerint cikkben

  • avg - az átlagos értéket adja vissza;
  • count - az értékek száma;
  • max - maximális érték;
  • min – minimális érték;
  • az összeg az értékek összege.

Használati példa:

SELECT COUNT(*) mint count, SUM(summa) mint összeg, MAX(id) mint max, MIN(id) mint min, AVG(summa) mint avg FROM teszt_table

String függvények

Ez a fajta függvény karakterláncokkal működik.

Bal (karakterlánc kifejezés, Karakterek) – a megadott számú karaktert adja vissza a karakterláncban, balról kezdve.

Példa

SELECT LEFT("Példa a bal oldali funkcióra", 10) -- A "Példa" eredménye

Jobb (karakterlánc kifejezés, Karakterek) - a karakterlánc megadott számú karakterét adja vissza jobbról kezdve

Példa

SELECT Right("Példa a jobb oldali függvényre", 10) -- A "Jobb művelet" eredménye

Len (vonal) - a karakterlánc hosszát adja vissza.

Példa

SELECT len("Len példa") -- 28. eredmény

Alsó (vonal) – Olyan karakterláncot ad vissza, amelyben minden karakter kisbetűsre lett konvertálva.

Példa

SELECT alsó("alsó példa") --eredmény "alsó példa"

Felső (vonal) – Egy karakterláncot ad vissza, amelyben az összes karakter nagybetűvé alakul.

Példa

SELECT Upper("Felső példa") -- Eredmény "UPPER EXAMPLE"

Ltrim (vonal) – Olyan karakterláncot ad vissza, amelynél az összes kezdő szóköz nincs.

Példa

SELECT ltrim(" ltrim példa") -- Eredmény "ltrim példa"

Rtrim (vonal) - olyan karakterláncot ad vissza, amelyben az összes jobb oldali szóközt el kell távolítani

Példa

SELECT Rtrim (" Rtrim példa ") -- Eredmény" Rtrim példa"

Cserélje ki (vonal, mit keresünk, mit cserélünk) - a második paraméterben megadott karakterlánc-kifejezés összes előfordulását lecseréli a harmadik paraméterben megadott karakterekre.

Példa

SELECT Replace("Csere példa", "munkahelyen", "REPLACE") -- Eredmény "Példa REPLACE funkció Csere"

Megismételni (vonal, ismétlések száma) - annyiszor ismétli a karakterláncot (első paraméter), ahányszor a második paraméterben megadjuk.

Példa

SELECT Replikáció ("Példa replikáció", 3) -- Eredmény "Példa replikáció példa Replikáció példa replikáció"

fordított (vonal) - mindent fordított sorrendben ad vissza.

Példa

SELECT Fordított ("Fordított példa") -- Eredmény: "esreveR iiccnuf etobar op remirP"

Tér (helyek száma) – A karakterláncot a megadott számú szóközzel adja vissza.

Példa

HELY KIVÁLASZTÁSA (10) -- " " eredmény

Alkarakterlánc (vonal, kezdő pozíció, hány karakter) - egy karakterláncot ad vissza, a harmadik paraméterben megadott szám hosszával, a második paraméterben megadott karaktertől kezdve.

Példa

SELECT Substring("Substring függvény példa", 11, 14) -- A "függvényművelet" eredménye

Matematikai függvények

Kerek (szám, kerekítési pontosság) – a numerikus kifejezést a második paraméterben megadott számjegyekre kerekíti

Példa

SELECT Round(10.4569; 2) -- Eredmény "10.4600"

padló (szám) - Lefelé kerekített egész számot ad vissza.

Példa

SELECT Floor(10.4569) -- "10" eredmény

Mennyezet (szám) - felfelé kerekített egész számot ad vissza.

Példa

SELECT Ceiling (10.4569) -- "11" eredmény

erő (szám, fokozat) - a második paraméterben megadott hatványra emelt számot adja vissza.

Példa

SELECT teljesítmény(5,2) -- "25" eredmény

Négyzet (szám) – négyzetes numerikus értéket ad vissza

Példa

KIVÁLASZTÁS négyzet(5) -- "25" eredmény

abs (szám) – abszolút pozitív értéket ad vissza

Példa

SELECT Abs(-5) -- "5" eredmény

Napló(szám) egy lebegőpontos természetes logaritmus.

Példa

VÁLASZTÁSI napló(5) -- Eredmény "1.6094379124341"

Pi- Pi.

Példa

SELECT Pi() -- "3.14159265358979" eredmény

Rand- egy véletlenszerű lebegőpontos számot ad vissza 0 és 1 között

Példa

SELECT rand() -- "0.713273187517105" eredmény

Dátum és idő funkciók

getdate()- visszaadja az aktuális dátumot és időt

Példa

SELECT Getdate() -- Eredmény "2014-10-24 16:36:23.683"

nap(dátum) egy dátumból adja vissza a napot.

Példa

SELECT Day(Getdate()) -- Eredmény "24"

hónap(dátum) – Egy dátum hónapszámát adja vissza.

Példa

Hónap KIVÁLASZTÁSA(Getdate()) -- "10" eredmény

év (dátum) - egy dátumból adja vissza az évet

Példa

SELECT év(Getdate()) -- Eredmény "2014"

DATEPART(dátum szakasz, dátum) - a megadott szakaszt adja vissza a dátumtól (DD,MM,YYYY stb.)

Példa

DÁTUM RÉSZ KIVÁLASZTÁSA(HH,GETDATE()) -- "10" eredmény

Isdate (dátum) - ellenőrzi a megadott kifejezést, ha az dátum

Példa

SELECT Isdate(GETDATE()) -- "1" eredmény

Funkciókonverzió

Öntvény (kifejezés adattípusként) egy olyan függvény, amely az egyik típust a másikra konvertálja. A példában a float típust int-re konvertáljuk

Példa

SELECT CAST(10,54 mint int) --eredmény 10

Alakítani – (adattípus, kifejezés, dátumformátum) egy olyan függvény, amely az egyik adattípust egy másikra konvertál. Nagyon gyakran használják a dátum konvertálására, miközben a harmadik opcionális paramétert - a dátumformátumot - használják.

Példa

SELECT GETDATE(), CONVERT(DATE, GETDATE(), 104) --Eredmény --2014-10-24 15:20:45.270 - nincs konverzió; --2014-10-24 átalakítás után.

Táblázat funkciók

Azért jönnek létre, hogy adatokat kapjanak tőlük, mint táblázatokból, de különféle számítások után. A táblafüggvényekről részletesen a Transact-sql - Táblafüggvények és ideiglenes táblák anyagban beszéltünk

Teremtés

--függvényünk neve CREATE FUNCTION fun_test_tabl (--bejövő paraméterek és típusuk @id INT) --visszatérő érték, azaz. táblázat RETURNS TABLE AS --azonnal visszaküldi az eredményt RETURN (--magát a lekérdezést vagy néhány számítást SELECT * FROM teszt_tábla ahol id = @id) GO

A változás

--függvényünk neve ALTER FUNCTION fun_test_tabl (--bejövő paraméterek és típusuk @id INT) --visszatérő érték, azaz. táblázat RETURNS TABLE AS --azonnal visszaküldi az eredményt RETURN (--magát a lekérdezést vagy néhány számítást SELECT * FROM teszt_tábla ahol id = @id és összeg > 100) GO

Eltávolítás

DROP FUNCTION fun_test_table

Mint látható, az ilyen függvények létrehozásához, módosításához vagy törléséhez ugyanazokat az operátorokat használjuk, mint a normál függvényeknél, a különbség csak abban van, hogy a függvény milyen típust ad vissza.

Példa ennek a függvénynek a meghívására

SELECT * FROM fun_test_table(1)

Eljárások

Eljárások Az SQL utasítások halmaza, amelyeket egyszer fordítanak le, és függvényekhez hasonlóan különböző paramétereket is felvehetnek. Számítások egyszerűsítésére, csoportos műveletek végrehajtására szolgál.

Teremtés

ELJÁRÁS LÉTREHOZÁSA sp_teszt_eljárás (@id INT) AS --declaring változók DECLARE @sum FLOAT --SQL utasítások SET @sum = 100 UPDATE test_table SET summa = summa + @sum WHERE id = @id GO

A változás

ALTER PROCEDURE sp_test_procedure (@id int) AS --declaring változók DECLARE @sum float --SQL utasítások SET @sum = 500 UPDATE test_table SET summa = summa + @sum WHERE id = @id GO

Eltávolítás

ELJÁRÁS ELLENŐRZÉSE sp_test_procedure

Eljárás felhívás

Különböző módon hívhatja, például:

EXECUTE sp_test_procedure 1 --vagy EXEC sp_test_procedure 1

Ahol EXECUTE és EXEC eljáráshívás, sp_test_procedure rendre az eljárásunk neve, 1 paraméterérték

Rendszereljárások

Rendszereljárások eljárások különféle adminisztrációs műveletek végrehajtására mind a kiszolgálón lévő objektumokon, mind magának a szervernek a konfigurációján. Meghívásuk ugyanúgy történik, mint a közönséges eljárások, de bármely adatbázis kontextusában.

Nagyon sok van belőlük, ezért csak néhány példát mondok.

sp_configure- eljárás a DBMS kernel konfigurációjának megjelenítésére és módosítására. Az első paraméter a konfigurációs paraméter neve, a második paraméter az érték.

Példa

Módosítsa az EXEC sp_configure "Ad Hoc Distributed Queries"1 paraméter értékét, konfigurálja újra --apply EXEC sp_configure -- egyszerűen tekintse meg az összes paraméter értékét

ahol az „Ad Hoc Distributed Queries” a paraméter neve, 1, illetve a módosítani kívánt érték, az újrakonfigurálás a beírt értéket fogja alkalmazni.

A gyakorlatban ezt az eljárást a Transact-SQL-ben a Cross-adatbázis lekérdezésben alkalmaztuk

sp_executesql- dinamikusan generálható Transact-SQL utasítást vagy utasításkészletet hajt végre. Ezt az eljárást alkalmaztuk a Transact-SQL-ben lévő táblában lévő anyagadatok változásainak naplózásakor

Példa

EXECUTE sp_executesql N"SELECT * FROM teszt_tábla WHERE id = @id", N"@id int", @id = 1

Ahol az első paraméter az sql utasítás (Unicode string), a második az sql utasításba beépített összes paraméter definíciója, a harmadik a paraméterek értéke.

sp_help– részletes információkat ad vissza bármely adatbázis-objektumról.

Példa

EXECUTE sp_help "teszt_tábla"

sp_rename– átnevez egy objektumot az adatbázisban. Használható táblák, indexek, oszlopnevek átnevezésére táblákban Nem ajánlott ezt az eljárást használni felhasználói eljárások, triggerek, függvények átnevezésére.

Példa a táblázat átnevezésére

EXEC sp_rename "teszt_tábla", "teszt_tábla_új"

ahol az első paraméter a régi nevű objektum, a második paraméter pedig az objektum új neve.

Példa egy táblázat oszlopának átnevezésére

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

A harmadik paraméter azt jelzi, hogy az oszlop átnevezése folyamatban van.

kiváltók

Kioldó normál eljárás, de az esemény hívja meg, nem a felhasználó. Egy esemény lehet például egy új sor beszúrása a táblába (beszúrás), a táblázatban lévő adatok frissítése (frissítés), vagy adatok törlése egy táblából (törlés).

Teremtés

CREATE TRIGGER trg_test_table_update ON test_table for UPDATE -- törölni is lehet, beszúrni AS BEGIN --sql utasításokat UPDATE END GO esetén

A változás

ALTER TRIGGER trg_test_table_update ON test_table for insert -- is törölheti, frissítheti AS BEGIN --sql utasításokat beszúrás esetén END GO

Eltávolítás

DROP TRIGGER trg_test_table_update

Bekapcsolni kikapcsolni

--disable DISABLE TRIGGER trg_test_table_update ON teszttábla; --enable TRIGGER ENGEDÉLYEZÉSE trg_test_table_update ON teszttábla;

A triggerekről a cikkben beszéltünk - Hogyan hozzunk létre triggert a Transact-SQL-ben.

Indexek

Ez egy adatbázis-objektum, amely javítja az adatkeresési teljesítményt azáltal, hogy egy adott mező szerint rendezi az adatokat. Ha levonunk egy hasonlatot, akkor például sokkal könnyebb és gyorsabb bizonyos információkat keresni egy könyvben a tartalomjegyzéke alapján, mintha nem lenne tartalomjegyzék. Az MS SQL Server DBMS-ben a következő típusú indexek léteznek:

Klaszteres index- ezzel az indexszel a táblázat sorai az adott kulccsal vannak rendezve, azaz. megadott mezőben. Ez a típusú index egy táblához az MS SQL Serverben csak egy lehet, és az MS SQL 2000-től kezdve automatikusan létrejön, amikor az elsődleges kulcs (PRIMARY KEY) megadásra kerül a táblában.

Nem klaszterezett index– ilyen típusú index használatakor az index a megadott mező szerint rendezett sorindexeket tartalmaz, nem magukat a sorokat, aminek köszönhetően a kívánt sor gyorsan megkereshető. Egy táblázatnak több ilyen indexe is lehet.

Oszloptári index- ez az indextípus azon a technológián alapul, hogy a táblázat adatait nem sorok, hanem oszlopok formájában tárolják (innen ered a név), egy táblának egy oszloptári indexe lehet.

Az ilyen típusú indexek használatakor a tábla azonnal csak olvashatóvá válik, vagyis többé nem lehet adatokat hozzáadni vagy módosítani a táblában, ehhez ki kell kapcsolni az indexet, adatokat kell hozzáadni / módosítani, majd kapcsolja be újra az indexet.

Az ilyen indexek a raktárakban használt nagyon nagy adathalmazhoz alkalmasak.

A csoportosítást használó összesítő függvényeket használó műveletek sokkal gyorsabbak (többször is!) ilyen index jelenlétében.

A Columnstore index az SQL Server 2012-től kezdődően érhető el az Enterprise, Developer és Evaluation kiadásokban.

Teremtés

Klaszteres index

CLASZTERES INDEX LÉTREHOZÁSA idx_clus_one ON test_table(id) GO

Ahol a CREATE CLUSTERED INDEX egy fürtözött index létrehozására szolgáló utasítás, az idx_clus_one az index neve, a test_table(id) a tábla és a rendezés kulcsmezője.

Nem klaszterezett index

INDEX LÉTREHOZÁSA idx_no_clus ON test_table(summa) GO

Oszloptári index

CREATE oszloptár INDEX idx_columnstore ON test_table(date_create) GO

Leállitás

--disable ALTER INDEX idx_no_clus ON test_table DISABLE --enable, rebuild ALTER INDEX idx_no_clus ON test_table REBUILD

Eltávolítás

DROP INDEX idx_no_clus ON test_table GO

Kurzorok

Kurzor - ez egyfajta adattípus, amelyet főleg eljárásokban és triggerekben használnak. Ez egy szabályos adathalmaz, pl. lekérdezés eredménye.

Példa (minden az eljárás kódjában van)

Változók deklarálása DECLARE @id BIGINT DECLARE @fio VARCHAR(100) DECLARE @summa FLOAT --kurzor deklarálása DECLARE test_cur CURSOR FOR SELECT id, fio, summa FROM teszt_tábla --kurzor megnyitása OPEN test_cur --a kurzor első sorának beolvasása --és írja be őket a FETCH NEXT FROM FROM test_cur INTO @id, @fio, @summa változókba -- futtassa a ciklust, amíg a kurzor sorai el nem fogynak, WHILE @@FETCH_STATUS = 0 BEGIN -- mindegyikhez végrehajthatunk sql utasításokat a ciklus iterációja -- .................SQL utasítások .................. --olvassa el a következő sorát a kurzor FETCH NEXT FROM test_cur INTO @ id , @fio, @summa END -- kurzor bezárása CLOSE test_cur A test_cur FELTÉTELÉSE

A Kurzorok és hurkok használata a Transact-SQL-ben című anyagban részletesen beszéltünk a kurzorokról.

DML lekérdezések

DML (Adatkezelési nyelv) olyan SQL utasítások, amelyek adatokat manipulálnak. Ide tartozik a kiválasztás, frissítés, beszúrás, törlés.

KIVÁLASZTÁS

Példa

SELECT * FROM teszt_tábla

FRISSÍTÉS

Az adatok frissítésére szolgál

Példa

A táblázat összes sora frissül UPDATE teszt_tábla SET summa=500 --csak a 10-nél nagyobb azonosítójú sorok frissülnek. UPDATE test_table SET summa=100 WHERE id > 10

BESZÁLLÍTÁS

Operátor az adatok hozzáadásához

Egy sor hozzáadása INSERT INTO test_table (fio, summa, date_create, comment) VALUES ("teljes név",100, "10/26/2014", "tesztrekord") --tömeges hozzáadás az INSERT INTO teszt_tábla SELECT fio lekérdezés alapján, summa, date_create , comment FROM teszt_tábla

TÖRÖL

Ezzel az operátorral adatokat törölhet.

Példa

A teljes tábla törlése DELETE teszt_tábla -- csak a DELETE teszt_tábla feltételnek megfelelő sorok törlése WHERE összeg > 100

Ez az, az útmutatónak vége! Remélem segített valamilyen módon. Sok szerencsét!

A szerzőtől: teáskannának hívtak? Nos, ez javítható! Valaha minden szamovár teáskanna volt! Vagy valaha minden profi szamovár volt? Nem, megint baj van! Általában a MySQL kezdőknek.

Miért van szükség a dumáknak a MySQL-re?

Ha komolyan össze akarja kötni életét az Internettel, akkor a „web” legelső lépéseinél azonnal találkozni fog ezzel a DBMS-sel. A MySQL nyugodtan nevezhető "teljes internet" adatbázis-kezelő rendszernek. Egyetlen komolyabb vagy kevésbé komoly erőforrás sem nélkülözheti, minden tárhely adminisztrációs paneljén jelen van. És legfőképpen a népszerű CMS-ek, sőt a "saját készítésű" motorok is az ő részvételével készülnek.

Általában nem nélkülözheti ezt a platformot. De ennek tanulmányozásához megfelelő megközelítésre, megfelelő eszközökre, és ami a legfontosabb, vágyra és türelemre is szüksége lesz. Remélem elege van az utolsó összetevőkből. És készülj fel arra, hogy az agyad felforr, és gőz ömlik ki a fejedből, mint egy igazi vízforralóból

De a MySQL csak akkor olyan nehéz a dumák számára, ha rosszul kezdik megtanulni. Nem fogunk elkövetni ilyen hibát, és a kezdetektől fogva kezdjük az ismerkedést ezzel a technológiával.

Alapfogalmak

Először is nézzük meg az alapvető fogalmakat, amelyeket ebben a kiadványban megemlítünk:

Az adatbázis (DB) a DBMS fő alkotóegysége. Az adatbázis táblákat tartalmaz, amelyek oszlopokból és rekordokból (sorokból) állnak. A metszéspontban kialakított cellák egy bizonyos típusú strukturált adatokat tartalmaznak.

DBMS (adatbázis-kezelő rendszer) - az adatbázis-adminisztrációhoz szükséges összes szoftvermodul készlete.

Az SQL egy strukturált lekérdezési nyelv, amellyel a fejlesztő "kommunikál" a DBMS magjával (szerverével). Mint minden programozási nyelvnek, az SQL-nek is megvan a maga szintaxisa, parancs- és operátorkészlete, valamint támogatott adattípusai.

Úgy gondolom, hogy az elméleti tudás elég ahhoz, hogy elinduljunk. Az elméletben hiányzó hézagokat gyakorlattal „befestjük”. Most a megfelelő szoftvereszköz kiválasztása marad.

A megfelelő eszköz kiválasztása

Eléggé "ásva" a kezdőknek szánt MySQL shellek teljes kínálatában, rájöttem, hogy ezek egyszerűen nem léteznek. Minden DBMS adminisztrációs szoftvertermékhez már telepített adatbázis-kiszolgáló szükséges. Általában ismét úgy döntöttem, hogy nem találok fel „robogót”, és a hazai Denwer csomag mellett döntöttem. Letöltheti a hivatalos webhelyről.

Már tartalmazza a DBMS összes összetevőjét, lehetővé téve a kezdő számára, hogy egy egyszerű és érthető telepítés után azonnal megkezdje a gyakorlati ismerkedést a MySQL-lel. Ezenkívül a Denwer számos további eszközt tartalmaz, amelyek egy kezdő fejlesztő számára szükségesek: egy helyi szerver, a PHP.

Első lépések

Az "úriember" készlet telepítési folyamatát nem írom le, mivel ott minden automatikusan történik. A telepítés megkezdése után már csak a szükséges gombok megnyomására van ideje. Pont az, amire szüksége van a bábokhoz készült MySQL-változatban.

Amikor a telepítési folyamat véget ért, indítsa el a helyi szervert, és várjon néhány másodpercet. Ezután írja be a localhost parancsot a böngésző címsorába.

Az oldalon "Hurrá, sikerült!" kövesse a képen látható linkek egyikét. Ezt követően a phpMyAdmin oldalra kerül – az adatbázisok adminisztrálására szolgáló shell.

A http://downloads.mysql.com/docs/world.sql.zip hivatkozásra kattintva letölthet egy tesztadatbázis példáját a hivatalos MySQL webhelyről. Ismét lépjen a phpMyAdmin oldalra, a felső főmenüben lépjen az "Importálás" fülre. Az "Importálás az aktuálisba" ablak első szakaszában ("Importálandó fájl") állítsa be az értéket "A számítógép áttekintése" értékre.

Az Intéző ablakban válassza ki a letöltött mintaadatbázist tartalmazó archívumot. Ne felejtsen el az OK gombra kattintani a főablak alján.

Azt tanácsolom, hogy még ne változtassa meg a megadott paraméterértékeket. Ez az importált forrásadatok helytelen megjelenítéséhez vezethet. Ha a phpMyAdmin rendszer olyan hibát adott, hogy nem ismeri fel az adatbázis-tömörítési algoritmust, akkor csomagolja ki és ismételje meg a teljes importálási folyamatot az elejétől.

Ha minden jól ment, akkor felül megjelenik egy programüzenet, hogy sikeres volt az importálás, balra pedig az adatbázisok listájában van egy másik (szó).

Nézzük meg belülről a felépítését, hogy tisztábban tudd elképzelni, mivel kell majd megküzdened.

Kattintson a kezdőknek szánt MySQL adatbázis nevére. Alatta megjelenik azon táblázatok listája, amelyekből ez áll. Kattintson valamelyikre. Ezután lépjen a legfelső "Struktúra" menüpontra. A fő munkaterület a táblázat szerkezetét jeleníti meg: minden oszlopnév, adattípus és attribútum.