databashantering för programmerare
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 PresentationTRANSCRIPT
DATABASHANTERINGDATABASHANTERINGför programmerareför programmerare
Lektion 3Lektion 3Mahmud Al HakimMahmud Al Hakim
[email protected]@hakimdata.sewww.hakimdata.sewww.hakimdata.se
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?
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
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)
55
SQL (Structured Query Language )SQL (Structured Query Language )
SQL
DDL DML
66
Skapa en databasSkapa en databas
1.1. Starta MySQL-monitornStarta MySQL-monitorn
2.2. CREATE DATABAS personal;CREATE DATABAS personal;
77
Visa en lista på databaserVisa en lista på databaser
SHOW DATABASES;SHOW DATABASES;
88
Öppna databasÖppna databas
USE personal;USE personal;
99
Skapa tabellerSkapa tabeller
CREATE TABLE tabellnamn (CREATE TABLE tabellnamn (
tabelldefinitiontabelldefinition
) [type = tabelltyp];) [type = tabelltyp];
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;
1111
Visa information om tabellenVisa information om tabellen
DESCRIBE avdelning;DESCRIBE avdelning;
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;
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;
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;
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;
1616
Visa alla tabellerVisa alla tabeller
SHOW TABLES;SHOW TABLES;
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
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;
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);
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');
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);
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');
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);
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);
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’;
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
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.