SQL kap 6-7 + 17-20 DDL og DML 1 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 2 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; server foren ing patie nt 3 1
Oprette tabeller Generel syntaks: CREATE TABLE tabelnavn ( attributnavn attributtype [PRIMARY KEY] [AUTO_INCREMENT] [ NOT NULL], attributnavn attributtype [DEFAULT værdi],.. ); 4 De mest anvendte attributtyper Type Indhold Eks. værdi int heltal 107 double reelle 10.1415 varchar(40) tekst (max 40 karakterer) text tekst (ubegrænset, næsten) Lis Jensen Tina Jensen date dato 2007-09-10 time tidspunkt 20:39:01 datetime Dato og tidspunkt 2007-09-10 20:39:01 5 Oprette tabeller eksempel 1 CREATE TABLE postby( postnr SMALLINT UNSIGNED NOT NULL PRIMARY KEY, bynavn VARCHAR(30) NOT NULL ); 6 2
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; 7 Ændring af tabeller Tilføj kolonne ALTER TABLE medlem ADD COLUMN telefonnr VARCHAR(8); Slet kolonne ALTER TABLE medlem DROP COLUMN telefonnr; Ændre kolonne ALTER TABLE medlem MODIFY COLUMN telefonnr INT; 8 Vise tabelbeskrivelse og Slette tabeller Vise tabelbeskrivelse DESCRIBE medlem; Slet tabeller DROP TABLE IF EXISTS medlem; DROP TABLE IF EXISTS postby; 9 3
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,. ); 10 Indsætte data eksempel INSERT INTO postby( postnr, bynavn) VALUES( 4500, Køge ); 11 Opdatere data Generel syntaks UPDATE tabelnavn SET kolonne 1 = værdi, kolonne 2 = værdi,.. WHERE betingelse; 12 4
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 13 Slette data Generel syntaks DELETE FROM tabelnavn WHERE betingelse; Delete kan slette En række Flere rækker Alle rækker 14 Slette eksempel DELETE FROM medlem WHERE medlemsnr = 5; 15 5
Udtræk af data Generel syntaks SELECT attributter FROM tabelnavne WHERE betingelser; 16 Udtræk eksempler Udtrækker medlemsnr og navn på alle medlemmer SELECT medlemsnr, navn FROM medlem; Udtrækker alle attributter på alle medlemmer FROM medlem; 17 Udtræk eksempler Udtrækker alle atrributter for medlemmer i Køge FROM medlem WHERE postnr = 4500; 18 6
Absolut adressering og alias Absolut adressering SELECT medlem.medlemsnr, medlem.navn FROM medlem; Alias SELECT m.medlemsnr, m.navn FROM medlem AS m; 19 Sortering af data Postnummer tabel i alfabetisk orden FROM postby ORDER BY bynavn; Postnummer tabel i faldende alfabetisk orden FROM postby ORDER BY bynavn DESC; 20 Intervalbaserede sammenligninger Udtrækker byer med postnumre mellem 4000 og 5000 FROM postby WHERE postnr BETWEEN 4000 and 5000; Kan også laves med: WHERE postnr >= 4000 AND postnr <=5000; 21 7
Listebaserede sammenligninger Udtrækker byer på bestemte postnumre FROM postby WHERE postnr in (4100,4200, 4300); Kan også laves med: WHERE postnr=4100 OR postnr=4200 OR postnr=4300; 22 Parenteser ved kombination af AND og OR Udtræk musik CD fra forlag 1 eller 10 der koster mere en 100 kr FROM musikcd WHERE (forlagid =1 OR forlagid=10) AND pris >100; 23 Søgning på dele af ord Søg alle medlemmer der hedder Thomas til fornavn og bor i Nordjylland FROM medlem WHERE navn LIKE Thomas% and postnr >9000; 24 8
Brug af script-fil I stedet for at skrive SQL kommandoerne som kommando-sprog: Mysql> insert into med mulighed for fejl ;-) Så opret en textfil (f.eks på skrivebordet) med sql koden (brug notesblok) Fra sql prompten kaldes og udføres koden med Mysql> \. filnavn 25 9