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 Voorbeeld 4.15: GRANT SELECT ON SPELERS TO DIANE ; GRANT SELECT, UPDATE ON SPELERS TO PAUL ; GRANT SELECT, UPDATE ON TEAMS TO PAUL 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 = 'ANSI' Voorbeeld 4.22: 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, DATABASENAME, 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.23: SELECT COLUMN_NAME, DATA_TYPE, COLUMN_NO FROM COLUMNS WHERE TABLE_NAME = 'SPELERS' AND TABLE_CREATOR = 'TENNIS' ORDER BY COLUMN_NO Voorbeeld 4.24: SELECT INDEX_NAME FROM INDEXES WHERE TABLE_NAME = 'BOETES' AND TABLE_CREATOR = 'TENNIS' Voorbeeld 5.1: SELECT '2004-01-23' Voorbeeld 5.2: SELECT TRUE, FALSE SELECT TEAMNR, SPELERSNR - 3 FROM WEDSTRIJDEN WHERE WEDSTRIJDNR = TEAMNR * 5 Voorbeeld 5.4: SELECT TEAMNR, DIVISIE FROM TEAMS Voorbeeld 5.5: SELECT TEAMNR AS TEAMNUMMER, DIVISIE AS DIVISIE_VAN_TEAM FROM TEAMS Voorbeeld 5.6: SELECT BETALINGSNR, BEDRAG * 100 AS CENTEN FROM BOETES Voorbeeld 5.7: SELECT 80 AS TACHTIG, SPELERSNR * TEAMNR AS VREEMD, TIME('23:59:59') AS BIJNA_MIDDERNACHT FROM WEDSTRIJDEN Voorbeeld 5.8: SELECT BETALINGSNR, BEDRAG * 100 AS CENTEN FROM BOETES ORDER BY CENTEN Voorbeeld 5.9: SET @SPELERSNR = 7 Voorbeeld 5.10: SELECT NAAM, PLAATS, POSTCODE FROM SPELERS WHERE SPELERSNR < @SPELERSNR Voorbeeld 5.11: SELECT @SPELERSNR Voorbeeld 5.12: SELECT * FROM USER_AUTHS WHERE GRANTEE = CURRENT_USER Voorbeeld 5.13: SELECT * FROM BOETES WHERE DATUM = CURRENT_DATE Voorbeeld 5.14: SELECT SPELERSNR, CASE GESLACHT WHEN 'V' THEN 'Vrouw' ELSE 'Man' END, NAAM AS GESLACHT FROM SPELERS WHERE JAARTOE > 1980 ; SELECT SPELERSNR, CASE GESLACHT WHEN 'V' THEN 'Vrouw' END AS VROUWEN, NAAM FROM SPELERS WHERE JAARTOE > 1980 Voorbeeld 5.15: 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 Hagenaar' ELSE 'Jonge Hagenaar' 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.16: 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.17: 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.18: SELECT (SPELERSNR), (((NAAM))) FROM SPELERS Voorbeeld 5.19: SELECT BETALINGSNR, YEAR(DATUM) FROM BOETES WHERE YEAR(DATUM) > 1980 Voorbeeld 5.20: SELECT SPELERSNR, CONCAT(CONCAT(LEFT(VOORLETTERS, 1), '. '), NAAM) AS VOLLE_NAAM FROM SPELERS WHERE LEFT(NAAM, 1) = 'B' Voorbeeld 5.21: SELECT VOORLETTERS, NAAM, IFNULL(BONDSNR, 1) FROM SPELERS WHERE PLAATS = 'Den Haag' Voorbeeld 5.22: SELECT SPELERSNR, DAYNAME(GEB_DATUM), MONTHNAME(GEB_DATUM), DAYOFYEAR(GEB_DATUM) FROM SPELERS WHERE SPELERSNR < 10 Voorbeeld 5.23: SELECT SPELERSNR, GEB_DATUM, ADDDATE(GEB_DATUM, 7) FROM SPELERS WHERE DAYNAME(GEB_DATUM) = 'Saturday' Voorbeeld 5.24: 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 1 ; SELECT SPELERSNR, BEGIN_DATUM, EIND_DATUM, DATEDIFF(IFNULL(EIND_DATUM, CURRENT_DATE), BEGIN_DATUM) FROM BESTUURSLEDEN WHERE DATEDIFF(IFNULL(EIND_DATUM, CURRENT_DATE), BEGIN_DATUM) > 500 ORDER BY 1 Voorbeeld 5.25: SELECT BETALINGSNR FROM BOETES WHERE BEDRAG > 50 Voorbeeld 5.26: SELECT CONCAT(RTRIM(NAAM), CAST(GEB_DATUM AS CHAR(10))) FROM SPELERS WHERE PLAATS = 'Rijswijk' Voorbeeld 5.27: UPDATE SPELERS SET BONDSNR = NULL WHERE SPELERSNR = 2 Voorbeeld 5.28: SELECT TEAMNR, CAST(NULL AS CHAR) FROM TEAMS Voorbeeld 5.29: SELECT WEDSTRIJDNR, GEWONNEN, VERLOREN FROM WEDSTRIJDEN WHERE GEWONNEN >= VERLOREN * 2 Voorbeeld 5.30: SELECT SPELERSNR, PLAATS || ' ' || STRAAT || ' ' || HUISNR FROM SPELERS WHERE PLAATS = 'Den Haag' Voorbeeld 5.31: SELECT BETALINGSNR, DATUM, DATUM + INTERVAL 7 DAY FROM BOETES WHERE BETALINGSNR > 5 Voorbeeld 5.32: SELECT BETALINGSNR , DATUM FROM BOETES WHERE DATUM >= '1982-12-25' AND DATUM <= '1982-12-25' + INTERVAL 6 DAY Voorbeeld 5.35: 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.36: SELECT WEDSTRIJDNR, START_TIJD, ADDTIME(START_TIJD, '08:00:00') FROM WEDSTRIJDEN_SPECIAAL Voorbeeld 5.37: SELECT WEDSTRIJDNR , EIND_TIJD FROM WEDSTRIJDEN_SPECIAAL WHERE ADDTIME(EIND_TIJD, '06:30:00') < '24:00:00' Voorbeeld 5.38: CREATE TABLE TSTAMP (KOL TIMESTAMP) ; SELECT @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.39: INSERT INTO BESTUURSLEDEN VALUES (7 + 15, CURRENT_DATE, CURRENT_DATE + INTERVAL 17 DAY, 'Lid') Voorbeeld 5.40: SELECT SPELERSNR FROM SPELERS WHERE (PLAATS, STRAAT) = ('Den Haag', 'Hazensteinln') Voorbeeld 5.41: UPDATE SPELERS SET (PLAATS, STRAAT) = ('Den Haag', 'Hazensteinln') WHERE SPELERSNR = 27 Voorbeeld 5.42: 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.6: SELECT SPELERS.SPELERSNR, SPELERS.NAAM, SPELERS.VOORLETTERS FROM SPELERS WHERE SPELERS.SPELERSNR > 6 ORDER BY SPELERS.NAAM Antwoord 5.9: SELECT SPELERSNR FROM BESTUURSLEDEN WHERE BEGIN_DATUM = CURRENT_DATE Antwoord 5.10: SELECT TEAMNR, CASE DIVISIE WHEN 'ere' then 'eredivisie' WHEN 'tweede' THEN 'tweede divisie' ELSE 'Onbekend' END AS DIVISIE FROM TEAMS Antwoord 5.11: 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.12: SELECT BETALINGSNR, BEDRAG FROM BOETES WHERE 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 = 'laag' Antwoord 5.14: SELECT BETALINGSNR FROM BOETES WHERE DAYNAME(DATUM) = 'Monday' Antwoord 5.15: SELECT BETALINGSNR FROM BOETES WHERE YEAR(DATUM) = 1984 Antwoord 5.22: SELECT SPELERSNR, SUBSTR(VOORLETTERS,1,1) || '. ' || NAAM FROM SPELERS Antwoord 5.23: SELECT TEAMNR, RTRIM(DIVISIE) || ' divisie' FROM TEAMS Antwoord 5.25: SELECT SPELERSNR, BEGIN_DATUM, BEGIN_DATUM + INTERVAL 2 MONTH + INTERVAL 3 DAY FROM BESTUURSLEDEN Antwoord 5.29: SELECT BETALINGSNR, DATUM, DATUM + INTERVAL 3 HOUR + INTERVAL 50 SECOND + INTERVAL 99 MICROSECOND FROM BOETES Antwoord 5.30: SELECT BETALINGSNR FROM BOETES WHERE (BEDRAG, SPELERSNR, DATUM) = (25, 44, '1980-12-08') Antwoord 5.31: SELECT SPELERSNR FROM SPELERS WHERE (NAAM, VOORLETTERS) = (PLAATS, STRAAT) 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) 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 1) UNION (SELECT SPELERSNR FROM BOETES) ORDER BY 1 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 Voorbeeld 6.9: SELECT SPELERSNR FROM SPELERS WHERE YEAR(GEB_DATUM) = (SELECT YEAR(GEB_DATUM) FROM SPELERS WHERE SPELERSNR = 27) Voorbeeld 6.10: SELECT (SELECT GEB_DATUM FROM SPELERS WHERE SPELERSNR = 27), (SELECT GEB_DATUM FROM SPELERS WHERE SPELERSNR = 44), (SELECT GEB_DATUM FROM SPELERS WHERE SPELERSNR = 100) Voorbeeld 6.11: SELECT SPELERSNR FROM SPELERS WHERE (GESLACHT, PLAATS) = (SELECT GESLACHT, PLAATS FROM SPELERS WHERE SPELERSNR = 100) Antwoord 6.: 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 TEAMNR FROM TEAMS WHERE SPELERSNR = (SELECT SPELERSNR FROM SPELERS WHERE NAAM = (SELECT NAAM FROM SPELERS WHERE SPELERSNR = 6) AND SPELERSNR <> 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 = 1) 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 DISTINCT 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 Voorbeeld 7.17: SELECT SPELERS.SPELERSNR, NAAM, BEDRAG FROM SPELERS, BOETES WHERE SPELERS.SPELERSNR = BOETES.SPELERSNR ORDER BY 1 ; SELECT SPELERS.SPELERSNR, NAAM, BEDRAG FROM SPELERS LEFT OUTER JOIN BOETES ON SPELERS.SPELERSNR = BOETES.SPELERSNR ORDER BY 1 Voorbeeld 7.18: SELECT BETALINGSNR, NAAM FROM BOETES LEFT OUTER JOIN SPELERS ON BOETES.SPELERSNR = SPELERS.SPELERSNR ORDER BY 1 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, NAAM, COUNT(WEDSTRIJDNR) FROM WEDSTRIJDEN RIGHT OUTER JOIN SPELERS ON WEDSTRIJDEN.SPELERSNR = SPELERS.SPELERSNR GROUP BY SPELERS.SPELERSNR, NAAM Voorbeeld 7.22: SELECT DISTINCT WEDSTRIJDEN.WEDSTRIJDNR, WEDSTRIJDEN.SPELERSNR, BESTUURSLEDEN.SPELERSNR FROM WEDSTRIJDEN FULL OUTER JOIN BESTUURSLEDEN ON WEDSTRIJDEN.SPELERSNR = BESTUURSLEDEN.SPELERSNR ORDER BY 1, 2, 3 Voorbeeld 7.23: 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.24: SELECT TEAMS.SPELERSNR, TEAMS.TEAMNR, BOETES.BETALINGSNR FROM TEAMS FULL OUTER JOIN BOETES ON TEAMS.SPELERSNR = BOETES.SPELERSNR AND TEAMS.SPELERSNR > 1000 Voorbeeld 7.25: SELECT * FROM TEAMS UNION JOIN BOETES Voorbeeld 7.26: SELECT SPELERSNR FROM (SELECT * FROM SPELERS WHERE PLAATS = 'Den Haag') AS HAGENAARS Voorbeeld 7.27: SELECT SMALLE_TEAMS.SPELERSNR FROM (SELECT SPELERSNR, DIVISIE FROM TEAMS) AS SMALLE_TEAMS WHERE SMALLE_TEAMS.DIVISIE = 'ere' Voorbeeld 7.28: SELECT WEDSTRIJDNR, VERSCHIL FROM (SELECT WEDSTRIJDNR, ABS(GEWONNEN – VERLOREN) AS VERSCHIL FROM WEDSTRIJDEN) AS W WHERE VERSCHIL > 2 Voorbeeld 7.29: 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.30: 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 1 ; 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 1 Voorbeeld 7.31: 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.32: 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.33: SELECT GETAL, POWER(GETAL,3) FROM (SELECT 10 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.34: SELECT GETAL FROM (SELECT CAST(CONCAT(CIJFER1.CIJFER, CONCAT(CIJFER2.CIJFER, CIJFER3.CIJFER)) AS UNSIGNED INTEGER) AS GETAL FROM (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') AS CIJFER1, (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') AS CIJFER2, (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') AS CIJFER3) AS GETALLEN ORDER BY 1 Voorbeeld 7.35: 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' 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' 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' 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 1 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 YEAR(B.BEGIN_DATUM) >= 1990 AND YEAR(B.EIND_DATUM) <= 1990 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, S.NAAM, AANV.SPELERSNR, AANV.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, 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 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 WEDSTRIJDNR FROM WEDSTRIJDEN WHERE (GEWONNEN, VERLOREN) = (2, 3) Voorbeeld 8.6: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR = (SELECT SPELERSNR FROM TEAMS WHERE TEAMNR = 1) Voorbeeld 8.7: SELECT SPELERSNR, NAAM, VOORLETTERS FROM SPELERS WHERE GEB_DATUM < (SELECT GEB_DATUM FROM SPELERS WHERE BONDSNR = '8467') Voorbeeld 8.8: SELECT WEDSTRIJDNR FROM WEDSTRIJDEN WHERE TEAMNR = (SELECT TEAMNR FROM TEAMS WHERE SPELERSNR = 27) Voorbeeld 8.9: 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.10: 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.11: SELECT SPELERSNR, NAAM, VOORLETTERS FROM SPELERS WHERE (NAAM, VOORLETTERS) < (SELECT NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR = 6) ORDER BY NAAM, VOORLETTERS Voorbeeld 8.12: SELECT WEDSTRIJDNR FROM WEDSTRIJDEN_SPECIAAL WHERE (START_DATUM, START_TIJD) > (SELECT START_DATUM, START_TIJD FROM WEDSTRIJDEN_SPECIAAL WHERE WEDSTRIJDNR = 1) Voorbeeld 8.13: SELECT WEDSTRIJDNR FROM WEDSTRIJDEN WHERE 'Rijswijk' = (SELECT PLAATS FROM SPELERS WHERE SPELERS.SPELERSNR = WEDSTRIJDEN.SPELERSNR) Voorbeeld 8.14: SELECT WEDSTRIJDNR, SPELERSNR, TEAMNR FROM WEDSTRIJDEN WHERE SPELERSNR = (SELECT SPELERSNR FROM TEAMS WHERE TEAMS.SPELERSNR = WEDSTRIJDEN.SPELERSNR) Voorbeeld 8.15: 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.16: SELECT SPELERSNR, NAAM, GESLACHT, GEB_DATUM FROM SPELERS WHERE GESLACHT = 'M' AND GEB_DATUM > '1970-12-31' Voorbeeld 8.17: SELECT SPELERSNR, NAAM, PLAATS FROM SPELERS WHERE PLAATS = 'Rotterdam' OR PLAATS = 'Zoetermeer' Voorbeeld 8.18: SELECT SPELERSNR, NAAM, PLAATS FROM SPELERS WHERE PLAATS <> 'Den Haag' ; SELECT SPELERSNR, NAAM, PLAATS FROM SPELERS WHERE NOT (PLAATS = 'Den Haag') Voorbeeld 8.19: 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) Voorbeeld 8.20: 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.21: SELECT SPELERSNR, YEAR(GEB_DATUM) FROM SPELERS WHERE YEAR(GEB_DATUM) IN (1962, 1963, 1970) Voorbeeld 8.22: SELECT WEDSTRIJDNR, GEWONNEN, VERLOREN FROM WEDSTRIJDEN WHERE 2 IN (GEWONNEN, VERLOREN) Voorbeeld 8.23: SELECT SPELERSNR FROM SPELERS WHERE SPELERSNR IN (100, (SELECT SPELERSNR FROM BOETES WHERE BETALINGSNR = 1), (SELECT SPELERSNR FROM TEAMS WHERE TEAMNR = 2)) Voorbeeld 8.24: SELECT WEDSTRIJDNR, GEWONNEN, VERLOREN FROM WEDSTRIJDEN WHERE GEWONNEN IN (TRUNCATE(WEDSTRIJDNR / 2,0), VERLOREN, (SELECT VERLOREN FROM WEDSTRIJDEN WHERE WEDSTRIJDNR = 1)) Voorbeeld 8.25: SELECT WEDSTRIJDNR FROM WEDSTRIJDEN WHERE (SELECT SUBSTR(NAAM,1,1) FROM SPELERS WHERE SPELERS.SPELERSNR = WEDSTRIJDEN.SPELERSNR) IN ('B','C','E') Voorbeeld 8.26: SELECT WEDSTRIJDNR, GEWONNEN, VERLOREN FROM WEDSTRIJDEN WHERE (GEWONNEN, VERLOREN) IN ((3,1),(3,2)) Voorbeeld 8.27: 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.28: SELECT SPELERSNR, NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN) Voorbeeld 8.29: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR = 1) Voorbeeld 8.30: 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.31: SELECT * FROM BESTUURSLEDEN WHERE (BEGIN_DATUM, EIND_DATUM) IN (SELECT BEGIN_DATUM, EIND_DATUM FROM BESTUURSLEDEN WHERE FUNCTIE = 'Secretaris') Voorbeeld 8.32: 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.33: 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.34: SELECT NAAM, VOORLETTERS, PLAATS FROM SPELERS_NV WHERE (NAAM, VOORLETTERS) NOT IN (SELECT NAAM, VOORLETTERS FROM BOETES_NV) Voorbeeld 8.35: SELECT SPELERSNR, GEB_DATUM FROM SPELERS WHERE GEB_DATUM >= '1962-01-01' AND GEB_DATUM <= '1964-12-31' Voorbeeld 8.36: SELECT WEDSTRIJDNR, GEWONNEN + VERLOREN FROM WEDSTRIJDEN WHERE GEWONNEN + VERLOREN BETWEEN 2 AND 4 Voorbeeld 8.37: 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.38: SELECT NAAM, SPELERSNR FROM SPELERS WHERE NAAM LIKE 'B%' Voorbeeld 8.39: SELECT NAAM, SPELERSNR FROM SPELERS WHERE NAAM LIKE '%n' Voorbeeld 8.40: SELECT NAAM, SPELERSNR FROM SPELERS WHERE NAAM LIKE '%a_' Voorbeeld 8.41: SELECT NAAM, PLAATS, SPELERSNR FROM SPELERS WHERE NAAM LIKE CONCAT('%', SUBSTR(PLAATS,3,1)) Voorbeeld 8.42: SELECT NAAM, SPELERSNR FROM SPELERS WHERE NAAM LIKE '%#_%' ESCAPE '#' Voorbeeld 8.43: SELECT SPELERSNR, BONDSNR FROM SPELERS WHERE BONDSNR IS NOT NULL Voorbeeld 8.44: SELECT NAAM, SPELERSNR, BONDSNR FROM SPELERS WHERE BONDSNR <> '8467' OR BONDSNR IS NULL Voorbeeld 8.45: 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) Voorbeeld 8.46: 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.47: SELECT SPELERSNR, NAAM, GEB_DATUM FROM SPELERS WHERE GEB_DATUM <= ALL (SELECT GEB_DATUM FROM SPELERS) Voorbeeld 8.48: 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.49: SELECT DISTINCT TEAMNR, SPELERSNR FROM WEDSTRIJDEN AS W1 WHERE GEWONNEN <= ALL (SELECT GEWONNEN FROM WEDSTRIJDEN AS W2 WHERE W1.TEAMNR = W2.TEAMNR) Voorbeeld 8.50: 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.51: SELECT SPELERSNR, PLAATS, BONDSNR FROM SPELERS AS S1 WHERE BONDSNR <= ALL (SELECT S2.BONDSNR FROM SPELERS AS S2 WHERE S1.PLAATS = S2.PLAATS) Voorbeeld 8.52: SELECT SPELERSNR, NAAM, GEB_DATUM FROM SPELERS WHERE GEB_DATUM > ANY (SELECT GEB_DATUM FROM SPELERS) Voorbeeld 8.53: SELECT DISTINCT SPELERSNR FROM BOETES WHERE SPELERSNR <> 27 AND BEDRAG > ANY (SELECT BEDRAG FROM BOETES WHERE SPELERSNR = 27) Voorbeeld 8.54: 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.55: 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.56: SELECT TEAMNR, DIVISIE FROM TEAMS WHERE EXISTS (SELECT * FROM WEDSTRIJDEN WHERE SPELERSNR = 44 AND TEAMNR = TEAMS.TEAMNR) Voorbeeld 8.57: SELECT DISTINCT SPELERSNR FROM BOETES AS BT WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES WHERE BETALINGSNR <> BT.BETALINGSNR) Voorbeeld 8.58: SELECT SPELERSNR, NAAM FROM SPELERS WHERE 1 <> ALL (SELECT TEAMNR FROM WEDSTRIJDEN WHERE SPELERSNR = SPELERS.SPELERSNR) Voorbeeld 8.59: SELECT TEAMNR FROM TEAMS WHERE NOT EXISTS (SELECT * FROM WEDSTRIJDEN WHERE SPELERSNR = 57 AND TEAMNR = TEAMS.TEAMNR) Voorbeeld 8.60: 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)) Voorbeeld 8.61: 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.62: 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.63: 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.64: 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 BEDRAG >= 61 ; 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 SPELERSNR = 27 AND TEAMNR = 2) AND TEAMNR = 2 AND SPELERSNR <> 27 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 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 17 YEAR) AND YEAR(GEB_DATUM + INTERVAL 39 YEAR) 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 FROM SPELERS WHERE BONDSNR IS NULL Antwoord 8.39: SELECT NAAM, VOORLETTERS FROM SPELERS WHERE EXISTS (SELECT * FROM TEAMS WHERE SPELERSNR = SPELERS.SPELERSNR) Antwoord 8.40: SELECT NAAM, VOORLETTERS FROM SPELERS AS S WHERE NOT EXISTS (SELECT * FROM TEAMS AS T WHERE T.SPELERSNR = S.SPELERSNR AND NOT EXISTS (SELECT * FROM WEDSTRIJDEN AS W WHERE W.TEAMNR = T.TEAMNR AND W.SPELERSNR = 112)) Antwoord 8.41: SELECT SPELERSNR FROM SPELERS WHERE GEB_DATUM <= ALL (SELECT GEB_DATUM FROM SPELERS WHERE PLAATS = 'Den Haag') AND PLAATS = 'Den Haag' Antwoord 8.43: 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.44: 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.46: 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) Antwoord 8.47: 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.48: SELECT SPELERSNR, NAAM FROM SPELERS WHERE EXISTS (SELECT * FROM BOETES WHERE SPELERSNR = SPELERS.SPELERSNR) Antwoord 8.49: 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.50: 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) Antwoord 8.51: 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.52: 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.53: SELECT SPELERSNR FROM SPELERS WHERE SPELERSNR NOT IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE GEWONNEN = 3) Antwoord 8.54: SELECT TEAMNR, DIVISIE FROM TEAMS WHERE TEAMNR NOT IN (SELECT TEAMNR FROM WEDSTRIJDEN WHERE SPELERSNR = 6) Antwoord 8.55: 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 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 Voorbeeld 9.5: SELECT STRAAT, 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 'Het aantal spelers is', COUNT(*) FROM SPELERS Voorbeeld 9.10: SELECT COUNT(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)) 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), (SELECT COUNT(*) FROM WEDSTRIJDEN) Voorbeeld 9.18: SELECT MAX(BEDRAG) FROM BOETES ; SELECT MAX(ALL 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 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 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' , (SELECT COUNT(*) FROM SPELERS) 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, ABS((SELECT MIN(BEDRAG) FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR) - (SELECT MAX(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, ABS((SELECT AVG(BEDRAG) FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR) - (SELECT MAX(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 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), COUNT(*) FROM BOETES GROUP BY YEAR(DATUM) Voorbeeld 10.9: SELECT TRUNCATE(SPELERSNR/25,0), 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 CAST(BEDRAG * 100 AS SIGNED INTEGER) AS BEDRAG_IN_CENTEN FROM BOETES GROUP BY BEDRAG Voorbeeld 10.12: 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.13: 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.14: 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.15: 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 1 Voorbeeld 10.16: 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.17: 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.18: SELECT SPELERSNR, SUM(BEDRAG) FROM BOETES GROUP BY SPELERSNR UNION SELECT CAST(NULL AS SIGNED INTEGER), SUM(BEDRAG) FROM BOETES ; SELECT SPELERSNR, SUM(BEDRAG) FROM BOETES GROUP BY SPELERSNR WITH ROLLUP Voorbeeld 10.19: SELECT GESLACHT, PLAATS, COUNT(*) FROM SPELERS GROUP BY GESLACHT, PLAATS WITH ROLLUP Voorbeeld 10.20: SELECT ROW_NUMBER() OVER () AS VOLGNR, GESLACHT, PLAATS, COUNT(*) FROM SPELERS GROUP BY GESLACHT, PLAATS WITH CUBE ORDER BY GESLACHT, PLAATS Voorbeeld 10.21: SELECT PLAATS, MIN(GEB_DATUM) FROM SPELERS GROUP BY PLAATS ; SELECT PLAATS, MIN(GEB_DATUM) FROM SPELERS GROUP BY GROUPING SETS ((PLAATS)) Voorbeeld 10.22: SELECT CAST(NULL AS CHAR), PLAATS, COUNT(*) FROM SPELERS GROUP BY PLAATS UNION SELECT GESLACHT, CAST(NULL AS CHAR), COUNT(*) FROM SPELERS GROUP BY GESLACHT ORDER BY 2, 1 ; SELECT GESLACHT, PLAATS, COUNT(*) FROM SPELERS GROUP BY GROUPING SETS ((PLAATS), (GESLACHT)) ORDER BY 2, 1 Voorbeeld 10.23: SELECT GESLACHT, PLAATS, COUNT(*) FROM SPELERS GROUP BY GROUPING SETS ((GESLACHT, PLAATS), (GESLACHT), ()) ORDER BY 1, 2 Voorbeeld 10.24: SELECT TEAMNR, SPELERSNR, COUNT(*) FROM WEDSTRIJDEN GROUP BY GROUPING SETS (TEAMNR, SPELERSNR) ORDER BY 1, 2 Voorbeeld 10.25: SELECT GESLACHT, PLAATS, COUNT(*) FROM SPELERS GROUP BY ROLLUP (GESLACHT, PLAATS) ORDER BY 1, 2 Voorbeeld 10.26: SELECT ROW_NUMBER() OVER () AS VOLGNR, GESLACHT, PLAATS, YEAR(GEB_DATUM), COUNT(*) FROM SPELERS GROUP BY ROLLUP (GESLACHT, PLAATS, YEAR(GEB_DATUM)) ORDER BY 2, 3, 4 Voorbeeld 10.27: SELECT ROW_NUMBER() OVER () AS VOLGNR, GESLACHT, PLAATS, YEAR(GEB_DATUM), COUNT(*) FROM SPELERS GROUP BY ROLLUP (GESLACHT, (PLAATS, YEAR(GEB_DATUM))) ORDER BY 2, 3, 4 Voorbeeld 10.28: SELECT ROW_NUMBER() OVER () AS VOLGNR, GESLACHT, PLAATS, COUNT(*) FROM SPELERS GROUP BY CUBE (GESLACHT, PLAATS) ORDER BY 2, 3 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 1, 2 Antwoord 10.6: SELECT YEAR(BEGIN_DATUM), MONTH(BEGIN_DATUM), COUNT(*) FROM BESTUURSLEDEN GROUP BY YEAR(BEGIN_DATUM), MONTH(BEGIN_DATUM)ORDER BY 1, 2 Antwoord 10.7: 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 ORDER BY 1 Antwoord 10.8: 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.9: 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.10: SELECT LENGTH(RTRIM(NAAM)), COUNT(*) FROM SPELERS GROUP BY LENGTH(RTRIM(NAAM)) Antwoord 10.11: SELECT ABS(GEWONNEN - VERLOREN), COUNT(*) FROM WEDSTRIJDEN GROUP BY ABS(GEWONNEN - VERLOREN) 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 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 Antwoord 10.23: SELECT ROW_NUMBER() OVER () AS VOLGNR, TEAMNR, SPELERSNR, GEWONNEN, COUNT(*) FROM WEDSTRIJDEN GROUP BY TEAMNR, SPELERSNR, GEWONNEN WITH CUBE ORDER BY 2, 3 Antwoord 10.24: SELECT COUNT(*) FROM WEDSTRIJDEN GROUP BY GROUPING SETS (()) Antwoord 10.25: SELECT TEAMNR, SPELERSNR, COUNT(*) FROM WEDSTRIJDEN GROUP BY GROUPING SETS ((TEAMNR, SPELERSNR), (TEAMNR), ()) ORDER BY 1, 2 Antwoord 10.27: SELECT TEAMNR, SPELERSNR, COUNT(*) FROM WEDSTRIJDEN WHERE GEWONNEN > VERLOREN GROUP BY ROLLUP (TEAMNR, SPELERSNR) ORDER BY 1, 2 Antwoord 10.28: SELECT S.PLAATS, S.GESLACHT, W.TEAMNR, COUNT(*) FROM WEDSTRIJDEN AS W INNER JOIN SPELERS AS S ON W.SPELERSNR = S.SPELERSNR GROUP BY CUBE (S.PLAATS, S.GESLACHT, W.TEAMNR) ORDER BY 1, 2, 3 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) 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) 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 1 DESC Antwoord 12.3: SELECT SPELERSNR, TEAMNR, GEWONNEN - VERLOREN FROM WEDSTRIJDEN ORDER BY 3 ASC Voorbeeld 13.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 13.2: SELECT GEB_DATUM AS DATUMS FROM SPELERS UNION SELECT DATUM FROM BOETES Voorbeeld 13.3: SELECT SPELERSNR FROM BOETES UNION SELECT SPELERSNR FROM TEAMS Voorbeeld 13.4: SELECT SPELERSNR FROM BOETES UNION SELECT SPELERSNR FROM TEAMS UNION SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Den Haag' Voorbeeld 13.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 1, 2 Voorbeeld 13.6: SELECT SPELERSNR, GEB_DATUM FROM SPELERS WHERE PLAATS = 'Den Haag' INTERSECT SELECT SPELERSNR, GEB_DATUM FROM SPELERS WHERE GEB_DATUM > '1960-12-31' ORDER BY 1 ; SELECT SPELERSNR, GEB_DATUM FROM SPELERS WHERE PLAATS = 'Den Haag' AND GEB_DATUM > '1960-12-31' ORDER BY 1 Voorbeeld 13.7: SELECT SPELERSNR FROM TEAMS INTERSECT SELECT SPELERSNR FROM BOETES Voorbeeld 13.8: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM TEAMS INTERSECT SELECT SPELERSNR FROM BOETES) Voorbeeld 13.9: SELECT POWER(GETAL,2) AS MACHTEN FROM (SELECT CAST(CIJFER1.CIJFER || CIJFER2.CIJFER AS UNSIGNED INTEGER) AS GETAL FROM (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') AS CIJFER1, (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') AS CIJFER2) AS GETALLEN WHERE POWER(GETAL,2) < 5000 INTERSECT SELECT POWER(GETAL,3) AS MACHTEN FROM (SELECT CAST(CIJFER1.CIJFER || CIJFER2.CIJFER AS UNSIGNED INTEGER) AS GETAL FROM (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') AS CIJFER1, (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') AS CIJFER2) AS GETALLEN WHERE POWER(GETAL,3) < 5000 Voorbeeld 13.10: SELECT SPELERSNR, GEB_DATUM FROM SPELERS WHERE PLAATS = 'Den Haag' EXCEPT SELECT SPELERSNR, GEB_DATUM FROM SPELERS WHERE GEB_DATUM > '1960-12-31' ORDER BY 1 ; SELECT SPELERSNR, GEB_DATUM FROM SPELERS WHERE PLAATS = 'Den Haag' AND NOT(GEB_DATUM > '1960-12-31') ORDER BY 1 Voorbeeld 13.11: SELECT SPELERSNR, NAAM FROM SPELERS WHERE SPELERSNR IN (SELECT SPELERSNR FROM BOETES EXCEPT SELECT SPELERSNR FROM TEAMS) Voorbeeld 13.12: SELECT SPELERSNR FROM BOETES EXCEPT SELECT 6 UNION SELECT 27 UNION SELECT 58 Voorbeeld 13.13: SELECT SPELERSNR FROM BOETES UNION ALL SELECT SPELERSNR FROM TEAMS Voorbeeld 13.14: SELECT SPELERSNR FROM BOETES EXCEPT ALL SELECT SPELERSNR FROM TEAMS Voorbeeld 13.15: SELECT SPELERSNR FROM BOETES EXCEPT SELECT SPELERSNR FROM TEAMS UNION SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Zoetermeer' ; SELECT SPELERSNR FROM BOETES EXCEPT ( SELECT SPELERSNR FROM TEAMS UNION SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Zoetermeer' ) Antwoord 13.1: SELECT SPELERSNR FROM BESTUURSLEDEN INTERSECT SELECT SPELERSNR FROM BOETES GROUP BY SPELERSNR HAVING COUNT(*) >= 2 Antwoord 13.2: SELECT MAX(DATUM) FROM (SELECT MAX(GEB_DATUM) AS DATUM FROM SPELERS UNION SELECT MAX(DATUM) FROM BOETES) AS TWEEDATUMS Antwoord 13.5: SELECT SPELERSNR FROM BESTUURSLEDEN INTERSECT SELECT SPELERSNR FROM BOETES GROUP BY SPELERSNR HAVING COUNT(*) >= 2 Antwoord 13.6: SELECT COUNT(*) FROM (SELECT SPELERSNR FROM BESTUURSLEDEN INTERSECT SELECT SPELERSNR FROM BOETES GROUP BY SPELERSNR HAVING COUNT(*) >= 2) AS SPELERS Antwoord 13.7: SELECT SPELERSNR FROM BESTUURSLEDEN EXCEPT SELECT SPELERSNR FROM BOETES Antwoord 13.8: 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 UNION SELECT 10 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 UNION SELECT 20 EXCEPT SELECT BETALINGSNR FROM BOETES Antwoord 13.9: SELECT SUM(AANTAL) FROM (SELECT COUNT(*) AS AANTAL FROM SPELERS UNION ALL SELECT COUNT(*) AS AANTAL FROM TEAMS) AS AANTALLEN Antwoord 13.10: SELECT POWER(CIJFER,2) FROM (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') AS CIJFERS1 UNION ALL SELECT POWER(CIJFER,3) FROM (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') AS CIJFERS2 ORDER BY 1 Voorbeeld 14.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 14.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 14.3: INSERT INTO TEAMS (TEAMNR, SPELERSNR, DIVISIE) VALUES (6, 100, 'derde'), (7, 27, 'vierde'), (8, 39, 'vierde'), (9, 112, 'zesde') Voorbeeld 14.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)) Voorbeeld 14.5: 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 14.6: INSERT INTO RECREANTEN (SPELERSNR, NAAM, PLAATS, TELEFOON) SELECT SPELERSNR + 1000, NAAM, PLAATS, TELEFOON FROM RECREANTEN Voorbeeld 14.7: INSERT INTO BOETES SELECT BETALINGSNR + 100, SPELERSNR, DATUM, BEDRAG FROM BOETES WHERE BEDRAG > (SELECT AVG(BEDRAG) FROM BOETES) Voorbeeld 14.8: UPDATE SPELERS SET BONDSNR = '2000' WHERE SPELERSNR = 95 ; UPDATE SPELERS AS S SET S.BONDSNR = '2000' WHERE S.SPELERSNR = 95 Voorbeeld 14.9: UPDATE BOETES SET BEDRAG = BEDRAG * 1.05 Voorbeeld 14.10: UPDATE WEDSTRIJDEN SET GEWONNEN = 0 WHERE SPELERSNR IN (SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Den Haag') Voorbeeld 14.11: UPDATE SPELERS SET STRAAT = 'Pisuissestraat', HUISNR = '83', PLAATS = 'Rijswijk', POSTCODE = '1234UU', TELEFOON = NULL WHERE NAAM = 'Permentier' Voorbeeld 14.12: 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 14.13: UPDATE BOETES SET BEDRAG = BEDRAG – (SELECT AVG(BEDRAG) FROM BOETES) Voorbeeld 14.14: DELETE FROM BOETES WHERE SPELERSNR = 44 ; DELETE FROM BOETES AS B WHERE B.SPELERSNR = 44 Voorbeeld 14.15: DELETE FROM SPELERS WHERE JAARTOE > (SELECT AVG(JAARTOE) FROM SPELERS WHERE PLAATS = 'Den Haag') Antwoord 14.1: INSERT INTO BOETES VALUES (15, 27, '1985-11-08', 75) Antwoord 14.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 14.3: UPDATE SPELERS SET GESLACHT = 'F' WHERE GESLACHT = 'V' Antwoord 14.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 14.5: UPDATE BOETES SET BEDRAG = BEDRAG * 1.2 WHERE BEDRAG > (SELECT AVG(BEDRAG) FROM BOETES) Antwoord 14.6: DELETE FROM BOETES WHERE SPELERSNR = 44 AND YEAR(DATUM) = 1980 Antwoord 14.7: DELETE FROM BOETES WHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE TEAMNR IN (SELECT TEAMNR FROM TEAMS WHERE DIVISIE = 'tweede')) Antwoord 14.8: DELETE FROM SPELERS WHERE PLAATS = (SELECT PLAATS FROM SPELERS WHERE SPELERSNR = 44) AND SPELERSNR <> 44 Voorbeeld 15.1: 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) Voorbeeld 15.1: 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 15.2: 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 15.3: CREATE TEMPORARY TABLE SOMBOETES (TOTAAL DECIMAL(10,2)) ; INSERT INTO SOMBOETES SELECT SUM(BEDRAG) FROM BOETES Voorbeeld 15.4: 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 15.5: CREATE TABLE TEAMS_KOPIE1 LIKE TEAMS Voorbeeld 15.6: CREATE TABLE TEAMS_KOPIE2 AS (SELECT * FROM TEAMS) Voorbeeld 15.7: CREATE TABLE TEAMS_KOPIE3 AS (SELECT TEAMNR AS TNR, SPELERSNR AS SNR, DIVISIE FROM TEAMS) ; SELECT * FROM TEAMS_KOPIE3 Voorbeeld 15.8: CREATE TABLE TEAMS_KOPIE4 AS (SELECT TEAMNR, SPELERSNR FROM TEAMS WHERE SPELERSNR = 27) Voorbeeld 15.9: CREATE TEMPORARY TABLE TEAMS AS (SELECT * FROM TEAMS Voorbeeld 15.10: CREATE TABLE TEAMS_KOPIE5 (TEAMNR INTEGER NOT NULL PRIMARY KEY, SPELERSNR INTEGER NULL, DIVISIE CHAR(10) NOT NULL) AS (SELECT * FROM TEAMS) ; CREATE TABLE TEAMS_KOPIE5 (SPELERSNR INTEGER NULL, DIVISIE CHAR(10) NOT NULL) AS (SELECT * FROM TEAMS) Voorbeeld 15.11: CREATE TABLE TEAMS_KOPIE6 (SPELERSNR INTEGER NULL, COMMENTAAR VARCHAR(100)) AS (SELECT * FROM TEAMS) ; SELECT * FROM TEAMS_KOPIE6 Voorbeeld 15.12: CREATE TABLE BOETES (BETALINGSNR INTEGER NOT NULL PRIMARY KEY, SPELERSNR INTEGER NOT NULL, DATUM DATE NOT NULL DEFAULT '1990-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 15.13: UPDATE BOETES SET BEDRAG = DEFAULT Voorbeeld 15.14: UPDATE BOETES SET BEDRAG = YEAR(DEFAULT(DATUM))*10 Voorbeeld 15.15: 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 15.16: 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, SALDO AS ABS(GEWONNEN – VERLOREN)) Voorbeeld 15.17: SELECT WEDSTRIJDNR, SALDO FROM WEDSTRIJDEN WHERE SALDO > 1 Voorbeeld 15.18: SELECT COLUMN_NAME, DATA_TYPE, CHAR_LENGTH, NULLABLE FROM COLUMNS WHERE TABLE_NAME = 'SPELERS' AND TABLE_CREATOR = 'BOEKSQL' ORDER BY COLUMN_NO Voorbeeld 15.19: SELECT 'SPELERS' AS TABEL_NAAM, COUNT(*) AS AANTAL_RIJEN, (SELECT COUNT(*) FROM COLUMNS WHERE TABLE_NAME = 'SPELERS' AND TABLE_CREATOR = 'RICK') AS S FROM SPELERS UNION SELECT 'TEAMS', COUNT(*), (SELECT COUNT(*) FROM COLUMNS WHERE TABLE_NAME = 'TEAMS' AND TABLE_CREATOR = 'RICK') AS T FROM TEAMS UNION SELECT 'BOETES', COUNT(*), (SELECT COUNT(*) FROM COLUMNS WHERE TABLE_NAME = 'BOETES' AND TABLE_CREATOR = 'RICK') AS B FROM BOETES UNION SELECT 'WEDSTRIJDEN', COUNT(*), (SELECT COUNT(*) FROM COLUMNS WHERE TABLE_NAME = 'WEDSTRIJDEN' AND TABLE_CREATOR = 'RICK') AS W FROM WEDSTRIJDEN UNION SELECT 'BESTUURSLEDEN', COUNT(*), (SELECT COUNT(*) FROM COLUMNS WHERE TABLE_NAME = 'BESTUURSLEDEN' AND TABLE_CREATOR = 'RICK') AS BL FROM BESTUURSLEDEN ORDER BY 1 Antwoord 15.6: CREATE TABLE AFDELING ( AFDNR CHAR(5) NOT NULL PRIMARY KEY, BUDGET DECIMAL(8,2), LOKATIE VARCHAR(30)) Antwoord 15.7: CREATE TABLE S_KOPIE LIKE SPELERS Antwoord 15.8: CREATE TABLE S2_KOPIE AS (SELECT * FROM SPELERS) Antwoord 15.9: CREATE TABLE NUMMERS AS (FROM SPELERS WHERE PLAATS = 'Den Haag') Voorbeeld 16.2: CREATE TABLE DIPLOMAS (CURSIST INTEGER NOT NULL, CURSUS INTEGER NOT NULL, DATUM DATE NOT NULL, SUCCESVOL CHAR(1), LOKATIE VARCHAR(5), PRIMARY KEY (CURSIST, CURSUS, DATUM)) Voorbeeld 16.3: 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 16.4: 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 16.5: 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 16.6: 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 16.7: 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 16.8: 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 16.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) ON DELETE CASCADE) Voorbeeld 16.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 DELETE SET NULL) Voorbeeld 16.11: CREATE TABLE SPELERS_X (SPELERSNR INTEGER NOT NULL, GESLACHT CHAR(1) NOT NULL CHECK(GESLACHT IN ('M', 'V'))) Voorbeeld 16.12: CREATE TABLE SPELERS_Y (SPELERSNR INTEGER NOT NULL, GEB_DATUM DATE CHECK(GEB_DATUM > '1920-01-01')) Voorbeeld 16.13: 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 16.14: CREATE TABLE SPELERS_V (SPELERSNR SMALLINT NOT NULL, GESLACHT CHAR(1) NOT NULL CHECK(GESLACHT IN (SELECT GESLACHT FROM SPELERS))) Voorbeeld 16.15: 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)) Antwoord 16.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 17.1: SHOW CHARACTER SET ; SELECT CHARACTER_SET_NAME, DESCRIPTION, DEFAULT_COLLATE_NAME, MAXLEN FROM INFORMATION_SCHEMA.CHARACTER_SETS Voorbeeld 17.2: SHOW COLLATION LIKE 'utf8%' ; SELECT * FROM INFORMATION_SCHEMA.COLLATIONS WHERE COLLATION_NAME LIKE 'utf8%' Voorbeeld 17.3: CREATE TABLE TABUCS2 (K1 CHAR(10) CHARACTER SET ucs2 NOT NULL PRIMARY KEY, K2 VARCHAR(10) CHARACTER SET ucs2) Voorbeeld 17.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 17.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 17.6: SELECT TABLE_NAME. COLUMN_NAME, COLLATING_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME IN ('TABUCS2', 'KARSETHP8') Voorbeeld 17.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 17.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 17.9: CREATE TABLE TWEEKARSETS (K1 CHAR(10) CHARACTER SET 'latin1' NOT NULL, K2 VARCHAR(10) CHARACTER SET 'utf8') ; INSERT INTO TWEEKARSETS VALUES ('A', 'A') ; SELECT * FROM TWEEKARSETS WHERE K1 = K2 Voorbeeld 17.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 Voorbeeld 17.11: SELECT _utf8'database' Voorbeeld 17.12: SELECT COLLATION(_utf8'database'), COLLATION(_utf8'database' COLLATE utf8_bin), COLLATION((SELECT MAX(NAAM) FROM SPELERS)) Voorbeeld 17.13: SELECT CHARSET(_utf8'database'), CHARSET((SELECT MAX(NAAM) FROM SPELERS)) Voorbeeld 17.14: SELECT _latin1'Muller' AS NAAM UNION SELECT CONCAT('M', _latin1 x'FC', 'ller') ORDER BY NAAM COLLATE latin1_swedish_ci Voorbeeld 17.15: CREATE TABLE LETTERS (VOLGNR INTEGER NOT NULL PRIMARY KEY, LETTER CHAR(1) CHARACTER SET UTF8 NOT NULL) ; INSERT INTO LETTERS VALUES (1, 'e'), (2, x'E9'),(3, x'EB') ; SELECT L FROM (SELECT LETTER COLLATE utf8_general_ci AS L FROM LETTERS) AS L GROUP BY L ; SELECT L FROM (SELECT LETTER COLLATE utf8_swedish_ci AS L FROM LETTERS) AS L GROUP BY L Voorbeeld 17.16: SELECT LETTER FROM LETTERS ORDER BY LETTER Voorbeeld 17.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 Antwoord 17.2: SELECT COLLATION_NAME, COUNT(*) FROM INFORMATION_SCHEMA.COLLATIONS GROUP BY COLLATION_NAME Antwoord 17.4: SELECT CHARSET((SELECT MAX(PLAATS) FROM SPELERS)), COLLATION((SELECT MAX(PLAATS) FROM SPELERS)) Antwoord 17.5: SELECT PLAATS FROM SPELERS ORDER BY PLAATS COLLATE latin1_danish_ci Voorbeeld 18.1: DROP TABLE SPELERS Voorbeeld 18.2: RENAME TABLE SPELERS TO TENNISSERS Voorbeeld 18.3: ALTER TABLE SPELERS TO TENNISSERS Voorbeeld 18.4: ALTER TABLE SPELERS CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci Voorbeeld 18.5: ALTER TABLE TEAMS ADD SOORT CHAR(1) Voorbeeld 18.6: ALTER TABLE TEAMS ADD SOORT CHAR(1) AFTER TEAMNR Voorbeeld 18.7: ALTER TABLE TEAMS ADD (CATEGORIE VARCHAR(20) NOT NULL, IMAGO INTEGER DEFAULT 10) Voorbeeld 18.8: ALTER TABLE TEAMS DROP SOORT Voorbeeld 18.9: ALTER TABLE SPELERS CHANGE GEB_DATUM GEBOORTEDATUM DATE Voorbeeld 18.10: ALTER TABLE SPELERS CHANGE PLAATS PLAATS VARCHAR(40) NOT NULL Voorbeeld 18.11: ALTER TABLE SPELERS CHANGE PLAATS PLAATS VARCHAR(5) NOT NULL Voorbeeld 18.12: ALTER TABLE SPELERS CHANGE SPELERSNR SPELERSNR TINYINT Voorbeeld 18.13: ALTER TABLE SPELERS CHANGE PLAATS PLAATS VARCHAR(5) NOT NULL AFTER SPELERSNR Voorbeeld 18.14: ALTER TABLE SPELERS MODIFY PLAATS VARCHAR(5) NOT NULL AFTER SPELERSNR Voorbeeld 18.15: ALTER TABLE BESTUURSLEDEN ALTER FUNCTIE SET DEFAULT 'Lid' Voorbeeld 18.16: ALTER TABLE BESTUURSLEDEN ALTER FUNCTIE DROP DEFAULT Voorbeeld 18.17: 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 18.18: ALTER TABLE SPELERS DROP PRIMARY KEY Voorbeeld 18.19: ALTER TABLE T1 DROP CONSTRAINT FK2 Voorbeeld 18.20: ALTER TABLE T2 DROP CONSTRAINT C1 Antwoord 18.1: ALTER TABLE BESTUURSLEDEN CHANGE FUNCTIE BESTUURSFUNCTIE CHAR(20) Antwoord 18.2: ALTER TABLE BESTUURSLEDEN MODIFY BESTUURSFUNCTIE CHAR(30) Antwoord 18.3: ALTER TABLE SPELERS ALTER PLAATS SET DEFAULT 'Den Haag' Voorbeeld 19.1: SELECT SPELERSNR, 0 FROM KINDEREN WHERE VNAAM1 IS NULL AND VNAAM2 IS NULL AND VNAAM3 IS NULL UNION SELECT SPELERSNR, 1 FROM KINDEREN WHERE VNAAM1 IS NOT NULL AND VNAAM2 IS NULL AND VNAAM3 IS NULL UNION SELECT SPELERSNR, 2 FROM KINDEREN WHERE VNAAM1 IS NOT NULL AND VNAAM2 IS NOT NULL AND VNAAM3 IS NULL UNION SELECT SPELERSNR, 3 FROM KINDEREN WHERE VNAAM1 IS NOT NULL AND VNAAM2 IS NOT NULL AND VNAAM3 IS NOT NULL UNION SELECT SPELERSNR, 0 FROM SPELERS WHERE SPELERSNR NOT IN (SELECT SPELERSNR FROM KINDEREN) Voorbeeld 19.2: SELECT * FROM KINDEREN WHERE SPELERSNR = 6 ; UPDATE KINDEREN SET VNAAM2 = 'Diane' WHERE SPELERSNR = 6 ; SELECT SPELERSNR, COUNT(*) FROM SPELERS LEFT OUTER JOIN KINDEREN ON SPELERS.SPELERSNR = KINDEREN.SPELERSNR GROUP BY SPELERSNR ; UPDATE KINDEREN SET VNAAM = 'Diane' WHERE SPELERSNR = 6 AND VNAAM = 'Diana' Voorbeeld 19.3: SELECT ADRES FROM SPELERS WHERE SPELERSNR = 44 Voorbeeld 19.4: SELECT NAAM, BEDRAG FROM BOETES AS BT, SPELERS AS S WHERE BT.SPELERSNR = S.SPELERSNR Voorbeeld 19.5: SELECT SPELERSNR, SUM(BEDRAG) AS TOTAAL FROM SPELERS LEFT OUTER JOIN BOETES ON SPELERS.SPELERSNR = BOETES.SPELERSNR GROUP BY SPELERSNR ORDER BY 1 Antwoord 19.3: SELECT WEDSTRIJDNR, TEAMNR, DIVISIE FROM WEDSTRIJDEN Antwoord 19.4: SELECT SPELERSNR, NAAM FROM SPELERS WHERE GEWONNEN > GEMIDDELD Antwoord 19.5: CREATE TABLE UITVOERING (NAAM_SHOW CHAR(20) NOT NULL, LOKATIE CHAR(20) NOT NULL, DATUM DATE NOT NULL, PRIMARY KEY (NAAM_SHOW, LOKATIE, DATUM)) ; CREATE TABLE SHOWS (NAAM_SHOW CHAR(20) NOT NULL, CONFERENCIER CHAR(20) NOT NULL, PRIMARY KEY (NAAM_SHOW)) ; CREATE TABLE BEZETTING (NAAM_SHOW CHAR(20) NOT NULL, MUZIKANT CHAR(20) NOT NULL, INSTRUMENT CHAR(20) NOT NULL, PRIMARY KEY (NAAM_SHOW, MUZIKANT, INSTRUMENT)) Voorbeeld 20.4: SELECT * FROM SPELERS WHERE SPELERSNR = 44 Voorbeeld 20.5: SELECT SPELERSNR, PLAATS FROM SPELERS WHERE SPELERSNR < 10 AND PLAATS = 'Den Haag' ORDER BY SPELERSNR Voorbeeld 20.6: SELECT NAAM, VOORLETTERS FROM SPELERS WHERE PLAATS = (SELECT PLAATS FROM SPELERS WHERE SPELERSNR = 44) Voorbeeld 20.7: CREATE INDEX SPEL_PC ON SPELERS (POSTCODE ASC) Voorbeeld 20.8: CREATE INDEX WED_GV ON WEDSTRIJDEN (GEWONNEN, VERLOREN) Voorbeeld 20.9: CREATE UNIQUE INDEX NAAMVOOR ON SPELERS (NAAM, VOORLETTERS) Voorbeeld 20.10: CREATE UNIQUE CLUSTERED INDEX SPELERS_CLUSTERED ON SPELERS (SPELERSNR) Voorbeeld 20.11: ALTER TABLE TEAMS ADD INDEX TEAMS_DIVISIE USING BTREE (DIVISIE) Voorbeeld 20.12: DROP INDEX SPEL_PC ; DROP INDEX WED_GV ; DROP INDEX NAAMVOOR Voorbeeld 20.13: 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 20.14: 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(4)) Voorbeeld 20.15: 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 '0' ELSE TELLER END); IF MOD(TELLER,1000) = 0 THEN COMMIT WORK; END IF; SET TELLER = TELLER + 1; END WHILE; COMMIT WORK; UPDATE SPELERS_XXL SET BONDSNR = NULL WHERE BONDSNR = '0'; COMMIT WORK; END Voorbeeld 20.16: CALL VUL_SPELERS_XXL(100000) Voorbeeld 20.17: 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 20.18: CREATE INDEX SPEL_WEDS ON SPELERS(SPELERSNR), WEDSTRIJDEN(SPELERSNR) Voorbeeld 20.19: CREATE INDEX WED_HALVESALDO ON WEDSTRIJDEN((GEWONNEN – VERLOREN)/2) ; SELECT * FROM WEDSTRIJDEN WHERE (GEWONNEN – VERLOREN)/2 > 1 Voorbeeld 20.20: CREATE INDEX BOETES_DATUM ON BOETES WHERE DATUM > '1996-12-31' Voorbeeld 20.21: CREATE HASH INDEX SPELERSNR_HASH ON SPELERS (SPELERSNR) WITH PAGES=100 Voorbeeld 20.23: SELECT TABLE_CREATOR, TABLE_NAME, COUNT(*) FROM INDEXES GROUP BY TABLE_CREATOR, TABLE_NAME HAVING COUNT(*) > 1 Voorbeeld 20.24: 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 21.1: CREATE VIEW WOONPLAATSEN AS SELECT DISTINCT PLAATS FROM SPELERS ; SELECT * FROM WOONPLAATSEN Voorbeeld 21.2: CREATE VIEW WSPELERS AS SELECT SPELERSNR, BONDSNR FROM SPELERS WHERE BONDSNR IS NOT NULL ; SELECT * FROM WSPELERS Voorbeeld 21.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 21.4: DELETE FROM WSPELERS WHERE BONDSNR = '7060' Voorbeeld 21.5: CREATE VIEW SOMMIGEN AS SELECT * FROM WSPELERS WHERE SPELERSNR BETWEEN 6 AND 27 ; SELECT * FROM SOMMIGEN Voorbeeld 21.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 21.7: CREATE VIEW HAGENAAR (SPELERSNR, NAAM, VLS, GEBOORTE) AS SELECT SPELERSNR, NAAM, VOORLETTERS, GEB_DATUM FROM SPELERS WHERE PLAATS = 'Den Haag' ; SELECT * FROM HAGENAAR WHERE SPELERSNR > 90 Voorbeeld 21.8: CREATE VIEW INWONERS (PLAATS, AANTAL) AS SELECT PLAATS, COUNT(*) FROM SPELERS GROUP BY PLAATS Voorbeeld 21.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 21.10: CREATE VIEW RIJSWIJKSE_VETERANEN AS SELECT * FROM VETERANEN WHERE PLAATS = 'Rijswijk' WITH CASCADED CHECK OPTION Voorbeeld 21.11: DROP VIEW WSPELERS Voorbeeld 21.12: SELECT TABLE_NAME FROM TABLES WHERE TABLE_NAME = 'VOORRAAD' AND TABLE_CREATOR = 'JAN' UNION SELECT VIEW_NAME FROM VIEWS WHERE VIEW_NAME = 'VOORRAAD' AND VIEW_CREATOR = 'JAN' Voorbeeld 21.13: 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 21.14: DELETE FROM HAGENAAR WHERE GEBOORTE > '1965-12-31' ; DELETE FROM SPELERS WHERE GEB_DATUM > '1965-12-31' AND PLAATS = 'Den Haag' Voorbeeld 21.15: 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 21.17: 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 RESULT ; CREATE VIEW WEDSTRIJDEN AS SELECT WEDSTRIJDNR, TEAMNR, SPELERSNR, GEWONNEN, VERLOREN FROM RESULT Voorbeeld 21.18: CREATE VIEW SPELERSG AS SELECT * FROM SPELERS WHERE GESLACHT IN ('M', 'V') WITH CHECK OPTION Antwoord 21.1: CREATE VIEW AANTALSP (TEAMNR, AANTAL) ASSELECT TEAMNR, COUNT(*) FROM WEDSTRIJDEN GROUP BY TEAMNR Antwoord 21.2: CREATE VIEW WINNAARS AS SELECT SPELERSNR, NAAM FROM SPELERSWHERE SPELERSNR IN (SELECT SPELERSNR FROM WEDSTRIJDEN WHERE GEWONNEN > VERLOREN) Antwoord 21.3: CREATE VIEW TOTALEN (SPELERSNR, SOM_BOETES) AS SELECT SPELERSNR, SUM(BEDRAG) FROM BOETES GROUP BY SPELERSNR Antwoord 21.5.1: SELECT YEAR(GEBOORTE) - 1900, COUNT(*) FROM (SELECT SPELERSNR, NAAM, VOORLETTERS, GEB_DATUM AS GEBOORTE FROM SPELERS WHERE PLAATS = 'Den Haag') AS HAGENAAR GROUP BY GEBOORTE Antwoord 21.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 21.5.3: UPDATE SPELERS SET GEB_DATUM = '1950-04-04' WHERE SPELERSNR = 7 Voorbeeld 22.1: SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA Voorbeeld 22.2: SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'TENNIS' ORDER BY 1 Voorbeeld 22.3: CREATE DATABASE TENNIS2 DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci Voorbeeld 22.4: SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA Voorbeeld 22.5: ALTER DATABASE TENNIS2 DEFAULT CHARACTER SET sjis DEFAULT COLLATE sjis_japanese_ci Voorbeeld 22.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 22.7: ALTER DATABASE TENNIS COLLATE hp8_bin Voorbeeld 22.8: Verwijder de TENNIS2-database. DROP DATABASE TENNIS2 Voorbeeld 23.1: CREATE USER CHRIS IDENTIFIED BY 'CHRISSEC' ; CREATE USER PAUL IDENTIFIED BY 'LUAP' ; CREATE USER 'CHRIS'@'%' IDENTIFIED BY 'CHRISSEC' ; CREATE USER 'SAM'@'TEST' IDENTIFIED BY 'CHRISSEC' Voorbeeld 23.2: ALTER USER JAN IDENTIFIED BY JAN1 Voorbeeld 23.3: DROP USER JAN Voorbeeld 23.4: GRANT SELECT ON SPELERS TO JAMIE Voorbeeld 23.5: GRANT INSERT, UPDATE ON TEAMS TO JAMIE, PIET Voorbeeld 23.6: GRANT SELECT, INSERT ON BOETES TO PUBLIC Voorbeeld 23.7: GRANT UPDATE (SPELERSNR, DIVISIE) ON TEAMS TO PAUL Voorbeeld 23.8: GRANT SELECT ON TENNIS.* TO PAUL Voorbeeld 23.9: GRANT CREATE, ALTER, DROP, CREATE VIEW ON TENNIS.* TO JOHN Voorbeeld 23.10: GRANT SELECT ON INFORMATION_SCHEMA.* TO PAUL Voorbeeld 23.11: GRANT SELECT, INSERT ON * TO ALYSSA Voorbeeld 23.12: GRANT CREATE, ALTER, DROP ON *.* TO MAX Voorbeeld 23.13: GRANT CREATE USER ON *.* TO ALYSSA ; GRANT ALL PRIVILEGES ON *.* TO ROOT Voorbeeld 23.14: GRANT REFERENCES ON TEAMS TO JOHN WITH GRANT OPTION ; GRANT REFERENCES ON TEAMS TO PAUL Voorbeeld 23.15: CREATE ROLE VERKOOP ; GRANT SELECT, INSERT ON BOETES TO VERKOOP ; GRANT VERKOOP TO IRENE, KELLY, JIM, MARK Voorbeeld 23.16: DROP ROLE VERKOOP Voorbeeld 23.17: SELECT GRANTEE FROM USER_AUTHS WHERE PRIVILEGE = 'SELECT' UNION SELECT GRANTEE FROM DATABASE_AUTHS WHERE DATABASENAME = 'TENNIS' AND PRIVILEGE = 'SELECT' UNION SELECT GRANTEE FROM TABLE_AUTHS WHERE TABLE_CREATOR = 'TENNIS' AND PRIVILEGE = 'SELECT' Voorbeeld 23.18: REVOKE SELECT ON SPELERS FROM JOHN Voorbeeld 23.19: REVOKE REFERENCES ON TEAMS FROM JOHN Voorbeeld 23.20: REVOKE VERKOOP FROM IRENE Voorbeeld 23.21: REVOKE SELECT ON BOETES FROM VERKOOP Voorbeeld 23.22: CREATE USER DIANE 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 23.23: CREATE USER GERARD IDENTIFIED BY 'XYZ1234' ; CREATE VIEW INWONERS (PLAATS, AANTAL) AS SELECT PLAATS, COUNT(*) FROM SPELERS GROUP BY PLAATS ; GRANT SELECT ON INWONERS TO GERARD Antwoord 23.1: CREATE USER RONALDO IDENTIFIED BY 'NIKE' Antwoord 23.2: DROP USER RONALDO Antwoord 23.3: GRANT SELECT, INSERT ON SPELERS TO RONALDO Antwoord 23.4: GRANT ALL ON BESTUURSLEDEN TO PUBLIC Antwoord 23.5: GRANT UPDATE(STRAAT, HUISNR, POSTCODE, PLAATS) ON TENNIS.* TO RONALDO Antwoord 23.6: GRANT INSERT ON SPELERS TO JACO, DIANE Antwoord 23.7: CREATE USER JOE IDENTIFIED BY 'JAZZ' ; CREATE USER JACO IDENTIFIED BY 'JAZZ' ; CREATE USER CHRIS IDENTIFIED BY 'JAZZ' ; CREATE ROLE ADMIN ; GRANT ALL ON BESTUURSLEDEN TO ADMIN Voorbeeld 25.1: DELETE FROM BOETES WHERE SPELERSNR = 44 ; SELECT * FROM BOETES Voorbeeld 25.6: UPDATE BOETES SET BEDRAG = BEDRAG + 25 WHERE BETALINGSNR = 4 ; SELECT * FROM BOETES WHERE BETALINGSNR = 4 Voorbeeld 25.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 25.8: SELECT SPELERSNR FROM SPELERS WHERE PLAATS = 'Den Haag' Voorbeeld 25.9: UPDATE BOETES SET BEDRAG = 75 WHERE BETALINGSNR = 4 ; UPDATE BOETES SET BEDRAG = 80 WHERE BETALINGSNR = 4 Voorbeeld 25.10: ALTER TABLE BOETES LOCKSIZE ROW Voorbeeld 25.11: LOCK TABLE SPELERS IN SHARE MODE ; LOCK TABLE SPELERS READ Voorbeeld 27.1: SELECT NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR = 6 OR SPELERSNR = 83 OR SPELERSNR = 44 ; SELECT NAAM, VOORLETTERS FROM SPELERS WHERE SPELERSNR IN (6, 83, 44) Voorbeeld 27.2: SELECT * FROM SPELERS WHERE JAARTOE = 1980 OR PLAATS = 'Den Haag' ; SELECT * FROM SPELERS WHERE JAARTOE = 1980 UNION SELECT * FROM SPELERS WHERE PLAATS = 'Den Haag' Voorbeeld 27.3: UPDATE BOETES SET BEDRAG = 150 WHERE BEDRAG = 100 OR DATUM = '1980-12-01' ; UPDATE BOETES SET BEDRAG = 150 WHERE BEDRAG = 100 ; UPDATE BOETES SET BEDRAG = 150 WHERE DATUM = '1980-12-01' ; SELECT NAAM FROM SPELERS WHERE JAARTOE = 1980 OR PLAATS = 'Den Haag' Voorbeeld 27.4: SELECT WEDSTRIJDNR, GEWONNEN - VERLOREN FROM WEDSTRIJDEN WHERE GEWONNEN >= VERLOREN UNION SELECT WEDSTRIJDNR, VERLOREN - VERLOREN FROM WEDSTRIJDEN WHERE GEWONNEN < VERLOREN ; SELECT WEDSTRIJDNR, ABS(GEWONNEN - VERLOREN) FROM WEDSTRIJDEN Voorbeeld 27.5: SELECT * FROM SPELERS WHERE NOT (JAARTOE > 1980) Voorbeeld 27.6: SELECT * FROM SPELERS WHERE NOT (GESLACHT = 'M') ; SELECT * FROM SPELERS WHERE GESLACHT = 'V' Voorbeeld 27.7: SELECT * FROM SPELERS WHERE JAARTOE + 10 = 1990 ; SELECT * FROM SPELERS WHERE JAARTOE = 1980 Voorbeeld 27.8: SELECT SPELERSNR FROM SPELERS WHERE GEB_DATUM >= '1962-01-01' AND GEB_DATUM <= '1965-12-31' ; SELECT SPELERSNR FROM SPELERS WHERE GEB_DATUM BETWEEN '1962-01-01' AND '1965-12-31' Voorbeeld 27.9: SELECT * FROM SPELERS WHERE NAAM LIKE '%n' Voorbeeld 27.10: SELECT BETALINGSNR, NAAM FROM BOETES AS BT, SPELERS AS S WHERE BT.SPELERSNR = S.SPELERSNR AND BT.SPELERSNR = 44 ; SELECT BETALINGSNR, NAAM FROM BOETES AS BT, SPELERS AS S WHERE BT.SPELERSNR = S.SPELERSNR AND BT.SPELERSNR = 44 AND S.SPELERSNR = 44 Voorbeeld 27.11: SELECT SPELERSNR, COUNT(*) FROM BOETES GROUP BY SPELERSNR HAVING SPELERSNR >= 40 ; SELECT SPELERSNR, COUNT(*) FROM BOETES WHERE SPELERSNR >= 40 GROUP BY SPELERSNR Voorbeeld 27.12: SELECT SPELERSNR, NAAM FROM SPELERS WHERE EXISTS (SELECT '1' FROM BOETES WHERE BOETES.SPELERSNR = SPELERS.SPELERSNR) Voorbeeld 27.13: SELECT DISTINCT WEDSTRIJDNR, NAAM FROM WEDSTRIJDEN, SPELERS WHERE WEDSTRIJDEN.SPELERSNR = SPELERS.SPELERSNR Voorbeeld 27.14: SELECT NAAM, VOORLETTERS FROM SPELERS WHERE PLAATS = 'Den Haag' UNION ALL SELECT NAAM, VOORLETTERS FROM SPELERS WHERE PLAATS = 'Voorburg' Voorbeeld 27.15: SELECT SPELERS.SPELERSNR, NAAM, BEDRAG FROM SPELERS, BOETES WHERE SPELERS.SPELERSNR = BOETES.SPELERSNR UNION SELECT SPELERSNR, NAAM, NULL FROM SPELERS WHERE SPELERSNR NOT IN (SELECT SPELERSNR FROM BOETES) ORDER BY 1 ; SELECT SPELERSNR, NAAM, BEDRAG FROM SPELERS LEFT OUTER JOIN BOETES USING (SPELERSNR) ORDER BY 1 Voorbeeld 27.16: SELECT SPELERSNR, NAAM, GEB_DATUM FROM SPELERS WHERE GEB_DATUM <= ALL (SELECT GEB_DATUM FROM SPELERS) ; SELECT SPELERSNR, NAAM, GEB_DATUM FROM SPELERS WHERE GEB_DATUM = (SELECT MIN(GEB_DATUM) FROM SPELERS) Voorbeeld 27.17: SELECT SPELERSNR, NAAM, GEB_DATUM FROM SPELERS WHERE GEB_DATUM > ANY (SELECT GEB_DATUM FROM SPELERS) ; SELECT SPELERSNR, NAAM, GEB_DATUM FROM SPELERS WHERE GEB_DATUM > (SELECT MIN(GEB_DATUM) FROM SPELERS) Antwoord 27.1.1: SELECT * FROM SPELERS WHERE PLAATS = 'Den Haag' AND STRAAT = 'Erasmusweg' UNION SELECT * FROM SPELERS WHERE GEB_DATUM < '1960-01-01' Antwoord 27.1.2: SELECT * FROM SPELERS Antwoord 27.1.3: SELECT DISTINCT TEAMS.* FROM TEAMS, WEDSTRIJDEN WHERE TEAMS.TEAMNR = WEDSTRIJDEN.TEAMNR AND GEWONNEN * VERLOREN = GEWONNEN * 4 Antwoord 27.1.4: SELECT DISTINCT T.TEAMNR FROM TEAMS AS T, WEDSTRIJDEN AS W WHERE T.TEAMNR = W.TEAMNR AND DIVISIE = 'tweede' Antwoord 27.1.5: SELECT SPELERSNR FROM SPELERS Antwoord 27.1.6: SELECT SPELERSNR, CASE GESLACHT WHEN 'V' THEN 'Vrouw' ELSE 'Man' END FROM SPELERS Antwoord 27.1.7: SELECT GEB_DATUM, COUNT(*) FROM SPELERS WHERE GEB_DATUM >= '1970-01-01' GROUP BY GEB_DATUM Antwoord 27.2.1: SELECT SPELERSNR, NAAM, GEB_DATUM FROM SPELERS_XXL WHERE GEB_DATUM = (SELECT MIN(GEB_DATUM) FROM SPELERS_XXL) Antwoord 27.2.2: SELECT * FROM SPELERS_XXL Antwoord 27.2.3: SELECT SPELERSNR, CASE GESLACHT WHEN 'V' THEN 'Vrouw' ELSE 'Man' END FROM SPELERS_XXL Antwoord 27.2.4: SELECT POSTCODE, COUNT(*) FROM SPELERS_XXL WHERE POSTCODE >= 'Y' GROUP BY POSTCODE Antwoord 27.2.5: SELECT * FROM SPELERS_XXL WHERE SPELERSNR <= 10 Voorbeeld 28.1: CREATE PROCEDURE DELETE_WEDSTRIJDEN (IN P_SPELERSNR INTEGER) BEGIN DELETE FROM WEDSTRIJDEN WHERE SPELERSNR = P_SPELERSNR; END Voorbeeld 28.2: CALL DELETE_WEDSTRIJDEN(8) Voorbeeld 28.5: CREATE PROCEDURE TEST (OUT GETAL1 INTEGER) BEGIN DECLARE GETAL2 INTEGER DEFAULT 100; SET GETAL1 = GETAL2; END # CALL TEST (@GETAL) # SELECT @GETAL Voorbeeld 28.6: CREATE PROCEDURE TEST (OUT GETAL1 INTEGER) BEGIN DECLARE GETAL2 INTEGER DEFAULT (SELECT COUNT(*) FROM SPELERS); SET GETAL1 = GETAL2; END Voorbeeld 28.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 28.8: CREATE PROCEDURE FIBONNACI (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 FIBONNACI(@A,@B,@C) # SELECT @C # CALL FIBONNACI(@A,@B,@C) # SELECT @C # CALL FIBONNACI(@A,@B,@C) # SELECT @C Voorbeeld 28.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 28.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 28.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 28.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 28.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 28.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 28.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 28.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 28.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 # CREATE TABLE FIBON (GETAL1 INTEGER NOT NULL PRIMARY KEY, GETAL2 INTEGER NOT NULL) # CREATE PROCEDURE FIBONNACI_START() BEGIN DELETE FROM FIBON; INSERT INTO FIBON (GETAL1, GETAL2) VALUES (16, 27); END # CREATE PROCEDURE FIBONNACI_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 FIBONNACI_START() # CALL FIBONNACI_GEEF(@C) # SELECT @C # CALL FIBONNACI_GEEF(@C) # SELECT @C # CALL FIBONNACI_GEEF(@C) # SELECT @C Voorbeeld 28.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 28.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 28.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 28.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 28.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 28.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 28.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 28.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 28.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 28.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 28.29: 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 28.30: SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'INFORMATION_SCHEMA' AND TABLE_NAME = 'ROUTINES' ORDER BY ORDINAL_POSITION Voorbeeld 28.31: SHOW PROCEDURE STATUS LIKE 'FIBONNACI' Voorbeeld 28.32: SHOW CREATE PROCEDURE FIBONNACI Voorbeeld 28.33: DROP PROCEDURE DELETE_SPELER Voorbeeld 28.36: GRANT EXECUTE ON DELETE_WEDSTRIJDEN TO JOHN Voorbeeld 29.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 Voorbeeld 29.2: CREATE FUNCTION AANTAL_SPELERS() RETURNS INTEGER BEGIN RETURN (SELECT COUNT(*) FROM SPELERS); END # SELECT AANTAL_SPELERS() Voorbeeld 29.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 29.4: 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 29.5: 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 29.6: CREATE FUNCTION AANTAL_SPELERS() RETURNS INTEGER BEGIN DECLARE AANTAL INTEGER; CALL AANTAL_SPELERS(AANTAL); RETURN AANTAL; END Voorbeeld 29.7: DROP FUNCTION PLEK_IN_SET Voorbeeld 30.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 30.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 # 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 30.3: CREATE TRIGGER DELETE_SPELER AFTER DELETE ON SPELERS FOR EACH ROW BEGIN CALL INSERT_MUTATIE (OLD.SPELERSNR, 'D', NULL); END Voorbeeld 30.4: CREATE TRIGGER UPDATE_SPELER AFTER UPDATE ON SPELERS FOR EACH ROW BEGIN CALL INSERT_MUTATIE (NEW.SPELERSNR, 'U', OLD.SPELERSNR); END Voorbeeld 30.5: CREATE TRIGGER UPDATE_SPELER2 AFTER UPDATE(BONDSNR) ON SPELERS FOR EACH ROW BEGIN CALL INSERT_MUTATIE (NEW.SPELERSNR, 'U', OLD.SPELERSNR); END Voorbeeld 30.6: CREATE TRIGGER UPDATE_SPELER AFTER UPDATE OF SPELERS FOR EACH ROW WHEN ( NEW.BONDSNR <> OLD.BONDSNR ) BEGIN INSERT INTO MUTATIES (GEBRUIKER, MUT_TIJDSTIP, MUT_SPELERSNR, MUT_TYPE, MUT_SPELERSNR_OUD) VALUES (USER, SYSDATE, NEW.SPELERSNR, 'U', OLD.SPELERSNR); END Voorbeeld 30.7: 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 30.8: CREATE TRIGGER INSERT_SPELERS AFTER INSERT ON SPELERS FOR EACH ROW BEGIN INSERT INTO SPELERS_WED VALUES(NEW.SPELERSNR, 0); END Voorbeeld 30.9: CREATE TRIGGER DELETE_SPELERS AFTER DELETE ON SPELERS FOR EACH ROW BEGIN DELETE FROM SPELERS_WED WHERE SPELERSNR = OLD.SPELERSNR; END Voorbeeld 30.10: 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 30.11: 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 30.12: 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 BOETES SET BEDRAG = 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 30.13: CREATE TRIGGER GEBJAARTOE BEFORE INSERT, UPDATE(GEB_DATUM, JAARTOE) OF SPELERS FOR EACH ROW WHEN (YEAR(NEW.GEB_DATUM) >= NEW.JAARTOE) BEGIN ROLLBACK WORK; END; # 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 30.14: CREATE TRIGGER REF_SLEUTEL1 BEFORE INSERT, UPDATE(SPELERSNR) OF BOETES FOR EACH ROW BEGIN DECLARE AANTAL INTEGER; SELECT COUNT(*) INTO AANTAL FROM SPELERS WHERE SPELERSNR = NEW.SPELERSNR; IF AANTAL = 0 THEN ROLLBACK WORK; END IF; END # 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(SPELERSNR) OF SPELERS FOR EACH ROW BEGIN DELETE FROM BOETES WHERE SPELERSNR = OLD.SPELERSNR; END # CREATE TRIGGER REF_SLEUTEL2 BEFORE DELETE, UPDATE ON SPELERS FOR EACH ROW BEGIN DELETE FROM BOETES WHERE SPELERSNR = OLD.SPELERSNR; END Voorbeeld 30.15: DROP TRIGGER GEBJAARTOE