DATABASHANTERING för programmerare Lektion 3 Mahmud Al Hakim
[email protected] www.hakimdata.se
Repetition 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
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? 2
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
3
Exempel personal (personalID, namn, befattning, avdelningID) avdelning (avdelningID, namn) personalKunskap (personalID, kunskap) klient (klientID, namn, adress, kontaktperson, kontaktnummer) uppdrag (klientID, personalID, uppdragDatum, timmar)
4
SQL (Structured Query Language )
SQL
DDL
DML
5
Skapa en databas 1. Starta MySQL-monitorn 2. CREATE DATABAS personal;
6
Visa en lista på databaser SHOW DATABASES;
7
Öppna databas USE personal;
8
Skapa tabeller CREATE TABLE tabellnamn ( tabelldefinition ) [type = tabelltyp];
9
Exempel: Skapa tabellen avdelning CREATE TABLE avdelning ( avdelningID int not null auto_increment primary key, namn varchar(30) ) type = InnoDB;
10
Visa information om tabellen DESCRIBE avdelning;
11
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;
12
Tabellen personalKunskap create table personalKunskap( personalID int not null references personal(personalID), kunskap varchar(15) not null, primary key (personalID, kunskap) ) type=InnoDB;
13
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; 14
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; 15
Visa alla tabeller SHOW TABLES;
16
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
17
Ta bort databaser och tabeller DROP DATABASE [IF EXISTS] personal; DROP TABLE [IF EXISTS] uppdrag;
18
Ändra befintliga tabellstruktur ALTER TABLE Exempel: ALTER TABLE personal; ADD INDEX namn (namn);
19
Infoga data i databasen (INSERT) insert into avdelning values (42, 'Ekonomi'), (128, 'Forskning och utveckling'), (NULL, 'Personalresurser'), (NULL, 'Marknad');
20
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);
21
insert into personal_kunskap values (7513, 'C'), (7513, 'Perl'), (7513, 'Java'), (9842, 'DB2'), (6651, 'VB'), (6651, 'Java'), (9006, 'NT'), (9006, 'Linux'); 22
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);
23
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);
24
Ta bort data (DELETE) delete from avdelning; OBS! Tar bort alla rader i tabellen. Begränsa med WHERE delete from avdelning where namn=’Marknad’; 25
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 26
Ö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.
27