Strukturert spørrespråk er en av de grunnleggende byggeblokkene i moderne databasearkitektur. SQL definerer metodene som brukes til å opprette og manipulere relationsdatabaser på alle større plattformer. Ved første øyekast kan språket virke skremmende og komplekst, men det er ikke så vanskelig.
Om SQL
Den riktige uttalen av SQL er et tvilsomt problem i databasegruppen. I sin SQL-standard erklærte American National Standards Institute at den offisielle uttalen er "es queue el." Imidlertid har mange databasepersonell tatt til slang uttale "oppfølger". Valget er ditt.
SQL kommer i mange smaker. Oracle databaser bruker sin proprietære PL / SQL. Microsoft SQL Server benytter Transact-SQL. Alle variasjonene er basert på bransjestandard ANSI SQL. Denne introduksjonen bruker ANSI-kompatible SQL-kommandoer som fungerer på ethvert moderne relasjonsdatabasesystem.
DDL og DML
SQL-kommandoer kan deles inn i to hovedundergrupper. Data Definisjon Language (DDL) inneholder kommandoene som brukes til å lage og ødelegge databaser og databaseobjekter. Etter at databasestrukturen er definert med DDL, kan databaseadministratorer og brukere bruke DML (Data Manipulation Language) til å sette inn, hente og modifisere dataene i den.
Data Definisjon Språk kommandoer
Data Definisjon Language brukes til å lage og ødelegge databaser og databaseobjekter. Disse kommandoene brukes først og fremst av databaseadministratorer under installasjons- og fjerningsfasene til et databaseprosjekt. Her ser du strukturen og bruken av fire grunnleggende DDL-kommandoer:
SKAPE.Ved å installere et databasebehandlingssystem på en datamaskin kan du opprette og administrere mange uavhengige databaser. For eksempel kan det være lurt å opprettholde en database med kundekontakter til salgsavdelingen din og en personaldatabase for HR-avdelingen din. CREATE-kommandoen brukes til å etablere hver av disse databasene på plattformen. For eksempel, kommandoen:
CREATE DATABASE ansatte
oppretter en tom database som heter "ansatte" på DBMS. Etter å ha opprettet databasen, er neste trinn å lage tabeller som inneholder data. En annen variant av CREATE-kommandoen kan brukes til dette formålet. Kommandoen: CREATE TABLE personal_info (first_name char (20) ikke null, last_name char (20) ikke null, employee_id int ikke null)
etablerer et bord med tittelen "personal_info" i den nåværende databasen. I eksemplet inneholder tabellen tre attributter: fornavn, etternavn og ansatt_id sammen med noen tilleggsinformasjon. BRUK.Kommandoen USE lar deg spesifisere databasen du vil jobbe med i DBMS. For eksempel, hvis du for tiden jobber i salgsdatabasen og vil utstede noen kommandoer som vil påvirke medarbeidsdatabasen, forord dem med følgende SQL-kommando: Bruk ansatte
Det er viktig å alltid være bevisst på databasen du arbeider med før du utsteder SQL-kommandoer som manipulerer data. ENDRE.Når du har opprettet et bord i en database, vil du kanskje endre definisjonen. ALTER-kommandoen lar deg gjøre endringer i strukturen til et bord uten å slette og gjenskape det. Ta en titt på følgende kommando: ALTER TABLE personal_info ADD lønnspenger null
Dette eksempelet legger til et nytt attributt til personlig_info-tabellen - en ansattes lønn. "Money" -argumentet angir at en ansattes lønn er lagret ved hjelp av et dollar- og sent-format. Til slutt forteller "null" søkeordet databasen at det er OK at dette feltet ikke inneholder noen verdi for en gitt ansatt. MISTE.Den endelige kommandoen til Data Definisjon Language, DROP, tillater oss å fjerne hele databasen objekter fra vårt DBMS. Hvis vi for eksempel vil fjerne personlig_info-tabellen som vi opprettet, permanent, bruker vi følgende kommando: DROP TABLE personal_info
På samme måte vil kommandoen nedenfor bli brukt til å fjerne hele medarbeidsdatabasen: DROP DATABASE ansatte
Bruk denne kommandoen med forsiktighet. DROP-kommandoen fjerner hele datastrukturene fra databasen. Hvis du vil fjerne individuelle poster, bruker du DELETE-kommandoen i Data Manipulation Language. Data Manipulation Language (DML) brukes til å hente, sette inn og modifisere databaseinformasjon. Disse kommandoene brukes av alle databasebrukerne under den rutinemessige driften av databasen. SETT INN.INSERT-kommandoen i SQL brukes til å legge til poster i et eksisterende bord. Gå tilbake til personal_info-eksemplet fra forrige avsnitt, forestill deg at vår HR-avdeling må legge til en ny ansatt i databasen. Du kan bruke en kommando som ligner denne: INSERT TIL personlig infoverdier ( 'bart', 'simpson', 12345, $ 45 000)
Vær oppmerksom på at det er fire verdier angitt for posten. Disse tilsvarer tabellattributtene i den rekkefølgen de ble definert: fornavn, etternavn, ansatt og lønn. Å VELGE.SELECT-kommandoen er den mest brukte kommandoen i SQL. Det lar databrukere hente den spesifikke informasjonen de ønsker fra en operativ database. Ta en titt på noen få eksempler, igjen med personlig_info-tabellen fra medarbeidsdatabasen. Kommandoen som vises nedenfor henter all informasjonen som finnes i personlig_info-tabellen. Merk at stjernen brukes som jokertegn i SQL. Dette betyr bokstavelig talt "Velg alt fra personal_info-tabellen." Å VELGE *FRA personal_info
Alternativt kan brukerne begrense attributter som hentes fra databasen. For eksempel kan Human Resources avdelingen kreve en liste over etternavn på alle ansatte i selskapet. Den følgende SQL-kommandoen ville bare hente den informasjonen: VELG sistnavnFRA personal_info
WHERE-klausulen kan brukes til å begrense oppføringene som er hentet til de som oppfyller spesifikke kriterier. Konsernsjef kan være interessert i å gjennomgå personellregistrene for alle høyt betalte ansatte. Følgende kommando henter alle dataene i personal_info for poster som har en lønnsverdi på over $ 50,000: Å VELGE *FRA personal_infoHvor lønn> $ 50000
OPPDATER.OPDATE-kommandoen kan brukes til å endre informasjonen i et bord, enten i bulk eller individuelt. Anta at selskapet gir alle medarbeiderne en lønnsøkning på 3 prosent årlig. Følgende SQL-kommando kan brukes til å raskt bruke dette til alle ansatte som er lagret i databasen: OPPDATER personlig_infoSET lønn = lønn * 1,03
Når den nye medarbeider Bart Simpson demonstrerer ytelse utover call of duty, ønsker ledelsen å anerkjenne sine fantastiske prestasjoner med en $ 5000 økning. WHERE-klausulen kan brukes til å utelukke Bart for denne heisen: OPPDATER personlig_infoSET lønn = lønn + $ 5000HVOR employee_id = 12345
SLETT.Til slutt, la oss se på DELETE-kommandoen. Du finner at syntaksen til denne kommandoen ligner den andre DML-kommandoen. Dessverre, vår siste bedriftens inntjeningsrapport oppfyller ikke helt forventningene og dårlig Bart har blitt lagt av. DELETE-kommandoen med en WHERE-klausul kan brukes til å fjerne platen fra personal_info-tabellen: DELETE FROM personal_infoHVOR employee_id = 12345 Nå som du har lært grunnleggende om SQL, er det på tide å gå videre til et av de kraftigste konseptene språket har å tilby - JOIN-setningen. En JOIN-setning gir deg mulighet til å kombinere data i flere tabeller for effektivt å behandle store mengder data. Disse utsagnene er der den virkelige kraften til en database ligger. For å utforske bruken av en grunnleggende JOIN-operasjon for å kombinere data fra to tabeller, fortsett med eksempelet ved hjelp av PERSONAL_INFO-tabellen og legg til et tilleggstabell til blandingen. Anta at du har et bord som heter DISCIPLINARY_ACTION som ble opprettet med følgende setning: CREATE TABLE disciplinary_action (action_id int ikke null, employee_id int ikke null, kommentarer char (500))
Tabellen inneholder resultatene av disiplinære tiltak på selskapets ansatte. Du vil legge merke til at den ikke inneholder noen opplysninger om den ansatte enn arbeidstakernummeret. Det er enkelt å forestille seg mange scenarier hvor du kanskje vil kombinere informasjon fra DISCIPLINARY_ACTION og PERSONAL_INFO-tabellene. Anta at du har fått oppgave å lage en rapport som viser disiplinære tiltak mot alle ansatte med en lønn på over $ 40.000. Bruken av en JOIN-operasjon, i dette tilfellet, er grei. Vi kan hente denne informasjonen ved hjelp av følgende kommando: VELG personlig_info.first_name, personal_info.last_name, disciplinary_action.commentsFRA personal_info, disiplinær_aksjonHVOR personal_info.employee_id = disciplinary_action.employee_idOG personal_info.salary> 40000
Koden spesifiserer de to tabellene som vi ønsker å bli med i FROM-klausulen, og inneholder deretter en setning i WHERE-klausulen for å begrense resultatene til poster som har tilhørende ansattes ID og oppfylt kriteriene våre for en lønn over $ 40.000. Data Manipulation Language Commands
tiltrer