NOT i forespørgsel

Vi har endnu en logisk operator i SQL Server. Du har faktisk allerede mødt NOT et par gange. Se evt. lektionen om NULL, hvor NOT bliver brugt. I kombination med andre logiske operatorer, som AND og OR, er NOT i stand til at forfine dine betingelser i SQL-forespørgslerne.

Den logiske operator NOT

Denne operator vender resultatet af et udsagn fra SAND til FALSK eller omvendt. Eksempler:

1=2 – er FALSK
NOT 1=2 – er SAND
1<>2 – er SAND
NOT 1<>2 – er FALSK

NOT-operatoren bruges på denne måde i SQL:

SELECT Navn, Bynavn FROM Kunde
WHERE NOT Bynavn = 'Viborg'

Husk dog i forbindelse med NULL, skrives NOT efter IS:

SELECT Navn, Email FROM Kunde
WHERE Email IS NOT NULL

Dette er faktisk også gyldigt og giver samme resultat:

SELECT Navn, Email FROM Kunde
WHERE NOT Email IS NULL

Du kan også udføre NOT på et udtryk, som allerede indeholder NOT, altså dobbelt negation:

SELECT Navn, Email FROM Kunde
WHERE NOT Email IS NOT NULL

Eller, hvis du har lyst til at gå amok i dobbeltnegation:

SELECT Navn, Bynavn FROM Kunde
WHERE NOT NOT Bynavn = 'Viborg'

Brug af NOT med AND og OR

Tingene kan blive lidt mere komplicerede, når vi blander NOT ind i andre betingelser med AND eller OR. Lad os finde varer, der hedder noget med Boble og som ikke koster mellem 1 og 2 kr.

Første forsøg er forkert, da NOT kun påvirker første betingelse:

SELECT * FROM Vare
WHERE
    Varebetegnelse LIKE 'Boble%'
    AND
    NOT Pris > 1 AND Pris < 2

I stedet skal vi indkapsle prisbetingelsen i parentes, hvorved NOT påvirker hele udtrykket:

SELECT * FROM Vare
WHERE
    Varebetegnelse LIKE 'Boble%'
    AND
    NOT (Pris > 1 AND Pris < 2)

Prøv selv

  • Find kunder ikke i Nyborg
  • Find kunder i Nyborg med gyldig email
  • Find papkasser, hvor prisen ikke er mellem 4 og 6 kr.

Klargør testmiljø

SQL Kursus er lavet med fokus på Microsoft SQL Server. Hvis du ikke har adgang til en Microsoft SQL Server til brug for dette kursus, kan du hente en gratis version hos Microsoft. Versionen hedder Microsoft SQL Server Express. Det er en fuld funktionsdygtig databaseserver med nogle få begrænsninger. Det er tilladt at bruge SQL Server Express i et produktionsmiljø, dog skal du være opmærksom på, at databasen ikke kan overstige 10 GB. Til vores undervisningsformål er den størrelse intet problem.

I denne artikel viser jeg dig, hvordan du får SQL Server Express op at køre og installerer Management Studio, som vi bruger til at skrive SQL-sætninger i. Til sidst indlæser du en backup af undervisningsdatabasen. Nu er du køreklar!

  • Første trin er at hente og installere serverprogrammet fra Microsoft.
  • Andet trin er at hente og installere SQL Server Management Studio.
  • Tredje trin er at forbinde til din Microsoft SQL Server Express og konstatere, at den kører.
  • Fjerde trin er at indlæse en backup af undervisningsdatabasen.
Videoen viser hele processen, som du kan læse om i detaljer herunder.

Hent og installer Microsoft SQL Server Express

  1. Find downloadsitet hos Microsoft. I skrivende stund (april 2020) er denne adresse gyldig: https://www.microsoft.com/en-us/sql-server/sql-server-downloads (åbner i ny fane) – hvis den adresse ikke længere fungerer, må du ty til internettets søgemaskiner og søge efter ”Download Microsoft SQL Server Express”.
  2. Vælg Basic-installation. Du får sikkert en besked om, at dansk ikke er understøttet som sprog. Jeg bruger den engelske version her i SQL Kursus. Svar Yes til at installere på engelsk.
  3. Accepter licensbetingelserne.
  4. Accepter installationsmappe eller vælg en anden, og gennemfør installationen.
  5. Bemærk oversigtsbilledet til sidst, her står navnet på din instans: SQLEXPRESS og hvem der kan administrere databasen – i mit tilfælde er det brugeren X på X-PC.
  6. Lad vinduet stå åbent, og gå til næste step for at installere SSMS.

Hent og installer SQL Server Management Studio (SSMS)

  1. Til sidst i installationen af SQL Server Express er der en knap til at hente Management Studio (SSMS), brug den gerne. Ellers skal du et smut forbi Microsofts hjemmeside for at hente programmet. SSMS er gratis, også til professionelt brug. Denne adresse virker nu (april 2020), https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms (åbner i ny fane) – hvis den ikke virker, når du forsøger, må du søge efter ”SQL Server Management Studio” på internettet.
  2. Installer programmet efter download, vælg installationsmappe, accepter betingelser m.m.
  3. Efter installation er du klar til at bruge det.

Forbind til databaseserver med Management Studio

  1. Start Management Studio.
  2. Det først, du skal tage stilling til er, hvilken database du vil forbinde til. Vælg her (hvis det ikke allerede er valgt) <dit computernavn>/SQLEXPRESS. Authentication skal være Windows Authentication.
  3. Klik på Connect.
  4. I venstre side skal du se dit databaseserverens navn (som i trin 2 ovenfor), der skal være et grønt symbol ved navnet for at vise, at databaseserveren kører.

Indlæs backup af kursusdatabasen

Bemærk, at denne process forudsætter, at du ikke har en SQLKursus-database i forvejen. Hvis du vil genindlæse backuppen for at starte på en frisk, skal du slette den eksisterende database først.

  1. Hent SQLKursus.bak fra denne side (åbner i ny fane). Hvis du henter ZIP-filen, skal du huske at pakke den ud, før du fortsætter.
  2. Flyt SQLKursus.bak til mappen, hvor SQL Server forventer at finde sine backupfiler. Det er som regel i mappen (bemærk MSSQL15.SQLEXPRESS – hvis du har en anden version, vil mappen hedde noget andet!):
    C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\Backup
  3. Du skal sikkert acceptere administratoradgang for at tilgå mappen.
  4. Højreklik på Databases, og vælg Restore Database.
  5. Klik Device.
  6. Klik på …-symbolet.
  7. Der vises en dialogboks, hvor du skal vælge mediet. Sørg for, at der står File i Backup Media Type, og tryk på Add.
  8. Du skal nu udpege den SQLKursus.bak-fil, du har hentet. Tryk OK.
  9. Du har nu valgt et backupmedie. Klik OK.
  10. Klik OK for at indlæse backup.

Du er nu klar til næste artikel, hvor du opretter din første forespørgsel.