Relationsdatabaser og SQL

Slides:



Advertisements
Lignende præsentationer
Videregående pc-vejledning
Advertisements

Mapning af 1 til mange forbindelser
Mapning af klasser til relationer
Relationsstyper En-til-en relationer: TABEL 1 NAVN ID Peter Hansen 1
REGISTRERINGSDATABASEN
Vejledning i blog-værktøjet WordPress Opdateret august 2009.
Vejledning i blog-værktøjet WordPress Opdateret oktober 2012.
Vejledning i blog-værktøjet WordPress Opdateret februar 2009.
Formularer (Access, del 3)
Databaser Teori.
SQL 1 DDL og DML.
Felter og nøgle-felter (databaser, del 6)
Eksamensspørgsmål: 4: Brugen af nøgler i en "Relationel DB" herunder: Primary Key og Foreign Key samt Super Key og Candidate Key.
SQL - Database Lektion 3 7. Semester.
Intro Variabler - datatyper. 2. forelæsning Hvad skete sidste gang Hvad er PHP? Kursussammensætning: læse – newsgroup – forelæsning – øvelsestime – aflevering.
Mapning af 1 til mange forbindelser
Validering af data (Access, del 7)
Opslagsfelter (Access, del 6). RHS – Informationsteknologi 2 Udgangspunkt Vi er ofte i den situation, at valg af en type for et felt ikke begrænser vores.
Relationsdatabaser og SQL
Beskrivelses- og analyse-teknikker understøttet af Oracle Designer
NOEA/IT FEN - Databaser/Sikkerhed 1 Lektion 10 Sikkerhed og integritet Områder Autorisationsmatrix Realisering i SQL.
XML1 4.7 XML and Its Data Model. XML2 Introduktion til XML, 178 XML = eXtensible Markup Language Markup language –sprog, hvor data "pakkes ind" i tags.
SQL Introduktion Jesper Tørresø DAB1 F08 6. Februar 2008.
6. SQL1 Standardiseret spørge-sprog mv. til relationsdatabaser.
Relationsdatabaser og SQL
FEN IntroJava AAU1 Java grundelementer Variable og datatyper Sætninger og udtryk Metoder.
Operationer på relationer
22/092VE/E00/RB1 Introduktion til SQL Datalogi 2VE E00 DIKU Forelæsninger 22/9 og 29/9.
Relationsdatabaser og SQL
7. SQL constraints og triggers1 Aktive elementer i SQL.
Data Warehousing Del 2 af 3: Opbygning af et Data Warehouse
2009NOEA/IT - Databaser/SQL1 Realisering af den relationelle model i SQL-baserede DBMS’er SQL er mere end forespørgsler - det omfatter bl.a. –DDL Data.
1 HMAK XMLRelationel model og XMLNOEA / PQC 2005 SQLServer og XML Hent data via URL Generering af xml –Raw –Auto –Explicit Hent data via template Evt.
SQL – Oracle Relationsdatabase
Data Dictionary (databaser, del 7)
Årsmøde Organisationen Danske Arkiver
SQL – Oracle Relationsdatabase
Relationelle databaser og XML
SQL Jesper Tørresø DAB1 E oktober Punkter for i dag. SQL baggrund. Relationel algebra. Brug af VS2005.
2009NOEA/IT - Databaser/arkitektur1 Den relationelle model En teoretisk model for databaser Hviler på et sundt teoretisk grundlag Omfatter: Datastruktur.
Virksomhedens informationsbehandling lektion Ved. Jens Godik Højen.
8.7 Security: Grant and revoke1 Sikkerhed 8.7 Security and User Authorization in SQL.
2009NOEA/IT - Databaser/arkitektur1 Tabeldesign Design af relationsdatabaser Normalisering.
Data Warehouse 8. semester forår 2010
Clustered Index Scan & Seek Af Anita (DM08204). Clustered Index Organiserer/strukturer Organiserer/strukturer Én pr. tabel Én pr. tabel Valg af indexeringskolonne.
DATATYPER. For at tilpasse hvert felt i databasen til dets formål og dermed øge funktionalitet 1 bit er tilstrækkelig til at angive køn (0/1) men for.
Intro Større applikationer, f. eks: Bogpris.dk. Nye bøger.
Tina Ratzer Hendes hjemmeside skal indeholde: Kontakt Forhandlerliste
Paradigmer i Programmering 2. Sammensatte typer Tupler og lister Programmering med rekursion Programmering med pipe-lines Programmering med polymorfe.
Intro Databaserne? Gik det som det skulle?. Databasestøttet webpublicering Forelæsning nr 8 Hvorfor data i en RDB (relationel database)? Databasemodellering.
3. Objekt Orientering og Relations Databaser
SQL Jesper Tørresø DAB1 E September Punkter for i dag. SQL baggrund. Relationel algebra. SQL koncept –Vises ved brug af VS2008.
Oprettelse af tabeller (Access, del 2)
SQL – Oracle Vigtige SQL sætninger Lektion 6 7. Semester.
DWDK – øvelsestime 3 CSS – let the fun begin!!. Tilgængelige slides Disse slides ligger på mit public drev
Database.
Database Some walk through. Database Design – Begreber 1 Database: En fælles samling af logiske relaterede data (informationer) DBMS (database management.
E/R-diagrammering 7. Semester.
Opgaver Design tabeller Kvalitetscheck af (3NF) tabeldesignet Skriv CREATE TABLE-sætninger.
Den relationelle model
Oracle Application Express Lektion 1 7. Semester 2008.
Objekt-relationel DBMS1 4.5 The Object-Relational Model 9.4 User-Defined Types in SQL 9.5 Operations on Object-Relational Data Ullman: Object-Relational.
Intro Databaserne? Gik det som det skulle?. Databasestøttet webpublicering Forelæsning nr 7 Hvorfor data i en RDB? Databasemodellering Begrebet nøgle.
Videregående pc-vejledning
Omsætning af en model til en RDB Jesper Tørresø DAB1 F Marts 2008.
Database Some walk through lv/ Figures & some text from: © Pearson Education Limited 1995,
Modellering og data Nyt forløb.
MySQL dat2sem2018Fall Modul 2 – uge 2.
Dat2sem2019 Bornholm Modul 2 – uge 2
Præsentationens transcript:

Relationsdatabaser og SQL Del 2 af 4: Data Definition Language (DDL) i SQL Aalborg Universitet, d. 4. september 2006 B e n t M ø l l e r M a d s e n

Tegn-forklaring 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.

Elementer i en tabel Postnumre Postnumre Postnr Bynavn Postnr Bynavn 9000 Aalborg 9760 Vrå 8000 Århus C 4180 Sorø 7430 Ikast 9000 Aalborg 9760 Vrå 8000 Århus C 4180 Sorø 7430 Ikast

SQL til tabelstruktur Data Definition Language (DDL) CREATE Opret tabel ALTER Ændre tabel DROP Nedlæg tabel (DESCRIBE Beskriv tabel) (RENAME Omdøb tabel) Vedrører tabelstrukturen ikke de faktiske data i tabeller Postnumre Postnr Bynavn

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 maks. længde kolonnenavn datatype standardværdi

Tabel- og kolonnenavn 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!!!

Generelle 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)

Oracle datatyper CHAR(maks. længde) VARCHAR2(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

Oracle datatyper CLOB BLOB Character Large Object Tekstfelt med plads til 4 GB BLOB Binary Large Object Binært felt med plads til 4 GB

Beskrive & slette tabeller m.m. Beskrive én tabel DESCRIBE <tabelnavn>; DESC <tabelnavn>; Vis alle tabeller SELECT * FROM user_tables; Omdøbe tabel RENAME <tabelnavn> TO < nyt tabelnavn>; Slette tabel DROP TABLE <tabelnavn>;

Betingelser / constraints Udover at datatypen afgrænser mulighederne for at indtaste data er der 5 typer betingelser, der kan knyttes på en eller flere kolonner i tabellerne for at sikre dataintegritet. NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY …… REFERENCES …… CHECK Alle betingelser kan enten oprettes direkte på én kolonne eller selvstændigt med mulighed for at omfatte flere kolonner.

NULL / NOT NULL NULL er lig en ukendt værdi Med en NOT NULL constraint på en kolonne bliver det et krav, at der altid skal være en værdi i kolonnen. CREATE TABLE kunder (kunde_id NUMBER(10), kunde VARCHAR2(20), adresse VARCHAR2(50) [CONSTRAINT adresse_nn] NOT NULL, postnr NUMBER(4), [CONSTRAINT adresse_nn] CHECK (adresse IS NOT NULL)); Not null

UNIQUE En UNIQUE constraint på en eller flere kolonner betyder, at værdierne i disse skal være unikke på tværs af alle rækker Der må godt forekomme tomme/null felter CREATE TABLE kunder (kunde_id NUMBER(10), kunde VARCHAR2(20) [CONSTRAINT kunde_uk] UNIQUE, adresse VARCHAR2(50) NOT NULL, postnr NUMBER(4), [CONSTRAINT kunde_uk] UNIQUE (kunde)); Unique (key)

Primærnø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.

Primærnøgle Overvejelser omkring at anvende naturlige eller syntetiske/surrogat data til primærnøgler CREATE TABLE kunder ( kunde_id NUMBER(10) [CONSTRAINT kunder_pk] PRIMARY KEY, kunde VARCHAR2(20) UNIQUE, adresse VARCHAR2(50) NOT NULL, postnr NUMBER(4), [CONSTRAINT kunder_pk] PRIMARY KEY (kunde_id) ); 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)

Fremmednøgle Kunder Postnumre ALTER TABLE kunder ADD [CONSTRAINT kunder_postnumre_fk] FOREIGN KEY (postnr) REFERENCES postnumre (postnr) [ON DELETE {CASCADE|SET NULL}]; ID Kunde Postnr 101 Bilka 9000 102 Kvickly 105 Spar 4180 103 Ikea 5000 Postnr Bynavn 9000 Aalborg 9760 Vrå 8000 Århus C 4180 Sorø 7430 Ikast

Fremmednøgle CREATE TABLE kunder ( kunde_id NUMBER(10) PRIMARY KEY, kunde VARCHAR2(20) UNIQUE, adresse VARCHAR2(50) NOT NULL, postnr NUMBER(4) [CONSTRAINT kunder_postnumre_fk] REFERENCES postnumre (postnr) [ON DELETE {CASCADE|SET NULL}], [CONSTRAINT kunder_postnumre_fk] FOREIGN KEY (postnr) REFERENCES postnumre (postnr) [ON DELETE {CASCADE|SET NULL}] ); Fremmednøgle

Fremmednøgle Ingen ON DELETE regel på fremmednøglen Det er ikke tilladt at slette rækker fra tabellen som fremmednøglen refererer til (postnumre), hvis de anvendes i tabellen med fremmednøglen (kunder). ON DELETE CASCADE regel på fremmednøglen Sletning af rækker fra tabellen, som fremmednøglen refererer til (postnumre), medføre at sammenhængende rækker i tabellen med fremmednøglen (kunder) også bliver slettet. ON DELETE SET NULL regel på fremmednøglen Sletning af rækker fra tabellen, som fremmednøglen refererer til (postnumre), gør at værdier i kolonnen med fremmednøglen sættes til null for sammenhængende rækker.

CHECK 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), [CONSTRAINT postnr_laengde_cc] CHECK (LENGTH(postnr) = 4) ); Check constraint

Ændre tabeller 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

Ændre tabel – kolonne eksempler ALTER TABLE kunder ADD ( tlf NUMBER(8), email VARCHAR2(30) ); MODIFY ( tlf VARCHAR2(15) NOT NULL, email VARCHAR2(50) DROP (tlf, email); RENAME COLUMN tlf TO telefon;

Ændre tabel – constraint eksempler ALTER TABLE kunder ADD CONSTRAINT email_cc CHECK (email LIKE '%@%'); MODIFY CONSTRAINT email_cc {ENABLE|DISABLE}; DROP CONSTRAINT email_cc; RENAME CONSTRAINT email_cc TO email_check; {ENABLE|DISABLE} CONSTRAINT email_cc; Samme resultat

Vis tabeller og constraints Vis alle tabeller SELECT * FROM user_tables; 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;

?