Hvordan søke gjennom en sql-tabell. Arbeid med databasen. Enkle SQL-spørringer. Avansert datafiltrering. OG- og ELLER-operatører

La oss starte med grunnleggende spørsmål. Men hva med uten dem? Den mest lakoniske formen for SQL-spørring oversettes som "Jeg vil hente alle data fra denne tabellen". Resultatet av neste spørring er alle poster med alle felt fra D_STAFF-tabellen.

VELG * FRA D_STAFF

Skriv inn SQL-spørringen i opplæringen.

Velg [SQL-seksjon] i utforskeren til venstre, klikk på [SQL-knapp] over listen til høyre, skriv inn søket ditt og klikk på [SQL-knapp] igjen. Etter å ha bekreftet utførelsen av forespørselen, vil listen til høyre se slik ut. I tilfellet er alt enklere: bare skriv inn SQL-spørringen i det aktuelle feltet og klikk på [Kjør].


Resultatet av å utføre den enkleste SQL-spørringen.

Det er absolutt praktisk å bruke (*) etter SELECT-setningen, spesielt hvis du ikke vet hvilke felt i tabellen som er generelt, men også kostbare - strukturene som lagrer søkeresultatet bruker mye "ekstra" minne, og tiden for å utføre selve spørringen fra dette bare øker. Det neste alternativet er mye mer å foretrekke hvis du bare trenger informasjon om fullt navn. medarbeider og hans erfaring. Oversettelsen er omtrent slik: "Jeg vil bare vite dette og dette om alle fra bordet ..."

VELG S_NAME, S_EXPERIENCE FRA D_STAFF

Resultatet av den siste SQL-spørringen tar merkbart mindre plass "i bredden".


Valg av verdier for spesifikke felt i tabellen.

Trinn 2. SQL-spørring med et enkelt utvalgskriterium

De enkleste spørringene er praktisk talt ikke anvendelige i praksis, siden de "trekker ut" absolutt alle poster fra den spesifiserte tabellen, og det kan være hundretusenvis av dem. DBMS kan rett og slett nekte å oppfylle en slik forespørsel, og RAM-en på klientens maskin kan rett og slett ikke være nok. Hva du skal gjøre med resultatene av slike spørringer, selv om de utføres riktig, er ikke alltid klart, selv om det for noen vil gjøre det. For å legge restriksjoner på utvalget av postene du trenger, brukes WHERE nøkkelordet i SQL. Forespørselen nedenfor velger kun ansatte med mindre enn 5 års arbeidserfaring.

VELG S_NAME, S_EXPERIENCE FRA D_STAFF WHERE S_EXPERIENCE


Bruk enkelt kriterium utvalg av poster.

Trinn 3. SQL-spørring med sammensatt utvalgskriterium

Hva er vi for sammensatte utvalgskriterier poster, tror jeg det ikke er nødvendig å forklare. For det samme som forespørsler med enkle kriterier. Forhold kombineres ved bruk av boolske operasjoner konjunksjoner og disjunksjoner(operatører "AND" (AND) og "OR" (OR)), og er gruppert ved hjelp av parenteser. Følgende forespørsel vil returnere poster over ansatte med mindre enn 5 års erfaring og med en ekstra begrensning på stillingen deres.

VELG S_NAME, S_EXPERIENCE, S_POSITION FRA D_STAFF WHERE (D_STAFF.S_POSITION 20) OG D_STAFF.S_EXPERIENCE


Bruk komplekst kriterium utvalg av poster.

Trinn 4. MELLOM operatør

BETWEEN-operatoren forenkler syntaksen for å beskrive kriterier som spesifiserer en rekke gyldige verdier. I stedet for MELLOM 3 OG 7 under kan man skrive D_STAFF.S_EXPERIENCE> = 3 OG D_STAFF.S_EXPERIENCE<=7 . Первый вариант способствует наглядности запроса – это раз, поиск на стороне СУБД может выполняться по отдельному алгоритму, специально оптимизированному для подобного вида ограничений – это два.

VELG S_NAME, S_EXPERIENCE, S_POSITION FRA D_STAFF WHERE (D_STAFF.S_POSITION 20) OG D_STAFF.S_EXPERIENCE MELLOM 3 OG 7


Bruke BETWEEN-operatoren.

Trinn 5. LIKE-operatør

Denne fantastiske operatøren lar deg legge begrensninger på verdiene til tekstfelt ved hjelp av maler. Jeg vil ikke forklare syntaksen, jeg tror at alt er klart fra eksempelet. Vi foretar søk etter ansatte, med fullt navn. starter med "MED", i midten skal det være "Aksel" og alt skal ende på "Ich"... I noen DBMS-er kan LIKE-nøkkelordet også brukes med dato- og klokkeslettverdier.

VELG S_NAME FRA D_STAFF HVOR S_NAME LIKE "С%" OG S_NAME LIKE "% Shaft%" OG S_NAME LIKE "% ich"

VELG S_NAME FRA D_STAFF HVOR S_NAME LIKE "С% Shaft% ich"


Bruker LIKE-operatoren.

Trinn 6. Aliaser for tabeller og felt

Tabell- og feltnavnene som brukes i spørringen kan defineres aliaser... Hvordan dette gjøres er vist nedenfor. Hvorfor dette gjøres vil bli vist i de neste trinnene, inkludert trinn 7, og dette eksemplet illustrerer det mest åpenbare bruke aliaser i SQL- utførelse av søkeresultatet i samsvar med kravene for å gjøre det lettere for en person å oppfatte det. AS-nøkkelordet brukes til å definere et alias for en tabell eller et felt i SQL. Spørreresultatet (tabelloverskriften) i denne varianten ser mer egnet ut for å lage en rapport på grunnlag av det.

VELG S_NAME AS Ansatt, S_EXPERIENCE AS [Arbeidserfaring], S_POSITION AS Tittel FRA D_STAFF AS STAFF


Bruke tabell- og feltaliaser.

Trinn 7. Forholdet "sjef - underordnet"

Dette eksemplet fullfører de "første trinnene" for å lære SQL-spørringer, det vanskeligste av dem. Her "programmerer" vi utstedelsen av en liste over ansatte sammen med deres direkte ledelse. Vanskeligheten er at poster om begge lagres i samme tabell, og her kan du ikke klare deg uten aliaser. DBMS, under spørringsbehandling, vil referere til D_STAFF-tabellen som om det var to forskjellige tabeller (under aliasene STAFF og CHIEF) for å kombinere postene til en enkelt kortege basert på forholdet "sjef - underordnet". Forholdet er modellert som følger: verdien av S_CHIEF_ID-feltet til underordnet tilsvarer verdien av XD_IID-feltet til sjefen hans.

VELG STAFF.S_NAME AS Underordnet, STAFF.S_POSITION AS [Underordnets stilling], CHIEF.S_NAME AS Chief, CHIEF.S_POSITION AS [Chief's position] FRA D_STAFF AS STAFF, D_STAFF SOM CHIEF WHERE STAFF.S_CHIEF_ID = CHIEF


Innhenting av "sjef-underordnet" hierarkiet ved å bruke tabellaliaset i SQL-spørringen.

Vi fortsetter å utforske egenskapene til SQL Server fra Microsoft, og neste på rad har vi en komponent Fulltekstsøk, i den russiske versjonen er det " Fulltekstsøk", Og nå skal vi finne ut hva det er for, og hvordan du implementerer dette fulltekstsøket i SQL-serveren ved å bruke denne komponenten.

Og vi starter selvfølgelig med å se på det grunnleggende om fulltekstsøk, dvs. hva det er og hva er det for.

Hva er fulltekstsøk?

Fulltekstsøk Er et søk etter ord eller uttrykk i tekstdata. Vanligvis brukes denne typen søk til å søke etter tekst i en stor mengde data, for eksempel en tabell med en million eller flere rader, siden det er mye raskere enn et vanlig søk, som kan gjøres ved å bruke LIKE-konstruksjonen.

Fulltekstsøk innebærer opprettelse av en spesiell indeks ( det skiller seg fra vanlige indekser) tekstdata, som er en slags ordbok over ord som forekommer i disse dataene.

Fulltekstsøk kan brukes til å implementere en slags dokumentsøkemotor ( de. strenger), etter ord eller uttrykk i bedriftens database. Siden han i tillegg til sitt raske arbeid også har evnen til å rangere de funnet dokumentene, d.v.s. angi rangeringen av hver funnet rad, med andre ord kan du finne de mest relevante postene, dvs. den mest passende for din forespørsel.

Fulltekstsøkefunksjoner i MS SQL Server

  • I et fulltekstsøk på en SQL-server kan du søke ikke bare etter individuelle ord eller fraser, men også etter prefiksuttrykk, for eksempel, angi teksten til begynnelsen av et ord eller en setning;
  • Du kan også søke etter ord etter ordformer, for eksempel ulike former for verb eller substantiv i entall og flertall, dvs. på avledede uttrykk;
  • Du kan bygge søket ditt for å finne ord eller setninger som er ved siden av andre ord eller setninger, dvs. stedsbevisste uttrykk;
  • Det er mulighet for å søke synonyme former for et bestemt ord (synonymordbok), dvs. for eksempel hvis det er definert i synonymordboken at " Bil"og" En bil"Er synonymer, da når du søker etter ordet" Bil"Resultatsettet vil også inneholde linjer som inneholder ordet" En bil»;
  • I forespørselen kan du angi ord eller uttrykk med vektede verdier, for eksempel, hvis flere ord eller uttrykk er spesifisert i spørringen, kan de tildeles betydning fra 0,0 til 1,0 ( 1.0 betyr at det er det viktigste ordet eller setningen);
  • For ikke å ta hensyn til noen ord i søket, kan du bruke " stopp ordliste", Dvs. Det vil ikke bli utført søk på ord som er inkludert i denne listen.

Forbereder implementering av fulltekstsøk i MS SQL Server

Før du begynner å lage et fulltekstsøk, må du vite noen viktige punkter:

  • For å implementere fulltekstsøk, fulltekstsøk-komponenten ( Fulltekstsøk) må installeres;
  • En tabell kan bare ha én fulltekstindeks;
  • For å lage en fulltekstindeks, må en tabell inneholde én unik indeks som inkluderer én kolonne og ikke tillater nullverdier. Det anbefales å bruke en unik gruppert indeks ( eller bare primærnøkkelen), hvor den første kolonnen må ha en heltallsdatatype;
  • En fulltekstindeks kan opprettes på kolonner med følgende datatyper: char, varchar, nchar, nvarchar, text, ntext, image, xml, varbinary eller varbinary (max);
  • For å lage en fulltekstindeks må du først lage en fulltekstkatalog. Fra og med SQL Server 2008 er en fulltekstkatalog et logisk begrep for en gruppe fulltekstindekser, dvs. er et virtuelt objekt og er ikke en del av filgruppen ( det er en måte å lage en fulltekstindeks ved å bruke "veiviseren", der en katalog kan opprettes samtidig med indeksen, vi vil vurdere denne metoden rett nedenfor).

Merk! Jeg vil implementere fulltekstsøk ved å bruke eksemplet med SQL Server 2008 R2. Det antas også at Full-Text Search-komponenten allerede er installert, hvis ikke, installer den ved å legge til den tilsvarende komponenten gjennom "SQL Server Installation Center", dvs. sjekk den tilsvarende boksen.

I eksemplene nedenfor vil jeg bruke SQL Server Management Studio som et verktøy for å lage og administrere fulltekstkataloger og indekser.

Innledende data for å lage fulltekstsøk

La oss si at vi har en TestBase-database, og den har en TestTable-tabell, der det bare er to felt, den første (id) er primærnøkkelen, og den andre (tekstdata) er tekstdata, som vi vil utføre full- tekstsøk...

CREATE TABLE TestTable (id int IDENTITY (1,1) NOT NULL, textdata varchar (500) NULL, CONSTRAINT PK_TestTable PRIMARY KEY CLUSTERED (id ASC))

For eksempel vil den inneholde følgende data


Lag en fulltekstkatalog i SQL Server

For å lage en fulltekstkatalog så vel som en indeks, kan du bruke enten det grafiske SSMS-grensesnittet eller T-SQL-setninger, vi vil diskutere begge metodene med deg.

Opprette en fulltekstkatalog i T-SQL

LAG FULLTEKSTKATALOG TestCatalog MED ACCENT_SENSITIVITY = PÅ SOM STANDARDAUTORISERING dbo GO

  • CREATE FULLTEXT CATALOG - kommando for å lage en fulltekstkatalog;
  • TestCatalog er navnet på vår fulltekstkatalog;
  • MED ACCENT_SENSITIVITY (PÅ | AV) - alternativet indikerer om fulltekstkatalogen vil ta hensyn til diakritiske tegn for fulltekstindeksering. Standard er PÅ;
  • AS DEFAULT er et alternativ for å indikere at katalogen er standardkatalogen. Hvis du oppretter en fulltekstindeks uten å spesifisere en katalog eksplisitt, brukes standardkatalogen;
  • AUTHORISATION dbo - setter eieren av fulltekstkatalogen, det kan være en bruker eller en databaserolle. I dette tilfellet har vi spesifisert rollen dbo.

Opprette en fulltekstkatalog i Management Studio GUI

Den nøyaktig samme fulltekstkatalogen kan opprettes i Management Studio GUI. For å gjøre dette, åpne databasen, gå til mappen Lagring -> Fulltekstkataloger, høyreklikk på dette elementet og velg " Lag fulltekstkatalog».


Et vindu for å lage en katalog åpnes, hvor vi angir navnet på katalogen og dens alternativer.


Endre og slette en fulltekstkatalog i SQL Server

For å endre katalogalternativene kan du bruke ALTER FULLTEXT CATALOG-setningen, la oss for eksempel få katalogen vår til å slutte å ta hensyn til diakritiske tegn, for dette skriver vi en SQL-setning som vil gjenoppbygge katalogen vår med et nytt alternativ.

ALTER FULLTEXT CATALOG TestCatalog REBUILD WITH ACCENT_SENSITIVITY = OFF GO

For å slette en katalog kan du for eksempel bruke en T-SQL-setning

SLIPPE FULLTEKSTKATALOG TestCatalog

Alt dette kan gjøres i Management Studios grafiske grensesnitt ( for å endre parametrene til "Properties"-katalogen, for å slette "Delete")

Opprette en fulltekstindeks i SQL Server

Etter at du har opprettet en fulltekstkatalog, kan du begynne å lage fulltekstindekser i den. I vårt tilfelle ønsker vi å lage en fulltekstindeks der tekstdatafeltet til testtabellen deltar.

Lag en T-SQL fulltekstindeks

For å lage en fulltekstindeks kan du skrive følgende SQL-setning

LAG FULLTEKSTINDEKS PÅ TestTable (tekstdata) KEY INDEX PK_TestTable PÅ (TestCatalog) MED (CHANGE_TRACKING AUTO) GO

  • CREATE FULLTEXT INDEX - en kommando for å lage en fulltekstindeks;
  • TestTable (tekstdata) - tabellen og kolonnen inkludert i indeksen;
  • KEY INDEX PK_TestTable - navnet på den unike indeksen til testtabellen;
  • PÅ (TestCatalog) - indikerer at fulltekstindeksen vil bli opprettet i TestCatalog fulltekstkatalog. Hvis du ikke spesifiserer denne parameteren, vil indeksen bli opprettet i standard fulltekstkatalog;
  • MED (CHANGE_TRACKING AUTO) - dette er det vi sier at alle endringer som vil bli gjort i basistabellen (TestTable) vil automatisk vises i vår fulltekstindeks, dvs. automatisk fylling.

Opprette en fulltekstindeks i Management Studio GUI

En fulltekstindeks kan opprettes ved hjelp av grafiske verktøy, for dette åpner vi egenskapene til fulltekstkatalogen og går til elementet " Tabeller eller visninger", Velg ønsket tabell, felt, unik indeks og endringssporingsmetode. I vårt tilfelle har vi kun én ledig tabell og ett felt.


Endre og slette en fulltekstindeks

Du kan endre innstillingene for fulltekstindeks om nødvendig. La oss endre sporingen av endringer fra automatisk til manuell som et eksempel. For å endre i det grafiske grensesnittet, kan du bruke vinduet " Fulltekstkatalogegenskaper -> Tabeller eller visninger"Det vi pleide å lage fulltekstindeksen.

Eller du kan skrive følgende kode

ENDRE FULLTEKSTINDEKS PÅ testtabell SET CHANGE_TRACKING = MANUELL

For å slette en fulltekstindeks, er det nok bare å slette tabellen fra listen over objekter knyttet til fulltekstkatalogen i samme vindu " Fulltekstkatalogegenskaper -> Tabeller eller visninger»


Eller skriv T-SQL-kode

SLIPPE FULLTEKSTINDEKSEN PÅ testtabellen

Bruke veiviseren til å lage en fulltekstkatalog og indeks

Som jeg nevnte tidligere, kan fulltekstkatalogen og indeksen lages ved hjelp av veiviseren, dvs. trinn for trinn, for dette høyreklikker vi på tabellen som vi ønsker å inkludere i fulltekstsøket, og velger " Fulltekstindeks -> Definer fulltekstindeks».

Merk! Før jeg gjorde dette, slettet jeg både katalogen og indeksen som vi opprettet i de forrige eksemplene.


Dette vil starte SQL Server Full-Text Indexing Wizard.



Deretter kolonnen som skal inkluderes i fulltekstindeksen.


Deretter må du velge en måte å spore endringer på.


Vi angir navnet på katalogen og dens alternativer for å lage den, siden det antas at vi ikke har en katalog, hvis den var, så kunne vi velge den.


Her kan vi konfigurere tidsplanen for utfylling av fulltekstkatalogen.


For å lage katalogen og indeksen, gjenstår det å klikke på " Klar».


I neste vindu vil vi se resultatet av operasjonene for å lage en fulltekstkatalog og indeks. I mitt tilfelle gikk alt bra.


Dermed fullførte vi opprettelsen av fulltekstkatalogen og indeksen samtidig ved å bruke veiviseren.

Eksempler på fulltekstspørringer

Jeg må si med en gang at vi vil vurdere fulltekstspørringer mer detaljert i følgende materialer, men for nå, som et eksempel og bekreftelse på at vårt fulltekstsøk fungerer, la oss skrive et par enkle fulltekstspørringer.

Hvis du husker, inneholder testtabellen vår definisjoner av teknologier, programmeringsspråk generelt, definisjoner relatert til IT-sfæren. La oss si at vi ønsker å få alle poster der det er en omtale av Microsoft, for dette skriver vi en fulltekstspørring med nøkkelordet CONTAINS, for eksempel:

VELG * FRA TestTable WHERE INNEHOLDER (tekstdata, "" Microsoft "")


Vi fikk resultatet, men la oss si at vi også må sortere det etter relevans, med andre ord hvilke rader som matcher søket vårt mer. For å gjøre dette bruker vi funksjonen CONTAINSTABLE, som tildeler en rangering for hver post som er funnet.

SELECT Table1.id AS ID, RowRank.Rank as, Table1.textdata as FROM TestTable Table1 INNER JOIN CONTAINSTABLE (TestTable, textdata, "" Microsoft "") som RowRank på Table1.id = RowRank. BESTILL ETTER RowRank.RANK DESK


Som du kan se, er rangeringen satt og radene sorteres etter den. Selve rangeringsalgoritmen, samt mer detaljert informasjon om fulltekstsøk, finnes i SQL Server Books Online.

På dette foreslår jeg å avslutte, jeg håper alt var klart, lykke til!

Forespørsler er skrevet uten unnslippende anførselstegn, siden MySQL, MS SQL og PostGree de er forskjellige.

SQL-spørring: får spesifiserte (obligatoriske) felt fra en tabell

SELECT id, country_title, count_people FROM table_name

Vi får en liste over poster: ALLE land og deres befolkning. Navnene på de obligatoriske feltene er atskilt med komma.

VELG * FRA tabellnavn

* angir alle felt. Det vil si at det blir inntrykk ALT datafelt.

SQL-spørring: utdataposter fra en tabell unntatt duplikater

VELG DISTINCT country_title FROM table_name

Vi får en liste over poster: landene der brukerne våre befinner seg. Det kan være mange brukere fra ett land. I dette tilfellet er dette din forespørsel.

SQL-spørring: viser poster fra en tabell i henhold til en spesifisert betingelse

SELECT id, country_title, city_title FROM table_name WHERE count_people> 100000000

Vi får en liste over poster: land der antallet mennesker er mer enn 100 000 000.

SQL-spørring: viser poster fra en tabell med bestilling

SELECT id, city_title FROM table_name ORDER BY city_title

Vi får en liste over poster: byer i alfabetisk rekkefølge. På begynnelsen av A, på slutten av I.

SELECT id, city_title FROM table_name ORDER BY city_title DESC

Vi får en liste over poster: byer i revers ( DESC) ok. I begynnelsen I, på slutten A.

SQL-spørring: teller antall poster

VELG ANTALL (*) FRA tabellnavn

Vi får antall (antall) poster i tabellen. I dette tilfellet er det INGEN liste over poster.

SQL-spørring: skriv ut det nødvendige utvalget av poster

VELG * FRA tabellnavn GRENSE 2, 3

Vi får 2 (andre) og 3 (tredje) poster fra tabellen. Forespørselen er nyttig når du oppretter navigasjon på WEB-sider.

SQL-spørringer med betingelser

Utdata av poster fra en tabell i henhold til en gitt tilstand ved bruk av logiske operatorer.

SQL-spørring: OG konstruksjon

SELECT id, city_title FROM table_name WHERE land = "Russland" OG olje = 1

Vi får en liste over poster: byer fra Russland OG har tilgang på olje. Når operatøren brukes OG, da må begge betingelsene samsvare.

SQL-spørring: OR-konstruksjon

SELECT id, city_title FROM table_name WHERE land = "Russland" ELLER land = "USA"

Vi får en liste over poster: alle byer fra Russland ELLER USA. Når operatøren brukes ELLER, da må minst én betingelse samsvare.

SQL-spørring: OG IKKE konstruksjon

SELECT id, user_login FROM table_name WHERE country = "Russia" OG IKKE count_comments<7

Vi får en liste over poster: alle brukere fra Russland OG hvem lagde IKKE MINDRE 7 kommentarer.

SQL-spørring: IN (B) konstruksjon

SELECT id, user_login FROM table_name WHERE country IN ("Russland", "Bulgaria", "Kina")

Vi får en liste over poster: alle brukere som bor i ( I) (Russland, eller Bulgaria eller Kina)

SQL-spørring: IKKE I konstruksjon

SELECT id, user_login FROM table_name WHERE country NOT IN ("Russland", "Kina")

Vi får en liste over poster: alle brukere som ikke bor i ( IKKE I) (Russland eller Kina).

SQL-spørring: ER NULL-konstruksjon (tomme eller IKKE tomme verdier)

SELECT id, user_login FRA tabellnavn HVOR status ER NULL

Vi får en liste over oppføringer: alle brukere hvor status ikke er definert. NULL er et eget emne og sjekkes derfor separat.

SELECT id, user_login FRA tabellnavn WHERE-tilstand ER IKKE NULL

Vi får en liste over poster: alle brukere hvor status er definert (IKKE NULL).

SQL-spørring: LIKE-konstruksjon

SELECT id, user_login FROM table_name WHERE etternavn LIKE "Ivan%"

Vi får en liste over poster: brukere hvis etternavn begynner med kombinasjonen "Ivan". %-tegnet betyr HVILKE som helst antall tegn. For å finne %-tegnet, må du bruke det escapende "Ivan \%".

SQL-spørring: MELLOM konstruksjon

SELECT id, user_login FRA table_name WHERE lønn MELLOM 25000 OG 50000

Vi får en liste over poster: brukere som mottar lønn fra 25 000 til 50 000 inklusive.

Det er MANGE logiske operatører, så studer SQL-serverdokumentasjonen i detalj.

Komplekse SQL-spørringer

SQL-spørring: kombinerer flere spørringer

(SELECT id, user_login FROM table_name1) UNION (SELECT id, user_login FROM table_name2)

Vi får en liste over poster: brukere som er registrert i systemet, samt de brukerne som er registrert på forumet separat. Flere spørringer kan kombineres med UNION-operatøren. UNION fungerer som SELECT DISTINCT, det vil si at den forkaster dupliserte verdier. For å få absolutt alle poster, må du bruke UNION ALL-operatøren.

SQL-spørring: tellende feltverdier MAX, MIN, SUM, AVG, COUNT

Utgang av én, den maksimale verdien av telleren i tabellen:

VELG MAX (teller) FRA tabellnavn

Utgang av en, minsteverdien til telleren i tabellen:

VELG MIN (teller) FRA tabellnavn

Viser summen av alle telleverdiene i tabellen:

VELG SUM (teller) FRA tabellnavn

Viser gjennomsnittsverdien til telleren i tabellen:

VELG AVG (teller) FRA tabellnavn

Viser antall tellere i tabellen:

VELG ANTALL (teller) FRA tabellnavn

Visning av antall tellere i verksted nr. 1, i tabellen:

VELG ANTALL (teller) FRA tabellnavn WHERE kontor = "Butikk # 1"

Dette er de mest populære kommandoene. Det anbefales, der det er mulig, å bruke SQL-spørringer av denne typen for beregning, siden intet programmeringsmiljø kan sammenlignes i databehandlingshastighet enn SQL-serveren selv når de behandler egne data.

SQL-spørring: gruppering av poster

VELG kontinent, SUM (country_area) FRA land GRUPPE FOR kontinent

Vi får en liste over poster: med navnet på kontinentet og med summen av arealene til alle landene deres. Det vil si, hvis det er en katalog over land der hvert land har sitt område registrert, kan du ved å bruke GROUP BY-klausulen finne ut størrelsen på hvert kontinent (basert på grupperingen etter kontinent).

SQL-spørring: bruk av flere tabeller via alias

SELECT o.order_no, o.amount_paid, c.company FROM orders AS o, customer AS with WHERE o.custno = c.custno AND c.city = "Tyumen"

Vi får en liste over poster: bestillinger fra kunder som bare bor i Tyumen.

Faktisk, med en riktig utformet database av denne typen, er spørringen den hyppigste, derfor ble en spesiell operatør introdusert i MySQL, som fungerer mange ganger raskere enn koden skrevet ovenfor.

SELECT o.order_no, o.amount_paid, z.company FROM orders AS o LEFT JOIN customer AS z ON (z.custno = o.custno)

Nestede underspørringer

VELG * FRA tabellnavn WHERE lønn = (VELG MAX (lønn) FRA ansatt)

Vi får én post: informasjon om brukeren med maksimal lønn.

Merk følgende! Nestede underspørringer er en av flaskehalsene i SQL-servere. Sammen med deres fleksibilitet og kraft øker de også belastningen på serveren betydelig. Noe som fører til en katastrofal nedgang i arbeidet til andre brukere. Tilfeller av rekursive anrop med nestede søk er svært vanlige. Derfor anbefaler jeg sterkt å IKKE bruke nestede spørringer, men å dele dem opp i mindre. Eller bruk LEFT JOIN-kombinasjonen ovenfor. I tillegg til denne typen forespørsler er forespørsler et økt arnested for sikkerhetsbrudd. Hvis du bestemmer deg for å bruke nestede underspørringer, må du designe dem veldig nøye og gjøre de første kjøringene på kopier av databaser (testdatabaser).

SQL-spørringer endrer data

SQL-spørring: INSERT

Bruksanvisning SETT INN lar deg sette inn poster i en tabell. Med enkle ord, lag en linje med data i tabellen.

Alternativ nummer 1. Instruksjonen brukes ofte:

INSERT INTO table_name (id, user_login) VERDIER (1, "ivanov"), (2, "petrov")

I bordet " tabellnavn"2 (to) brukere vil bli satt inn samtidig.

Alternativ nummer 2. Det er mer praktisk å bruke stilen:

INSERT tabellnavn SET id = 1, user_login = "ivanov"; INSERT tabellnavn SET id = 2, user_login = "petrov";

Dette har sine fordeler og ulemper.

De viktigste ulempene:

  • Mange små SQL-spørringer kjører litt langsommere enn én stor SQL-spørring, men andre spørringer vil stå i kø for tjeneste. Det vil si at hvis en stor SQL-spørring utføres i 30 minutter, vil resten av spørringene i løpet av hele denne tiden ryke bambus og vente på sin tur.
  • Forespørselen viser seg å være mer massiv enn den forrige versjonen.

Hovedfordeler:

  • Under små SQL-spørringer blokkeres ikke andre SQL-spørringer.
  • Lett å lese.
  • Fleksibilitet. I dette alternativet kan du ikke følge strukturen, men bare legge til de nødvendige dataene.
  • Når du danner arkiver på denne måten, kan du enkelt kopiere en linje og kjøre den gjennom kommandolinjen (konsollen), og dermed ikke gjenopprette hele ARKIVET.
  • Skrivestilen ligner på UPDATE-setningen, som gjør det lettere å huske.

SQL-spørring: OPPDATERING

OPPDATERING tabellnavn SET user_login = "ivanov", bruker_etternavn = "Ivanov" WHERE id = 1

I bordet " tabellnavn"I posten med id = 1 vil verdiene til feltene user_login og user_surname bli endret til de angitte verdiene.

SQL-spørring: SLETT

SLETT FRA tabellnavn WHERE id = 3

Posten med id-nummer 3 vil bli slettet i tabellen tabellnavn.

  1. Det anbefales å skrive alle feltnavn med små bokstaver og om nødvendig skille dem med et tvungen mellomrom "_" for kompatibilitet med forskjellige programmeringsspråk som Delphi, Perl, Python og Ruby.
  2. Skriv SQL-kommandoer med STORE bokstaver for lesbarhet. Husk alltid at andre kan lese koden etter deg, og mest sannsynlig du selv etter N tid.
  3. Navngi felt fra begynnelsen av substantivet, og deretter handlingen. For eksempel: bystatus, bruker_pålogging, brukernavn.
  4. Prøv å unngå reserveord på forskjellige språk som kan forårsake problemer i SQL, PHP eller Perl, for eksempel (navn, antall, lenke). For eksempel: link kan brukes i MS SQL, men er reservert i MySQL.

Dette materialet er en kort referanse for hverdagsarbeid og hevder ikke å være en supermega autoritativ kilde, som er den primære kilden til SQL-spørringer for en bestemt database.