Ms sql server skrive spørringer. Utføre SQL-spørringer i Management Studio. Legge til et gjennomsnittsberegnet felt

Tabelluttrykk kalles underspørringer som brukes der tilstedeværelsen av en tabell er forventet. Det finnes to typer tabelluttrykk:

    avledede tabeller;

    generaliserte tabelluttrykk.

Disse to formene for tabelluttrykk diskuteres i de følgende underavsnittene.

Avledede tabeller

Avledet tabell er et tabelluttrykk inkludert i FROM-leddet til en spørring. Avledede tabeller kan brukes i tilfeller der bruk av kolonnealiaser ikke er mulig fordi SQL-oversetteren behandler en annen setning før aliaset er kjent. Eksemplet nedenfor viser et forsøk på å bruke et kolonnealias i en situasjon der en annen klausul blir behandlet før aliaset er kjent:

BRUK SampleDb; SELECT MONTH(EnterDate) som enter_month FROM Works_on GROUP BY enter_month;

Hvis du prøver å kjøre denne spørringen, vises følgende feilmelding:

Melding 207, nivå 16, tilstand 1, linje 5 Ugyldig kolonnenavn "enter_month". (Melding 207: Nivå 16, tilstand 1, linje 5 Ugyldig kolonnenavn enter_month)

Årsaken til feilen er at GROUP BY-leddet behandles før den tilsvarende listen med SELECT-setningen behandles, og aliaset for enter_month-kolonnen er ukjent når gruppen behandles.

Dette problemet kan løses ved å bruke en avledet tabell som inneholder den foregående spørringen (uten GROUP BY-leddet) fordi FROM-leddet kjøres før GROUP BY-leddet:

BRUK SampleDb; VELG enter_month FROM (VELG MONTH(EnterDate) som enter_month FROM Works_on) AS m GROUP BY enter_month;

Resultatet av denne spørringen vil være slik:

Vanligvis kan et tabelluttrykk plasseres hvor som helst i en SELECT-setning der et tabellnavn kan vises. (Resultatet av et tabelluttrykk er alltid en tabell eller, i spesielle tilfeller, et uttrykk.) Eksemplet nedenfor viser bruken av et tabelluttrykk i select-listen til en SELECT-setning:

Resultatet av denne spørringen:

Generiske tabelluttrykk

Vanlige tabelluttrykk (OTB) er et navngitt tabelluttrykk som støttes av Transact-SQL-språket. Vanlige tabelluttrykk brukes i følgende to typer spørringer:

    ikke-rekursiv;

    tilbakevendende.

Disse to typene forespørsler diskuteres i de følgende avsnittene.

OTB og ikke-rekursive spørringer

Den ikke-rekursive formen for OTB kan brukes som et alternativ til avledede tabeller og visninger. Vanligvis bestemmes OTB av MED klausuler og en ekstra spørring som refererer til navnet brukt i WITH-leddet. I Transact-SQL er betydningen av nøkkelordet WITH tvetydig. For å unngå tvetydighet bør setningen foran WITH-setningen avsluttes med semikolon.

BRUK AdventureWorks2012; SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE TotalDue > (VELG AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") OG Frakt > (VELG AVG(TotalDue) FROM Sales.SalesOrderHeader "Order2Dato YEAR5) ")/2.5;

Spørringen i dette eksemplet velger bestillinger hvis totale avgifter (TotalDue) er høyere enn gjennomsnittet av alle avgifter og hvis fraktkostnader (frakt) er større enn 40 % av gjennomsnittlig avgifter. Hovedegenskapen til denne spørringen er lengden, siden undersøkingen må skrives to ganger. En av mulige måterå redusere størrelsen på spørringskonstruksjonen vil være å lage en visning som inneholder en underspørring. Men denne løsningen er litt komplisert fordi den krever å opprette en visning og deretter slette den etter at spørringen er ferdig utført. En bedre tilnærming ville være å lage en OTB. Eksemplet nedenfor viser bruken av ikke-rekursiv OTB, som forkorter spørringsdefinisjonen ovenfor:

BRUK AdventureWorks2012; WITH price_calc(year_2005) AS (SELECT AVG(TotalDue) FROM Sales.SalesOrderHeader WHERE YEAR(OrderDate) = "2005") SELECT SalesOrderID FROM Sales.SalesOrderHeader WHERE TotalDue > (SELECT year_2005 FROMAND price_0cal) (SELECT year_2005 FROMAND price_0cal) ) /2,5;

WITH-leddets syntaks i ikke-rekursive søk er som følger:

Parameteren cte_name representerer OTB-navnet som definerer den resulterende tabellen, og column_list-parameteren representerer listen over kolonner i tabelluttrykket. (I eksemplet ovenfor kalles OTB price_calc og har én kolonne, year_2005.) Inner_query-parameteren representerer en SELECT-setning som spesifiserer resultatsettet til det tilsvarende tabelluttrykket. Det definerte tabelluttrykket kan deretter brukes i den ytre_query. (Det ytre søket i eksemplet ovenfor bruker OTB price_calc og dens år_2005-kolonne for å forenkle det dobbelt nestede søket.)

OTB og rekursive søk

Denne delen presenterer materiale med økt kompleksitet. Derfor, når du leser den for første gang, anbefales det å hoppe over den og gå tilbake til den senere. OTB-er kan brukes til å implementere rekursjoner fordi OTB-er kan inneholde referanser til seg selv. Den grunnleggende OTB-syntaksen for et rekursivt søk ser slik ut:

Parameterne cte_name og column_list har samme betydning som i OTB for ikke-rekursive spørringer. Brødteksten i en WITH-klausul består av to spørringer sammen med operatøren UNION ALLE. Den første spørringen kalles bare én gang, og den begynner å akkumulere resultatet av rekursjonen. Den første operanden til UNION ALL-operatøren refererer ikke til en OTB. Denne spørringen kalles en referansespørring eller kilde.

Den andre spørringen inneholder en referanse til OTB og representerer dens rekursive del. På grunn av dette kalles det et rekursivt medlem. I det første kallet til den rekursive delen, representerer OTB-referansen resultatet av referansespørringen. Det rekursive medlemmet bruker resultatet av det første spørringsanropet. Etter dette kaller systemet opp den rekursive delen igjen. Et anrop til et rekursivt medlem stopper når et tidligere anrop til det returnerer et tomt resultatsett.

UNION ALL-operatøren kobler det akkumulerte dette øyeblikket rader, samt ytterligere rader lagt til av det gjeldende kallet til det rekursive medlemmet. (Tilstedeværelsen av UNION ALL-operatøren betyr at dupliserte rader ikke vil bli fjernet fra resultatet.)

Til slutt definerer parameteren outer_query den ytre spørringen som OTB bruker for å hente alle anrop til sammenføyningen til begge medlemmene.

For å demonstrere den rekursive formen av OTB, bruker vi flytabellen definert og fylt ut med koden vist i eksemplet nedenfor:

BRUK SampleDb; CREATE TABLE Fly(ContainingAssembly VARCHAR(10), ContainedAssembly VARCHAR(10), QuantityContained INT, UnitCost DESIMAL(6,2)); INSERT INTO Airplane VALUES ("Fly", "Fuselage", 1, 10); INSERT INTO Airplane VALUES ("Fly", "Vinger", 1, 11); INSERT INTO Airplane VALUES ("Fly", "hale", 1, 12); SETTE INN I FLYVERDIER ("Fuselage", "Salon", 1, 13); SETTE INN I FLYVERDIER ("Fuselage", "Cockpit", 1, 14); INSERT INTO Airplane VALUES ("Fuselage", "Nose",1, 15); INSERT INTO Airplane VALUES ("Cabin", NULL, 1,13); INSERT INTO Airplane VALUES ("Cockpit", NULL, 1, 14); INSERT INTO Airplane VALUES ("Nese", NULL, 1, 15); INSERT INTO Airplane VALUES ("Vinger", NULL,2, 11); INSERT INTO Airplane VALUES ("hale", NULL, 1, 12);

Flytabellen har fire kolonner. Kolonnen ContainingAssembly identifiserer sammenstillingen, og ContainedAssembly-kolonnen identifiserer delene (en etter en) som utgjør den tilsvarende sammenstillingen. Figuren nedenfor viser en grafisk illustrasjon av en mulig type fly og dets komponenter:

Flytabellen består av følgende 11 rader:

Følgende eksempel bruker WITH-leddet til å definere en spørring som beregner den totale kostnaden for hvert bygg:

BRUK SampleDb; WITH list_of_parts(assembly1, quantity, cost) AS (SELECT ContainingAssembly, QuantityContained, UnitCost FROM Airplane WHERE ContainedAssembly IS NULL UNION ALL SELECT a.ContainingAssembly, a.QuantityContained, CAST(l.quantity * DEC IMALcost AS) ) FROM list_of_parts l, Fly a WHERE l.assembly1 = a.ContainedAssembly) SELECT assembly1 "Part", quantity "Quantity", cost "Price" FROM list_of_parts;

WITH-leddet definerer en OTB-liste kalt list_of_parts, bestående av tre kolonner: assembly1, quantity og cost. Den første SELECT-setningen i eksemplet kalles bare én gang for å lagre resultatene fra det første trinnet i rekursjonsprosessen. SELECT-setningen på den siste linjen i eksemplet viser følgende resultat.

SQL eller Structured Query Language er et språk som brukes til å administrere data i et relasjonsdatabasesystem (RDBMS). Denne artikkelen vil dekke ofte brukte SQL-kommandoer, som enhver programmerer bør være kjent med. Dette materialet er ideelt for de som ønsker å friske opp kunnskapen om SQL før et jobbintervju. For å gjøre dette, se på eksemplene gitt i artikkelen og husk at du studerte databaser i par.

Merk at noen databasesystemer krever semikolon på slutten av hver setning. Semikolonet er standard peker på slutten av hver setning i SQL. Eksemplene bruker MySQL, så et semikolon kreves.

Sette opp en database for eksempler

Lag en database for å demonstrere hvordan team fungerer. For å fungere, må du laste ned to filer: DLL.sql og InsertStatements.sql. Deretter åpner du en terminal og logger på MySQL-konsollen ved å bruke følgende kommando (artikkelen antar at MySQL allerede er installert på systemet):

Mysql -u root -s

Skriv deretter inn passordet ditt.

Kjør følgende kommando. La oss kalle databasen "universitet":

LAG DATABASE universitet; BRUK universitetet; KILDE ; KILDE

Kommandoer for arbeid med databaser

1. Se tilgjengelige databaser

VIS DATABASER;

2. Opprett en ny database

LAG DATABASE;

3. Velge en database som skal brukes

BRUK ;

4. Importer SQL-kommandoer fra en .sql-fil

KILDE ;

5. Slett databasen

DROPPE DATABASE ;

Arbeid med tabeller

6. Se tabellene som er tilgjengelige i databasen

VIS TABELLER;

7. Opprett en ny tabell

LAG BORD ( , , PRIMÆRNØKKEL ( ), UTENLANDSKE NØKKEL ( ) REFERANSER ());

Integritetsbegrensninger ved bruk av CREATE TABLE

Det kan hende du må opprette begrensninger for enkelte kolonner i en tabell. Når du oppretter en tabell, kan du angi følgende begrensninger:

  • en tabellcelle kan ikke ha en NULL-verdi;
  • primærnøkkel - PRIMARY KEY (col_name1, col_name2, ...) ;
  • fremmednøkkel - UTENLANDSKE NØKKEL (col_namex1, …, col_namexn) REFERANSER tabellnavn(col_namex1, …, col_namexn) .

Du kan spesifisere mer enn én primærnøkkel. I dette tilfellet vil du få en sammensatt primærnøkkel.

Eksempel

Lag en tabell "instruktør":

CREATE TABLE instruktør (ID CHAR(5), navn VARCHAR(20) NOT NULL, dept_name VARCHAR(20), lønn NUMERIC(8,2), PRIMARY KEY (ID), UTENLANDSKE KEY (dept_name) REFERANSER avdeling(dept_name));

8. Tabellinformasjon

Du kan se forskjellig informasjon (verditype, nøkkel eller ikke) om tabellkolonner med følgende kommando:

BESKRIVE ;

9. Legge til data i tabellen

SETT INN I (, , , ...) VERDIER ( , , , …);

Når du legger til data i hver kolonne i en tabell, trenger du ikke å angi kolonnenavn.

SETT INN I VERDIER ( , , , …);

10. Oppdatering av tabelldata

OPPDATER SETT = , = , ... HVOR ;

11. Fjerne alle data fra tabellen

SLETT FRA ;

12. Slett en tabell

DROPPE BORD ;

Kommandoer for å lage spørringer

13. VELG

SELECT brukes til å hente data fra en bestemt tabell:

PLUKKE UT , , … FRA ;

Følgende kommando kan vise alle dataene fra tabellen:

VELG * FRA ;

14. VELG DISTINKT

Tabellkolonner kan inneholde dupliserte data. Bruk SELECT DISTINCT for å hente kun ikke-dupliserte data.

VELG DISTINKT , , … FRA ;

15. HVOR

Du kan bruke nøkkelordet WHERE i SELECT for å spesifisere betingelser i en spørring:

PLUKKE UT , , … FRA HVOR ;

Følgende betingelser kan spesifiseres i forespørselen:

  • tekst sammenligning;
  • sammenligning av numeriske verdier;
  • logiske operatorer AND (og), OR (eller) og NOT (negasjon).

Eksempel

Prøv følgende kommandoer. Vær oppmerksom på betingelsene spesifisert i HVOR:

SELECT * FROM course WHERE dept_name=’Comp. Sci.'; VELG * FRA kurs HVOR studiepoeng>3; VELG * FRA kurs WHERE dept_name="Comp. Sci." OG studiepoeng>3;

16. GRUPPE ETTER

GROUP BY-operatøren brukes ofte med aggregerte funksjoner slik som COUNT, MAX, MIN, SUM og AVG for å gruppere utdataverdier.

PLUKKE UT , , … FRA GRUPPE AV ;

Eksempel

La oss vise antall emner for hvert fakultet:

VELG ANTALL(kurs_id), avd_navn FRA kurs GROUP BY avd_navn;

17. Å HA

Nøkkelordet HAVING ble lagt til SQL fordi WHERE ikke kan brukes til å arbeide med aggregerte funksjoner.

PLUKKE UT , , ... FRA GRUPPE AV HA

Eksempel

La oss vise en liste over fakulteter som har mer enn ett kurs:

VELG ANTALL(kurs_id), avd_navn FRA kurs GRUPPE ETTER avd_navn HAR ANTALL(kurs_id)>1;

18. BESTILL INNEN

ORDER BY brukes til å sortere søkeresultater i synkende eller stigende rekkefølge. ORDER BY vil sortere i stigende rekkefølge med mindre ASC eller DESC er spesifisert.

PLUKKE UT , , … FRA REKKEFØLGE ETTER , , …ASC|DESC;

Eksempel

La oss vise en liste over emner i stigende og synkende rekkefølge av studiepoeng:

VELG * FRA kurs BESTILL ETTER studiepoeng; VELG * FRA kurs BESTILL ETTER studiepoeng DESC;

19. MELLOM

BETWEEN brukes til å velge dataverdier fra et spesifikt område. Numerisk og tekstverdier, samt datoer.

PLUKKE UT , , … FRA HVOR MELLOM OG ;

Eksempel

La oss vise en liste over instruktører hvis lønn er over 50 000, men mindre enn 100 000:

VELG * FRA instruktør HVOR lønn MELLOM 50000 OG 100000;

20. LIKER

LIKE-operatoren brukes i WHERE for å spesifisere et søkemønster for en lignende verdi.

Det er to gratis operatører som brukes i LIKE:

  • % (ingen, ett eller flere tegn);
  • _ (ett tegn).
PLUKKE UT , , … FRA HVOR SOM ;

Eksempel

La oss vise en liste over kurs hvis navn inneholder "til" og en liste over kurs hvis navn begynner med "CS-":

VELG * FRA kurs HVOR tittel LIKE '%to%'; VELG * FRA kurs WHERE kurs_id LIKE "CS-___";

21. INN

Ved å bruke IN kan du spesifisere flere verdier for WHERE-leddet:

PLUKKE UT , , … FRA HVOR IN ( , , …);

Eksempel

La oss vise en liste over studenter fra Comp majors. Sci., fysikk og elektr. Eng.:

VELG * FRA student WHERE avd.navn IN ('Comp. Sci.', 'Fysikk', 'Elec. Eng.');

22. BLI MED

JOIN brukes til å koble sammen to eller flere tabeller ved å bruke vanlige attributter i dem. Bildet nedenfor viser ulike måter blir med i SQL. Legg merke til forskjellen mellom en venstre ytre skjøt og en høyre ytre skjøt:

PLUKKE UT , , … FRA BLI MED = ;

Eksempel 1

Vi vil vise en liste over alle emner og relevant informasjon om fakultetene:

VELG * FRA kurs BLI MED avdeling PÅ course.dept_name=department.dept_name;

Eksempel 2

Vi vil vise en liste over alle obligatoriske kurs og detaljer om dem:

VELG prereq.course_id, title, dept_name, credits, prereq_id FROM prereq VENSTRE YTRE JOIN kurs PÅ prereq.course_id=course.course_id;

Eksempel 3

Vi vil vise en liste over alle kurs, uavhengig av om de er obligatoriske eller ikke:

SELECT course.course_id, title, dept_name, credits, prereq_id FROM prereq HØYRE YTRE JOIN-kurs PÅ prereq.course_id=course.course_id;

23. Utsikt

View er en virtuell SQL-tabell opprettet som et resultat av å utføre et uttrykk. Den inneholder rader og kolonner og ligner veldig på en vanlig SQL-tabell. Vis viser alltid den nyeste informasjonen fra databasen.

Opprettelse

LAG UTSIKT SOM VALG , , … FRA HVOR ;

Fjerning

DROP VISNING ;

Eksempel

La oss lage en visning bestående av kurs med 3 studiepoeng:

24. Aggregerte funksjoner

Disse funksjonene brukes for å få et samlet resultat relatert til de aktuelle dataene. Følgende er ofte brukte aggregerte funksjoner:

  • COUNT (col_name) - returnerer antall rader;
  • SUM (col_name) - returnerer summen av verdiene i denne kolonnen;
  • AVG (col_name) - returnerer gjennomsnittsverdien for en gitt kolonne;
  • MIN (col_name) - returnerer den minste verdien av en gitt kolonne;
  • MAX (col_name) – Returnerer den største verdien av en gitt kolonne.

25. Nestede underspørringer

Nestede underspørringer er SQL-spørringer som inkluderer SELECT , FROM og WHERE-klausuler nestet i en annen spørring.

Eksempel

La oss finne kurs som ble undervist høsten 2009 og våren 2010:

SELECT DISTINCT course_id FROM section WHERE semester = 'Høst' OG år= 2009 OG course_id IN (VELG kurs_id FRA seksjon WHERE semester = 'Vår' OG år= 2010);

SQL - Strukturert spørrespråk.
I denne anmeldelsen skal vi se på de vanligste typene SQL-spørringer.
SQL-standarden er definert ANSI(American National Standards Institute).
SQL er et språk rettet spesielt mot relasjonsdatabaser.

SQL-partisjonering:


DDL
(Datadefinisjonsspråk) - det såkalte Schema Description Language i ANSI, består av kommandoer som lager objekter (tabeller, indekser, visninger og så videre) i databasen.
DML(Datamanipulasjonsspråk) er et sett med kommandoer som bestemmer hvilke verdier som er representert i tabeller til enhver tid.
DCD(Databehandlingsspråk) består av fasiliteter som bestemmer om en bruker skal tillate å utføre bestemte handlinger eller ikke. De er en del av ANSI DDL. Ikke glem disse navnene. Dette er ikke forskjellige språk, men deler av SQL-kommandoer gruppert etter funksjonene deres.

Datatyper:

SQL Server - Datatyper

Beskrivelse

bigint (int 8)

bigint (int 8)

binær(n)

binær(eller bilde

karakter
(synonym røye)

nasjonal karakter eller ntekst

karakter varierende(synonym røye varierende varchar)

nasjonal karakter varierende eller ntekst

Dato tid

dato tid

desimal

aka numerisk

dobbel presisjon

dobbel presisjon

heltall (int 4) (synonym: int)

heltall (int 4)

nasjonal karakter(synonym: nasjonal karakter, nchar)

nasjonal karakter

Numerisk(synonymer: desimal, des)

nasjonal karakter varierende(synonymer: nasjonal røye varierende, nvarchar)

Nasjonal karakter varierende

Liten datotid

dato tid

smallint (int 2)

smallint (int 2)

Småpenger

sql_variant

Støttes ikke lenger

Ntekst
Fra og med SQL Server 2005 anbefales det ikke å bruke det.

Tidsstempel

Ikke støttet

bitteliten (int 1)

bitteliten (int 1)

Unikidentifikator

unik identifikator

varbinær(n)

varbinær(eller bilde

smalldatetime

dato tid

smallint (int 2)

smallint (int 2)

småpenger

sql_variant

Ikke støttet

tidsstempel

Ikke støttet

bitteliten (int 1)

bitteliten (int 1)

unik identifikator

unik identifikator

varbinær(n)

varbinær(eller bilde

Datatypetabell i SQL Server 2000

HVA ER EN FORESPØRSEL?

Be om er en kommando du gir til databaseprogrammet. Spørringer er en del av DML-språket. Alle SQL-spørringer består av én enkelt kommando. Strukturen til denne kommandoen er villedende enkel fordi du må utvide den til å utføre svært komplekse evalueringer og datamanipulasjoner.

SELECT kommando:

PLUKKE UT"Select" er den mest brukte kommandoen den brukes til å velge data fra tabellen.
Type spørring med SELECT:

SELECT id, user_name, city, birth_day FROM users_base;

En slik spørring vil vise fra user_base-tabellen alle verdiene til kolonnene spesifisert atskilt med komma etter VELG kommandoer. Du kan også vise alle kolonner med ett tegn, * dvs. SELECT * FROM users_base ; - En slik spørring vil vise alle data fra tabellen.

VELG kommandostruktur:

SELECT (Kolonnenavn atskilt med kommaer som må vises i spørringen) FROM (tabellnavn i databasen)
– Dette er den enkleste typen forespørsel. Det er flere kommandoer for praktisk datainnhenting (se under "Funksjoner")

DML-kommandoer:

Verdier kan plasseres og fjernes fra felt ved hjelp av tre DML (Data Manipulation Language) kommandoer:
SETT INN(Sett inn)
OPPDATER(Oppdatering, endring),
SLETT(Slett)

INSERT kommando:

INSERT INTO users_base (brukernavn, by, fødselsdag) VERDIER ('Alexander', 'Rostov', '06/20/1991');

INSERT-kommandoen kommer med prefikset INTO (i til), så i parentes står navnene på kolonnene vi må sette inn data i, så kommer VALUES-kommandoen (verdier) og i parentes kommer verdiene etter tur (det er nødvendig for å observere rekkefølgen på verdiene med kolonnene, verdiene må være i samme rekkefølge som kolonnene du spesifiserte).

UPDATE kommando:

OPPDATER users_base SET user_name = 'Alexey';

UPDATE-kommandoen oppdaterer verdier i en tabell. Først kommer selve UPDATE-kommandoen, deretter tabellnavnet, etter SET-kommandoen (sett), deretter kolonnenavnet og verdien i anførselstegn (anførselstegn plasseres hvis verdien er i strengformat, hvis det er en numerisk verdi og kolonnen ikke er knyttet til datatypen vchar eller noen andre strengtyper, har anførselstegnene ingen betydning.)

DELETE kommando:

SLETT FRA users_base WHERE user_name = 'Vasily';

DELETE-kommandoen sletter hele raden og identifiserer raden ved å bruke WHERE-kriteriet. I dette tilfellet ville denne spørringen slette alle rader der kolonneverdien for brukernavn var Vasily. Vi snakker om WHERE-kriteriet og andre litt senere.

Kriterier, funksjoner, betingelser mv. hva hjelper oss i SQL:

WHERE-leddet er et ledd i SELECT-kommandoen og andre DML-kommandoer som lar deg sette predikater hvis betingelse kan være enten sann eller usann for en hvilken som helst rad i tabellen. Kommandoen henter bare de radene fra tabellen som denne setningen er sann for.
Eksempel:
SELECT id, city, birth_day FROM users_base WHERE user_name = 'Alexey';- en slik spørring vil kun vise de radene som samsvarer med WHERE-betingelsen, nemlig alle rader der brukernavn-kolonnen har verdien Alexey.

BESTILL ETTER - betingelse for sortering av de valgte radene. Har 2 kriterier ASC og DESC. ASC (sortering fra A til Å eller fra 0 til 9)

DESC (motsatt av ASC).
Eksempel:
SELECT id, city, birth_day FROM users_base ORDER BY user_name ASC; - en slik spørring vil vise verdier sortert etter brukernavn-kolonnen fra A til Å (A-Z; 0-9)

Denne betingelsen kan også brukes sammen med WHERE-klausulen.
Eksempel:
SELECT id, city, birth_day FROM users_base WHERE user_name = 'Alexey' ORDER BY id ASC;

DISTINCT er et argument som gir deg en måte å eliminere doble verdier fra SELECT-klausulen din. De. hvis du har dupliserte verdier i en kolonne, la oss si brukernavn, så vil DISTINCT vise deg bare én verdi, for eksempel har du 2 personer som heter Alexey i databasen din, så vil en spørring som bruker DISTINCT-funksjonen vise deg bare 1 verdi som oppstår først...
Eksempel:
SELECT DISTINCT user_name FROM users_base;- En slik spørring vil vise oss verdiene til alle postene i kolonnen user_name, men de vil ikke bli gjentatt, dvs. hvis du hadde et uendelig antall gjentatte verdier, vil de ikke bli vist...

OG - tar to boolske (i formen A OG B) som argumenter og vurderer dem mot sannheten om de begge er sanne.
Eksempel:
SELECT * FROM users_base WHERE city = 'Rostov' OG user_name = 'Alexander';- vil vise alle verdiene fra tabellen der navnet på byen vises på én linje (i dette tilfellet Rostov og brukernavnet Alexander.

ELLER - tar to boolske (i formen A ELLER B) som argumenter og vurderer om en av dem er riktig.

SELECT * FROM users_base WHERE city = 'Rostov' ELLER user_name = 'Alexander';- vil vise alle verdier fra tabellen der navnet på byen Rostov eller brukernavnet Alexander vises på linjen.

NOT - tar en enkelt boolsk (i formen NOT A) som argumenter og endrer verdien fra usant til sant eller sant til usant.
SELECT * FROM users_base WHERE city = 'Rostov' OR NOT user_name = 'Alexander';- vil vise alle verdier fra tabellen der navnet på byen Rostov vises på én linje eller brukernavnet ikke akkurat er Alexander.

IN - definerer et sett med verdier der en gitt verdi kan inkluderes eller ikke.
SELECT * FROM users_base WHERE city IN ('Vladivostok', 'Rostov');- en slik spørring vil vise alle verdier fra tabellen som inneholder navnene på de angitte byene i bykolonnen

Between ligner på IN-operatøren. I motsetning til å definere med tall fra et sett, som IN gjør, definerer BETWEEN et område hvis verdier må reduseres for å gjøre predikatet sant.
SELECT * FROM users_base WHERE id MELLOM 1 OG 10;- viser alle verdier fra tabellen som vil være i området fra 1 til 10 i id-kolonnen

COUNT - Produserer radnumrene eller ikke-NULL-verdier for feltene som søket valgte.
SELECT COUNT (*) FROM users_base ;- vil vise antall rader i denne tabellen.
SELECT COUNT (DISTINCT user_name) FROM users_base ;- vil vise antall linjer med brukernavn (ikke gjentatt)

SUM - produserer den aritmetiske summen av alle valgte verdier for et gitt felt.
SELECT SUM (id) FROM users_base ;- vil vise summen av verdiene til alle rader i id-kolonnen.

AVG - gjennomsnitt av alle valgte verdier i dette feltet.
VELG AVG (id) FRA users_base ;- vil vise gjennomsnittet av alle valgte verdier i id-kolonnen

MAX - produserer den største av alle valgte verdier for dette feltet.

MIN - produserer den minste av alle valgte verdier for dette feltet.

Opprette tabeller:

CREATE TABLE users_base (id-heltall, brukernavntekst, bytekst, fødselsdagsdato);- å utføre en slik kommando vil føre til opprettelsen av tabellen som jeg ga eksempler på... Alt er enkelt her, vi skriver CREATE TABLE-kommandoen, etterfulgt av navnet på tabellen vi ønsker å lage, deretter i parentes, atskilt med komma, navnene på kolonnene og deres datatype. Dette er standardmåten for å lage en tabell i SQL. Nå vil jeg gi et eksempel på å lage tabeller i SQL Server 2005:

SET ANSI_NULLS PÅ

SETT QUOTED_IDENTIFIER PÅ

HVIS IKKE FINNES (VELG * FRA sys.objects WHERE object_id = OBJECT_ID(N."") OG skriv inn (N"U"))
BEGYNNE
LAG TABELL .(

IKKE NULL,
IKKE NULL,
IKKE NULL,
PRIMÆR NØKKEL KLYNGET
A.S.C.


SLUTT

SET ANSI_NULLS PÅ

SETT QUOTED_IDENTIFIER PÅ

HVIS IKKE FINNES (VELG * FRA sys.objects WHERE object_id = OBJECT_ID(N."") OG skriv inn (N"U"))
BEGYNNE
LAG TABELL .(
IDENTITET(1,1) IKKE NULL,
NULL,
NULL,
PRIMÆR NØKKEL KLYNGET
A.S.C.
) MED (IGNORE_DUP_KEY = AV) PÅ
) PÅ TEXTIMAGE_ON
SLUTT

SET ANSI_NULLS PÅ

SETT QUOTED_IDENTIFIER PÅ

HVIS IKKE FINNES (VELG * FRA sys.objects WHERE object_id = OBJECT_ID(N."") OG skriv inn (N"U"))
BEGYNNE
LAG TABELL .(
IDENTITET(1,1) IKKE NULL,
NULL,
NULL,
PRIMÆR NØKKEL KLYNGET
A.S.C.
) MED (IGNORE_DUP_KEY = AV) PÅ
) PÅ
SLUTT

Syntaks i SQL Server 2005 er et annet emne, jeg ville bare vise at jeg beskrev det grunnleggende om SQL-programmering, du kan nå toppen ved å kjenne det grunnleggende.

Hvis du har spørsmål om dette emnet, vennligst skriv til meg

Utvikle en applikasjon som demonstrerer grunnleggende operasjoner på data i en database som MS SQL Server, nemlig:

  • koble databasen til applikasjonen;
  • vise databasetabeller på skjemaet;
  • addisjon Ny inngang til databasen;
  • redigere en post;
  • slette en oppføring.

Education.dbo-databasen brukes som grunnlag, og opprettelsesprosessen er beskrevet i detalj

Figur 1 viser strukturen til Education.dbo-databasen. Som det fremgår av figuren heter databasen:

sasha-pc\sqlexpress.Education.dbo

Her er "sasha-pc" datamaskinidentifikatoren på nettverket, "sqlexpress" er navnet på databaseserveren, "Education.dbo" er navnet på databasen.

Ris. 1. Education.dbo database

Databasen inneholder to tabeller: Student og Session. Strukturen til tabellene er som følger.

Studentbord.

Sesjonstabell.

Opptreden

1. Opprett nytt prosjekt i MS Visual Studio som Windows Forms Application.

Opprett et nytt prosjekt av typen Windows Forms Application. Et eksempel på å lage et nytt prosjekt er beskrevet i detalj

2. Opprett en ny visning for å vise data fra elevtabellen.

For å vise data fra databasetabeller kan du bruke forskjellige måter. En av dem er opprettelsen av visninger, som genereres ved hjelp av MS Visual Studio.

I vårt tilfelle vil tabelldata vises på skjemaet i en kontroll av typen DataGridView. Etter å ha opprettet visninger, er det veldig praktisk å knytte dem til DataGridView-elementer.

For å opprette en visning, må du kalle opp kommandoen "Legg til ny visning" fra kontekstmenyen, som kalles opp ved å høyreklikke på "Views"-elementet i Education.dbo-databasen (figur 2).

Ris. 2. Ringer kommandoen for å legge til en ny visning

Som et resultat vil "Legg til tabell"-vinduet åpnes (Figur 3). I vinduet må du velge tabellene som legges til i visningen.

Ris. 3. Velge tabellene som den nye visningen skal baseres på

I vårt tilfelle, velg Studenttabellen og bekreft valget ditt ved å klikke på Legg til-knappen. Neste trinn er å lukke vinduet ved å velge Lukk-knappen.

Etter å ha fullført trinnene, vil et vindu bli generert der du må velge feltene som skal vises i visningen (på skjemaet). Velg alle feltene (Figur 4).

Når du velger felt, vises feltene i elevtabellen øverst i arbeidsområdet. Ved hjelp av musen kan du velge de ønskede feltene for presentasjon.

Følgelig viser det midtre området av vinduet navnene på de valgte feltene, tabellen de eksisterer i (se fig. 4), muligheten til å sortere, filtrere, etc.

Nederst i ruten vises den tilsvarende SQL-spørringsteksten som brukes til å lage visningen.

Ris. 4. Velge elevtabellfelt som skal vises i visningen

Etter å ha valgt et lag

Fil-> Lagre alle Fil->Lagre visning1

Et vindu åpnes der du må angi navnet på visningen. Angi navnet "Se student" (Figur 5).

Ris. 5. Angi et navn for visningen

Etter å ha fullført trinnene, vil presentasjonsvinduet se ut som vist i figur 6.

Ris. 6. Se Studentrepresentasjon i databasen

Du kan nå være vert for en DataGridView-kontroll og knytte den til en visning.

3. Plasser DataGridView-kontrollen og konfigurer forbindelsen med databasen.

Før du plasserer DataGridView-kontrollen, må du gå inn i skjemadesignmodus "Form1.cs".

DataGridView-elementet er en tabell som kan vise data. Denne kontrollen er plassert i ToolBox-panelet. Først justerer vi litt størrelsen på skjemaet, og deretter plasserer vi DataGridView-kontrollen på den (figur 7). Dette vil opprette en objektforekomst kalt dataGridView1 som standard.

Ris. 7. DataGridView-kontroll og datakildevalgvindu

Etter å ha plassert DataGridView-kontrollen på skjemaet, kan du i øvre høyre hjørne velge å konfigurere datakilden. Følgelig vil "DataGridView Tasks"-vinduet åpnes. I dette vinduet må du velge "Velg datakilde"-lokalmenyen.

I menyen som åpnes velger du kommandoen "Legg til prosjektdatakilde..." (fig. 7). Etter dette åpnes et veiviservindu, der datakilden velges sekvensielt.

Figur 8 viser " Veiviser for konfigurasjon av datakilde", der typen datakilde er valgt. I vårt tilfelle installerer vi "Database".

Ris. 8. Velge en datakildetype

I neste vindu (Figur 9) velges datakildemodellen. Du må velge Datasett.

Ris. 9. Velge en datakildemodell

I vinduet vist i figur 10 må du spesifisere datatilkoblingen du vil bruke for å koble til databasen. I vårt tilfelle må vi velge databasen " sasha-pc\sqlexpress\Education.dbo«.

Ris. 10. Velge en datatilkobling

Det neste vinduet (Figur 11) foreslår å lagre tilkoblingsstrengen i applikasjonens konfigurasjonsfil. Vi lar alt være som det er og går videre til neste vindu.

Ris. 11. Forslag til lagring av databasetilkoblingsstrengen Connection String i applikasjonens konfigurasjonsfil

Etter å ha opprettet en databasetilkobling, vises en rekke databaseobjekter (Figur 12). I vårt tilfelle må vi velge "Se student"-visningen og alle feltene fra den. De avmerkede feltene vil vises i DataGridView-typekomponenten.

Ris. 12. Velge databaseobjektene som skal vises i DataGridView

Etter å ha valgt Fullfør-knappen, vil de valgte objektene (View Student view) i Education.dbo-databasen vises (Figur 13).

Ris. 13. DataGridView-kontroll med valgte Vis Student-felt

På lignende måte kan du konfigurere visninger som inneholder alle felt fra en databasetabell. Dessuten kan felt fra forskjellige tabeller vises i én visning.

4. Stille inn utseendet til DataGridView-kontrollen.

Hvis du kjører applikasjonen, vil du motta data fra View Student-visningen, som tilsvarer elevtabellen i databasen (Figur 14).

Ris. 14. Starte programmet for utførelse

Som du kan se fra figur 14, vises dataene i dataGridView1-tabellen normalt, men designet kan justeres.

En kontroll av typen DataGridView lar deg justere utseendet til feltene som vises.

For å kalle kommandoer for redigering av felt, bare kall opp kontekstmenyen ved å høyreklikke på dataGridView1-kontrollen.

Menyen har ulike nyttige kommandoer, som lar deg kontrollere utseendet og driften av DataGridView:

  • kommando for å blokkere kontrollen (Lås kontroller);
  • kommando for å redigere feltene som vises i visningen (Rediger kolonner...);
  • kommando for å legge til nye felt, for eksempel beregnede (Legg til kolonne).

I vårt tilfelle må du velge kommandoen "Rediger kolonner..." (Figur 15).

Ris. 15. Kommando "Rediger kolonner..." fra hurtigmenyen

Som et resultat vil vinduet "Rediger kolonner" åpnes, der du kan tilpasse utseendet til presentasjonsfeltene etter eget ønske (Figur 16).

Ris. 16. Vindu for å sette opp visningen av felt i "Vis student"-visningen

I vinduet i figur 16 kan du for ethvert felt konfigurere navn, justering, bredde, evne til å redigere data osv.

5. Tilkoblingsstreng

For å gjøre endringer i databasen, må du få en tilkoblingsstreng til databasen Connection String .

Det er forskjellige måter å få databasetilkoblingsstrengen på. En av dem er basert på å lese denne linjen i vinduet Egenskaper i Education.dbo-databasen (fig. 17).

Ris. 17. Definere en tilkoblingsstreng

For å lagre strengen i programmet, en intern variabel av typen streng. Bruk utklippstavlen, kopier tilkoblingsstrengen inn i den beskrevne strengvariabelen.

I teksten til filen "Form1.cs" i begynnelsen av beskrivelsen av Form1-klassen, må du beskrive variabelen:

string conn_string = ;

For øyeblikket er teksten til Form1-klassen som følger:

offentlig delklasse Form1 : Form { string conn_string = @"Datakilde=(lokal)\SQLEXPRESS;Initial Catalog=Utdanning;Integrated Security=True;Pooling=False"; offentlig skjema1() { InitializeComponent(); } privat void Form1_Load(objektavsender, EventArgs e) { // TODO: Denne kodelinjen laster data inn i "educationDataSet.View_Student"-tabellen. Du kan flytte eller fjerne den etter behov. } }

6. Skapelse ny form for å demonstrere datamanipuleringskommandoer.

For å kunne behandle dataene til gjeldende post, må du opprette et nytt skjema. Prosessen med å lage et nytt skjema i MS Visual Studio - C# er beskrevet i detalj.

Å legge til et nytt skjema gjøres med kommandoen:

Prosjekt -> Legg til Windows-skjema...

I vinduet "Nytt element" som åpnes, må du velge elementet "Windows Form".

La det nye skjemafilnavnet være standard "Form2.cs".

Figur 18 viser en oversikt over det nye skjemaet.

Vi plasserer følgende typer kontroller på skjemaet:

  • to knappekontroller (OK og Cancel-knappene). Følgelig vil to objekter kalt knapp1 og knapp2 mottas;
  • fire etikettkontroller for å lage informasjonsmeldinger;
  • fire kontroller av typen TextBox for å legge inn data i feltene Num_book, Name, Group, Year.

Du må konfigurere følgende egenskaper for kontrollene:

  • i egenskapen kontrollknapp1 Tekst = "OK";
  • i button2-kontrollegenskapen Tekst = "Avbryt";
  • i kontrollknapp1-egenskapen DialogResult = "OK ";
  • i kontrollknapp2-egenskapen DialogResult = "Avbryt";
  • i egenskapen kontroll label1 Text = "Num_book";
  • i egenskapen kontroll label2 Text = "Navn";
  • i egenskapen kontroll label3 Text = "Gruppe";
  • i label4 kontroller egenskapen Text = "Year".

Vi konfigurerer også synligheten til TextBox-kontroller. For å gjøre dette, i alle kontroller textBox1, textBox2, textBox3, textBox4, egenskapsverdien Modifiers = "public".

Ris. 18. Visning av det nyopprettede skjemaet

7. Legge til knapper for å ringe kommandoer for å manipulere data fra elevtabellen.

For videre arbeid må du bruke musen for å bytte til hovedskjemaet Form1.

Legg til tre knapper i hovedskjemaet for Form1-applikasjonen (knapp). Tre objektvariabler opprettes automatisk med navnene knapp1, knapp2, knapp3. I hver av disse knappene gjør vi følgende innstillinger (Egenskapsvindu):

  • i knappen button1 egenskap Tekst = "Sett inn ..." (sett inn post);
  • i knappen button2 egenskap Tekst = "Rediger ..." (endre oppføring);
  • i knappen button3 egenskap Tekst = "Slett".

Som et resultat av endringene som er gjort, vil hovedskjemaet se ut som vist i figur 19.

Ris. 19. Hovedskjema for søknaden

8. Programmere en klikkhendelse på "Sett inn..."-knappen.

Klikkhendelsesbehandleren på "Sett inn..."-knappen ser slik ut:

privat void button1_Click_1(objektavsender, EventArgs e) { streng cmd_tekst; Form2 f2 = ny Form2(); if (f2.ShowDialog() == DialogResult .OK) { cmd_tekst = "INSERT INTO Student VALUES (" + """ + f2.textBox1.Text + "" , "" + f2.textBox2.Text + "", "" + f2.textBox3.Text + "", " + f2.textBox4.Text + ")" ; // opprette en tilkobling til databasen SqlConnection sql_conn = ny SqlConnection(conn_string); // lag en kommando på SQL-språk SqlCommand sql_comm = ny SqlCommand(cmd_text, sql_conn); sql_conn.Open(); // åpen tilkobling sql_comm.ExecuteNonQuery(); // utfør kommando i SQL-språk sql_conn.Close(); // nær forbindelse denne .view_StudentTableAdapter.Fill(denne .educationDataSet.View_Student); } }

Form2 kalles først. Etter å ha mottatt "OK"-resultatet (trykk på den tilsvarende knappen), i Form2 er de utfylte feltene i elementer av TextBox-typen inkludert i SQL-spørringsstrengen. SQL-spørringen for å legge til en ny rad ser slik ut:

SETTE INN I Student VERDIER (verdi1, verdi2, verdi3, verdi4)

hvor verdi1 tilsvarer karakterboknummeret; verdi2 – elevens etternavn; verdi3 – gruppe der studenten studerer; verdi4 – år for oppføring.

Connection String-databaseforbindelsesstrengen er beskrevet i conn_string-variabelen (se avsnitt 5). Klasseobjektet SqlConnection kobler applikasjonen til datakilder. I tillegg håndterer Connection-klassen brukerautentisering, nettverk, databaseidentifikasjon, tilkoblingsbuffring og transaksjonsbehandling.

SQL-kommandoen som legger til en post i en tabell, er innkapslet i SqlCommand-klassen. Konstruktøren av SqlCommand-klassen tar to parametere: en SQL-spørringsstreng (cmd_text-variabel) og et objekt av SqlConnection-klassen.

ExecuteNonQuery()-metoden er implementert i IDBCommand-grensesnittet. Metoden implementerer SQL-kommandoer som ikke returnerer data. Slike kommandoer inkluderer INSERT, DELETE, UPDATE-kommandoer, samt lagrede prosedyrer som ikke returnerer data. Metoden ExecuteNonQuery() returnerer antall poster involvert.

9. Programmere en klikkhendelse på "Rediger..."-knappen.

Klikkhendelsesbehandleren på "Rediger..."-knappen ser slik ut:

privat void button2_Click(objektavsender, EventArgs e) (streng cmd_text; Form2 f2 = new Form2 (); int index; string num_book; index = dataGridView1.CurrentRow.Index; num_book = Konverter .ToString(dataGridView1.Value); f2.textBox1 .Text = num_book; f2.textBox2.Text = Konverter .ToString(dataGridView1.Value); = "OPPDATERING Student SET Num_book = ""+ f2.textBox1.Text + "", " + " = "" + f2.textBox2.Text + "", " + " = "" + f2.textBox3.Text + "", " + "År = " + f2 .textBox4.Text + "WHERE Num_book = "" + num_book + """ ; SqlConnection sql_conn = new SqlConnection (sql_conn.Query();

Denne behandleren utfører en UPDATE SQL-kommando som endrer gjeldende verdi for den aktive posten.

10. Programmere en klikkhendelse på "Slett"-knappen.

Klikkhendelsesbehandleren på "Slett"-knappen ser slik ut:

private void button3_Click(objektavsender, EventArgs e) ( string cmd_text = "DELETE FROM Student" ; int index; string num_book; index = dataGridView1.CurrentRow.Index; num_book = Convert.ToString(dataGridView1.Value); cmd_text = "DELETE FROM Student WHERE . = ""+ num_book + """ ; SqlConnection sql_conn = new SqlConnection (conn_string); SqlCommand sql_comm = new SqlCommand (cmd_text, sql_conn); sql_conn.Open(); sql_comm.Execute.Execute this.nCl ableAdapter. Fyll (this.educationDataSet.View_Student);

Denne behandleren utfører SQL-kommandoen DELETE for å slette en post.

Relaterte temaer

  • Sender ut en Microsoft Access-databasetabell

SQL Server Management Studio gir et komplett verktøy for å lage alle typer spørringer. Med dens hjelp kan du opprette, lagre, laste og redigere spørringer. I tillegg kan du jobbe med spørringer uten å koble til noen server. Dette verktøyet gir også muligheten til å utvikle spørringer for ulike prosjekter.

Du kan arbeide med spørringer ved å bruke enten spørringsredigering eller løsningsutforsker. Denne artikkelen dekker begge disse verktøyene. I tillegg til disse to komponentene i SQL Server Management Studio, skal vi se på feilsøking av SQL-kode ved hjelp av den innebygde debuggeren.

Spørringsredaktør

For å åpne Query Editor-panelet Spørringsredaktør, på SQL Server Management Studio-verktøylinjen, klikk på Ny spørring-knappen. Dette panelet kan utvides til å vise knapper for å lage alle mulige spørringer, ikke bare databasemotorspørringer. Som standard er det opprettet ny forespørsel Database Engine-komponent, men ved å klikke på den tilsvarende knappen på verktøylinjen kan du også lage MDX-, XMLA-spørringer.

Statuslinjen nederst i Query Editor-panelet angir statusen til redaktørens tilkobling til serveren. Hvis du ikke kobler til serveren automatisk, når du starter spørringsredigering, vises en Koble til server-dialogboks, som lar deg velge serveren du vil koble til og autentiseringsmodus.

Redigering av spørringer offline gir mer fleksibilitet enn når du er koblet til en server. For å redigere spørringer er det ikke nødvendig å koble til serveren, og spørringsredigeringsvinduet kan kobles fra én server (ved å bruke menykommandoen Spørring --> Tilkobling --> Koble fra) og kobles til et annet uten å åpne et annet redigeringsvindu. For å velge frakoblet redigeringsmodus, bruk Koble til server-dialogen som åpnes når du starter redigeringsprogrammet. spesifikk type forespørsler, klikker du bare på Avbryt-knappen.

Du kan bruke Query Editor til å utføre følgende oppgaver:

    opprette og utføre Transact-SQL-setninger;

    lagring av opprettede Transact-SQL-språksetninger til en fil;

    lage og analysere utførelsesplaner for vanlige spørsmål;

    grafisk illustrerer utførelsesplanen for den valgte spørringen.

Spørringsredigeringsprogrammet inneholder en innebygd tekstredigerer og en verktøylinje med et sett med knapper for forskjellige handlinger. Hovedvinduet for spørreredigering er delt inn horisontalt i et spørringspanel (øverst) og et resultatpanel (nederst). Transact-SQL-setninger (det vil si spørringer) som skal utføres, legges inn i den øverste ruten, og resultatene av systemets behandling av disse spørringene vises i den nederste ruten. Figuren nedenfor viser et eksempel på å legge inn en spørring i spørringsredigeringsprogrammet og resultatene av å utføre den spørringen:

Den første USE request-setningen spesifiserer å bruke SampleDb-databasen som gjeldende database. Den andre setningen, SELECT, henter alle rader fra Employee-tabellen. For å kjøre denne spørringen og vise resultatene, klikk på Utfør-knappen på Query Editor-verktøylinjen eller trykk på F5.

Du kan åpne flere Query Editor-vinduer, dvs. opprette flere tilkoblinger til én eller flere forekomster av databasemotoren. En ny tilkobling opprettes ved å klikke på Ny spørring-knappen på SQL Server Management Studio-verktøylinjen.

Statuslinjen nederst i Query Editor-vinduet viser følgende informasjon relatert til utførelse av spørringssetninger:

    statusen til gjeldende operasjon (for eksempel "Forespørsel fullført vellykket");

    databaseservernavn;

    gjeldende brukernavn og serverprosess-ID;

    gjeldende databasenavn;

    tid brukt på å utføre den siste forespørselen;

    antall linjer funnet.

En av hovedfordelene med SQL Server Management Studio er dens brukervennlighet, som også gjelder for Query Editor. Query Editor har mange funksjoner for å gjøre koding av Transact-SQL-setninger enklere. Spesielt bruker den syntaksutheving for å forbedre lesbarheten til Transact-SQL-setninger. Alle reserverte ord vises i blått, variabler vises i svart, strenger vises i rødt, og kommentarer vises i grønt.

I tillegg er spørringseditoren utstyrt med kontekstsensitiv hjelp kalt Dynamisk hjelp, der du kan få informasjon om en spesifikk instruksjon. Hvis du ikke kjenner syntaksen til en instruksjon, velger du den i redigeringsprogrammet og trykker deretter på F1-tasten. Du kan også fremheve parametrene til ulike Transact-SQL-setninger for å få hjelp om dem fra Books Online.

SQL Management Studio støtter SQL Intellisense, som er en type autofullføringsverktøy. Med andre ord, denne modulen foreslår den mest sannsynlige fullføringen av delvis innlagte Transact-SQL-setningselementer.

Objektutforskeren kan også hjelpe deg med å redigere spørringer. Hvis du for eksempel vil vite hvordan du oppretter en CREATE TABLE-setning for Employee-tabellen, høyreklikker du tabellen i Object Explorer og den resulterende kontekstmenyen velg Script Table As --> CREATE to --> New Query Editor Window. Query Editor-vinduet som inneholder CREATE TABLE-setningen som er opprettet på denne måten, vises i figuren nedenfor. Denne funksjonen gjelder også for andre objekter, for eksempel lagrede prosedyrer og funksjoner.

Objektleseren er veldig nyttig for grafisk visning av utførelsesplanen for en bestemt spørring. Spørringsutførelsesplanen er utførelsesalternativet valgt av spørringsoptimereren blant flere mulige alternativer oppfylle en spesifikk forespørsel. Skriv inn den nødvendige spørringen i det øverste panelet i editoren, velg en sekvens med kommandoer fra menyen Spørring --> Vis estimert utførelsesplan (Spørring --> Vis estimert utførelsesplan) og utførelsesplanen for denne spørringen vil vises i nederste panel i redigeringsvinduet.

Solution Explorer

Spørringsredigering i SQL Server Management Studio er basert på løsningsmetoden. Hvis du oppretter en tom spørring ved å bruke knappen Ny spørring, vil den være basert på en tom løsning. Du kan se dette ved å kjøre en sekvens med kommandoer fra menyen Vis --> Solution Explorer umiddelbart etter at du har åpnet en tom spørring.

Beslutningen kan være knyttet til ingen, ett eller flere prosjekter. En tom løsning, ikke knyttet til noe prosjekt. For å knytte et prosjekt til en løsning, lukk den tomme løsningen, Solution Explorer og Query Editor, og opprette et nytt prosjekt ved å kjøre Fil --> Ny --> Prosjekt. I vinduet Nytt prosjekt som åpnes, velg alternativet SQL Server Scripts i midtruten. Et prosjekt er en måte å organisere filer på et bestemt sted. Du kan tildele et navn til prosjektet og velge en plassering på disken for plasseringen. Når du oppretter et nytt prosjekt, lanseres en ny løsning automatisk. Prosjektet kan legges til eksisterende løsning ved å bruke Solution Explorer.

For hvert prosjekt som opprettes, viser Solution Explorer mappene Connections, Queries og Diverse. For å åpne et nytt Query Editor-vindu for et gitt prosjekt, høyreklikk på Queries-mappen og velg New Query fra kontekstmenyen.

Feilsøking av SQL Server

SQL Server, som starter med SQL Server 2008, har en innebygd kodefeilsøker. For å starte en feilsøkingsøkt, velg Debug --> Start Debugging fra hovedmenyen i SQL Server Management Studio. Vi vil se på hvordan debuggeren fungerer ved å bruke et eksempel ved å bruke en batch med kommandoer. En batch er en logisk sekvens av SQL-setninger og prosedyreutvidelser som sendes til databasemotoren for å utføre alle setningene den inneholder.

Figuren under viser en pakke som teller antall ansatte som jobber med prosjekt p1. Hvis dette tallet er 4 eller mer, vises en tilsvarende melding. Ellers vises for- og etternavn på de ansatte.

For å stoppe utførelsen av en pakke ved en spesifikk instruksjon, kan du angi bruddpunkter, som vist i figuren. For å gjøre dette, klikk til venstre for linjen du vil stoppe på. Når feilsøkingen starter, stopper kjøringen ved den første kodelinjen, som er merket med en gul pil. For å fortsette kjøringen og feilsøkingen, velg menykommandoen Feilsøk --> Fortsett. Batchinstruksjonene vil fortsette å utføres til det første bruddpunktet, og den gule pilen vil stoppe på det punktet.

Informasjon relatert til feilsøkingsprosessen vises i to paneler nederst i Query Editor-vinduet. Informasjon om forskjellige typer Feilsøkingsinformasjon er gruppert i disse panelene på flere faner. Den venstre ruten inneholder kategorien Autos, Locals-fanen og opptil fem Watch-faner. Den høyre ruten inneholder fanene Call Stack, Threads, Breakpoints, Command Window, Immediate Window og Output. Fanen Locals viser variabelverdier, Call Stack-fanen viser call stack-verdier, og Breakpoints-fanen viser breakpointinformasjon.

For å avslutte feilsøkingsprosessen, utfør en sekvens med kommandoer fra hovedmenyen Debug --> Stop Debugging eller klikk på den blå knappen på feilsøkingsverktøylinjen.

SQL Server 2012 legger til flere nye funksjoner til den innebygde debuggeren i SQL Server Management Studio. Nå kan du utføre en rekke av følgende operasjoner i den:

    Angi en bruddpunktbetingelse. Knekkpunkttilstand er et SQL-uttrykk hvis evaluerte verdi bestemmer om kjøring av kode vil stoppe ved et gitt punkt eller ikke. For å spesifisere en bruddpunktbetingelse, høyreklikk på det røde bruddpunktikonet og velg Betingelse fra kontekstmenyen. Dialogboksen Breakpoint Condition åpnes, og lar deg angi det nødvendige boolske uttrykket. I tillegg, hvis du trenger å stoppe kjøringen hvis uttrykket er sant, bør du stille inn Is True-bryteren. Hvis kjøringen må stoppes hvis uttrykket har endret seg, må du stille inn når endret-bryteren.

    Spesifiser antall treff ved bruddpunktet. Trefftellingen er betingelsen for å stoppe kjøringen på et gitt punkt basert på antall ganger bruddpunktet ble truffet under kjøringen. Når det spesifiserte antallet passeringer og enhver annen betingelse spesifisert for et gitt bruddpunkt er nådd, utfører feilsøkeren den spesifiserte handlingen. Betingelsen for å avbryte utførelse basert på antall treff kan være ett av følgende:

    1. ubetinget (standard handling) (Bruk alltid);

      hvis antall treff er lik den angitte verdien (Bruk når antallet hans er lik en spesifisert verdi);

      hvis antall treff er et multiplum av en spesifisert verdi (Bruk når treffantallet er lik et multiplum av en spesifisert verdi);

      Bryt når hans telling er større eller lik en spesifisert verdi.

    For å angi antall treff under feilsøking, høyreklikk det nødvendige bruddpunktikonet i kategorien Knekkpunkter, velg Antall treff fra kontekstmenyen, og velg deretter en av betingelsene i dialogboksen Antall treffpunktbrudd som åpnes fra forrige liste. For alternativer som krever en verdi, skriv den inn i tekstboksen til høyre for nedtrekkslisten for betingelser. Klikk OK for å lagre de angitte betingelsene.

    Angi et bruddpunktfilter. Et bruddpunktfilter begrenser bruddpunktdriften til kun spesifiserte datamaskiner, prosesser eller tråder. For å angi et bruddpunktfilter, høyreklikk bruddpunktet du ønsker og velg Filter fra hurtigmenyen. Deretter, i dialogboksen Breakpoint Filters som åpnes, spesifiser du ressursene du vil begrense kjøringen av dette breakpointet til. Klikk OK for å lagre de angitte betingelsene.

    Spesifiser en handling ved et bruddpunkt. Når treff-betingelsen spesifiserer handlingen som skal utføres når batchkjøring treffer et gitt bruddpunkt. Som standard, når både trefftellerbetingelsen og stoppbetingelsen er oppfylt, avbrytes kjøringen. Alternativt kan en forhåndsspesifisert melding vises.

    For å spesifisere hva du skal gjøre når et bruddpunkt blir truffet, høyreklikk på det røde ikonet for bruddpunktet og velg Når treff fra hurtigmenyen. I dialogboksen When Breakpoint is Hit som åpnes velger du handlingen du vil utføre. Klikk OK for å lagre de angitte betingelsene.

    Bruk Quick Watch-vinduet. Du kan se verdien av et Transact-SQL-uttrykk i QuickWatch-vinduet, og deretter lagre uttrykket i Watch-vinduet. For å åpne Quick Watch-vinduet, velg Quick Watch fra Feilsøkingsmenyen. Uttrykket i dette vinduet kan enten velges fra rullegardinlisten Uttrykk eller legges inn i dette feltet.

    Bruk verktøytipset for hurtiginformasjon. Når du holder musepekeren over en kode-ID, hurtiginfo ( Kort informasjon) viser annonsen i et popup-vindu.




Topp