270 likes | 404 Views
DATABASHANTERING för programmerare. Lektion 3 Mahmud Al Hakim mahmud@hakimdata.se www.hakimdata.se. Repetition. Vad är en RDBMS? Vad är en primärnyckel? Vad är en främmande nyckel ? Vad menas med begreppet databasschema. Ge exempel? Nämn några viktiga principer för databasdesign?
E N D
DATABASHANTERINGför programmerare Lektion 3 Mahmud Al Hakim mahmud@hakimdata.se www.hakimdata.se
Repetition • Vad är en RDBMS? • Vad är en primärnyckel? • Vad är en främmande nyckel ? • Vad menas med begreppet databasschema. Ge exempel? • Nämn några viktiga principer för databasdesign? • Vad menas med begreppet redundans? • Vilka tre olika typer av anomalier kan uppkomma i data? • Vad är ett NULL värde? • Beskriv kort normaliseringsprocessen? • 1NF innebär odelbara attributvärden. Förklara med ett exempel?
Idag Implementation av databas • Skapa och välja en databas • Skapa tabeller • Kolumntyper och datatyper i MySQL • Ta bort tabeller och databaser • Infoga, ta bort och uppdatera data • Övningar
Exempel personal (personalID, namn, befattning, avdelningID) avdelning (avdelningID, namn) personalKunskap (personalID, kunskap) klient (klientID, namn, adress, kontaktperson, kontaktnummer) uppdrag (klientID, personalID, uppdragDatum, timmar)
Skapa en databas • Starta MySQL-monitorn • CREATE DATABAS personal;
Visa en lista på databaser SHOW DATABASES;
Öppna databas USE personal;
Skapa tabeller CREATE TABLE tabellnamn ( tabelldefinition ) [type = tabelltyp];
Exempel: Skapa tabellen avdelning CREATE TABLE avdelning ( avdelningID int not null auto_increment primary key, namn varchar(30) ) type = InnoDB;
Visa information om tabellen DESCRIBE avdelning;
Tabellen personal create table personal ( personalID int not null auto_increment primary key, namn varchar(80), befattning varchar(15), avdelningID int not null references avdelning(avdelningID) ) type=InnoDB;
Tabellen personalKunskap create table personalKunskap( personalID int not null references personal(personalID), kunskap varchar(15) not null, primary key (personalID, kunskap) ) type=InnoDB;
Tabellen klient create table klient ( klientID int not null auto_increment primary key, namn varchar(40), adress varchar(100), kontaktPerson varchar(80), kontaktNummer char(12) ) type=InnoDB;
Tabellen uppdrag create table uppdrag ( klientID int not null references klient(klientID), personalID int not null references personal(personalID), uppdragDatum date not null, timmar float, primary key (klientID, personalID, uppdragDatum) ) type=InnoDB;
Visa alla tabeller SHOW TABLES;
Kolumntyper och datatyper i MySQL • Numeriska typer http://dev.mysql.com/doc/mysql/en/numeric-types.html • Sträng- och texttyper http://dev.mysql.com/doc/mysql/en/string-types.html • Typer för datum och tid http://dev.mysql.com/doc/mysql/en/date-and-time-types.html
Ta bort databaser och tabeller • DROP DATABASE [IF EXISTS] personal; • DROP TABLE [IF EXISTS] uppdrag;
Ändra befintliga tabellstruktur • ALTER TABLE Exempel: ALTER TABLE personal; ADD INDEX namn (namn);
Infoga data i databasen (INSERT) insert into avdelning values (42, 'Ekonomi'), (128, 'Forskning och utveckling'), (NULL, 'Personalresurser'), (NULL, 'Marknad');
insert into personal values (7513,'Nina Larsson','Programmerare',128), (9842, 'Bengt Svensson', 'DBA', 42), (6651, 'Arne Persson', 'Programmerare', 128), (9006, 'Camilla Blom', 'Systemadministratör', 128);
insert into personal_kunskap values (7513, 'C'), (7513, 'Perl'), (7513, 'Java'), (9842, 'DB2'), (6651, 'VB'), (6651, 'Java'), (9006, 'NT'), (9006, 'Linux');
insert into kund values (NULL, 'Telco AB', 'Kungsgatan 3 Stockholm', 'Fredrik Palm', '95551234'), (NULL, 'E-Banken', 'Sturegatan 11 Stockholm', 'Jan Ek', '95559876'); insert into uppdrag values (1, 7513, '2003-01-20', 8.5);
Ersätta data (REPLACE) • REPLACE-satsen fungerar precis som INSERT, men skriver över rader i händelse av en nyckelkollision. Exempel: replace into uppdrag values (1, 7513, '2003-01-20', 9.5);
Ta bort data (DELETE) delete from avdelning; OBS! Tar bort alla rader i tabellen. Begränsa med WHERE delete from avdelning where namn=’Marknad’;
VTC - Getting Started • Gå till adressen:http://www.vtc.com/products/mysql.htm • Lyssna på SQL Basics - Finding Your Way About - Creating a Database - Creating a Table • Column Types-String • Column Types-Numeric
Övningar efter rasten • Svara på frågorna på sid. 79-80 • Skapa order databasen på sid. 80 • Skapa en uppsättning INSERT-satser för att infoga data i tabellerna i din orderdatabas.