SQL 1 DDL og DML
De vigtigste SQL-sætninger Data Definition Language (DDL) create table: opretter en ny tabel create unique index: tilføjer et index til en tabel drop table : sletter en tabeI alter table: tilføjer, sletter eller ændre en tabels kolonne Data Manipulation Language (DML) select: udtrækker, kombinerer og beregner data insert into ... values (...): indsætter en række delete from: fjerner rækker fra en tabel update: ændre en række i en tabel
Oprette database En database består af en samling af tabeller. CREATE DATABASE databasenavn; Eks: CREATE DATABASE Forening; Flere databaser på samme server, så skal kunne skifte mellem databaser. USE databasenavn; Eks: USE Forening;
Oprette tabeller Generel syntaks: CREATE TABLE tabelnavn ( attributnavn attributtype [PRIMARY KEY] [AUTO_INCREMENT] [ NOT NULL], attributnavn attributtype [DEFAULT værdi], ….. );
De mest anvendte attributtyper Indhold Eks. værdi int heltal 107 double reelle 10.1415 varchar(40) tekst (max 40 karakterer) ’Lis Jensen’ text tekst (ubegrænset, næsten) ’Tina Jensen’ date dato 2007-09-10 time tidspunkt 20:39:01 datetime Dato og tidspunkt 2007-09-10 20:39:01
Oprette tabeller eksempel 1 CREATE TABLE postby( postnr SMALLINT UNSIGNED NOT NULL PRIMARY KEY, bynavn VARCHAR(30) NOT NULL )ENGINE=INNODB;
Oprette tabeller eksempel 2 CREATE TABLE medlem( medlemsnr INT PRIMARY KEY AUTO_INCREMENT, navn VARCHAR(40) NOT NULL, vejnavn VARCHAR(30), husnr VARCHAR(5), postnr SMALLINT UNSIGNED, FOREIGN KEY (postnr) REFERENCES postby(postnr) ) ENGINE=INNODB;
Ændring af tabeller Tilføj kolonne ALTER TABLE medlem ADD COLUMN telefonnr VARCHAR(8); Slet kolonne DROP COLUMN telefonnr; Ændre kolonne MODIFY COLUMN telefonnr INT;
Vise tabelbeskrivelse og Slette tabeller DESCRIBE medlem; Slet tabeller DROP TABLE IF EXISTS medlem; DROP TABLE IF EXISTS postby;
Indsætte data i tabeller Generel syntaks INSERT INTO tabelnavn( kolonne 1, kolonne 2, …. VALUES( værdi til kolonne 1, værdi til kolonne 2, );
Indsætte data eksempel INSERT INTO postby( postnr, bynavn VALUES( 4500, ’Køge’ );
Opdatere data Generel syntaks UPDATE tabelnavn SET kolonne 1 = værdi, ….. WHERE betingelse;
Opdatere tabel eksempel UPDATE postby SET bynavn = ’KOEGE’ WHERE postnr = 4500; Update kan ændre Et enkelt felt i en række Flere felter i en række Et eller flere felter i mange rækker Et eller flere felter i alle rækker
Slette data Generel syntaks DELETE FROM tabelnavn WHERE betingelse; Delete kan slette En række Flere rækker Alle rækker
Slette eksempel DELETE FROM medlem WHERE medlemsnr = 5;
Udtræk af data Generel syntaks SELECT attributter FROM tabelnavne WHERE betingelser;
Udtræk eksempler Udtrækker medlemsnr og navn på alle medlemmer SELECT medlemsnr, navn FROM medlem; Udtrækker alle attributter på alle medlemmer SELECT *
Udtræk eksempler Udtrækker alle atrributter for medlemmer i Køge SELECT * FROM medlem WHERE postnr = 4500;
Absolut adressering og alias SELECT medlem.medlemsnr, medlem.navn FROM medlem; Alias SELECT m.medlemsnr, m.navn FROM medlem AS m;
Sortering af data Postnummer tabel i alfabetisk orden SELECT * FROM postby ORDER BY bynavn; Postnummer tabel i faldende alfabetisk orden ORDER BY bynavn DESC;
Intervalbaserede sammenligninger Udtrækker byer med postnumre mellem 4000 og 5000 SELECT * FROM postby WHERE postnr BETWEEN 4000 and 5000; Kan også laves med: WHERE postnr >= 4000 AND postnr <=5000;
Listebaserede sammenligninger Udtrækker byer på bestemte postnumre SELECT * FROM postby WHERE postnr in (4100,4200, 4300); Kan også laves med: WHERE postnr=4100 OR postnr=4200 OR postnr=4300;
Parenteser ved kombination af AND og OR Udtræk musik CD fra forlag 1 eller 10 der koster mere en 100 kr SELECT * FROM musikCD WHERE (forlagid =1 OR forlagid=10) AND pris >100;
Søgning på dele af ord Søg alle medlemmer der hedder Thomas til fornavn og bor i Nordjylland SELECT * FROM medlem WHERE navn LIKE ’Thomas%’ and postnr >9000;
Opgaver til næste gang Opret Lilleby Kommune biblioteks database i MySQL Opret 11 lånere (brug telefonlisten til holdet) Opret udlånsmateriale (brug litteraturlisten til dette hold) Opret 4 eksemplarer af hvert materiale Udtræk alle oplysninger om alle lånere Udtræk en låner liste i alfabetisk orden. Udtræk de lånere som bor i postdistrikt 2610 og 2800 Udtræk de lånere bogstavet o i deres navn Udtræk de lånere der bor i postdistrikt mellem 3000 og 4000. link til en installationvejledning til Mysql: http://www.g2k.dk/MySQL/installation/ Opgave 1 til 4 kan med fordel skrives i Notepad og gemmes som et script, sådan at det er nemt at genoprette database igen.