Voorbeeld 4.1: CREATE USER 'BOEKSQL'@'localhost' IDENTIFIED BY 'BOEKSQLPW' Voorbeeld 4.2: GRANT ALL PRIVILEGES ON *.* TO 'BOEKSQL'@'localhost' WITH GRANT OPTION Voorbeeld 4.3: CREATE DATABASE TENNIS Voorbeeld 4.4: USE TENNIS Voorbeeld 4.5: CREATE TABLE SPELERS (SPELERSNR INTEGER NOT NULL, NAAM CHAR(15) NOT NULL, VOORLETTERS CHAR(3) NOT NULL, GEB_DATUM DATE , GESLACHT CHAR(1) NOT NULL, JAARTOE SMALLINT NOT NULL, STRAAT VARCHAR(30) NOT NULL, HUISNR CHAR(4) , POSTCODE CHAR(6) , PLAATS VARCHAR(30) NOT NULL, TELEFOON CHAR(13) , BONDSNR CHAR(4) , PRIMARY KEY (SPELERSNR) ) ; CREATE TABLE TEAMS (TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, DIVISIE CHAR(6) NOT NULL, PRIMARY KEY (TEAMNR) ) ; CREATE TABLE WEDSTRIJDEN (WEDSTRIJDNR INTEGER NOT NULL, TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, GEWONNEN SMALLINT NOT NULL, VERLOREN SMALLINT NOT NULL, PRIMARY KEY (WEDSTRIJDNR) ) ; CREATE TABLE BOETES (BETALINGSNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, DATUM DATE NOT NULL, BEDRAG DECIMAL(7,2) NOT NULL, PRIMARY KEY (BETALINGSNR) ) ; CREATE TABLE BESTUURSLEDEN (SPELERSNR INTEGER NOT NULL, BEGIN_DATUM DATE NOT NULL, EIND_DATUM DATE , FUNCTIE CHAR(20) , PRIMARY KEY (SPELERSNR, BEGIN_DATUM)) Voorbeeld 4.6: INSERT INTO SPELERS VALUES ( 2, 'Elfring', 'R', '1948-09-01', 'M', 1975, 'Steden', '43', '3575NH', 'Den Haag', '070-237893', '2411') ; INSERT INTO SPELERS VALUES ( 6, 'Permentier', 'R', '1964-06-25', 'M', 1977, 'Hazensteinln', '80', '1234KK', 'Den Haag', '070-476537', '8467') ; INSERT INTO SPELERS VALUES ( 7, 'Wijers', 'GWS', '1963-05-11', 'M', 1981, 'Erasmusweg', '39', '9758VB', 'Den Haag', '070-347689', NULL) ; INSERT INTO SPELERS VALUES ( 8, 'Niewenburg', 'B', '1962-07-08', 'V', 1980, 'Spoorlaan', '4', '6584WO', 'Rijswijk', '070-458458', '2983') ; INSERT INTO SPELERS VALUES ( 27, 'Cools', 'DD', '1964-12-28', 'V', 1983, 'Liespad', '804', '8457DK', 'Zoetermeer', '079-234857', '2513') ; INSERT INTO SPELERS VALUES ( 28, 'Cools', 'C', '1963-06-22', 'V', 1983, 'Oudegracht', '10', '1294QK', 'Leiden', '010-659599', NULL) ; INSERT INTO SPELERS VALUES ( 39, 'Bischoff', 'D', '1956-10-29', 'M', 1980, 'Ericaplein', '78', '9629CD', 'Den Haag', '070-393435', NULL) ; INSERT INTO SPELERS VALUES ( 44, 'Bakker, de', 'E', '1963-01-09', 'M', 1980, 'Lawaaistraat', '23', '4444LJ', 'Rijswijk', '070-368753', '1124') ; INSERT INTO SPELERS VALUES ( 57, 'Bohemen, van', 'M', '1971-08-17', 'M', 1985, 'Erasmusweg', '16', '4377CB', 'Den Haag', '070-473458', '6409') ; INSERT INTO SPELERS VALUES ( 83, 'Hofland', 'PK', '1956-11-11', 'M', 1982, 'Mariakade', '16a', '1812UP', 'Den Haag', '070-353548', '1608') ; INSERT INTO SPELERS VALUES ( 95, 'Meuleman', 'P', '1963-05-14', 'M', 1972, 'Hoofdweg', '33a', '5746OP', 'Voorburg', '070-867564', NULL) ; INSERT INTO SPELERS VALUES ( 100, 'Permentier', 'P', '1963-02-28', 'M', 1979, 'Hazensteinln', '80', '6494SG', 'Den Haag', '070-494593', '6524') ; INSERT INTO SPELERS VALUES ( 104, 'Moerman', 'D', '1970-05-10', 'V', 1984, 'Stoutlaan', '65', '9437AO', 'Zoetermeer', '079-987571', '7060') ; INSERT INTO SPELERS VALUES ( 112, 'Baalen, van', 'IP', '1963-10-01', 'V', 1984, 'Vosseweg', '8', '6392LK', 'Rotterdam', '010-548745', '1319') ; INSERT INTO TEAMS VALUES (1, 6, 'ere') ; INSERT INTO TEAMS VALUES (2, 27, 'tweede') ; INSERT INTO WEDSTRIJDEN VALUES ( 1, 1, 6, 3, 1) ; INSERT INTO WEDSTRIJDEN VALUES ( 2, 1, 6, 2, 3) ; INSERT INTO WEDSTRIJDEN VALUES ( 3, 1, 6, 3, 0) ; INSERT INTO WEDSTRIJDEN VALUES ( 4, 1, 44, 3, 2) ; INSERT INTO WEDSTRIJDEN VALUES ( 5, 1, 83, 0, 3) ; INSERT INTO WEDSTRIJDEN VALUES ( 6, 1, 2, 1, 3) ; INSERT INTO WEDSTRIJDEN VALUES ( 7, 1, 57, 3, 0) ; INSERT INTO WEDSTRIJDEN VALUES ( 8, 1, 8, 0, 3) ; INSERT INTO WEDSTRIJDEN VALUES ( 9, 2, 27, 3, 2) ; INSERT INTO WEDSTRIJDEN VALUES (10, 2, 104, 3, 2) ; INSERT INTO WEDSTRIJDEN VALUES (11, 2, 112, 2, 3) ; INSERT INTO WEDSTRIJDEN VALUES (12, 2, 112, 1, 3) ; INSERT INTO WEDSTRIJDEN VALUES (13, 2, 8, 0, 3) ; INSERT INTO BOETES VALUES (1, 6, '1980-12-08', 100) ; INSERT INTO BOETES VALUES (2, 44, '1981-05-05', 75) ; INSERT INTO BOETES VALUES (3, 27, '1983-09-10', 100) ; INSERT INTO BOETES VALUES (4, 104, '1984-12-08', 50) ; INSERT INTO BOETES VALUES (5, 44, '1980-12-08', 25) ; INSERT INTO BOETES VALUES (6, 8, '1980-12-08', 25) ; INSERT INTO BOETES VALUES (7, 44, '1982-12-30', 30) ; INSERT INTO BOETES VALUES (8, 27, '1984-11-12', 75) ; INSERT INTO BESTUURSLEDEN VALUES ( 6, '1990-1-1', '1990-12-31', 'Secretaris') ; INSERT INTO BESTUURSLEDEN VALUES ( 6, '1991-1-1', '1992-12-31', 'Lid') ; INSERT INTO BESTUURSLEDEN VALUES ( 6, '1992-1-1', '1993-12-31', 'Penningmeester') ; INSERT INTO BESTUURSLEDEN VALUES ( 6, '1993-1-1', NULL, 'Voorzitter') ; INSERT INTO BESTUURSLEDEN VALUES ( 2, '1990-1-1', '1992-12-31', 'Voorzitter') ; INSERT INTO BESTUURSLEDEN VALUES ( 2, '1994-1-1', NULL, 'Lid') ; INSERT INTO BESTUURSLEDEN VALUES (112, '1992-1-1', '1992-12-31', 'Lid') ; INSERT INTO BESTUURSLEDEN VALUES (112, '1994-1-1', NULL, 'Secretaris') ; INSERT INTO BESTUURSLEDEN VALUES ( 8, '1990-1-1', '1990-12-31', 'Penningmeester') ; INSERT INTO BESTUURSLEDEN VALUES ( 8, '1991-1-1', '1991-12-31', 'Secretaris') ; INSERT INTO BESTUURSLEDEN VALUES ( 8, '1993-1-1', '1993-12-31', 'Lid') ; INSERT INTO BESTUURSLEDEN VALUES ( 8, '1994-1-1', NULL, 'Lid') ; INSERT INTO BESTUURSLEDEN VALUES ( 57, '1992-1-1', '1992-12-31', 'Secretaris') ; INSERT INTO BESTUURSLEDEN VALUES ( 27, '1990-1-1', '1990-12-31', 'Lid') ; INSERT INTO BESTUURSLEDEN VALUES ( 27, '1991-1-1', '1991-12-31', 'Penningmeester') ; INSERT INTO BESTUURSLEDEN VALUES ( 27, '1993-1-1', '1993-12-31', 'Penningmeester') ; INSERT INTO BESTUURSLEDEN VALUES ( 95, '1994-1-1', NULL, 'Penningmeester') ; Voorbeeld 4.7: SELECT SPELERSNR, NAAM, GEB_DATUM FROM SPELERS WHERE PLAATS = 'Den Haag' ORDER BY NAAM Voorbeeld 4.8: SELECT SPELERSNR FROM SPELERS WHERE JAARTOE > 1980 AND PLAATS = 'Den Haag' ORDER BY SPELERSNR Voorbeeld 4.9: SELECT * FROM BOETES Voorbeeld 4.10: SELECT 33 * 121 Voorbeeld 4.11: UPDATE BOETES SET BEDRAG = 200 WHERE SPELERSNR = 44 ; SELECT SPELERSNR, BEDRAG FROM BOETES WHERE SPELERSNR = 44 Voorbeeld 4.12: DELETE FROM BOETES WHERE BEDRAG > 100 Voorbeeld 4.13: CREATE INDEX BOETES_BEDRAG ON BOETES (BEDRAG) Voorbeeld 4.14: CREATE VIEW AANTAL_SETS (WEDSTRIJDNR, VERSCHIL) AS SELECT WEDSTRIJDNR, ABS(GEWONNEN - VERLOREN) FROM WEDSTRIJDEN ; SELECT * FROM AANTAL_SETS Voorbeeld 4.15: GRANT SELECT ON SPELERS TO DIANE ; GRANT SELECT, UPDATE ON SPELERS TO PAUL ; GRANT SELECT, UPDATE ON TEAMS TO PAUL ; SELECT * FROM TEAMS Voorbeeld 4.16: DROP TABLE WEDSTRIJDEN Voorbeeld 4.17: DROP VIEW AANTAL_SETS Voorbeeld 4.18: DROP INDEX BOETES_BEDRAG Voorbeeld 4.19: DROP DATABASE TENNIS Voorbeeld 4.20: SELECT @@VERSION Voorbeeld 4.21: SET @@SQL_MODE = 'PIPES_AS_CONCAT' Voorbeeld 4.22: SET @@SQL_MODE = CONCAT(@@SQL_MODE, CASE @@SQL_MODE WHEN '' THEN '' ELSE ',' END, 'NO_ZERO_IN_DATE') Voorbeeld 4.23: CREATE OR REPLACE VIEW USERS (USER_NAME) AS SELECT DISTINCT UPPER(CONCAT('''',USER,'''@''',HOST,'''')) FROM MYSQL.USER ; CREATE OR REPLACE VIEW TABLES (TABLE_CREATOR, TABLE_NAME, CREATE_TIMESTAMP, COMMENT) AS SELECT UPPER(TABLE_SCHEMA), UPPER(TABLE_NAME), CREATE_TIME, TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE IN ('BASE TABLE','TEMPORARY') ; CREATE OR REPLACE VIEW COLUMNS (TABLE_CREATOR, TABLE_NAME, COLUMN_NAME, COLUMN_NO, DATA_TYPE, CHAR_LENGTH, `PRECISION`, SCALE, NULLABLE, COMMENT) AS SELECT UPPER(TABLE_SCHEMA), UPPER(TABLE_NAME), UPPER(COLUMN_NAME), ORDINAL_POSITION, UPPER(DATA_TYPE), CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, NUMERIC_SCALE, IS_NULLABLE, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS ; CREATE OR REPLACE VIEW VIEWS (VIEW_CREATOR, VIEW_NAME, CREATE_TIMESTAMP, WITHCHECKOPT, IS_UPDATABLE, VIEWFORMULA, COMMENT) AS SELECT UPPER(V.TABLE_SCHEMA), UPPER(V.TABLE_NAME), T.CREATE_TIME, CASE WHEN V.CHECK_OPTION = 'None' THEN 'NO' WHEN V.CHECK_OPTION = 'Cascaded' THEN 'CASCADED' WHEN V.CHECK_OPTION = 'Local' THEN 'LOCAL' ELSE 'Yes' END, V.IS_UPDATABLE, V.VIEW_DEFINITION, T.TABLE_COMMENT FROM INFORMATION_SCHEMA.VIEWS AS V, INFORMATION_SCHEMA.TABLES AS T WHERE V.TABLE_NAME = T.TABLE_NAME AND V.TABLE_SCHEMA = T.TABLE_SCHEMA ; CREATE OR REPLACE VIEW INDEXES (INDEX_CREATOR, INDEX_NAME, CREATE_TIMESTAMP, TABLE_CREATOR, TABLE_NAME, UNIQUE_ID, INDEX_TYPE) AS SELECT DISTINCT UPPER(I.INDEX_SCHEMA), UPPER(I.INDEX_NAME), T.CREATE_TIME, UPPER(I.TABLE_SCHEMA), UPPER(I.TABLE_NAME), CASE WHEN I.NON_UNIQUE = 0 THEN 'YES' ELSE 'NO' END, I.INDEX_TYPE FROM INFORMATION_SCHEMA.STATISTICS AS I, INFORMATION_SCHEMA.TABLES AS T WHERE I.TABLE_NAME = T.TABLE_NAME AND I.TABLE_SCHEMA = T.TABLE_SCHEMA ; CREATE OR REPLACE VIEW COLUMNS_IN_INDEX (INDEX_CREATOR, INDEX_NAME, TABLE_CREATOR, TABLE_NAME, COLUMN_NAME, COLUMN_SEQ, ORDERING) AS SELECT UPPER(INDEX_SCHEMA), UPPER(INDEX_NAME), UPPER(TABLE_SCHEMA), UPPER(TABLE_NAME), UPPER(COLUMN_NAME), SEQ_IN_INDEX, CASE WHEN COLLATION = 'A' THEN 'ASCENDING' WHEN COLLATION = 'D' THEN 'DESCENDING' ELSE 'OTHER' END FROM INFORMATION_SCHEMA.STATISTICS ; CREATE OR REPLACE VIEW USER_AUTHS (GRANTOR, GRANTEE, PRIVILEGE, WITHGRANTOPT) AS SELECT 'UNKNOWN', UPPER(GRANTEE), PRIVILEGE_TYPE, IS_GRANTABLE FROM INFORMATION_SCHEMA.USER_PRIVILEGES ; CREATE OR REPLACE VIEW DATABASE_AUTHS (GRANTOR, GRANTEE, DATABASE_NAME, PRIVILEGE, WITHGRANTOPT) AS SELECT 'UNKNOWN', UPPER(GRANTEE), UPPER(TABLE_SCHEMA), PRIVILEGE_TYPE, IS_GRANTABLE FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES ; CREATE OR REPLACE VIEW TABLE_AUTHS (GRANTOR, GRANTEE, TABLE_CREATOR, TABLE_NAME, PRIVILEGE, WITHGRANTOPT) AS SELECT 'UNKNOWN', UPPER(GRANTEE), UPPER(TABLE_SCHEMA), UPPER(TABLE_NAME), PRIVILEGE_TYPE, IS_GRANTABLE FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES ; CREATE OR REPLACE VIEW COLUMN_AUTHS (GRANTOR, GRANTEE, TABLE_CREATOR, TABLE_NAME, COLUMN_NAME, PRIVILEGE, WITHGRANTOPT) AS SELECT 'UNKNOWN', UPPER(GRANTEE), UPPER(TABLE_SCHEMA), UPPER(TABLE_NAME), UPPER(COLUMN_NAME), PRIVILEGE_TYPE, IS_GRANTABLE FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES Voorbeeld 4.24: SELECT COLUMN_NAME, DATA_TYPE, COLUMN_NO FROM COLUMNS WHERE TABLE_NAME = 'SPELERS' AND TABLE_CREATOR = 'TENNIS' ORDER BY COLUMN_NO Voorbeeld 4.25: INDEX_NAME FROM INDEXES WHERE TABLE_NAME = 'BOETES' AND TABLE_CREATOR = 'TENNIS' Voorbeeld 4.26: USE INFORMATION_SCHEMA ; SELECT DISTINCT INDEX_NAME FROM STATISTICS WHERE TABLE_NAME = 'BOETES' Voorbeeld 4.27: SELECT TABLE_NAME FROM TABLES WHERE TABLE_SCHEMA = 'INFORMATION_SCHEMA' ORDER BY TABLE_NAME Voorbeeld 4.28: SHOW COLUMNS FROM SPELERS Voorbeeld 4.29: SHOW INDEX FROM BOETES ; SHOW DATABASES ; SHOW TABLES ; SHOW CREATE TABLE SPELERS ; SHOW INDEX FROM SPELERS ; SHOW GRANTS FOR BOEKSQL@localhost ; SHOW PRIVILEGES Voorbeeld 4.30: SELECT 10 / 0 ; SHOW WARNINGS Voorbeeld 5.1: CREATE TABLE INCORRECTE_DATUMS (K DATE) ; INSERT INTO INCORRECTE_DATUMS VALUES ('2004-13-12') ; SELECT K FROM INCORRECTE_DATUMS ; CREATE TABLE TIJDTABEL (KOLOM1 TIME) ; INSERT INTO TIJDTABEL VALUES ('23:59:59.5912') ; SELECT KOLOM1 FROM TIJDTABEL ; CREATE TABLE TIMESTAMP_TABEL (KOLOM1 TIMESTAMP) ; INSERT INTO TIMESTAMP_TABEL VALUES ('1980-12-08 23:59:59.59') ; SELECT KOLOM1 FROM TIMESTAMP_TABEL Voorbeeld 5.2: CREATE TABLE TZ (KOL1 TIMESTAMP) ; INSERT INTO TZ VALUES ('2005-01-01 12:00:00') ; SELECT * FROM TZ ; SET @@TIME_ZONE = '+10:00' ; SELECT * FROM TZ Voorbeeld 5.3: SELECT @@TIME_ZONE Voorbeeld 5.4: SELECT TRUE, FALSE Voorbeeld 5.5: SELECT WEDSTRIJDNR, GEWONNEN - VERLOREN FROM WEDSTRIJDEN WHERE GEWONNEN = VERLOREN + 2 Voorbeeld 5.6: SELECT TEAMNR, DIVISIE FROM TEAMS Voorbeeld 5.7: SELECT TEAMNR AS TEAMNUMMER, DIVISIE AS DIVISIE_VAN_TEAM FROM TEAMS Voorbeeld 5.8: SELECT BETALINGSNR, BEDRAG * 100 AS CENTEN FROM BOETES Voorbeeld 5.9: SELECT WEDSTRIJDNR AS PRIMSLEUTEL, 80 AS TACHTIG, GEWONNEN - VERLOREN AS VERSCHIL, TIME('23:59:59') AS BIJNA_MIDDERNACHT, 'TEKST' AS TEKST FROM WEDSTRIJDEN WHERE WEDSTRIJDNR <= 4 Voorbeeld 5.10: SELECT BEDRAG * 100 AS CENTEN FROM BOETES GROUP BY CENTEN ORDER BY CENTEN Voorbeeld 5.11: SET @SPELERSNR = 7 Voorbeeld 5.12: SELECT NAAM, PLAATS, POSTCODE FROM SPELERS WHERE SPELERSNR < @SPELERSNR Voorbeeld 5.13: SELECT @SPELERSNR Voorbeeld 5.14: SET @@GLOBAL.SQL_WARNINGS = TRUE Voorbeeld 5.15: SET @@SESSION.SQL_SELECT_LIMIT = 10 ; SELECT @@SESSION.SQL_SELECT_LIMIT ; SELECT @@GLOBAL.SQL_SELECT_LIMIT Voorbeeld 5.16: SET @@SESSION.SQL_SELECT_LIMIT = DEFAULT Voorbeeld 5.17: SELECT * FROM USER_AUTHS WHERE GRANTEE = CURRENT_USER Voorbeeld 5.18: SELECT CURRENT_USER Voorbeeld 5.19: SELECT * FROM BOETES WHERE DATUM = CURRENT_DATE Voorbeeld 5.20: SELECT SPELERSNR, CASE GESLACHT WHEN 'V' THEN 'Vrouw' ELSE 'Man' END AS GESLACHT, NAAM FROM SPELERS WHERE JAARTOE > 1980 ; SELECT SPELERSNR, CASE GESLACHT WHEN 'V' THEN 'Vrouw' END AS VROUWEN, NAAM FROM SPELERS WHERE JAARTOE > 1980 Voorbeeld 5.21: SELECT SPELERSNR, PLAATS, GEB_DATUM, CASE PLAATS WHEN 'Den Haag' THEN 0 WHEN 'Rotterdam' THEN 1 WHEN 'Rijswijk' THEN 2 ELSE 3 END AS P, CASE PLAATS WHEN 'Den Haag' THEN CASE GEB_DATUM WHEN '1948-09-01' THEN 'Oude Hagenees' ELSE 'Jonge Hagenees' END WHEN 'Rijswijk' THEN CASE GEB_DATUM WHEN '1962-07-08' THEN 'Oude Rijswijker' ELSE 'Jonge Rijswijker' END ELSE 'Rest' END AS SOORT FROM SPELERS Voorbeeld 5.22: SELECT SPELERSNR, JAARTOE, CASE WHEN JAARTOE < 1980 THEN 'Ouderen' WHEN JAARTOE < 1983 THEN 'Jongeren' ELSE 'Kinderen' END AS GROEP FROM SPELERS ORDER BY JAARTOE Voorbeeld 5.23: SELECT SPELERSNR, JAARTOE, PLAATS, CASE WHEN JAARTOE >= 1980 AND JAARTOE <= 1982 THEN 'Ouderen' WHEN PLAATS = 'Zoetermeer' THEN 'Zoetermeerders' WHEN SPELERSNR < 10 THEN 'Eerste leden' ELSE 'Rest' END FROM SPELERS Voorbeeld 5.24: SELECT (SPELERSNR), (((NAAM))) FROM SPELERS Voorbeeld 5.25: SELECT BETALINGSNR, YEAR(DATUM) AS JAARTAL FROM BOETES WHERE YEAR(DATUM) > 1980 Voorbeeld 5.26: SELECT SPELERSNR, CONCAT(LEFT(VOORLETTERS, 1), '. ', NAAM) AS VOLLE_NAAM FROM SPELERS WHERE LEFT(NAAM, 1) = 'B' Voorbeeld 5.27: SELECT VOORLETTERS, NAAM, COALESCE(BONDSNR, '1') FROM SPELERS WHERE PLAATS = 'Den Haag' Voorbeeld 5.28: SELECT SPELERSNR, DAYNAME(GEB_DATUM) AS DAGNAAM, MONTHNAME(GEB_DATUM) AS MAANDNAAM, DAYOFYEAR(GEB_DATUM) AS DAGNUMMER FROM SPELERS WHERE SPELERSNR < 10 Voorbeeld 5.29: SELECT SPELERSNR, GEB_DATUM, ADDDATE(GEB_DATUM, INTERVAL 7 DAY) AS GEB_DATUM_PLUS_7 FROM SPELERS WHERE DAYNAME(GEB_DATUM) = 'Saturday' Voorbeeld 5.30: SELECT SPELERSNR, BEGIN_DATUM, EIND_DATUM, DATEDIFF(EIND_DATUM, BEGIN_DATUM) FROM BESTUURSLEDEN WHERE DATEDIFF(EIND_DATUM, BEGIN_DATUM) > 500 OR (EIND_DATUM IS NULL AND DATEDIFF(CURRENT_DATE, BEGIN_DATUM) > 500) ORDER BY SPELERSNR ; SELECT SPELERSNR, BEGIN_DATUM, EIND_DATUM, DATEDIFF(COALESCE(EIND_DATUM, CURRENT_DATE), BEGIN_DATUM) FROM BESTUURSLEDEN WHERE DATEDIFF(COALESCE(EIND_DATUM, CURRENT_DATE), BEGIN_DATUM) > 500 ORDER BY SPELERSNR Voorbeeld 5.31: SELECT BETALINGSNR FROM BOETES WHERE BEDRAG > 50 Voorbeeld 5.32: SELECT CONCAT(RTRIM(NAAM), CAST(GEB_DATUM AS CHAR(10))) AS NAAM_PLUS_DATUM FROM SPELERS WHERE PLAATS = 'Rijswijk' Voorbeeld 5.33: UPDATE SPELERS SET BONDSNR = NULL WHERE SPELERSNR = 2 Voorbeeld 5.34: SELECT TEAMNR, CAST(NULL AS CHAR) FROM TEAMS Voorbeeld 5.35: SELECT WEDSTRIJDNR, GEWONNEN, VERLOREN FROM WEDSTRIJDEN WHERE GEWONNEN >= VERLOREN * 2 Voorbeeld 5.36: SELECT 50 << 2 Voorbeeld 5.37: SELECT B'11' << 3 Voorbeeld 5.38: SELECT CONV(6,10,2), CONV(10,10,2), BIN(8), BIN(10) Voorbeeld 5.39: SELECT CONV(1001,2,10), CONV(111,2,10) Voorbeeld 5.40: SELECT SPELERSNR FROM SPELERS WHERE SPELERSNR & 1 Voorbeeld 5.41: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR = (SPELERSNR >> 1) << 1 Voorbeeld 5.42: SELECT WEDSTRIJDNR, TEAMNR, WEDSTRIJDNR | TEAMNR, WEDSTRIJDNR & TEAMNR, WEDSTRIJDNR ^ TEAMNR FROM WEDSTRIJDEN Voorbeeld 5.43: SELECT SPELERSNR, PLAATS || ' ' || STRAAT || ' ' || HUISNR FROM SPELERS WHERE PLAATS = 'Den Haag' Voorbeeld 5.44: SELECT BETALINGSNR, DATUM, DATUM + INTERVAL 7 DAY AS DATUM_PLUS_7 FROM BOETES WHERE BETALINGSNR > 5 Voorbeeld 5.45: SELECT BETALINGSNR , DATUM FROM BOETES WHERE DATUM >= '1982-12-25' AND DATUM <= '1982-12-25' + INTERVAL 6 DAY Voorbeeld 5.46: SELECT '2004-13-12' + INTERVAL 1 DAY ; SHOW WARNINGS Voorbeeld 5.47: CREATE TABLE WEDSTRIJDEN_SPECIAAL (WEDSTRIJDNR INTEGER NOT NULL, TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, GEWONNEN SMALLINT NOT NULL, VERLOREN SMALLINT NOT NULL, START_DATUM DATE NOT NULL, START_TIJD TIME NOT NULL, EIND_TIJD TIME NOT NULL, PRIMARY KEY (WEDSTRIJDNR)) ; INSERT INTO WEDSTRIJDEN_SPECIAAL VALUES (1, 1, 6, 3, 1, '2004-10-25', '14:10:12', '16:50:09') ; INSERT INTO WEDSTRIJDEN_SPECIAAL VALUES (2, 1, 44, 3, 2, '2004-10-25', '17:00:00', '17:55:48') Voorbeeld 5.48: SELECT WEDSTRIJDNR, START_TIJD, ADDTIME(START_TIJD, '08:00:00') AS START_TIJD_PLUS_8 FROM WEDSTRIJDEN_SPECIAAL Voorbeeld 5.49: SELECT WEDSTRIJDNR, EIND_TIJD FROM WEDSTRIJDEN_SPECIAAL WHERE ADDTIME(EIND_TIJD, '06:30:00') <= '24:00:00' Voorbeeld 5.50: CREATE TABLE TSTAMP (KOL TIMESTAMP) ; SET @TIJD = TIMESTAMP('1980-12-08 23:59:59.59') ; INSERT INTO TSTAMP VALUES (@TIJD + INTERVAL 3 MICROSECOND) ; SELECT KOL, KOL + INTERVAL 3 MICROSECOND FROM TSTAMP Voorbeeld 5.51: SELECT TEAMNR FROM TEAMS WHERE TRUE OR FALSE Voorbeeld 5.52: SELECT BETALINGSNR, BETALINGSNR > 4 FROM BOETES ; SELECT BETALINGSNR, CASE BETALINGSNR > 4 WHEN 1 THEN 'Groter dan 4' ELSE 'Kleiner dan 5' END AS GROTER_KLEINER FROM BOETES Voorbeeld 5.53: SELECT SPELERSNR, JAARTOE, SPELERSNR < 15, JAARTOE > 1979 FROM SPELERS WHERE (SPELERSNR < 15) = (JAARTOE > 1979) Voorbeeld 5.54: INSERT INTO BESTUURSLEDEN VALUES (7 + 15, CURRENT_DATE, CURRENT_DATE + INTERVAL 17 DAY, 'Lid') Voorbeeld 5.55: SELECT SPELERSNR FROM SPELERS WHERE (PLAATS, STRAAT) = ('Den Haag', 'Hazensteinln') Voorbeeld 5.56: SELECT SPELERSNR FROM SPELERS WHERE (PLAATS, STRAAT) = (SELECT 'Den Haag', 'Hazensteinln') Voorbeeld 5.57: INSERT INTO BOETES VALUES (1, 6, '1980-12-08', 100), (2, 44, '1981-05-05', 75), (3, 27, '1983-09-10', 100), (4, 104, '1984-12-08', 50), (5, 44, '1980-12-08', 25), (6, 8, '1980-12-08', 25), (7, 44, '1982-12-30', 30), (8, 27, '1984-11-12', 75) Antwoord 5.4: SELECT WEDSTRIJDNR, GEWONNEN - VERLOREN AS VERSCHIL FROM WEDSTRIJDEN Antwoord 5.5: SELECT SPELERS.SPELERSNR, SPELERS.NAAM, SPELERS.VOORLETTERS FROM SPELERS WHERE SPELERS.SPELERSNR > 6 ORDER BY SPELERS.NAAM Antwoord 5.12: SELECT SPELERSNR FROM BESTUURSLEDEN WHERE BEGIN_DATUM = CURRENT_DATE Antwoord 5.13: SELECT TEAMNR, CASE DIVISIE WHEN 'ere' then 'ere divisie' WHEN 'tweede' THEN 'tweede divisie' ELSE 'onbekend' END AS DIVISIE FROM TEAMS Antwoord 5.14: SELECT BETALINGSNR, BEDRAG, CASE WHEN BEDRAG >= 0 AND BEDRAG <= 40 THEN 'laag' WHEN BEDRAG >= 41 AND BEDRAG <= 80 THEN 'middelmatig' WHEN BEDRAG >= 81 THEN 'hoog' ELSE 'fout' END AS CATEGORIE FROM BOETES Antwoord 5.15: SELECT BETALINGSNR, BEDRAG FROM BOETES WHERE CASE WHEN BEDRAG >= 0 AND BEDRAG <= 40 THEN 'laag' WHEN BEDRAG > 40 AND BEDRAG <= 80 THEN 'middelmatig' WHEN BEDRAG > 80 THEN 'hoog' ELSE 'fout' END = 'laag' Antwoord 5.17: SELECT BETALINGSNR FROM BOETES WHERE DAYNAME(DATUM) = 'Monday' Antwoord 5.18: SELECT BETALINGSNR FROM BOETES WHERE YEAR(DATUM) = 1984 Antwoord 5.25: SELECT SPELERSNR, SUBSTR(VOORLETTERS,1,1) || '. ' || NAAM FROM SPELERS Antwoord 5.26: SELECT TEAMNR, RTRIM(DIVISIE) || ' divisie' FROM TEAMS Antwoord 5.28: SELECT SPELERSNR, BEGIN_DATUM, BEGIN_DATUM + INTERVAL 2 MONTH + INTERVAL 3 DAY FROM BESTUURSLEDEN Antwoord 5.32: SELECT BETALINGSNR, DATUM, DATUM + INTERVAL 3 HOUR + INTERVAL 50 SECOND + INTERVAL 99 MICROSECOND FROM BOETES Antwoord 5.33: SELECT SPELERSNR, CASE PLAATS = 'Rijswijk' WHEN 1 THEN 'Ja' ELSE 'Nee' END FROM SPELERS Antwoord 5.34: SELECT * FROM BOETES WHERE (BEDRAG = 25) = (SPELERSNR = 44) Antwoord 5.35: SELECT BETALINGSNR FROM BOETES WHERE (BEDRAG, SPELERSNR, DATUM) = (25, 44, '1980-12-08') Antwoord 5.36: SELECT SPELERSNR FROM SPELERS WHERE (NAAM, VOORLETTERS) = (PLAATS, STRAAT) Antwoord 5.37: SELECT * FROM BOETES WHERE (BEDRAG = 25, SPELERSNR = 44) = (FALSE, TRUE) Voorbeeld 6.1: SELECT SPELERSNR FROM BOETES WHERE BEDRAG > 25 GROUP BY SPELERSNR HAVING COUNT(*) > 1 ORDER BY SPELERSNR Voorbeeld 6.2: SELECT SPELERSNR, BONDSNR FROM SPELERS WHERE PLAATS = 'Den Haag' ORDER BY BONDSNR Voorbeeld 6.3: SELECT 89 * 73 Voorbeeld 6.4: (SELECT * FROM TEAMS) ; (((((SELECT * FROM TEAMS))))) Voorbeeld 6.5: SELECT SPELERSNR FROM TEAMS UNION SELECT SPELERSNR FROM BOETES ; SELECT SPELERSNR FROM TEAMS ORDER BY SPELERSNR UNION SELECT SPELERSNR FROM BOETES ; SELECT SPELERSNR FROM TEAMS UNION SELECT SPELERSNR FROM BOETES ORDER BY SPELERSNR ; (SELECT SPELERSNR FROM TEAMS ORDER BY SPELERSNR) UNION (SELECT SPELERSNR FROM BOETES) ORDER BY SPELERSNR Voorbeeld 6.6: SELECT SPELERSNR FROM (SELECT SPELERSNR, GESLACHT FROM SPELERS WHERE SPELERSNR < 10) AS TIJDELIJK WHERE GESLACHT = 'M' Voorbeeld 6.7: SELECT SPELERSNR FROM (SELECT SPELERSNR, GESLACHT FROM (SELECT SPELERSNR, GESLACHT, JAARTOE FROM (SELECT SPELERSNR, GESLACHT, JAARTOE FROM SPELERS WHERE SPELERSNR > 10) AS GROTER10 WHERE SPELERSNR < 100) AS KLEINER100 WHERE JAARTOE > 1980) AS JAARTOE1980 WHERE GESLACHT = 'M' Voorbeeld 6.8: SELECT SPELERSNR, JAARTOE - (SELECT JAARTOE FROM SPELERS WHERE SPELERSNR = 100) FROM SPELERS WHERE SPELERSNR < 60 ; SELECT SPELERSNR, JAARTOE - 1979 FROM SPELERS WHERE SPELERSNR < 60 ; SELECT TEAMNR FROM TEAMS WHERE SPELERSNR = (SELECT SPELERSNR FROM SPELERS) Voorbeeld 6.9: SELECT SPELERSNR FROM SPELERS WHERE YEAR(GEB_DATUM) = (SELECT YEAR(GEB_DATUM) FROM SPELERS WHERE SPELERSNR = 27) ; SELECT SPELERSNR FROM SPELERS WHERE YEAR(GEB_DATUM) = 1964 Voorbeeld 6.10: SELECT (SELECT GEB_DATUM FROM SPELERS WHERE SPELERSNR = 27) AS GB27, (SELECT GEB_DATUM FROM SPELERS WHERE SPELERSNR = 44) AS GB44, (SELECT GEB_DATUM FROM SPELERS WHERE SPELERSNR = 100) AS GB100 Voorbeeld 6.11: SELECT SPELERSNR FROM SPELERS WHERE (GESLACHT, PLAATS) = (SELECT GESLACHT, PLAATS FROM SPELERS WHERE SPELERSNR = 100) Antwoord 6.8: SELECT SPELERSNR, BEGIN_DATUM FROM BESTUURSLEDEN UNION SELECT SPELERSNR, EIND_DATUM FROM BESTUURSLEDEN ORDER BY SPELERSNR Antwoord 6.9: SELECT SPELERSNR, BEGIN_DATUM, 'Begindatum' FROM BESTUURSLEDEN UNION SELECT SPELERSNR, EIND_DATUM, 'Einddatum' FROM BESTUURSLEDEN ORDER BY SPELERSNR Antwoord 6.10: SELECT SPELERSNR FROM (SELECT SPELERSNR FROM (SELECT SPELERSNR, EIND_DATUM FROM (SELECT SPELERSNR, BEGIN_DATUM, EIND_DATUM FROM BESTUURSLEDEN WHERE FUNCTIE = 'Secretaris') AS SECRETARISSEN WHERE BEGIN_DATUM >= '1990-01-01') AS NA1989 WHERE EIND_DATUM <= '1994-12-31') AS VOOR1995 Antwoord 6.11: SELECT TEAMNR FROM TEAMS WHERE SPELERSNR = (SELECT SPELERSNR FROM SPELERS WHERE NAAM = 'Permentier' AND VOORLETTERS = 'R') Antwoord 6.12: SELECT NAAM FROM SPELERS WHERE SPELERSNR = (SELECT SPELERSNR FROM TEAMS WHERE TEAMNR = (SELECT TEAMNR FROM WEDSTRIJDEN WHERE WEDSTRIJDNR = 6)) ; SELECT NAAM FROM SPELERS WHERE SPELERSNR = (SELECT SPELERSNR FROM TEAMS WHERE TEAMNR = (SELECT TEAMNR FROM WEDSTRIJDEN WHERE WEDSTRIJDNR = 6)) Antwoord 6.13: SELECT BETALINGSNR FROM BOETES WHERE BEDRAG > (SELECT BEDRAG FROM BOETES WHERE BETALINGSNR = 4) Antwoord 6.14: SELECT SPELERSNR FROM SPELERS WHERE DAYNAME(GEB_DATUM) = (SELECT DAYNAME(GEB_DATUM) FROM SPELERS WHERE SPELERSNR = 2) Antwoord 6.15: SELECT SPELERSNR FROM BESTUURSLEDEN WHERE (BEGIN_DATUM, EIND_DATUM) = (SELECT BEGIN_DATUM, EIND_DATUM FROM BESTUURSLEDEN WHERE SPELERSNR = 8 AND FUNCTIE = 'Penningmeester') AND SPELERSNR <> 8 Antwoord 6.16: SELECT (SELECT DIVISIE FROM TEAMS WHERE TEAMNR = 1), (SELECT DIVISIE FROM TEAMS WHERE TEAMNR = 2) Antwoord 6.17: SELECT (SELECT BEDRAG FROM BOETES WHERE BETALINGSNR = 1) + (SELECT BEDRAG FROM BOETES WHERE BETALINGSNR = 2) + (SELECT BEDRAG FROM BOETES WHERE BETALINGSNR = 3) Voorbeeld 7.1: CREATE DATABASE EXTRA ; USE EXTRA ; CREATE TABLE WOONPLAATSEN (PLAATSNR INTEGER NOT NULL PRIMARY KEY, PLAATSNAAM CHAR(20) NOT NULL) ; INSERT INTO WOONPLAATSEN VALUES (1, 'Den Haag') ; INSERT INTO WOONPLAATSEN VALUES (2, 'Rijswijk') Voorbeeld 7.2: SELECT * FROM EXTRA.WOONPLAATSEN Voorbeeld 7.3: SELECT * FROM TENNIS.TEAMS Voorbeeld 7.4: SELECT TEAMNR FROM TEAMS ; SELECT TEAMS.TEAMNR FROM TEAMS ; SELECT TENNIS.TEAMS.TEAMNR FROM TENNIS.TEAMS Voorbeeld 7.5: SELECT TEAMNR, NAAM FROM TEAMS, SPELERS WHERE TEAMS.SPELERSNR = SPELERS.SPELERSNR Voorbeeld 7.6: SELECT BETALINGSNR, BOETES.SPELERSNR, BEDRAG, NAAM, VOORLETTERS FROM BOETES, SPELERS WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR ; SELECT SPELERS.SPELERSNR FROM SPELERS, TEAMS WHERE SPELERS.SPELERSNR = TEAMS.SPELERSNR ; SELECT SPELERS.SPELERSNR FROM TEAMS, SPELERS WHERE SPELERS.SPELERSNR = TEAMS.SPELERSNR Voorbeeld 7.7: SELECT BETALINGSNR, BT.SPELERSNR, BEDRAG, NAAM, VOORLETTERS FROM BOETES AS BT, SPELERS AS S WHERE BT.SPELERSNR = S.SPELERSNR ; SELECT BETALINGSNR, BT.SPELERSNR, BEDRAG, NAAM, VOORLETTERS FROM BOETES BT, SPELERS S WHERE BT.SPELERSNR = S.SPELERSNR Voorbeeld 7.8: SELECT T.SPELERSNR FROM TEAMS AS T, BOETES AS BT WHERE T.SPELERSNR = BT.SPELERSNR Voorbeeld 7.9: SELECT DISTINCT T.SPELERSNR FROM TEAMS AS T, BOETES AS BT WHERE T.SPELERSNR = BT.SPELERSNR Voorbeeld 7.10: SELECT DISTINCT S.NAAM, S.VOORLETTERS FROM SPELERS AS S, WEDSTRIJDEN AS W WHERE S.SPELERSNR = W.SPELERSNR Voorbeeld 7.11: SELECT W.WEDSTRIJDNR, W.SPELERSNR, W.TEAMNR, S.NAAM, T.DIVISIE FROM WEDSTRIJDEN AS W, SPELERS AS S, TEAMS AS T WHERE W.SPELERSNR = S.SPELERSNR AND W.TEAMNR = T.TEAMNR Voorbeeld 7.12: SELECT B.BETALINGSNR, B.SPELERSNR, B.DATUM FROM BOETES AS B, SPELERS AS S WHERE B.SPELERSNR = S.SPELERSNR AND YEAR(B.DATUM) = S.JAARTOE Voorbeeld 7.13: SELECT S.SPELERSNR FROM SPELERS AS S, SPELERS AS P WHERE P.NAAM = 'Permentier' AND P.VOORLETTERS = 'R' AND S.GEB_DATUM < P.GEB_DATUM ; SELECT S.SPELERSNR FROM SPELERS AS S, SPELERS WHERE SPELERS.NAAM = 'Permentier' AND SPELERS.VOORLETTERS = 'R' AND S.GEB_DATUM < SPELERS.GEB_DATUM Voorbeeld 7.14: SELECT S.SPELERSNR FROM SPELERS AS S, EXTRA.WOONPLAATSEN AS STAD WHERE S.PLAATS = STAD.PLAATSNAAM Voorbeeld 7.15: SELECT SPELERS.SPELERSNR, NAAM, BEDRAG FROM SPELERS, BOETES WHERE SPELERS.SPELERSNR = BOETES.SPELERSNR AND GEB_DATUM > '1920-06-30' ; SELECT SPELERS.SPELERSNR, NAAM, BEDRAG FROM SPELERS INNER JOIN BOETES ON SPELERS.SPELERSNR = BOETES.SPELERSNR WHERE GEB_DATUM > '1920-06-30' Voorbeeld 7.16: SELECT TEAMNR, NAAM FROM TEAMS, SPELERS WHERE TEAMS.SPELERSNR = SPELERS.SPELERSNR ; SELECT TEAMNR, NAAM FROM TEAMS INNER JOIN SPELERS ON TEAMS.SPELERSNR = SPELERS.SPELERSNR ; SELECT TEAMNR, NAAM FROM TEAMS JOIN SPELERS ON TEAMS.SPELERSNR = SPELERS.SPELERSNR Voorbeeld 7.17: SELECT SPELERS.SPELERSNR, NAAM, BEDRAG FROM SPELERS, BOETES WHERE SPELERS.SPELERSNR = BOETES.SPELERSNR ORDER BY SPELERS.SPELERSNR ; SELECT SPELERS.SPELERSNR, NAAM, BEDRAG FROM SPELERS LEFT OUTER JOIN BOETES ON SPELERS.SPELERSNR = BOETES.SPELERSNR ORDER BY SPELERS.SPELERSNR Voorbeeld 7.18: SELECT BETALINGSNR, NAAM FROM BOETES LEFT OUTER JOIN SPELERS ON BOETES.SPELERSNR = SPELERS.SPELERSNR ORDER BY BETALINGSNR Voorbeeld 7.19: SELECT S.SPELERSNR, NAAM, TEAMNR, DIVISIE FROM SPELERS AS S LEFT OUTER JOIN TEAMS AS T ON S.SPELERSNR = T.SPELERSNR ORDER BY S.SPELERSNR Voorbeeld 7.20: SELECT SPELERS.SPELERSNR, NAAM, BEDRAG, TEAMNR FROM SPELERS LEFT OUTER JOIN BOETES ON SPELERS.SPELERSNR = BOETES.SPELERSNR LEFT OUTER JOIN WEDSTRIJDEN ON SPELERS.SPELERSNR = WEDSTRIJDEN.SPELERSNR WHERE PLAATS = 'Rijswijk' Voorbeeld 7.21: SELECT SPELERS.SPELERSNR FROM SPELERS INNER JOIN BOETES ON SPELERS.SPELERSNR = BOETES.SPELERSNR LEFT OUTER JOIN TEAMS ON SPELERS.SPELERSNR = TEAMS.SPELERSNR ; SELECT SPELERS.SPELERSNR FROM (SPELERS INNER JOIN BOETES ON SPELERS.SPELERSNR = BOETES.SPELERSNR) LEFT OUTER JOIN TEAMS ON SPELERS.SPELERSNR = TEAMS.SPELERSNR Voorbeeld 7.22: SELECT SPELERS.SPELERSNR, NAAM, TEAMNR FROM TEAMS RIGHT OUTER JOIN SPELERS ON TEAMS.SPELERSNR = SPELERS.SPELERSNR Voorbeeld 7.23: SELECT SPELERS.SPELERSNR, NAAM, BEDRAG FROM SPELERS INNER JOIN BOETES ON SPELERS.SPELERSNR = BOETES.SPELERSNR WHERE GEB_DATUM > '1920-06-30' ; SELECT SPELERS.SPELERSNR, NAAM, BEDRAG FROM SPELERS NATURAL JOIN BOETES WHERE GEB_DATUM > '1920-06-30' Voorbeeld 7.24: SELECT TEAMS.SPELERSNR, TEAMS.TEAMNR, BOETES.BETALINGSNR FROM TEAMS LEFT OUTER JOIN BOETES ON TEAMS.SPELERSNR = BOETES.SPELERSNR WHERE DIVISIE = 'tweede' ; SELECT TEAMS.SPELERSNR, TEAMS.TEAMNR, BOETES.BETALINGSNR FROM TEAMS LEFT OUTER JOIN BOETES ON TEAMS.SPELERSNR = BOETES.SPELERSNR AND DIVISIE = 'tweede' Voorbeeld 7.25: SELECT TEAMS.SPELERSNR, TEAMS.TEAMNR, BOETES.BETALINGSNR FROM TEAMS FULL OUTER JOIN BOETES ON TEAMS.SPELERSNR = BOETES.SPELERSNR AND TEAMS.SPELERSNR > 1000 Voorbeeld 7.26: SELECT * FROM BOETES LEFT OUTER JOIN TEAMS USING (SPELERSNR) Voorbeeld 7.27: SELECT SPELERSNR FROM (SELECT * FROM SPELERS WHERE PLAATS = 'Den Haag') AS HAGENEZEN Voorbeeld 7.28: SELECT SMALLE_TEAMS.SPELERSNR FROM (SELECT SPELERSNR, DIVISIE FROM TEAMS) AS SMALLE_TEAMS WHERE SMALLE_TEAMS.DIVISIE = 'ere' Voorbeeld 7.29: SELECT WEDSTRIJDNR, VERSCHIL FROM (SELECT WEDSTRIJDNR, ABS(GEWONNEN – VERLOREN) AS VERSCHIL FROM WEDSTRIJDEN) AS W WHERE VERSCHIL > 2 Voorbeeld 7.30: SELECT * FROM (SELECT 'Den Haag' AS PLAATS, 4 AS AANTAL UNION SELECT 'Rotterdam', 6 UNION SELECT 'Rijswijk', 1 UNION SELECT 'Voorburg', 2) AS PLAATSEN ORDER BY PLAATS Voorbeeld 7.31: SELECT SPELERSNR, NAAM, SPELERS.PLAATS, AANTAL * 1000 FROM SPELERS, (SELECT 'Den Haag' AS PLAATS, 4 AS AANTAL UNION SELECT 'Rotterdam', 6 UNION SELECT 'Rijswijk', 1 UNION SELECT 'Voorburg', 2) AS PLAATSEN WHERE SPELERS.PLAATS = PLAATSEN.PLAATS ORDER BY SPELERSNR ; SELECT SPELERSNR, NAAM, SPELERS.PLAATS, AANTAL FROM SPELERS LEFT OUTER JOIN (SELECT 'Den Haag' AS PLAATS, 4 AS AANTAL UNION SELECT 'Rotterdam', 6 UNION SELECT 'Rijswijk', 1 UNION SELECT 'Voorburg', 2) AS PLAATSEN ON SPELERS.PLAATS = PLAATSEN.PLAATS ORDER BY SPELERSNR Voorbeeld 7.32: SELECT SPELERSNR FROM SPELERS LEFT OUTER JOIN (SELECT 'Den Haag' AS PLAATS, 4 AS AANTAL UNION SELECT 'Rotterdam', 6 UNION SELECT 'Rijswijk', 1 UNION SELECT 'Voorburg', 2) AS PLAATSEN ON SPELERS.PLAATS = PLAATSEN.PLAATS WHERE PLAATSEN.AANTAL > 2 Voorbeeld 7.33: SELECT * FROM (SELECT 'John' AS VOORNAAM UNION SELECT 'Mark' UNION SELECT 'Arnold') AS VOORNAMEN, (SELECT 'Berg' AS ACHTERNAAM UNION SELECT 'Johnson' UNION SELECT 'Willems') AS ACHTERNAMEN Voorbeeld 7.34: SELECT GETAL, POWER(GETAL,3) AS DERDEMACHT FROM (SELECT 10 AS GETAL UNION SELECT 11 UNION SELECT 12 UNION SELECT 13 UNION SELECT 14 UNION SELECT 15 UNION SELECT 16 UNION SELECT 17 UNION SELECT 18 UNION SELECT 19) AS GETALLEN WHERE POWER(GETAL,3) <= 4000 Voorbeeld 7.35: SELECT GETAL FROM (SELECT CAST(CONCAT(CIJFER1.CIJFER, CONCAT(CIJFER2.CIJFER, CIJFER3.CIJFER)) AS UNSIGNED INTEGER) AS GETAL FROM (SELECT '0' AS CIJFER UNION SELECT '1' UNION SELECT '2' UNION SELECT '3' UNION SELECT '4' UNION SELECT '5' UNION SELECT '6' UNION SELECT '7' UNION SELECT '8' UNION SELECT '9') AS CIJFER1, (SELECT '0' AS CIJFER UNION SELECT '1' UNION SELECT '2' UNION SELECT '3' UNION SELECT '4' UNION SELECT '5' UNION SELECT '6' UNION SELECT '7' UNION SELECT '8' UNION SELECT '9') AS CIJFER2, (SELECT '0' AS CIJFER UNION SELECT '1' UNION SELECT '2' UNION SELECT '3' UNION SELECT '4' UNION SELECT '5' UNION SELECT '6' UNION SELECT '7' UNION SELECT '8' UNION SELECT '9') AS CIJFER3) AS GETALLEN ORDER BY GETAL Voorbeeld 7.36: SELECT GETAL AS KWADRAAT, ROUND(SQRT(GETAL)) AS BASIS FROM (SELECT CAST(CONCAT(CIJFER1.CIJFER, CONCAT(CIJFER2.CIJFER, CIJFER3.CIJFER)) AS UNSIGNED INTEGER) AS GETAL FROM (SELECT '0' AS CIJFER UNION SELECT '1' UNION SELECT '2' UNION SELECT '3' UNION SELECT '4' UNION SELECT '5' UNION SELECT '6' UNION SELECT '7' UNION SELECT '8' UNION SELECT '9') AS CIJFER1, (SELECT '0' AS CIJFER UNION SELECT '1' UNION SELECT '2' UNION SELECT '3' UNION SELECT '4' UNION SELECT '5' UNION SELECT '6' UNION SELECT '7' UNION SELECT '8' UNION SELECT '9') AS CIJFER2, (SELECT '0' AS CIJFER UNION SELECT '1' UNION SELECT '2' UNION SELECT '3' UNION SELECT '4' UNION SELECT '5' UNION SELECT '6' UNION SELECT '7' UNION SELECT '8' UNION SELECT '9') AS CIJFER3) AS GETALLEN WHERE SQRT(GETAL) = ROUND(SQRT(GETAL)) ORDER BY GETAL Antwoord 7.3: SELECT BETALINGSNR, BEDRAG, SPELERS.SPELERSNR, NAAM FROM BOETES, SPELERS WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR Antwoord 7.4: SELECT BETALINGSNR, NAAM FROM BOETES, SPELERS, TEAMS WHERE BOETES.SPELERSNR = TEAMS.SPELERSNR AND TEAMS.SPELERSNR = SPELERS.SPELERSNR Antwoord 7.5: SELECT T.TEAMNR, S.NAAM FROM TEAMS AS T, SPELERS AS S WHERE T.SPELERSNR = S.SPELERSNR Antwoord 7.6: SELECT W.WEDSTRIJDNR, S.NAAM, T.DIVISIE FROM WEDSTRIJDEN AS W, SPELERS AS S, TEAMS AS T WHERE W.SPELERSNR = S.SPELERSNR AND W.TEAMNR = T.TEAMNR Antwoord 7.7: SELECT S.SPELERSNR, S.NAAM FROM SPELERS AS S, BESTUURSLEDEN AS B WHERE S.SPELERSNR = B.SPELERSNR AND B.FUNCTIE = 'Voorzitter' Antwoord 7.8: SELECT DISTINCT BL.SPELERSNR FROM BESTUURSLEDEN AS BL, BOETES AS B WHERE BL.SPELERSNR = B.SPELERSNR AND BL.BEGIN_DATUM = B.DATUM Antwoord 7.9: SELECT S.SPELERSNR, S.NAAM FROM SPELERS AS S, SPELERS AS S27 WHERE S.PLAATS = S27.PLAATS AND S27.SPELERSNR = 27 AND S.SPELERSNR <> 27 Antwoord 7.10: SELECT DISTINCT S.SPELERSNR AS SPELERS_SPELERSNR, S.NAAM AS SPELERS_NAAM, AANV.SPELERSNR AS AANVOERDER_SPELERSNR, AANV.NAAM AS AANVOERDER_NAAM FROM SPELERS AS S, SPELERS AS AANV, WEDSTRIJDEN AS W, TEAMS AS T WHERE W.SPELERSNR = S.SPELERSNR AND T.TEAMNR = W.TEAMNR AND W.SPELERSNR <> T.SPELERSNR AND AANV.SPELERSNR = T.SPELERSNR Antwoord 7.11: SELECT B1.BETALINGSNR, B1.SPELERSNR FROM BOETES AS B1, BOETES AS B2 WHERE B1.BEDRAG = B2.BEDRAG AND B2.SPELERSNR = 44 AND B1.SPELERSNR <> 44 Antwoord 7.12: SELECT T.TEAMNR, S.NAAM FROM TEAMS AS T INNER JOIN SPELERS AS S ON T.SPELERSNR = S.SPELERSNR Antwoord 7.13: SELECT S.SPELERSNR, S.NAAM FROM SPELERS AS S INNER JOIN SPELERS AS S27 ON S.PLAATS = S27.PLAATS AND S27.SPELERSNR = 27 AND S.SPELERSNR <> 27 Antwoord 7.14: SELECT W.WEDSTRIJDNR, S.NAAM, T.DIVISIE FROM WEDSTRIJDEN AS W INNER JOIN SPELERS AS S ON W.SPELERSNR = S.SPELERSNR INNER JOIN TEAMS AS T ON W.TEAMNR = T.TEAMNR Antwoord 7.15: SELECT SPELERS.SPELERSNR, BOETES.BEDRAG FROM SPELERS LEFT OUTER JOIN BOETES ON SPELERS.SPELERSNR = BOETES.SPELERSNR Antwoord 7.16: SELECT S.SPELERSNR, W.TEAMNR FROM SPELERS AS S LEFT OUTER JOIN WEDSTRIJDEN AS W ON S.SPELERSNR = W.SPELERSNR Antwoord 7.17: SELECT S.SPELERSNR, B.BEDRAG, W.TEAMNR FROM SPELERS AS S LEFT OUTER JOIN WEDSTRIJDEN AS W ON S.SPELERSNR = W.SPELERSNR LEFT OUTER JOIN BOETES AS B ON S.SPELERSNR = B.SPELERSNR Antwoord 7.21: SELECT SPELERSNR, VERSCHIL FROM (SELECT SPELERSNR, JAARTOE - YEAR(GEB_DATUM) AS VERSCHIL FROM SPELERS) AS VERSCHILLEN WHERE VERSCHIL > 20 Antwoord 7.22: SELECT LETTER1 || LETTER2 || LETTER3 FROM (SELECT 'a' AS LETTER1 UNION SELECT 'b' UNION SELECT 'c' UNION SELECT 'd') AS LETTERS1, (SELECT 'a' AS LETTER2 UNION SELECT 'b' UNION SELECT 'c' UNION SELECT 'd') AS LETTERS2, (SELECT 'a' AS LETTER3 UNION SELECT 'b' UNION SELECT 'c' UNION SELECT 'd') AS LETTERS3 Antwoord 7.23: SELECT ROUND(RAND() * 1000) FROM (SELECT 0 AS GETAL UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS GETALLEN Voorbeeld 8.1: SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Den Haag' Voorbeeld 8.2: SELECT SPELERSNR, GEB_DATUM, JAARTOE FROM SPELERS WHERE YEAR(GEB_DATUM) + 17 = JAARTOE Voorbeeld 8.3: SELECT SPELERSNR FROM SPELERS WHERE BONDSNR = '7060' Voorbeeld 8.4: SELECT SPELERSNR, BONDSNR FROM SPELERS WHERE BONDSNR = BONDSNR Voorbeeld 8.5: SELECT SPELERSNR, BONDSNR FROM SPELERS WHERE BONDSNR <=> NULL Voorbeeld 8.6: SELECT WEDSTRIJDNR FROM WEDSTRIJDEN WHERE (GEWONNEN, VERLOREN) = (2, 3) Voorbeeld 8.7: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR = (SELECT SPELERSNR FROM TEAMS WHERE TEAMNR = 1) ; SELECT * FROM SPELERS WHERE GEB_DATUM < (SELECT GEB_DATUM FROM SPELERS) Voorbeeld 8.8: SELECT SPELERSNR, NAAM, VOORLETTERS FROM SPELERS WHERE GEB_DATUM < (SELECT GEB_DATUM FROM SPELERS WHERE BONDSNR = '8467') ; SELECT SPELERSNR, NAAM, VOORLETTERS FROM SPELERS WHERE GEB_DATUM < (SELECT GEB_DATUM FROM SPELERS WHERE BONDSNR = '9999') Voorbeeld 8.9: SELECT WEDSTRIJDNR FROM WEDSTRIJDEN WHERE TEAMNR = (SELECT TEAMNR FROM TEAMS WHERE SPELERSNR = 27) Voorbeeld 8.10: SELECT SPELERSNR FROM SPELERS WHERE BONDSNR <=> (SELECT BONDSNR FROM SPELERS WHERE SPELERSNR = 7) Voorbeeld 8.11: SELECT SPELERSNR, PLAATS, GESLACHT FROM SPELERS WHERE (PLAATS, GESLACHT) = ((SELECT PLAATS FROM SPELERS WHERE SPELERSNR = 7), (SELECT GESLACHT FROM SPELERS WHERE SPELERSNR = 2)) Voorbeeld 8.12: SELECT DISTINCT SPELERSNR FROM BESTUURSLEDEN WHERE (BEGIN_DATUM, EIND_DATUM) = (SELECT BEGIN_DATUM, EIND_DATUM FROM BESTUURSLEDEN WHERE SPELERSNR = 6 AND FUNCTIE = 'Secretaris' AND BEGIN_DATUM = '1990-01-01') Voorbeeld 8.13: SELECT SPELERSNR, NAAM, VOORLETTERS FROM SPELERS WHERE (NAAM, VOORLETTERS) < (SELECT NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR = 6) ORDER BY NAAM, VOORLETTERS Voorbeeld 8.14: SELECT WEDSTRIJDNR FROM WEDSTRIJDEN_SPECIAAL WHERE (START_DATUM, START_TIJD) > (SELECT START_DATUM, START_TIJD FROM WEDSTRIJDEN_SPECIAAL WHERE WEDSTRIJDNR = 1) Voorbeeld 8.15: SELECT WEDSTRIJDNR FROM WEDSTRIJDEN WHERE 'Rijswijk' = (SELECT PLAATS FROM SPELERS WHERE SPELERS.SPELERSNR = WEDSTRIJDEN.SPELERSNR) ; SELECT PLAATS FROM SPELERS WHERE SPELERS.SPELERSNR = 6 ; SELECT PLAATS FROM SPELERS WHERE SPELERS.SPELERSNR = 44 Voorbeeld 8.16: SELECT WEDSTRIJDNR, SPELERSNR, TEAMNR FROM WEDSTRIJDEN WHERE SPELERSNR = (SELECT SPELERSNR FROM TEAMS WHERE TEAMS.SPELERSNR = WEDSTRIJDEN.SPELERSNR) Voorbeeld 8.17: SELECT WEDSTRIJDNR FROM WEDSTRIJDEN WHERE SUBSTR((SELECT DIVISIE FROM TEAMS WHERE TEAMS.TEAMNR = WEDSTRIJDEN.TEAMNR),3,1) = SUBSTR((SELECT NAAM FROM SPELERS WHERE SPELERS.SPELERSNR = WEDSTRIJDEN.SPELERSNR),3,1) Voorbeeld 8.18: SELECT SPELERSNR, BONDSNR FROM SPELERS WHERE BONDSNR Voorbeeld 8.19: SELECT TEAMNR FROM TEAMS WHERE TEAMNR - 1 ; SELECT * FROM SPELERS WHERE 18 ; SELECT * FROM SPELERS WHERE NULL ; SELECT * FROM SPELERS WHERE SPELERSNR & 3 ; SELECT * FROM SPELERS WHERE YEAR(GEB_DATUM) Voorbeeld 8.20: SELECT SPELERSNR, NAAM, GESLACHT, GEB_DATUM FROM SPELERS WHERE GESLACHT = 'M' AND GEB_DATUM > '1970-12-31' Voorbeeld 8.21: SELECT SPELERSNR, NAAM, PLAATS FROM SPELERS WHERE PLAATS = 'Rotterdam' OR PLAATS = 'Zoetermeer' Voorbeeld 8.22: SELECT SPELERSNR, NAAM, PLAATS FROM SPELERS WHERE PLAATS <> 'Den Haag' ; SELECT SPELERSNR, NAAM, PLAATS FROM SPELERS WHERE NOT (PLAATS = 'Den Haag') Voorbeeld 8.23: SELECT SPELERSNR, BONDSNR, TELEFOON FROM SPELERS WHERE BONDSNR AND TELEFOON Voorbeeld 8.24: SELECT SPELERSNR, PLAATS, GEB_DATUM FROM SPELERS WHERE (PLAATS = 'Den Haag' OR YEAR(GEB_DATUM) = 1963) AND NOT (PLAATS = 'Den Haag' AND YEAR(GEB_DATUM) = 1963) ; SELECT SPELERSNR, PLAATS, GEB_DATUM FROM SPELERS WHERE (PLAATS = 'Den Haag') XOR (YEAR(GEB_DATUM) = 1963) Voorbeeld 8.25: SELECT SPELERSNR, NAAM, PLAATS FROM SPELERS WHERE PLAATS = 'Rijswijk' OR PLAATS = 'Rotterdam' OR PLAATS = 'Leiden' OR PLAATS = 'Voorburg' ; SELECT SPELERSNR, NAAM, PLAATS FROM SPELERS WHERE PLAATS IN ('Rijswijk', 'Rotterdam', 'Leiden', 'Voorburg') Voorbeeld 8.26: SELECT SPELERSNR, YEAR(GEB_DATUM) AS JAARTAL FROM SPELERS WHERE YEAR(GEB_DATUM) IN (1962, 1963, 1970) Voorbeeld 8.27: SELECT WEDSTRIJDNR, GEWONNEN, VERLOREN FROM WEDSTRIJDEN WHERE 2 IN (GEWONNEN, VERLOREN) Voorbeeld 8.28: SELECT SPELERSNR FROM SPELERS WHERE SPELERSNR IN (100, (SELECT SPELERSNR FROM BOETES WHERE BETALINGSNR = 1), (SELECT SPELERSNR FROM TEAMS WHERE TEAMNR = 2)) Voorbeeld 8.29: SELECT WEDSTRIJDNR, GEWONNEN, VERLOREN FROM WEDSTRIJDEN WHERE GEWONNEN IN (TRUNCATE(WEDSTRIJDNR / 2,0), VERLOREN, (SELECT VERLOREN FROM WEDSTRIJDEN WHERE WEDSTRIJDNR = 1)) Voorbeeld 8.30: SELECT WEDSTRIJDNR FROM WEDSTRIJDEN WHERE (SELECT SUBSTR(NAAM,1,1) FROM SPELERS WHERE SPELERS.SPELERSNR = WEDSTRIJDEN.SPELERSNR) IN ('B','C','E') Voorbeeld 8.31: SELECT WEDSTRIJDNR, GEWONNEN, VERLOREN FROM WEDSTRIJDEN WHERE (GEWONNEN, VERLOREN) IN ((3,1),(3,2)) Voorbeeld 8.32: SELECT SPELERSNR, NAAM, VOORLETTERS FROM SPELERS WHERE (NAAM, VOORLETTERS) IN ((SELECT NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR = 6), (SELECT NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR = 27)) Voorbeeld 8.33: SELECT SPELERSNR FROM WEDSTRIJDEN ; SELECT SPELERSNR, NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR IN (6, 6, 6, 44, 83, 2, 57, 8, 27, 104, 112, 112, 8) ; SELECT SPELERSNR, NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN) ; SELECT SPELERSNR, NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR IN (6, 6, 6, 44, 83, 2, 57, 8, 27, 104, 112, 112, 8) Voorbeeld 8.34: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR = 1) Voorbeeld 8.35: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR NOT IN (SELECT TEAMNR FROM TEAMS WHERE SPELERSNR = 6)) Voorbeeld 8.36: SELECT * FROM BESTUURSLEDEN WHERE SPELERSNR = 95 AND EIND_DATUM IN (SELECT EIND_DATUM FROM BESTUURSLEDEN WHERE SPELERSNR = 27) Voorbeeld 8.37: SELECT * FROM BESTUURSLEDEN WHERE SPELERSNR = 57 AND EIND_DATUM IN (SELECT EIND_DATUM FROM BESTUURSLEDEN WHERE SPELERSNR = 7) Voorbeeld 8.38: SELECT * FROM BESTUURSLEDEN WHERE SPELERSNR = 95 AND EIND_DATUM NOT IN (SELECT EIND_DATUM FROM BESTUURSLEDEN WHERE SPELERSNR = 7) Voorbeeld 8.39: SELECT * FROM BESTUURSLEDEN WHERE (BEGIN_DATUM, EIND_DATUM) IN (SELECT BEGIN_DATUM, EIND_DATUM FROM BESTUURSLEDEN WHERE FUNCTIE = 'Secretaris') Voorbeeld 8.40: CREATE TABLE SPELERS_NV (NAAM CHAR(10) NOT NULL, VOORLETTERS CHAR(3) NOT NULL, PLAATS VARCHAR(30) NOT NULL, PRIMARY KEY (NAAM, VOORLETTERS)) ; INSERT INTO SPELERS_NV VALUES ('Permentier', 'R', 'Den Haag') ; INSERT INTO SPELERS_NV VALUES ('Permentier', 'P', 'Den Haag') ; INSERT INTO SPELERS_NV VALUES ('Meuleman', 'P', 'Voorburg') ; CREATE TABLE BOETES_NV (BETALINGSNR INTEGER NOT NULL, NAAM CHAR(10) NOT NULL, VOORLETTERS CHAR(3) NOT NULL, BEDRAG DECIMAL(7,2) NOT NULL, PRIMARY KEY (BETALINGSNR), FOREIGN KEY (NAAM, VOORLETTERS) REFERENCES SPELERS_NV (NAAM, VOORLETTERS)) ; INSERT INTO BOETES_NV VALUES (1, 'Permentier', 'R', 100.00) ; INSERT INTO BOETES_NV VALUES (2, 'Meuleman', 'P', 200.00) Voorbeeld 8.41: SELECT NAAM, VOORLETTERS, PLAATS FROM SPELERS_NV WHERE NAAM IN (SELECT NAAM FROM BOETES_NV) AND VOORLETTERS IN (SELECT VOORLETTERS FROM BOETES_NV) ; SELECT NAAM, VOORLETTERS, PLAATS FROM SPELERS_NV WHERE (NAAM, VOORLETTERS) IN (SELECT NAAM, VOORLETTERS FROM BOETES_NV) ; SELECT NAAM, VOORLETTERS, PLAATS FROM SPELERS_NV WHERE NAAM IN (SELECT NAAM FROM BOETES_NV WHERE SPELERS_NV.VOORLETTERS = BOETES_NV.VOORLETTERS) Voorbeeld 8.42: SELECT NAAM, VOORLETTERS, PLAATS FROM SPELERS_NV WHERE (NAAM, VOORLETTERS) NOT IN (SELECT NAAM, VOORLETTERS FROM BOETES_NV) Voorbeeld 8.43: SELECT SPELERSNR, GEB_DATUM FROM SPELERS WHERE GEB_DATUM >= '1962-01-01' AND GEB_DATUM <= '1964-12-31' ; SELECT SPELERSNR, GEB_DATUM FROM SPELERS WHERE GEB_DATUM BETWEEN '1962-01-01' AND '1964-12-31' Voorbeeld 8.44: SELECT WEDSTRIJDNR, GEWONNEN + VERLOREN FROM WEDSTRIJDEN WHERE GEWONNEN + VERLOREN BETWEEN 2 AND 4 Voorbeeld 8.45: SELECT SPELERSNR, GEB_DATUM, NAAM, VOORLETTERS FROM SPELERS WHERE GEB_DATUM BETWEEN (SELECT GEB_DATUM FROM SPELERS WHERE NAAM = 'Niewenburg' AND VOORLETTERS = 'B') AND (SELECT GEB_DATUM FROM SPELERS WHERE NAAM = 'Meuleman' AND VOORLETTERS = 'P') Voorbeeld 8.46: SELECT NAAM, SPELERSNR FROM SPELERS WHERE NAAM LIKE 'B%' Voorbeeld 8.47: SELECT NAAM, SPELERSNR FROM SPELERS WHERE NAAM LIKE '%n' Voorbeeld 8.48: SELECT NAAM, SPELERSNR FROM SPELERS WHERE NAAM LIKE '%a_' Voorbeeld 8.49: SELECT NAAM, PLAATS, SPELERSNR FROM SPELERS WHERE NAAM LIKE CONCAT('%', SUBSTR(PLAATS,3,1)) Voorbeeld 8.50: SELECT NAAM, SPELERSNR FROM SPELERS WHERE NAAM LIKE '%#_%' ESCAPE '#' Voorbeeld 8.51: SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM REGEXP 'b' Voorbeeld 8.52: SELECT NAAM, SPELERSNR FROM SPELERS WHERE NAAM REGEXP '^ba' Voorbeeld 8.53: SELECT NAAM, PLAATS, SPELERSNR FROM SPELERS WHERE NAAM REGEXP CONCAT(SUBSTR(PLAATS,1,1), '$') Voorbeeld 8.54: SELECT NAAM, SPELERSNR FROM SPELERS WHERE NAAM REGEXP '[abc]' Voorbeeld 8.55: SELECT NAAM, SPELERSNR FROM SPELERS WHERE NAAM REGEXP 'm.n' Voorbeeld 8.56: SELECT NAAM, SPELERSNR FROM SPELERS WHERE NAAM REGEXP '[men][men]' Voorbeeld 8.57: SELECT SPELERSNR, POSTCODE FROM SPELERS WHERE POSTCODE REGEXP '^[0-9][0-9]3' Voorbeeld 8.58: SELECT NAAM, SPELERSNR FROM SPELERS WHERE NAAM REGEXP '^bo.*van$' Voorbeeld 8.59: SELECT SPELERSNR, POSTCODE FROM SPELERS WHERE POSTCODE REGEXP '[0-9][0-9]*[a-z][a-z]*' Voorbeeld 8.60: SELECT NAAM, SPELERSNR FROM SPELERS WHERE NAAM REGEXP '^[^A-M]' Voorbeeld 8.61: SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM REGEXP '^[a-z]{8}' Voorbeeld 8.62: SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM REGEXP '^[a-z]{5,7}$' Voorbeeld 8.63: SELECT SPELERSNR, POSTCODE FROM SPELERS WHERE POSTCODE REGEXP '4{4}' Voorbeeld 8.64: SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM REGEXP 'man|van' Voorbeeld 8.65: SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM REGEXP '[[.space.]]' Voorbeeld 8.66: SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM REGEXP '[[:<:]]van[[:>:]]' Voorbeeld 8.67: CREATE TABLE BOEKEN (BOEKNR INTEGER NOT NULL PRIMARY KEY, AUTEURS TEXT NOT NULL, TITEL TEXT NOT NULL, JAAR_UITGIFTE YEAR NOT NULL, SAMENVATTING TEXT NOT NULL) ENGINE = MyISAM Voorbeeld 8.68: SET @@SQL_MODE = 'PIPES_AS_CONCAT' ; INSERT INTO BOEKEN VALUES (1, 'Ramez Elmasri and Shamkant B. Navathe', 'Fundamentals of Database Systems', 2007, 'This market-leading text serves as a valued resource for '|| 'those who will interact with databases in future courses '|| 'and careers. Renowned for its accessible, comprehensive '|| 'coverage of models and real systems, it provides an '|| 'up-to-date introduction to modern database technologies.') ; INSERT INTO BOEKEN VALUES (2, 'George Coulouris, Jean Dollimore and Tim Kindberg', 'Distributed Systems: Concepts and Design', 2005, 'This book provides broad and up-to-date coverage of the '|| 'principles and practice in the fast moving area of '|| 'distributed systems. It includes the key issues in the '|| 'debate between components and web services as the way '|| 'forward for industry. The depth of coverage will enable '|| 'students to evaluate existing distributed systems and '|| 'design new ones.') ; INSERT INTO BOEKEN VALUES (3, 'Rick van der Lans', 'Introduction to SQL: Mastering the Relational Database '|| 'Language', 2007, 'This book provides a technical introduction to the '|| 'features of SQL. Aimed at those new to SQL, but not new '|| 'to programming, it gives the reader the essential skills '|| 'required to start programming with this language.') ; INSERT INTO BOEKEN VALUES (4, 'Chris Date', 'An Introduction to Database Systems', 2004, 'Continuing in the eighth edition, this book provides a '|| 'comprehensive introduction to the now very large field of '|| 'database systems by providing a solid grounding in the '|| 'foundations of database technology. This new edition has '|| 'been rewritten and expanded to stay current with database '|| 'system trends.') ; INSERT INTO BOEKEN VALUES (5, 'Thomas M. Connolly and Carolyn E. Begg', 'DataBase Systems: A Practical Approach to Design, '|| 'Implementation and Management', 2005, 'A clear introduction to design implementation and management '|| 'issues, as well as an extensive treatment of database '|| 'languages and standards, make this book an indispensable '|| 'complete reference for database students and professionals.') Voorbeeld 8.69: CREATE FULLTEXT INDEX INDEX_TITEL ON BOEKEN (TITEL) ; CREATE FULLTEXT INDEX INDEX_SAMENVATTING ON BOEKEN (SAMENVATTING) Voorbeeld 8.70: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('design') ; SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('design' IN NATURAL LANGUAGE MODE) Voorbeeld 8.71: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('to') Voorbeeld 8.72: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('database') Voorbeeld 8.73: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('practical') Voorbeeld 8.74: SELECT BOEKNR, MATCH(SAMENVATTING) AGAINST ('distributed') FROM BOEKEN Voorbeeld 8.75: SELECT BOEKNR, MATCH(TITEL) AGAINST ('introduction') FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('introduction') Voorbeeld 8.76: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('practical distributed') Voorbeeld 8.77: CREATE FULLTEXT INDEX INDEX_TITEL_SAMENVATTING ON BOEKEN (TITEL, SAMENVATTING) Voorbeeld 8.78: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL, SAMENVATTING) AGAINST ('careers') Voorbeeld 8.79: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('database' IN BOOLEAN MODE) Voorbeeld 8.80: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL, SAMENVATTING) AGAINST ('introduction' IN BOOLEAN MODE) Voorbeeld 8.81: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('database design' IN BOOLEAN MODE) Voorbeeld 8.82: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('+database +design' IN BOOLEAN MODE) Voorbeeld 8.83: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('+database -design' IN BOOLEAN MODE) Voorbeeld 8.84: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('"design implementation"' IN BOOLEAN MODE) Voorbeeld 8.85: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('data*' IN BOOLEAN MODE) Voorbeeld 8.86: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('practical' IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION) ; SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('practical') ; SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST (' DataBase Systems: A Practical Approach to Design, Implementation and Management') Voorbeeld 8.87: SELECT BOEKNR, TITEL FROM BOEKEN WHERE MATCH(TITEL) AGAINST ('sql') Voorbeeld 8.88: SELECT SPELERSNR, BONDSNR FROM SPELERS WHERE BONDSNR IS NOT NULL Voorbeeld 8.89: SELECT NAAM, SPELERSNR, BONDSNR FROM SPELERS WHERE BONDSNR <> '8467' OR BONDSNR IS NULL Voorbeeld 8.90: SELECT NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES) ; SELECT NAAM, VOORLETTERS FROM SPELERS WHERE EXISTS (SELECT * FROM BOETES WHERE SPELERSNR = SPELERS.SPELERSNR) ; SELECT * FROM BOETES WHERE SPELERSNR = 6 Voorbeeld 8.91: SELECT NAAM, VOORLETTERS FROM SPELERS WHERE NOT EXISTS (SELECT * FROM TEAMS WHERE SPELERSNR = SPELERS.SPELERSNR) ; SELECT NAAM, VOORLETTERS FROM SPELERS WHERE NOT EXISTS (SELECT 'niets' FROM TEAMS WHERE SPELERSNR = SPELERS.SPELERSNR) Voorbeeld 8.92: SELECT SPELERSNR, NAAM, GEB_DATUM FROM SPELERS WHERE GEB_DATUM <= ALL (SELECT GEB_DATUM FROM SPELERS) Voorbeeld 8.93: SELECT SPELERSNR, GEB_DATUM FROM SPELERS WHERE GEB_DATUM < ALL (SELECT GEB_DATUM FROM SPELERS AS S INNER JOIN WEDSTRIJDEN AS W ON S.SPELERSNR = W.SPELERSNR WHERE W.TEAMNR = 2) Voorbeeld 8.94: SELECT DISTINCT TEAMNR, SPELERSNR FROM WEDSTRIJDEN AS W1 WHERE GEWONNEN <= ALL (SELECT GEWONNEN FROM WEDSTRIJDEN AS W2 WHERE W1.TEAMNR = W2.TEAMNR) Voorbeeld 8.95: SELECT BONDSNR, SPELERSNR FROM SPELERS WHERE BONDSNR >= ALL (SELECT BONDSNR FROM SPELERS) ; SELECT BONDSNR, SPELERSNR FROM SPELERS WHERE BONDSNR >= ALL (SELECT BONDSNR FROM SPELERS WHERE BONDSNR IS NOT NULL) Voorbeeld 8.96: SELECT SPELERSNR, PLAATS, BONDSNR FROM SPELERS AS S1 WHERE BONDSNR <= ALL (SELECT S2.BONDSNR FROM SPELERS AS S2 WHERE S1.PLAATS = S2.PLAATS) ; SELECT SPELERSNR, PLAATS, BONDSNR FROM SPELERS AS S1 WHERE BONDSNR <= ALL (SELECT S2.BONDSNR FROM SPELERS AS S2 WHERE S1.PLAATS = S2.PLAATS AND BONDSNR IS NOT NULL) Voorbeeld 8.97: SELECT SPELERSNR, NAAM, GEB_DATUM FROM SPELERS WHERE GEB_DATUM > ANY (SELECT GEB_DATUM FROM SPELERS) Voorbeeld 8.98: SELECT DISTINCT SPELERSNR FROM BOETES WHERE SPELERSNR <> 27 AND BEDRAG > ANY (SELECT BEDRAG FROM BOETES WHERE SPELERSNR = 27) Voorbeeld 8.99: SELECT SPELERSNR, GEB_DATUM, PLAATS FROM SPELERS AS S1 WHERE GEB_DATUM > ANY (SELECT GEB_DATUM FROM SPELERS AS S2 WHERE S1.PLAATS = S2.PLAATS) Voorbeeld 8.100: SELECT SPELERSNR, NAAM FROM SPELERS WHERE EXISTS (SELECT * FROM BOETES WHERE SPELERS.SPELERSNR = SPELERSNR) ; SELECT SPELERSNR, NAAM FROM SPELERS WHERE EXISTS (SELECT * FROM BOETES WHERE SPELERS.SPELERSNR = SPELERS.SPELERSNR) ; SELECT SPELERSNR, NAAM FROM SPELERS AS S WHERE EXISTS (SELECT * FROM BOETES AS BT WHERE S.SPELERSNR = BT.SPELERSNR) Voorbeeld 8.101: SELECT TEAMNR, DIVISIE FROM TEAMS WHERE EXISTS (SELECT * FROM WEDSTRIJDEN WHERE SPELERSNR = 44 AND TEAMNR = TEAMS.TEAMNR) Voorbeeld 8.102: SELECT DISTINCT SPELERSNR FROM BOETES AS BT WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES WHERE BETALINGSNR <> BT.BETALINGSNR) Voorbeeld 8.103: SELECT SPELERSNR, NAAM FROM SPELERS WHERE 1 <> ALL (SELECT TEAMNR FROM WEDSTRIJDEN WHERE SPELERSNR = SPELERS.SPELERSNR) Voorbeeld 8.104: SELECT TEAMNR FROM TEAMS WHERE NOT EXISTS (SELECT * FROM WEDSTRIJDEN WHERE SPELERSNR = 57 AND TEAMNR = TEAMS.TEAMNR) Voorbeeld 8.105: SELECT SPELERSNR FROM SPELERS AS S WHERE NOT EXISTS (SELECT * FROM TEAMS AS T WHERE NOT EXISTS (SELECT * FROM WEDSTRIJDEN AS W WHERE T.TEAMNR = W.TEAMNR AND S.SPELERSNR = W.SPELERSNR)) ; SELECT * FROM TEAMS AS T WHERE NOT EXISTS (SELECT * FROM WEDSTRIJDEN AS W WHERE T.TEAMNR = W.TEAMNR AND W.SPELERSNR = 27) Voorbeeld 8.106: SELECT SPELERSNR FROM SPELERS WHERE NOT EXISTS (SELECT * FROM WEDSTRIJDEN AS W1 WHERE SPELERSNR = 57 AND NOT EXISTS (SELECT * FROM WEDSTRIJDEN AS W2 WHERE W1.TEAMNR = W2.TEAMNR AND SPELERS.SPELERSNR = W2.SPELERSNR)) Voorbeeld 8.107: SELECT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR IN (SELECT TEAMNR FROM TEAMS WHERE TEAMNR NOT IN (SELECT TEAMNR FROM WEDSTRIJDEN WHERE SPELERSNR = 57)) ; SELECT SPELERSNR FROM SPELERS AS S WHERE NOT EXISTS (SELECT * FROM WEDSTRIJDEN AS W1 WHERE SPELERSNR = 57 AND NOT EXISTS (SELECT * FROM WEDSTRIJDEN AS W2 WHERE W1.TEAMNR = W2.TEAMNR AND S.SPELERSNR = W2.SPELERSNR)) AND SPELERSNR NOT IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR IN (SELECT TEAMNR FROM TEAMS WHERE TEAMNR NOT IN (SELECT TEAMNR FROM WEDSTRIJDEN WHERE SPELERSNR = 57))) Voorbeeld 8.108: SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Den Haag' ; SELECT SPELERSNR FROM SPELERS WHERE NOT (PLAATS = 'Den Haag') ; SELECT SPELERSNR FROM SPELERS WHERE PLAATS <> 'Den Haag' Voorbeeld 8.109: SELECT SPELERSNR FROM BOETES WHERE BEDRAG = 25 ; SELECT SPELERSNR FROM BOETES WHERE BEDRAG <> 25 ; SELECT SPELERSNR FROM SPELERS WHERE SPELERSNR NOT IN (SELECT SPELERSNR FROM BOETES WHERE BEDRAG = 25) ; SELECT SPELERSNR FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES WHERE BEDRAG = 25) Antwoord 8.1: SELECT BETALINGSNR FROM BOETES WHERE BEDRAG > 60 ; SELECT BETALINGSNR FROM BOETES WHERE 60 < BEDRAG ; SELECT BETALINGSNR FROM BOETES WHERE BEDRAG - 60 > 0 Antwoord 8.2: SELECT TEAMNR FROM TEAMS WHERE SPELERSNR <> 27 Antwoord 8.4: SELECT DISTINCT SPELERSNR FROM WEDSTRIJDEN WHERE GEWONNEN > VERLOREN Antwoord 8.5: SELECT DISTINCT SPELERSNR FROM WEDSTRIJDEN WHERE GEWONNEN + VERLOREN = 5 Antwoord 8.6: SELECT SPELERSNR, NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR = (SELECT SPELERSNR FROM BOETES WHERE BETALINGSNR = 4) Antwoord 8.7: SELECT SPELERSNR, NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR = (SELECT SPELERSNR FROM TEAMS WHERE TEAMNR = (SELECT TEAMNR FROM WEDSTRIJDEN WHERE WEDSTRIJDNR = 2)) Antwoord 8.8: SELECT SPELERSNR, NAAM FROM SPELERS WHERE GEB_DATUM = (SELECT GEB_DATUM FROM SPELERS WHERE NAAM = 'Permentier' AND VOORLETTERS = 'R') AND NOT (NAAM = 'Permentier' AND VOORLETTERS = 'R') Antwoord 8.9: SELECT WEDSTRIJDNR FROM WEDSTRIJDEN WHERE GEWONNEN = (SELECT GEWONNEN FROM WEDSTRIJDEN WHERE WEDSTRIJDNR = 6) AND WEDSTRIJDNR <> 6 AND TEAMNR = 2 Antwoord 8.10: SELECT WEDSTRIJDNR FROM WEDSTRIJDEN WHERE (GEWONNEN, VERLOREN) = ((SELECT GEWONNEN FROM WEDSTRIJDEN WHERE WEDSTRIJDNR = 2), (SELECT VERLOREN FROM WEDSTRIJDEN WHERE WEDSTRIJDNR = 8)) Antwoord 8.11: SELECT SPELERSNR, PLAATS, STRAAT, HUISNR FROM SPELERS WHERE (PLAATS, STRAAT, HUISNR) < (SELECT PLAATS, STRAAT, HUISNR FROM SPELERS WHERE SPELERSNR = 100) ORDER BY PLAATS, STRAAT, HUISNR Antwoord 8.12: SELECT BETALINGSNR FROM BOETES WHERE 1965 < (SELECT YEAR(GEB_DATUM) FROM SPELERS WHERE SPELERS.SPELERSNR = BOETES.SPELERSNR) Antwoord 8.13: SELECT BETALINGSNR, SPELERSNR FROM BOETES WHERE SPELERSNR = (SELECT SPELERSNR FROM TEAMS WHERE TEAMS.SPELERSNR = BOETES.SPELERSNR) Antwoord 8.14: SELECT SPELERSNR, NAAM, PLAATS FROM SPELERS WHERE GESLACHT = 'V' AND PLAATS <> 'Den Haag' ; SELECT SPELERSNR, NAAM, PLAATS FROM SPELERS WHERE GESLACHT = 'V' AND NOT (PLAATS = 'Den Haag') Antwoord 8.15: SELECT SPELERSNR FROM SPELERS WHERE JAARTOE >= 1970 AND JAARTOE <= 1980 ; SELECT SPELERSNR FROM SPELERS WHERE NOT (JAARTOE < 1970 OR JAARTOE > 1980) Antwoord 8.16: SELECT SPELERSNR, NAAM, GEB_DATUM FROM SPELERS WHERE MOD(YEAR(GEB_DATUM), 400) = 0 OR (MOD(YEAR(GEB_DATUM), 4) = 0 AND NOT(MOD(YEAR(GEB_DATUM), 100) = 0)) Antwoord 8.17: SELECT WEDSTRIJDNR, NAAM, VOORLETTERS, DIVISIE FROM WEDSTRIJDEN AS W, SPELERS AS S, TEAMS AS T WHERE W.SPELERSNR = S.SPELERSNR AND W.TEAMNR = T.TEAMNR AND YEAR(GEB_DATUM) > 1965 AND GEWONNEN > VERLOREN Antwoord 8.18: SELECT BETALINGSNR FROM BOETES WHERE BEDRAG IN (50, 75, 100) Antwoord 8.19: SELECT SPELERSNR FROM SPELERS WHERE PLAATS NOT IN ('Den Haag', 'Voorburg') ; SELECT SPELERSNR FROM SPELERS WHERE NOT (PLAATS IN ('Den Haag', 'Voorburg')) ; SELECT SPELERSNR FROM SPELERS WHERE PLAATS <> 'Den Haag' AND PLAATS <> 'Voorburg' Antwoord 8.20: SELECT BETALINGSNR FROM BOETES WHERE BEDRAG IN (100, BETALINGSNR * 5, (SELECT BEDRAG FROM BOETES WHERE BETALINGSNR = 2)) Antwoord 8.21: SELECT SPELERSNR, PLAATS, STRAAT FROM SPELERS WHERE (PLAATS, STRAAT) IN (('Den Haag','Hazensteinln'), ('Den Haag','Erasmusweg')) Antwoord 8.22: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES) Antwoord 8.23: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES WHERE BEDRAG > 50) Antwoord 8.24: SELECT TEAMNR, SPELERSNR FROM TEAMS WHERE DIVISIE = 'ere' AND SPELERSNR IN (SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Den Haag') Antwoord 8.25: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES) AND SPELERSNR NOT IN (SELECT SPELERSNR FROM TEAMS WHERE DIVISIE = 'ere') ; SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES WHERE SPELERSNR NOT IN (SELECT SPELERSNR FROM TEAMS WHERE DIVISIE = 'ere')) Antwoord 8.27: SELECT WEDSTRIJDNR, SPELERSNR FROM WEDSTRIJDEN WHERE (GEWONNEN, VERLOREN) IN (SELECT GEWONNEN, VERLOREN FROM WEDSTRIJDEN WHERE TEAMNR IN (SELECT TEAMNR FROM TEAMS WHERE DIVISIE = 'tweede')) Antwoord 8.28: SELECT SPELERSNR, NAAM FROM SPELERS AS S1 WHERE (PLAATS, STRAAT, HUISNR, POSTCODE) IN (SELECT PLAATS, STRAAT, HUISNR, POSTCODE FROM SPELERS AS S2 WHERE S1.SPELERSNR <> S2.SPELERSNR) Antwoord 8.29: SELECT BETALINGSNR FROM BOETES WHERE BEDRAG BETWEEN 50 AND 100 Antwoord 8.30: SELECT BETALINGSNR FROM BOETES WHERE NOT (BEDRAG BETWEEN 50 AND 100) ; SELECT BETALINGSNR FROM BOETES WHERE BEDRAG NOT BETWEEN 50 AND 100 ; SELECT BETALINGSNR FROM BOETES WHERE BEDRAG < 50 OR BEDRAG > 100 Antwoord 8.31: SELECT SPELERSNR FROM SPELERS WHERE JAARTOE BETWEEN YEAR(GEB_DATUM + INTERVAL 16 YEAR + INTERVAL 1 DAY) AND YEAR(GEB_DATUM + INTERVAL 40 YEAR + INTERVAL -1 DAY) Antwoord 8.32: SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM LIKE '%en%' Antwoord 8.33: SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM LIKE '______' Antwoord 8.34: SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM LIKE '______%' ; SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM LIKE '%______' ; SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM LIKE '%______%' ; SELECT SPELERSNR, NAAM FROM SPELERS WHERE LENGTH(RTRIM(NAAM)) > 6 Antwoord 8.35: SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM LIKE '_e%e_' Antwoord 8.36: SELECT SPELERSNR, NAAM FROM SPELERS WHERE PLAATS LIKE '_@%%@%_' ESCAPE '@' Antwoord 8.37: SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM REGEXP 'en' Antwoord 8.38: SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM REGEXP '^n.*g$' Antwoord 8.39: SELECT SPELERSNR, NAAM FROM SPELERS WHERE NAAM REGEXP '[a-z]{10}' Antwoord 8.40: SELECT BOEKNR, SAMENVATTING FROM BOEKEN WHERE MATCH(SAMENVATTING) AGAINST ('students' IN NATURAL LANGUAGE MODE) Antwoord 8.41: SELECT BOEKNR, SAMENVATTING FROM BOEKEN WHERE MATCH(SAMENVATTING) AGAINST ('database' IN BOOLEAN MODE) Antwoord 8.42: SELECT BOEKNR, SAMENVATTING FROM BOEKEN WHERE MATCH(SAMENVATTING) AGAINST ('database languages' IN NATURAL LANGUAGE MODE) Antwoord 8.43: SELECT BOEKNR, SAMENVATTING FROM BOEKEN WHERE MATCH(SAMENVATTING) AGAINST ('+database -languages' IN BOOLEAN MODE) Antwoord 8.44: SELECT SPELERSNR FROM SPELERS WHERE BONDSNR IS NULL Antwoord 8.46: SELECT NAAM, VOORLETTERS FROM SPELERS WHERE EXISTS (SELECT * FROM TEAMS WHERE SPELERSNR = SPELERS.SPELERSNR) Antwoord 8.47: SELECT NAAM, VOORLETTERS FROM SPELERS AS S WHERE NOT EXISTS (SELECT * FROM TEAMS AS T WHERE T.SPELERSNR = S.SPELERSNR AND EXISTS (SELECT * FROM WEDSTRIJDEN AS W WHERE W.TEAMNR = T.TEAMNR AND W.SPELERSNR = 112)) Antwoord 8.48: SELECT SPELERSNR FROM SPELERS WHERE GEB_DATUM <= ALL (SELECT GEB_DATUM FROM SPELERS WHERE PLAATS = 'Den Haag') AND PLAATS = 'Den Haag' Antwoord 8.49: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR = ANY (SELECT SPELERSNR FROM BOETES) Antwoord 8.50: SELECT BETALINGSNR, BEDRAG, DATUM FROM BOETES AS B1 WHERE BEDRAG >= ALL (SELECT BEDRAG FROM BOETES AS B2 WHERE YEAR(B1.DATUM) = YEAR(B2.DATUM)) Antwoord 8.51: SELECT (SELECT SPELERSNR FROM SPELERS WHERE SPELERSNR <= ALL (SELECT SPELERSNR FROM SPELERS)), (SELECT SPELERSNR FROM SPELERS WHERE SPELERSNR >= ALL (SELECT SPELERSNR FROM SPELERS)) Antwoord 8.53: SELECT NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR IN (SELECT TEAMNR FROM TEAMS WHERE DIVISIE = 'ere')) AND SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE GEWONNEN > VERLOREN) AND SPELERSNR NOT IN (SELECT SPELERSNR FROM BOETES) Antwoord 8.54: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR = 1) AND SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR = 2) Antwoord 8.55: SELECT SPELERSNR, NAAM FROM SPELERS WHERE EXISTS (SELECT * FROM BOETES WHERE SPELERSNR = SPELERS.SPELERSNR) Antwoord 8.56: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN AS W1 WHERE GEWONNEN > VERLOREN AND EXISTS (SELECT * FROM WEDSTRIJDEN AS W2 WHERE W1.SPELERSNR = W2.SPELERSNR AND GEWONNEN > VERLOREN AND W1.WEDSTRIJDNR <> W2.WEDSTRIJDNR)) ; SELECT SPELERSNR, NAAM FROM SPELERS WHERE 1 < (SELECT COUNT(*) FROM WEDSTRIJDEN WHERE GEWONNEN > VERLOREN AND SPELERS.SPELERSNR = SPELERSNR) Antwoord 8.57: SELECT NAAM, VOORLETTERS FROM SPELERS WHERE NOT EXISTS (SELECT * FROM BOETES WHERE SPELERS.SPELERSNR = SPELERSNR AND DATUM BETWEEN '1980-01-01' AND '1980-12-31') Antwoord 8.58: SELECT DISTINCT SPELERSNR FROM BOETES AS B1 WHERE EXISTS (SELECT * FROM BOETES AS B2 WHERE B1.BEDRAG = B2.BEDRAG AND B1.BETALINGSNR <> B2.BETALINGSNR) Antwoord 8.59: SELECT SPELERSNR FROM SPELERS WHERE SPELERSNR NOT IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE GEWONNEN = 3) Antwoord 8.60: SELECT TEAMNR, DIVISIE FROM TEAMS WHERE TEAMNR NOT IN (SELECT TEAMNR FROM WEDSTRIJDEN WHERE SPELERSNR = 6) Antwoord 8.61: SELECT DISTINCT SPELERSNR FROM WEDSTRIJDEN WHERE SPELERSNR NOT IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR IN (SELECT TEAMNR FROM WEDSTRIJDEN WHERE SPELERSNR = 57)) Voorbeeld 9.1: SELECT * FROM BOETES ; SELECT BETALINGSNR, SPELERSNR, DATUM, BEDRAG FROM BOETES ; SELECT BOETES.* FROM BOETES Voorbeeld 9.2: SELECT BOETES.* FROM BOETES INNER JOIN TEAMS ON BOETES.SPELERSNR = TEAMS.SPELERSNR ; SELECT BOETES.BETALINGSNR, BOETES.SPELERSNR, BOETES.DATUM, BOETES.BEDRAG FROM BOETES INNER JOIN TEAMS ON BOETES.SPELERSNR = TEAMS.SPELERSNR ; SELECT BT.* FROM BOETES AS BT INNER JOIN TEAMS ON BT.SPELERSNR = TEAMS.SPELERSNR Voorbeeld 9.3: SELECT WEDSTRIJDNR, 'Saldo', GEWONNEN - VERLOREN, GEWONNEN * 10 FROM WEDSTRIJDEN Voorbeeld 9.4: SELECT PLAATS FROM SPELERS ; SELECT DISTINCT PLAATS FROM SPELERS Voorbeeld 9.5: SELECT STRAAT, PLAATS FROM SPELERS ; SELECT DISTINCT STRAAT, PLAATS FROM SPELERS ; SELECT PLAATS FROM SPELERS ; SELECT ALL PLAATS FROM SPELERS Voorbeeld 9.6: SELECT DISTINCT BONDSNR FROM SPELERS Voorbeeld 9.7: SELECT DISTINCT * FROM (SELECT 1 AS A, 'Hello' AS B, 4 AS C UNION SELECT 1, 'Hello', NULL UNION SELECT 1, 'Hello', NULL UNION SELECT 1, NULL, NULL) AS X Voorbeeld 9.8: SELECT COUNT(*) FROM SPELERS Voorbeeld 9.9: SELECT COUNT(*) FROM SPELERS WHERE PLAATS = 'Den Haag' ; SELECT COUNT(*), SPELERSNR FROM SPELERS ; SELECT 'Het aantal spelers is', COUNT(*) FROM SPELERS Voorbeeld 9.10: SELECT COUNT(BONDSNR) FROM SPELERS ; SELECT COUNT(ALL BONDSNR) FROM SPELERS Voorbeeld 9.11: SELECT COUNT(DISTINCT PLAATS) FROM SPELERS Voorbeeld 9.12: SELECT COUNT(DISTINCT SUBSTR(NAAM, 1, 1)) FROM SPELERS Voorbeeld 9.13: SELECT COUNT(DISTINCT YEAR(DATUM)) AS JAREN FROM BOETES Voorbeeld 9.14: SELECT COUNT(DISTINCT PLAATS), COUNT(DISTINCT GESLACHT) FROM SPELERS Voorbeeld 9.15: SELECT SPELERSNR, NAAM FROM SPELERS AS S WHERE (SELECT COUNT(*) FROM BOETES AS BT WHERE S.SPELERSNR = BT.SPELERSNR) > (SELECT COUNT(*) FROM WEDSTRIJDEN AS W WHERE S.SPELERSNR = W.SPELERSNR) Voorbeeld 9.16: SELECT SPELERSNR, NAAM, (SELECT COUNT(*) FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR) AS AANTAL FROM SPELERS WHERE (SELECT COUNT(*) FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR) >= 2 ; SELECT SPELERSNR, NAAM, AANTAL FROM (SELECT SPELERSNR, NAAM, (SELECT COUNT(*) FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR) AS AANTAL FROM SPELERS) AS SA WHERE AANTAL >= 2 Voorbeeld 9.17: SELECT (SELECT COUNT(*) FROM BOETES) AS AANTAL_BOETES, (SELECT COUNT(*) FROM WEDSTRIJDEN) AS AANTAL_WEDSTRIJDEN Voorbeeld 9.18: SELECT MAX(BEDRAG) FROM BOETES Voorbeeld 9.19: SELECT MIN(BEDRAG) FROM BOETES WHERE SPELERSNR IN (SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Den Haag') Voorbeeld 9.20: SELECT COUNT(*) FROM BOETES WHERE BEDRAG = (SELECT MIN(BEDRAG) FROM BOETES) Voorbeeld 9.21: SELECT DISTINCT TEAMNR, SPELERSNR FROM WEDSTRIJDEN AS W1 WHERE GEWONNEN = (SELECT MAX(GEWONNEN) FROM WEDSTRIJDEN AS W2 WHERE W1.TEAMNR = W2.TEAMNR) Voorbeeld 9.22: SELECT (MAX(BEDRAG) - MIN(BEDRAG)) * 100 FROM BOETES Voorbeeld 9.23: SELECT SUBSTR(MAX(NAAM), 1, 1) FROM SPELERS Voorbeeld 9.24: SELECT MAX(BONDSNR) FROM SPELERS WHERE PLAATS = 'Leiden' Voorbeeld 9.25: SELECT CASE WHEN MIN(BONDSNR) IS NULL THEN 'Onbekend' ELSE MIN(BONDSNR) END FROM SPELERS WHERE PLAATS = 'Amsterdam' Voorbeeld 9.26: SELECT SPELERSNR, BEDRAG, DATUM FROM BOETES AS BT1 WHERE BEDRAG = (SELECT MAX(BEDRAG) FROM BOETES AS BT2 WHERE BT2.SPELERSNR = BT1.SPELERSNR) Voorbeeld 9.27: SELECT SPELERSNR, (SELECT MAX(BEDRAG) FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR) AS HOOGSTEBOETE, (SELECT MAX(GEWONNEN) FROM WEDSTRIJDEN WHERE WEDSTRIJDEN.SPELERSNR = SPELERS.SPELERSNR) AS AANTALSETS FROM SPELERS Voorbeeld 9.28: SELECT SPELERSNR FROM SPELERS WHERE (SELECT MIN(BEDRAG) FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR) = (SELECT MAX(BEDRAG) FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR) Voorbeeld 9.29: SELECT SUM(BEDRAG) FROM BOETES WHERE SPELERSNR IN (SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Rijswijk') ; SELECT SUM(DISTINCT BEDRAG) FROM BOETES WHERE SPELERSNR IN (SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Rijswijk') Voorbeeld 9.30: SELECT AVG(BEDRAG) FROM BOETES WHERE SPELERSNR = 44 Voorbeeld 9.31: SELECT DISTINCT SPELERSNR FROM BOETES WHERE BEDRAG > (SELECT AVG(BEDRAG) FROM BOETES) Voorbeeld 9.32: SELECT AVG(DISTINCT BEDRAG) FROM BOETES Voorbeeld 9.33: SELECT AVG(LENGTH(RTRIM(NAAM))), MAX(LENGTH(RTRIM(NAAM))) FROM SPELERS Voorbeeld 9.34: SELECT BETALINGSNR, BEDRAG, ABS(BEDRAG - (SELECT AVG(BEDRAG) FROM BOETES)) AS VERSCHIL FROM BOETES AS B Voorbeeld 9.35: SELECT VARIANCE(BEDRAG) FROM BOETES WHERE SPELERSNR = 44 ; SELECT BEDRAG – (SELECT AVG(BEDRAG) FROM BOETES WHERE SPELERSNR = 44) FROM BOETES WHERE SPELERSNR = 44 ; SELECT SUM(P) FROM (SELECT POWER(BEDRAG - (SELECT AVG(BEDRAG) FROM BOETES WHERE SPELERSNR = 44),2) AS P FROM BOETES WHERE SPELERSNR = 44) AS POWERS ; SELECT SUM(P) / (SELECT COUNT(*) FROM BOETES WHERE SPELERSNR = 44) FROM (SELECT POWER(BEDRAG - (SELECT AVG(BEDRAG) FROM BOETES WHERE SPELERSNR = 44),2) AS P FROM BOETES WHERE SPELERSNR = 44) AS POWERS Voorbeeld 9.36: SELECT STDDEV(BEDRAG) FROM BOETES WHERE SPELERSNR = 44 Voorbeeld 9.37: SELECT VAR_SAMP(BEDRAG), VARIANCE(BEDRAG) FROM BOETES Voorbeeld 9.38: SELECT STDDEV_SAMP(BEDRAG), STDDEV(BEDRAG) FROM BOETES Voorbeeld 9.39: CREATE TABLE BITS (BIN_VALUE INTEGER NOT NULL PRIMARY KEY) ; INSERT INTO BITS VALUES (CONV(001,2,16)), (CONV(011,2,16)), (CONV(111,2,16)) Voorbeeld 9.40: SELECT BIN(BIT_OR(BIN_VALUE)) FROM BITS Antwoord 9.4: SELECT COUNT(*), MAX(BEDRAG) FROM BOETES Antwoord 9.5: SELECT COUNT(DISTINCT FUNCTIE) FROM BESTUURSLEDEN Antwoord 9.6: SELECT COUNT(BONDSNR) FROM SPELERS WHERE PLAATS = 'Rijswijk' Antwoord 9.7: SELECT TEAMNR, DIVISIE, (SELECT COUNT(*) FROM WEDSTRIJDEN WHERE TEAMS.TEAMNR = WEDSTRIJDEN.TEAMNR) FROM TEAMS Antwoord 9.8: SELECT SPELERSNR, NAAM, (SELECT COUNT(*) FROM WEDSTRIJDEN WHERE WEDSTRIJDEN.SPELERSNR = SPELERS.SPELERSNR AND GEWONNEN > VERLOREN) FROM SPELERS Antwoord 9.9: SELECT 'Aantal spelers' AS TABELLEN, (SELECT COUNT(*) FROM SPELERS) AS AANTAL UNION SELECT 'Aantal teams', (SELECT COUNT(*) FROM TEAMS) UNION SELECT 'Aantal wedstrijden', (SELECT COUNT(*) FROM WEDSTRIJDEN) Antwoord 9.10: SELECT MIN(GEWONNEN) FROM WEDSTRIJDEN WHERE GEWONNEN > VERLOREN Antwoord 9.11: SELECT SPELERSNR, (SELECT MAX(BEDRAG) FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR) - (SELECT MIN(BEDRAG) FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR) FROM SPELERS Antwoord 9.12: SELECT SPELERSNR, GEB_DATUM FROM SPELERS WHERE YEAR(GEB_DATUM) = (SELECT MAX(YEAR(GEB_DATUM)) FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR = 1)) Antwoord 9.14: SELECT AVG(BEDRAG) FROM BOETES WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR = 1) Antwoord 9.15: SELECT SPELERSNR, NAAM FROM SPELERS WHERE (SELECT SUM(BEDRAG) FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR) > 100 Antwoord 9.16: SELECT NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE GEWONNEN > (SELECT SUM(GEWONNEN) FROM WEDSTRIJDEN WHERE SPELERSNR = 27)) Antwoord 9.17: SELECT SPELERSNR, NAAM FROM SPELERS WHERE (SELECT SUM(GEWONNEN) FROM WEDSTRIJDEN WHERE WEDSTRIJDEN.SPELERSNR = SPELERS.SPELERSNR) = 8 Antwoord 9.18: SELECT SPELERSNR, NAAM FROM SPELERS WHERE LENGTH(RTRIM(NAAM)) > (SELECT AVG(LENGTH(RTRIM(NAAM))) FROM SPELERS) Antwoord 9.19: SELECT SPELERSNR, (SELECT MAX(BEDRAG) FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR) - (SELECT AVG(BEDRAG) FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR) FROM SPELERS Antwoord 9.20: SELECT SPELERSNR, REPEAT('*', CAST((SELECT AVG(BEDRAG) FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR)/10 AS SIGNED INTEGER)) FROM SPELERS Antwoord 9.21: SELECT SQRT(SUM(P) / (SELECT COUNT(*) FROM BOETES WHERE SPELERSNR = 44)) FROM (SELECT POWER(BEDRAG - (SELECT AVG(BEDRAG) FROM BOETES WHERE SPELERSNR = 44),2) AS P FROM BOETES WHERE SPELERSNR = 44) AS POWERS Voorbeeld 10.1: SELECT PLAATS FROM SPELERS GROUP BY PLAATS Voorbeeld 10.2: SELECT PLAATS, COUNT(*) FROM SPELERS GROUP BY PLAATS Voorbeeld 10.3: SELECT TEAMNR, COUNT(*), SUM(GEWONNEN) FROM WEDSTRIJDEN GROUP BY TEAMNR Voorbeeld 10.4: SELECT TEAMNR, COUNT(*) FROM WEDSTRIJDEN WHERE TEAMNR IN (SELECT TEAMNR FROM TEAMS INNER JOIN SPELERS ON TEAMS.SPELERSNR = SPELERS.SPELERSNR WHERE PLAATS = 'Zoetermeer') GROUP BY TEAMNR Voorbeeld 10.5: SELECT BEDRAG, COUNT(*), SUM(BEDRAG) FROM BOETES GROUP BY BEDRAG Voorbeeld 10.6: SELECT TEAMNR, SPELERSNR FROM WEDSTRIJDEN GROUP BY TEAMNR, SPELERSNR ; SELECT TEAMNR, SPELERSNR FROM WEDSTRIJDEN GROUP BY SPELERSNR, TEAMNR ; SELECT TEAMNR, SPELERSNR, SUM(GEWONNEN), COUNT(*), MIN(VERLOREN) FROM WEDSTRIJDEN GROUP BY TEAMNR, SPELERSNR Voorbeeld 10.7: SELECT S.SPELERSNR, NAAM, SUM(BEDRAG) FROM SPELERS AS S INNER JOIN BOETES AS BT ON S.SPELERSNR = BT.SPELERSNR GROUP BY S.SPELERSNR, NAAM Voorbeeld 10.8: SELECT YEAR(DATUM) AS JAARTAL, COUNT(*) FROM BOETES GROUP BY YEAR(DATUM) Voorbeeld 10.9: SELECT TRUNCATE(SPELERSNR/25,0) AS SPELERSGROEP, COUNT(*), MAX(SPELERSNR) FROM SPELERS GROUP BY TRUNCATE(SPELERSNR/25,0) Voorbeeld 10.10: SELECT BONDSNR FROM SPELERS GROUP BY BONDSNR Voorbeeld 10.11: SELECT TEAMNR, COUNT(*) FROM WEDSTRIJDEN GROUP BY TEAMNR ORDER BY TEAMNR DESC ; SELECT TEAMNR, COUNT(*) FROM WEDSTRIJDEN GROUP BY TEAMNR DESC Voorbeeld 10.12: SELECT CAST(BEDRAG * 100 AS SIGNED INTEGER) AS BEDRAG_IN_CENTEN FROM BOETES GROUP BY BEDRAG Voorbeeld 10.13: SELECT TEAMNR, GROUP_CONCAT(SPELERSNR) FROM WEDSTRIJDEN GROUP BY TEAMNR Voorbeeld 10.14: SELECT TEAMNR, GROUP_CONCAT(TEAMNR) FROM WEDSTRIJDEN GROUP BY TEAMNR Voorbeeld 10.15: SELECT GROUP_CONCAT(BETALINGNR) FROM BOETES Voorbeeld 10.16: SET @@GROUP_CONCAT_MAX_LEN=7 ; SELECT TEAMNR, GROUP_CONCAT(TEAMNR) FROM WEDSTRIJDEN GROUP BY TEAMNR Voorbeeld 10.17: SELECT AVG(TOTAAL) FROM (SELECT SPELERSNR, SUM(BEDRAG) AS TOTAAL FROM BOETES GROUP BY SPELERSNR) AS TOTALEN WHERE SPELERSNR IN (SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Den Haag' OR PLAATS = 'Rijswijk') Voorbeeld 10.18: SELECT SPELERS.SPELERSNR, NAAM, AANTALBOETES, AANTALTEAMS FROM SPELERS, (SELECT SPELERSNR, COUNT(*) AS AANTALBOETES FROM BOETES GROUP BY SPELERSNR) AS AANTAL_BOETES, (SELECT SPELERSNR, COUNT(*) AS AANTALTEAMS FROM TEAMS GROUP BY SPELERSNR) AS AANTAL_TEAMS WHERE SPELERS.SPELERSNR = AANTAL_BOETES.SPELERSNR AND SPELERS.SPELERSNR = AANTAL_TEAMS.SPELERSNR ; SELECT SPELERS.SPELERSNR, NAAM, (SELECT COUNT(*) FROM BOETES WHERE SPELERS.SPELERSNR = BOETES.SPELERSNR) AS AANTALBOETES, (SELECT COUNT(*) FROM TEAMS WHERE SPELERS.SPELERSNR = TEAMS.SPELERSNR) AS AANTALTEAMS FROM SPELERS Voorbeeld 10.19: SELECT DISTINCT W.SPELERSNR, AANTALB FROM WEDSTRIJDEN AS W LEFT OUTER JOIN (SELECT SPELERSNR, COUNT(*) AS AANTALB FROM BOETES GROUP BY SPELERSNR) AS AB ON W.SPELERSNR = AB.SPELERSNR Voorbeeld 10.20: SELECT GROEPEN.GROEP, SUM(B.BEDRAG) FROM BOETES AS B, (SELECT 1 AS GROEP, '1980-01-01' AS START, '1981-06-30' AS EINDE UNION SELECT 2, '1981-07-01', '1982-12-31' UNION SELECT 3, '1983-01-01', '1984-12-31') AS GROEPEN WHERE B.DATUM BETWEEN START AND EINDE GROUP BY GROEPEN.GROEP ORDER BY GROEPEN.GROEP Voorbeeld 10.21: SELECT B1.BETALINGSNR, B1.BEDRAG, SUM(B2.BEDRAG) FROM BOETES AS B1, BOETES AS B2 WHERE B1.BETALINGSNR >= B2.BETALINGSNR GROUP BY B1.BETALINGSNR, B1.BEDRAG ORDER BY B1.BETALINGSNR Voorbeeld 10.22: SELECT B1.BETALINGSNR, B1.BEDRAG, (B1.BEDRAG * 100) / SUM(B2.BEDRAG) FROM BOETES AS B1, BOETES AS B2 GROUP BY B1.BETALINGSNR, B1.BEDRAG ORDER BY B1.BETALINGSNR Voorbeeld 10.23: SELECT SPELERSNR, SUM(BEDRAG) FROM BOETES GROUP BY SPELERSNR UNION SELECT NULL, SUM(BEDRAG) FROM BOETES ; SELECT SPELERSNR, SUM(BEDRAG) FROM BOETES GROUP BY SPELERSNR WITH ROLLUP Voorbeeld 10.24: SELECT GESLACHT, PLAATS, COUNT(*) FROM SPELERS GROUP BY GESLACHT, PLAATS WITH ROLLUP Antwoord 10.1: SELECT JAARTOE FROM SPELERS GROUP BY JAARTOE Antwoord 10.2: SELECT JAARTOE, COUNT(*) FROM SPELERS GROUP BY JAARTOE Antwoord 10.3: SELECT SPELERSNR, AVG(BEDRAG), COUNT(*) FROM BOETES GROUP BY SPELERSNR Antwoord 10.4: SELECT TEAMNR, COUNT(*), SUM(GEWONNEN) FROM WEDSTRIJDEN WHERE TEAMNR IN (SELECT TEAMNR FROM TEAMS WHERE DIVISIE = 'ere') GROUP BY TEAMNR Antwoord 10.5: SELECT GEWONNEN, VERLOREN, COUNT(*) FROM WEDSTRIJDEN WHERE GEWONNEN > VERLOREN GROUP BY GEWONNEN, VERLOREN ORDER BY GEWONNEN, VERLOREN Antwoord 10.6: SELECT S.PLAATS, T.DIVISIE, SUM(GEWONNEN) FROM (WEDSTRIJDEN AS W INNER JOIN SPELERS AS S ON W.SPELERSNR = S.SPELERSNR) INNER JOIN TEAMS AS T ON W.TEAMNR = T.TEAMNR GROUP BY S.PLAATS, T.DIVISIE ORDER BY S.PLAATS Antwoord 10.7: SELECT NAAM, VOORLETTERS, COUNT(*) FROM SPELERS AS S INNER JOIN BOETES AS BT ON S.SPELERSNR = BT.SPELERSNR WHERE S.PLAATS = 'Rijswijk' GROUP BY S.SPELERSNR, NAAM, VOORLETTERS Antwoord 10.8: SELECT T.TEAMNR, DIVISIE, SUM(GEWONNEN) FROM TEAMS AS T, WEDSTRIJDEN AS W WHERE T.TEAMNR = W.TEAMNR GROUP BY T.TEAMNR, DIVISIE Antwoord 10.9: SELECT LENGTH(RTRIM(NAAM)), COUNT(*) FROM SPELERS GROUP BY LENGTH(RTRIM(NAAM)) Antwoord 10.10: SELECT ABS(GEWONNEN - VERLOREN), COUNT(*) FROM WEDSTRIJDEN GROUP BY ABS(GEWONNEN - VERLOREN) Antwoord 10.11: SELECT YEAR(BEGIN_DATUM), MONTH(BEGIN_DATUM), COUNT(*) FROM BESTUURSLEDEN GROUP BY YEAR(BEGIN_DATUM), MONTH(BEGIN_DATUM) ORDER BY YEAR(BEGIN_DATUM), MONTH(BEGIN_DATUM) Antwoord 10.14: SELECT AVG(AANTALLEN) FROM (SELECT COUNT(*) AS AANTALLEN FROM SPELERS GROUP BY PLAATS) AS PLAATSEN Antwoord 10.15: SELECT TEAMS.TEAMNR, DIVISIE, AANTAL_SPELERS FROM TEAMS LEFT OUTER JOIN (SELECT TEAMNR, COUNT(*) AS AANTAL_SPELERS FROM WEDSTRIJDEN GROUP BY TEAMNR) AS W ON (TEAMS.TEAMNR = W.TEAMNR) Antwoord 10.16: SELECT SPELERS.SPELERSNR, NAAM, TOTAALBEDRAG, AANTAL_TEAMS FROM (SPELERS LEFT OUTER JOIN (SELECT SPELERSNR, SUM(BEDRAG) AS TOTAALBEDRAG FROM BOETES GROUP BY SPELERSNR) AS TOTALEN ON (SPELERS.SPELERSNR = TOTALEN.SPELERSNR)) LEFT OUTER JOIN (SELECT SPELERSNR, COUNT(*) AS AANTAL_TEAMS FROM TEAMS WHERE DIVISIE = 'ere' GROUP BY SPELERSNR) AS AANTALLEN ON (SPELERS.SPELERSNR = AANTALLEN.SPELERSNR) Antwoord 10.17: SELECT TEAMNR, COUNT(DISTINCT SPELERSNR) FROM WEDSTRIJDEN WHERE TEAMNR IN (SELECT TEAMNR FROM SPELERS AS S INNER JOIN TEAMS AS T ON S.SPELERSNR = T.SPELERSNR AND PLAATS = 'Den Haag') AND GEWONNEN > VERLOREN GROUP BY TEAMNR Antwoord 10.18: SELECT SPELERSNR, NAAM, JAARTOE - GEMIDDELDE FROM SPELERS, (SELECT AVG(JAARTOE) AS GEMIDDELDE FROM SPELERS) AS T Antwoord 10.19: SELECT SPELERSNR, NAAM, JAARTOE - GEMIDDELDE FROM SPELERS, (SELECT PLAATS, AVG(JAARTOE) AS GEMIDDELDE FROM SPELERS GROUP BY PLAATS) AS PLAATSEN WHERE SPELERS.PLAATS = PLAATSEN.PLAATS Antwoord 10.20: SELECT TEAMNR, COUNT(*) FROM WEDSTRIJDEN GROUP BY TEAMNR WITH ROLLUP Antwoord 10.21: SELECT S.NAAM, T.DIVISIE, SUM(GEWONNEN) FROM (WEDSTRIJDEN AS W INNER JOIN SPELERS AS S ON W.SPELERSNR = S.SPELERSNR) INNER JOIN TEAMS AS T ON W.TEAMNR = T.TEAMNR GROUP BY S.NAAM, T.DIVISIE WITH ROLLUP Voorbeeld 11.1: SELECT SPELERSNR FROM BOETES GROUP BY SPELERSNR HAVING COUNT(*) > 1 Voorbeeld 11.2: SELECT SPELERSNR FROM BOETES GROUP BY SPELERSNR HAVING MAX(YEAR(DATUM)) = 1984 Voorbeeld 11.3: SELECT SPELERSNR, SUM(BEDRAG) FROM BOETES GROUP BY SPELERSNR HAVING SUM(BEDRAG) > 150 Voorbeeld 11.4: SELECT SPELERSNR, SUM(BEDRAG) FROM BOETES WHERE SPELERSNR IN (SELECT SPELERSNR FROM TEAMS) GROUP BY SPELERSNR HAVING SUM(BEDRAG) > 80 Voorbeeld 11.5: SELECT SPELERSNR, SUM(BEDRAG) FROM BOETES GROUP BY SPELERSNR HAVING SUM(BEDRAG) >= ALL (SELECT SUM(BEDRAG) FROM BOETES GROUP BY SPELERSNR) Voorbeeld 11.6: SELECT SUM(BEDRAG) FROM BOETES HAVING SUM(BEDRAG) >= 250 Voorbeeld 11.7: SELECT GROUP_CONCAT(SPELERSNR) AS LIJST FROM WEDSTRIJDEN HAVING TRUE Antwoord 11.1: SELECT PLAATS FROM SPELERS GROUP BY PLAATS HAVING COUNT(*) > 4 Antwoord 11.2: SELECT SPELERSNR FROM BOETES GROUP BY SPELERSNR HAVING SUM(BEDRAG) > 150 Antwoord 11.3: SELECT NAAM, VOORLETTERS, COUNT(*) FROM SPELERS INNER JOIN BOETES ON SPELERS.SPELERSNR = BOETES.SPELERSNR GROUP BY SPELERS.SPELERSNR, NAAM, VOORLETTERS HAVING COUNT(*) > 1 Antwoord 11.4: SELECT TEAMNR, COUNT(*) FROM WEDSTRIJDEN GROUP BY TEAMNR HAVING COUNT(*) >= ALL (SELECT COUNT(*) FROM WEDSTRIJDEN GROUP BY TEAMNR) Antwoord 11.5: SELECT TEAMNR, DIVISIE FROM TEAMS WHERE TEAMNR IN (SELECT TEAMNR FROM WEDSTRIJDEN GROUP BY TEAMNR HAVING COUNT(DISTINCT SPELERSNR) > 4) Antwoord 11.6: SELECT NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES WHERE BEDRAG > 40 GROUP BY SPELERSNR HAVING COUNT(*) >= 2) Antwoord 11.7: SELECT NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES GROUP BY SPELERSNR HAVING SUM(BEDRAG) >= ALL (SELECT SUM(BEDRAG) FROM BOETES GROUP BY SPELERSNR)) Antwoord 11.8: SELECT SPELERSNR FROM BOETES WHERE SPELERSNR <> 104 GROUP BY SPELERSNR HAVING SUM(BEDRAG) = (SELECT SUM(BEDRAG) * 2 FROM BOETES WHERE SPELERSNR = 104) Antwoord 11.9: SELECT SPELERSNR FROM BOETES WHERE SPELERSNR <> 6 GROUP BY SPELERSNR HAVING COUNT(*) = (SELECT COUNT(*) FROM BOETES WHERE SPELERSNR = 6) Antwoord 11.10: SELECT S.SPELERSNR, S.NAAM FROM SPELERS AS S, WEDSTRIJDEN AS W1 WHERE S.SPELERSNR = W1.SPELERSNR GROUP BY S.SPELERSNR, S.NAAM HAVING SUM(GEWONNEN) > (SELECT SUM(VERLOREN) FROM WEDSTRIJDEN AS W2 WHERE W2.SPELERSNR = S.SPELERSNR GROUP BY W2.SPELERSNR) Voorbeeld 12.1: SELECT BETALINGSNR, SPELERSNR FROM BOETES ORDER BY SPELERSNR Voorbeeld 12.2: SELECT SPELERSNR, BEDRAG FROM BOETES ORDER BY SPELERSNR, BEDRAG Voorbeeld 12.3: SELECT BEDRAG FROM BOETES ORDER BY SPELERSNR, BEDRAG Voorbeeld 12.4: SELECT NAAM, VOORLETTERS, SPELERSNR FROM SPELERS ORDER BY SUBSTR(NAAM, 1, 1) Voorbeeld 12.5: SELECT SPELERSNR, BEDRAG FROM BOETES ORDER BY ABS(BEDRAG - (SELECT AVG(BEDRAG) FROM BOETES)) Voorbeeld 12.6: SELECT SPELERSNR, BEDRAG FROM BOETES AS B1 ORDER BY (SELECT AVG(BEDRAG) FROM BOETES AS B2 WHERE B1.SPELERSNR = B2.SPELERSNR) Voorbeeld 12.7: SELECT SPELERSNR, SUM(BEDRAG) FROM BOETES GROUP BY SPELERSNR ORDER BY 2 Voorbeeld 12.8: SELECT SPELERSNR, NAAM, (SELECT SUM(BEDRAG) FROM BOETES AS B WHERE B.SPELERSNR=S.SPELERSNR) FROM SPELERS AS S ORDER BY 3 ; SELECT SPELERSNR, NAAM, (SELECT SUM(BEDRAG) FROM BOETES AS B WHERE B.SPELERSNR=S.SPELERSNR) AS TOTAAL FROM SPELERS AS S ORDER BY TOTAAL Voorbeeld 12.9: SELECT SPELERSNR, BEDRAG FROM BOETES ORDER BY SPELERSNR DESC, BEDRAG ASC Voorbeeld 12.10: CREATE TABLE CODES (CODE CHAR(4) NOT NULL) ; INSERT INTO CODES VALUES ('abc') INSERT INTO CODES VALUES ('ABC') INSERT INTO CODES VALUES ('-abc') INSERT INTO CODES VALUES ('a bc') INSERT INTO CODES VALUES ('ab') INSERT INTO CODES VALUES ('9abc') ; SELECT * FROM CODES ORDER BY CODE Voorbeeld 12.11: SELECT DISTINCT BONDSNR FROM SPELERS ORDER BY BONDSNR DESC Antwoord 12.3: SELECT SPELERSNR, TEAMNR, GEWONNEN - VERLOREN FROM WEDSTRIJDEN ORDER BY 3 ASC Voorbeeld 13.1: SELECT MAX(SPELERSNR) FROM SPELERS ; SELECT SPELERSNR, NAAM FROM SPELERS AS S1 WHERE 4 > (SELECT COUNT(*) FROM SPELERS AS S2 WHERE S1.SPELERSNR < S2.SPELERSNR) ORDER BY SPELERSNR DESC ; SELECT SPELERSNR, NAAM FROM SPELERS ORDER BY SPELERSNR DESC LIMIT 4 Voorbeeld 13.2: SELECT BONDSNR, SPELERSNR, NAAM FROM SPELERS ORDER BY BONDSNR ASC LIMIT 5 Voorbeeld 13.3: SELECT SPELERSNR, COUNT(*) AS AANTAL FROM WEDSTRIJDEN WHERE GEWONNEN > VERLOREN GROUP BY SPELERSNR ORDER BY AANTAL DESC LIMIT 3 Voorbeeld 13.4: SELECT SPELERSNR, COUNT(*) AS AANTAL FROM WEDSTRIJDEN WHERE GEWONNEN > VERLOREN GROUP BY SPELERSNR ORDER BY AANTAL DESC, SPELERSNR DESC LIMIT 3 Voorbeeld 13.5: SELECT * FROM (SELECT SPELERSNR, COUNT(*) AS AANTAL FROM WEDSTRIJDEN WHERE GEWONNEN > VERLOREN GROUP BY SPELERSNR ORDER BY AANTAL DESC, SPELERSNR DESC LIMIT 3) AS T ORDER BY 1 Voorbeeld 13.6: SELECT AVG(BEDRAG) FROM (SELECT BEDRAG FROM BOETES ORDER BY BEDRAG LIMIT 4) AS T Voorbeeld 13.7: SELECT MIN(BEDRAG) FROM (SELECT BEDRAG FROM BOETES ORDER BY BEDRAG DESC LIMIT 3) AS T Voorbeeld 13.8: SELECT DISTINCT BEDRAG FROM BOETES ORDER BY BEDRAG DESC LIMIT 3 Voorbeeld 13.9: SELECT SPELERSNR FROM (SELECT SPELERSNR FROM SPELERS WHERE BONDSNR IS NOT NULL ORDER BY BONDSNR DESC LIMIT 6) AS T ORDER BY SPELERSNR LIMIT 3 Voorbeeld 13.10: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM (SELECT SPELERSNR, SUM(BEDRAG) AS TOTAAL FROM BOETES GROUP BY SPELERSNR ORDER BY TOTAAL DESC LIMIT 3) AS T) Voorbeeld 13.11: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES) AND SPELERSNR NOT IN (SELECT SPELERSNR FROM BOETES ORDER BY BEDRAG DESC LIMIT 2) AND SPELERSNR NOT IN (SELECT SPELERSNR FROM BOETES ORDER BY BEDRAG ASC LIMIT 2) ; SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES WHERE SPELERSNR NOT IN (SELECT SPELERSNR FROM BOETES ORDER BY BEDRAG DESC LIMIT 2) AND SPELERSNR NOT IN (SELECT SPELERSNR FROM BOETES ORDER BY BEDRAG ASC LIMIT 2)) Voorbeeld 13.12: SELECT SPELERSNR, NAAM FROM SPELERS ORDER BY SPELERSNR ASC LIMIT 5 OFFSET 3 Voorbeeld 13.13: SELECT SQL_CALC_FOUND_ROWS BETALINGSNR FROM BOETES LIMIT 5 ; SELECT FOUND_ROWS() Antwoord 13.1: SELECT BETALINGSNR, BEDRAG, DATUM FROM BOETES ORDER BY BEDRAG DESC, DATUM DESC LIMIT 4 Antwoord 13.2: (SELECT WEDSTRIJDNR FROM WEDSTRIJDEN ORDER BY WEDSTRIJDNR ASC LIMIT 2) UNION (SELECT WEDSTRIJDNR FROM WEDSTRIJDEN ORDER BY WEDSTRIJDNR DESC LIMIT 2) Antwoord 13.3: SELECT SPELERSNR, NAAM FROM (SELECT SPELERSNR, NAAM FROM SPELERS ORDER BY SPELERSNR ASC LIMIT 10) AS S10 ORDER BY NAAM DESC LIMIT 5 Antwoord 13.4: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM (SELECT SPELERSNR, COUNT(*) AS AANTAL FROM WEDSTRIJDEN WHERE GEWONNEN > VERLOREN GROUP BY SPELERSNR) AS WINNAARS ORDER BY AANTAL DESC, SPELERSNR ASC LIMIT 2) Antwoord 13.5: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT BOETES.SPELERSNR FROM BOETES INNER JOIN SPELERS ON BOETES.SPELERSNR = SPELERS.SPELERSNR ORDER BY BEDRAG DESC, NAAM ASC LIMIT 4) Antwoord 13.6: SELECT BETALINGSNR, BEDRAG FROM BOETES ORDER BY BEDRAG DESC LIMIT 1 OFFSET 2 Voorbeeld 14.1: SELECT SPELERSNR, PLAATS FROM SPELERS WHERE PLAATS = 'Rijswijk' UNION SELECT SPELERSNR, PLAATS FROM SPELERS WHERE PLAATS = 'Rotterdam' ; SELECT SPELERSNR, PLAATS FROM SPELERS WHERE PLAATS = 'Rijswijk' OR PLAATS = 'Rotterdam' Voorbeeld 14.2: SELECT GEB_DATUM AS DATUMS FROM SPELERS UNION SELECT DATUM FROM BOETES Voorbeeld 14.3: SELECT SPELERSNR FROM BOETES UNION SELECT SPELERSNR FROM TEAMS Voorbeeld 14.4: SELECT SPELERSNR FROM BOETES UNION SELECT SPELERSNR FROM TEAMS UNION SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Den Haag' Voorbeeld 14.5: SELECT CAST(TEAMNR AS CHAR(4)) AS TEAMNR, CAST(SPELERSNR AS CHAR(4)) AS SPELERSNR, SUM(GEWONNEN + VERLOREN) AS TOTAAL FROM WEDSTRIJDEN GROUP BY TEAMNR, SPELERSNR UNION SELECT CAST(TEAMNR AS CHAR(4)), 'subtotaal', SUM(GEWONNEN + VERLOREN) FROM WEDSTRIJDEN GROUP BY TEAMNR UNION SELECT 'totaal', 'totaal', SUM(GEWONNEN + VERLOREN) FROM WEDSTRIJDEN ORDER BY TEAMNR, SPELERSNR Voorbeeld 14.6: SELECT SPELERSNR FROM BOETES UNION ALL SELECT SPELERSNR FROM TEAMS Antwoord 14.1: SELECT SPELERSNR FROM BESTUURSLEDEN UNION SELECT SPELERSNR FROM BOETES GROUP BY SPELERSNR HAVING COUNT(*) >= 2 Antwoord 14.2: SELECT MAX(DATUM) FROM (SELECT MAX(GEB_DATUM) AS DATUM FROM SPELERS UNION SELECT MAX(DATUM) FROM BOETES) AS TWEEDATUMS Antwoord 14.5: SELECT SUM(AANTAL) FROM (SELECT COUNT(*) AS AANTAL FROM SPELERS UNION ALL SELECT COUNT(*) AS AANTAL FROM TEAMS) AS AANTALLEN Antwoord 14.6: SELECT POWER(CIJFER,2) FROM (SELECT 0 AS CIJFER UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS CIJFERS1 UNION ALL SELECT POWER(CIJFER,3) FROM (SELECT 0 AS CIJFER UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) AS CIJFERS2 ORDER BY 1 Voorbeeld 15.1: SET @PI = 3.141592654 Voorbeeld 15.2: SELECT @PI Voorbeeld 15.3: SELECT NAAM, PLAATS, POSTCODE FROM SPELERS WHERE SPELERSNR < @PI Voorbeeld 15.4: SET @ABC = 5, @DEF = 'Rijswijk', @GHI = DATE('2004-01-01') Voorbeeld 15.5: SET @PI = CAST(22 AS BINARY)/7 Voorbeeld 15.6: SET @ANR = (SELECT SPELERSNR FROM TEAMS WHERE TEAMNR = 1) Voorbeeld 15.7: SELECT @SPELERSNR := 7 Voorbeeld 15.8: SELECT @NAAM := 'Johnson', @PLAATS := 'Rijswijk', @POSTCODE := '1234AB' Voorbeeld 15.9: SELECT @NAAM := NAAM, @PLAATS := PLAATS, @POSTCODE := POSTCODE FROM SPELERS WHERE SPELERSNR = 2 Voorbeeld 15.10: SELECT @BOETESTOTAAL := SUM(BEDRAG), @AANTALBOETES := COUNT(*) FROM BOETES Voorbeeld 15.11: SELECT @SPELERSNR := SPELERSNR FROM SPELERS ORDER BY SPELERSNR DESC ; SELECT @SPELERSNR ; SELECT @SNR7 := 7 FROM SPELERS WHERE SPELERSNR < @SNR7 Voorbeeld 15.12: SET @ANR = (SELECT SPELERSNR FROM TEAMS WHERE TEAMNR = 1) ; SELECT NAAM FROM SPELERS WHERE SPELERSNR = @ANR Voorbeeld 15.13: SET @VAR = (((3/7)*100)/124)+3 ; SELECT * FROM BOETES WHERE BETALINGSNR < @VAR AND SPELERSNR > @VAR Voorbeeld 15.14: CREATE TABLE VARIABELEN (VARNAME CHAR(30) NOT NULL PRIMARY KEY, VARVALUE CHAR(30) NOT NULL) ; SET @VAR1 = 100, @VAR2 = 'John' ; INSERT INTO VARIABELEN VALUES ('VAR1', @VAR1) ; INSERT INTO VARIABELEN VALUES ('VAR2', @VAR2) ; SELECT @VAR1 := VARVALUE FROM VARIABELEN WHERE VARNAME = 'VAR1' ; SELECT @VAR2 := VARVALUE FROM VARIABELEN WHERE VARNAME = 'VAR2' ; SELECT @VAR1, @VAR2 Voorbeeld 15.15: DO CURRENT_DATE + INTERVAL 2 YEAR Antwoord 15.1: SET @VANDAAG = CURRENT_DATE ; SELECT @VANDAAG := CURRENT_DATE Antwoord 15.2: SELECT * FROM BOETES WHERE DATUM < @VANDAAG - INTERVAL 5 YEAR Antwoord 15.3: SELECT @VAR := SUM(BEDRAG) FROM BOETES Voorbeeld 16.1: HANDLER BOETES OPEN ; HANDLER BOETES READ FIRST ; HANDLER BOETES READ NEXT ; HANDLER BOETES CLOSE Voorbeeld 16.2: CREATE INDEX BOETES_BEDRAG ON BOETES (BEDRAG) Voorbeeld 16.3: HANDLER BOETES OPEN AS B ; HANDLER B READ BOETES_BEDRAG FIRST ; HANDLER B READ BOETES_BEDRAG NEXT Voorbeeld 16.4: HANDLER BOETES OPEN AS B ; HANDLER B READ BOETES_BEDRAG FIRST WHERE SPELERSNR > 100 ; HANDLER B READ BOETES_BEDRAG NEXT WHERE SPELERSNR > 100 Voorbeeld 16.5: HANDLER BOETES OPEN AS B ; HANDLER B READ BOETES_BEDRAG FIRST LIMIT 3 Voorbeeld 16.6: HANDLER BOETES OPEN AS B ; HANDLER B READ BOETES_BEDRAG = (30.00) ; HANDLER B READ BOETES_BEDRAG NEXT Voorbeeld 16.7: CREATE INDEX BEDRAG_SPELERSNR ON BOETES (BEDRAG, SPELERSNR) Voorbeeld 16.8: HANDLER BOETES OPEN AS B ; HANDLER B READ BEDRAG_SPELERSNR > (30.00, 44) LIMIT 100 Antwoord 16.1: HANDLER WEDSTRIJDEN OPEN AS W1 ; HANDLER W1 READ FIRST ; HANDLER W1 READ NEXT ; HANDLER W1 CLOSE Antwoord 16.2: HANDLER WEDSTRIJDEN OPEN AS W2 ; HANDLER W2 READ `PRIMARY` FIRST ; HANDLER W2 READ `PRIMARY` NEXT ; HANDLER W2 CLOSE Antwoord 16.3: HANDLER WEDSTRIJDEN OPEN AS W3 ; HANDLER W3 READ `PRIMARY` LAST WHERE SPELERSNR IN (6, 104, 112) ; HANDLER W3 READ `PRIMARY` PREV WHERE SPELERSNR IN (6, 104, 112) ; HANDLER W3 CLOSE Voorbeeld 17.1: INSERT INTO TEAMS (TEAMNR, SPELERSNR, DIVISIE) VALUES (3, 100, 'derde') ; INSERT INTO TEAMS VALUES (3, 100, 'derde') ; INSERT INTO TEAMS (SPELERSNR, DIVISIE, TEAMNR) VALUES (100, 'derde', 3) ; INSERT INTO TEAMS (TEAMNR, DIVISIE) VALUES (3, 'derde') Voorbeeld 17.2: INSERT INTO SPELERS (SPELERSNR, NAAM, VOORLETTERS, GESLACHT, JAARTOE, STRAAT, PLAATS) VALUES (611, 'Jones', 'GG', 'M', 1977, 'Herenlaan', 'Den Haag') ; INSERT INTO SPELERS (SPELERSNR, NAAM, VOORLETTERS, GEB_DATUM, GESLACHT, JAARTOE, STRAAT, HUISNR, POSTCODE, PLAATS, TELEFOON, BONDSNR) VALUES (611, 'Jones', 'GG', NULL, 'M', 1977, 'Herenlaan', NULL, NULL, 'Den Haag', NULL, NULL) Voorbeeld 17.3: INSERT INTO TEAMS (TEAMNR, SPELERSNR, DIVISIE) VALUES (6, 100, 'derde'), (7, 27, 'vierde'), (8, 39, 'vierde'), (9, 112, 'zesde') Voorbeeld 17.4: CREATE TABLE TOTALEN (AANTALSPELERS INTEGER NOT NULL, SOMBOETES DECIMAL(9,2) NOT NULL) ; INSERT INTO TOTALEN (AANTALSPELERS, SOMBOETES) VALUES ((SELECT COUNT(*) FROM SPELERS), (SELECT SUM(BEDRAG) FROM BOETES)) ; INSERT INTO TEAMS (TEAMNR, SPELERSNR, DIVISIE) VALUES (3, 100, 'derde') ; INSERT INTO TEAMS SET TEAMNR = 3, SPELERSNR = 100, DIVISIE = 'derde' Voorbeeld 17.5: INSERT IGNORE INTO TEAMS VALUES (1, 39, 'tweede') Voorbeeld 17.6: INSERT INTO TEAMS VALUES (1, 39, 'tweede') ON DUPLICATE KEY UPDATE SPELERSNR = 39, DIVISIE='tweede' ; INSERT INTO TEAMS VALUES (1, 39, 'tweede') Voorbeeld 17.7: CREATE TABLE RECREANTEN (SPELERSNR SMALLINT NOT NULL, NAAM CHAR(15) NOT NULL, PLAATS CHAR(10) NOT NULL, TELEFOON CHAR(13), PRIMARY KEY (SPELERSNR)) ; INSERT INTO RECREANTEN (SPELERSNR, NAAM, PLAATS, TELEFOON) SELECT SPELERSNR, NAAM, PLAATS, TELEFOON FROM SPELERS WHERE BONDSNR IS NULL ; INSERT INTO RECREANTEN SELECT SPELERSNR, NAAM, PLAATS, TELEFOON FROM SPELERS WHERE BONDSNR IS NULL ; INSERT INTO RECREANTEN (PLAATS, TELEFOON, NAAM, SPELERSNR) SELECT PLAATS, TELEFOON, NAAM, SPELERSNR FROM SPELERS WHERE BONDSNR IS NULL Voorbeeld 17.8: INSERT INTO RECREANTEN (SPELERSNR, NAAM, PLAATS, TELEFOON) SELECT SPELERSNR + 1000, NAAM, PLAATS, TELEFOON FROM RECREANTEN Voorbeeld 17.9: INSERT INTO BOETES SELECT BETALINGSNR + 100, SPELERSNR, DATUM, BEDRAG FROM BOETES WHERE BEDRAG > (SELECT AVG(BEDRAG) FROM BOETES) Voorbeeld 17.10: UPDATE SPELERS SET BONDSNR = '2000' WHERE SPELERSNR = 95 ; UPDATE SPELERS AS S SET S.BONDSNR = '2000' WHERE S.SPELERSNR = 95 Voorbeeld 17.11: UPDATE BOETES SET BEDRAG = BEDRAG * 1.05 Voorbeeld 17.12: UPDATE WEDSTRIJDEN SET GEWONNEN = 0 WHERE SPELERSNR IN (SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Den Haag') Voorbeeld 17.13: UPDATE SPELERS SET STRAAT = 'Pisuissestraat', HUISNR = '83', PLAATS = 'Rijswijk', POSTCODE = '1234UU', TELEFOON = NULL WHERE NAAM = 'Permentier' ; UPDATE SPELERS SET STRAAT = PLAATS, PLAATS = STRAAT WHERE SPELERSNR = 44 ; UPDATE SPELERS SET STRAAT = PLAATS WHERE SPELERSNR = 44 ; UPDATE SPELERS SET PLAATS = STRAAT WHERE SPELERSNR = 44 Voorbeeld 17.14: CREATE TABLE SPELERS_GEGEVENS (SPELERSNR INTEGER NOT NULL PRIMARY KEY, AANTAL_WED INTEGER, SOM_BOETES DECIMAL(7,2)) ; INSERT INTO SPELERS_GEGEVENS (SPELERSNR) SELECT SPELERSNR FROM SPELERS ; UPDATE SPELERS_GEGEVENS AS SG SET AANTAL_WED = (SELECT COUNT(*) FROM WEDSTRIJDEN AS W WHERE W.SPELERSNR = SG.SPELERSNR), SOM_BOETES = (SELECT SUM(BEDRAG) FROM BOETES AS B WHERE B.SPELERSNR = SG.SPELERSNR) Voorbeeld 17.15: UPDATE BOETES SET BEDRAG = BEDRAG – (SELECT AVG(BEDRAG) FROM BOETES) ; SET @GEMIDDELD_BEDRAG = (SELECT AVG(BEDRAG) FROM BOETES) ; UPDATE BOETES SET BEDRAG = BEDRAG – @GEMIDDELD_BEDRAG Voorbeeld 17.16: UPDATE BOETES SET BEDRAG = BEDRAG * 1.05 ORDER BY BEDRAG DESC Voorbeeld 17.17: UPDATE BOETES SET BETALINGSNR = BETALINGSNR + 1 ORDER BY BETALINGSNR DESC Voorbeeld 17.18: UPDATE BOETES SET BEDRAG = BEDRAG * 1.05 ORDER BY BEDRAG DESC, SPELERSNR ASC LIMIT 4 Voorbeeld 17.19: UPDATE IGNORE WEDSTRIJDEN SET WEDSTRIJDNR = WEDSTRIJDNR + 1, GEWONNEN = 2, VERLOREN = 3 WHERE WEDSTRIJDNR = 4 Voorbeeld 17.20: UPDATE WEDSTRIJDEN AS W, TEAMS AS T SET GEWONNEN = 0 WHERE T.TEAMNR = W.TEAMNR AND T.DIVISIE = 'ere' ; SELECT ... FROM WEDSTRIJDEN AS W, TEAMS AS T WHERE T.TEAMNR = W.TEAMNR AND T.DIVISIE = 'ere' ; UPDATE WEDSTRIJDEN SET GEWONNEN = 0 WHERE TEAMNR IN (SELECT TEAMNR FROM TEAMS WHERE DIVISIE = 'ere') Voorbeeld 17.21: UPDATE WEDSTRIJDEN AS W, TEAMS AS T SET W.GEWONNEN = 0, T.SPELERSNR = 112 WHERE T.TEAMNR = W.TEAMNR AND T.DIVISIE = 'ere' Voorbeeld 17.22: UPDATE SPELERS AS S, TEAMS AS T, WEDSTRIJDEN AS W, BOETES AS B, BESTUURSLEDEN AS L SET S.SPELERSNR = 1, T.SPELERSNR = 1, W.SPELERSNR = 1, B.SPELERSNR = 1, L.SPELERSNR = 1 WHERE S.SPELERSNR = T.SPELERSNR AND T.SPELERSNR = W.SPELERSNR AND W.SPELERSNR = B.SPELERSNR AND B.SPELERSNR = L.SPELERSNR AND L.SPELERSNR = 2 Voorbeeld 17.23: REPLACE INTO SPELERS (SPELERSNR, NAAM, VOORLETTERS, GESLACHT, JAARTOE, STRAAT, PLAATS) VALUES (611, 'Jones', 'GG', 'M', 1977, 'Herenlaan', 'Den Haag') Voorbeeld 17.24: REPLACE INTO TEAMS (TEAMNR, SPELERSNR, DIVISIE) VALUES (6, 100, 'derde'), (7, 27, 'vierde'), (8, 39, 'vierde'), (9, 112, 'zesde') Voorbeeld 17.25: REPLACE INTO RECREANTEN (SPELERSNR, NAAM, PLAATS, TELEFOON) SELECT SPELERSNR + 1000, NAAM, PLAATS, TELEFOON FROM RECREANTEN Voorbeeld 17.26: DELETE FROM BOETES WHERE SPELERSNR = 44 ; DELETE FROM BOETES AS B WHERE B.SPELERSNR = 44 Voorbeeld 17.27: DELETE FROM SPELERS WHERE JAARTOE > (SELECT AVG(JAARTOE) FROM SPELERS WHERE PLAATS = 'Den Haag') Voorbeeld 17.28: DELETE FROM BOETES ORDER BY BEDRAG DESC, SPELERSNR ASC LIMIT 4 Voorbeeld 17.29: DELETE IGNORE FROM SPELERS Voorbeeld 17.30: DELETE WEDSTRIJDEN FROM WEDSTRIJDEN, SPELERS WHERE WEDSTRIJDEN.SPELERSNR = SPELERS.SPELERSNR AND SPELERS.PLAATS = 'Rijswijk' ; SELECT ... FROM WEDSTRIJDEN, SPELERS WHERE WEDSTRIJDEN.SPELERSNR = SPELERS.SPELERSNR AND SPELERS.PLAATS = 'Rijswijk' ; DELETE WEDSTRIJDEN FROM WEDSTRIJDEN AS W, SPELERS WHERE W.SPELERSNR = SPELERS.SPELERSNR AND SPELERS.PLAATS = 'Rijswijk' Voorbeeld 17.31: DELETE TEAMS, WEDSTRIJDEN FROM TEAMS, WEDSTRIJDEN WHERE TEAMS.TEAMNR = WEDSTRIJDEN.TEAMNR AND TEAMS.TEAMNR = 1 ; DELETE FROM TEAMS, WEDSTRIJDEN USING TEAMS, WEDSTRIJDEN WHERE TEAMS.TEAMNR = WEDSTRIJDEN.TEAMNR AND TEAMS.TEAMNR = 1 Voorbeeld 17.32: TRUNCATE TABLE BESTUURSLEDEN Antwoord 17.1: INSERT INTO BOETES VALUES (15, 27, '1985-11-08', 75) Antwoord 17.2: INSERT INTO BOETES SELECT BETALINGSNR + 1000, SPELERSNR, DATUM, BEDRAG FROM BOETES WHERE BEDRAG > (SELECT AVG(BEDRAG) FROM BOETES) UNION SELECT BETALINGSNR + 2000, SPELERSNR, DATUM, BEDRAG FROM BOETES WHERE SPELERSNR = 27 Antwoord 17.3: UPDATE SPELERS SET GESLACHT = 'F' WHERE GESLACHT = 'V' Antwoord 17.4: UPDATE SPELERS SET GESLACHT = 'X' WHERE GESLACHT = 'V' ; UPDATE SPELERS SET GESLACHT = 'V' WHERE GESLACHT = 'M' ; UPDATE SPELERS SET GESLACHT = 'M' WHERE GESLACHT = 'X' ; UPDATE SPELERS SET GESLACHT = CASE GESLACHT WHEN 'V' THEN 'M' ELSE 'V' END Antwoord 17.5: UPDATE BOETES SET BEDRAG = BEDRAG * 1.2 WHERE BEDRAG > (SELECT AVG(BEDRAG) FROM BOETES) Antwoord 17.6: UPDATE TEAMS AS T, SPELERS AS S SET DIVISIE = 'derde' WHERE T.SPELERSNR = S.SPELERSNR AND S.PLAATS = 'Den Haag' Antwoord 17.7: UPDATE BOETES, TEAMS SET BEDRAG = 50, DIVISIE = 'vierde' Antwoord 17.8: DELETE FROM BOETES WHERE SPELERSNR = 44 AND YEAR(DATUM) = 1980 Antwoord 17.9: DELETE FROM BOETES WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR IN (SELECT TEAMNR FROM TEAMS WHERE DIVISIE = 'tweede')) Antwoord 17.10: DELETE FROM SPELERS WHERE PLAATS = (SELECT PLAATS FROM SPELERS WHERE SPELERSNR = 44) AND SPELERSNR <> 44 Antwoord 17.11: DELETE B, W FROM BOETES AS B, WEDSTRIJDEN AS W WHERE B.SPELERSNR = W.SPELERSNR AND B.SPELERSNR = 27 Antwoord 17.12: DELETE B, W FROM BOETES AS B, WEDSTRIJDEN AS W WHERE B.SPELERSNR = 27 AND W.SPELERSNR = 27 Voorbeeld 18.1: SELECT * FROM TEAMS INTO OUTFILE 'C:/TEAMS.TXT' Voorbeeld 18.2: SELECT * FROM TEAMS INTO OUTFILE 'C:/TEAMS.TXT' FIELDS TERMINATED BY ',' LINES TERMINATED BY '?' Voorbeeld 18.3: SELECT * FROM TEAMS INTO OUTFILE 'C:/TEAMS.TXT' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '?' Voorbeeld 18.4: SELECT * FROM TEAMS INTO OUTFILE 'C:/TEAMS.TXT' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '?' Voorbeeld 18.5: SELECT *, NULL FROM TEAMS INTO OUTFILE 'C:/TEAMS.TXT' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '?' Voorbeeld 18.6: SELECT *, NULL FROM TEAMS INTO OUTFILE 'C:/TEAMS.TXT' FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '*' LINES TERMINATED BY '?' Voorbeeld 18.7: SELECT * FROM TEAMS INTO OUTFILE 'C:/TEAMS.TXT' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' Voorbeeld 18.8: SELECT * FROM TEAMS INTO DUMPFILE 'C:/TEAMS.DUMP' Voorbeeld 18.9: SELECT * FROM TEAMS WHERE TEAMNR = 1 INTO @V1, @V2, @V3 ; SELECT @V1, @V2, @V3 Voorbeeld 18.10: LOAD DATA INFILE 'C:/TEAMS.TXT' REPLACE INTO TABLE TEAMS FIELDS TERMINATED BY ',' LINES TERMINATED BY '?' Voorbeeld 18.11: LOAD DATA INFILE 'C:/TEAMS.TXT' REPLACE INTO TABLE TEAMS FIELDS TERMINATED BY ',' LINES TERMINATED BY '?' IGNORE 1 LINES Voorbeeld 18.12: LOAD DATA INFILE 'C:/TEAMS.TXT' REPLACE INTO TABLE TEAMS FIELDS TERMINATED BY ',' LINES TERMINATED BY '?' (SPELERSNR,TEAMNR,DIVISIE) ; SELECT * FROM TEAMS Voorbeeld 18.13: LOAD DATA INFILE 'C:/TEAMS.TXT' REPLACE INTO TABLE TEAMS FIELDS TERMINATED BY ',' LINES TERMINATED BY '?' SET DIVISIE='xxx' ; SELECT * FROM TEAMS Voorbeeld 18.14: LOAD DATA INFILE 'C:/TEAMS.TXT' REPLACE INTO TABLE TEAMS FIELDS TERMINATED BY ',' LINES TERMINATED BY '?' (TEAMNR,SPELERSNR,@DIV) SET DIVISIE=SUBSTRING(@DIV,1,1) ; SELECT * FROM TEAMS Voorbeeld 18.15: LOAD DATA INFILE 'C:/TEAMS2.TXT' REPLACE INTO TABLE TEAMS FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r' STARTING BY '/*/' ; SELECT * FROM TEAMS Voorbeeld 19.1: CREATE TABLE XML_WEDSTRIJDEN (WEDSTRIJDNR INTEGER NOT NULL PRIMARY KEY, WEDSTRIJD_INFO TEXT) Voorbeeld 19.2: INSERT INTO XML_WEDSTRIJDEN VALUES (1, 'Wedstrijdgegevens van 1 Teamgegevens van 1 1 ere Spelersgegevens van 6 6 De naam van 6 Permentier R Het adres van 6 Hazensteinln 80 1234KK Den Haag Gegevens over sets van 1 3 1 ') ; INSERT INTO XML_WEDSTRIJDEN VALUES (9, 'Wedstrijdgegevens van 9 Teamgegevens van 2 2 tweede Spelersgegevens van 27 27 De naam van 27 Cools DD Het adres van 27 Liespad 804 8457DK Zoetermeer Telefoonnummers van 27 1234567 3468346 6236984 6587437 Gegevens over sets van 9 3 2 ') ; INSERT INTO XML_WEDSTRIJDEN VALUES (12, 'Wedstrijdgegevens van 12 Teamgegevens van 2 2 tweede Spelersgegevens van 8 8 De naam van 8 Niewenburg B Het eerste adres van 8 Spoorlaan 4 6584RO Rijswijk Het tweede adres van 8 Tramlaan 14 2728YG Voorburg Gegevens over sets van 12 1 3 ') Voorbeeld 19.3: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/team/divisie') AS DIVISIE FROM XML_WEDSTRIJDEN Voorbeeld 19.4: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/speler/naam/achternaam') AS SPELER FROM XML_WEDSTRIJDEN WHERE EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/sets/gewonnen') = 3 Voorbeeld 19.5: SELECT EXTRACTVALUE(' 2 tweede ' ,'/team') = '' AS TEAM Voorbeeld 19.6: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/speler/telefoons/nummer') AS TELEFOONS FROM XML_WEDSTRIJDEN WHERE WEDSTRIJDNR = 9 Voorbeeld 19.7: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/speler') AS SPELERS FROM XML_WEDSTRIJDEN ; SELECT REPLACE(EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/speler'), ' ', '#') AS SPELERSGEGEVENS FROM XML_WEDSTRIJDEN Voorbeeld 19.8: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/*/nummer') AS NUMMERS FROM XML_WEDSTRIJDEN Voorbeeld 19.9: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd//nummer') AS NUMMERS FROM XML_WEDSTRIJDEN ; SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '//nummer') AS NUMMERS FROM XML_WEDSTRIJDEN Voorbeeld 19.10: SELECT EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd//*') AS ALLES FROM XML_WEDSTRIJDEN WHERE WEDSTRIJDNR = 1 Voorbeeld 19.11: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '//plaats|//gewonnen') AS PLAATS_GEWONNEN FROM XML_WEDSTRIJDEN ; SELECT WEDSTRIJDNR, CONCAT(EXTRACTVALUE(WEDSTRIJD_INFO, '//plaats'), ' ', EXTRACTVALUE(WEDSTRIJD_INFO, '//gewonnen')) AS PLAATS_GEWONNEN FROM XML_WEDSTRIJDEN Voorbeeld 19.12: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/@nummer') AS XML_WEDSTRIJDNR FROM XML_WEDSTRIJDEN Voorbeeld 19.13: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/sets/gewonnen+10') AS GEWONNEN_PLUS_10 FROM XML_WEDSTRIJDEN Voorbeeld 19.14: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/speler/adres[1]/plaats') AS PLAATS FROM XML_WEDSTRIJDEN Voorbeeld 19.15: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/speler/*[1]') AS EEN_WAARDE FROM XML_WEDSTRIJDEN Voorbeeld 19.16: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/speler/telefoons/nummer[last()]') AS LAATSTE FROM XML_WEDSTRIJDEN Voorbeeld 19.17: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/child::wedstrijd/child::team/child::nummer ') AS NUMMERS FROM XML_WEDSTRIJDEN Voorbeeld 19.18: SELECT EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/speler/adres/descendant::* ') AS ADRESGEGEVENS FROM XML_WEDSTRIJDEN Voorbeeld 19.19: SELECT EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/speler/descendant::* ') AS SPELERSGEGEVENS FROM XML_WEDSTRIJDEN Voorbeeld 19.20: SELECT EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/speler/descendant::* ') AS SPELERSGEGEVENS FROM XML_WEDSTRIJDEN Voorbeeld 19.21: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/speler[nummer=8]') AS SPELER8 FROM XML_WEDSTRIJDEN Voorbeeld 19.22: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/speler') AS SPELER8 FROM XML_WEDSTRIJDEN WHERE EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/speler[nummer=8]') <> '' Voorbeeld 19.23: SELECT WEDSTRIJDNR, EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/sets') AS DRIE_EN_EEN FROM XML_WEDSTRIJDEN WHERE EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/sets[gewonnen=3 and verloren=1]') <>'' Voorbeeld 19.24: UPDATE XML_WEDSTRIJDEN SET WEDSTRIJD_INFO = UPDATEXML(WEDSTRIJD_INFO, '/wedstrijd/sets/verloren', '2') WHERE WEDSTRIJDNR = 1 ; SELECT EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/sets/verloren') AS VERLOREN FROM XML_WEDSTRIJDEN WHERE WEDSTRIJDNR = 1 Voorbeeld 19.25: UPDATE XML_WEDSTRIJDEN SET WEDSTRIJD_INFO = UPDATEXML(WEDSTRIJD_INFO, '/wedstrijd/speler/adres', 'Het nieuwe adres van 8 Mooilaan 30 5383GH Voorburg ') WHERE WEDSTRIJDNR = 1 ; SELECT EXTRACTVALUE(WEDSTRIJD_INFO, '/wedstrijd/speler/adres/*') AS NIEUW_ADRES FROM XML_WEDSTRIJDEN WHERE WEDSTRIJDNR = 1 Voorbeeld 20.1: CREATE TABLE SPELERS (SPELERSNR INTEGER NOT NULL PRIMARY KEY, NAAM CHAR(15) NOT NULL, VOORLETTERS CHAR(3) NOT NULL, GEB_DATUM DATE NULL, GESLACHT CHAR(1) NOT NULL, JAARTOE SMALLINT NOT NULL, STRAAT VARCHAR(30) NOT NULL, HUISNR CHAR(4) NULL, POSTCODE CHAR(6) NULL, PLAATS VARCHAR(30) NOT NULL, TELEFOON CHAR(13) NULL, BONDSNR CHAR(4) UNIQUE) Voorbeeld 20.2: CREATE TABLE TEST.BOETES (BETALINGSNR INTEGER NOT NULL PRIMARY KEY, SPELERSNR INTEGER NOT NULL, DATUM DATE NOT NULL, BEDRAG DECIMAL(7,2) NOT NULL) Voorbeeld 20.3: CREATE TABLE BREEDTE (K4 INTEGER(4)) ; INSERT INTO BREEDTE VALUES (1) Voorbeeld 20.4: CREATE TABLE MEETGEGEVENS (NR INTEGER, MEETWAARDE FLOAT(1)) ; INSERT INTO MEETGEGEVENS VALUES (1, 99.99), (2, 99999.99), (3, 99999999.99), (4, 99999999999.99), (5, 99999999999999.99), (6, 0.999999), (7, 0.9999999), (8, 99999999.9999), (9, (1.0/3)) ; SELECT * FROM MEETGEGEVENS Voorbeeld 20.5: CREATE TABLE MEETGEGEVENS (NR INTEGER, MEETWAARDE FLOAT(10,3)) ; INSERT INTO MEETGEGEVENS VALUES (1, 99.99), (2, 99999.99), (3, 99999999.99), (4, 99999999999.99), (5, 99999999999999.99), (6, 0.999999), (7, 0.9999999), (8, 99999999.9999), (9, (1.0/3)) ; SELECT * FROM MEETGEGEVENS Voorbeeld 20.6: CREATE TABLE BOETESDEF (BETALINGSNR INTEGER UNSIGNED NOT NULL PRIMARY KEY, SPELERSNR INTEGER UNSIGNED NOT NULL, DATUM DATE NOT NULL, BEDRAG DECIMAL(7,2) NOT NULL) Voorbeeld 20.7: CREATE TABLE BREEDTE (K4 INTEGER(4) ZEROFILL) ; INSERT INTO BREEDTE VALUES (1) ; INSERT INTO BREEDTE VALUES (200) Voorbeeld 20.8: CREATE TABLE BOETES (BETALINGSNR INTEGER NOT NULL PRIMARY KEY, SPELERSNR INTEGER NOT NULL, DATUM DATE NOT NULL, BEDRAG DECIMAL(7,2) ZEROFILL NOT NULL) ; SELECT BEDRAG FROM BOETES Voorbeeld 20.9: CREATE TABLE MEETGEGEVENS (NR INTEGER, MEETWAARDE FLOAT(19,3) ZEROFILL) ; INSERT INTO MEETGEGEVENS VALUES (1, 99.99), (2, 99999.99), (3, 99999999.99), (4, 99999999999.99), (5, 99999999999999.99), (6, 0.999999), (7, 0.9999999), (8, 99999999.9999), (9, (1.0/3)) ; SELECT * FROM MEETGEGEVENS Voorbeeld 20.10: CREATE TABLE PLAATSNAMEN (VOLGNR INTEGER UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY, NAAM VARCHAR(30) NOT NULL) Voorbeeld 20.11: INSERT INTO PLAATSNAMEN VALUES (NULL, 'Londen') ; INSERT INTO PLAATSNAMEN VALUES (NULL, 'New York') ; INSERT INTO PLAATSNAMEN (NAAM) VALUES ('Parijs') ; SELECT * FROM PLAATSNAMEN Voorbeeld 20.12: INSERT INTO PLAATSNAMEN VALUES (8, 'Bonn') ; INSERT INTO PLAATSNAMEN VALUES (NULL, 'Amsterdam') ; SELECT * FROM PLAATSNAMEN Voorbeeld 20.13: DELETE FROM PLAATSNAMEN ; INSERT INTO PLAATSNAMEN VALUES (NULL, 'Phoenix') ; INSERT INTO PLAATSNAMEN VALUES (NULL, 'Rome') Voorbeeld 20.14: SET @@AUTO_INCREMENT_OFFSET = 10, @@AUTO_INCREMENT_INCREMENT = 10 ; CREATE TABLE T10 (VOLGNR INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY) ; INSERT INTO T10 VALUES (NULL),(NULL) ; SELECT * FROM T10 Voorbeeld 20.15: CREATE TEMPORARY TABLE SOMBOETES (TOTAAL DECIMAL(10,2)) ; INSERT INTO SOMBOETES SELECT SUM(BEDRAG) FROM BOETES Voorbeeld 20.16: CREATE TABLE TESTTABEL (K1 INTEGER) ; INSERT INTO TESTTABEL VALUES (1) ; CREATE TEMPORARY TABLE TESTTABEL (K1 INTEGER, K2 INTEGER) ; INSERT INTO TESTTABEL VALUES (2, 3) ; SELECT * FROM TESTTABEL Voorbeeld 20.17: CREATE TABLE IF NOT EXISTS TEAMS (TEAMNR INTEGER NOT NULL PRIMARY KEY, SPELERSNR INTEGER NOT NULL, DIVISIE CHAR(6) NOT NULL) Voorbeeld 20.18: CREATE TABLE TEAMS_KOPIE LIKE TEAMS Voorbeeld 20.19: CREATE TABLE TEAMS_KOPIE1 AS (SELECT * FROM TEAMS) Voorbeeld 20.20: CREATE TABLE TEAMS_KOPIE2 AS (SELECT TEAMNR AS TNR, SPELERSNR AS SNR, DIVISIE FROM TEAMS) ; SELECT * FROM TEAMS_KOPIE3 Voorbeeld 20.21: CREATE TABLE TEAMS_KOPIE3 AS (SELECT TEAMNR, SPELERSNR FROM TEAMS WHERE SPELERSNR = 27) Voorbeeld 20.22: CREATE TEMPORARY TABLE TEAMS AS (SELECT * FROM TEAMS) Voorbeeld 20.23: CREATE TABLE TEAMS_KOPIE4 (TEAMNR INTEGER NOT NULL PRIMARY KEY, SPELERSNR INTEGER NULL, DIVISIE CHAR(10) NOT NULL) AS (SELECT * FROM TEAMS) ; CREATE TABLE TEAMS_KOPIE4 (SPELERSNR INTEGER NULL, DIVISIE CHAR(10) NOT NULL) AS (SELECT * FROM TEAMS) Voorbeeld 20.24: CREATE TABLE TEAMS_KOPIE5 (SPELERSNR INTEGER NULL, COMMENTAAR VARCHAR(100)) AS (SELECT * FROM TEAMS) ; SELECT * FROM TEAMS_KOPIE6 Voorbeeld 20.25: CREATE TABLE TEAMS_KOPIE6 (TEAMNR INTEGER NOT NULL PRIMARY KEY) REPLACE AS (SELECT * FROM TEAMS UNION ALL SELECT 2, 27, 'derde' ORDER BY 1, 3 DESC) ; SELECT * FROM TEAMS_KOPIE6 Voorbeeld 20.26: CREATE TABLE BOETES (BETALINGSNR INTEGER NOT NULL PRIMARY KEY, SPELERSNR INTEGER NOT NULL, DATUM DATE NOT NULL DEFAULT '2007-01-01', BEDRAG DECIMAL(7,2) NOT NULL DEFAULT 50.00) ; INSERT INTO BOETES (BETALINGSNR, SPELERSNR) VALUES (15, 27) ; INSERT INTO BOETES (BETALINGSNR, SPELERSNR, DATUM, BEDRAG) VALUES (15, 27, DEFAULT, DEFAULT) Voorbeeld 20.27: UPDATE BOETES SET BEDRAG = DEFAULT Voorbeeld 20.28: UPDATE BOETES SET BEDRAG = YEAR(DEFAULT(DATUM))*10 Voorbeeld 20.29: CREATE TABLE BOETES (BETALINGSNR INTEGER NOT NULL PRIMARY KEY COMMENT 'Primaire sleutel van de tabel', SPELERSNR INTEGER NOT NULL COMMENT 'Speler voor wie de boete betaald is', DATUM DATE NOT NULL COMMENT 'Datum waarop de boete betaald is', BEDRAG DECIMAL(7,2) NOT NULL COMMENT 'Hoogte van het boetebedrag in euro''s') ; SELECT COLUMN_NAME, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'BOETES' Voorbeeld 20.30: SHOW ENGINES Voorbeeld 20.31: CREATE TABLE GESLACHTEN (GESLACHT CHAR(1) NOT NULL PRIMARY KEY) ENGINE = MYISAM Voorbeeld 20.32: SELECT TABLE_NAME, ENGINE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME IN ('SPELERS', 'BOETES', 'GESLACHTEN') Voorbeeld 20.33: CREATE TEMPORARY TABLE SOMBOETES (TOTAAL DECIMAL(10,2)) ENGINE = MEMORY Voorbeeld 20.34: CREATE TABLE BOETES_1990 (BETALINGSNR INTEGER NOT NULL PRIMARY KEY) ENGINE=MYISAM ; INSERT INTO BOETES_1990 VALUES (1),(2),(3) ; CREATE TABLE BOETES_1991 (BETALINGSNR INTEGER NOT NULL PRIMARY KEY) ENGINE=MYISAM ; INSERT INTO BOETES_1991 VALUES (4),(5),(6) ; CREATE TABLE BOETES_1992 (BETALINGSNR INTEGER NOT NULL PRIMARY KEY) ENGINE=MYISAM ; INS;ERT INTO BOETES_1992 VALUES (7),(8),(9); CREATE TABLE BOETES_ALLEMAAL (BETALINGSNR INTEGER NOT NULL PRIMARY KEY) ENGINE = MERGE UNION = (BOETES_1990,BOETES_1991,BOETES_1992) INSERT_METHOD = NO ; SELECT * FROM BOETES_ALLEMAAL Voorbeeld 20.35: CREATE VIEW BOETES_ALLEMAAL AS SELECT * FROM BOETES_1990 UNION SELECT * FROM BOETES_1991 UNION SELECT * FROM BOETES_1992 Voorbeeld 20.36: CREATE TABLE PLAATSNAMEN (VOLGNR INTEGER AUTO_INCREMENT NOT NULL PRIMARY KEY, NAAM VARCHAR(30) NOT NULL) AUTO_INCREMENT = 10 ; INSERT INTO PLAATSNAMEN VALUES (NULL, 'Londen') ; INSERT INTO PLAATSNAMEN VALUES (NULL, 'New York') ; INSERT INTO PLAATSNAMEN VALUES (NULL, 'Parijs') ; SELECT * FROM PLAATSNAMEN Voorbeeld 20.37: CREATE TABLE BOETES (BETALINGSNR INTEGER NOT NULL PRIMARY KEY COMMENT 'Primaire sleutel van de tabel', SPELERSNR INTEGER NOT NULL COMMENT 'Speler voor wie de boete betaald is', DATUM DATE NOT NULL COMMENT 'Datum waarop de boete betaald is', BEDRAG DECIMAL(7,2) NOT NULL COMMENT 'Hoogte van het boetebedrag in euro''s') COMMENT = 'Boetes die door de tennisvereniging betaald zijn' ; SELECT TABLE_NAME, TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'BOETES' Voorbeeld 20.38: CREATE TABLE WEDSTRIJDEN (WEDSTRIJDNR INTEGER NOT NULL PRIMARY KEY, TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, GEWONNEN SMALLINT NOT NULL, VERLOREN SMALLINT NOT NULL) AVG_ROW_LENGTH = 15 MAX_ROWS = 2000000 MIN_ROWS = 1000000 Voorbeeld 20.39: CREATE TABLE TEAMS_CSV (TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, DIVISIE CHAR(6) NOT NULL) ENGINE = CSV ; INSERT INTO TEAMS_CSV VALUES (1, 6, 'ere') ; INSERT INTO TEAMS_CSV VALUES (2, 27, 'tweede') Voorbeeld 20.40: SELECT * FROM WEDSTRIJDEN INTO OUTFILE 'C:/WEDSTRIJDEN_EXTERN.TXT' FIELDS TERMINATED BY ',' ENCLOSED BY '"' ; CREATE TABLE WEDSTRIJDEN_CSV (WEDSTRIJDNR INTEGER NOT NULL, TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, GEWONNEN SMALLINT NOT NULL, VERLOREN SMALLINT NOT NULL) ENGINE = CSV ; FLUSH TABLE WEDSTRIJDEN_CSV ; SELECT * FROM WEDSTRIJDEN_CSV WHERE WEDSTRIJDNR <= 4 Voorbeeld 20.41: SELECT COLUMN_NAME, DATA_TYPE, CHAR_LENGTH, NULLABLE FROM COLUMNS WHERE TABLE_NAME = 'SPELERS' AND TABLE_CREATOR = 'TENNIS' ORDER BY COLUMN_NO Voorbeeld 20.42: SELECT 'SPELERS' AS TABEL_NAAM, COUNT(*) AS AANTAL_RIJEN, (SELECT COUNT(*) FROM COLUMNS WHERE TABLE_NAME = 'SPELERS' AND TABLE_CREATOR = 'TENNIS') AS S FROM SPELERS UNION SELECT 'TEAMS', COUNT(*), (SELECT COUNT(*) FROM COLUMNS WHERE TABLE_NAME = 'TEAMS' AND TABLE_CREATOR = 'TENNIS') AS T FROM TEAMS UNION SELECT 'BOETES', COUNT(*), (SELECT COUNT(*) FROM COLUMNS WHERE TABLE_NAME = 'BOETES' AND TABLE_CREATOR = 'TENNIS') AS B FROM BOETES UNION SELECT 'WEDSTRIJDEN', COUNT(*), (SELECT COUNT(*) FROM COLUMNS WHERE TABLE_NAME = 'WEDSTRIJDEN' AND TABLE_CREATOR = 'TENNIS') AS W FROM WEDSTRIJDEN UNION SELECT 'BESTUURSLEDEN', COUNT(*), (SELECT COUNT(*) FROM COLUMNS WHERE TABLE_NAME = 'BESTUURSLEDEN' AND TABLE_CREATOR = 'TENNIS') AS BL FROM BESTUURSLEDEN ORDER BY 1 Antwoord 20.6: CREATE TABLE AFDELING ( AFDNR CHAR(5) NOT NULL PRIMARY KEY, BUDGET DECIMAL(8,2), LOKATIE VARCHAR(30)) Antwoord 20.7: CREATE TABLE S_KOPIE LIKE SPELERS Antwoord 20.8: CREATE TABLE S2_KOPIE AS (SELECT * FROM SPELERS) Antwoord 20.9: CREATE TABLE NUMMERS AS (SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Den Haag') Voorbeeld 21.2: CREATE TABLE DIPLOMAS (CURSIST INTEGER NOT NULL, CURSUS INTEGER NOT NULL, DATUM DATE NOT NULL, SUCCESVOL CHAR(1), LOKATIE VARCHAR(50), PRIMARY KEY (CURSIST, CURSUS, DATUM)) Voorbeeld 21.3: CREATE TABLE DIPLOMAS (CURSIST INTEGER NOT NULL, CURSUS INTEGER NOT NULL, DATUM DATE NOT NULL, SUCCESVOL CHAR(1), LOKATIE VARCHAR(50), PRIMARY KEY INDEX_PRIM (CURSIST, CURSUS, DATUM)) Voorbeeld 21.4: CREATE TABLE TEAMS (TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL UNIQUE, DIVISIE CHAR(6) NOT NULL, PRIMARY KEY (TEAMNR)) ; CREATE TABLE TEAMS (TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, DIVISIE CHAR(6) NOT NULL, PRIMARY KEY (TEAMNR), UNIQUE (SPELERSNR)) Voorbeeld 21.5: CREATE TABLE SPELERS (SPELERSNR INTEGER NOT NULL, NAAM CHAR(15) NOT NULL, VOORLETTERS CHAR(3) NOT NULL, GEB_DATUM DATE, GESLACHT CHAR(1) NOT NULL, JAARTOE SMALLINT NOT NULL, STRAAT VARCHAR(30) NOT NULL, HUISNR CHAR(4), POSTCODE CHAR(6), PLAATS VARCHAR(30) NOT NULL, TELEFOON CHAR(13), BONDSNR CHAR(4) UNIQUE, PRIMARY KEY (SPELERSNR)) Voorbeeld 21.6: CREATE TABLE TEAMS (TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, DIVISIE CHAR(6) NOT NULL, PRIMARY KEY (TEAMNR), FOREIGN KEY (SPELERSNR) REFERENCES SPELERS (SPELERSNR)) ; SELECT * FROM TEAMS WHERE SPELERSNR NOT IN (SELECT SPELERSNR FROM SPELERS) Voorbeeld 21.7: CREATE TABLE TEAMS (TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, DIVISIE CHAR(6) NOT NULL, PRIMARY KEY (TEAMNR), FOREIGN KEY (SPELERSNR) REFERENCES SPELERS (SPELERSNR)) Voorbeeld 21.8: CREATE TABLE WEDSTRIJDEN (WEDSTRIJDNR INTEGER NOT NULL, TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, GEWONNEN INTEGER NOT NULL, VERLOREN INTEGER NOT NULL, PRIMARY KEY (WEDSTRIJDNR), FOREIGN KEY (TEAMNR) REFERENCES TEAMS (TEAMNR), FOREIGN KEY (SPELERSNR) REFERENCES SPELERS (SPELERSNR)) Voorbeeld 21.9: CREATE TABLE BOETES (BETALINGSNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, DATUM DATE NOT NULL, BEDRAG DECIMAL(7,2) NOT NULL, PRIMARY KEY (BETALINGSNR), FOREIGN KEY (SPELERSNR) REFERENCES SPELERS (SPELERSNR)) ; CREATE TABLE WERKNEMERS (WERK_NR CHAR(10) NOT NULL, BAAS_NR CHAR(10), PRIMARY KEY (WERK_NR), FOREIGN KEY (BAAS_NR) REFERENCES WERKNEMERS (WERK_NR)) Voorbeeld 21.10: CREATE TABLE BOETES (BETALINGSNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, DATUM DATE NOT NULL, BEDRAG DECIMAL(7,2) NOT NULL, PRIMARY KEY (BETALINGSNR), FOREIGN KEY (SPELERSNR) REFERENCES SPELERS (SPELERSNR) ON UPDATE RESTRICT ON DELETE RESTRICT) Voorbeeld 21.11: CREATE TABLE BOETES (BETALINGSNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, DATUM DATE NOT NULL, BEDRAG DECIMAL(7,2) NOT NULL, PRIMARY KEY (BETALINGSNR), FOREIGN KEY (SPELERSNR) REFERENCES SPELERS (SPELERSNR) ON DELETE CASCADE) ; DELETE FROM SPELERS WHERE SPELERSNR = 127 ; DELETE FROM BOETES WHERE SPELERSNR = 127 Voorbeeld 21.12: CREATE TABLE BOETES (BETALINGSNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, DATUM DATE NOT NULL, BEDRAG DECIMAL(7,2) NOT NULL, PRIMARY KEY (BETALINGSNR), FOREIGN KEY (SPELERSNR) REFERENCES SPELERS (SPELERSNR) ON DELETE SET NULL) Voorbeeld 21.13: CREATE TABLE SPELERS_X (SPELERSNR INTEGER NOT NULL, GESLACHT CHAR(1) NOT NULL CHECK(GESLACHT IN ('M', 'V'))) Voorbeeld 21.14: CREATE TABLE SPELERS_Y (SPELERSNR INTEGER NOT NULL, GEB_DATUM DATE NOT NULL CHECK(GEB_DATUM > '1920-01-01')) Voorbeeld 21.15: CREATE TABLE SPELERS_Z (SPELERSNR SMALLINT NOT NULL, GEB_DATUM DATE, JAARTOE SMALLINT NOT NULL, CHECK(YEAR(GEB_DATUM) < JAARTOE)) ; CREATE TABLE SPELERS_W (SPELERSNR SMALLINT, GEB_DATUM DATE NOT NULL, JAARTOE SMALLINT NOT NULL, CHECK(YEAR(GEB_DATUM) < JAARTOE), CHECK(GEB_DATUM > '1920-01-01'), CHECK(JAARTOE < 1880)) Voorbeeld 21.16: CREATE TABLE SPELERS_V (SPELERSNR SMALLINT NOT NULL, GESLACHT CHAR(1) NOT NULL CHECK(GESLACHT IN (SELECT GESLACHT FROM SPELERS))) Voorbeeld 21.17: CREATE TABLE DIPLOMAS (CURSIST INTEGER NOT NULL, CURSUS INTEGER NOT NULL, DATUM DATE NOT NULL, SUCCESVOL CHAR(1), LOKATIE VARCHAR(50), CONSTRAINT PRIMARY_KEY_DIPLOMAS PRIMARY KEY (CURSIST, CURSUS, DATUM)) Voorbeeld 21.18: CREATE TABLE SPELERS (SPELERSNR INTEGER NOT NULL, NAAM CHAR(15) NOT NULL, VOORLETTERS CHAR(3) NOT NULL, GEB_DATUM DATE, GESLACHT CHAR(1) NOT NULL, JAARTOE SMALLINT NOT NULL, STRAAT VARCHAR(30) NOT NULL, HUISNR CHAR(4), POSTCODE CHAR(6), PLAATS VARCHAR(30) NOT NULL, TELEFOON CHAR(13), BONDSNR CHAR(4), CONSTRAINT PRIMAIRE_SLEUTEL_SPELERS PRIMARY KEY(SPELERSNR), CONSTRAINT JAARTOETREDING CHECK(JAARTOE > 1969), CONSTRAINT POSTCODE_ZES_TEKENS_LANG CHECK(POSTCODE LIKE '______'), CONSTRAINT TOEGESTANE_WAARDEN_GESLACHT CHECK(GESLACHT IN ('M', 'V'))) Antwoord 21.3: CREATE TABLE WEDSTRIJDEN (WEDSTRIJDNR INTEGER NOT NULL, TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, GEWONNEN INTEGER NOT NULL, VERLOREN INTEGER NOT NULL, PRIMARY KEY (WEDSTRIJDNR)) ; CREATE TABLE WEDSTRIJDEN (WEDSTRIJDNR INTEGER NOT NULL PRIMARY KEY, TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, GEWONNEN INTEGER NOT NULL, VERLOREN INTEGER NOT NULL) Voorbeeld 22.1: SHOW CHARACTER SET ; SELECT CHARACTER_SET_NAME, DESCRIPTION, DEFAULT_COLLATE_NAME, MAXLEN FROM INFORMATION_SCHEMA.CHARACTER_SETS Voorbeeld 22.2: SHOW COLLATION LIKE 'utf8%' ; SELECT * FROM INFORMATION_SCHEMA.COLLATIONS WHERE COLLATION_NAME LIKE 'utf8%' Voorbeeld 22.3: CREATE TABLE TABUCS2 (K1 CHAR(10) CHARACTER SET ucs2 NOT NULL PRIMARY KEY, K2 VARCHAR(10) CHARACTER SET ucs2) Voorbeeld 22.4: CREATE TABLE TABDEFKARSET (K1 CHAR(10) NOT NULL, K2 VARCHAR(10)) ; SELECT COLUMN_NAME, CHARACTER_SET_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TABDEFKARSET' Voorbeeld 22.5: CREATE TABLE TABUTF8 (K1 CHAR(10) NOT NULL, K2 VARCHAR(10)) DEFAULT CHARACTER SET utf8 ; SELECT COLUMN_NAME, CHARACTER_SET_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TABUTF8' Voorbeeld 22.6: SELECT TABLE_NAME, COLUMN_NAME, COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME IN ('TABUCS2', 'TABDEFKARSET') Voorbeeld 22.7: CREATE TABLE TABCOLLATE (K1 CHAR(10) CHARACTER SET utf8 COLLATE utf8_romanian_ci NOT NULL, K2 VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_spanish_ci) ; SELECT COLUMN_NAME, CHARACTER_SET_NAME, COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TABCOLLATE' Voorbeeld 22.8: CREATE TABLE TABDEFCOL (K1 CHAR(10) NOT NULL, K2 VARCHAR(10)) CHARACTER SET utf8 COLLATE utf8_romanian_ci ; SELECT COLUMN_NAME, CHARACTER_SET_NAME, COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TABDEFCOL' Voorbeeld 22.9: CREATE TABLE TWEEKARSETS (K1 CHAR(10) CHARACTER SET 'latin1' NOT NULL, K2 VARCHAR(10) CHARACTER SET 'hp8') ; INSERT INTO TWEEKARSETS VALUES ('A', 'A') ; SELECT * FROM TWEEKARSETS WHERE K1 = K2 Voorbeeld 22.10: CREATE TABLE TWEECOLL (K1 CHAR(10) COLLATE 'latin1_general_ci' NOT NULL, K2 VARCHAR(10) COLLATE 'latin1_danish_ci') ; INSERT INTO TWEECOLL VALUES ('A', 'A') ; SELECT * FROM TWEECOLL WHERE K1 = K2 ; SELECT * FROM TWEECOLL WHERE K1 COLLATE latin1_danish_ci = K2 ; SELECT * FROM TWEECOLL WHERE K1 COLLATE utf8_general_ci = K2 Voorbeeld 22.11: SELECT _utf8'database' Voorbeeld 22.12: SELECT COLLATION(_utf8'database'), COLLATION(_utf8'database' COLLATE utf8_bin), COLLATION((SELECT MAX(NAAM) FROM SPELERS)) Voorbeeld 22.13: SELECT CHARSET(_utf8'database'), CHARSET((SELECT MAX(NAAM) FROM SPELERS)) Voorbeeld 22.14: SELECT _latin1'Muller' AS NAAM UNION SELECT CONCAT('M', _latin1 x'FC', 'ller') ORDER BY NAAM COLLATE latin1_swedish_ci Voorbeeld 22.15: CREATE TABLE LETTERS (VOLGNR INTEGER NOT NULL PRIMARY KEY, LETTER CHAR(1) CHARACTER SET latin2 NOT NULL) ; INSERT INTO LETTERS VALUES (1, 'e'), (2, 'é'),(3, 'ë') ; SELECT LETTER, COUNT(*) FROM (SELECT LETTER COLLATE latin2_czech_cs AS LETTER FROM LETTERS) AS LATIN2_CZECH_LETTERS GROUP BY LETTER ; SELECT LETTER, COUNT(*) FROM (SELECT LETTER COLLATE latin2_croatian_ci AS LETTER FROM LETTERS) AS LATIN2_CROATIAN_LETTERS GROUP BY LETTER Voorbeeld 22.16: SELECT LETTER FROM LETTERS ORDER BY LETTER Voorbeeld 22.17: SELECT COERCIBILITY('Rick' COLLATE latin1_general_ci) AS C0, COERCIBILITY(TEAMNR) AS C2, COERCIBILITY(USER()) AS C3, COERCIBILITY('Rick') AS C4, COERCIBILITY(NULL) AS C5 FROM TEAMS WHERE TEAMNR = 1 Voorbeeld 22.18: SELECT @@COLLATION_DATABASE Voorbeeld 22.19: SHOW VARIABLES LIKE 'CHARACTER_SET%' Antwoord 22.2: SELECT CHARACTER_SET_NAME, COUNT(*) FROM INFORMATION_SCHEMA.COLLATIONS GROUP BY CHARACTER_SET_NAME Antwoord 22.4: SELECT CHARSET((SELECT MAX(PLAATS) FROM SPELERS)), COLLATION((SELECT MAX(PLAATS) FROM SPELERS)) Antwoord 22.5: SELECT PLAATS FROM SPELERS ORDER BY PLAATS COLLATE latin1_danish_ci Voorbeeld 23.1: CREATE TABLE SPELERS_SMAL (SPELERSNR INTEGER NOT NULL PRIMARY KEY, NAAM CHAR(15) NOT NULL, VOORLETTERS CHAR(3) NOT NULL, GEB_DATUM DATE, GESLACHT ENUM ('M','V')) Voorbeeld 23.2: INSERT INTO SPELERS_SMAL VALUES (24, 'Jones', 'P', '1985-04-22', 'M') ; INSERT INTO SPELERS_SMAL VALUES (25, 'Marx', 'L', '1981-07-01', 'V') ; INSERT INTO SPELERS_SMAL VALUES (111, 'Cruise', 'T', '1982-11-11', 'm') ; INSERT INTO SPELERS_SMAL VALUES (199, 'Schroder', 'L', '1970-02-12', 'X') ; INSERT INTO SPELERS_SMAL VALUES (201, 'Lie', 'T', '1972-02-12', NULL) ; SELECT * FROM SPELERS_SMAL Voorbeeld 23.3: SELECT SPELERSNR, GESLACHT, GESLACHT * 1 FROM SPELERS_SMAL Voorbeeld 23.4: SELECT SPELERSNR, GESLACHT FROM SPELERS_SMAL ORDER BY GESLACHT Voorbeeld 23.5: CREATE TABLE GESLACHTEN (GESLACHT CHAR(1) NOT NULL PRIMARY KEY) ; INSERT INTO GESLACHTEN VALUES ('M'),('V') ; CREATE TABLE SPELERS_SMAL2 (SPELERSNR INTEGER NOT NULL PRIMARY KEY, NAAM CHAR(15) NOT NULL, VOORLETTERS CHAR(3) NOT NULL, GEB_DATUM DATE, GESLACHT CHAR(1), FOREIGN KEY (GESLACHT) REFERENCES GESLACHTEN(GESLACHT)) Voorbeeld 23.6: CREATE TABLE TEAMS_NIEUW (TEAMNR INTEGER NOT NULL PRIMARY KEY, SPELERSNR INTEGER NOT NULL, DIVISIE SET ('ere','eerste','tweede','derde')) Voorbeeld 23.7: INSERT INTO TEAMS_NIEUW VALUES (1, 27, 'ere') ; INSERT INTO TEAMS_NIEUW VALUES (2, 27, 'ere,tweede') ; INSERT INTO TEAMS_NIEUW VALUES (3, 27, 'ere,tweede,vijfde') ; INSERT INTO TEAMS_NIEUW VALUES (4, 27, 'ere,vierde') ; INSERT INTO TEAMS_NIEUW VALUES (5, 27, NULL) ; INSERT INTO TEAMS_NIEUW VALUES (6, 27, 7) ; INSERT INTO TEAMS_NIEUW VALUES (7, 27, CONV(1001,2,10)) ; SELECT * FROM TEAMS_NIEUW Voorbeeld 23.8: SELECT TEAMNR, DIVISIE * 1, BIN(DIVISIE * 1) FROM TEAMS_NIEUW Voorbeeld 23.9: CREATE TABLE REEKS_GETALLEN (GETALLEN SET ('1','2','3','4','5','6','7','8','9','10', '11','12','13','14','15','16','17','18','19','20', '21','22','23','24','25','26','27','28','29','30', '31','32','33','34','35','36','37','38','39','40')) ; INSERT INTO REEKS_GETALLEN VALUES ('1'),('20'),('40') ; SELECT GETALLEN, BIN(GETALLEN * 1) FROM REEKS_GETALLEN Voorbeeld 23.10: INSERT INTO TEAMS_NIEUW VALUES (8, 27, 'achtste') ; INSERT INTO TEAMS_NIEUW VALUES (9, 27, '') ; SELECT TEAMNR, DIVISIE, DIVISIE * 1, BIN(DIVISIE * 1) FROM TEAMS_NIEUW WHERE TEAMNR IN (8, 9) Voorbeeld 23.11: SELECT TEAMNR FROM TEAMS_NIEUW WHERE DIVISIE = 'ere' Voorbeeld 23.12: SELECT TEAMNR, DIVISIE FROM TEAMS_NIEUW WHERE DIVISIE & POWER(2,3-1) = POWER(2,3-1) Voorbeeld 23.13: SELECT TEAMNR, DIVISIE FROM TEAMS_NIEUW WHERE DIVISIE & 9 = 9 Voorbeeld 23.14: SELECT TEAMNR, LENGTH(REPLACE(CONV((DIVISIE * 1),10,2),'0','')) AS AANTAL FROM TEAMS_NIEUW Voorbeeld 23.15: SELECT TEAMNR, CASE WHEN (DIVISIE & POWER(2,1-1) = POWER(2,1-1)) = 1 THEN 'JA' ELSE 'NEE' END AS ERE, CASE WHEN (DIVISIE & POWER(2,2-1) = POWER(2,2-1)) = 1 THEN 'JA' ELSE 'NEE' END AS EERSTE, CASE WHEN (DIVISIE & POWER(2,3-1) = POWER(2,3-1)) = 1 THEN 'JA' ELSE 'NEE' END AS TWEEDE, CASE WHEN (DIVISIE & POWER(2,4-1) = POWER(2,4-1)) = 1 THEN 'JA' ELSE 'NEE' END AS DERDE FROM TEAMS_NIEUW Voorbeeld 23.16: SELECT DIVISIE, COUNT(*) FROM TEAMS_NIEUW WHERE DIVISIE > 0 OR DIVISIE IS NULL GROUP BY DIVISIE Voorbeeld 23.17: UPDATE TEAMS_NIEUW SET DIVISIE = DIVISIE | POWER(2,3-1) WHERE TEAMNR = 1 Voorbeeld 23.18: UPDATE TEAMS_NIEUW SET DIVISIE = DIVISIE & CONV(1011,2,10) Voorbeeld 23.19: UPDATE TEAMS_NIEUW SET DIVISIE = 0 Antwoord 23.1: CREATE TABLE WEDSTRIJDEN (WEDSTRIJDNR INTEGER NOT NULL PRIMARY KEY, TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, GEWONNEN ENUM('0','1','2','3') NOT NULL, VERLOREN ENUM('0','1','2','3') NOT NULL) Voorbeeld 24.1: DROP TABLE SPELERS Voorbeeld 24.2: DROP TABLE DB8.TAB1 Voorbeeld 24.3: DROP TABLES BESTUURSLEDEN, WEDSTRIJDEN, TEAMS, BOETES, SPELERS Voorbeeld 24.4: RENAME TABLE SPELERS TO TENNISSERS Voorbeeld 24.5: RENAME TABLES SPELERS TO TENNISSERS, BESTUURSLEDEN TO LEDEN Voorbeeld 24.6: ALTER TABLE SPELERS RENAME TO TENNISSERS Voorbeeld 24.7: ALTER TABLE PLAATSNAMEN AUTO_INCREMENT = 10000 COMMENT = 'Nieuw commentaar' Voorbeeld 24.8: ALTER TABLE SPELERS CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci Voorbeeld 24.9: ALTER TABLE SPELERS ORDER BY BONDSNR DESC Voorbeeld 24.10: ALTER TABLE TEAMS ADD SOORT CHAR(1) Voorbeeld 24.11: ALTER TABLE TEAMS ADD SOORT CHAR(1) AFTER TEAMNR Voorbeeld 24.12: ALTER TABLE TEAMS ADD (CATEGORIE VARCHAR(20) NOT NULL, IMAGO INTEGER DEFAULT 10) Voorbeeld 24.13: ALTER TABLE TEAMS DROP SOORT Voorbeeld 24.14: ALTER TABLE SPELERS CHANGE GEB_DATUM GEBOORTEDATUM DATE Voorbeeld 24.15: ALTER TABLE SPELERS CHANGE PLAATS PLAATS VARCHAR(40) NOT NULL Voorbeeld 24.16: ALTER TABLE SPELERS CHANGE PLAATS PLAATS VARCHAR(5) NOT NULL Voorbeeld 24.17: ALTER TABLE SPELERS CHANGE SPELERSNR SPELERSNR SMALLINT Voorbeeld 24.18: ALTER TABLE SPELERS CHANGE PLAATS PLAATS VARCHAR(5) NOT NULL AFTER SPELERSNR Voorbeeld 24.19: ALTER TABLE SPELERS MODIFY PLAATS VARCHAR(5) NOT NULL AFTER SPELERSNR Voorbeeld 24.20: ALTER TABLE BESTUURSLEDEN ALTER FUNCTIE SET DEFAULT 'Lid' ; ALTER TABLE BESTUURSLEDEN MODIFY FUNCTIE CHAR(20) DEFAULT 'Lid' Voorbeeld 24.21: ALTER TABLE BESTUURSLEDEN ALTER FUNCTIE DROP DEFAULT Voorbeeld 24.22: CREATE TABLE T1 (A INTEGER NOT NULL PRIMARY KEY, B INTEGER NOT NULL) ; CREATE TABLE T2 (A INTEGER NOT NULL PRIMARY KEY, B INTEGER NOT NULL, CONSTRAINT C1 CHECK (B > 0), CONSTRAINT FK1 FOREIGN KEY (A) REFERENCES T1 (A)) ; ALTER TABLE T1 ADD CONSTRAINT FK2 FOREIGN KEY (A) REFERENCES T2 (A) Voorbeeld 24.23: ALTER TABLE SPELERS DROP PRIMARY KEY Voorbeeld 24.24: ALTER TABLE T1 DROP CONSTRAINT FK2 Voorbeeld 24.25: ALTER TABLE T2 DROP CONSTRAINT C1 Antwoord 24.1: ALTER TABLE TEAMS ENGINE = MYISAM Antwoord 24.2: ALTER TABLE BESTUURSLEDEN ORDER BY SPELERSNR ASC, FUNCTIE DESC Antwoord 24.3: ALTER TABLE BESTUURSLEDEN CHANGE FUNCTIE BESTUURSFUNCTIE CHAR(20) Antwoord 24.4: ALTER TABLE BESTUURSLEDEN MODIFY BESTUURSFUNCTIE CHAR(30) Antwoord 24.5: ALTER TABLE SPELERS ALTER PLAATS SET DEFAULT 'Den Haag' Voorbeeld 25.4: SELECT * FROM SPELERS WHERE SPELERSNR = 44 Voorbeeld 25.5: SELECT SPELERSNR, PLAATS FROM SPELERS WHERE SPELERSNR < 10 AND PLAATS = 'Den Haag' ORDER BY SPELERSNR Voorbeeld 25.6: SELECT NAAM, VOORLETTERS FROM SPELERS WHERE PLAATS = (SELECT PLAATS FROM SPELERS WHERE SPELERSNR = 44) Voorbeeld 25.7: CREATE INDEX SPEL_PC ON SPELERS (POSTCODE ASC) ; CREATE INDEX SPEL_PC USING BTREE ON SPELERS (POSTCODE ASC) Voorbeeld 25.8: CREATE INDEX SPEL_PLAATS USING HASH ON SPELERS (PLAATS) Voorbeeld 25.9: CREATE INDEX WED_GV ON WEDSTRIJDEN (GEWONNEN, VERLOREN) Voorbeeld 25.10: CREATE UNIQUE INDEX NAAMVOOR ON SPELERS (NAAM, VOORLETTERS) Voorbeeld 25.11: ALTER TABLE TEAMS ADD INDEX TEAMS_DIVISIE USING BTREE (DIVISIE) Voorbeeld 25.12: ALTER TABLE SPELERS ADD UNIQUE INDEX TEAMS_DIVISIE USING HASH (PLAATS, STRAAT, GEB_DATUM) Voorbeeld 25.13: CREATE TABLE WEDSTRIJDEN (WEDSTRIJDNR INTEGER NOT NULL PRIMARY KEY, TEAMNR INTEGER NOT NULL, SPELERSNR INTEGER NOT NULL, GEWONNEN SMALLINT NOT NULL, VERLOREN SMALLINT NOT NULL, INDEX WED_GV (GEWONNEN, VERLOREN)) Voorbeeld 25.14: CREATE TABLE SPELERS (SPELERSNR INTEGER NOT NULL PRIMARY KEY, NAAM CHAR(15) NOT NULL, VOORLETTERS CHAR(3) NOT NULL, GEB_DATUM DATE, GESLACHT CHAR(1) NOT NULL, JAARTOE SMALLINT NOT NULL, STRAAT VARCHAR(30) NOT NULL, HUISNR CHAR(4), POSTCODE CHAR(6), PLAATS VARCHAR(30) NOT NULL, TELEFOON CHAR(13), BONDSNR CHAR(4), UNIQUE INDEX NAAMVOOR USING HASH (NAAM, VOORLETTERS)) Voorbeeld 25.15: DROP INDEX SPEL_PC ON SPELERS ; DROP INDEX WED_GV ON WEDSTRIJDEN ; DROP INDEX NAAMVOOR ON SPELERS Voorbeeld 25.16: CREATE TABLE T1 (KOL1 INTEGER NOT NULL, KOL2 DATE NOT NULL UNIQUE, KOL3 INTEGER NOT NULL, KOL4 INTEGER NOT NULL, PRIMARY KEY (KOL1, KOL4), UNIQUE (KOL3, KOL4), UNIQUE (KOL3, KOL1)) ; CREATE UNIQUE INDEX "PRIMARY" USING BTREE ON T1 (KOL1, KOL4) ; CREATE UNIQUE INDEX KOL2 USING BTREE ON T1 (KOL2) ; CREATE UNIQUE INDEX KOL3 USING BTREE ON T1 (KOL3, KOL4) ; CREATE UNIQUE INDEX KOL3_2 USING BTREE ON T1 (KOL3, KOL1) Voorbeeld 25.17: CREATE TABLE SPELERS_XXL (SPELERSNR INTEGER NOT NULL PRIMARY KEY, NAAM CHAR(15) NOT NULL, VOORLETTERS CHAR(3) NOT NULL, GEB_DATUM DATE, GESLACHT CHAR(1) NOT NULL, JAARTOE SMALLINT NOT NULL, STRAAT VARCHAR(30) NOT NULL, HUISNR CHAR(4), POSTCODE CHAR(6), PLAATS VARCHAR(30) NOT NULL, TELEFOON CHAR(13), BONDSNR CHAR(8)) Voorbeeld 25.18: CREATE PROCEDURE VUL_SPELERS_XXL (IN AANTAL_SPELERS INTEGER) BEGIN DECLARE TELLER INTEGER; TRUNCATE TABLE SPELERS_XXL; COMMIT WORK; SET TELLER = 1; WHILE TELLER <= AANTAL_SPELERS DO INSERT INTO SPELERS_XXL VALUES( TELLER, CONCAT('naam',CAST(TELLER AS CHAR(10))), CASE MOD(TELLER,2) WHEN 0 THEN 'vl1' ELSE 'vl2' END, DATE('1960-01-01') + INTERVAL (MOD(TELLER,300)) MONTH, CASE MOD(TELLER,20) WHEN 0 THEN 'V' ELSE 'M' END, 1980 + MOD(TELLER,20), CONCAT('straat',CAST(TELLER/10 AS UNSIGNED INTEGER)), CAST(CAST(TELLER/10 AS UNSIGNED INTEGER)+1 AS CHAR(4)), CONCAT('p',MOD(TELLER,50)), CONCAT('plaats',MOD(TELLER,10)), '070-6868689', CASE MOD(TELLER,3) WHEN 0 THEN NULL ELSE CAST(TELLER AS CHAR(8)) END); IF MOD(TELLER,1000) = 0 THEN COMMIT WORK; END IF; SET TELLER = TELLER + 1; END WHILE; COMMIT WORK; END Voorbeeld 25.19: CALL VUL_SPELERS_XXL(100000) Voorbeeld 25.20: CREATE INDEX SPELERS_XXL_VOORLETTERS ON SPELERS_XXL(VOORLETTERS) ; CREATE INDEX SPELERS_XXL_POSTCODE ON SPELERS_XXL(POSTCODE) ; CREATE INDEX SPELERS_XXL_STRAAT ON SPELERS_XXL(STRAAT) Voorbeeld 25.21: SELECT TABLE_CREATOR, TABLE_NAME, COUNT(*) FROM INDEXES GROUP BY TABLE_CREATOR, TABLE_NAME HAVING COUNT(*) > 1 Voorbeeld 25.22: SELECT TABLE_CREATOR, TABLE_NAME FROM TABLES AS TAB WHERE NOT EXISTS (SELECT * FROM INDEXES AS IDX WHERE TAB.TABLE_CREATOR = IDX.TABLE_CREATOR AND TAB.TABLE_NAME = TAB.TABLE_NAME AND IDX.UNIQUE_ID = 'YES') Voorbeeld 25.23: SHOW INDEX FROM SPELERS Voorbeeld 26.1: CREATE VIEW WOONPLAATSEN AS SELECT DISTINCT PLAATS FROM SPELERS ; SELECT * FROM WOONPLAATSEN Voorbeeld 26.2: CREATE VIEW WSPELERS AS SELECT SPELERSNR, BONDSNR FROM SPELERS WHERE BONDSNR IS NOT NULL ; SELECT * FROM WSPELERS Voorbeeld 26.3: SELECT * FROM WSPELERS WHERE SPELERSNR BETWEEN 6 AND 44 ; SELECT SPELERSNR, BONDSNR FROM SPELERS WHERE BONDSNR IS NOT NULL AND SPELERSNR BETWEEN 6 AND 44 Voorbeeld 26.4: DELETE FROM WSPELERS WHERE BONDSNR = '7060' Voorbeeld 26.5: CREATE VIEW SOMMIGEN AS SELECT * FROM WSPELERS WHERE SPELERSNR BETWEEN 6 AND 27 ; SELECT * FROM SOMMIGEN Voorbeeld 26.6: CREATE VIEW CIJFERS AS SELECT 0 CIJFER UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9 ; SELECT * FROM CIJFERS Voorbeeld 26.7: CREATE VIEW HAGENEZEN (SPELERSNR, NAAM, VLS, GEBOORTE) AS SELECT SPELERSNR, NAAM, VOORLETTERS, GEB_DATUM FROM SPELERS WHERE PLAATS = 'Den Haag' ; SELECT * FROM HAGENEZEN WHERE SPELERSNR > 90 Voorbeeld 26.8: CREATE VIEW INWONERS AS SELECT PLAATS, COUNT(*) FROM SPELERS GROUP BY PLAATS ; SELECT PLAATS, "COUNT(*)" FROM INWONERS Voorbeeld 26.9: CREATE VIEW VETERANEN AS SELECT * FROM SPELERS WHERE GEB_DATUM < '1960-01-01' ; UPDATE VETERANEN SET GEB_DATUM = '1970-09-01' WHERE SPELERSNR = 2 ; CREATE VIEW VETERANEN AS SELECT * FROM SPELERS WHERE GEB_DATUM < '1960-01-01' WITH CHECK OPTION Voorbeeld 26.10: CREATE VIEW RIJSWIJKSE_VETERANEN AS SELECT * FROM VETERANEN WHERE PLAATS = 'Rijswijk' WITH CASCADED CHECK OPTION Voorbeeld 26.11: CREATE DEFINER = 'JACO'@'%' VIEW JACO_VIEW AS SELECT * FROM SPELERS WHERE SPELERSNR > 100 Voorbeeld 26.12: CREATE SQL SECURITY INVOKER ALGORITHM = MERGE VIEW SIMPELE_VIEW AS SELECT SPELERSNR FROM SPELERS WHERE SPELERSNR > 100 Voorbeeld 26.13: DROP VIEW WSPELERS Voorbeeld 26.14: SELECT TABLE_NAME FROM TABLES WHERE TABLE_NAME = 'VOORRAAD' AND TABLE_CREATOR = 'TENNIS' UNION SELECT VIEW_NAME FROM VIEWS WHERE VIEW_NAME = 'VOORRAAD' AND VIEW_CREATOR = 'TENNIS' Voorbeeld 26.15: CREATE VIEW DUREN AS SELECT * FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES) ; SELECT SPELERSNR FROM DUREN WHERE PLAATS = 'Den Haag' ; SELECT SPELERSNR FROM (SELECT * FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES)) AS VIEWFORMULE WHERE PLAATS = 'Den Haag' Voorbeeld 26.16: DELETE FROM HAGENEZEN WHERE GEBOORTE > '1965-12-31' ; DELETE FROM SPELERS WHERE GEB_DATUM > '1965-12-31' AND PLAATS = 'Den Haag' ; SELECT * FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES) ; SELECT SPELERSNR FROM WHERE PLAATS = 'Den Haag' Voorbeeld 26.17: CREATE VIEW DURE_SPELERS AS ALORITHM = TEMPTABLE SELECT * FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES) Voorbeeld 26.18: SELECT * FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES) AND PLAATS = 'Den Haag' ; SELECT PLAATS, COUNT(*) FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES) GROUP BY PLAATS ; CREATE VIEW BSPELERS AS SELECT * FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES) ; SELECT * FROM BSPELERS WHERE PLAATS = 'Den Haag' ; SELECT PLAATS, COUNT(*) FROM BSPELERS GROUP BY PLAATS Voorbeeld 26.20: SELECT DISTINCT NAAM, VOORLETTERS, DIVISIE FROM SPELERS AS S, WEDSTRIJDEN AS W, TEAMS AS T WHERE S.SPELERSNR = W.SPELERSNR AND W.TEAMNR = T.TEAMNR ; CREATE VIEW TEAMS (TEAMNR, SPELERSNR, DIVISIE) AS SELECT DISTINCT TEAMNR, AANVOERDER, DIVISIE FROM RESULTAAT ; CREATE VIEW WEDSTRIJDEN AS SELECT WEDSTRIJDNR, TEAMNR, SPELERSNR, GEWONNEN, VERLOREN FROM RESULTAAT ; CREATE VIEW GROTER AS SELECT DISTINCT SPELERSNR FROM BOETES WHERE BEDRAG > (SELECT AVG(BEDRAG) FROM BOETES WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR = 2)) ; CREATE VIEW ERE AS SELECT DISTINCT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR IN (SELECT TEAMNR FROM TEAMS WHERE DIVISIE = 'ere') ; SELECT NAAM, VOORLETTERS FROM SPELERS WHERE PLAATS = 'Den Haag' AND SPELERSNR IN (SELECT SPELERSNR FROM GROTER) AND SPELERSNR IN (SELECT SPELERSNR FROM ERE) Voorbeeld 26.21: CREATE VIEW SPELERSG AS SELECT * FROM SPELERS WHERE GESLACHT IN ('M', 'V') WITH CHECK OPTION Antwoord 26.1: CREATE VIEW AANTALSP (TEAMNR, AANTAL) AS SELECT TEAMNR, COUNT(*) FROM WEDSTRIJDEN GROUP BY TEAMNR Antwoord 26.2: CREATE VIEW WINNAARS AS SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE GEWONNEN > VERLOREN) Antwoord 26.3: CREATE VIEW TOTALEN (SPELERSNR, SOM_BOETES) AS SELECT SPELERSNR, SUM(BEDRAG) FROM BOETES GROUP BY SPELERSNR Antwoord 26.5.1: SELECT YEAR(GEBOORTE) – 1900 AS VERSCHIL, COUNT(*) FROM (SELECT SPELERSNR, NAAM, VOORLETTERS, GEB_DATUM AS GEBOORTE FROM SPELERS WHERE PLAATS = 'Den Haag') AS HAGENAAR GROUP BY VERSCHIL Antwoord 26.5.2: SELECT DUREN.SPELERSNR FROM (SELECT * FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES)) AS DUREN, (SELECT SPELERSNR, NAAM, VOORLETTERS, GEB_DATUM AS GEBOORTE FROM SPELERS WHERE PLAATS = 'Den Haag') AS HAGENAAR WHERE DUREN.SPELERSNR = HAGENAAR.SPELERSNR Antwoord 26.5.3: UPDATE SPELERS SET GEB_DATUM = '1950-04-04' WHERE SPELERSNR = 7 Voorbeeld 27.1: SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA Voorbeeld 27.2: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'TENNIS' ORDER BY TABLE_NAME Voorbeeld 27.3: CREATE DATABASE TENNIS2 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci Voorbeeld 27.4: SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA Voorbeeld 27.5: ALTER DATABASE TENNIS2 DEFAULT CHARACTER SET sjis DEFAULT COLLATE sjis_japanese_ci Voorbeeld 27.6: ALTER DATABASE TENNIS CHARACTER SET hp8 ; CREATE TABLE KARSETHP8 (K1 CHAR(10) NOT NULL, K2 VARCHAR(10)) ; SELECT COLUMN_NAME, CHARACTER_SET_NAME, COLLATION_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'KARSETHP8' Voorbeeld 27.7: ALTER DATABASE TENNIS COLLATE hp8_bin Voorbeeld 27.8: DROP DATABASE TENNIS2 Voorbeeld 28.1: CREATE USER 'CHRIS'@'localhost' IDENTIFIED BY 'CHRISSEC', 'PAUL'@'localhost' IDENTIFIED BY 'LUAP' Voorbeeld 28.2: CREATE USER 'CHRIS1'@'sql.r20.com' IDENTIFIED BY 'CHRISSEC1', 'CHRIS2'@'%' IDENTIFIED BY 'CHRISSEC2', 'CHRIS3'@'%.r20.com' IDENTIFIED BY 'CHRISSEC3' ; SELECT * FROM USERS WHERE USER_NAME LIKE '''CHRIS%' ORDER BY 1 Voorbeeld 28.3: DROP USER JAN Voorbeeld 28.4: RENAME USER 'CHRIS1'@'sql.r20.com' TO 'COMBO1'@'sql.r20.com', 'CHRIS2'@'%' TO 'COMBO2'@'sql.r20.com' ; SELECT * FROM USERS WHERE USER_NAME LIKE '''COMBO%' ORDER BY 1 Voorbeeld 28.5: SET PASSWORD FOR 'JOHN' = PASSWORD('JOHN1') Voorbeeld 28.6: SET PASSWORD FOR ROB = PASSWORD('ROBSEC') Voorbeeld 28.7: GRANT SELECT ON SPELERS TO JAMIE Voorbeeld 28.8: GRANT SELECT ON SPELERS TO 'BOB'@'localhost' IDENTIFIED BY 'BOBPASS' Voorbeeld 28.9: GRANT INSERT, UPDATE ON TEAMS TO JAMIE, PIET Voorbeeld 28.10: GRANT UPDATE (SPELERSNR, DIVISIE) ON TEAMS TO PAUL Voorbeeld 28.11: GRANT SELECT ON TENNIS.* TO PAUL Voorbeeld 28.12: GRANT CREATE, ALTER, DROP, CREATE VIEW ON TENNIS.* TO JOHN Voorbeeld 28.13: GRANT SELECT ON INFORMATION_SCHEMA.* TO PAUL Voorbeeld 28.14: GRANT SELECT, INSERT ON * TO ALYSSA Voorbeeld 28.15: GRANT CREATE, ALTER, DROP ON *.* TO MAX Voorbeeld 28.16: GRANT CREATE USER ON *.* TO ALYSSA ; GRANT ALL PRIVILEGES ON *.* TO ROOT Voorbeeld 28.17: GRANT REFERENCES ON TEAMS TO JIM WITH GRANT OPTION ; GRANT REFERENCES ON JIM TO PAUL Voorbeeld 28.18: GRANT INSERT ON BESTUURSLEDEN TO MARK ; GRANT SELECT ON BESTUURSLEDEN TO MARK WITH GRANT OPTION Voorbeeld 28.19: GRANT SELECT ON *.* TO SAM WITH GRANT OPTION Voorbeeld 28.20: GRANT SELECT ON * TO JIM WITH MAX_QUERIES_PER_HOUR 1 Voorbeeld 28.21: SELECT GRANTEE FROM USER_AUTHS WHERE PRIVILEGE = 'SELECT' UNION SELECT GRANTEE FROM DATABASE_AUTHS WHERE DATABASE_NAME = 'TENNIS' AND PRIVILEGE = 'SELECT' UNION SELECT GRANTEE FROM TABLE_AUTHS WHERE TABLE_CREATOR = 'TENNIS' AND PRIVILEGE = 'SELECT' AND TABLE_NAME = 'SPELERS' Voorbeeld 28.22: REVOKE SELECT ON SPELERS FROM JOHN Voorbeeld 28.23: REVOKE REFERENCES ON TEAMS FROM JOHN Voorbeeld 28.24: REVOKE INSERT, SELECT ON BESTUURSLEDEN FROM MARK ; REVOKE GRANT OPTION ON BESTUURSLEDEN FROM MARK Voorbeeld 28.25: CREATE USER 'DIANE'@'localhost' IDENTIFIED BY 'GEHEIM' ; CREATE VIEW NAW AS SELECT NAAM, VOORLETTERS, VOORVOEGSELS, STRAAT, HUISNR, PLAATS FROM SPELERS WHERE BONDSNR IS NULL ; GRANT SELECT ON NAW TO DIANE Voorbeeld 28.26: CREATE USER 'GERARD'@'localhost' IDENTIFIED BY 'XYZ1234' ; CREATE VIEW INWONERS (PLAATS, AANTAL) AS SELECT PLAATS, COUNT(*) FROM SPELERS GROUP BY PLAATS ; GRANT SELECT ON INWONERS TO GERARD Antwoord 28.1: CREATE USER RONALDO IDENTIFIED BY 'NIKE' Antwoord 28.2: DROP USER RONALDO Antwoord 28.3: GRANT SELECT, INSERT ON SPELERS TO RONALDO Antwoord 28.4: GRANT UPDATE(STRAAT, HUISNR, POSTCODE, PLAATS) ON SPELERS TO RONALDO Antwoord 28.5: GRANT INSERT ON TENNIS.* TO JACO, DIANE Voorbeeld 29.1: SHOW INDEX FROM SPELERS Voorbeeld 29.2: CREATE INDEX SPELERS_PLAATS ON SPELERS(PLAATS) ; SHOW INDEX FROM SPELERS Voorbeeld 29.3: ANALYZE TABLE SPELERS ; SHOW INDEX FROM SPELERS Voorbeeld 29.4: CHECKSUM TABLE SPELERS Voorbeeld 29.5: OPTIMIZE TABLE SPELERS Voorbeeld 29.6: CHECK TABLE SPELERS Voorbeeld 29.7: SELECT TABLE_NAME, CHECK_TIME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'SPELERS' AND TABLE_SCHEMA = 'TENNIS' Voorbeeld 29.8: REPAIR TABLE SPELERS Voorbeeld 29.9: BACKUP TABLE SPELERS TO 'C:/WORKING_AREA' Voorbeeld 29.10: RESTORE TABLE SPELERS FROM 'C:/WORKING_AREA' Voorbeeld 31.1: CREATE PROCEDURE DELETE_WEDSTRIJDEN (IN P_SPELERSNR INTEGER) BEGIN DELETE FROM WEDSTRIJDEN WHERE SPELERSNR = P_SPELERSNR; END Voorbeeld 31.2: CALL DELETE_WEDSTRIJDEN(8) Voorbeeld 31.5: CREATE PROCEDURE TEST (OUT GETAL1 INTEGER) BEGIN DECLARE GETAL2 INTEGER DEFAULT 100; SET GETAL1 = GETAL2; END # CALL TEST (@GETAL) # SELECT @GETAL Voorbeeld 31.6: CREATE PROCEDURE TEST (OUT GETAL1 INTEGER) BEGIN DECLARE GETAL2 INTEGER DEFAULT (SELECT COUNT(*) FROM SPELERS); SET GETAL1 = GETAL2; END Voorbeeld 31.7: CREATE PROCEDURE VERSCHIL (IN P1 INTEGER, IN P2 INTEGER, OUT P3 INTEGER) BEGIN IF P1 > P2 THEN SET P3 = 1; ELSEIF P1 = P2 THEN SET P3 = 2; ELSE SET P3 = 3; END IF; END Voorbeeld 31.8: CREATE PROCEDURE FIBONACCI (INOUT GETAL1 INTEGER, INOUT GETAL2 INTEGER, INOUT GETAL3 INTEGER) BEGIN SET GETAL3 = GETAL1 + GETAL2; IF GETAL3 > 10000 THEN SET GETAL3 = GETAL3 - 10000; END IF; SET GETAL1 = GETAL2; SET GETAL2 = GETAL3; END # SET @A=16, @B=27 # CALL FIBONACCI(@A,@B,@C) # SELECT @C # CALL FIBONACCI(@A,@B,@C) # SELECT @C # CALL FIBONACCI(@A,@B,@C) # SELECT @C Voorbeeld 31.9: CREATE PROCEDURE GROTER (OUT T CHAR(10)) BEGIN IF (SELECT COUNT(*) FROM SPELERS) > (SELECT COUNT(*) FROM BOETES) THEN SET T = 'SPELERS'; ELSEIF (SELECT COUNT(*) FROM SPELERS) = (SELECT COUNT(*) FROM BOETES) THEN SET T = 'GELIJK'; ELSE SET T = 'BOETES'; END IF; END Voorbeeld 31.10: CREATE PROCEDURE LEEFTIJD (IN START_DATUM DATE, IN EIND_DATUM DATE, OUT JAREN INTEGER, OUT MAANDEN INTEGER, OUT DAGEN INTEGER) BEGIN DECLARE VOLGENDE_DATUM, VORIGE_DATUM DATE; SET JAREN = 0; SET VORIGE_DATUM = START_DATUM; SET VOLGENDE_DATUM = START_DATUM + INTERVAL 1 YEAR; WHILE VOLGENDE_DATUM < EIND_DATUM DO SET JAREN = JAREN + 1; SET VORIGE_DATUM = VOLGENDE_DATUM; SET VOLGENDE_DATUM = VOLGENDE_DATUM + INTERVAL 1 YEAR; END WHILE; SET MAANDEN = 0; SET VOLGENDE_DATUM = VORIGE_DATUM + INTERVAL 1 MONTH; WHILE VOLGENDE_DATUM < EIND_DATUM DO SET MAANDEN = MAANDEN + 1; SET VORIGE_DATUM = VOLGENDE_DATUM; SET VOLGENDE_DATUM = VOLGENDE_DATUM + INTERVAL 1 MONTH; END WHILE; SET DAGEN = 0; SET VOLGENDE_DATUM = VORIGE_DATUM + INTERVAL 1 DAY; WHILE VOLGENDE_DATUM <= EIND_DATUM DO SET DAGEN = DAGEN + 1; SET VORIGE_DATUM = VOLGENDE_DATUM; SET VOLGENDE_DATUM = VOLGENDE_DATUM + INTERVAL 1 DAY; END WHILE; END # SET @START = '1991-01-12' # SET @EIND = '1999-07-09' # CALL LEEFTIJD (@START, @EIND, @JAAR, @MAAND, @DAG) # SELECT @START, @EIND, @JAAR, @MAAND, @DAG Voorbeeld 31.11: CREATE PROCEDURE EXITJE (OUT P1 INTEGER, OUT P2 INTEGER) BEGIN SET P1 = 1; SET P2 = 1; BLOK1 : BEGIN LEAVE BLOK1; SET P2 = 3; END; SET P1 = 4; END Voorbeeld 31.12: CREATE PROCEDURE WACHTEN (IN WACHT_SECONDEN INTEGER) BEGIN DECLARE EIND_TIJD INTEGER DEFAULT NOW() + INTERVAL WACHT_SECONDEN SECOND; WACHT_LOOP: LOOP IF NOW() > EIND_TIJD THEN LEAVE WACHT_LOOP; END IF; END LOOP WACHT_LOOP; END Voorbeeld 31.13: CREATE PROCEDURE OPNIEUW (OUT RESULTAAT INTEGER) BEGIN DECLARE TELLER INTEGER DEFAULT 1; SET RESULTAAT = 0; LOOP1: WHILE TELLER <= 1000 DO SET TELLER = TELLER + 1; IF TELLER > 100 THEN LEAVE LOOP1; ELSE ITERATE LOOP1; END IF; SET RESULTAAT = TELLER * 10; END WHILE LOOP1; END Voorbeeld 31.14: CALL WACHTEN ((SELECT COUNT(*) FROM BOETES)) # CREATE TABLE SPELERS_MET_OUDERS (SPELERSNR INTEGER NOT NULL PRIMARY KEY, VADER_SPELERSNR INTEGER, MOEDER_SPELERSNR INTEGER) # ALTER TABLE SPELERS_MET_OUDERS ADD FOREIGN KEY (VADER_SPELERSNR) REFERENCES SPELERS_MET_OUDERS (SPELERSNR) # ALTER TABLE SPELERS_MET_OUDERS ADD FOREIGN KEY (MOEDER_SPELERSNR) REFERENCES SPELERS_MET_OUDERS (SPELERSNR) # INSERT INTO SPELERS_MET_OUDERS VALUES (9,NULL,NULL), (8,NULL,NULL), (7,NULL,NULL), (6,NULL,NULL), (5,NULL,NULL), (4,8,9), (3,6,7), (2,4,5), (1,2,3) Voorbeeld 31.15: CREATE PROCEDURE SOM_AANTAL_OUDERS (IN P_SPELERSNR INTEGER, INOUT AANTAL INTEGER) BEGIN DECLARE V_VADER, V_MOEDER INTEGER; SET V_VADER = (SELECT VADER_SPELERSNR FROM SPELERS_MET_OUDERS WHERE SPELERSNR = P_SPELERSNR); SET V_MOEDER = (SELECT MOEDER_SPELERSNR FROM SPELERS_MET_OUDERS WHERE SPELERSNR = P_SPELERSNR); IF V_VADER IS NOT NULL THEN CALL SOM_AANTAL_OUDERS(V_VADER, AANTAL); SET AANTAL = AANTAL + 1; END IF; IF V_MOEDER IS NOT NULL THEN CALL SOM_AANTAL_OUDERS(V_MOEDER, AANTAL); SET AANTAL = AANTAL + 1; END IF; END # SET @AANTAL = 0 # CALL SOM_AANTAL_OUDERS (1, @AANTAL) # SELECT @AANTAL Voorbeeld 31.16: CREATE PROCEDURE SOM_BOETES_SPELER (IN P_SPELERSNR INTEGER, OUT SOM_BOETES DECIMAL(8,2)) BEGIN SELECT SUM(BEDRAG) INTO SOM_BOETES FROM BOETES WHERE SPELERSNR = P_SPELERSNR; END # CALL SOM_BOETES_SPELER(27, @SOM) # SELECT @SOM # SELECT VADER_SPELERSNR, MOEDER_SPELERSNR INTO V_VADER, V_MOEDER FROM SPELERS_MET_OUDERS WHERE SPELERSNR = P_SPELERSNR Voorbeeld 31.17: CREATE PROCEDURE GEEF_ADRES (IN P_SPELERSNR SMALLINT, OUT P_STRAAT VARCHAR(30), OUT P_HUISNR CHAR(4), OUT P_PLAATS VARCHAR(30), OUT P_POSTCODE CHAR(6)) BEGIN SELECT PLAATS, STRAAT, HUISNR, POSTCODE INTO P_PLAATS, P_STRAAT, P_HUISNR, P_POSTCODE FROM SPELERS WHERE SPELERSNR = P_SPELERSNR; END Voorbeeld 31.18: CREATE TABLE FIBON (GETAL1 INTEGER NOT NULL PRIMARY KEY, GETAL2 INTEGER NOT NULL) # CREATE PROCEDURE FIBONACCI_START() BEGIN DELETE FROM FIBON; INSERT INTO FIBON (GETAL1, GETAL2) VALUES (16, 27); END # CREATE PROCEDURE FIBONACCI_GEEF (INOUT GETAL INTEGER) BEGIN DECLARE G1, G2 INTEGER; SELECT GETAL1, GETAL2 INTO G1, G2 FROM FIBON; SET GETAL = G1 + G2; IF GETAL > 10000 THEN SET GETAL = GETAL - 10000; END IF; SET G1 = G2; SET G2 = GETAL; UPDATE FIBON SET GETAL1 = G1, GETAL2 = G2; END # CALL FIBONACCI_START() # CALL FIBONACCI_GEEF(@C) # SELECT @C # CALL FIBONACCI_GEEF(@C) # SELECT @C # CALL FIBONACCI_GEEF(@C) # SELECT @C Voorbeeld 31.19: CREATE PROCEDURE DELETE_SPELER (IN P_SPELERSNR INTEGER) BEGIN DECLARE AANTAL_BOETES INTEGER; DECLARE AANTAL_TEAMS INTEGER; SELECT COUNT(*) INTO AANTAL_BOETES FROM BOETES WHERE SPELERSNR = P_SPELERSNR; SELECT COUNT(*) INTO AANTAL_TEAMS FROM TEAMS WHERE SPELERSNR = P_SPELERSNR_; IF AANTAL_BOETES = 0 AND AANTAL_TEAMS = 0 THEN CALL DELETE_WEDSTRIJDEN(P_SPELERSNR); DELETE FROM SPELERS WHERE SPELERSNR = P_SPELERSNR; END IF; END Voorbeeld 31.20: CREATE PROCEDURE DUBBEL (OUT P_VERWERKT SMALLINT) BEGIN SET P_VERWERKT = 1; INSERT INTO TEAMS VALUES (2,27,'derde'); SET P_VERWERKT = 2; END # CALL DUBBEL(VERWERKT) Voorbeeld 31.21: CREATE PROCEDURE FOUTJE1 (OUT ERROR CHAR(5)) BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET ERROR = '23000'; SET ERROR = '00000'; INSERT INTO TEAMS VALUES (2,27,'derde'); END Voorbeeld 31.22: CREATE PROCEDURE FOUTJE2 (OUT ERROR CHAR(5)) BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET ERROR = '23000'; DECLARE CONTINUE HANDLER FOR SQLSTATE '21S01' SET ERROR = '21S01'; SET ERROR = '00000'; INSERT INTO TEAMS VALUES (2,27,'derde',5); END Voorbeeld 31.23: CREATE PROCEDURE FOUTJE3 (OUT ERROR CHAR(5)) BEGIN DECLARE CONTINUE HANDLER FOR SQLWARNING, NOT FOUND, SQLEXCEPTION SET ERROR = 'XXXXX'; SET ERROR = '00000'; INSERT INTO TEAMS VALUES (2,27,'derde'); END Voorbeeld 31.24: CREATE PROCEDURE FOUTJE4 (OUT ERROR CHAR(5)) BEGIN DECLARE NIET_UNIEK CONDITION FOR SQLSTATE '23000'; DECLARE CONTINUE HANDLER FOR NIET_UNIEK SET ERROR = '23000'; SET ERROR = '00000'; INSERT INTO TEAMS VALUES (2,27,'derde'); END Voorbeeld 31.25: CREATE PROCEDURE FOUTJE5 (OUT ERROR CHAR(5)) BEGIN DECLARE NIET_UNIEK CONDITION FOR SQLSTATE '23000'; DECLARE CONTINUE HANDLER FOR NIET_UNIEK SET ERROR = '23000'; BEGIN DECLARE CONTINUE HANDLER FOR NIET_UNIEK SET ERROR = '23000'; END; BEGIN DECLARE CONTINUE HANDLER FOR NIET_UNIEK SET ERROR = '00000'; INSERT INTO TEAMS VALUES (2,27,'derde'); END; END # CREATE PROCEDURE FOUTJE6 () BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @VERWERKT = 100; BEGIN DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @VERWERKT = 200; INSERT INTO TEAMS VALUES (2,27,'derde'); END; END Voorbeeld 31.26: CREATE PROCEDURE AANTAL_SPELERS (OUT AANTAL INTEGER) BEGIN DECLARE EEN_SPELERSNR INTEGER; DECLARE FOUND BOOLEAN DEFAULT TRUE; DECLARE C_SPELERS CURSOR FOR SELECT SPELERSNR FROM SPELERS; DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND = FALSE; SET AANTAL = 0; OPEN C_SPELERS; FETCH C_SPELERS INTO EEN_SPELERSNR; WHILE FOUND DO SET AANTAL = AANTAL + 1; FETCH C_SPELERS INTO EEN_SPELERSNR; END WHILE; CLOSE C_SPELERS; END Voorbeeld 31.27: CREATE PROCEDURE DELETE_OUDER_DAN_30() BEGIN DECLARE V_LEEFTIJD, V_SPELERSNR,V_JAREN, V_MAANDEN, V_DAGEN INTEGER; DECLARE V_GEB_DATUM DATE; DECLARE FOUND BOOLEAN DEFAULT TRUE; DECLARE C_SPELERS CURSOR FOR SELECT SPELERSNR, GEB_DATUM FROM SPELERS; DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND = FALSE; OPEN C_SPELERS; FETCH C_SPELERS INTO V_SPELERSNR, V_GEB_DATUM; WHILE FOUND DO CALL LEEFTIJD(V_GEB_DATUM, NOW(), V_JAREN, V_MAANDEN, V_DAGEN); IF V_JAREN > 30 THEN DELETE FROM BOETES WHERE SPELERSNR = V_SPELERSNR; END IF; FETCH C_SPELERS INTO V_SPELERSNR, V_GEB_DATUM; END WHILE; CLOSE C_SPELERS; END Voorbeeld 31.28: CREATE PROCEDURE TOP_DRIE (IN P_SPELERSNR INTEGER, OUT OK BOOLEAN) BEGIN DECLARE EEN_SPELERSNR, SALDO, VOLGNR INTEGER; DECLARE FOUND BOOLEAN; DECLARE SALDO_SPELERS CURSOR FOR SELECT SPELERSNR, SUM(GEWONNEN) - SUM(VERLOREN) FROM WEDSTRIJDEN GROUP BY SPELERSNR ORDER BY 2; DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND = FALSE; SET VOLGNR = 0; SET FOUND = TRUE; SET OK = FALSE; OPEN SALDO_SPELERS; FETCH SALDO_SPELERS INTO EEN_SPELERSNR, SALDO; WHILE FOUND AND VOLGNR < 3 AND OK = FALSE DO SET VOLGNR = VOLGNR + 1; IF EEN_SPELERSNR = P_SPELERSNR THEN SET OK = TRUE; END IF; FETCH SALDO_SPELERS INTO EEN_SPELERSNR, SALDO; END WHILE; CLOSE SALDO_SPELERS; END Voorbeeld 31.29: CREATE PROCEDURE AANTAL_BOETES (IN V_SPELERSNR INTEGER, OUT AANTAL INTEGER) BEGIN DECLARE EEN_SPELERSNR INTEGER; DECLARE FOUND BOOLEAN DEFAULT TRUE; DECLARE C_SPELERS CURSOR FOR SELECT SPELERSNR FROM BOETES WHERE SPELERSNR = V_SPELERSNR; DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND = FALSE; SET AANTAL = 0; OPEN C_SPELERS; FETCH C_SPELERS INTO EEN_SPELERSNR; WHILE FOUND DO SET AANTAL = AANTAL + 1; FETCH C_SPELERS INTO EEN_SPELERSNR; END WHILE; CLOSE C_SPELERS; END Voorbeeld 31.30: CREATE PROCEDURE ALLE_TEAMS() BEGIN SELECT * FROM TEAMS; END # CALL ALLE_TEAMS() Voorbeeld 31.31: CREATE PROCEDURE AANTALLEN_RIJEN() BEGIN SELECT COUNT(*) FROM TEAMS; SELECT COUNT(*) FROM BOETES; END # CALL AANTALLEN_RIJEN() Voorbeeld 31.32: CREATE PROCEDURE GEBRUIKERSVARIABELE () BEGIN SET @VAR1 = 1; END # CALL GEBRUIKERSVARIABELE () # SELECT @VAR1 Voorbeeld 31.33: CREATE DEFINER = 'CHRIS3'@'%' PROCEDURE PIPOWER (OUT VAR1 DECIMAL(10,5)) BEGIN SET VAR1 = POWER(PI(),2); END Voorbeeld 31.34: CREATE PROCEDURE POWERPOWER (IN P1 INTEGER, OUT P2 INTEGER) DETERMINISTIC BEGIN SET P2 = POWER(POWER(P1,2),2); END Voorbeeld 31.35: CREATE PROCEDURE RUIMOP () NO SQL BEGIN DELETE FROM BOETES; END Voorbeeld 31.36: SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'INFORMATION_SCHEMA' AND TABLE_NAME = 'ROUTINES' ORDER BY ORDINAL_POSITION Voorbeeld 31.37: SHOW PROCEDURE STATUS LIKE 'FIBONACCI' Voorbeeld 31.38: SHOW CREATE PROCEDURE FIBONACCI Voorbeeld 31.39: DROP PROCEDURE DELETE_SPELER Voorbeeld 31.40: GRANT EXECUTE ON PROCEDURE DELETE_WEDSTRIJDEN TO JOHN Voorbeeld 32.1: CREATE FUNCTION DOLLARS(BEDRAG DECIMAL(7,2)) RETURNS DECIMAL(7,2) BEGIN RETURN BEDRAG * (1 / 0.8); END # SELECT BETALINGSNR, BEDRAG, DOLLARS(BEDRAG) FROM BOETES WHERE BETALINGSNR <= 3 Voorbeeld 32.2: CREATE FUNCTION AANTAL_SPELERS() RETURNS INTEGER BEGIN RETURN (SELECT COUNT(*) FROM SPELERS); END # SELECT AANTAL_SPELERS() Voorbeeld 32.3: CREATE FUNCTION AANTAL_BOETES (P_SPELERSNR INTEGER) RETURNS INTEGER BEGIN RETURN (SELECT COUNT(*) FROM BOETES WHERE SPELERSNR = P_SPELERSNR); END # CREATE FUNCTION AANTAL_WEDSTRIJDEN (P_SPELERSNR INTEGER) RETURNS INTEGER BEGIN RETURN (SELECT COUNT(*) FROM WEDSTRIJDEN WHERE SPELERSNR = P_SPELERSNR); END # SELECT SPELERSNR, NAAM, VOORLETTERS FROM SPELERS WHERE AANTAL_BOETES(SPELERSNR) > AANTAL_WEDSTRIJDEN(SPELERSNR) Voorbeeld 32.4: SELECT TEAMNR, DIVISIE FROM TEAMS_NIEUW WHERE DIVISIE & POWER(2,3-1) = POWER(2,3-1) # CREATE FUNCTION POSITIE_IN_SET (P_KOLOM BIGINT, POSITIE SMALLINT) RETURNS BOOLEAN BEGIN RETURN (P_KOLOM & POWER(2, POSITIE-1) = POWER(2,POSITIE-1)); END # SELECT TEAMNR, DIVISIE FROM TEAMS_NIEUW WHERE POSITIE_IN_SET(DIVISIE, 3) Voorbeeld 32.5: CREATE FUNCTION AANTAL_DAGEN (START_DATUM DATE, EIND_DATUM DATE) RETURNS INTEGER BEGIN DECLARE DAGEN INTEGER; DECLARE VOLGENDE_DATUM, VORIGE_DATUM DATE; SET DAGEN = 0; SET VOLGENDE_DATUM = START_DATUM + INTERVAL 1 DAY; WHILE VOLGENDE_DATUM <= EIND_DATUM DO SET DAGEN = DAGEN + 1; SET VORIGE_DATUM = VOLGENDE_DATUM; SET VOLGENDE_DATUM = VOLGENDE_DATUM + INTERVAL 1 DAY; END WHILE; RETURN DAGEN; END Voorbeeld 32.6: CREATE FUNCTION DELETE_SPELER (P_SPELERSNR INTEGER) RETURNS BOOLEAN BEGIN DECLARE AANTAL_BOETES INTEGER; DECLARE AANTAL_TEAMS INTEGER; DECLARE EXIT HANDLER FOR SQLWARNING RETURN FALSE; DECLARE EXIT HANDLER FOR SQLEXCEPTION RETURN FALSE; SELECT COUNT(*) INTO AANTAL_BOETES FROM BOETES WHERE SPELERSNR = P_SPELERSNR; SELECT COUNT(*) INTO AANTAL_TEAMS FROM TEAMS WHERE SPELERSNR = P_SPELERSNR; IF AANTAL_BOETES = 0 AND AANTAL_TEAMS = 0 THEN DELETE FROM WEDSTRIJDEN WHERE SPELERSNR = P_SPELERSNR; DELETE FROM SPELERS WHERE SPELERSNR = P_SPELERSNR; END IF; RETURN TRUE; END Voorbeeld 32.7: CREATE FUNCTION GEEF_AANTAL_SPELERS() RETURNS INTEGER BEGIN DECLARE AANTAL INTEGER; CALL AANTAL_SPELERS(AANTAL); RETURN AANTAL; END Voorbeeld 32.8: CREATE FUNCTION OVERLAP_TUSSEN_PERIODES (PERIODE1_START DATETIME, PERIODE1_EIND DATETIME, PERIODE2_START DATETIME, PERIODE2_EIND DATETIME) RETURNS BOOLEAN BEGIN DECLARE TIJDELIJKE_DATUM DATETIME; IF PERIODE1_START > PERIODE1_EIND THEN SET TIJDELIJKE_DATUM = PERIODE1_START; SET PERIODE1_START = PERIODE1_EIND; SET PERIODE1_EIND = TIJDELIJKE_DATUM; END IF; IF PERIODE2_START > PERIODE2_EIND THEN SET TIJDELIJKE_DATUM = PERIODE2_START; SET PERIODE2_START = PERIODE2_EIND; SET PERIODE2_EIND = TIJDELIJKE_DATUM; END IF; RETURN NOT(PERIODE1_EIND < PERIODE2_START OR PERIODE2_EIND < PERIODE1_START); END Voorbeeld 32.9: SELECT * FROM BESTUURSLEDEN WHERE OVERLAP_TUSSEN_PERIODES(BEGIN_DATUM,EIND_DATUM, '1991-06-30','1992-06-30') ORDER BY 1, 2 Voorbeeld 32.10: DROP FUNCTION PLEK_IN_SET Voorbeeld 33.1: CREATE TABLE MUTATIES (GEBRUIKER CHAR(30) NOT NULL, MUT_TIJDSTIP TIMESTAMP NOT NULL, MUT_SPELERSNR INTEGER NOT NULL, MUT_TYPE CHAR(1) NOT NULL, MUT_SPELERSNR_NEW INTEGER, PRIMARY KEY (GEBRUIKER, MUT_TIJDSTIP, MUT_SPELERSNR, MUT_TYPE)) Voorbeeld 33.2: CREATE TRIGGER INSERT_SPELER AFTER INSERT ON SPELERS FOR EACH ROW BEGIN INSERT INTO MUTATIES (GEBRUIKER, MUT_TIJDSTIP, MUT_SPELERSNR, MUT_TYPE, MUT_SPELERSNR_NEW) VALUES (USER, CURDATE(), NEW.SPELERSNR, 'I', NULL); END # INSERT INTO SPELERS VALUES (2000, 'Brant', 'K', '1959-06-25', 'M', 1978, 'Moskoulaan', '80', '5674BF', 'Den Haag', '070-346734', '6377') # SELECT * FROM MUTATIES WHERE GEBRUIKER = CURRENT_USER AND MUT_SNR = 2000 AND MUT_TIJDSTIP = (SELECT MAX(MUT_TIJDSTIP) FROM MUTATIES WHERE GEBRUIKER = CURRENT_USER AND MUT_SNR = 2000) # CREATE PROCEDURE INSERT_MUTATIE (IN MSNR INTEGER, IN MTYPE CHAR(1), IN MSNR_NEW INTEGER) BEGIN INSERT INTO MUTATIES (GEBRUIKER, MUT_TIJDSTIP, MUT_SPELERSNR, MUT_TYPE, MUT_SPELERSNR_NEW) VALUES (USER, CURDATE(), MSNR, MTYPE, MSNR_NEW); END # CREATE TRIGGER INSERT_SPELER AFTER INSERT ON SPELERS FOR EACH ROW BEGIN CALL INSERT_MUTATIE (NEW.SPELERSNR, 'I', NULL); END Voorbeeld 33.3: CREATE TRIGGER DELETE_SPELER AFTER DELETE ON SPELERS FOR EACH ROW BEGIN CALL INSERT_MUTATIE (OLD.SPELERSNR, 'D', NULL); END Voorbeeld 33.4: CREATE TRIGGER UPDATE_SPELER AFTER UPDATE ON SPELERS FOR EACH ROW BEGIN CALL INSERT_MUTATIE (NEW.SPELERSNR, 'U', OLD.SPELERSNR); END Voorbeeld 33.5: CREATE TRIGGER UPDATE_SPELER2 AFTER UPDATE(BONDSNR) ON SPELERS FOR EACH ROW BEGIN CALL INSERT_MUTATIE (NEW.SPELERSNR, 'U', OLD.SPELERSNR); END Voorbeeld 33.6: CREATE TABLE SPELERS_WED (SPELERSNR INTEGER NOT NULL PRIMARY KEY, AANTAL_WEDSTRIJDEN INTEGER NOT NULL) # INSERT INTO SPELERS_WED (SPELERSNR, AANTAL_WEDSTRIJDEN) SELECT SPELERSNR, (SELECT COUNT(*) FROM WEDSTRIJDEN AS W WHERE S.SPELERSNR = W.SPELERSNR) FROM SPELERS AS S Voorbeeld 33.7: CREATE TRIGGER INSERT_SPELERS AFTER INSERT ON SPELERS FOR EACH ROW BEGIN INSERT INTO SPELERS_WED VALUES(NEW.SPELERSNR, 0); END Voorbeeld 33.8: CREATE TRIGGER DELETE_SPELERS AFTER DELETE ON SPELERS FOR EACH ROW BEGIN DELETE FROM SPELERS_WED WHERE SPELERSNR = OLD.SPELERSNR; END Voorbeeld 33.9: CREATE TRIGGER INSERT_WEDSTRIJDEN AFTER INSERT ON WEDSTRIJDEN FOR EACH ROW BEGIN UPDATE SPELERS_WED SET AANTAL_WEDSTRIJDEN = AANTAL_WEDSTRIJDEN + 1 WHERE SPELERSNR = NEW.SPELERSNR; END Voorbeeld 33.10: CREATE TRIGGER DELETE_WEDSTRIJDEN AFTER DELETE ON WEDSTRIJDEN FOR EACH ROW BEGIN UPDATE SPELERS_WED SET AANTAL_WEDSTRIJDEN = AANTAL_WEDSTRIJDEN - 1 WHERE SPELERSNR = OLD.SPELERSNR; END Voorbeeld 33.11: CREATE TRIGGER SOM_BOETES_INSERT AFTER INSERT ON BOETES FOR EACH ROW BEGIN DECLARE SOM DECIMAL(8,2); SELECT SUM(BEDRAG) INTO SOM FROM BOETES WHERE SPELERSNR = NEW.SPELERSNR; UPDATE SPELERS SET SOM_BOETES = SOM WHERE SPELERSNR = NEW.SPELERSNR END # CREATE TRIGGER SOM_BOETES_DELETE AFTER DELETE, UPDATE ON BOETES FOR EACH ROW BEGIN DECLARE SOM DECIMAL(8,2); SELECT SUM(BEDRAG) INTO SOM FROM BOETES WHERE SPELERSNR = OLD.SPELERSNR; UPDATE SPELERS SET SOM_BOETES = SOM WHERE SPELERSNR = OLD.SPELERSNR END # UPDATE SPELERS SET SOM_BOETES = (SELECT SUM(BEDRAG) FROM BOETES WHERE SPELERSNR = NEW.SPELERSNR) WHERE SPELERSNR = NEW.SPELERSNR Voorbeeld 33.12: CREATE TRIGGER GEBJAARTOE BEFORE INSERT, UPDATE ON SPELERS FOR EACH ROW BEGIN IF YEAR(NEW.GEB_DATUM) >= NEW.JAARTOE) THEN ROLLBACK WORK; END IF; END Voorbeeld 33.13: CREATE TRIGGER REF_SLEUTEL1 BEFORE INSERT, UPDATE ON BOETES FOR EACH ROW BEGIN IF (SELECT COUNT(*) FROM SPELERS WHERE SPELERSNR = NEW.SPELERSNR) = 0 THEN ROLLBACK WORK; END IF; END # CREATE TRIGGER REF_SLEUTEL2 BEFORE DELETE, UPDATE ON SPELERS FOR EACH ROW BEGIN DELETE FROM BOETES WHERE SPELERSNR = OLD.SPELERSNR; END Voorbeeld 33.14: DROP TRIGGER GEBJAARTOE Antwoord 33.2: CREATE TRIGGER MAX1 AFTER INSERT, UPDATE(FUNCTIE) OF BESTUURSLEDEN FOR EACH ROW BEGIN SELECT COUNT(*) INTO AANTAL FROM BESTUURSLEDEN WHERE SPELERSNR IN (SELECT SPELERSNR FROM BESTUURSLEDEN WHERE CURRENT DATE BETWEEN BEGIN_DATUM AND EIND_DATUM GROUP BY FUNCTIE HAVING COUNT(*) > 1) IF AANTAL > 0 THEN ROLLBACK WORK; ENDIF; END Antwoord 33.3: CREATE TRIGGER SOM_BOETES_250 AFTER INSERT, UPDATE(BEDRAG) OF BOETES FOR EACH ROW BEGIN SELECT COUNT(*) INTO AANTAL FROM BOETES WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES GROUP BY SPELERSNR HAVING SUM(BEDRAG) > 250); IF AANTAL > 0 THEN ROLLBACK WORK; ENDIF; END Antwoord 33.4: CREATE TRIGGER AANTAL_WEDSTRIJDEN_INSERT AFTER INSERT OF WEDSTRIJDEN FOR EACH ROW BEGIN UPDATE TEAMS SET AANTAL_WEDSTRIJDEN = (SELECT COUNT(*) FROM WEDSTRIJDEN WHERE SPELERSNR = NEW.SPELERSNR) WHERE SPELERSNR = NEW.SPELERSNR END # CREATE TRIGGER AANTAL_WEDSTRIJDEN_DELETE AFTER DELETE, UPDATE OF WEDSTRIJDEN FOR EACH ROW BEGIN UPDATE TEAMS SET AANTAL_WEDSTRIJDEN = (SELECT COUNT(*) FROM WEDSTRIJDEN WHERE SPELERSNR = OLD.SPELERSNR) WHERE SPELERSNR = OLD.SPELERSNR END Voorbeeld 34.1: CREATE TABLE EVENTS_AFGEHANDELD (EVENTNAAM VARCHAR(20) NOT NULL, EVENT_GESTART TIMESTAMP NOT NULL) Voorbeeld 34.2: CREATE EVENT DIRECT ON SCHEDULE AT NOW() DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('DIRECT', NOW()) ; SELECT * FROM EVENTS_AFGEHANDELD WHERE EVENTNAAM = 'DIRECT' ; CREATE EVENT TENNIS.DIRECT ON SCHEDULE AT NOW() DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('DIRECT', NOW()) Voorbeeld 34.3: CREATE EVENT EINDE2010 ON SCHEDULE AT '2010-12-31 11:00:00' DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('EINDE2010', NOW()) Voorbeeld 34.4: CREATE EVENT DRIEDAGEN ON SCHEDULE AT NOW() + INTERVAL 3 DAY DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('DRIEDAGEN', NOW()) Voorbeeld 34.5: CREATE EVENT AANSTAANDE_ZONDAG ON SCHEDULE AT CASE DAYNAME(NOW()) WHEN 'Sunday' THEN NOW() + INTERVAL 7 DAY WHEN 'Monday' THEN NOW() + INTERVAL 6 DAY WHEN 'Tuesday' THEN NOW() + INTERVAL 5 DAY WHEN 'Wednesday' THEN NOW() + INTERVAL 4 DAY WHEN 'Thursday' THEN NOW() + INTERVAL 3 DAY WHEN 'Friday' THEN NOW() + INTERVAL 2 DAY WHEN 'Saturday' THEN NOW() + INTERVAL 1 DAY END DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('AANSTAANDE_ZONDAG',NOW()) ; CREATE EVENT AANSTAANDE_ZONDAG ON SCHEDULE AT NOW() + INTERVAL (8 – DAYOFWEEK(NOW())) DAY DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('AANSTAANDE_ZONDAG',NOW()) Voorbeeld 34.6: CREATE EVENT MORGEN11 ON SCHEDULE AT TIMESTAMP(CURDATE() + INTERVAL 1 DAY, '11:00:00') DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('MORGEN11', NOW()) Voorbeeld 34.7: CREATE EVENT OMDE2UUR ON SCHEDULE EVERY 2 HOUR STARTS NOW() + INTERVAL 3 HOUR ENDS CURDATE() + INTERVAL 23 HOUR DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('OMDE2UUR', NOW()) Voorbeeld 34.8: CREATE EVENT ZESMAAL ON SCHEDULE EVERY 1 MINUTE STARTS TIMESTAMP(CURDATE() + INTERVAL 1 DAY,'12:00:00') ENDS TIMESTAMP(CURDATE() + INTERVAL 1 DAY,'12:00:00') + INTERVAL 5 MINUTE DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('ZESMAAL', NOW()) Voorbeeld 34.9: CREATE EVENT VIJFZONDAGEN ON SCHEDULE EVERY 1 WEEK STARTS CASE DAYNAME(NOW()) WHEN 'Sunday' THEN NOW() WHEN 'Monday' THEN NOW() + INTERVAL 6 DAY WHEN 'Tuesday' THEN NOW() + INTERVAL 5 DAY WHEN 'Wednesday' THEN NOW() + INTERVAL 4 DAY WHEN 'Thursday' THEN NOW() + INTERVAL 3 DAY WHEN 'Friday' THEN NOW() + INTERVAL 2 DAY WHEN 'Saturday' THEN NOW() + INTERVAL 1 DAY END ENDS CASE DAYNAME(NOW()) WHEN 'Sunday' THEN NOW() WHEN 'Monday' THEN NOW() + INTERVAL 6 DAY WHEN 'Tuesday' THEN NOW() + INTERVAL 5 DAY WHEN 'Wednesday' THEN NOW() + INTERVAL 4 DAY WHEN 'Thursday' THEN NOW() + INTERVAL 3 DAY WHEN 'Friday' THEN NOW() + INTERVAL 2 DAY WHEN 'Saturday' THEN NOW() + INTERVAL 1 DAY END + INTERVAL 4 WEEK DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('VIJFZONDAGEN',NOW()) Voorbeeld 34.10: CREATE EVENT ZONDAGEN ON SCHEDULE EVERY 1 WEEK STARTS TIMESTAMP(CASE DAYNAME(NOW()) WHEN 'Sunday' THEN NOW() WHEN 'Monday' THEN NOW() + INTERVAL 6 DAY WHEN 'Tuesday' THEN NOW() + INTERVAL 5 DAY WHEN 'Wednesday' THEN NOW() + INTERVAL 4 DAY WHEN 'Thursday' THEN NOW() + INTERVAL 3 DAY WHEN 'Friday' THEN NOW() + INTERVAL 2 DAY WHEN 'Saturday' THEN NOW() + INTERVAL 1 DAY END, '15:00:00') ENDS TIMESTAMP( CASE DAYNAME(CONCAT(YEAR(CURDATE()),'-12-31')) WHEN 'Sunday' THEN CONCAT(YEAR(CURDATE()),'-12-31') WHEN 'Monday' THEN CONCAT(YEAR(CURDATE()),'-12-31') - INTERVAL 1 DAY WHEN 'Tuesday' THEN CONCAT(YEAR(CURDATE()),'-12-31') - INTERVAL 2 DAY WHEN 'Wednesday' THEN CONCAT(YEAR(CURDATE()),'-12-31') - INTERVAL 3 DAY WHEN 'Thursday' THEN CONCAT(YEAR(CURDATE()),'-12-31') - INTERVAL 4 DAY WHEN 'Friday' THEN CONCAT(YEAR(CURDATE()),'-12-31') - INTERVAL 5 DAY WHEN 'Saturday' THEN CONCAT(YEAR(CURDATE()),'-12-31') - INTERVAL 6 DAY END, '15:00:00') DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('ZONDAGEN', NOW()) Voorbeeld 34.11: CREATE EVENT STARTMAAND ON SCHEDULE EVERY 1 MONTH STARTS CURDATE()+ INTERVAL 1 MONTH - INTERVAL (DAYOFMONTH(CURDATE()) - 1) DAY ENDS TIMESTAMP(CONCAT(YEAR(CURDATE()),'-12-31')) DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('STARTMAAND', NOW()) Voorbeeld 34.12: CREATE EVENT KWARTALEN ON SCHEDULE EVERY 3 MONTH STARTS (CURDATE() - INTERVAL (DAYOFMONTH(CURDATE()) - 1) DAY) - INTERVAL (MOD(MONTH(CURDATE() - INTERVAL (DAYOFMONTH(CURDATE()) - 1) DAY)+2,3)) MONTH + INTERVAL 3 MONTH DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('KWARTALEN', NOW()) Voorbeeld 34.13: CREATE EVENT EINDEJAAR ON SCHEDULE EVERY 1 YEAR STARTS ((NOW() - INTERVAL (DAYOFYEAR(NOW()) - 1) DAY) + INTERVAL 1 YEAR) - INTERVAL 1 DAY ENDS '2025-12-31' DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('EINDEJAAR', NOW()) Voorbeeld 34.14: CREATE EVENT NIET2020 ON SCHEDULE EVERY 1 YEAR STARTS ((NOW() - INTERVAL (DAYOFYEAR(NOW()) - 1) DAY) + INTERVAL 1 YEAR) - INTERVAL 1 DAY ENDS '2025-12-31' DO BEGIN IF YEAR(CURDATE()) <> 2020 THEN INSERT INTO EVENTS_AFGEHANDELD VALUES ('NIET2020', NOW()); END IF; END Voorbeeld 34.15: CREATE TABLE WEDSTRIJDEN_JAAROVERZICHT (SPELERSNR INTEGER NOT NULL, JAAR INTEGER NOT NULL, AANTAL INTEGER NOT NULL, PRIMARY KEY (SPELERSNR, JAAR), FOREIGN KEY (SPELERSNR) REFERENCES SPELERS (SPELERSNR)) Voorbeeld 34.16: CREATE EVENT JAARAFSLUITING ON SCHEDULE EVERY 1 YEAR STARTS ((NOW() - INTERVAL (DAYOFYEAR(NOW()) - 1) DAY) + INTERVAL 1 YEAR) - INTERVAL 1 DAY DO INSERT INTO WEDSTRIJDEN_JAAROVERZICHT SELECT SPELERSNR, JAAR, COUNT(*) FROM WEDSTRIJDEN WHERE YEAR(DATUM) = YEAR(CURDATE()) GROUP BY SPELERSNR, JAAR Voorbeeld 34.17: CREATE EVENT DIRECT ON SCHEDULE AT NOW() ON COMPLETION PRESERVE DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('DIRECT', NOW()) Voorbeeld 34.18: CREATE EVENT DIRECT_MET_COMMENTAAR ON SCHEDULE AT NOW() ON COMPLETION PRESERVE COMMENT 'Deze event wordt direct gestart' DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('DIRECT_MET_COMMENTAAR', NOW()) Voorbeeld 34.19: CREATE EVENT DIRECT_INACTIVE ON SCHEDULE AT NOW() ON COMPLETION PRESERVE DISABLE COMMENT 'Deze event is inactief' DO INSERT INTO EVENTS_AFGEHANDELD VALUES ('DIRECT_INACTIVE', NOW()) Voorbeeld 34.20: ALTER EVENT STARTMAAND ON SCHEDULE EVERY 1 MONTH STARTS CURDATE() + INTERVAL 1 MONTH - INTERVAL (DAYOFMONTH(CURDATE()) - 1) DAY ENDS TIMESTAMP('2025-12-31') Voorbeeld 34.21: ALTER EVENT STARTMAAND RENAME TO EERSTE_VAN_DE_MAAND Voorbeeld 34.22: ALTER EVENT DIRECT_INACTIVE ENABLE Voorbeeld 34.23: DROP EVENT EERSTE_VAN_DE_MAAND Voorbeeld 34.24: GRANT EVENT ON TENNIS.* TO SAM Voorbeeld 34.25: SHOW CREATE EVENT MORGEN11 Voorbeeld 35.1: Inloggen Het inloggen is niet gelukt.

"); echo "

Het inloggen is gelukt.

\n"; mysql_close($conn); ?> Voorbeeld 35.2: Courante database Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS") or die ("
Database onbekend.\n"); echo "
TENNIS is nu de courante database.\n"; mysql_close($conn); ?> Voorbeeld 35.3: Create Index Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS") or die ("
Database onbekend.\n"); echo "
TENNIS is nu de courante database.\n"; $result = mysql_query("CREATE UNIQUE INDEX SPPS ON SPELERS (SPELERSNR)"); if (!$result) { echo "
Index SPPS is niet gecreëerd!\n"; } else { echo "
Index SPPS is gecreëerd!\n"; }; mysql_close($conn); ?> Voorbeeld 35.4: Create Index plus reactie Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS") or die ("
Database onbekend.\n"); echo "
TENNIS is nu de courante database.\n"; $result = mysql_query("CREATE UNIQUE INDEX SPPS ON SPELERS (SPELERSNR)"); if (!$result) { echo "
Index SPPS is niet gecreëerd!\n"; } else { echo "
Index SPPS is gecreëerd!\n"; }; echo "
mysql_info=".mysql_info($conn); mysql_close($conn); ?> Voorbeeld 35.5: Error messages Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS") or die ("
Database onbekend.\n"); echo "
TENNIS is nu de courante database.\n"; $result = mysql_query("CREATE UNIQUE INDEX SPPS ON SPELERS (SPELERSNR)"); if (!$result) { echo "
Index SPPS is niet gecreëerd!\n"; $error_number = mysql_errno(); $error_message = mysql_error(); echo "
Fout: $error_number: $error_message\n"; } else { echo "
Index SPPS is gecreëerd!\n"; } mysql_close($conn); ?> Voorbeeld 35.6: Twee connecties Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $host = "localhost"; $user = "BOEKSQL"; $pass = "BOEKSQLPW"; $conn2 = mysql_connect($host, $user, $pass) or die ("

Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS", $conn1) or die ("Connectie 1 is gestart.\n"; $db = mysql_select_db("TENNIS", $conn2) or die ("
Database onbekend.\n"); echo "
Connectie 2 is gestart.\n"; mysql_close($conn1); mysql_close($conn2); ?> Voorbeeld 35.7: Parameters Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS") or die ("
Database onbekend.\n"); echo "
TENNIS is nu de courante database.\n"; $wnr = 22; $result = mysql_query("UPDATE WEDSTRIJDEN SET GEWONNEN = GEWONNEN + 1 WHERE WEDSTRIJDNR = $wnr"); if (!$result) { echo "
Mutatie niet uitgevoerd!\n"; $error_number = mysql_errno(); $error_message = mysql_error(); echo "
Fout: $error_number: $error_message\n"; } else { echo "
GEWONNEN-kolom is verhoogd voor wedstrijd $wnr.\n"; } mysql_close($conn); ?> Voorbeeld 35.8: Query met een rij Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS") or die ("
Database onbekend.\n"); echo "
TENNIS is nu de courante database.\n"; $query = "SELECT COUNT(*) AS AANTAL FROM SPELERS"; $result = mysql_query($query) or die ("
Query is incorrect.\n"); $row = mysql_fetch_assoc($result) or die ("
Query had geen resultaat.\n"); echo "
Het aantal spelers is ".$row['AANTAL'].".\n"; mysql_close($conn); ?> Voorbeeld 35.9: SELECT-instructie met meerdere rijen Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS") or die ("
Database onbekend.\n"); echo "
TENNIS is nu de courante database.\n"; $query = "SELECT SPELERSNR FROM SPELERS ORDER BY 1 DESC"; $result = mysql_query($query) or die ("
Query is incorrect.\n"); if (mysql_num_rows($result) > 0) { while ($row=mysql_fetch_assoc($result)) { echo "
Spelersnummer ".$row['SPELERSNR'].".\n"; } } else { echo "
Geen spelers gevonden.\n"; } mysql_free_result($result); mysql_close($conn); ?> Voorbeeld 35.10: MYSQL_FETCH_ROW-functie Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS") or die ("
Database onbekend.\n"); echo "
TENNIS is nu de courante database.\n"; $query = "SELECT SPELERSNR FROM SPELERS ORDER BY 1 DESC"; $result = mysql_query($query) or die ("
Query is incorrect.\n"); while ($row=mysql_fetch_row($result)) { echo "
Spelersnummer ".$row[0].".\n"; }; mysql_free_result($result); mysql_close($conn); ?> Voorbeeld 35.11: MYSQL_DATA_SEEK-functie Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS") or die ("
Database onbekend.\n"); echo "
TENNIS is nu de courante database.\n"; $query = "SELECT SPELERSNR FROM SPELERS ORDER BY 1 DESC"; $result = mysql_query($query) or die ("
Query is incorrect.\n"); mysql_data_seek($result, 3); $row=mysql_fetch_row($result); echo "
Spelersnummer ".$row[0].".\n"; mysql_close($conn); ?> Voorbeeld 35.12: Werken met objecten Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS") or die ("
Database onbekend.\n"); echo "
TENNIS is nu de courante database.\n"; $query = "SELECT SPELERSNR FROM SPELERS ORDER BY 1 DESC"; $result = mysql_query($query) or die ("
Query is incorrect.\n"); while ($row=mysql_fetch_object($result)) { echo "
Spelersnummer ".$row->SPELERSNR.".\n"; }; mysql_free_result($result); mysql_close($conn); ?> Voorbeeld 35.13: Query met null-waarden Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS") or die ("
Database onbekend.\n"); echo "
TENNIS is nu de courante database.\n"; $query = "SELECT BONDSNR FROM SPELERS"; $result = mysql_query($query) or die ("
Query is incorrect.\n"); if (mysql_num_rows($result) > 0) { while ($row=mysql_fetch_assoc($result)) { if ($row['BONDSNR'] === NULL) { echo "
Spelersnummer is onbekend.\n"; } else { echo "
Spelersnummer ".$row['BONDSNR'].".\n"; } } } else { echo "
Geen spelers gevonden.\n"; } mysql_close($conn); ?> Voorbeeld 35.14: Karakteristieken van expressies Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS") or die ("
Database onbekend.\n"); echo "
TENNIS is nu de courante database.\n"; $query = "SELECT * FROM SPELERS WHERE SPELERSNR = 27"; $result = mysql_query($query) or die ("
Query is incorrect.\n"); while ($field=mysql_fetch_field($result)) { echo "
".$field->name." ".$field->type." ". $field->max_length." ".$field->primary_key."\n"; } mysql_close($conn); ?> Voorbeeld 35.15: Karakteristieken van expressies Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS") or die ("
Database onbekend.\n"); echo "
TENNIS is nu de courante database.\n"; $query = "SELECT * FROM SPELERS WHERE SPELERSNR = 27"; $result = mysql_query($query) or die ("
Query is incorrect.\n"); $exp = 0; while ($field=mysql_fetch_field($result)) { echo "
Naam=".mysql_field_name($result, $exp)."\n"; echo "
Datatype=".mysql_field_type($result, $exp)."\n"; echo "
Lengte=".mysql_field_len($result, $exp)."\n"; echo "
Tabel=".mysql_field_table($result, $exp)."\n"; $exp += 1; } mysql_close($conn); ?> Voorbeeld 35.16: Catalogustabellen Het inloggen is niet gelukt.\n"); echo "

Het inloggen is gelukt.\n"; $db = mysql_select_db("TENNIS") or die ("
Database onbekend.\n"); echo "
TENNIS is nu de courante database.\n"; $query1 = "SELECT TABLE_NAME, COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME IN ('BESTUURSLEDEN','BOETES','SPELERS', 'TEAMS','WEDSTRIJDEN') ORDER BY TABLE_NAME, ORDINAL_POSITION"; $tables = mysql_query($query1) or die ("
Query1 is incorrect.\n"); while ($tablerow=mysql_fetch_assoc($tables)) { $query2 = "SELECT COUNT(DISTINCT "; $query2 .= $tablerow['COLUMN_NAME'].") AS A, "; $query2 .= "MIN( ".$tablerow['COLUMN_NAME'].") AS B, "; $query2 .= "MAX( ".$tablerow['COLUMN_NAME'].") AS C "; $query2 .= "FROM ".$tablerow['TABLE_NAME']; $columns = mysql_query($query2) or die ("
Query2 is incorrect.\n"); $columnrow=mysql_fetch_assoc($columns); echo "
".$tablerow['TABLE_NAME'].".". $tablerow['COLUMN_NAME']. " Verschillende=".$columnrow['A']. " Minimum=".$columnrow['B']. " Maximum=".$columnrow['C']."\n"; mysql_free_result($columns); }; mysql_free_result($tables); mysql_close($conn); ?> Voorbeeld 36.1: PREPARE S1 FROM 'SELECT * FROM TEAMS' ; EXECUTE S1 ; SET @SQL_INSTRUCTIE = 'SELECT * FROM TEAMS' ; PREPARE S1 FROM @SQL_INSTRUCTIE Voorbeeld 36.2: DEALLOCATE PREPARE S1 Voorbeeld 36.3: PREPARE S2 FROM 'SELECT * FROM TEAMS WHERE TEAMNR = @TNR' ; SET @TNR = 1 ; EXECUTE S2 ; SET @TNR = 2 ; EXECUTE S2 Voorbeeld 36.4: PREPARE S3 FROM 'SELECT * FROM TEAMS WHERE TEAMNR BETWEEN ? AND ?' ; SET @VAN_TNR = 1, @TOT_TNR = 4 ; EXECUTE S3 USING @VAN_TNR, @TOT_TNR ; DEALLOCATE PREPARE S3 Voorbeeld 36.5: CREATE PROCEDURE DROP_TABLE (IN TABELNAAM VARCHAR(64)) BEGIN SET @SQL_STATEMENT = CONCAT('DROP TABLE ', TABELNAAM); PREPARE S1 FROM @SQL_STATEMENT; EXECUTE S1; DEALLOCATE PREPARE S1; END Voorbeeld 36.6: CREATE PROCEDURE DYNAMIC_SELECT (IN SELECT_INSTRUCTIE VARCHAR(64), OUT AANTAL_RIJEN INTEGER) BEGIN DECLARE FOUND BOOLEAN DEFAULT TRUE; DECLARE VAR1,VAR2,VAR3 VARCHAR(100); DECLARE C_RESULT CURSOR FOR SELECT * FROM SELECT_TABLE; DECLARE CONTINUE HANDLER FOR NOT FOUND SET FOUND = FALSE; SET @CREATE_INSTRUCTIE = CONCAT('CREATE TEMPORARY TABLE SELECT_TABLE AS (', SELECT_INSTRUCTIE, ')'); PREPARE S1 FROM @CREATE_INSTRUCTIE; EXECUTE S1; DEALLOCATE PREPARE S1; SET AANTAL_RIJEN = 0; OPEN C_RESULT; FETCH C_RESULT INTO VAR1, VAR2, VAR3; WHILE FOUND DO SET AANTAL_RIJEN = AANTAL_RIJEN + 1; FETCH C_RESULT INTO VAR1, VAR2, VAR3; END WHILE; CLOSE C_RESULT; DROP TEMPORARY TABLE SELECT_TABLE; END ; CALL DYNAMIC_SELECT('SELECT BETALINGSNR, DATUM, SPELERSNR FROM BOETES', @AANTAL_RIJEN) ; SELECT @AANTAL_RIJEN Voorbeeld 37.1: DELETE FROM BOETES WHERE SPELERSNR = 44 # SELECT * FROM BOETES # ROLLBACK WORK # COMMIT WORK Voorbeeld 37.3: DELETE FROM SPELERS WHERE SPELERSNR = 6 # DELETE FROM BOETES WHERE SPELERSNR = 6 # DELETE FROM WEDSTRIJDEN WHERE SPELERSNR = 6 # DELETE FROM BESTUURSLEDEN WHERE SPELERSNR = 6 # UPDATE TEAMS SET SPELERSNR = 83 WHERE SPELERSNR = 6 # SHOW GLOBAL VARIABLES LIKE 'COMPLETION_TYPE' Voorbeeld 37.5: CREATE PROCEDURE NIEUW_TEAM () BEGIN INSERT INTO TEAMS VALUES (100,27,'ere'); END # SET AUTOCOMMIT = 1 # START TRANSACTION # INSERT INTO TEAMS VALUES (200,27,'ere') # CALL NIEUW_TEAM() # ROLLBACK WORK Voorbeeld 37.6: UPDATE BOETES SET BEDRAG = BEDRAG + 25 WHERE BETALINGSNR = 4 # SELECT * FROM BOETES WHERE BETALINGSNR = 4 Voorbeeld 37.7: SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Den Haag' # UPDATE SPELERS SET PLAATS = 'Zoetermeer' WHERE SPELERSNR = 7 # SELECT SPELERSNR, NAAM, VOORLETTERS, VOORVOEGSELS, STRAAT, HUISNR, POSTCODE, PLAATS FROM SPELERS WHERE SPELERSNR IN (6, 83, 2, 7, 57, 39, 100) Voorbeeld 37.8: SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Den Haag' Voorbeeld 37.9: UPDATE BOETES SET BEDRAG = BEDRAG + 25 WHERE BETALINGSNR = 4 # UPDATE BOETES SET BEDRAG = BEDRAG + 30 WHERE BETALINGSNR = 4 Voorbeeld 37.10: LOCK TABLE SPELERS READ Voorbeeld 37.11: DO GET_LOCK('lock1',0) # SELECT GET_LOCK('lock1',0) Voorbeeld 37.12: SELECT IS_FREE_LOCK('lock1') Voorbeeld 37.13: SELECT IS_USED_LOCK('lock1') Voorbeeld 37.14: SELECT RELEASE_LOCK('lock1')