databashantering för programmerare

27
DATABASHANTERING DATABASHANTERING för programmerare för programmerare Lektion 3 Lektion 3 Mahmud Al Hakim Mahmud Al Hakim [email protected] [email protected] www.hakimdata.se www.hakimdata.se

Upload: kesler

Post on 15-Jan-2016

37 views

Category:

Documents


0 download

DESCRIPTION

DATABASHANTERING för programmerare. Lektion 3 Mahmud Al Hakim [email protected] 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? - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: DATABASHANTERING för programmerare

DATABASHANTERINGDATABASHANTERINGför programmerareför programmerare

Lektion 3Lektion 3Mahmud Al HakimMahmud Al Hakim

[email protected]@hakimdata.sewww.hakimdata.sewww.hakimdata.se

Page 2: DATABASHANTERING för programmerare

22

RepetitionRepetition1.1. Vad är en RDBMS?Vad är en RDBMS?2.2. Vad är en primärnyckel?Vad är en primärnyckel?3.3. Vad är en främmande nyckel ?Vad är en främmande nyckel ?4.4. Vad menas med begreppet databasschema. Ge exempel?Vad menas med begreppet databasschema. Ge exempel?5.5. Nämn några viktiga principer för databasdesign? Nämn några viktiga principer för databasdesign? 6.6. Vad menas med begreppet redundans?Vad menas med begreppet redundans?7.7. Vilka tre olika typer av anomalier kan uppkomma i data?Vilka tre olika typer av anomalier kan uppkomma i data?8.8. Vad är ett NULL värde?Vad är ett NULL värde?9.9. Beskriv kort normaliseringsprocessen?Beskriv kort normaliseringsprocessen?10.10. 1NF innebär odelbara attributvärden. Förklara med ett 1NF innebär odelbara attributvärden. Förklara med ett

exempel?exempel?

Page 3: DATABASHANTERING för programmerare

33

Idag Idag Implementation av databas Implementation av databas

Skapa och välja en databasSkapa och välja en databas Skapa tabellerSkapa tabeller Kolumntyper och datatyper i MySQL Kolumntyper och datatyper i MySQL Ta bort tabeller och databaserTa bort tabeller och databaser Infoga, ta bort och uppdatera dataInfoga, ta bort och uppdatera data ÖvningarÖvningar

Page 4: DATABASHANTERING för programmerare

44

ExempelExempel

personal (personal (personalIDpersonalID, namn, befattning, , namn, befattning, avdelningIDavdelningID))

avdelning (avdelning (avdelningIDavdelningID, namn), namn)

personalKunskap (personalKunskap (personalIDpersonalID, , kunskapkunskap))

klient (klient (klientIDklientID, namn, adress, kontaktperson, , namn, adress, kontaktperson, kontaktnummer)kontaktnummer)

uppdrag (uppdrag (klientIDklientID, , personalIDpersonalID, uppdragDatum, timmar), uppdragDatum, timmar)

Page 5: DATABASHANTERING för programmerare

55

SQL (Structured Query Language )SQL (Structured Query Language )

SQL

DDL DML

Page 6: DATABASHANTERING för programmerare

66

Skapa en databasSkapa en databas

1.1. Starta MySQL-monitornStarta MySQL-monitorn

2.2. CREATE DATABAS personal;CREATE DATABAS personal;

Page 7: DATABASHANTERING för programmerare

77

Visa en lista på databaserVisa en lista på databaser

SHOW DATABASES;SHOW DATABASES;

Page 8: DATABASHANTERING för programmerare

88

Öppna databasÖppna databas

USE personal;USE personal;

Page 9: DATABASHANTERING för programmerare

99

Skapa tabellerSkapa tabeller

CREATE TABLE tabellnamn (CREATE TABLE tabellnamn (

tabelldefinitiontabelldefinition

) [type = tabelltyp];) [type = tabelltyp];

Page 10: DATABASHANTERING för programmerare

1010

Exempel: Skapa tabellen avdelningExempel: Skapa tabellen avdelning

CREATE TABLE avdelning (CREATE TABLE avdelning (

avdelningID int not null auto_increment primary key,avdelningID int not null auto_increment primary key,

namn varchar(30)namn varchar(30)

) type = InnoDB;) type = InnoDB;

Page 11: DATABASHANTERING för programmerare

1111

Visa information om tabellenVisa information om tabellen

DESCRIBE avdelning;DESCRIBE avdelning;

Page 12: DATABASHANTERING för programmerare

1212

Tabellen personalTabellen personal

create table personal (create table personal (

personalID int not null auto_increment primary key,personalID int not null auto_increment primary key,

namn varchar(80),namn varchar(80),

befattning varchar(15),befattning varchar(15),

avdelningID int not null avdelningID int not null references references avdelning(avdelningID)avdelning(avdelningID)

) type=InnoDB;) type=InnoDB;

Page 13: DATABASHANTERING för programmerare

1313

Tabellen personalKunskapTabellen personalKunskap

create table personalKunskap(create table personalKunskap(

personalID int not null references personal(personalID),personalID int not null references personal(personalID),

kunskap varchar(15) not null,kunskap varchar(15) not null,

primary key (personalID, kunskap)primary key (personalID, kunskap)

) type=InnoDB;) type=InnoDB;

Page 14: DATABASHANTERING för programmerare

1414

Tabellen klientTabellen klient

create table klientcreate table klient(( klientID int not null auto_increment primary key,klientID int not null auto_increment primary key, namn varchar(40),namn varchar(40), adress varchar(100),adress varchar(100), kontaktPerson varchar(80),kontaktPerson varchar(80), kontaktNummer char(12)kontaktNummer char(12)) type=InnoDB;) type=InnoDB;

Page 15: DATABASHANTERING för programmerare

1515

Tabellen uppdragTabellen uppdrag

create table uppdragcreate table uppdrag

((

klientID int not null references klient(klientID),klientID int not null references klient(klientID),

personalID int not null references personal(personalID),personalID int not null references personal(personalID),

uppdragDatum date not null,uppdragDatum date not null,

timmar float,timmar float,

primary key (klientID, personalID, uppdragDatum)primary key (klientID, personalID, uppdragDatum)

) type=InnoDB;) type=InnoDB;

Page 16: DATABASHANTERING för programmerare

1616

Visa alla tabellerVisa alla tabeller

SHOW TABLES;SHOW TABLES;

Page 17: DATABASHANTERING för programmerare

1717

Kolumntyper och datatyper i Kolumntyper och datatyper i MySQLMySQL

Numeriska typerNumeriska typerhttp://dev.mysql.com/doc/mysql/en/numeric-types.htmlhttp://dev.mysql.com/doc/mysql/en/numeric-types.html

Sträng- och texttyperSträng- och texttyperhttp://dev.mysql.com/doc/mysql/en/string-types.htmlhttp://dev.mysql.com/doc/mysql/en/string-types.html

Typer för datum och tidTyper för datum och tidhttp://dev.mysql.com/doc/mysql/en/date-and-time-types.htmlhttp://dev.mysql.com/doc/mysql/en/date-and-time-types.html

Page 18: DATABASHANTERING för programmerare

1818

Ta bort databaser och tabellerTa bort databaser och tabeller

DROP DATABASE [IF EXISTS] personal;DROP DATABASE [IF EXISTS] personal; DROP TABLE [IF EXISTS] uppdrag;DROP TABLE [IF EXISTS] uppdrag;

Page 19: DATABASHANTERING för programmerare

1919

Ändra befintliga tabellstrukturÄndra befintliga tabellstruktur

ALTER TABLEALTER TABLE

Exempel:Exempel:

ALTER TABLE personal;ALTER TABLE personal;

ADD INDEX namn (namn);ADD INDEX namn (namn);

Page 20: DATABASHANTERING för programmerare

2020

Infoga data i databasen (INSERT)Infoga data i databasen (INSERT)insert into avdelning valuesinsert into avdelning values

(42, 'Ekonomi'),(42, 'Ekonomi'),

(128, 'Forskning och utveckling'),(128, 'Forskning och utveckling'),

(NULL, 'Personalresurser'),(NULL, 'Personalresurser'),

(NULL, 'Marknad');(NULL, 'Marknad');

Page 21: DATABASHANTERING för programmerare

2121

insert into personal valuesinsert into personal values(7513,'Nina Larsson','Programmerare',128),(7513,'Nina Larsson','Programmerare',128),(9842, 'Bengt Svensson', 'DBA', 42),(9842, 'Bengt Svensson', 'DBA', 42),(6651, 'Arne Persson', 'Programmerare', 128),(6651, 'Arne Persson', 'Programmerare', 128),(9006, 'Camilla Blom', 'Systemadministratör', 128);(9006, 'Camilla Blom', 'Systemadministratör', 128);

Page 22: DATABASHANTERING för programmerare

2222

insert into personal_kunskap valuesinsert into personal_kunskap values

(7513, 'C'),(7513, 'C'),

(7513, 'Perl'),(7513, 'Perl'),

(7513, 'Java'),(7513, 'Java'),

(9842, 'DB2'),(9842, 'DB2'),

(6651, 'VB'),(6651, 'VB'),

(6651, 'Java'),(6651, 'Java'),

(9006, 'NT'),(9006, 'NT'),

(9006, 'Linux');(9006, 'Linux');

Page 23: DATABASHANTERING för programmerare

2323

insert into kund valuesinsert into kund values

(NULL, 'Telco AB', 'Kungsgatan 3 (NULL, 'Telco AB', 'Kungsgatan 3 Stockholm', 'Fredrik Palm', '95551234'),Stockholm', 'Fredrik Palm', '95551234'),

(NULL, 'E-Banken', 'Sturegatan 11 (NULL, 'E-Banken', 'Sturegatan 11 Stockholm', 'Jan Ek', '95559876');Stockholm', 'Jan Ek', '95559876');

insert into uppdrag valuesinsert into uppdrag values

(1, 7513, '2003-01-20', 8.5);(1, 7513, '2003-01-20', 8.5);

Page 24: DATABASHANTERING för programmerare

2424

Ersätta data (REPLACE)Ersätta data (REPLACE)

REPLACE-satsen fungerar precis som REPLACE-satsen fungerar precis som INSERT, men skriver över rader i INSERT, men skriver över rader i händelse av en nyckelkollision. händelse av en nyckelkollision.

Exempel:Exempel:replace into uppdrag valuesreplace into uppdrag values(1, 7513, '2003-01-20', 9.5);(1, 7513, '2003-01-20', 9.5);

Page 25: DATABASHANTERING för programmerare

2525

Ta bort data (DELETE)Ta bort data (DELETE)

delete from avdelning;delete from avdelning;

OBS! Tar bort alla rader i tabellen.OBS! Tar bort alla rader i tabellen.

Begränsa med WHEREBegränsa med WHERE

delete from avdelning delete from avdelning where namn=’Marknad’;where namn=’Marknad’;

Page 26: DATABASHANTERING för programmerare

2626

VTC - Getting StartedVTC - Getting Started

Gå till adressen:Gå till adressen:http://www.vtc.com/products/mysql.htmhttp://www.vtc.com/products/mysql.htm

Lyssna på Lyssna på SQL BasicsSQL Basics- Finding Your Way About - Finding Your Way About

- Creating a Database - Creating a Database

- Creating a Table - Creating a Table - Column Types-StringColumn Types-String- Column Types-NumericColumn Types-Numeric

Page 27: DATABASHANTERING för programmerare

2727

Övningar efter rasten Övningar efter rasten

Svara på frågorna på sid. 79-80Svara på frågorna på sid. 79-80 Skapa order databasen på sid. 80Skapa order databasen på sid. 80 Skapa en uppsättning INSERT-satser Skapa en uppsättning INSERT-satser

för att infoga data i tabellerna i din för att infoga data i tabellerna i din orderdatabas.orderdatabas.