Vaata SQL-i otsingut kõik tabelid. Lihtsad SQL taotlused - lühike abi ja näited

Alustame elementaarsete päringutega. Aga ilma nendeta? Kõige lühem vorm SQL päringja tõlgib kui "ma tahan saada kõik andmed selle tabeli." Järgmise päringu tulemus on kõik dokumendid kõigi väljadega D_STAFF-tabeli väljadega.

Vali * d_staffist

Sisestage koolitusprogrammi SQL päring.

Valige vasakul asuvas Exploreris [SQL] vajutage [SQL nuppu] parempoolse loendi kohal, sisestage päring ja vajutage uuesti [SQL nuppu]. Pärast päringu täitmise kinnitamist näeb nimekiri selliseks järgmiselt. Juhul, kõik on lihtsam: sisestage lihtsalt SQL päring vastavas valdkonnas ja klõpsake [RUN].


Kõige lihtsama SQL päringu tegemise tulemus.

Kasutage (*) pärast operaator valibLoomulikult on see mugav, eriti kui see ei ole teada, millised on tabelis olevad väljad, aga ka kulukaid struktuure, mis salvestavad päringu tulemus, kulutatud üsna palju "tarbetut" mälu ja täitmise aeg Väga päringu kasvab ainult. Järgmine valik on täpselt sama eelistatav, kui vajate teavet ainult umbes fi. Töötaja ja selle kogemus. Tõlkimine selle kohta: "Ma tahan teada ainult seda ja see on kõik tabelist ..."

Valige S_NAME, S_EXPERSEENT D_STAFFFF

Viimase SQL päringu tulemus on märgatavalt vähem ruumi "laius".


Valige konkreetsete tabeli väljade väärtused.

2. samm. SQL-i taotlus lihtsa valikukriteeriumiga

Lihtsaimad taotlused on praktiliselt praktiliselt rakendatavad, kuna "tõmmata" absoluutselt kõik kindlaksmääratud tabeli kirjed ja seal võib olla sadu tuhandeid. DBMS võib lihtsalt keelduda sellise taotluse täitmisest ja muutmälu Kliendi masina ei saa olla elementaarne. Mida teha selliste taotluste tulemustega, isegi kui nad seda nõuavad õigesti, ei ole alati selge, kuigi mõned lähevad. Selleks, et kehtestada vajalikud kannete valiku piirangud, kasutatakse märksõna SQL-is. Allpool olev päring valib ainult töökogemusega töötajad vähem kui 5 aastat.

Valige S_NAME, S_EXPERSENTIFY D_STAFFFist, kus S_Experience


Kasutades lihtne kriteerium Dokumentide valik.

Samm 3. SQL-i taotlus komposiitvaliku kriteeriumiga

Mis on vaja komposiitide valikukriteeriumid Records, seletada, ma ei arva vaja. Sama puhul, mida ja taotlused lihtsate kriteeriumidega. Tingimused kombineeritakse loogikaoperatsioonid konjunktsioonid ja düsivus (Operaatorid "ja" (ja) ja "või" või "(või)) ning rühmitatakse sulgudes. Järgnev taotlus tagastab rekordi töötajate kohta, kellel on vähem kui 5-aastased kogemused ja nende positsiooni täiendava piiranguga.

Valige S_NAME, S_EXPEXPIENTIFY, S_POSITION D_STAFFF, kus (d_staff.s_position 20) ja d_staff.s_experience


Kasutades keeruline kriteerium Dokumentide valik.

Samm 4. Operaatori vahel

Operaatori vahel lihtsustab intervalli määratleva kriteeriumide kirjeldamise süntaksi lubatud väärtused. Allpool 3 ja 7 asemel oleks võimalik kirjutada d_staff.s_experience\u003e \u003d 3 ja d_staff.s_experience<=7 . Первый вариант способствует наглядности запроса – это раз, поиск на стороне СУБД может выполняться по отдельному алгоритму, специально оптимизированному для подобного вида ограничений – это два.

Valige S_NAME, S_EXEXPIENTIFY, S_POSITION D_STAFFF-i, kus (d_staff.s_position 20) ja d_staff.s_experience vahemikus 3 kuni 7


Kasutades operaatori vahel.

5. samm

See imeline operaator võimaldab teil kehtestada tekstiväljade väärtuste piiranguid kasutades malle. Ma ei selgita süntaksi, ma arvan, et näiteks ja nii et kõik on selge. Me otsime töötajaid, f.o.o. Algab "Alates", keskel peaks vastama "Võll" ja lõpetage kõik "Ich". Mõnes DBMSis saab kasutada ka märksõna ka kuupäeva ja kellaaja väärtustega.

Valige S_NAME D_STAFFFFist, kus S_Name nagu "S%" ja S_Name nagu "% müük%" ja s_name nagu "% ich"

Valige S_Name d_staffast, kus S_Name nagu "C% Wall% ich"


Kasutage nagu operaator.

6. samm. Tabelite ja väljade pseudonüümid

Kasutatakse tabelite ja väljade päringu nimes pseudonüümid. Kuidas seda teha - allpool näidatud. Miks see on tehtud - kuvatakse järgmistes etappides, sealhulgas etapis 7 ja see näide illustreerib kõige ilmsemat kasutage varjunimed SQL-is - taotluse tulemuste registreerimine vastavalt tajude mugavuse nõuetele tema isiku poolt. Et määrata pseudonüümi tabeli või väljade SQL, nagu märksõna kasutatakse. Päringu (tabeli pealkiri) tulemus selles valikus on selle aruande tegemiseks sobivam.

Valige S_NAME AS töötaja, S_Experience AS [töökogemus], S_POSITION asendina D_STAFFFI Personal


Tabeli pseudonüümide ja väljade kasutamine.

7. samm. Suhe "Chief - allutatud"

See näide lõpetab SQL-i taotluste uurimise esimesed sammud on kõige raskem. Siin oleme "programmeerimine" väljastamise nimekirja töötajate oma otsese juhtimise. Keerulisus on see, et need ja nende ja teised salvestatakse samas tabelis ja siin ilma varjunimeta ei saa seda teha. DBMS-i päringu töötlemise ajal pääseb juurde D_STAFF-lauale, nagu oleks kaks erinevat tabelit (pseudonüümide ja juht), et kombineerida arvestust üheks kohus Põhineb suhe "Chief - allutatud". Suhe on simuleeritud järgmiselt: S_CHIEF_ID välja väärtus alluvates vastab XD_IID-i väärtuse väärtusele.

Valige Staff.S_NAME AS alluv, personali.S_Positsioon AS [alluva asukoht], Chief.s_Name Nagu Head, Chief.S_Positsioon AS [pea positsioon] alates D_Staff AS töötajad, D_Staff as comper kus staff.s_chief_id \u003d chief.xd_iid


Hierarhia "Head-ori" saamine SQL-i laua aliase abil.

Iga veebiarendaja peaks teadma SQL-i andmebaaside taotluste kirjutamiseks. Ja kuigi phpmyadmin ei ole ühtegi tühistatud, on sageli vajalik oma käte värvimiseks madala tasemega SQL-i kirjutamiseks.

Sellepärast oleme koostanud lühikese ekskursiooni SQL põhitõdesid. Alustame!

1. Tabeli loomine

Loo tabeli juhendamine on mõeldud tabelite loomiseks. Argumentidena tuleks täpsustada veergude nimi ja nende andmeliikide nimi.

Looge lihtne tabel nime järgi kuu.. See koosneb kolmest veergust:

  • id - kuude arv kalendriaastal (täisarv).
  • nimi. - kuu nimi (string, maksimaalselt 10 tähemärki).
  • päeva. - päevade arv sel kuul (täisarv).

See on see, kuidas vastav SQL päring näeb välja nagu:

Loo tabeli kuu (ID int, nimi varchar (10), päeva Int);

Samuti on tabelite loomisel soovitatav lisada ühe veergu esmane võti. See hoiab dokumente ainulaadsete ja kiirendada proovi taotlusi. Lase meie nimel kuu nimi on unikaalne (veerg nimi.)

Loo tabeli kuu (ID INT, nimi varchar (10), päeva INT, esmane võti (nimi));

päev ja aeg
AndmetüüpKirjeldus
Kuupäev.Kuupäeva väärtused
Kuupäev Kellaaeg.Kuupäev ja kellaaeg väärtused kuni piparmündi
Aega.Aja väärtused

2. Stringi sisestamine

Nüüd täitkem meie laud monhs. Kasulik informatsioon. Kirjete lisamine tabelisse tehakse sisestamise juhendi kaudu. Selle juhendi salvestamiseks on kaks võimalust.

Esimene viis ei ole täpsustada nende veergude nimesid, kus andmed lisatakse ja näitavad ainult väärtusi.

See salvestusmeetod on lihtne, kuid ohtlik, kuna ei ole mingit garantiid, et projekti laienemisena ja tabeli muutmisena asuvad veerud samas järjekorras nagu varem. Ohutu (ja samal ajal rohkem tülikas) Salvestamise meetod Sisendjuhend nõuab märget nii väärtuste kui ka veergude järjekorras:

Siin on nimekirja esimene väärtus. Väärtused. Vastab esimesele määratud veeru nimele jne.

3. Andmete kaevandamine tabelitest

Vali avaldus on meie parim sõber, kui me tahame andmebaasi andmeid saada. Seda kasutatakse väga sageli, nii et võtke see osa väga hoolikalt.

Vali avalduse lihtsaim kasutamine on päring, mis tagastab kõik veerud ja read tabelist (näiteks tabelid nime järgi) tähemärki.):

Vali * "tähemärkidest"

Tärni sümbol (*) tähendab, et me tahame saada andmeid kõigist veergudest. Niisiis koosnevad SQL andmebaasid tavaliselt rohkem kui ühest tabelist, on vaja täpsustada märksõna, millele järgneb ruumi läbi ruumi.

Mõnikord me ei taha saada andmeid kõigist veergudest tabelis. Selle asemel, et tärniga (*), peame kirjutama soovitud veergude nimed läbi koma.

Valige ID, nimi kuu pärast

Lisaks tahame paljudel juhtudel, et tulemused oleks järjestatud teatud järjekorras. SQL-is teeme seda tellimusega. See võib saada vabatahtliku modifikaatori - ASC (vaikimisi) kasvavalt või otsib, sorteerimine kahanevalt:

Valige ID, nimi kuu tellimuse nime järgi Desc

Tellimuse kasutamisel veenduge, et see on viimane märge. Vastasel juhul väljastatakse veateade.

4. Andmete filtreerimine

Sa õppinud, kuidas valida andmebaasi kasutades SQL päringu rangelt määratletud veerud, kuid mis siis, kui me peame mõned read? Abile, kus tingimus jõuab päästmiseks, võimaldades meil filtreerida andmeid sõltuvalt seisundist.

Selles päringus valime ainult kuu tabeli kuu.Kui rohkem kui 30 päeva abiga operaator rohkem (\u003e).

Valige ID, nimi kuu pärast, kus päevad\u003e 30

5. Laiendatud andmete filtreerimine. Operaatorid ja või või või või

Varem kasutasime filtreerimise andmeid ühe kriteeriumi abil. Keerulisemate andmete filtreerimise jaoks saate kasutada ja või operaatorid ja võrdlusoperaatorid (\u003d,<,>,<=,>=,<>).

Siin on meil tabel, mis sisaldab nelja parima albumi albumi albumite kogu aeg. Valige need need, kes on klassifitseeritud kivi ja kus müüakse vähem kui 50 miljonit eksemplari. Seda saab hõlpsasti teha operaatori ja nende kahe tingimuse vahel.


Valige * albumidest, kus žanr \u003d "Rock" ja Sales_in_Millions<= 50 ORDER BY released

6. / Veel

Kui toetab ka mitmeid erilisi käske, võimaldades teil kiiresti kasutada kõige sagedamini kasutatavaid taotlusi. Siin nad on:

  • In - on täpsustada tingimused, millestki saab teha
  • Kontrollide vahel, kas väärtus on määratud vahemikus
  • Sarnaselt - konkreetsete mustrite otsimine

Näiteks kui me tahame valida albumite pop ja hing Muusika, saame kasutada ("väärtus1", "väärtus2").

Vali * albumidest, kus žanr on ("Pop", "Soul");

Kui me tahame saada kõik Albumid, avaldatakse aastatel 1975-1985, peame kirjutama:

Vali * albumidest, kus vabastatakse aastatel 1975-1985;

7. Funktsioonid

SQL stoffers funktsioone, mis muudavad erinevaid kasulikke asju. Siin on mõned kõige sagedamini kasutatavad:

  • Count () - tagastab ridade arvu
  • Summa () - tagastab numbrilise veeru kogusumma
  • AVG () - tagastab keskmise väärtuse erinevate väärtuste
  • Min () / max () - saab minimaalse / maksimaalse väärtuse veerust

Et saada viimane aasta meie tabelis me peame kirjutama sellise SQL päringu:

Valige albumidest max (vabastatud);

8. MÄÄRAMISED

Eelmises lõigus õppisime, kuidas teha lihtsaid arvutusi andmetega. Kui me tahame nende arvutuste tulemust kasutada, ei saa me ilma investeerimata taotlusteta teha. Oletame, et me tahame tagasi võtta kunstnik., album ja aastaaasta Vanim album tabelis.

Me teame, kuidas neid konkreetseid veerge saada:

Valige albumitest pärinev kunstnik, album;

Me teame ka, kuidas kõige varasemat aastat saada:

Valige min (vabastatud) albumist;

Kõik, mida vajame, on ühendada kaks taotlust, kasutades kus:

Valige kunstnik, album, vabastatud albumidest, kus vabastatakse \u003d (valige min (vabastatud) albumitest);

9. Tabelite ühendamine

Keerulisemates andmebaasides on üksteisega seotud mitmeid tabelit. Näiteks kaks tabeli videomängude kohta on esitatud allpool ( videomängud.) ja videomängude arendajad ( game_developers.).


Tabel videomängud. Seal on arendaja veerg ( arendaja_id), kuid see sisaldab täisarvu ja mitte arendaja nime. See number on identifikaator ( id) Sobiva arendaja mängu arendaja tabelist ( game_developers.) Sidudes loogiliselt kaks nimekirja, mis võimaldab meil kasutada neile salvestatud teavet nii samal ajal.

Kui me tahame luua taotluse, mis tagastab kõik, mida vajate mängude kohta, saame kasutada sisemist liitumist nii tabelite kõlarite edastamiseks.

Valige video_Games.Name, video_Games.genre, game_Devopers.Name, game_Developers.country alates Video_Games Inner Liitu Game_Developers kohta Video_Games.Developer_id \u003d Game_Developers.id;

See on kõige lihtsam ja tavalisem liitumisliik. On mitmeid muid võimalusi, kuid need kehtivad harvemini juhtudel.

10. Alias.

Kui vaatate eelmise näite, siis märkate, et on kaks veergu nimi.. See segadusse, nii et paigaldame ühe korduvate veergude, näiteks nimi. tabelist game_developers. kutsutakse arendaja..

Samuti võime vähendada taotlust, milles täpsustatakse tabeli nime pseudonüümid: videomängud. Nimetus mängud., game_developers. - devs.:

Valige Mängud.Name, Games.genre, Devs.Name AS arendaja, Devs.country Video_Games AS Mängud Sisemine Liitu mängu_Developers AS Devs On Games.Developer_id \u003d Devs.id;

11. Andmete värskendus

Sageli peame muutma andmeid mõnes rida. SQL-is tehakse seda värskenduse juhendamise abil. Uuenda avaldus koosneb:

  • Tabelid, milles väärtus on asendamiseks;
  • Veergude nimed ja nende uued väärtused;
  • Valitud koos kus liin, mida me tahame uuendada. Kui seda ei tehta, muutuvad kõik jooned tabelis.

Allpool on tabel telesari. TV-seeriaga nende hinnanguga. Kuid tabeli hiilgus väike viga: kuigi seeria Troonide mäng Ja kirjeldatud komöödiana, ei ole ta tegelikult see. Olgem paranda!

Tabel Data TV_Series Update TV_Series Set Genr \u003d "DRAM", kus ID \u003d 2;

12. Kustuta andmed

Lauarea kustutamine SQL-iga on väga lihtne protsess. Kõik, mida vajate, on valida tabel ja string, mida soovite eemaldada. Let's kustutada viimane string eelmise näite tabelis. telesari.. Seda tehakse juhendi abil\u003e Kustuta

Kustuta TV_Series, kus id \u003d 4

Olge kustutamisjuhendi kirjutamisel ettevaatlik ja veenduge, et selline seisund on olemas, vastasel juhul kustutatakse kõik tabelijooned!

13. Kustuta tabel

Kui me tahame kustutada kõik read, kuid jäta tabel ise, siis kasutage kärbitud käsk:

Truncate tabel tabel_name;

Juhul kui me tegelikult tahame kustutada ja andmed ja tabel ise, kasutame Drop käsk:

Laua tabel_name;

Olge nende meeskondadega väga ettevaatlik. Neid ei saa tühistada! / P\u003e

Sellel lõpetame meie SQL Tutorial! Me ei ole rääkinud palju, aga see, mida sa juba tean, peaks olema piisav, et anda teile mõned praktilised oskused teie veebi karjääris.

Jätkame SQL Serveri võimalusi Microsofti ja omakorda meil on komponent TäistekstiotsingVene versioon on " Täistekstiotsing"Ja nüüd leiame välja, miks see on vaja ja kuidas seda komponenti kasutades rakendada SQL Serveris SQL Serveris.

Ja alustame loomulikult täistekstiotsingu aluseid, st Mis see on ja mille jaoks see üldiselt vaja on.

Mis on täistekstiotsing?

Täistekstiotsing - See on tekstiandmete sõnade või fraaside otsimine. Tavaliselt kasutatakse sellist tüüpi otsingut teksti otsimiseks suurel hulgal andmetel, näiteks tabel miljoni või enama ridaga, kuna see on tavalisest otsingust oluliselt kiirem, mida saab rakendada sarnase disaini abil.

Täistekstiotsing hõlmab spetsiaalse indeksi loomist ( see erineb tavalistest indeksitest) Tekst andmed, mis on selline sõnaraamat sõnade, mis on leitud selles andmed.

Täistekstiotsingu kasutamine saate rakendada otsingumootor Dokumendid ( need. Rida) Teie ettevõtte andmebaasi vastavalt või fraasidele. Kuna lisaks oma kiirele tööle on sellel ka võime leida dokumente, st. Hoidke iga leitud rea auastet, teisisõnu, leiate kõige asjakohasemate dokumentide, st Kõige sobivam teie taotlusele.

Full-Text Otsingu funktsioonid MS SQL Server

  • Täisteksti otsing SQL Servers, saate otsida mitte ainult üksikute sõnade või fraaside, vaid ka eesliide väljendidNäiteks seadke sõna või fraasi algus tekst;
  • Võite otsida sõnad Wordformide, näiteks erinevate vormide verbide või nimisõnade ainus ja mitmuses, s.t. kõrval tuletatud väljendeid;
  • Saate luua päringu, et leida sõnu või fraase, mis asuvad teiste sõnade või fraaside kõrval, st väljendid;
  • On võimalus leida konkreetse sõna sünonüümsed vormid (tesaurus), s.o. Näiteks, kui tesaurus on see kindlaks määratud Auto"Ja" Auto"- Need on sünonüümid, siis sõna otsimisel" Auto»Saadud komplekt sisaldab sõna, mis sisaldavad sõna" Auto»;
  • Päringus saate määrata sõnad või fraasid kaalutud väärtusedNäiteks, kui päringus on täpsustatud mõned sõnad või fraasid, siis neid saab määrata tähtsust 0,0 kuni 1,0 ( 1.0 tähendab, et see on kõige olulisem sõna või fraas);
  • Selleks et mitte kaaluda mõningate sõnade otsimisel, mida saate kasutada " loetelu stop sõnad", S.t. Selle loendi kohaselt ei täideta otsingut.

Täistekstiotsingu rakendamiseks MS SQL Server

Enne täistekstiotsingu alustamist peate teadma mitmeid olulisi punkte:

  • Täisteksti otsingu komponendi täieliku tekstiotsingu rakendamiseks ( Täistekstiotsing) tuleb paigaldada;
  • Tabelis võib olla ainult üks täisteksti indeks;
  • Täistekstiindeksi loomiseks peab tabelis olema üks ainulaadne indeks, mis sisaldab ühte veergu ja ei võimalda nullväärtusi. Soovitatav on kasutada unikaalset klastrite indeksit ( või lihtsalt esmane võti), mille esimene veerg peab olema täisarvude tüüp;
  • Täistekstiindeksit saab luua andmeliigiga veergudel: Char, Varchar, Nchar, Nvarchar, Tekst, Ntext, pilt, XML, Varbinary või Varbinary (MAX);
  • Täisteksti indeksi loomiseks peate kõigepealt looma täieliku teksti kataloogi. Alates SQL Server 2008-st on täisteksti kataloog loogiline kontseptsioon, mis tähistab täisteksti indeksite rühma, st. on virtuaalne objekt ja ei kuulu failirühmasse ( on võimalus luua täieliku teksti indeks, kasutades "Master", kus kataloogi saab indeksiga üheaegselt luua, seda meetodit kaalume allpool).

Märge! Rakendada täisteksti otsing I on näites versioon SQL Server 2008 R2. Samuti on tähenda, et täisteksti otsingukomponent on juba installitud, kui mitte, seejärel installige see vastava komponendi, lisades vastava komponendi läbi "SQL Server installi keskus", st. Pane sobiv märk.

Alltoodud näidetes täistekstite kataloogide ja indeksite loomise ja haldamise vahendina kasutan SQL Server Management Studio.

Allikas andmed luua täisteksti otsing

Eeldame, et meil on testbaasi andmebaas ja seal on katsetav tabel, kus on ainult kaks väljad, esimene (ID) on esmane võti ja teine \u200b\u200b(Textdata) on tekstiandmed, mille jaoks me rakendame täielikku -Text otsing..

Loo tabeli testitava (ID int kavatsused (1,1) Ei ole , Textdata Varchar (500) Null, PK_testtable primaarvõimu klastrid (ID ASC))

Näiteks sisaldab see järgmisi andmeid.


Täistekstite kataloogi loomine SQL Serveris

Täisteetse teksti kataloogi loomiseks ja indeksit saab kasutada või SSM-i graafilise liidese või T-SQL juhiseid analüüsida mõlemal viisil.

Tervisekataloogi loomine T-SQL-is

Loo FullText kataloogi TestCatalog koos aktsent_sensitivity \u003d sisse vaikimisi autoriseerimise DBO GO

  • Loo täiuslik kataloog - täistekstite kataloogi loomise käsk;
  • TestCatalog - meie täisteksti kataloogi nimi;
  • Accent_sensitiivsusega (väljalülitamisel) - valikuvõimalus näitab, kas täistekstekst-kataloogis võetakse arvesse täieliku teksti indekseerimise diagrieenmärke. Vaikimisi;
  • Vaikimisi - valik, et täpsustada, et kataloog on vaikimisi kataloogi. Täisteksti indeksi korral kasutatakse vaikimisi kataloogi ilma kataloogi selgesõnaliselt täpsustamata;
  • Autoriseerimise DBO - Määrab täistekstite kataloogi omanik, see võib olla kasutaja või andmebaasi roll. Sisse sel juhul Me märkisime DBO rolli.

Täise teksti kataloogi loomine graafiline liides Management Studio.

Täpne sama täistekstite kataloog saab luua juhtkonna stuudio graafilises liides. Selleks avage andmebaas, mine kausta Storage -\u003e TervisekataloogidKlõpsake selle elemendi parema hiiumi nupule ja valige " Loo täieliku teksti kataloog».


Kataloogi loomise aken avaneb, kus me määrame kataloogi nime ja selle võimalusi.


Täistekstikataloogi muutmine ja eemaldamine SQL Serveris

Kataloogi valikute muutmiseks saate kasutada muudatuste täielikku kataloogiõpet, näiteks teeme meie kataloogi, et võtta arvesse diakriitilisi märke, et me kirjutame SQL-juhendit, mis taastab meie kataloogi uue valikuga.

Alter FullText Kataloog TestCatalog taastab aktsent_sensitivity \u003d off Go

Kataloogi kustutamiseks saate kasutada näiteks T-SQL-juhendit

Drop FullText Kataloog TestCatalog

Kõiki seda saab teha GUI guement stuudios ( properties "kataloogi parameetrite muutmiseks, et kustutada" Kustuta ")

Täisteksti indeksi loomine SQL Serveris

Pärast täieliku teksti kataloogi loomist saate alustada täieliku teksti indeksi loomist. Meie puhul tahame luua täieliku teksti indeksi, kus tegeleb Testitava tekstivälja.

Täistekstiindeksi loomine T-SQL-is

Täistekstiindeksi loomiseks saate kirjutada järgmise SQL-juhendi

Loo FullText indeks testitava (Textdata) võtmeindeks pk_testtable (TESTCATALOG) koos (Change_Tracking Auto) Go

  • Loo täieliku teksti indeksi loomise käsk
  • Testitava (Textdata) - tabel ja kolonn indeksis sisalduvad;
  • Võtmeindeks pk_testtable - katsetatava tabeli ainulaadse indeksi nimi;
  • ON (TESTCATALOG) - näitavad, et täisteksti indeks luuakse TestCatalog täistekstitetaloogis. Kui te seda parameetrit ei täpsusta, luuakse indeks vaikimisi täistekstitetaloogis;
  • Koos (Change_Tracking Auto) - ütleme, et kõik muudatused, mis sisestatakse aluse tabelisse (katsetabel) ilmub automaatselt meie täisteksti indeks, st Automaatne täitmine.

Täisteksti indeksi loomine juhtkonna stuudio GUI-s

Täisteksti indeksit saab luua ja graafilised tööriistad, et see avab täistekstite kataloogi omadusi ja minge objektile " Tabelid või vaated", Valige soovitud laud, väli, ainulaadne indeks ja muutuste jälgimise viis. Meie puhul on meil ainult üks kättesaadav tabel ja üks väli.


Täisteksti indeksi muutmine ja eemaldamine

Vajadusel saate muuta täisteksti indeksi parameetreid. Vahetame tee automaatse käes olevate muudatuste jälgimiseks. Graafilise liidese muutmiseks saate kasutada " Täistekstite kataloogide omadused -\u003e tabelid või vaated", Mida me kasutasime täis-teksti indeksi loomisel.

Või saate kirjutada järgmise koodi

Alter FullText Index testitava Set Change_Tracking \u003d käsiraamat

Täisteksti indeksi kustutamiseks piisab lihtsalt tabeli kustutamisest sama akna täistekstikataloogiga seotud objektide loendist " Täistekstite kataloogide omadused -\u003e tabelid või vaated»


Või kirjutage T-SQL-koodi

Drop FullText indeks testitamisel

Täistekstikataloogi ja indeksi loomine viisardi abil

Nagu ma juba mainisin esimese teksti kataloogi ja indeksit saab luua kapteni abil, st Selleks, et klõpsake selleks hiire parema nupuga lauale, mida me tahame lisada täisteksti otsingusse ja valida " Täisteksti indeks -\u003e Määrake täisteksti indeks».

Märge! Enne seda kustutasin kataloogi ja indeks, mida me eelmistes näidetes loodud.


Selle tulemusena käivitatakse SQL Server Full-teksti indekseerimise viisard.



Seejärel lisatakse veerg, mis lisatakse täisteksti indeksisse.


Seejärel peate valima muutuste jälgimise meetodi.


Märkige kataloogi nimi ja selle valikute nimi, selle loomiseks, sest eeldatakse, et kataloogi ei ole kataloogi, siis me võime seda valida.


Siin saame kohandada täieliku teksti kataloogi täitmise ajakava.


Kataloogi ja indeksi loomine Vajuta " Valmis».


Järgmises aknas näeme toimingute teostamise tulemust täistekstite kataloogi ja indeksi loomiseks. Minu puhul oli kõik edukas.


Seega lõpetasime täieliku teksti kataloogi loomise ja indeksi loomise viisardi abil samal ajal.

Täisteksti taotluste näited

Ma ütlen kohe, et üksikasjalikumalt täisteksti taotlusi loetakse me järgmistes materjalides ja seni, näiteks ja kinnitame, et meie täisteksti otsing töötab, kirjutame paar lihtsat täisteksti taotlust.

Kui mäletate, sisaldab meie katsetatav tabel tehnoloogiate määratlusi, programmeerimiskeeli üldiselt selles valdkonnas seotud sfääride määratlusi. Oletame, et me tahame saada kõik kirjed, kus on mainita Microsoft, et me kirjutame täisteksti taotluse märksõna Sisaldab näiteks:

Vali * testitavatest, kus sisaldab (Textdata "Microsoft")


Meil on tulemus, kuid näiteks me peame seda sortima ka tekst, teisisõnu, millised liinid vastavad meie taotlusele. Selleks kasutame me konteineeritavat funktsiooni, mis asub iga kirje auaste.

Valige tabel1.ID AS ID, Rowrank.Rank AS, Tabel1.TextData alates katsetavast tabelist 1 Sisemine liitu ShowStable (Testitable, Textdata "" Microsoft ") AS tabelis 1.ID \u003d Rowrank. Tellimus Rowrank.rank Desc


Nagu näete, on kinnitatud auaste kinnitatud ja jooned sorteeritakse. Edetabel algoritm ise, kuna lisateavet täistekstiotsingu kohta leiate SQL Serveri elektroonilisest dokumentatsioonist.

See viitab lõpetada, ma loodan, et kõik oli selge, õnne!

Taotlused on kirjutatud ilma varjestuseta hinnapakkumisi, kuna Mysql, Pr SQL. ja Postkast Nad on erinevad.

SQL taotluse: saada kindlaksmääratud (vajalikud) väljad tabelist

Vali ID, Country_Title, Count_meople tabel_NAME

Me saame nimekirja dokumentidest: kõik riigid ja nende elanikkonnast. Soovitud väljade nime tähistab komadega.

Vali * tabel_Name

* Näitab kõiki väljad. See tähendab, et on olemas Kõik Andmeväljad.

SQL-i taotlus: kuvatakse tabelist välja arvatud duplikaadid

Valige tabel_NAME-st drill_title

Me saame loetelu dokumentidest: riigid, kus meie kasutajad asuvad. Kasutajad võivad olla palju ühe riigi. Sellisel juhul on see teie taotlus.

SQL-i taotlus: kuvatakse teatud tingimustel tabelist

Valige ID, Country_Title, City_Title alates Tabel_Name kus Count_people\u003e 100000000

Saame nimekirja dokumentidest: riigid, kus inimeste arv on üle 100 000 000.

SQL Taotlus: Display Records taotluse tabelis

Valige ID, City_Title tabel_NAME tellimuse järgi City_Title

Saame nimekirja dokumentidest: linnad tähestikulises järjekorras. Alguses a, lõpus ya.

Vali ID, City_Title alates Tabel_Name order City_Title Desc

Me saame loetelu dokumentidest: linnad vastupidi ( Desc.). Alguses, I, lõpus A.

SQL päring: arvestuse arvu loendamine

Vali arv (*) tabel_Name

Me saame dokumendi numbri (number) tabelis. Sel juhul puudub loetelu arvestust.

SQL päring: soovitud salvestusala väljund

Vali * Tabel_Name Limit 2, 3

Me saame tabelist 2 (teise) ja 3 (kolmanda) sisenemise. Taotlus on kasulik veebilehtede navigeerimise loomisel.

SQL taotlused tingimustega

Näita kanded tabelist antud tingimusele loogiliste operaatorite abil.

SQL taotluse: Ehitus ja (ja)

Vali ID, City_Title tabel_Name kus riik \u003d "Venemaa" ja õli \u003d 1

Me saame nimekirja dokumentide kohta: Venemaa linnad Ja Neil on juurdepääs õlile. Kui kasutate operaatorit Ja., Pean mõlemad tingimused langema kokku.

SQL taotluse: disain või (või)

Valige id, City_Title pärit tabel_Name kus riik \u003d "Venemaa" või riik \u003d "USA"

Me saame loetelu dokumentidest: kõik Venemaa linnad Või USA. Kui kasutate operaatorit Or.See peaks kokku langema vähemalt ühe seisundi.

SQL päring: disain ja mitte (mitte)

Vali ID, User_login alates Tabel_Name kus riik \u003d "Venemaa" ja mitte clocke_coments<7

Saame nimekirja dokumentidest: kõik Venemaa kasutajad Ja Tehtud MITTE VÄHEM 7 kommentaari.

SQL-i taotlus: punktis b

Vali ID, User_login alates Tabel_Name kus riik ("Venemaa", "Bulgaaria", "Hiina")

Me saame dokumentide loendi: kõik kasutajad elavad ( Sisse.) (Venemaa või Bulgaaria või Hiina)

SQL-i taotlus: mitte disainis (mitte)

Valige id, User_login alates tabel_Name kus riik ei ole ("Venemaa", "Hiina")

Me saame nimekirja dokumentide kohta: kõik kasutajad, kes elavad, ei ole ( Mitte.) (Venemaa või Hiina).

SQL-i taotlus: on null disain (tühi või mitte tühi väärtused)

Valige ID, User_login alates tabel_Name kus olek on null

Me saame loetelu dokumentidest: kõik kasutajad, kus staatust ei ole määratletud. Null on eraldi teema ja seetõttu kontrollitakse seda eraldi.

Valige ID, User_login alates tabel_Name kus riik ei ole null

Me saame nimekirja dokumentide kohta: kõik kasutajad, kus staatus on määratletud (mitte null).

SQL taotluse: nagu disain

Vali ID, User_login alates tabel_Name, kus perekonnanimi nagu "Ivan%"

Saame nimekirja dokumentidest: kasutajad, kellel on perekonnanimi algab kombinatsioonist "Ivan". % Märk tähendab mis tahes arvu mis tahes tähemärki. Märgi leidmiseks peate kasutama sõeluuringut "Ivan \\%".

SQL päring: disaini vahel

Vali ID, User_login alates Tabel_Name kuspalk vahemikus 25000 kuni 50000

Saame nimekirja dokumentidest: kasutajad, kes saavad palka 25 000 kuni 50 000 kaasavale.

Logic operaatorid on väga palju, nii et te uurite SQL Serveri dokumentatsiooni üksikasjalikult.

Komplekssed SQL taotlused

SQL Query: mitme taotluse ühendamine

(Vali ID, User_login alates Tabel_NAME1) Liidu (valige ID, User_login alates tabel_NAME2)

Saame nimekirja dokumentide: kasutajad, kes on registreeritud süsteemis, samuti need kasutajad, kes on registreeritud foorumis eraldi. Liidu käitaja saab kombineerida mitmeid taotlusi. Liidu toimingud nagu valige erinev, see tähendab korduvate väärtuste ära visata. Et saada absoluutselt kõik andmed, peate kasutama liitu kõik operaator.

SQL-i taotlus: max, min, summa, AVG loendamine

Kokkuvõte ühe maksimaalne loenduri väärtus tabelis:

Vali max (loendur) tabel_name

Väljund Üks, minimaalne loenduri väärtused tabelis:

Vali min (loendur) tabel_name

Kõikide meetrite väärtuste toodang tabelis:

Vali summa (loendur) tabel_name

Tabelis keskmine arvesti väärtus:

Vali AVG (loendur) tabel_name

Mõõturite arvu toodang tabelis:

Valige tabel_NAME-st loota (loendur)

Toodang arvestite arvu töökoja number 1 tabelis:

Valige tabel_NAME-st loenge (loendur), kus kontoris \u003d "Shop number 1"

Need on kõige populaarsemad meeskonnad. Soovitatav on kasutada selliseid SQL-taotlusi, kuna programmeerimiskeskkonda ei võrrelda andmete töötlemise kiirusega kui SQL Server ise oma andmete töötlemisel.

SQL Päring: grupeerimisdokumendid

Valige mandril, summa (Country_area) Continendi osariigist

Saame nimekirja kirjete: koos nime mandri ja summa ruutude kõigi nende riikide. See tähendab, et kui on olemas viide raamat riikides, kus iga riik on oma piirkonnas, siis kasutades rühma disaini järgi, saate teada iga mandri suuruse (põhineb mandrite rühmitamisel).

SQL-i taotlus: Mitme tabeli kasutamine alias (alias) kaudu

Valige O.Order_NO, O.Mount_paid, C.com tellimused o, kliendina nagu kus o.custno \u003d c.custno ja c.city \u003d "tyumen"

Me saame nimekirja kirjete kohta: tellimused ostjatelt, kes elavad ainult tyumenis.

Tegelikult on päringu nõuetekohaselt prognoositav andmebaas kõige sagedasem, nii et MySQL-is tutvustati spetsiaalset operaatorit, mis töötab mõnikord kiiremini kui eespool nimetatud kood.

Valige O.ORDER_NO, O.Mount_paid, Z.Count_paid, Z.CoUny tellimustest OS-i vasakule Liitu kliendiga AS Z ON (Z.CUSTNO \u003d O.Custno)

Sisestatud alampiirkond

Vali * tabel_Name kus palk \u003d (valige max (palk) alates töötaja)

Me saame ühe rekordi: Kasutaja teave maksimaalse palgaga.

Tähelepanu! Sisestatud alamvool on SQL Servers'i üks kõige kitsastest istmetest. Koos oma paindlikkuse ja võimsusega suurendavad nad ka oluliselt kaadrit serveris. Mis viib teiste kasutajate katastroofilise aeglustumiseni. Lisatud päringute puhul on väga sagedased rekursiivsed kõned. Seetõttu soovitan ma tungivalt mitte kasutada investeeritud taotlusi, vaid jagavad neid väiksemaks. Või kasutage ülalkirjeldatud vasakpoolset liitumist kombinatsiooni. Lisaks sellele tüübile on taotlused turvarikkumise kõrgendatud fookus. Kui otsustate kasutada sisestatud subqueriesit, siis on vaja neid kujundada väga hoolikalt ja esialgse algab andmebaasi koopiate tegemisel (katsebaasid).

SQL taotlused andmete muutmisel

SQL-i päring: sisestage

Juhendamine Sisestage. Lubage teil sisestada plaate tabelis. Lihtsad sõnad, luua rea \u200b\u200bandmetega tabelis.

Valiku number 1. Kasutatakse sageli juhiseid:

Sisestage table_name (ID, User_login) väärtused (1 "Ivanov"), (2, "Petrov")

Laual " tabel_name."Lisatakse kohe 2 (kaks) kasutajat.

Valiku number 2. See on mugavam kasutada stiili:

Sisestage tabel_NAME komplekt ID \u003d 1, User_login \u003d "Ivanov"; Sisestage tabel_NAME SET ID \u003d 2, User_login \u003d "Petrov";

Sellel on oma eelised ja puudused.

Põhilised puudused:

  • Paljud väikesed SQL päringud teostatakse veidi aeglasemalt kui üks suur SQL päring, kuid muud taotlused seisab teenindusjärjestuses. See tähendab, et kui suur SQL-päring lõpetatakse 30 minutit, siis kogu selle aja jooksul suitsetab ülejäänud taotlused bambusest ja oodake omakorda.
  • Taotlus on massiivne kui eelmine valik.

Peamised eelised:

  • Väikeste SQL-i taotluste ajal ei ole teised SQL-i taotlused blokeeritud.
  • Mugavus lugemisel.
  • Paindlikkus. Selles teostuses ei saa te konstruktsiooni järgida, vaid lisage ainult vajalikud andmed.
  • Sarnaselt arhiivide moodustamisel saate ühe rea kopeerida ja käivitada see käsurea (konsooli) kaudu, ei taastata seeläbi kogu arhiivi taastamist.
  • Salvestusstiil on sarnane värskenduse juhendamisega, mida on lihtsam meeles pidada.

SQL Taotlus: Uuenda

Uuenda tabel_NAME komplekt kasutaja_login \u003d "Ivanov", User_surname \u003d "Ivanov" kus id \u003d 1

Laual " tabel_name."ID-numbriga kirjetel \u003d 1 muudetakse kasutaja_login ja User_surname väljade väärtused määratud väärtusteks.

SQL-i päring: Kustuta

Kustuta tabel_NAMEst, kus id \u003d 3

Tabel_NAME tabel kustutatakse numbriga 3 ID-ga.

  1. Kõik välja nimed on soovitatav kirjutada väikeste tähtedega ja vajadusel jagada need läbi sunnitud ruumi "_" ühilduvuse erinevate programmeerimiskeelte, nagu Delphi, Perl, Python ja Ruby.
  2. SQL-meeskonnad kirjutavad paljude loetavust. Pea meeles alati, et pärast seda, kui saate lugeda koodi ja teiste inimeste ja kõige tõenäolisemalt sa ise läbi aja jooksul.
  3. Helistage väljadele nimisõna algusest ja seejärel tegevusest. Näiteks: City_Status, User_login, User_name.
  4. Püüdke vältida varukoopiaid erinevates keeltes, mis võivad põhjustada probleeme SQL, PHP või Perli keeles, näiteks (nimi, arv, link). Näiteks: Link saab kasutada pr SQL-is, kuid MySQLis reserveeritud.

See materjal on lühikese sertifikaat igapäevaseks tööks ja ei teeskle, et super Mega autoriteetne allikas, mis on andmebaasi SQL-päringute allikas.