Skatīt SQL Meklēt visas tabulas. Vienkārši SQL pieprasījumi - īsa palīdzība un piemēri

Sāksim ar elementārām vaicājumiem. Kas par bez tiem? Visprecīzākā forma SQL vaicājumsun tulko kā "Es gribu iegūt visus datus no šīs tabulas." Nākamā vaicājuma rezultāts ir visi ieraksti ar visiem laukiem no D_STaff galda.

Izvēlieties * no d_staff

Ievadiet SQL vaicājumu mācību programmā.

Pārlīmē pa kreisi izvēlieties [SQL], nospiediet [SQL pogu] virs saraksta pa labi, ievadiet pieprasījumu un vēlreiz nospiediet pogu [SQL]]. Pēc vaicājuma izpildes apstiprināšanas saraksts izskatīsies šādi. Šajā gadījumā viss ir vieglāk: vienkārši ievadiet SQL vaicājumu attiecīgajā laukā un noklikšķiniet uz [Run].


Vienkāršākās SQL vaicājuma veikšanas rezultāts.

Izmantojiet (*) pēc operators IzvēlietiesProtams, tas ir ērti, it īpaši, ja tas nav zināms, kādi lauki tabulā parasti ir tur, bet arī dārgi - struktūras, kas uzglabā vaicājuma rezultātu iztērēja diezgan daudz "nevajadzīgas" atmiņas, un laiks izpildei no pašas vaicājuma pieaug tikai. Nākamā iespēja ir tieši tā, kā vēlams, ja jums ir nepieciešama informācija par FI. Darbinieks un tās pieredze. Tulkojums par to: "Es gribu zināt tikai to, un tas ir par visu no galda ..."

Izvēlieties S_Name, S_Experience no D_STAFF

Pēdējā SQL vaicājuma rezultāts ievēro ievērojami mazāk vietas "platums".


Izvēlieties vērtības konkrētu galda laukiem.

2. solis SQL pieprasījums ar vienkāršu atlases kritēriju

Vienkāršākie pieprasījumi praktiski nav piemērojami praksē, jo "izspiež" pilnīgi visus ierakstus no norādītās tabulas, un tur var būt simtiem tūkstošu. DBVS var vienkārši atteikties veikt šādu pieprasījumu, un brīvpiekļuves atmiņa Klientu mašīnā nevar būt elementārs. Ko darīt ar šādu pieprasījumu rezultātiem, pat ja tie tiek veikti pareizi, tas ne vienmēr ir skaidrs, lai gan daži dosies. Lai noteiktu ierobežojumus izvēlei ierakstiem, kas nepieciešami, atslēgvārds tiek izmantots SQL. Zemāk minētais vaicājums izvēlas tikai darbiniekus ar darba pieredzi mazāk nekā 5 gadus.

Izvēlieties S_Name, S_experience no D_STAFF kur s_experience


Izmantot vienkāršs kritērijs Ierakstu izvēle.

3. solis SQL pieprasījums ar kompozīta atlases kritēriju

Par to, kas ir nepieciešams kompozītu atlases kritēriji Ieraksti, paskaidrojiet, es domāju, ka nav vajadzības. Par to pašu, par ko un pieprasa ar vienkāršiem kritērijiem. Apstākļi ir apvienoti, izmantojot loģikas operācijas locuses un dispulsi (Operatori "un" (un) un "vai" (vai)), un tos sagrupē iekavās. Nākamais pieprasījums atgriezīs ierakstu par darbiniekiem ar pieredzi mazāk nekā 5 gadus veci un ar papildu ierobežojumu viņu stāvoklī.

Izvēlieties s_name, s_experience, s_position no d_staff kur (d_staff.s_position 20) un d_staff.s_experience


Izmantot izsmalcināts kritērijs Ierakstu izvēle.

4. solis. Starp operatoru

Starp operators vienkāršo intervāla kritēriju apraksta sintaksi pieļaujamās vērtības. Tā vietā, lai no 3 līdz 7 zemāk, būtu iespējams uzrakstīt d_staff.s_experience\u003e \u003d 3 un d_staff.s_experience<=7 . Первый вариант способствует наглядности запроса – это раз, поиск на стороне СУБД может выполняться по отдельному алгоритму, специально оптимизированному для подобного вида ограничений – это два.

Izvēlieties s_name, s_experience, s_position no d_staff kur (d_staff.s_position 20) un d_staff.s_experience no 3 līdz 7


Izmantojot starp operatoru.

5. solis, piemēram, operators

Šis brīnišķīgais operators ļauj uzlikt ierobežojumus teksta laukiem, izmantojot veidnes. Es nepaskaidroju sintaksi, es domāju, ka no piemēra, un viss ir skaidrs. Mēs meklējam darbiniekus, ar f.o.o. Sākums "No", vidū vajadzētu tikties "Vārpsta" un beidziet visu "Ich". Dažos DBVS, piemēram, atslēgvārdu var izmantot arī ar datuma un laika vērtībām.

Izvēlieties s_name no d_staff kur s_name, piemēram, "s%" un s_name, piemēram, "% pārdošana%" un s_name, piemēram, "% Ich"

Izvēlieties s_name no d_staff kur s_name, piemēram, "C% sienas% Ich"


Izmantot kā operators.

6. solis. Pseidonīmi galdi un lauki

Izmanto vaicājuma nosaukumus tabulu un laukus var definēt pseidonīmi. Kā tas tiek darīts - parādīts zemāk. Kāpēc tas tiek darīts - tiks parādīts šādos posmos, tostarp 7. solī, un šis piemērs ilustrē visredzamāko izmantojiet pseidonīmi SQL - pieprasījuma rezultāta reģistrācija saskaņā ar viņa personas uztveres ērtības prasībām. Lai noteiktu tabulas vai laukus SQL, tiek izmantots kā atslēgvārds. Vaicājuma (tabulas nosaukums) rezultāts šajā izvēlē izskatās vairāk piemērots, lai veiktu ziņojumu par to.

Izvēlieties S_Name kā darbinieks, S_experience kā [darba pieredze], s_position kā pozīcija no d_staff kā personāls


Tabulas pseidonīmu un lauku izmantošana.

7. solis. Attiecība "Galvenais - pakārtots"

Šis piemērs pabeidz "pirmos soļus", lai studētu SQL pieprasījumus, ir visgrūtākais no tiem. Šeit mēs esam "programmēšana", kas izsniedz darbinieku sarakstu ar to tiešo vadību. Sarežģītība ir tāda, ka ieraksti un par tiem un citi tiek glabāti vienā tabulā, un šeit bez pseidonīmu nevar darīt. DBVS vaicājuma apstrādes laikā piekļūs D_STAFF tabulai, it kā divām dažādām tabulām (zem pseidonīmiem personālam un priekšniekam), lai apvienotu ierakstus vienā tiesa Pamatojoties uz attiecībām "Galvenais - pakārtots". Attiecība ir modelēta šādi: S_CHIEF_ID lauka vērtība padotībā atbilst XD_IID lauka vērtības vērtībai.

Atlasiet personālu


Hierarhijas "galvas vergu" iegūšana, izmantojot tabulu ALIAS SQL.

Katram tīmekļa izstrādātājam jāzina SQL rakstīt pieprasījumus datu bāzēm. Un, lai gan phpMyAdmin nav atcelts, bieži vien ir nepieciešams traipīt rokas, lai uzrakstītu zema līmeņa SQL.

Tāpēc mēs esam sagatavojuši īsu ekskursiju uz SQL pamatiem. Sāksim!

1. Tabulas izveide

Izveidojiet tabulas instrukciju, lai izveidotu tabulas. Kā argumenti jānorāda sleju nosaukums, kā arī to datu tipi.

Izveidojiet vienkāršu tabulu pēc nosaukuma mēnesī.. Tas sastāv no 3 kolonnām:

  • izdomājums - mēnešu skaits kalendārajā gadā (vesels skaitlis).
  • nosaukums. - mēneša nosaukums (virkne, ne vairāk kā 10 rakstzīmes).
  • dienas. - dienu skaits mēnesī (vesels skaitlis).

Tas ir, kā atbilstošais SQL vaicājums izskatīsies:

Izveidot tabulas mēnešus (ID INT, nosaukums Varchar (10), dienas Int);

Arī tad, veidojot tabulas, ir ieteicams pievienot galveno atslēgu vienai no kolonnām. Tas saglabās ierakstus unikālus un paātrinās parauga pieprasījumus. Ļaujiet mūsu gadījumā mēneša nosaukums būs unikāls (kolonna nosaukums.)

Izveidot tabulas mēnešus (ID INT, nosaukums Varchar (10), dienas int, primārā atslēga (nosaukums));

datums un laiks
Datu tipsApraksts
Datums.Datuma vērtības
Datums Laiks.Datums un laika vērtības līdz Mint
Laiks.Laika vērtības

2. Ievietojot virkni

Tagad pieņemsim aizpildīt mūsu galdu monhs. Noderīga informācija. Ierakstu pievienošana tabulai tiek veikta, izmantojot ievietošanas instrukciju. Ir divi veidi, kā ierakstīt šo instrukciju.

Pirmais veids nav norādīt nosaukumus kolonnās, kur tiks ievietoti dati, un norāda tikai vērtības.

Šī ieraksta metode ir vienkārša, bet nedroša, jo nav garantijas, ka kā projekta paplašināšana un rediģēšana tabulu, kolonnas atradīsies tajā pašā secībā kā iepriekš. Droša (un tajā pašā laikā vairāk apgrūtinoša) ierakstīšanas instrukciju metode prasa norādi par abām vērtībām un kolonnu secību:

Šeit ir pirmā vērtība sarakstā. Vērtības. Atbilst pirmajam noteiktajam kolonnas nosaukumam utt.

3. Datu ieguve no tabulām

Izvēlieties paziņojumu ir mūsu labākais draugs, kad mēs vēlamies iegūt datus no datu bāzes. To lieto ļoti bieži, lai ņemtu šo sadaļu ļoti uzmanīgi.

Vienkāršākais izvēles paziņojuma izmantošana ir vaicājums, kas atgriež visas kolonnas un līnijas no tabulas (piemēram, tabulas pēc nosaukuma rakstzīmes.):

Izvēlieties * no "Rakstzīmes"

Asterisk simbols (*) nozīmē, ka mēs vēlamies iegūt datus no visām kolonnām. Tātad, SQL datu bāzes parasti sastāv no vairākām tabulām, tas ir nepieciešams, lai precizētu atslēgvārdu no, kam seko tabulā jāievēro caur telpu.

Dažreiz mēs nevēlamies iegūt datus no visām tabulas kolonnām. Par to, nevis zvaigznīti (*), mums ir uzrakstīt vārdus vēlamo kolonnu caur komatu.

Izvēlieties ID, vārdu no mēneša

Turklāt daudzos gadījumos mēs vēlamies, lai rezultāti tiktu sakārtoti noteiktā secībā. SQL mēs to darām ar kārtību. Tā var saņemt izvēles modifikatoru - ASC (noklusējuma) augošā vai desc, šķirojot dilstošā secībā:

Izvēlieties ID, vārds no mēneša pasūtījuma pēc vārda desc

Lietojot pasūtījumu, pārliecinieties, vai tas būs pēdējais atlases paziņojumā. Pretējā gadījumā tiks izdots kļūdas ziņojums.

4. Datu filtrēšana

Jūs uzzinājāt, kā izvēlēties no datu bāzes, izmantojot SQL vaicājumu stingri definētas kolonnas, bet kas notiks, ja mums ir nepieciešams, lai iegūtu vairāk līnijas? Uz atbalstu, kur stāvoklis nāk uz glābšanu, ļaujot mums filtrēt datus atkarībā no stāvokļa.

Šajā vaicājumā mēs izvēlamies tikai mēnešus no galda mēnesī., kurā vairāk nekā 30 dienas ar operatora palīdzību vairāk (\u003e).

Izvēlieties ID, vārdu no mēneša, kur dienas\u003e 30

5. Paplašinātā datu filtrēšana. Operatori un vai vai vai

Agrāk, mēs izmantojām filtrēšanas datus, izmantojot vienu kritēriju. Lai iegūtu sarežģītāku datu filtrēšanu, varat izmantot un vai operatorus un salīdzināt operatorus (\u003d,<,>,<=,>=,<>).

Šeit mums ir tabula, kurā ir četri labākie albumi visu laiku. Pieņemsim izvēlēties tos no tiem, kas ir klasificēti kā klints un kurās ir mazāk nekā 50 miljoni eksemplāru. To var viegli izdarīt, ievietojot operatoru un starp šiem diviem nosacījumiem.


Izvēlieties * no albumiem, kur Žanrs \u003d "Rock" un Saless_in_millions<= 50 ORDER BY released

6. In / starp / patīk

Kur arī atbalsta vairākas īpašas komandas, kas ļauj ātri pārbaudīt visbiežāk izmantotos pieprasījumus. Šeit tie ir:

  • In - kalpo, lai norādītu diapazonu apstākļos, no kuriem jebkuras var veikt
  • Starp pārbaudēm, vai vērtība ir norādītajā diapazonā
  • Patīk - meklē konkrētus modeļus

Piemēram, ja mēs vēlamies izvēlēties albumus ar popēt un dvēsele Mūzika, mēs varam izmantot ("vērtība1", "vērtība2").

Izvēlieties * no albumiem, kur žanrs ("pop", "dvēsele");

Ja mēs vēlamies iegūt visus albumus, kas publicēti no 1975. līdz 1985. gadam, mums ir jāraksta:

Atlasiet * no albumiem, kur atbrīvo no 1975. līdz 1985. gadam;

7. Funkcijas

SQL stuffers ar funkcijām, kas padara dažādas noderīgas lietas. Šeit ir daži no visbiežāk izmantotajiem:

  • Skaits () - atgriež rindu skaitu
  • Summa () - atgriež skaitļu kolonnas kopējo summu
  • AVG () - atgriež vidējo vērtību no dažādām vērtībām
  • Min () / max () - saņem minimālu / maksimālo vērtību no kolonnas

Lai saņemtu ļoti pagājušajā gadā mūsu galdā, mums ir rakstīt šādu SQL vaicājumu:

Izvēlieties Max (atbrīvots) no albumiem;

8. Subqueries

Iepriekšējā punktā mēs uzzinājām, kā veikt vienkāršus aprēķinus ar datiem. Ja mēs vēlamies izmantot rezultātu no šiem aprēķiniem, mēs nevaram darīt bez ieguldītiem pieprasījumiem. Pieņemsim, ka mēs vēlamies izstāties mĀKSLINIEKS., albums. un izlaiduma gads Par vecāko albumu tabulā.

Mēs zinām, kā iegūt šīs īpašās kolonnas:

Izvēlieties mākslinieks, albums, kas novietots no albumiem;

Mēs arī zinām, kā iegūt agrāko gadu:

Izvēlieties min (atbrīvots) no albuma;

Viss, kas Jums nepieciešams, ir apvienot divus pieprasījumus, izmantojot:

Atlasiet mākslinieku, albumu, kas atbrīvots no albumiem, kur atlaisti \u003d (atlasiet min (atbrīvots) no albumiem);

9. Apvienojot tabulas

Sarežģītākajās datu bāzēs ir vairākas tabulas, kas saistītas viens ar otru. Piemēram, divas tabulas par videospēlēm ir norādītas zemāk ( video spēles.) un videospēļu izstrādātājiem ( game_developers.).


Tabula video spēles. Ir izstrādātāja kolonna ( attīstītājs), bet tajā ir vesels skaitlis, nevis izstrādātāja nosaukums. Šis numurs ir identifikators ( izdomājums) Atbilstošs attīstītājs no spēles izstrādātāja galda ( game_developers.), Sasaistot loģiski divus sarakstus, kas ļauj mums izmantot tajā saglabāto informāciju gan vienlaicīgi.

Ja mēs vēlamies izveidot pieprasījumu, kas atgriež visu, kas jums jāzina par spēlēm, mēs varam izmantot iekšējo savienojumu, lai sazinātos ar skaļruņiem no abām tabulām.

Izvēlieties video_games.name, video_games.genre, game_developers.Name, spēle_developers.Country no video_games iekšā pievienoties game_developers uz video_games.developer_id \u003d game_developers.id;

Tas ir vienkāršākais un visizplatītākais pievienošanās veids. Ir vairākas citas iespējas, bet tās attiecas uz retākiem gadījumiem.

10. Alias.

Ja paskatās uz iepriekšējo piemēru, jūs pamanīsiet, ka ir izsauktas divas kolonnas nosaukums.. Tā sajauc, tāpēc uzstādīsim vienu no atkārtotām kolonnām, piemēram, nosaukums. no galda game_developers. tiks saukts attīstītājs..

Mēs varam arī samazināt pieprasījumu, norādot tabulas nosaukumu pseidonīmi: video spēles. Nosaukt spēles., game_developers. - devs.:

Atlasiet spēles. Zame, spēles

11. Datu atjauninājums

Bieži vien mums ir jāmaina dati dažās rindās. SQL, tas tiek darīts, izmantojot atjaunināšanas instrukciju. Atjaunināšanas paziņojums sastāv no:

  • Tabulas, kurās vērtība ir aizstājējai;
  • Kolonnu un to jauno vērtību nosaukumi;
  • Izvēlēts ar to, kur mēs vēlamies atjaunināt. Ja tas netiek darīts, tad visas līnijas mainīsies tabulā.

Zemāk ir tabula tV sērijas. Ar TV sēriju ar savu vērtējumu. Tomēr tabula izzūd neliela kļūda: lai gan sērija Troņu spēles Un aprakstīts kā komēdija, viņš patiesībā nav tā. Let's fiksēt to!

Tabulas dati TV_series Update TV_Series Iestatiet žanru \u003d "DRAM", kur ID \u003d 2;

12. Datu dzēšana

Dzēšot tabulas rindu ar SQL ir ļoti vienkāršs process. Viss, kas Jums nepieciešams, ir izvēlēties tabulu un virkni, kuru vēlaties noņemt. Izdzēsim pēdējo virkni no iepriekšējā parauga tabulā. tV sērijas.. Tas tiek darīts, izmantojot instrukciju\u003e Dzēst

Dzēst no TV_Series kur ID \u003d 4

Esiet uzmanīgi, rakstot dzēšanas instrukciju un pārliecinieties, ka ir klāt stāvoklis, pretējā gadījumā visas tabulas līnijas tiks izdzēstas!

13. Dzēst tabulu

Ja mēs vēlamies izdzēst visas līnijas, bet atstāt tabulu pati, tad izmantot saīsināt komandu:

Saīsināt tabulu table_name;

Gadījumā, kad mēs patiešām vēlamies dzēst un datus, un pats tabulu, mēs izmantosim pilienu komandu:

Drop tabulas table_name;

Esiet ļoti uzmanīgi ar šīm komandām. Tos nevar atcelt! / P\u003e

Par to mēs pabeigt mūsu SQL apmācību! Mēs neesam daudz teicis, bet tas, ko jūs jau zināt, būtu pietiekami, lai sniegtu jums dažas praktiskas iemaņas jūsu tīmekļa karjerā.

Mēs turpinām studēt SQL Server iespējas no Microsoft un savukārt mums ir komponents Pilna teksta meklēšana, Krievu versija ir " Pilna teksta meklēšana"Un tagad mēs uzzināsim, kāpēc tas ir nepieciešams, un kā īstenot šo visvairāk pilna teksta meklēšanu SQL serverī, izmantojot šo komponentu.

Un sāksim, protams, ņemot vērā pilna teksta meklēšanas pamatus, t.i. Kas tas ir un par kuru tas parasti ir nepieciešams.

Kas ir pilna teksta meklēšana?

Pilna teksta meklēšana - Tas ir meklēt vārdus vai frāzes teksta datos. Parasti šāds meklēšanas veids tiek izmantots, lai meklētu tekstu lielā datu apjomā, piemēram, tabulā ar miljonu vai vairāk rindām, jo \u200b\u200btas ir ievērojami ātrāks par normālu meklēšanu, ko var īstenot, izmantojot līdzīgu dizainu.

Pilna teksta meklēšana ietver īpaša indeksa izveidi ( tas atšķiras no parastajiem rādītājiem) Teksta dati, kas ir sava veida vārdnīcā, kas atrodami šajā datā.

Izmantojot pilna teksta meklēšanu, jūs varat īstenot sava veida meklētājs Dokumenti ( tiem. Rinda), saskaņā ar vai frāzes jūsu uzņēmuma datubāzē. Tā kā papildus ātrajam darbam tam ir arī iespēja atrast atrastos dokumentus, t.i. Uzglabāt katra atrastā līnijas rangu, citiem vārdiem sakot, jūs varat atrast visatbilstošākos ierakstus, t.i. Vispiemērotākais jūsu pieprasījumam.

Pilna teksta meklēšanas funkcijas MS SQL Server

  • Pilna teksta meklēšanas SQL serveros jūs varat meklēt ne tikai atsevišķus vārdus vai frāzes, bet arī ar prefiksu izteiksmes, piemēram, iestatiet vārdu vai frāzes tekstu;
  • Jūs varat arī meklēt vārdus uz WordForms, piemēram, dažāda veida darbības vārdi vai lietvārdi vienīgajā un daudzskaitlī, ti. ar atvasinātas izteiksmes;
  • Jūs varat izveidot vaicājumu, lai atrastu vārdus vai frāzes, kas atrodas blakus citiem vārdiem vai frāzēm, t.i. izteiksmes;
  • Ir iespēja atrast konkrēta vārda sinonīmi veidi (tēzaurs), ti.e. Piemēram, ja tēzaurs to nosaka " Automašīna"Un" Mašīna"- Tie ir sinonīmi, tad, meklējot vārdu" Automašīna»Iegūtais komplekts ietvers līnijas, kas satur vārdu" Mašīna»;
  • Vaicājumā varat norādīt vārdus vai frāzes svērtās vērtības, piemēram, ja vaicājumā ir norādīti daži vārdi vai frāzes, tad tos var piešķirt no 0,0 līdz 1,0 ( 1.0 nozīmē, ka tas ir vissvarīgākais vārds vai frāze);
  • Lai netiktu apsvērts, meklējot dažus vārdus, kurus varat izmantot " stop vārdu saraksts", I.e. Saskaņā ar šo sarakstu meklēšana netiks izpildīta.

Sagatavošanās pilnas teksta meklēšanas ieviešanai MS SQL Server

Pirms sākat izveidot pilna teksta meklēšanu, jums ir jāzina vairāki svarīgi punkti:

  • Lai īstenotu pilna teksta meklēšanas komponentu pilnas teksta meklēšanu ( Pilna teksta meklēšana) Jāuzstāda;
  • Tabulā var būt tikai viens pilna teksta indekss;
  • Lai izveidotu pilna teksta indeksu, tabulā jāiekļauj viens unikāls indekss, kas ietver vienu kolonnu un neļauj nulles vērtībām. Ieteicams izmantot unikālu klasteru indeksu ( vai vienkārši primārā atslēga), kura pirmā sleja ir jābūt veselam skaitlim;
  • Pilna teksta indeksu var izveidot uz kolonnām ar datu tips: char, varchar, NCARCHARCHAR, teksts, nText, attēlu, XML, varbarijas vai varbinary (max);
  • Lai izveidotu pilna teksta indeksu, vispirms jāizveido pilna teksta katalogs. Sākot ar SQL Server 2008, pilna teksta katalogs ir loģiska koncepcija, kas apzīmē pilnu teksta indeksu grupu, t.i. ir virtuāls objekts un nav iekļauts failu grupā ( ir veids, kā izveidot pilnu teksta indeksu, izmantojot "Master", kurā direktoriju var izveidot vienlaicīgi ar indeksu, šī metode, ko mēs uzskatīsim tieši zemāk zemāk).

Piezīme! Īstenot pilnu teksta meklēšanu es būšu uz piemēru SQL Server 2008 R2 versiju. Tāpat ir norādīts, ka pilna teksta meklēšanas komponents jau ir instalēts, ja ne, tad instalējiet to, pievienojot atbilstošo komponentu, izmantojot "SQL Server instalācijas centru", I.E. Ielieciet atbilstošu ērču.

Turpmākajos piemēros kā līdzeklis, lai izveidotu un pārvaldītu pilna teksta katalogus un indeksus, es izmantošu SQL Server Management Studio.

Avota dati, lai izveidotu pilna teksta meklēšanu

Mēs pieņemam, ka mums ir testbāžu datu bāze, un ir demonstrējama tabula, kurā ir tikai divi lauki, pirmais (ID) ir primārā atslēga, un otrais (textData) ir teksta dati, par kuriem mēs pilnībā īstenosim pilnu -Teksta meklēšana..

Izveidot tabulu liecināmā (ID inttentitāte (1,1) nav , textdata varchar (500) , ierobežojums pk_testable primārais taustiņš kopu (ID ASC)))

Piemēram, tajā būs šādi dati.


Pilna teksta kataloga izveide SQL Server

Lai izveidotu pilnu teksta direktoriju, kā arī indeksu var izmantot vai SSMS grafisko interfeisu vai T-SQL instrukcijas, mēs analizēsim abus veidus.

Pilna teksta direktorijas izveide T-SQL

Izveidot pilnuText katalogu testcatalog ar akcentu_sensitivity \u003d uz kā noklusējuma autorizācijas dbo iet

  • Fulltext katalogu - komandu izveidot pilnu teksta direktoriju;
  • Testcatalog - mūsu pilnas teksta kataloga nosaukums;
  • Ar Accent_sensitivity (ON | OFF) - opcija norāda, vai pilna teksta katalogā ņems vērā diakritiskās pazīmes pilna teksta indeksēšanai. Pēc noklusējuma;
  • Kā noklusējuma variants, lai norādītu, ka direktorija ir noklusējuma direktorija. Pilna teksta indeksa gadījumā noklusējuma direktoriju lieto, nepārprotami norādot direktoriju;
  • Autorizācija DBO - Iestata pilnas teksta direktorijas īpašnieku, tas var būt lietotājs vai datu bāzes loma. Iebildums Šis gadījums Mēs norādījām Dbo lomu.

Pilnas teksta kataloga izveide grafiskais interfeiss Vadības studija.

Precīzs pilna teksta direktorijs var izveidot vadības studijas grafiskā saskarnē. Lai to izdarītu, atveriet datubāzi, dodieties uz mapi Uzglabāšana -\u003e Pilna teksta katalogi, noklikšķiniet uz labās peles pogas uz šī vienuma un izvēlieties " Izveidojiet pilnu teksta katalogu».


Tiks atvērts kataloga izveides logs, kur norādīsim direktorijas nosaukumu un tās iespējas.


Mainot un noņemot pilna teksta katalogu SQL Server

Lai mainītu direktorijas opcijas, varat izmantot Alter FulleText katalogu instrukciju, lai padarītu mūsu katalogu, lai ņemtu vērā diakritiskās zīmes, jo mēs rakstām SQL instrukciju, kas atjaunos mūsu direktoriju ar jaunu iespēju.

Alter Fulltext Katalogs TestCatalog Atjaunot ar Accent_sensitivity \u003d Off Go

Lai izdzēstu direktoriju, varat izmantot T-SQL instrukciju, piemēram,

Drop Fulltext Katalogs TestCatalog

Tas viss varētu tikt darīts Gui Guiement Studio ( lai mainītu "Properties" direktorijas parametrus, lai izdzēstu "Dzēst")

Pilna teksta indeksa izveide SQL Server

Pēc pilnas teksta direktorijas izveides varat sākt izveidot pilna teksta indeksu tajā. Mūsu gadījumā mēs vēlamies izveidot pilna teksta indeksu, kurā ir iesaistīts destable textdata lauks.

Pilna teksta indeksa izveide T-SQL

Lai izveidotu pilna teksta indeksu, varat uzrakstīt šādu SQL instrukciju

Izveidot pilnaText indeksu testējamā (textdata) taustiņu indekss pk_testable on (testcatalog) ar (change_tracking auto) iet

  • Izveidot FullteXt indeksu - komandu izveidot pilna teksta indeksu;
  • Liecināmā (textdata) - tabula un kolonna, kas iekļauta indeksā;
  • Galvenais indekss pk_testable - testa galda unikālā indeksa nosaukums;
  • ON (TestCatalog) - norādiet, ka pilna teksta indekss tiks izveidots TestCatalog pilna teksta direktorijā. Ja nenorādīsiet šo parametru, indekss tiks izveidots noklusējuma pilna teksta direktorijā;
  • Ar (Change_tracking Auto) - mēs sakām, ka visas izmaiņas, kas tiks ievadītas bāzes tabulā (liecināmā) automātiski parādīsies mūsu pilna teksta indeksā, t.e. Automātiska pildīšana.

Pilna teksta indeksa izveide vadības studijā GUI

Pilna teksta indeksu var izveidot, izmantojot un grafiskos rīkus, lai šo atvērtu īpašības pilna teksta kataloga un doties uz vienumu " Tabulas vai skati"Izvēlieties vēlamo tabulu, lauku, unikālu indeksu un veidu, kā sekot izmaiņām. Mūsu gadījumā mums ir tikai viena pieejamā tabula un viens lauks.


Pilna teksta indeksa izmaiņas un izņemšana

Ja nepieciešams, varat mainīt pilnā teksta indeksa parametrus. Mainīsim veidu, kā izsekot izmaiņas no automātiskās uz rokas. Lai mainītu grafisko interfeisu, varat izmantot " Pilna teksta kataloga rekvizīti -\u003e tabulas vai skati", Ko mēs izmantojām, izveidojot pilna teksta indeksu.

Vai arī varat uzrakstīt šādu kodu

Alter FullText indekss uz liecināmā komplekta maiņa_tracking \u003d Manual

Lai izdzēstu pilna teksta indeksu, tas ir pietiekami, lai vienkārši izdzēst tabulu no saraksta, kas saistīti ar pilnu teksta direktoriju tajā pašā logā " Pilna teksta kataloga rekvizīti -\u003e tabulas vai skati»


Vai uzrakstiet T-SQL kodu

Drop Fultext indekss uz destable

Pilna teksta kataloga un indeksa izveide, izmantojot vedni

Kā jau minēju pirmo teksta direktoriju, un indeksu var izveidot, izmantojot meistaru, t.i. Ar soļiem, lai to izdarītu, noklikšķiniet uz peles labās pogas uz galda, kuru mēs vēlamies iekļaut pilnu teksta meklēšanu un izvēlēties " Pilna teksta indekss -\u003e Noteikt pilna teksta indeksu».

Piezīme! Pirms tam es izdzēsu direktoriju un indeksu, ko mēs izveidojām iepriekšējos piemēros.


Tā rezultātā tiks uzsākts SQL Server pilnas teksta indeksēšanas vednis.



Tad kolonna, kas tiks iekļauta pilna teksta indeksā.


Tad jums ir nepieciešams izvēlēties izmaiņu izsekošanas metodi.


Norādiet kataloga nosaukumu un tās iespējas, lai to izveidotu, jo tiek pieņemts, ka nav direktoriju, ja tas būtu, tad mēs to varētu izvēlēties.


Šeit mēs varam pielāgot grafiku pilnas teksta kataloga aizpildīšanai.


Lai izveidotu katalogu un indeksu, lai noklikšķinātu uz klikšķi " Gatavs».


Nākamajā logā mēs redzēsim rezultātu izpildes operāciju, lai izveidotu pilna teksta direktoriju un indeksu. Manā gadījumā viss bija veiksmīgs.


Tādējādi mēs vienlaikus pabeiguši pilnas teksta direktorijas un indeksa izveidi, izmantojot vedni.

Pilna teksta pieprasījumu piemēri

Es uzreiz teikt, ka sīkāk pilna teksta pieprasījumos mēs izskatīsim šādos materiālos, un līdz šim, kā piemērs un apstiprina, ka mūsu pilnas teksta meklēšana darbojas, rakstīsim pāris vienkāršus pilna teksta pieprasījumus.

Ja atceraties, mūsu liecināmā tabula satur tehnoloģiju definīcijas, programmēšanas valodas, kopumā definīcijas sfēras saistītu to. Pieņemsim, ka mēs vēlamies iegūt visus ierakstus, kuros ir minēts Microsoft, jo mēs rakstām pilnu teksta pieprasījumu atslēgvārds Satur, piemēram:

Izvēlieties * no testaTable, kur satur (textdata, "Microsoft")


Mēs saņēmām rezultātu, bet, piemēram, mums ir arī kārtot to par atbilstību, citiem vārdiem sakot, kuras līnijas atbilst mūsu pieprasījumam. Lai to izdarītu, mēs izmantosim tvertni funkciju, kas atrodas katram atrastajam ieraksts.

Atlasiet tabulu1.ID kā ID, Rowrank.rank AS, table1.TextData no testaTable table1 iekšējā pievienoties containstable (testatable, textdata, "" Microsoft ") kā Rowrank uz table1.id \u003d Rowrank. Rowrank.rank Desc


Kā redzat, rangs ir piestiprināts un līnijas ir sakārtotas. Ranking algoritms pati, jo vairāk informācijas par pilna teksta meklēšanu, var atrast SQL Server elektronisko dokumentāciju.

Tas liecina, lai pabeigtu, es ceru, ka viss bija skaidrs, veiksmi!

Pieprasījumi ir rakstīti bez pasargāšanas citātiem, jo Mysql, MS SQL. un Postgree tie ir atšķirīgi.

SQL pieprasījums: norādīto (nepieciešamo) laukus no tabulas

Izvēlieties ID, Country_title, Count_people no table_name

Mēs saņemam sarakstu ar ierakstiem: visas valstis un to iedzīvotāju skaits. Vēlamo lauku nosaukumu norāda komati.

Izvēlieties * no table_name

* Norāda visus laukus. Tas ir, būs redzams Viss Datu lauki.

SQL Pieprasījums: displeja ieraksti no tabulas, izņemot dublikātus

Izvēlieties atšķirīgu Country_title no table_name

Mēs saņemam sarakstu ar ierakstiem: valstis, kurās atrodas mūsu lietotāji. Lietotāji var būt daudz viena valsts. Šajā gadījumā tas ir jūsu pieprasījums.

SQL pieprasījums: displeja ierakstus no galda uz konkrētu stāvokli

Izvēlēties ID, Country_title, City_title no table_name, kur Count_People\u003e 100000000

Mēs saņemam sarakstu ar ierakstiem: valstis, kur cilvēku skaits ir vairāk nekā 100 000 000.

SQL Pieprasījums: displeja ieraksti no pieteikuma tabulas

Izvēlieties ID, City_title no Table_name Pasūtīt pēc City_Title

Mēs saņemam sarakstu ar ierakstiem: pilsētas alfabētiskā secībā. Sākumā a, beigās Ya.

Izvēlieties ID, City_title no Table_name pasūtījuma ar City_title Desc

Mēs saņemam sarakstu ar ierakstiem: pilsētas pretējā ( Lakta). Sākumā, es, beigās A.

SQL vaicājums: ierakstu skaita skaitīšana

Izvēlieties skaits (*) no table_name

Mēs saņemam ierakstu skaitu (numuru) tabulā. Šajā gadījumā nav ierakstu saraksta.

SQL vaicājums: vēlamā rekorda diapazona izeja

Izvēlieties * no table_name Limit 2, 3

Mēs saņemam 2 (otro) un 3 (trešo) ierakstu no tabulas. Pieprasījums ir noderīgs, izveidojot navigāciju tīmekļa lapās.

SQL pieprasa nosacījumus

Parādīt ierakstus no tabulas uz konkrētu stāvokli, izmantojot loģiskos operatorus.

SQL pieprasījums: būvniecība un (un)

Izvēlieties ID, City_title no table_name, kur valsts \u003d "Krievija" un eļļa \u003d 1

Mēs saņemam sarakstu ar ierakstiem: pilsētas no Krievijas UN Piekļūt eļļai. Kad tiek izmantots operators Un., Man jāsakrīt abiem apstākļiem.

SQL pieprasījums: dizains vai (vai)

Izvēlieties ID, City_title no table_name, kur valsts \u003d "Krievija" vai valsts \u003d "ASV"

Mēs saņemam sarakstu ar ierakstiem: visas pilsētas no Krievijas Vai ASV. Kad tiek izmantots operators Vai., tai jāsakrīt vismaz vienam nosacījumam.

SQL vaicājums: dizains un nevis (un ne)

Izvēlieties ID, user_login no table_name, kur valsts \u003d "Krievija" un nav count_comments<7

Mēs saņemam sarakstu ar ierakstiem: visi lietotāji no Krievijas UN Izgatavots NE MAZĀK 7 komentāri.

SQL pieprasījums: in (b) dizains

Izvēlieties ID, user_login no table_name, kur valsts ("Krievija", "Bulgārija", "Ķīna")

Mēs saņemam sarakstu ierakstu: visi lietotāji dzīvo ( In.) (Krievija vai Bulgārija vai Ķīna)

SQL pieprasījums: nav projektēšanā (ne)

Izvēlieties ID, user_login no table_name, kur valsts nav ("Krievija", "Ķīna")

Mēs saņemam sarakstu ar ierakstiem: visi lietotāji, kas dzīvo, nav ( NAV IEKŠĀ.) (Krievija vai Ķīna).

SQL pieprasījums: Vai nulles dizains (tukšas vai ne tukšas vērtības)

Izvēlieties ID, user_login no table_name, kur statuss ir null

Mēs saņemam sarakstu ierakstu: visi lietotāji, kur statuss nav definēts. Null ir atsevišķs temats, un tāpēc to pārbauda atsevišķi.

Izvēlieties ID, user_login no table_name, kur valsts nav null

Mēs saņemam sarakstu ar ierakstiem: visi lietotāji, kur ir definēts statuss (nav nulle).

SQL pieprasījums: kā dizains

Izvēlieties ID, user_login no table_name, kur uzvārds, piemēram, "Ivan%"

Mēs saņemam ierakstu sarakstu: lietotāji, kuriem ir uzvārds sākas ar kombināciju "Ivan". % Zīme nozīmē jebkuru skaitu jebkuru rakstzīmju. Lai atrastu signālu%, jums ir nepieciešams izmantot skrīningu "Ivan \\%".

SQL vaicājums: starp dizainu

Izvēlieties ID, user_login no table_name, kur alga ir no 25000 līdz 50000

Mēs saņemam sarakstu ar ierakstiem: lietotāji, kuri saņem algu no 25 000 līdz 50 000 ieskaitot.

Loģikas operatori ir ļoti daudz, tāpēc jūs sīkāk izpētīsiet SQL Server dokumentāciju.

Kompleksie SQL pieprasījumi

SQL vaicājums: vairāku pieprasījumu apvienošana

(Select ID, user_login no table_name1) savienība (izvēlieties ID, user_login no table_name2)

Mēs saņemam sarakstu ar ierakstiem: lietotāji, kas ir reģistrēti sistēmā, kā arī tiem lietotājiem, kuri ir reģistrēti forumā atsevišķi. Savienības operatoru var apvienot vairākus pieprasījumus. Savienība rīkojas kā atsevišķi, tas ir, atkārtojas atkārtotas vērtības. Lai iegūtu absolūti visus ierakstus, jums ir nepieciešams izmantot savienību visu operatoru.

SQL pieprasījums: skaitot max, min, summa, AVG, skaitīšanas lauka vērtības

Viena, maksimālā skaitītāja vērtība tabulā:

Izvēlieties Max (Counter) no table_name

Izejas vienu, minimālās skaitītāju vērtības tabulā:

Izvēlieties min (skaitītājs) no table_name

Visu skaitītāju vērtību produkciju:

Izvēlieties summu (skaitītājs) no table_name

Vidējā skaitītāja vērtības produkcija tabulā:

Izvēlieties AVG (Counter) no table_name

Skaitītāju skaita produkciju tabulā:

Izvēlieties skaits (skaitītājs) no table_name

Skaitītāju skaita produkciju darbnīcā 1. tabulā:

Izvēlieties Count (Counter) no table_name, kur birojs \u003d "Veikala numurs 1"

Tās ir populārākās komandas. Ieteicams izmantot SQL pieprasījumus par šāda veida skaitīšanu, jo datu apstrādes ātrumā nav salīdzināta programmēšanas vide nekā SQL Server, apstrādājot savus datus.

SQL vaicājums: grupēšanas ieraksti

Atlasiet kontinentu, summu (Country_area) no valsts grupas ar kontinentu

Mēs saņemam sarakstu ar ierakstiem: ar nosaukumu kontinenta un ar kvadrātu visu savu valstu. Tas ir, ja ir atsauces grāmata par valstīm, kurās katrai valstij ir savu teritoriju, pēc tam, izmantojot grupu pēc dizaina, jūs varat uzzināt katra kontinenta lielumu (pamatojoties uz kontinentu grupēšanu).

SQL pieprasījums: izmantojot vairākas tabulas, izmantojot alias (alias)

Izvēlieties O.ODORE_NO, O.Amount_Paid, C.c pasūtījumi kā O, Klients kā ar O.Custno \u003d C.Custno un C.City \u003d "Tyumen"

Mēs saņemam sarakstu ar ierakstiem: pasūtījumi no pircējiem, kas dzīvo tikai Tyumen.

Faktiski ar pareizi plānoto datubāzi šāda veida, vaicājums ir visbiežāk, tāpēc īpašs operators tika ieviests MySQL, kas darbojas reizēm ātrāk nekā iepriekš minēto kodu.

Izvēlieties O.ODORE_NO, O.Amount_Paid, Z.comPany no pasūtījumiem kā o pa kreisi pievienoties klientam kā Z ON (Z.Custno \u003d O.Custno)

Ligzdotās subqueries

Izvēlieties * no table_name, kur algas \u003d (izvēlieties max (algu) no darbinieka)

Mēs saņemam vienu ierakstu: lietotāja informācija ar maksimālu algu.

Uzmanību! Nested subqueries ir viena no šaurākajām vietām SQL serveros. Kopā ar tās elastību un varu, tie arī ievērojami palielina slodzi uz servera. Kas noved pie citu lietotāju katastrofālas palēnināšanās. Ir ļoti bieži rekursīvu zvanu gadījumi, kad pievienoti vaicājumi. Tāpēc es stingri iesaku neizmantot ieguldītus pieprasījumus, bet sadalīt tos mazākos. Vai izmantojiet iepriekš aprakstīto kreiso savienojumu kombināciju. Papildus šāda veida pieprasījumiem ir paaugstināts drošības pārkāpuma fokuss. Ja jūs nolemjat izmantot ligzdotās subqueries, tad ir nepieciešams tos ļoti rūpīgi izstrādāt un sākt darīt datu bāzes kopijas (testa bāzes).

SQL pieprasa mainīt datus

SQL pieprasījums: ievietot

Instrukcija Ievietot. Ļaujiet ievietot ierakstus tabulā. Vienkārši vārdi, izveidojiet līniju ar datiem tabulā.

Opcijas numurs 1. Instrukcija bieži izmanto:

Ievietojiet table_name (ID, user_login) vērtībās (1, "Ivanov"), (2, "Petrov")

Tabulā " table_name."Tiks ievietoti 2 (divi) lietotāji nekavējoties.

Opcijas numurs 2. Tas ir ērtāk izmantot stilu:

Ievietojiet table_name iestatīt ID \u003d 1, user_login \u003d "Ivanov"; Ievietojiet table_name iestatīt ID \u003d 2, user_login \u003d "Petrov";

Tam ir savas priekšrocības un trūkumi.

Pamata trūkumi:

  • Daudzi mazi SQL vaicājumi tiek veikti nedaudz lēnāk nekā viens liels SQL vaicājums, bet citi pieprasījumi stāvēs pakalpojumu rindā. Tas ir, ja liels SQL vaicājums tiks pabeigts 30 minūtes, tad visā šajā laikā pārējie pieprasījumi smēķēs bambusa un gaidīs viņu kārtu.
  • Pieprasījums ir milzīgs nekā iepriekšējā izvēle.

Galvenās priekšrocības:

  • Mazo SQL pieprasījumu laikā citi SQL pieprasījumi nav bloķēti.
  • Ērtības lasījumā.
  • Elastība. Šajā iemiesojumā jūs nevarat izpildīt struktūru, bet pievienot tikai nepieciešamos datus.
  • Veidojot līdzīgi arhīvus, jūs varat viegli kopēt vienu rindu un sākt to caur komandrindu (konsole), tādējādi neatjaunojot visu arhīvu.
  • Ieraksta stils ir līdzīgs atjaunināšanas instrukcijai, kas ir vieglāk atcerēties.

SQL pieprasījums: atjauninājums

Update table_name Iestatiet user_login \u003d "Ivanov", user_surname \u003d "Ivanov", kur ID \u003d 1

Tabulā " table_name."Ierakstos ar ID numuru \u003d 1, lietotāja_login un lietotāja_surname lauki tiks mainīti uz norādītajām vērtībām.

SQL pieprasījums: dzēst

Dzēst no table_name, kur ID \u003d 3

Table_name tabula tiks dzēsta ar numuru 3 ID.

  1. Visi lauka nosaukumi ir ieteicams rakstīt ar maziem burtiem un, ja nepieciešams, sadalīt tos caur piespiedu telpu "_", lai saderību ar dažādām programmēšanas valodām, piemēram, Delphi, Perl, Python un Ruby.
  2. SQL komandas raksta lielos lasāmības vēstulēs. Atcerieties vienmēr, ka pēc tam, kad jūs varat izlasīt kodu un citus cilvēkus, un, visticamāk, jūs pats, izmantojot n summu laika.
  3. Zvaniet laukiem no lietvārda sākuma un pēc tam rīkoties. Piemēram: City_Status, user_login, user_name.
  4. Mēģiniet izvairīties no dublēšanas vārdiem dažādās valodās, kas var izraisīt problēmas SQL, PHP vai Perl valodās, piemēram, (nosaukums, skaits, saite). Piemēram: saite var izmantot MS SQL, bet MySQL rezervētā.

Šis materiāls ir īss sertifikāts ikdienas darbam un nav izlikties uz super mega autoritatīvu avotu, kas ir avots SQL vaicājumu datu bāzē.