180 likes | 333 Views
SQL – Oracle Relationsdatabase. Lektion 3 7. Semester. Hvad du ikke må! . Vær præcis! meget præcis! Udvis disciplin når du skriver SQL Tro ikke på at ”den” selv laver fejl Lær de mest almindelige kommandoer Det er en rigtig god idé at sætte koden pænt op – det letter senere fejlsøgning.
E N D
SQL – OracleRelationsdatabase Lektion 3 7. Semester
Hvad du ikke må! • Vær præcis! meget præcis! • Udvis disciplin når du skriver SQL • Tro ikke på at ”den” selv laver fejl • Lær de mest almindelige kommandoer • Det er en rigtig god idé at sætte koden pænt op – det letter senere fejlsøgning. • Søg råd ved Bent www.b2m.dk
Hvad forstås med disciplin? • Denne skrifttype er lig kode • STORE BOGSTAVER er lig Oracle kommandoer • <tekst> betyder at tekst inkl. større-end og mindre-end tegn skal erstattes med den faktiske tekst/værdi. • [tekst] betyder at tekst er valgfri og kan udelades. De firkantede parenteser skal aldrig skrives i koden. • {tekst1|tekst2} betyder at en af teksterne adskilt af de lodrette streger skal vælges. De krøllede parenteser skal aldrig skrives i koden.
En god ide at skifte • Inden PL/SQL tages i brug er det som regel en rigtig god idé at skifte til dansk opsætning ALTER SESSION SET NLS_DATE_LANGUAGE = Danish NLS_DATE_FORMAT = 'DD.MM.YYYY' NLS_NUMERIC_CHARACTERS = '.,';
Datatyper • Tekst • Tal • Dato/tid • Binære filer • Lyd • Billeder • Dokumenter • Boolsk type (Boolean) • Sand, falsk eller null (tom) • Findes ikke i Oracle (i stedet kan en almindelig tekstkolonne med disse værdier anvendes)
Oprettelse af tabel • CREATE TABLE <tabelnavn> (<kolonnenavn> <DATATYPE> [DEFAULT <værdi>] [<CONSTRAINTS>]); CREATE TABLE kunder ( kunde_id NUMBER(10), kunde VARCHAR2(20), adresse VARCHAR2(50), postnr NUMBER(4) DEFAULT 9000 ); tabelnavn Kolonne-navn maks. længde datatype standardværdi
Hvad virker • Tabel og kolonnenavne skal: • begynde med et bogstav • bestå af mellem 1 og 30 karakterer • lovlige karakterer: A-Z, 0-9, _, $, # • undgå æ, ø eller å • være entydige / unikke • Ikke to tabeller af samme navn • Ikke to kolonner af samme navn i én tabel • ikke være et reserveret ord, fx kommandoer (SELECT, TABLE, BY m.fl.) • Der skal normalt ikke tage ikke hensyn til STORE og små bogstaver • Hvis navnene skrives i dobbelt anførselstegn, kan næsten alle reglerne dog brydes!!!
Ændring af tabel • ALTER TABLE • ADD - tilføje kolonne / constraint • MODIFY - ændre kolonne / constraint • DROP - slette en kolonne / constraint • RENAME - omdøbe kolonne / constraint • ENABLE/DISABLE - deaktivere/aktivere constraint
ALTER TABLE Tilføj ekstra kolonner • ALTER TABLE kunder ADD ( tlf NUMBER(8), email VARCHAR2(30) ); • ALTER TABLE kunder MODIFY ( tlf VARCHAR2(15) NOT NULL, email VARCHAR2(50) ); • ALTER TABLE kunder DROP (tlf, email); • ALTER TABLE kunder RENAME COLUMN tlf TO telefon; Ændre på feltegen-skaber Slet en kolonne Navne ændring af kolonne
Datatyper • CHAR(maks. længde) • Fast karakterfelt med plads til maks. 2000 tegn • VARCHAR2(maks. længde) • Variabelt karakterfelt med plads til maks. 4000 tegn • NUMBER[(præcision[,skala])] • Tal, hvor præcision er antal tilladte cifre, mens skala er antal decimaler ud af det samlede antal cifre. • DATE • Datofelt med præcision ned til 1 sekund • TIMESTAMP • Datofelt med præcision ned til brøkdele af sekunder
Beskrive & slette tabeller m.m. • Beskrive én tabel • DESCRIBE <tabelnavn>; • DESC <tabelnavn>; • Vis alle tabeller • SELECT * FROM user_tables; • Vis poster i tabel • SELECT * FROM kunder; • Omdøbe tabel • RENAME <tabelnavn> TO < nyt tabelnavn>; • Slette tabel • DROP TABLE <tabelnavn>;
Primær nøgle • En primærnøgle anvendes til unikt at identificerer hver række i en tabel • Den kan bestå af flere kolonner (en sammensat primærnøgle) • Krav til en primærnøgle: • Der kan kun være én for hver tabel • Alle data i primærnøglen skal være unikke • Der må ikke forekomme tomme (null) felter • Yderligere bør data være forholdsvis ”stabile” • Der kan være flere kandidatnøgler, der opfylder ovenstående krav, til en primærnøgle.
Fremmednøgle • Fremmednøgler sikrer integriteten mellem tabeller • Krav til en fremmednøgle: • Fremmednøglen skal referere til en primær eller unik nøgle. • En fremmednøgle-værdi skal enten kunne findes i reference-tabellen eller være NULL. • En kolonnen med en fremmednøgle skal være samme datatype som kolonnen med den primære eller unikke nøgle i reference-tabellen. • En fremmednøgle kan referere til den tabel, som den selv er placeret i. (Rekursivt hierarki)
Ændre egenskaber – constraint • ALTER TABLE kunder ADD CONSTRAINT email_cc CHECK (email LIKE '%@%'); • ALTER TABLE kunder MODIFY CONSTRAINT email_cc {ENABLE|DISABLE}; • ALTER TABLE kunder DROP CONSTRAINT email_cc; • ALTER TABLE kunder RENAME CONSTRAINT email_cc TO email_check; • ALTER TABLE kunder {ENABLE|DISABLE} CONSTRAINT email_cc; Samme resultat
Semantisk integritet - ? • CHECK Constraints er fleksible betingelser, man selv definerer, som data skal opfylde. CREATE TABLE kunder ( kunde_id NUMBER (10) PRIMARY KEY, kunde VARCHAR2(20) UNIQUE, adresse VARCHAR2(50) NOT NULL, postnr NUMBER (4) REFERENCES postnumre (postnr)[CONSTRAINT postnr_laengde_cc] CHECK (LENGTH(postnr) = 4) );
Hvad postkassen slugte • Vis alle constraints • SELECT * FROM user_cons_columns NATURAL JOIN user_constraints; • Tømning af ”Papirkurv” • Hvis der optræder navne lignende følgende i ovenstående forespørgsler • BIN$EO/cSFBIQqOsWWy9uhmgFQ==$0 • så tøm Oracles papirkurv med denne kommando • PURGE RECYCLEBIN;
Indsætte data i tabeller • INSERT INSERT INTO <tabelnavn> [(<kolonner>)] VALUES (<værdier>); INSERT INTO kunder VALUES (115,'Føtex', null, '13-08-2006'); INSERT INTO kunder (id, kunde) VALUES (116, 'Netto');