sql >> Database teknologi >  >> RDS >> Database

SQL-referencetabel:Sådan oprettes og skrives grundlæggende forespørgsler

Denne artikel vil fokusere på at skrive SQL-forespørgsler mod databasereferencetabellen med en ret enkel struktur at forstå og implementere.

Derudover vil vi afklare koncepterne bag at skrive effektive SQL-forespørgsler sammen med nogle tips til det professionelle liv.

Før du forespørger i databasetabellerne

Da denne artikel handler om at forespørge databasetabeller ved hjælp af SQL-scripts, bør læsere have en vis baggrund for fuldt ud at forstå begreberne og eksemplerne. Vi skal have indtryk af, hvordan man refererer til en tabel. Desuden skal det nødvendige udstyr være til stede:

Du skal bruge:

  1. Den grundlæggende viden om relationelle databaser og SQL.
  2. En SQL-databaseserver installeret lokalt eller eksternt.
  3. Databasestyringsværktøjer såsom SQL Server Management Studio eller dbForge Studio til SQL Server.

Du bør være i stand til at oprette en eksempeldatabase (ved hjælp af medfølgende scripts), oprette forbindelse til SQL Serveren og køre mod den eksempeldatabase.

Før vi fortsætter med at køre forespørgsler mod en tom database, skal du muligvis henvise til den forrige artikel dedikeret til emnet for at genopfriske viden:

Sådan skriver du simple SQL-forespørgsler fra en tom database

Skrivning af SQL-forespørgsler med udgangspunkt i referencetabeller

Vi skal skrive SQL-forespørgsler mod en eksempeldatabase, der indeholder to tabeller. Planen er at se dataene fra en af ​​tabellerne kendt som en SQL-referencetabel. Bemærk:Referencetabellen kan være enhver tabel, der ikke kræver data fra en anden tabel.

Først skal vi forstå strukturen af ​​prøvedatabasen for at forespørge den nøjagtigt.

Eksempel på databasereferencetabel

Vi bruger et eksempel på BookSimple2 database, som består af to tabeller, BookType og Book .

BookTypen tabel indeholder de typer bøger, der skal tildeles en bog. bogen tabel indeholder navne, typer og lager (antal tilgængelige eksemplarer) af bøger.

Det er let at gætte, at begge tabeller er forbundet via nøgler. Den type bog, der er gemt i bogen tabellen er oprindeligt defineret i BookType bord. Det gør det muligt at holde dataene konsistente og pålidelige.

Derfor er BookType tabel er en referencetabel – den giver sin reference (bogtype) til hovedbogen tabel.

Tag et kig på nedenstående illustration:

Hvis vi ikke linker bogen tabel med BookType for at få bogens type, skal vi definere den nødvendige type, hver gang en ny bog gemmes. Som et resultat vil der snart opstå fejl, fordi vi gemmer den samme type igen og igen. Desuden kan vi ende med at skabe mange flere typer på grund af stavefejl.

Lad os sige, at hvis vi ignorerer brugen af ​​referencetabeller og kun opretter én hovedtabel, kan vi bruge forskellige måder til at repræsentere én type, såsom Design , Designer , og Designs . Det forvirrer, især når man forespørger og forstår dataene.

Du kan også henvise til den tidligere artikel for mere information om, hvordan tabeller relaterer til hinanden i SQL:

Lær databasedesign med SQL Server Management Studio (SSMS) – Del 2

Nu hvor du ser baggrunden for at bruge referencetabellerne og hovedtabellerne, kan vi gå videre til eksempler.

Sådan opretter du en referencetabel i SQL

Åbn databaseudviklingsværktøjet (det kunne være SQL Server Management Studio eller dbForge Studio til SQL Server), og opret forbindelse til den installerede SQL-serverinstans.

Skriv følgende script mod masterdatabasen for at oprette en eksempeldatabase BookSimple2 med to borde:

-- Opret eksempeldatabase BookSimple2USE MASTERGOCREATE DATABASE BookSimple2GOUSE BookSimple2-- Oprettelse af en referencetabel BookTypeCREATE TABLE dbo.BookType( BookTypeId INT IDENTITY(1,1), Navn VARCHAR(50)DetaljeNOT NULL(2) NULL CONSTRAINT PK_BookType_BookTypeId PRIMÆR NØGLE (BookTypeId))GO-- Udfylder (tilføjer rækker til) tabellen BookTypeSET IDENTITY_INSERT dbo.BookType ONGOINSERT INTO dbo.BookType( BookTypeId ,Navn ,Detalje-ID -Nøgle ,Detalje --' ' -- Navn - varchar(50) NOT NULL ,'This is Designing' -- Detail - varchar(200)),( 2 -- ID - INT Primary Key ,'Testing' -- Name - varchar(50) NOT NULL ,'This is Testing' -- Detail - varchar(200)),( 3 -- ID - INT Primary Key ,'Coding' -- Name - varchar(50) NOT NULL ,'This is Coding' -- Detail - varchar (200));GOSET IDENTITY_INSERT dbo.BookType OFFGO-- Oprettelse af en tabel BookCREATE TABLE dbo.Book( BookId INT IDENTITY(1,1), Name VARCHAR(50), BookTypeId INT, Stock INT, CONSTRAINT PK_Book_BookId PRIMARY KEY (BookId))GO 

Efter at have kørt scriptet, kan du se den nyoprettede database i SSMS Object Explorer eller Database Explorer sektionen af ​​dbForge Studio til SQL Server:

Sådan henvises til to tabeller med SQL-fremmednøgle

Jeg har bevidst udelukket den del af scriptet, der skaber forholdet mellem referencetabellen (BookType ) og hovedtabellen (Book ) i form af nøgler.

Udfør følgende script mod eksempeldatabasen for at forbinde referencetabellen med hovedtabellen:

-- Oprettelse af fremmednøglebegrænsning på bogtabellen for at hente BookTypeId-værdier fra BookType-tabelALTER TABLE dbo.Book ADD CONSTRAINT [FK_Book_BookType_BookTypeId] FOREIGN KEY ([BookTypeId]) REFERENCER dbo.[BookTypeI] ([BookType] ([BookType);  

Udvid BookSimple2 database> Bog tabel> Nøgler mappe:

Vi kan se, at de to tabeller er forbundet med succes.

Ovenstående er skærmbilledet fra SQL Server Management Studio. Visningen er dog nøjagtig den samme, hvis du ser databasen i Database Explorer i dbForge Studio til SQL Server.

Et vigtigt tip om valg af den ønskede database: Du skal sikre dig, at du kører forespørgsler mod den korrekte database – eksempeldatabasen. Derfor skal du vælge det fra listen over tilgængelige databaser eller køre følgende script:

-- Vælg eksempel-SQL-databasen for at forespørge itUSE BookSimple2 

Vigtig! Brugen af ​​et script til at vælge databasen er ikke relevant, hvis du arbejder med en cloudversion af SQL-databasen kendt som Azure SQL Database.

Skriv første forespørgsel

For at forespørge databasetabellerne skal vi kun huske på SELECT-sætningen i følgende form:

VÆLG * FRA

Erstat med navnet på en eksisterende tabel, og scriptet vil returnere alle poster (rækker) i den tabel.

SELECT-sætningen er meget mere fleksibel, men indtil videre fokuserer vi kun på at se alle poster (rækker) i en tabel.

Et vigtigt tip om SQL :Husk, at SQL (især med henvisning til T-SQL) ikke skelner mellem store og små bogstaver . Det vedrører både det SQL-reserverede ord (SELECT er det samme som Vælg ) eller brugerdefinerede navne (BookType er det samme som bogtype ) .

Se alle rækker fra BookType-referencetabellen

Skriv følgende script mod eksempeldatabasen:

-- Se alle data fra BookType-tabellenSELECT * FROM dbo.BookType 

Outputtet er:

Vi kan se alle kolonner og rækker fra tabellen. Det er langt den hurtigste metode til at få alle data fra en tabel.

Vigtigt tip om SELECT *: Du skal bruge SELECT * for kun at hente alle rækker og kolonner fra en tabel, når du markerer en lille tabel (såsom en referencetabel). Ellers kan det tage meget tid, mens vi måske har brug for dataene på nogle få kolonner og rækker fra en større tabel.

Find alle rækker fra BookType-tabellen ved hjælp af tabelnavnet

Der er en bedre måde at forespørge i tabellen på. Vi navngiver en tabel og binder den med alle kolonner som vist nedenfor:

-- Se alle data fra BookType-tabellen ved hjælp af bt aliasSELECT bt.* FRA dbo.BookType bt 

Se udvalgte kolonner fra referencetabel

Brug af tabelnavne giver flere fordele. Først kan vi hurtigt vælge den ønskede kolonne fra tabellen. Så gør det brugen af ​​tabeller og begrænsede kolonner klarere, fordi vi i de fleste tilfælde kun kræver nogle kolonner.

Her er et eksempel på kun at få ID'er og navne fra BookType tabel:

-- Se bogtype-id og navnekolonner fra referencetabellenSELECT bt.BookTypeId,bt.Name FROM dbo.BookType bt 

Resultatet er:

Forbedring af SELECT-syntaksen

Baseret på oplysningerne nævnt ovenfor kan vi således forbedre SELECT-syntaksen som følger:

VÆLG t.,t. FRA  t 

Sortér data efter navnekolonne ved hjælp af orden efter klausul

Du kan sortere resultatsættet baseret på en specifik kolonne eller et sæt kolonner. Sortering af data giver et andet synspunkt.

Brugen af ​​Bestil efter klausul i dette tilfælde er:

VÆLG t.,t. FRA t sorter efter t.

For eksempel ønsker vi at se typerne af bøger sorteret efter typenavnet (alfabetisk rækkefølge). I dette tilfælde bruger vi Order By-sætningen i SELECT-sætningsscriptet som følger:

-- Se bogtyper (navn) sorteret efter typenavn SELECT bt.Name FRA dbo.BookType bt ORDER BY bt.Name 

Outputtet er:

Sortér data efter navnekolonne i faldende rækkefølge

Vi kan også sortere dataene i faldende rækkefølge efter behov. For eksempel ønsker vi at se listen over alle bogtyper baseret på kolonnen Navn i faldende rækkefølge (Z til A). Syntaksen vil være:

VÆLG t.,t. FRA  t sorter efter t. desc 

T-SQL-scriptet er som følger:

-- Se bogtyper (navn) sorteret efter et typenavn i faldende rækkefølge (fra Z til A)VÆLG bt.Name FROM dbo.BookType bt ORDER BY bt.Name desc 

Resultatsættet er nedenfor:

Se TOP N poster fra en tabel

Til sidst kan vi vælge det ønskede antal rækker, der skal trækkes fra en database ved at bruge TOP-sætningen. Efter denne klausul skal vi angive det nødvendige nummer:

VÆLG Top N t.,t. FRA  t  

TOP-klausulen uden nogen rækkefølge er dog ikke den bedste løsning. Vi skal angive rækkefølgen af ​​kolonner, der skal tages i betragtning, når vi vælger de øverste n rækker.

Her kan vi forbedre ovenstående syntaks som følger:

VÆLG Top N t.,t. FRA  t sorter efter  Desc/Asc 

Husk, at vi skal nævne den faldende rækkefølge ved at bruge DESC i slutningen. Den stigende rækkefølge er dog ikke obligatorisk at nævne – det er standardindstillingen.

Lad os se de øverste 2 typer bøger sorteret efter navn i faldende rækkefølge:

--Se top 2 typer af bøgerne sorteret efter navn i faldende rækkefølge (fra Z til A)VÆLG TOP 2 bt.Name FRA dbo.BookType bt ORDER BY bt.Name DESC 

Outputtet er:

Vigtigt tip om TOP N: brug TOP N-sætningen (med en rækkefølge efter) til at se en tabel i stedet for at se alle rækkerne i tabellen, hvis du hurtigt vil tjekke dataene kendt som et smugkig.

I professionelle scenarier tjener Top N-klausulen til at opdatere store bidder af data fra en stor tabel i trin.

Nu har vi forespurgt tabellen i en SQL-database. Desuden er vi blevet bekendt med nogle tips til at køre forespørgsler som en professionel og lært nogle bedste fremgangsmåder til at skrive SQL-forespørgsler.

DB-referencetabelpraksis

Nu kan du skrive, køre og øge effektiviteten af ​​SQL-forespørgsler mod enhver tabel. Prøv følgende øvelser for at forbedre de nye færdigheder:

  1. Prøv at skrive et script for at se bogtype-id'et (BookTypeId ) med detaljerne (Detaljer ) kun kolonner.
  2. Prøv at sortere referencen BookType tabel efter id'er (BookTypeId ) i faldende rækkefølge (fra 3 til 1).
  3. Prøv at hente de øverste 2 rækker fra BookType tabel med kun id (BookTypeId ) og detaljer (Detaljer ) af bogtypen sorteret efter Detaljer kolonne.

  1. Forskellen mellem VARCHAR og TEXT i MySQL

  2. Sammenlign arrays for lighed, ignorer rækkefølgen af ​​elementer

  3. Hvordan opdager man forespørgsel, der holder låsen i Postgres?

  4. Sådan får du optegnelser fra i dag i MySQL