TDDB77 Databasteknik Fö 2 Relationsdatabaser & SQL Henrik André-Jönsson
Gamla system baserade på filsystem. Behov av standardiserad datamodel. Standardiserat sätt att komma åt data. Relationsmodellen - varför
Relationer Personnummer Namn Telefon E-Post Adress Ålder
Relationer PNummerNamnAdressTelefonE-PostÅlder Relation Attribut Domän Textsträngar som bara innehåller A-Ö och a-ö och är mindre än 30 tecken långa. eller ååmmdd-xxxx Textsträng mindre än 30 tecken rrr - nn nn nn aaaaannn Posisivtheltal 0<x<150
Relationer PNummerNamnAdressTelefonE-PostÅlder Anders Andersson Rydsvägen andan Veronika Pettersson Alsätersg verpe22227 Tupel Attribut
Relationer Varje tupel måste gå att unikt peka ut. Nycklar! PNummerNamnAdressTelefonE-PostÅlder Anders Andersson Rydsvägen andan Veronika Pettersson Alsätersg verpe22227
Relationer Kandidatnycklar Primärnycklar PNummer NamnAdressTelefonE-PostÅlder Anders Andersson Rydsvägen andan Veronika Pettersson Alsätersg verpe22227
Relationer Främmande nycklar KursLärareAnt. Fö. TDDB77Henrik10 TDDB38Patrick15 PNumBetygKurs TDDB TDDB TDDB77 PNumBetygKursLärareAnt.Fö TDDB77Henrik TDDB38Patrick TDDB77Henrik10 Främmande nyckel eller referensattribut
Relationer Frågor? Rast!
SQL Structured Query Language Skapa relationer Ändra befintliga relationer Lägga in data Hämta ut data
Create Table CREATE TABLE TEACHER ( PNum CHAR(11) NOT NULL, FName VARCHAR(20), LName VARCHAR(20), Office CHAR(10), Phone CHAR(4), PRIMARY KEY (PNum), FOREIGN KEY (Office) REFERENCES OFFICE(ID) ); PNumFNameLNameOfficePhone
Alter Table ALTER TABLE TEACHER ADD Dep VARCHAR(10); PNumFNameLNameOfficePhone
Alter Table ALTER TABLE TEACHER ADD Dep VARCHAR(10); PNumFNameLNameOfficePhoneDep ALTER TABLE TEACHER DROP Phone; ALTER TABLE TEACHER ALTER Dep ADD CONSTRAINT NOT NULL DROP TABLE TEACHER;
Insert INSERT INTO TEACHER(PNum, FName, LName, Office, Phone, Dep) VALUES (’ ’, ’Henrik’, ’A-J’, ’KC102:2’, ’1882’, ’IDA’); PNumFNameLNameOfficePhoneDep
Insert INSERT INTO TEACHER(PNum, FName, LName, Office, Phone, Dep) VALUES (’ ’, ’Henrik’, ’A-J’, ’KC102:2’, ’1882’, ’IDA’); PNumFNameLNameOfficePhoneDep HenrikA-JKC102:21882IDA
Update UPDATE TEACHER SET Phone = 1884 WHERE PNum = ’ ’; PNumFNameLNameOfficePhoneDep HenrikA-JKC102:21882IDA
Update UPDATE TEACHER SET Phone = 1884 WHERE PNum = ’ ’; PNumFNameLNameOfficePhoneDep HenrikA-JKC102:21884IDA
Queries SELECT FROM WHERE Vilka attribut ska visas? Vilka relationer behövs för att svara på frågan? Vilka villkor finns på resultat tuplerna?
Queries PNumFNameLNameOfficePhoneDep HenrikA-JKC102:21882IDA PatrickLambrixKC105:21921IDA AndersAnderssonKC102:21883IDA SELECT * FROM TEACHER ;
Queries PNumFNameLNameOfficePhoneDep HenrikA-JKC102:21882IDA PatrickLambrixKC105:21921IDA AndersAnderssonKC102:21883IDA SELECT FName, LName FROM TEACHER ; HenrikA-J PatrickLambrix AndersAndersson
Queries PNumFNameLNameOfficePhoneDep HenrikA-JKC102:21882IDA PatrickLambrixKC105:21921IDA AndersAnderssonKC102:21883IDA SELECT FName, LName FROM TEACHER WHERE Office = ’KC102:2’ ; HenrikA-J AndersAndersson
Queries PNumFNameLNameOfficePhoneDep HenrikA-JKC102:21882IDA PatrickLambrixKC105:21921IDA AndersAnderssonKC102:21883IDA SELECT FName, LName FROM TEACHER WHERE Office = ’KC102:2’ ORDER BY FName ; AndersAndersson HenrikA-J
Queries PNumFNameLNameOfficePhoneDep HenrikA-JKC102:21882IDA PatrickLambrixKC105:21921IDA AndersAnderssonKC102:21883IDA SELECT COUNT (*) FROM TEACHER WHERE Office = ’KC102:2’ ; 2
Queries PNumFNameLNameOfficePhoneDep HenrikA-JKC102:21882IDA PatrickLambrixKC105:21921IDA AndersAnderssonKC102:21883IDA SELECT MAX (Phone), MIN (Phone), AVG (Phone), SUM (Phone) FROM TEACHER ; ,335686
Joins KursLärareAnt. Fö. TDDB77Henrik10 TDDB38Patrick15 PNumBetygKurs TDDB TDDB TDDB77 SELECT STUDENT.Betyg FROM STUDENT, KURS WHERE STUDENT.Kurs = KURS.Kurs AND KURS.Lärare=’Henrik’; SELECT Betyg FROM STUDENT WHERE Kurs = ( SELECT Kurs FROM KURS WHERE Lärare = ’Henrik’); eller
Joins PNumBetygKursLärareAnt.Fö TDDB77Henrik TDDB77Henrik10
Summering Relationsmodellen –Tupler –Attribut –Domäner –Kandidatnycklar –Primärnycklar –Främmandenycklar
Summering SQL –CREATE TABLE –ALTER TABLE –DROP TABLE –INSERT INTO –UPDATE –SELECT... FROM... WHERE –Aggregatfunktioner (Count/Min/Max/Sum/Avg)
Slut på del 2 Frågor?