Zobraziť SQL Hľadať všetky tabuľky. Jednoduché požiadavky SQL - Krátka pomoc a príklady

Začnime s elementárnymi otázkami. A čo bez nich? Najviac stručná forma SQL dotaza prekladá sa ako "Chcem získať všetky údaje z tejto tabuľky." Výsledkom ďalšieho dotazu je všetky záznamy so všetkými poliami z tabuľky D_STAFF.

Vyberte * z d_staff

Zadajte dotaz SQL v školiacom programe.

Zvoľte [SQL] V prieskumníkovi vľavo, stlačte [SQL Tlačidlo] nad zoznamom vpravo, zadajte žiadosť a znova stlačte tlačidlo [SQL]. Po potvrdení plnenia dotazu bude zoznam vyzerať takto nasledovne. V prípade, že je všetko jednoduchšie: Stačí zadať dotaz SQL v príslušnom poli a kliknite na [RUN].


Výsledok vykonania najjednoduchšieho dotazu SQL.

Použite (*) po prevádzkovateľ VyberteSamozrejme, je to vhodné, najmä ak nie je známe, aké oblasti v tabuľke sú vo všeobecnosti, ale aj nákladné - štruktúry, ktoré uložia výsledok dotazu vynaložené pomerne veľa "zbytočnej" pamäte, a čas na vykonanie sa len zvyšuje. Ďalšia možnosť je presne tak uprednostňujú, ak potrebujete informácie len o fi. Zamestnanca a jeho skúsenosti. Preklad O tom: "Chcem vedieť len to a toto je o všetkých z tabuľky ..."

Vyberte S_NAME, S_EXPERENCE Z D_STAFF

Výsledok posledného dotazu SQL zaberá značne menej priestoru "Šírka".


Vyberte hodnoty špecifických polí tabuľky.

Krok 2. SQL požiadavka s jednoduchým kritériom výberu

Najjednoduchšie požiadavky sa prakticky neuplatňujú v praxi, pretože "vytiahnite" absolútne všetky záznamy zo zadanej tabuľky a môžu existovať stovky tisíc. DBMS môže jednoducho odmietnuť vykonávať takúto požiadavku a náhodný vstup do pamäťe Na klientskom stroji nemôže byť elementárny. Čo robiť s výsledkami takýchto požiadaviek, aj keď sa vykonávajú správne, nie je to vždy jasné, pretože pre niektoré pôjde. Aby ste mohli ukladať obmedzenia na výber položiek, ktoré potrebujete, kľúčové slovo sa používa v SQL. Nižšie uvedený dotaz vyberie iba zamestnancov s pracovnou skúsenosťou menej ako 5 rokov.

Vyberte S_NAME, S_EXPERENCE z D_STAFF, KDE S_EXPERENCE


Použitím jednoduché kritérium Výber záznamov.

Krok 3. SQL požiadavka s kritériom kompozitného výberu

Za to, čo je potrebné kompozitné kritériá výberu Records, vysvetliť, myslím, že nie je potrebné. Pre to isté, čo a požiadavky s jednoduchými kritériami. Podmienky sú kombinované logické operácie spojovacie spojenia a dýchanie (Operátori "a" (a) a "alebo" (alebo)) a sú zoskupené zátvorkami. Nasledujúca žiadosť vráti záznam o zamestnancoch so skúsenosťami menej ako 5 rokov a s dodatočným obmedzením na ich pozícii.

Vyberte S_NAME, S_EXPERENCE, S_POONSPOUNTS z D_STAPHUJÚCEHO TAKE (D_STAFF.S_POONPITY 20) A D_STAFF.S_EXPERENCE


Použitím sofistikované kritérium Výber záznamov.

Krok 4. Medzi operátorom

Medzi operátorom zjednodušuje syntax opisu kritérií definujúcich interval prípustné hodnoty. Namiesto toho, aby medzi 3 a 7 nižšie bolo možné písať d_staff.s_experiences\u003e \u003d 3 a d_staff.s_experience<=7 . Первый вариант способствует наглядности запроса – это раз, поиск на стороне СУБД может выполняться по отдельному алгоритму, специально оптимизированному для подобного вида ограничений – это два.

Vyberte S_NAME, S_EXPEENCE, S_POCTION Z D_STAFF, kde (d_staff.s_Position 20) a d_staff.s_experience medzi 3 a 7


Pomocou operátora.

KROK 5. Rovnako ako operátor

Tento nádherný operátor vám umožňuje zaviesť obmedzenia na hodnoty textových polí pomocou šablón. Nebudem vysvetľovať syntax, myslím, že z príkladu, a tak je všetko jasné. Hľadáme zamestnancov, s F.O.O.O. Začiatok "Z"v strede by sa mal stretnúť "Šachta" a skončiť všetko "Ich". V niektorých DBMS sa môže použiť ako kľúčové slovo aj s hodnotami dátumu a času.

Vyberte S_NAME z D_STAPH, kde s_name ako "s%" a s_name ako "% predaja%" a s_name ako "% ICH"

Vyberte S_NAME z d_staff, kde s_name ako "c% wall% ICH"


Použite ako operátor.

Krok 6. Pseudonyms tabuliek a polí

Používa sa v názvoch dotazov tabuliek a polí môžu byť definované pseudonyms. Ako sa to robí - ukázali sa nižšie. Prečo sa to vykoná - bude uvedené v nasledujúcich krokoch, vrátane v kroku 7, a tento príklad ilustruje najzrejmejšie použite aliasy v SQL - registrácia výsledku žiadosti v súlade s požiadavkami na pohodlie vnímania jeho osoby. Na určenie pseudonymu tabuľky alebo polí v SQL sa používa ako kľúčové slovo. Výsledok dotazu (názov tabuľky) v tejto možnosti vyzerá vhodnejšie, aby sa o ňom správu.

Vyberte S_NAME ako zamestnanec, s_experience ako [pracovný zážitok], s_Pospozícia ako pozícia od D_STAP


Použitie stolových pseudonymov a polí.

Krok 7. Pomer "šéf - podriadený"

Tento príklad dokončuje "prvé kroky" štúdia SQL požiadaviek je z nich najťažšie. Tu sme "programovanie" vydávanie zoznamu zamestnancov s ich priamym vedením. Komplexnosť je, že záznamy a o tých a iných sú uložené v tej istej tabuľke a tu bez aliasov nemôže robiť. DBMS, počas spracovania dotazov pristupí k tabuľke D_STAPH, ako keby k dve rôznym tabuľkám (pod Pseudonyms zamestnancov a šéf), aby mohli kombinovať záznamy do jedného súdny dvor Na základe vzťahu "šéf - podriadený". Pomer sa simuluje nasledovne: Hodnota poľa S_CHIEF_ID v podriadenej zodpovedá hodnote hodnoty poľa XD_IID.

Zvoľte personál .s_name ako podriadený, personál, šéf.s_name ako hlava, šéf.s_Pospozícia ako [pozícia hlavy] z d_staff ako personálu, d_staff ako šéf, kde zamestnanci.s_chef_id \u003d Chief.xd_iid


Získanie hierarchie "Head - Slave" pomocou tabuľky alias v SQL.

Každý webový vývojár by mal vedieť, SQL písať požiadavky na databázy. A hoci, phpmyadmin nikto nezrušený, je často potrebné uvádzať svoje ruky, aby napísali nízkoúrovňovú SQL.

Preto sme pripravili krátku exkurziu na základoch SQL. Začnime!

1. Vytvorenie tabuľky

Vytvoriť tabuľku Pokyn je navrhnutý tak, aby vytvoril tabuľky. Ako argumenty by sa mali špecifikovať názov stĺpcov, ako aj ich typy údajov.

Vytvorte jednoduchý stôl podľa mena mesiac.. Skladá sa z 3 stĺpcov:

  • id - Počet mesiacov v kalendárnom roku (celé číslo).
  • názov. - Názov mesiaca (reťazec, maximálne 10 znakov).
  • dni. - Počet dní v tomto mesiaci (celé číslo).

Takto vyzerá zodpovedajúci sql dotaz:

Vytvorte tabuľkové mesiace (ID INT, Názov VARCHAR (10), DNÍ INT);

Tiež pri vytváraní tabuliek sa odporúča pridať primárny kľúč pre jeden zo stĺpcov. Tým sa uchováva záznamy jedinečné a urýchliť požiadavky na vzorku. Nech bude v našom prípade meno mesiaca jedinečný (stĺpec názov.)

Vytvorte tabuľkové mesiace (ID INT, Názov Varchar (10), Dni Int, primárny kľúč (názov));

dátum a čas
Dátový typPopis
Dátum.Hodnoty dátumu
Dátum Čas.Dátum a časové hodnoty do mincovne
Čas.Časové hodnoty

2. Vloženie reťazca

Teraz vyplňte náš stôl monhs. Užitočná informácia. Pridanie záznamov do tabuľky sa vykonáva cez inštrukciu vloženia. Na zaznamenávanie tohto pokynu sú dva spôsoby.

Prvým spôsobom nie je špecifikovať názvy stĺpcov, v ktorých budú vložené údaje, a označujú iba hodnoty.

Tento spôsob záznamu je jednoduchý, ale nebezpečný, pretože neexistuje žiadna záruka, že ako expanzia projektu a upraví tabuľku, stĺpce budú umiestnené v rovnakom poradí ako predtým. Bezpečný (a zároveň ťažkopádny) Spôsob nahrávania vloží pokyny si vyžaduje indikáciu hodnôt a poradie stĺpcov:

Tu je prvá hodnota v zozname. Hodnoty. Zodpovedá prvého zadaného názvu stĺpca atď.

3. Extrakcia údajov z tabuliek

Vyberte príkaz je náš najlepší priateľ, keď chceme získať údaje z databázy. Používa sa veľmi často, takže túto časť vezmite veľmi opatrne.

Najjednoduchšie používanie príkazu Select je dotaz, ktorý vráti všetky stĺpce a čiary z tabuľky (napríklad tabuľky podľa mena znakov.):

Vyberte * z "znakov"

Symbol hviezdičky (*) znamená, že chceme získať údaje zo všetkých stĺpcov. SQL databázy sa zvyčajne skladajú z viac ako jednej tabuľky, je potrebné určiť kľúčové slovo z, po ktorom nasleduje, ktorý tabuľka by mala byť sledovaná priestore.

Niekedy nechceme získať údaje zo všetkých stĺpcov v tabuľke. Na to, namiesto hviezdičky (*), musíme napísať mená požadovaných stĺpcov prostredníctvom čiarky.

Vyberte ID, názov z mesiaca

Okrem toho, v mnohých prípadoch chceme, aby boli výsledky triedené v určitom poradí. V SQL to robíme s objednávkou. Môže prijímať voliteľný modifikátor - ASC (predvolené) vzostupne alebo popis, triedenie zostupne:

Vyberte ID, Názov od mesačného poradia podľa názvu

Pri použití objednávky sa uistite, že bude posledný v výbere. V opačnom prípade sa vydá chybové hlásenie.

4. Filtrovanie údajov

Naučili ste sa, ako si vybrať z databázy pomocou SQL Query Stricko definované stĺpce, ale čo keby sme potrebovali získať nejaké ďalšie riadky? K pomoci, ak je stav, kde sa vzťahuje na záchranu, čo nám umožňuje filtrovať údaje v závislosti od stavu.

V tomto dotaze si vyberieme len mesiace od tabuľky mesiac., v ktorom viac ako 30 dní s pomocou operátora viac (\u003e).

Vyberte ID, meno od mesiaca, kde dni\u003e 30

5. Rozšírené filtrovanie dát. Operátorov a alebo alebo

Skoršie sme použili filtračné údaje pomocou jedného kritéria. Pre zložitejšie filtrovanie údajov môžete použiť a alebo alebo prevádzkovateľa (\u003d,<,>,<=,>=,<>).

Tu máme tabuľku obsahujúcu štyri najlepšie albumy albumu všetkých čias. Vyberáme si ich tie, ktoré sú klasifikované ako skaly a v ktorom je predaných menej ako 50 miliónov kópií. To sa dá ľahko vykonať umiestnením operátora a medzi týmito dvoma podmienkami.


Vyberte * z albumov, kde Genre \u003d "Rock" a Sales_in_MILLIONS<= 50 ORDER BY released

6. V / medzi / podobne

Kde tiež podporuje niekoľko špeciálnych príkazov, čo vám umožní rýchlo skontrolovať najčastejšie používané požiadavky. Tu sú:

  • V - slúži na špecifikáciu rozsahu podmienok, ktorého sa môže vykonať
  • Medzi - kontroluje, či je hodnota v špecifikovanom rozsahu
  • Rovnako ako - hľadáte špecifické vzory

Ak chcete napríklad vybrať albumy poprieť a duša Hudba, môžeme použiť v ("hodnota1", "hodnota2").

Vyberte * z albumov, kde žánru v ("pop", "duša");

Ak chceme získať všetky albumy, publikované medzi rokmi 1975 a 1985, musíme písať:

Vyberte * z albumov, kde sa uvoľní medzi rokmi 1975 a 1985;

7. FUNKCIE

SQL Stuffers s funkciami, ktoré robia rôzne užitočné veci. Tu sú niektoré z najčastejšie používaných:

  • Počet () - vráti počet riadkov
  • Suma () - vráti celkové množstvo numerického stĺpca
  • AVG () - vráti priemernú hodnotu z rôznych hodnôt
  • Min () / max () - dostane minimálnu / maximálnu hodnotu z stĺpca

Ak chcete získať posledný rok v našom stole, musíme písať takýto sql dotaz:

Vyberte max (vydané) z albumov;

8. Podlieha

V predchádzajúcom odseku sme sa naučili, ako urobiť jednoduché výpočty s údajmi. Ak chceme použiť výsledok týchto výpočtov, nemôžeme robiť bez investovaných žiadostí. Predpokladajme, že chceme odstúpiť umelca., album a rok vydania Pre najstarší album v tabuľke.

Vieme, ako získať tieto špecifické stĺpce:

Vyberte si Artist, Album, Reedased z albumov;

Vieme tiež, ako získať najskorší rok:

Vyberte min (prepustený) z albumu;

Všetko, čo potrebujete, je kombinovať dve požiadavky, kde:

Vyberte si Artist, album, vydaný z albumov, kde vydané \u003d (vyberte min (vydané) z albumov);

9. Kombinácia tabuliek

V zložitejších databázach existuje niekoľko tabuliek spojených s ostatnými. Nižšie sú uvedené dve tabuľky o videohieroch video hry.) A vývojári videohier ( game_Developers.).


Stôl video hry. K dispozícii je vývojársky stĺpec ( developer_id), ale obsahuje celé číslo a nie meno developer. Toto číslo je identifikátor ( id) Príslušný vývojár z tabuľky developery hry ( game_Developers.) Viazaním logicky dvoch zoznamu, čo nám umožňuje používať informácie uložené v nich súčasne.

Ak chceme vytvoriť požiadavku, ktorá vráti všetko, čo potrebujete vedieť o hier, môžeme použiť vnútorné pripojenie k komunikácii reproduktorov z oboch tabuliek.

Vyberte položku Video_Games.Name, video_games.Genre, Game_Developers.Name, Game_Developers.country z video_Games Inner Jool Game_Developéry na video_Games.developers.id \u003d GAME_DEVERVERSERS.ID;

Toto je najjednoduchší a najbežnejší typ pripojenia. Existuje niekoľko ďalších možností, ale uplatňujú sa na menej časté prípady.

10. Alias.

Ak sa pozriete na predchádzajúci príklad, všimnete si, že nazývajú dva stĺpce názov.. Zatiahne si, takže nainštalovať jeden z opakujúcich sa stĺpcov, napríklad, názov. z tabuľky game_Developers. bude nazývaný developer..

Môžeme tiež znížiť požiadavku, ktorý špecifikuje názov tabuľky Pseudonyms: video hry. názov hry., game_Developers. - devs.:

Vyberte Games.Name, Games.genre, Devs.Name as Developer, Devs.Country z Video_Games as Hry Inner Join Game_Developers as Devs na Games.Developer_id \u003d Devs.Id;

11. Aktualizácia údajov

Často musíme zmeniť údaje v niektorých radoch. V SQL sa to vykoná pomocou inštrukcie aktualizácie. Vyhlásenie o aktualizácii pozostáva z:

  • Tabuľky, v ktorých je hodnota na výmenu;
  • Názvy stĺpcov a ich nových hodnôt;
  • Vybrané s tam, kde chceme aktualizovať. Ak sa to nerobí, potom sa všetky riadky zmenia v tabuľke.

Nižšie je tabuľka tV_SERIES. S televíznym seriálom s ich hodnotením. TABUĽKA AVERAČNÝ TABUĽKA MALÉ CHYBA: Hoci séria Hra o tróny A opísaný ako komédia, nie je to. Upravme to!

Tabuľkové dáta TV_Series Update TV_Series Nastaviť žánr \u003d "DRAM", kde ID \u003d 2;

12. Odstrániť údaje

Vymazanie riadku tabuľky so SQL je veľmi jednoduchý proces. Všetko, čo potrebujete, je vybrať si tabuľku a reťazec, ktorý chcete odstrániť. Poďme odstrániť posledný reťazec z predchádzajúceho príkladu v tabuľke. tV_SERIES.. Toto sa vykonáva pomocou inštrukcie\u003e Vymazať

Odstráňte z TV_series, kde ID \u003d 4

Buďte opatrní pri písaní vymazania inštrukcií a uistite sa, že podmienka, kde je stav prítomná, inak budú všetky tabuľkové čiary vymazané!

13. Vymazať tabuľku

Ak chceme odstrániť všetky riadky, ale opustiť samotnú tabuľku, potom použite príkaz TRUNCATE:

Stola tabuľka tabuľky_name;

V prípade, keď skutočne chceme odstrániť a údaje a samotnú tabuľku, použijeme príkaz DRIP:

Drop Table Table_name;

Buďte veľmi opatrní s týmito tímami. Nemôžu byť zrušené! / P\u003e

Na to dokončujeme náš sql tutorial! Veľa sme nepovedali, ale to, čo už viete, by ste mali stačiť, aby vám dali nejaké praktické zručnosti vo vašej webovej kariére.

Naďalej študujeme možnosti SQL Servera od spoločnosti Microsoft a zase máme komponent Full-Text Search, Ruská verzia je " Úplné vyhľadávanie textu", A teraz zistíme, prečo je to potrebné, a ako implementovať toto najplnomocnejšie vyhľadávanie v SQL Serveri pomocou tohto komponentu.

A začneme, samozrejme, s ohľadom na základy úplného textového vyhľadávania, t.j. Čo to je a pre ktoré je všeobecne potrebné.

Čo je to úplné vyhľadávanie?

Úplné vyhľadávanie textu - Toto je vyhľadávanie slov alebo fráz v textových údajoch. Zvyčajne sa takýto typ vyhľadávania používa na vyhľadávanie textu vo veľkom množstve údajov, napríklad tabuľky s miliónom alebo viacerými riadkami, pretože je výrazne rýchlejšie ako normálne vyhľadávanie, ktoré možno realizovať pomocou podobného dizajnu.

Full-Textové vyhľadávanie zahŕňa vytvorenie špeciálneho indexu ( od obyčajných indexov sa líši) Textové údaje, ktoré sú typom slovníka slov, ktoré sa nachádzajú v týchto údajoch.

Použitie úplného vyhľadávania, môžete implementovať druh vyhľadávač Dokumenty ( tí. Riadok), podľa alebo frázy v databáze vašej spoločnosti. Odvtedy k svojej rýchlej práci má tiež schopnosť hodnotiť dokumenty, t.j. Uložte hodnosť každého nájdeného linky, inými slovami, môžete nájsť najrelevantnejšie záznamy, t.j. Najvhodnejšie pre vašu požiadavku.

Full-Text Funkcie vyhľadávania v MS SQL Server

  • Vo full-textovom vyhľadávaní SQL servery môžete vyhľadávať nielen jednotlivými slovami alebo frázami, ale aj predpony výrazov, Napríklad, nastaviť text začiatok slova alebo frázy;
  • Môžete tiež hľadať slová o wordformoch, napríklad rôzne formy slovies alebo podstatných mien v jedinom a množnom čísle, t.j. za odvodené výrazy;
  • Môžete stavať dotaz tak, aby ste našli slová alebo frázy nachádzajúce sa vedľa iných slov alebo fráz, t.j. výrazy;
  • Existuje možnosť nájsť synonymné formy konkrétneho slova (tezaurus), t.j. Napríklad, ak je v tezauku, určuje to, že " Auto"A" Auto"- Toto sú synonymá, potom pri hľadaní slova" Auto»Výsledná súprava bude obsahovať riadky obsahujúce slovo" Auto»;
  • V dotaze môžete zadať slová alebo frázy vážené hodnotyNapríklad, ak je v dotaze špecifikovaný niekoľko slov alebo fráz, potom môžu byť priradené dôležité od 0,0 do 1,0 ( 1.0 znamená, že toto je najdôležitejšie slovo alebo fráza);
  • Ak chcete zvážiť pri hľadaní niektorých slov, ktoré môžete použiť " zoznam zastavovacích slov", T.j. Podľa tohto zoznamu sa vyhľadávanie nebude vykonať.

Príprava na implementáciu úplného textového vyhľadávania v MS SQL Server

Skôr ako začnete vytvárať úplné vyhľadávanie, musíte vedieť niekoľko dôležitých bodov:

  • Ak chcete implementovať komponenty úplného textového vyhľadávania Full-Text Search ( Úplné vyhľadávanie textu) Musí byť inštalovaný;
  • Tabuľka môže mať iba jeden textový index;
  • Ak chcete vytvoriť celý text, tabuľka musí obsahovať jeden jedinečný index, ktorý obsahuje jeden stĺpec a neumožňuje nullové hodnoty. Odporúča sa použiť jedinečný zoskupovaný index ( alebo len primárny kľúč), z ktorých prvý stĺpec musí mať celý typ údajov;
  • Full-Text Index môže byť vytvorený na stĺpcoch s typom údajov: Char, Varchar, NHHHL, NVARCHAR, text, Ntext, Image, XML, Varbinary alebo Varbinary (max);
  • Aby ste vytvorili celý text, musíte najprv vytvoriť celý textový adresár. Počnúc SQL Server 2008 je komplexný textový katalóg logickým konceptom označujúcim skupinu kompletne textových indexov, t.j. je virtuálny objekt a nie je zahrnutý v skupine súborov ( existuje spôsob, ako vytvoriť celý textový index pomocou "MASTER", v ktorom možno adresár vytvoriť súčasne s indexom, táto metóda budeme zvážiť tesne).

Poznámka! Implementovať úplné vyhľadávanie, budem na príklade verzii SQL Server 2008 R2. Z tohto dôvodu je tiež vyplýva, že komponent vyhľadávania úplného textu je už nainštalovaný, ak nie, potom ho nainštalujte pridaním príslušného komponentu prostredníctvom "SQL Server Install Center", t.j. Dajte príslušné kliešte.

V príkladoch nižšie ako nástroj na vytváranie a správu plnohodnotných adresárov a indexov budem používať SQL Server Management Studio.

Zdrojové údaje na vytvorenie úplného textového vyhľadávania

Predpokladáme, že máme databázu testbase a existuje testntabilná tabuľka, v ktorej sú len dve polia, prvé (ID) je primárnym kľúčom a druhá (textata) je textové údaje, pre ktoré budeme implementovať plné -Zobrazenie vyhľadávania.,

Vytvorte tabuľku Testtable (ID INT INTENTITY (1,1) NIE NULL, TEXTDATA VARCHAR (500) NULL, CONTRAINT PK_TENTABLE PRIREBNÝ KLUCHOVANÝ KLUKTOROVANÝ (ID ASC))

Bude napríklad obsahovať nasledujúce údaje.


Vytvorenie kompletného textového adresára v SQL Serveri

Ak chcete vytvoriť kompletný textový adresár, rovnako a index môže byť použitý alebo grafické rozhranie SSMS alebo inštrukcie T-SQL, budeme analyzovať oboma smermi.

Vytvorenie úplného textového adresára na T-SQL

Vytvorenie fulltextového katalógu Testcatalog s Accent_sensitivity \u003d On ako predvolený autorizácia Dbo Go

  • Vytvorenie katalógu FullText - Príkaz o vytvorení kompletného textového adresára;
  • Testcatalog - názov nášho celkového katalógu;
  • S Accent_sensitivity (On | Off) - možnosť označuje, či katalóg plného textu zohľadní diakritické označenia pre indexovanie plného textu. Štandardne;
  • Ako predvolené - možnosť určiť, že adresár je predvolený adresár. V prípade indexu plného textu sa predvolený adresár používa bez výslovne zadania adresára;
  • Autorizácia DBO - Nastaví vlastník úplného textového adresára, môže to byť úloha používateľa alebo databázy. V tento prípad Uviedli sme úlohu DBO.

Vytvorenie katalógu plného textu grafické rozhranie Manažérske štúdio.

Presný rovnaký textový adresár môže byť vytvorený v manažérskom štúdiu grafického rozhrania. Ak to chcete urobiť, otvorte databázu, prejdite do priečinka Skladovanie -\u003e Full-Text Katalógy, kliknite na pravé tlačidlo myši na tejto položke a vyberte položku " Vytvorte úplný textový katalóg».


Otvorí sa okno tvorby katalógu, kde zadáme názov adresára a jeho možnosti.


Zmena a odstránenie katalógu plného textu v SQL Serveri

Ak chcete zmeniť možnosti adresára, môžete použiť inštrukcie Alter FullText Katalóg, napríklad, aby sa našiel náš katalóg, aby sa zohľadnila diakritické označenia, pretože toto napíšeme SQL inštrukcie, ktorá bude obnoviť náš adresár s novou možnosťou.

Alter FullText Katalóg Testcatalog Rebuild s Accent_sensitivity \u003d Off Go

Ak chcete vymazať adresár, môžete použiť napríklad inštrukcie T-SQL, napríklad

Drop FullText Katalóg Testcatalog

To všetko by sa dalo urobiť v GUI GUIENTOVEJ STUDIOU ( zmena parametrov adresára "Vlastnosti", odstrániť "Delete")

Vytvorenie indexu plného textu v SQL Serveri

Po vytvorení fulltextového adresára môžete v ňom začne vytvárať index plného textu. V našom prípade chceme vytvoriť celý textový index, v ktorom je zapojená textdata pole.

Vytvorenie indexu plného textu na T-SQL

Aby ste vytvorili celý text, môžete napísať nasledujúcu inštrukciu SQL

Vytvoriť celý index FullText (TextData) Kľúčový index PK_TestTtable on (testcatalog) s (zmena_tracking auto) ísť

  • Vytvorte index fulltext - príkaz na vytvorenie full-textového indexu;
  • Testtable (textata) - tabuľka a stĺpec zahrnutý v indexe;
  • Kľúčový index pk_testtable - názov jedinečného indexu testovacej tabuľky;
  • Na (TestCatalog) - uveďte, že index plného textu sa vytvorí v Testcatalog Fulltextový adresár. Ak tento parameter nešpecifikujete, index bude vytvorený v predvolenom plnom texte;
  • S (zmena_tracking auto) - hovoríme, že všetky zmeny, ktoré budú zadané do základnej tabuľky (testtable) sa automaticky zobrazia v našom celom texte index, t.j. Automatické plnenie.

Vytvorenie fulltextového indexu v manažérskom štúdiu GUI

Index plnofaxu môže byť vytvorený pomocou a grafických nástrojov, pre to otvoriť vlastnosti úplného textového adresára a prejdite na položku " Tabuľky alebo zobrazenia", Vyberte požadovanú tabuľku, pole, jedinečný index a spôsob sledovania zmien. V našom prípade máme len jednu dostupnú tabuľku a jedno pole.


Zmena a odstraňovanie indexu plného textu

V prípade potreby môžete zmeniť parametre indexu plného textu. Zmeniť spôsob, ako sledovať zmeny z automatického po ruke. Ak chcete zmeniť grafické rozhranie, môžete použiť " Vlastnosti katalógu plného textu -\u003e Tabuľky alebo názory", Ktoré sme použili pri vytváraní full-textového indexu.

Alebo môžete napísať nasledujúci kód

Alter FullText Index na testovateľné nastavenie ZMENY_TRACKING \u003d Manual

Aby ste vymazali index plného textu, stačí len odstrániť tabuľku zo zoznamu objektov súvisiacich s fulltextovým adresárom v tom istom okne " Vlastnosti katalógu plného textu -\u003e Tabuľky alebo názory»


Alebo napíšte kód T-SQL

Drop FullText Index na testne

Vytvorenie katalógu plného textu a indexu pomocou sprievodcu

Ako som už spomenul prvý textový adresár a index môže byť vytvorený pomocou MASTER, t.j. Podľa krokov, kliknite na pravé tlačidlo myši na stole, ktorý chceme zahrnúť do úplného vyhľadávania a vybrať si " Full-Text Index -\u003e Určiť celý textový index».

Poznámka! Predtým som vymazal adresár a index, ktorý sme vytvorili v predchádzajúcich príkladoch.


V dôsledku toho sa spustí sprievodca indexovaním SQL Server Fulltext Indexing.



Potom stĺpec, ktorý bude zahrnutý do indexu plného textu.


Potom musíte vybrať metódu sledovania zmien.


Uveďte názov katalógu a jeho možnosti, aby ste ho vytvorili, pretože sa predpokladá, že ak by to bolo, potom by sme ho mohli vybrať.


Tu môžeme prispôsobiť časový harmonogram plnenia katalógu plného textu.


Vytvorenie katalógu a indexu, ktorý chcete kliknúť " Pripravený».


V ďalšom okne uvidíme výsledok vykonania operácií na vytvorenie kompletného textového adresára a indexu. V mojom prípade bolo všetko úspešné.


Dokončili sme tak vytvorenie celého textového adresára a indexu v rovnakom čase pomocou sprievodcu.

Príklady plnofaxov

Budem okamžite povie, že podrobnejšie požiadavky na úplné texty, ktoré budeme zvážiť v nasledujúcich materiáloch, a doteraz, ako napríklad príklad a potvrdzujem, že naše celé textové vyhľadávanie funguje, poďme napísať pár jednoduchých požiadaviek na úplné texty.

Ak si spomeniete, naša testovacia tabuľka obsahuje definície technológií, programovacích jazykov, vo všeobecnosti, definície sféry. Predpokladajme, že chceme získať všetky záznamy, kde je zmienka o spoločnosti Microsoft, za to napíšeme plnohodnotnú požiadavku kľúčové slovo Obsahuje napríklad:

Vyberte * z testtable, kde obsahuje (textData, "" Microsoft ")


Dostali sme výsledok, ale napríklad musíme ho tiež triediť na relevantnosť, inými slovami, ktoré linky zodpovedajú našej požiadavke. Aby sme to urobili, použijeme technickú funkciu, ktorá leží hodnosť pre každú zistenú položku.

Vyberte tabuľku1.id ako ID, ROWRANK.RIK AS, tabuľka1.TextData, ako z testntable Table1 Inner Pripojiť sa k dispozícii (Testtable, Textata, "" Microsoft ") ako RowRank na Table1.id \u003d RowRank. Objednať ROWRANK.RANK


Ako vidíte, pozícia je pripevnená a riadky sú zoradené. Samotný rebríčkový algoritmus, pretože viac informácií o Full-Text Search môžete nájsť v elektronickej dokumentácii SQL Server.

To naznačuje dokončenie, dúfam, že všetko bolo jasné, veľa šťastia!

Žiadosti sú napísané bez tieňových citácií, pretože MySQL, Ms sql a Postgree sú odlišné.

Požiadavka SQL: Získanie zadaných (potrebných) polí z tabuľky

Vyberte ID, Country_Title, Country_people z tabuľky

Dostávame zoznam záznamov: všetky krajiny a ich obyvateľstvo. Názov požadovaných polí je označený čiarkami.

Vyberte * z tabuľky tabuľky_name

* Označuje všetky polia. To znamená, že budú ukazovať Všetko Dátové polia.

SQL požiadavka: Zobrazenie záznamov z tabuľky s výnimkou duplikátov

Vyberte odlišnú country_title z tabuľky

Dostaneme zoznam záznamov: Krajiny, kde sa nachádzajú naši používatelia. Užívatelia môžu byť veľa jednej krajiny. V tomto prípade je to vaša žiadosť.

SQL požiadavka: Zobrazenie záznamov z tabuľky na daný stav

Vyberte ID, Country_Title, City_Title z tabuľky table_name, kde count_people\u003e 100000000

Dostaneme zoznam záznamov: Krajiny, kde počet ľudí je viac ako 100 000 000.

SQL požiadavka: Zobrazenie záznamov z tabuľky aplikácií

Vyberte ID, City_Title z tabuľky_name objednať podľa city_title

Dostávame zoznam záznamov: mestá v abecednom poradí. Na začiatku A, na konci ya.

Vyberte ID, City_Title z tabuľky_Name objednávky podľa city_title desc

Dostávame zoznam záznamov: mestá v opaku ( Dops.). Na začiatku, na konci A.

SQL dotaz: Počítanie počtu záznamov

Vyberte počet (*) z tabuľky_name

Získame číslo (číslo) záznamov v tabuľke. V tomto prípade neexistuje zoznam záznamov.

SQL dotaz: výstup požadovaného záznamu

Vyberte * z limit 2, 3, 3

Získame 2 (druhý) a 3 (tretí) záznam z tabuľky. Žiadosť je užitočná, keď vytvoríte navigáciu na webových stránkach.

SQL požiadavky s podmienkami

Zobrazenie položiek z tabuľky pre daný stav pomocou logických operátorov.

Žiadosť SQL: Stavebníctvo a (a)

Vyberte ID, City_Title z tabuľky table_name, kde krajina \u003d "Rusko" a ropy \u003d 1

Dostávame zoznam záznamov: mestá z Ruska A Majú prístup k olejom. Keď sa používa operátor A., Musím sa zhodovať s oboma podmienkami.

Požiadavka SQL: Dizajn alebo (alebo)

Vyberte ID, City_Title z tabuľky Table_name, kde Country \u003d "Rusko" alebo Country \u003d "USA"

Dostávame zoznam záznamov: všetky mestá z Ruska Alebo USA. Keď sa používa operátor Alebo., Mal by sa zhodovať aspoň jednu podmienku.

SQL dotaz: Dizajn a nie (a nie)

Vyberte ID, Uster_Login z tabuľky Table_name, kde Country \u003d "Rusko" a nie gril_comments<7

Dostávame zoznam záznamov: Všetci používatelia z Ruska A Vyrobený NIE MENEJ 7 Komentáre.

SQL požiadavka: v b) dizajn

Vyberte ID, Uster_Login z tabuľky table_name, kde krajina ("Rusko", "Bulharsko", "Čína")

Dostávame zoznam záznamov: Všetci používatelia žijú ( V.) (Rusko alebo Bulharsko, alebo Čína)

SQL požiadavka: nie v dizajne (nie v)

Vyberte ID, Uster_Login z tabuľky_name, kde krajina nie je v ("Rusko", "Čína")

Dostávame zoznam záznamov: Všetci používatelia, ktorí žijú, nie sú v ( NIE V.) (Rusko alebo Čína).

SQL požiadavka: je null dizajn (prázdne alebo nie prázdne hodnoty)

Vyberte ID, Uster_Login z tabuľky_name, kde je stav null

Dostávame zoznam záznamov: Všetci používatelia, kde nie je definovaný stav. NULL je samostatná téma, a preto sa kontroluje samostatne.

Vyberte ID, Uster_Login z tabuľky table_name, kde štát nie je null

Dostávame zoznam záznamov: Všetci používatelia, kde je definovaný stav (nie nulový).

SQL požiadavka: ako dizajn

Vyberte ID, Uster_Login z tabuľky_name, kde sa priezvisko ako "Ivan%"

Dostávame zoznam záznamov: Používatelia, ktorí majú priezvisko, začínajú kombináciou "Ivan". Znamenie% znamená ľubovoľný počet ľubovoľných znakov. Ak chcete nájsť znamenie%, musíte použiť skríning "Ivan%".

SQL Dotaz: Medzi dizajnom

Vyberte ID, Uster_LOGIN z tabuľky_name, kde plagát medzi 25000 a 50000

Dostávame zoznam záznamov: Používatelia, ktorí dostávajú plat od 25 000 do 50.000 inclusive.

Logickí operátori sú veľmi veľa, takže podrobne budete študovať dokumentáciu SQL Server.

Komplexné požiadavky SQL

SQL dotaz: Kombinácia viacerých požiadaviek

(Select ID, Uster_Login z Table_Name1) Union (Select ID, Uster_login z tabuľky_name2)

Dostávame zoznam záznamov: Používatelia, ktorí sú registrovaní v systéme, ako aj tých užívateľov, ktorí sú registrovaní na fóre samostatne. Prevádzkovateľ Únie môže byť kombinovaný niekoľko žiadostí. Únie koná, ako je vybrané odlišné, to znamená, že vyhodí opakujúce sa hodnoty. Ak chcete získať absolútne všetky záznamy, musíte použiť celú obsluhu.

Požiadavka SQL: počítanie max, min, súčet, AVG, počítať hodnoty poľa

Záver jednej, maximálnej hodnoty počítadla v tabuľke:

Vyberte max (počítadlo) z tabuľky_name

Výstup Jedno, minimálne hodnoty počítadla v tabuľke:

Vyberte min (počítadlo) z tabuľky_name

Výstup všetkých hodnôt meračov v tabuľke:

Vyberte SUM (počítadlo) z tabuľky_name

Výstup priemernej hodnoty merača v tabuľke:

Vyberte AVG (počítadlo) z tabuľky_name

Výstup počtu metrov v tabuľke:

Zvoľte Počet (počítadlo) z tabuľky table_name

Výstup počtu metrov v diele 1, v tabuľke:

Vybrať počet (počítadlo) z tabuľky_name, kde Office \u003d "obchodné číslo 1"

Toto sú najobľúbenejšie tímy. Odporúča sa, ak je možné použiť požiadavky SQL na počítanie tohto druhu, pretože žiadne programovacie prostredie sa porovnáva pri rýchlosti spracovania údajov ako samotný server SQL pri spracovaní vlastných údajov.

SQL Dotaz: Zoskupenie záznamov

Vybrať kontinent, súčet (country_area) z skupiny Country

Dostávame zoznam záznamov: s menom kontinentu a sumou štvorcov všetkých svojich krajín. To znamená, že ak existuje referenčná kniha krajín, kde má každá krajina svoju oblasť, potom pomocou skupiny podľa dizajnu, môžete zistiť veľkosť každého kontinentu (na základe zoskupenia podľa kontinentov).

SQL požiadavka: Použitie viacerých tabuliek prostredníctvom Alias \u200b\u200b(Alias)

Vyberte O.Dorder_No, O.AMOST_PAID, CONS CONS AS O, zákazník as, kde O.CUSTNO \u003d C.CUSTNO a C.CITY \u003d "Tyumen"

Dostávame zoznam záznamov: Objednávky od kupujúcich, ktorí žijú len v Tyumen.

V skutočnosti, s riadne predpokladanou databázou tohto typu, je dotaz najčastejším, takže špeciálny prevádzkovateľ bol zavedený do MySQL, ktorý funguje občas rýchlejšie ako vyššie uvedený kód.

Vyberte O.Dorder_No, O.AMOST_PAID, Z.sk Z objednávok, ako o vľavo sa pripojili k zákazníkovi ako Z na (Z.CUSTNO \u003d O.CUSTNO)

Vnorené podvolávanie

Vyberte * z tabuľky table_name, kde plagát \u003d (vyberte možnosť max (mzda) od zamestnanca)

Získame jeden záznam: Užívateľské informácie s maximálnym platom.

Pozor! Vnorené podvolávanie sú jedným z najviac úzkych sedadiel v SQL serverov. Spolu s flexibilitou a napájaním významne výrazne zvyšujú zaťaženie servera. Čo vedie k katastrofickému spomaleniu iných používateľov. Pri pripojených otázkach sú veľmi časté prípady rekurzívnych hovorov. Preto dôrazne odporúčam používať investované požiadavky, ale rozdeliť ich na menšie. Alebo použite vyššie opísanú kombináciu ľavého spáchania. Okrem tohto typu, požiadavky sú zvýšené zameranie narušenia bezpečnosti. Ak sa rozhodnete použiť vnorené podvolávanie, potom je potrebné ich starostlivo navrhnúť a počiatočné začne robiť na databázových kópiách (testovacie základy).

SQL požiada o zmenu údajov

SQL požiadavka: vložka

Výučba Vložka. Umožnite vložiť záznamy v tabuľke. Jednoduché slová, vytvoriť riadok s údajmi v tabuľke.

Možnosť možnosti 1. Pokyny sa často používa:

Vložte do tabuľky_name (ID, Uster_Login) (1, "Ivanov"), (2, "Petrov")

V tabulke " tabuľka_name."Bude okamžite vložené 2 (dva) používatelia.

Možnosť voľby 2. Je pohodlnejšie použiť štýl:

Vložte tabuľku_name Set ID \u003d 1, user_login \u003d "Ivanov"; Vložte tabuľku tabuľky ID \u003d 2, user_login \u003d "Petrov";

To má svoje výhody a nevýhody.

Základné nevýhody:

  • Mnohé malé sql dotazy sa vykonávajú mierne pomalšie ako jeden veľký SQL dotaz, ale iné požiadavky budú stáť v servisnom fronte. To znamená, že ak bude veľký sql dotaz dokončený 30 minút, potom po celú dobu, zvyšok požiadaviek bude fajčiť bambus a čakať na ich otočenie.
  • Žiadosť je masívna ako predchádzajúca možnosť.

Hlavné výhody:

  • Počas malých požiadaviek SQL nie sú blokované aj iné požiadavky SQL.
  • Pohodlie pri čítaní.
  • Flexibilita. V tomto uskutočnení nemôžete spĺňať štruktúru, ale pridajte iba potrebné údaje.
  • Pri podobne Archív môžete jednoducho kopírovať jeden riadok a spustiť ho cez príkazový riadok (konzola), čím sa obnoví celý archív.
  • Štýl záznamu je podobný inštrukcii aktualizácie, ktorý je ľahšie zapamätanie.

SQL požiadavka: aktualizácia

Aktualizácia tabuľky_name Set Uster_Login \u003d "Ivanov", User_sURNAME \u003d "Ivanov", kde ID \u003d 1

V tabulke " tabuľka_name."V záznamoch s identifikačným číslom \u003d 1 sa hodnoty polí USer_login a User_SURNAME zmenia na zadané hodnoty.

SQL požiadavka: Odstránenie

Odstrániť z tabuľky_name, kde ID \u003d 3

Tabuľka tabuľky tabuľky sa vymaže s ID čísla 3.

  1. Všetky názvy polí sa odporúčajú písať s malými písmenami a v prípade potreby ich rozdeliť prostredníctvom núteného priestoru "_" pre kompatibilitu s rôznymi programovacími jazykmi, ako sú Delphi, Perl, Python a Ruby.
  2. SQL tímy písania vo veľkých písmenách pre čitateľnosť. Pamätajte si, že potom, čo budete môcť prečítať kód a ostatných ľudí, a s najväčšou pravdepodobnosťou sa vás dostanete cez hodnotu času.
  3. Zavolajte polia od začiatku podstatného mena a potom akciu. Napríklad: city_status, user_login, user_name.
  4. Snažte sa vyhnúť zálohovaniu slov v rôznych jazykoch, ktoré môžu spôsobiť problémy v jazykoch SQL, PHP alebo Perl, napríklad (meno, počet, odkaz). Napríklad: odkaz môže byť použitý v MS SQL, ale v MySQL vyhradenej.

Tento materiál je krátky certifikát pre každodennú prácu a nepredstiera sa k super mega autoritatívneho zdroja, ktorý je zdrojom SQL dotazov databázy.