Example 4.1:
CREATE USER 'BOOKSQL'@'localhost' IDENTIFIED BY 'BOOKSQLPW'
Example 4.2:
GRANT ALL PRIVILEGES
ON *.*
TO 'BOOKSQL'@'localhost'
WITH GRANT OPTION
Example 4.3:
CREATE DATABASE TENNIS
Example 4.4:
USE TENNIS
Example 4.5:
CREATE TABLE PLAYERS
(PLAYERNO INTEGER NOT NULL,
NAME CHAR(15) NOT NULL,
INITIALS CHAR(3) NOT NULL,
BIRTH_DATE DATE ,
SEX CHAR(1) NOT NULL,
JOINED SMALLINT NOT NULL,
STREET VARCHAR(30) NOT NULL,
HOUSENO CHAR(4) ,
POSTCODE CHAR(6) ,
TOWN VARCHAR(30) NOT NULL,
PHONENO CHAR(13) ,
LEAGUENO CHAR(4) ,
PRIMARY KEY (PLAYERNO) )
;
CREATE TABLE TEAMS
(TEAMNO INTEGER NOT NULL,
PLAYERNO INTEGER NOT NULL,
DIVISION CHAR(6) NOT NULL,
PRIMARY KEY (TEAMNO) )
;
CREATE TABLE MATCHES
(MATCHNO INTEGER NOT NULL,
TEAMNO INTEGER NOT NULL,
PLAYERNO INTEGER NOT NULL,
WON SMALLINT NOT NULL,
LOST SMALLINT NOT NULL,
PRIMARY KEY (MATCHNO) )
;
CREATE TABLE PENALTIES
(PAYMENTNO INTEGER NOT NULL,
PLAYERNO INTEGER NOT NULL,
PAYMENT_DATE DATE NOT NULL,
AMOUNT DECIMAL(7,2) NOT NULL,
PRIMARY KEY (PAYMENTNO) )
;
CREATE TABLE COMMITTEE_MEMBERS
(PLAYERNO INTEGER NOT NULL,
BEGIN_DATE DATE NOT NULL,
END_DATE DATE ,
POSITION CHAR(20) ,
PRIMARY KEY (PLAYERNO, BEGIN_DATE))
Example 4.6:
INSERT INTO PLAYERS VALUES (
2, 'Everett', 'R', '1948-09-01', 'M', 1975, 'Stoney Road',
'43', '3575NH', 'Stratford', '070-237893', '2411')
;
INSERT INTO PLAYERS VALUES (
6, 'Parmenter', 'R', '1964-06-25', 'M', 1977, 'Haseltine Lane',
'80', '1234KK', 'Stratford', '070-476537', '8467')
;
INSERT INTO PLAYERS VALUES (
7, 'Wise', 'GWS', '1963-05-11', 'M', 1981, 'Edgecombe Way',
'39', '9758VB', 'Stratford', '070-347689', NULL)
;
INSERT INTO PLAYERS VALUES (
8, 'Newcastle', 'B', '1962-07-08', 'F', 1980, 'Station Road',
'4', '6584WO', 'Inglewood', '070-458458', '2983')
;
INSERT INTO PLAYERS VALUES (
27, 'Collins', 'DD', '1964-12-28', 'F', 1983, 'Long Drive',
'804', '8457DK', 'Eltham', '079-234857', '2513')
;
INSERT INTO PLAYERS VALUES (
28, 'Collins', 'C', '1963-06-22', 'F', 1983, 'Old Main Road',
'10', '1294QK', 'Midhurst', '010-659599', NULL)
;
INSERT INTO PLAYERS VALUES (
39, 'Bishop', 'D', '1956-10-29', 'M', 1980, 'Eaton Square',
'78', '9629CD', 'Stratford', '070-393435', NULL)
;
INSERT INTO PLAYERS VALUES (
44, 'Baker', 'E', '1963-01-09', 'M', 1980, 'Lewis Street',
'23', '4444LJ', 'Inglewood', '070-368753', '1124')
;
INSERT INTO PLAYERS VALUES (
57, 'Brown', 'M', '1971-08-17', 'M', 1985, 'Edgecombe Way',
'16', '4377CB', 'Stratford', '070-473458', '6409')
;
INSERT INTO PLAYERS VALUES (
83, 'Hope', 'PK', '1956-11-11', 'M', 1982, 'Magdalene Road',
'16A', '1812UP', 'Stratford', '070-353548', '1608')
;
INSERT INTO PLAYERS VALUES (
95, 'Miller', 'P', '1963-05-14', 'M', 1972, 'High Street',
'33A', '5746OP', 'Douglas', '070-867564', NULL)
;
INSERT INTO PLAYERS VALUES (
100, 'Parmenter', 'P', '1963-02-28', 'M', 1979, 'Haseltine Lane',
'80', '6494SG', 'Stratford', '070-494593', '6524')
;
INSERT INTO PLAYERS VALUES (
104, 'Moorman', 'D', '1970-05-10', 'F', 1984, 'Stout Street',
'65', '9437AO', 'Eltham', '079-987571', '7060')
;
INSERT INTO PLAYERS VALUES (
112, 'Bailey', 'IP', '1963-10-01', 'F', 1984, 'Vixen Road',
'8', '6392LK', 'Plymouth', '010-548745', '1319')
;
INSERT INTO TEAMS VALUES (1, 6, 'first')
;
INSERT INTO TEAMS VALUES (2, 27, 'second')
;
INSERT INTO MATCHES VALUES ( 1, 1, 6, 3, 1)
;
INSERT INTO MATCHES VALUES ( 2, 1, 6, 2, 3)
;
INSERT INTO MATCHES VALUES ( 3, 1, 6, 3, 0)
;
INSERT INTO MATCHES VALUES ( 4, 1, 44, 3, 2)
;
INSERT INTO MATCHES VALUES ( 5, 1, 83, 0, 3)
;
INSERT INTO MATCHES VALUES ( 6, 1, 2, 1, 3)
;
INSERT INTO MATCHES VALUES ( 7, 1, 57, 3, 0)
;
INSERT INTO MATCHES VALUES ( 8, 1, 8, 0, 3)
;
INSERT INTO MATCHES VALUES ( 9, 2, 27, 3, 2)
;
INSERT INTO MATCHES VALUES (10, 2, 104, 3, 2)
;
INSERT INTO MATCHES VALUES (11, 2, 112, 2, 3)
;
INSERT INTO MATCHES VALUES (12, 2, 112, 1, 3)
;
INSERT INTO MATCHES VALUES (13, 2, 8, 0, 3)
;
INSERT INTO PENALTIES VALUES (1, 6, '1980-12-08',100)
;
INSERT INTO PENALTIES VALUES (2, 44, '1981-05-05', 75)
;
INSERT INTO PENALTIES VALUES (3, 27, '1983-09-10',100)
;
INSERT INTO PENALTIES VALUES (4,104, '1984-12-08', 50)
;
INSERT INTO PENALTIES VALUES (5, 44, '1980-12-08', 25)
;
INSERT INTO PENALTIES VALUES (6, 8, '1980-12-08', 25)
;
INSERT INTO PENALTIES VALUES (7, 44, '1982-12-30', 30)
;
INSERT INTO PENALTIES VALUES (8, 27, '1984-11-12', 75)
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 6, '1990-01-01', '1990-12-31', 'Secretary')
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 6, '1991-01-01', '1992-12-31', 'Member')
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 6, '1992-01-01', '1993-12-31', 'Treasurer')
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 6, '1993-01-01', NULL, 'Chairman')
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 2, '1990-01-01', '1992-12-31', 'Chairman')
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 2, '1994-01-01', NULL, 'Member')
;
INSERT INTO COMMITTEE_MEMBERS VALUES (112, '1992-01-01', '1992-12-31', 'Member')
;
INSERT INTO COMMITTEE_MEMBERS VALUES (112, '1994-01-01', NULL, 'Secretary')
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 8, '1990-01-01', '1990-12-31', 'Treasurer')
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 8, '1991-01-01', '1991-12-31', 'Secretary')
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 8, '1993-01-01', '1993-12-31', 'Member')
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 8, '1994-01-01', NULL, 'Member')
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 57, '1992-01-01', '1992-12-31', 'Secretary')
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 27, '1990-01-01', '1990-12-31', 'Member')
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 27, '1991-01-01', '1991-12-31', 'Treasurer')
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 27, '1993-01-01', '1993-12-31', 'Treasurer')
;
INSERT INTO COMMITTEE_MEMBERS VALUES ( 95, '1994-01-01', NULL, 'Treasurer')
Example 4.7:
SELECT PLAYERNO, NAME, BIRTH_DATE
FROM PLAYERS
WHERE TOWN = 'Stratford'
ORDER BY NAME
Example 4.8:
SELECT PLAYERNO
FROM PLAYERS
WHERE JOINED > 1980
AND TOWN = 'Stratford'
ORDER BY PLAYERNO
Example 4.9:
SELECT *
FROM PENALTIES
Example 4.10:
SELECT 33 * 121
Example 4.11:
UPDATE PENALTIES
SET AMOUNT = 200
WHERE PLAYERNO = 44
;
SELECT PLAYERNO, AMOUNT
FROM PENALTIES
WHERE PLAYERNO = 44
Example 4.12:
DELETE
FROM PENALTIES
WHERE AMOUNT > 100
Example 4.13:
CREATE INDEX PENALTIES_AMOUNT ON
PENALTIES (AMOUNT)
Example 4.14:
CREATE VIEW NUMBER_SETS (MATCHNO, DIFFERENCE) AS
SELECT MATCHNO, ABS(WON - LOST)
FROM MATCHES
;
SELECT *
FROM NUMBER_SETS
Example 4.15:
GRANT SELECT
ON PLAYERS
TO DIANE
;
GRANT SELECT, UPDATE
ON PLAYERS
TO PAUL
;
GRANT SELECT, UPDATE
ON TEAMS
TO PAUL
;
SELECT *
FROM TEAMS
Example 4.16:
DROP TABLE MATCHES
Example 4.17:
DROP VIEW NUMBER_SETS
Example 4.18:
DROP INDEX PENALTIES_AMOUNT
Example 4.19:
DROP DATABASE TENNIS
Example 4.20:
SELECT @@VERSION
Example 4.21:
SET @@SQL_MODE = 'PIPES_AS_CONCAT'
Example 4.22:
SET @@SQL_MODE = CONCAT(@@SQL_MODE,
CASE @@SQL_MODE WHEN '' THEN '' ELSE ',' END,
'NO_ZERO_IN_DATE')
Example 4.23:
CREATE OR REPLACE VIEW USERS
(USER_NAME) AS
SELECT DISTINCT UPPER(CONCAT('''',USER,'''@''',HOST,''''))
FROM MYSQL.USER
;
CREATE OR REPLACE VIEW TABLES
(TABLE_CREATOR, TABLE_NAME,
CREATE_TIMESTAMP, COMMENT) AS
SELECT UPPER(TABLE_SCHEMA), UPPER(TABLE_NAME),
CREATE_TIME, TABLE_COMMENT
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE IN ('BASE TABLE','TEMPORARY')
;
CREATE OR REPLACE VIEW COLUMNS
(TABLE_CREATOR, TABLE_NAME, COLUMN_NAME,
COLUMN_NO, DATA_TYPE, CHAR_LENGTH,
`PRECISION`, SCALE, NULLABLE, COMMENT) AS
SELECT UPPER(TABLE_SCHEMA), UPPER(TABLE_NAME),
UPPER(COLUMN_NAME), ORDINAL_POSITION,
UPPER(DATA_TYPE), CHARACTER_MAXIMUM_LENGTH,
NUMERIC_PRECISION, NUMERIC_SCALE, IS_NULLABLE,
COLUMN_COMMENT
FROM INFORMATION_SCHEMA.COLUMNS
;
CREATE OR REPLACE VIEW VIEWS
(VIEW_CREATOR, VIEW_NAME, CREATE_TIMESTAMP,
WITHCHECKOPT, IS_UPDATABLE, VIEWFORMULA, COMMENT) AS
SELECT UPPER(V.TABLE_SCHEMA), UPPER(V.TABLE_NAME),
T.CREATE_TIME,
CASE
WHEN V.CHECK_OPTION = 'None' THEN 'NO'
WHEN V.CHECK_OPTION = 'Cascaded' THEN 'CASCADED'
WHEN V.CHECK_OPTION = 'Local' THEN 'LOCAL'
ELSE 'Yes'
END, V.IS_UPDATABLE, V.VIEW_DEFINITION, T.TABLE_COMMENT
FROM INFORMATION_SCHEMA.VIEWS AS V,
INFORMATION_SCHEMA.TABLES AS T
WHERE V.TABLE_NAME = T.TABLE_NAME
AND V.TABLE_SCHEMA = T.TABLE_SCHEMA
;
CREATE OR REPLACE VIEW INDEXES
(INDEX_CREATOR, INDEX_NAME, CREATE_TIMESTAMP,
TABLE_CREATOR, TABLE_NAME, UNIQUE_ID, INDEX_TYPE) AS
SELECT DISTINCT UPPER(I.INDEX_SCHEMA), UPPER(I.INDEX_NAME),
T.CREATE_TIME, UPPER(I.TABLE_SCHEMA),
UPPER(I.TABLE_NAME),
CASE
WHEN I.NON_UNIQUE = 0 THEN 'YES'
ELSE 'NO'
END,
I.INDEX_TYPE
FROM INFORMATION_SCHEMA.STATISTICS AS I,
INFORMATION_SCHEMA.TABLES AS T
WHERE I.TABLE_NAME = T.TABLE_NAME
AND I.TABLE_SCHEMA = T.TABLE_SCHEMA
;
CREATE OR REPLACE VIEW COLUMNS_IN_INDEX
(INDEX_CREATOR, INDEX_NAME,
TABLE_CREATOR, TABLE_NAME, COLUMN_NAME,
COLUMN_SEQ, ORDERING) AS
SELECT UPPER(INDEX_SCHEMA), UPPER(INDEX_NAME),
UPPER(TABLE_SCHEMA), UPPER(TABLE_NAME),
UPPER(COLUMN_NAME), SEQ_IN_INDEX,
CASE
WHEN COLLATION = 'A' THEN 'ASCENDING'
WHEN COLLATION = 'D' THEN 'DESCENDING'
ELSE 'OTHER'
END
FROM INFORMATION_SCHEMA.STATISTICS
;
CREATE OR REPLACE VIEW USER_AUTHS
(GRANTOR, GRANTEE, PRIVILEGE, WITHGRANTOPT) AS
SELECT 'UNKNOWN', UPPER(GRANTEE), PRIVILEGE_TYPE, IS_GRANTABLE
FROM INFORMATION_SCHEMA.USER_PRIVILEGES
;
CREATE OR REPLACE VIEW DATABASE_AUTHS
(GRANTOR, GRANTEE, DATABASE_NAME, PRIVILEGE,
WITHGRANTOPT) AS
SELECT 'UNKNOWN', UPPER(GRANTEE), UPPER(TABLE_SCHEMA),
PRIVILEGE_TYPE, IS_GRANTABLE
FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES
;
CREATE OR REPLACE VIEW TABLE_AUTHS
(GRANTOR, GRANTEE, TABLE_CREATOR, TABLE_NAME,
PRIVILEGE, WITHGRANTOPT) AS
SELECT 'UNKNOWN', UPPER(GRANTEE), UPPER(TABLE_SCHEMA),
UPPER(TABLE_NAME), PRIVILEGE_TYPE, IS_GRANTABLE
FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES
;
CREATE OR REPLACE VIEW COLUMN_AUTHS
(GRANTOR, GRANTEE, TABLE_CREATOR, TABLE_NAME,
COLUMN_NAME, PRIVILEGE, WITHGRANTOPT) AS
SELECT 'UNKNOWN', UPPER(GRANTEE), UPPER(TABLE_SCHEMA),
UPPER(TABLE_NAME), UPPER(COLUMN_NAME),
PRIVILEGE_TYPE, IS_GRANTABLE
FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES
Example 4.24:
SELECT COLUMN_NAME, DATA_TYPE, COLUMN_NO
FROM COLUMNS
WHERE TABLE_NAME = 'PLAYERS'
AND TABLE_CREATOR = 'TENNIS'
ORDER BY COLUMN_NO
Example 4.25:
SELECT INDEX_NAME
FROM INDEXES
WHERE TABLE_NAME = 'PENALTIES'
AND TABLE_CREATOR = 'TENNIS'
Example 4.26:
USE INFORMATION_SCHEMA
;
SELECT DISTINCT INDEX_NAME
FROM STATISTICS
WHERE TABLE_NAME = 'PENALTIES'
Example 4.27:
SELECT TABLE_NAME
FROM TABLES
WHERE TABLE_SCHEMA = 'INFORMATION_SCHEMA'
ORDER BY TABLE_NAME
Example 4.28:
SHOW COLUMNS FROM PLAYERS
Example 4.29:
SHOW INDEX FROM PENALTIES
;
SHOW DATABASES
;
SHOW TABLES
;
SHOW CREATE TABLE PLAYERS
;
SHOW INDEX FROM PLAYERS
;
SHOW GRANTS FOR BOOKSQL@localhost
;
SHOW PRIVILEGES
Example 4.30:
SELECT 10 / 0
Example 5.1:
CREATE TABLE INCORRECT_DATES (COLUMN1 DATE)
;
INSERT INTO INCORRECT_DATES VALUES ('2004-13-12')
;
SELECT COLUMN1
FROM INCORRECT_DATES
;
CREATE TABLE TIME_TABLE (COLUMN1 TIME)
;
INSERT INTO TIME_TABLE VALUES ('23:59:59.5912')
;
SELECT COLUMN1 FROM TIME_TABLE
Example 5.2:
CREATE TABLE TZ (COL1 TIMESTAMP)
;
INSERT INTO TZ VALUES ('2005-01-01 12:00:00')
;
SELECT * FROM TZ
;
SET @@TIME_ZONE = '+10:00'
;
SELECT * FROM TZ
Example 5.3:
SELECT @@TIME_ZONE
Example 5.4:
SELECT TRUE, FALSE
Example 5.5:
SELECT MATCHNO, WON - LOST
FROM MATCHES
WHERE WON = LOST + 2
Example 5.6:
SELECT TEAMNO, DIVISION
FROM TEAMS
Example 5.7:
SELECT TEAMNO AS TEAM_NUMBER, DIVISION AS DIVISION_OF_TEAM
FROM TEAMS
Example 5.8:
SELECT PAYMENTNO, AMOUNT * 100 AS CENTS
FROM PENALTIES
Example 5.9:
SELECT MATCHNO AS PRIMKEY,
80 AS EIGHTY,
WON - LOST AS DIFFERENCE,
TIME('23:59:59') AS ALMOST_MIDNIGHT,
'TEXT' AS TEXT
FROM MATCHES
WHERE MATCHNO <= 4
Example 5.10:
SELECT PAYMENTNO, AMOUNT * 100 AS CENTS
FROM PENALTIES
GROUP BY CENTS
ORDER BY CENTS
Example 5.11:
SET @PLAYERNO = 7
Example 5.12:
SELECT NAME, TOWN, POSTCODE
FROM PLAYERS
WHERE PLAYERNO < @PLAYERNO
Example 5.13:
SELECT @PLAYERNO
Example 5.14:
SET @@GLOBAL.SQL_WARNINGS = TRUE
Example 5.15:
SET @@SESSION.DATETIME_FORMAT = '%D-%m-%Y %H:%i:%s'
;
SELECT @@SESSION.DATETIME_FORMAT
;
SELECT @@GLOBAL.DATETIME_FORMAT
Example 5.16:
SET @@SESSION.DATETIME_FORMAT = DEFAULT
Example 5.17:
SELECT *
FROM USER_AUTHS
WHERE GRANTEE = CURRENT_USER
Example 5.18:
SELECT CURRENT_USER
Example 5.19:
SELECT *
FROM PENALTIES
WHERE PAYMENT_DATE = CURRENT_DATE
Example 5.20:
SELECT PLAYERNO,
CASE SEX
WHEN 'F' THEN 'Female'
ELSE 'Male' END AS SEX,
NAME
FROM PLAYERS
WHERE JOINED > 1980
;
SELECT PLAYERNO,
CASE SEX
WHEN 'F' THEN 'Female' END AS FEMALES,
NAME
FROM PLAYERS
WHERE JOINED > 1980
Example 5.21:
SELECT PLAYERNO, TOWN, BIRTH_DATE,
CASE TOWN
WHEN 'Stratford' THEN 0
WHEN 'Plymouth' THEN 1
WHEN 'Inglewood' THEN 2
ELSE 3
END AS P,
CASE TOWN
WHEN 'Stratford' THEN
CASE BIRTH_DATE
WHEN '1948-09-01' THEN 'Old Stratforder'
ELSE 'Young Stratforder' END
WHEN 'Inglewood' THEN
CASE BIRTH_DATE
WHEN '1962-07-08' THEN 'Old Inglewooder'
ELSE 'Young Inglewooder' END
ELSE 'Rest'
END AS TYPE
FROM PLAYERS
Example 5.22:
SELECT PLAYERNO, JOINED,
CASE
WHEN JOINED < 1980 THEN 'Seniors'
WHEN JOINED < 1983 THEN 'Juniors'
ELSE 'Children' END AS AGE_GROUP
FROM PLAYERS
ORDER BY JOINED
Example 5.23:
SELECT PLAYERNO, JOINED, TOWN,
CASE
WHEN JOINED >= 1980 AND JOINED <= 1982
THEN 'Seniors'
WHEN TOWN = 'Eltham'
THEN 'Elthammers'
WHEN PLAYERNO < 10
THEN 'First members'
ELSE 'Rest' END
FROM PLAYERS
Example 5.24:
SELECT (PLAYERNO), (((NAME)))
FROM PLAYERS
Example 5.25:
SELECT PAYMENTNO, YEAR(PAYMENT_DATE)
FROM PENALTIES
WHERE YEAR(PAYMENT_DATE) > 1980
Example 5.26:
SELECT PLAYERNO, CONCAT(LEFT(INITIALS, 1), '. ', NAME)
AS FULL_NAME
FROM PLAYERS
WHERE LEFT(NAME, 1) = 'B'
Example 5.27:
SELECT INITIALS, NAME, COALESCE(LEAGUENO, 1)
FROM PLAYERS
WHERE Town = 'Stratford'
Example 5.28:
SELECT PLAYERNO, DAYNAME(BIRTH_DATE),
MONTHNAME(BIRTH_DATE), DAYOFYEAR(BIRTH_DATE)
FROM PLAYERS
WHERE PLAYERNO < 10
Example 5.29:
SELECT PLAYERNO, BIRTH_DATE,
ADDDATE(BIRTH_DATE, INTERVAL 7 DAY)
FROM PLAYERS
WHERE DAYNAME(BIRTH_DATE) = 'Saturday'
Example 5.30:
SELECT PLAYERNO, BEGIN_DATE, END_DATE,
DATEDIFF(END_DATE, BEGIN_DATE)
FROM COMMITTEE_MEMBERS
WHERE DATEDIFF(END_DATE, BEGIN_DATE) > 500
OR (END_DATE IS NULL AND
DATEDIFF(CURRENT_DATE, BEGIN_DATE) > 500)
ORDER BY PLAYERNO
;
SELECT PLAYERNO, BEGIN_DATE, END_DATE,
DATEDIFF(COALESCE(END_DATE, CURRENT_DATE),
BEGIN_DATE)
FROM COMMITTEE_MEMBERS
WHERE DATEDIFF(COALESCE(END_DATE, CURRENT_DATE),
BEGIN_DATE)
> 500
ORDER BY PLAYERNO
Example 5.31:
SELECT PAYMENTNO
FROM PENALTIES
WHERE AMOUNT > 50
Example 5.32:
SELECT CONCAT(RTRIM(NAME), CAST(BIRTH_DATE AS CHAR(10)))
FROM PLAYERS
WHERE TOWN = 'Inglewood'
Example 5.33:
UPDATE PLAYERS
SET LEAGUENO = NULL
WHERE PLAYERNO = 2
Example 5.34:
SELECT TEAMNO, CAST(NULL AS CHAR)
FROM TEAMS
Example 5.35:
SELECT MATCHNO, WON, LOST
FROM MATCHES
WHERE WON >= LOST * 2
Example 5.36:
SELECT 50 << 2
Example 5.37:
SELECT B'11' << 3
Example 5.38:
SELECT CONV(6,10,2), CONV(10,10,2), BIN(8), BIN(10)
Example 5.39:
SELECT CONV(1001,2,10), CONV(111,2,10)
Example 5.40:
SELECT PLAYERNO
FROM PLAYERS
WHERE PLAYERNO & 1
Example 5.41:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO = (PLAYERNO >> 1) << 1
Example 5.42:
SELECT MATCHNO, TEAMNO, MATCHNO | TEAMNO,
MATCHNO & TEAMNO, MATCHNO ^ TEAMNO
FROM MATCHES
Example 5.43:
SELECT PLAYERNO, TOWN || ' ' || STREET || ' ' || HOUSENO
FROM PLAYERS
WHERE TOWN = 'Stratford'
Example 5.44:
SELECT PAYMENTNO, PAYMENT_DATE, PAYMENT_DATE + INTERVAL 7 DAY
FROM PENALTIES
WHERE PAYMENTNO > 5
Example 5.45:
SELECT PAYMENTNO, PAYMENT_DATE
FROM PENALTIES
WHERE PAYMENT_DATE >= '1982-12-25'
AND PAYMENT_DATE <= '1982-12-25' + INTERVAL 6 DAY
Example 5.46:
SELECT '2004-13-12' + INTERVAL 1 DAY
;
SHOW WARNINGS
Example 5.47:
CREATE TABLE MATCHES_SPECIAL
(MATCHNO INTEGER NOT NULL,
TEAMNO INTEGER NOT NULL,
PLAYERNO INTEGER NOT NULL,
WON SMALLINT NOT NULL,
LOST SMALLINT NOT NULL,
START_DATE DATE NOT NULL,
START_TIME TIME NOT NULL,
END_TIME TIME NOT NULL,
PRIMARY KEY (MATCHNO))
;
INSERT INTO MATCHES_SPECIAL VALUES
(1, 1, 6, 3, 1, '2004-10-25', '14:10:12', '16:50:09')
;
INSERT INTO MATCHES_SPECIAL VALUES
(2, 1, 44, 3, 2, '2004-10-25', '17:00:00', '17:55:48')
Example 5.48:
SELECT MATCHNO, START_TIME,
ADDTIME(START_TIME, '08:00:00')
FROM MATCHES_SPECIAL
Example 5.49:
SELECT MATCHNO, END_TIME
FROM MATCHES_SPECIAL
WHERE ADDTIME(END_TIME, '06:30:00') <= '24:00:00'
Example 5.50:
CREATE TABLE TSTAMP (COL1 TIMESTAMP)
;
SET @TIME = TIMESTAMP('1980-12-08 23:59:59.59')
;
INSERT INTO TSTAMP VALUES (@TIME + INTERVAL 3 MICROSECOND)
;
SELECT COL1, COL1 + INTERVAL 3 MICROSECOND FROM TSTAMP
Example 5.51:
SELECT TEAMNO
FROM TEAMS
WHERE TRUE OR FALSE
Example 5.52:
SELECT PAYMENTNO, PAYMENTNO > 4
FROM PENALTIES
;
SELECT PAYMENTNO, CASE PAYMENTNO > 4
WHEN 1 THEN 'Greater than 4'
ELSE 'Less than 5'
END AS GREATER_LESS
FROM PENALTIES
Example 5.53:
SELECT PLAYERNO, JOINED, PLAYERNO < 15, JOINED > 1979
FROM PLAYERS
WHERE (PLAYERNO < 15) = (JOINED > 1979)
Example 5.54:
INSERT INTO COMMITTEE_MEMBERS
VALUES (7 + 15, CURRENT_DATE,
CURRENT_DATE + INTERVAL 17 DAY, 'Member')
Example 5.55:
SELECT PLAYERNO
FROM PLAYERS
WHERE (TOWN, STREET) = ('Stratford', 'Haseltine Lane')
Example 5.56:
SELECT PLAYERNO
FROM PLAYERS
WHERE (TOWN, STREET) = (SELECT 'Stratford', 'Haseltine Lane')
Example 5.57:
INSERT INTO PENALTIES 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)
Answer 5.6:
SELECT PLAYERS.PLAYERNO, PLAYERS.NAME,
PLAYERS.INITIALS
FROM PLAYERS
WHERE PLAYERS.PLAYERNO > 6
ORDER BY PLAYERS.NAME
Answer 5.12:
SELECT PLAYERNO
FROM COMMITTEE_MEMBERS
WHERE BEGIN_DATE = CURRENT_DATE
Answer 5.13:
SELECT TEAMNO,
CASE DIVISION
WHEN 'first' then 'first division'
WHEN 'second' THEN 'second division'
ELSE 'unknown' END AS DIVISION
FROM TEAMS
Answer 5.14:
SELECT PAYMENTNO, AMOUNT,
CASE
WHEN AMOUNT >= 0 AND AMOUNT <= 40
THEN 'low'
WHEN AMOUNT >= 41 AND AMOUNT <= 80
THEN 'moderate'
WHEN AMOUNT >= 81
THEN 'high'
ELSE 'incorrect' END AS CATEGORY
FROM PENALTIES
Answer 5.15:
SELECT PAYMENTNO, AMOUNT
FROM PENALTIES
WHERE CASE
WHEN AMOUNT >= 0 AND AMOUNT <= 40
THEN 'low'
WHEN AMOUNT > 40 AND AMOUNT <= 80
THEN 'moderate'
WHEN AMOUNT > 80
THEN 'high'
ELSE 'incorrect' END = 'low'
Answer 5.17:
SELECT PAYMENTNO
FROM PENALTIES
WHERE DAYNAME(PAYMENT_DATE) = 'Monday'
Answer 5.18:
SELECT PAYMENTNO
FROM PENALTIES
WHERE YEAR(PAYMENT_DATE) = 1984
Answer 5.25:
SELECT PLAYERNO, SUBSTR(INITIALS,1,1) || '. ' || NAME
FROM PLAYERS
Answer 5.26:
SELECT TEAMNO, RTRIM(DIVISION) || ' division'
FROM TEAMS
Answer 5.28:
SELECT PLAYERNO, BEGIN_DATE,
BEGIN_DATE + INTERVAL 2 MONTH + INTERVAL 3 DAY
FROM COMMITTEE_MEMBERS
Answer 5.32:
SELECT PAYMENTNO, PAYMENT_DATE,
PAYMENT_DATE + INTERVAL 3 HOUR +
INTERVAL 50 SECOND + INTERVAL 99 MICROSECOND
FROM PENALTIES
Answer 5.33:
SELECT PLAYERNO,
CASE TOWN='Inglewood'
WHEN 1 THEN 'Yes' ELSE 'No' END
FROM PLAYERS
Answer 5.34:
SELECT *
FROM PENALTIES
WHERE (AMOUNT = 25) = (PLAYERNO = 44)
Answer 5.35:
SELECT PAYMENTNO
FROM PENALTIES
WHERE (AMOUNT, PLAYERNO, PAYMENT_DATE) =
(25, 44, '1980-12-08')
Answer 5.36:
SELECT PLAYERNO
FROM PLAYERS
WHERE (NAME, INITIALS) = (TOWN, STREET)
Answer 5.37:
SELECT *
FROM PENALTIES
WHERE (AMOUNT = 25, PLAYERNO = 44) = (FALSE, TRUE)
Example 6.1:
SELECT PLAYERNO
FROM PENALTIES
WHERE AMOUNT > 25
GROUP BY PLAYERNO
HAVING COUNT(*) > 1
ORDER BY PLAYERNO
Example 6.2:
SELECT PLAYERNO, LEAGUENO
FROM PLAYERS
WHERE TOWN = 'Stratford'
ORDER BY LEAGUENO
Example 6.3:
SELECT 89 * 73
Example 6.4:
(SELECT *
FROM TEAMS)
;
(((((SELECT *
FROM TEAMS)))))
Example 6.5:
SELECT PLAYERNO
FROM TEAMS
UNION
SELECT PLAYERNO
FROM PENALTIES
;
SELECT PLAYERNO
FROM TEAMS
ORDER BY PLAYERNO
UNION
SELECT PLAYERNO
FROM PENALTIES
;
SELECT PLAYERNO
FROM TEAMS
UNION
SELECT PLAYERNO
FROM PENALTIES
ORDER BY PLAYERNO
;
(SELECT PLAYERNO
FROM TEAMS
ORDER BY PLAYERNO)
UNION
(SELECT PLAYERNO
FROM PENALTIES)
ORDER BY PLAYERNO
Example 6.6:
SELECT PLAYERNO
FROM (SELECT PLAYERNO, SEX
FROM PLAYERS
WHERE PLAYERNO < 10) AS PLAYERS10
WHERE SEX = 'M'
;
SELECT *
FROM (SELECT *
FROM (SELECT *
FROM (SELECT *
FROM PLAYERS) AS S1) AS S2) AS S3
Example 6.7:
SELECT PLAYERNO
FROM (SELECT PLAYERNO, SEX
FROM (SELECT PLAYERNO, SEX, JOINED
FROM (SELECT PLAYERNO, SEX, JOINED
FROM PLAYERS
WHERE PLAYERNO > 10) AS GREATER10
WHERE PLAYERNO < 100) AS LESS100
WHERE JOINED > 1980) AS JOINED1980
WHERE SEX = 'M'
Example 6.8:
SELECT PLAYERNO, JOINED -
(SELECT JOINED
FROM PLAYERS
WHERE PLAYERNO = 100)
FROM PLAYERS
WHERE PLAYERNO < 60
;
SELECT PLAYERNO, JOINED - 1979
FROM PLAYERS
WHERE PLAYERNO < 60
;
SELECT TEAMNO
FROM TEAMS
WHERE PLAYERNO =
(SELECT PLAYERNO
FROM PLAYERS)
Example 6.9:
SELECT PLAYERNO
FROM PLAYERS
WHERE YEAR(BIRTH_DATE) = (SELECT YEAR(BIRTH_DATE)
FROM PLAYERS
WHERE PLAYERNO = 27)
;
SELECT PLAYERNO
FROM PLAYERS
WHERE YEAR(BIRTH_DATE) = 1964
Example 6.10:
SELECT (SELECT BIRTH_DATE
FROM PLAYERS
WHERE PLAYERNO = 27),
(SELECT BIRTH_DATE
FROM PLAYERS
WHERE PLAYERNO = 44),
(SELECT BIRTH_DATE
FROM PLAYERS
WHERE PLAYERNO = 100)
Example 6.11:
SELECT PLAYERNO
FROM PLAYERS
WHERE (SEX, TOWN) = (SELECT SEX, TOWN
FROM PLAYERS
WHERE PLAYERNO = 100)
Answer 6.8:
SELECT PLAYERNO, BEGIN_DATE
FROM COMMITTEE_MEMBERS
UNION
SELECT PLAYERNO, END_DATE
FROM COMMITTEE_MEMBERS
ORDER BY PLAYERNO
Answer 6.9:
SELECT PLAYERNO, BEGIN_DATE, 'Begin date'
FROM COMMITTEE_MEMBERS
UNION
SELECT PLAYERNO, END_DATE, 'End date'
FROM COMMITTEE_MEMBERS
ORDER BY PLAYERNO
Answer 6.10:
SELECT PLAYERNO
FROM (SELECT PLAYERNO
FROM (SELECT PLAYERNO, END_DATE
FROM (SELECT PLAYERNO, BEGIN_DATE,
END_DATE
FROM COMMITTEE_MEMBERS
WHERE POSITION = 'Secretary')
AS SECRETARIES
WHERE BEGIN_DATE >= '1990-01-01')
AS AFTER1989
WHERE END_DATE <= '1994-12-31') AS BEFORE1995
Answer 6.11:
SELECT TEAMNO
FROM TEAMS
WHERE PLAYERNO =
(SELECT PLAYERNO
FROM PLAYERS
WHERE NAME = 'Parmenter'
AND INITIALS = 'R')
Answer 6.12:
SELECT TEAMNO
FROM TEAMS
WHERE PLAYERNO =
(SELECT PLAYERNO
FROM PLAYERS
WHERE NAME =
(SELECT NAME
FROM PLAYERS
WHERE PLAYERNO = 6)
AND PLAYERNO <> 6)
;
SELECT NAME
FROM PLAYERS
WHERE PLAYERNO =
(SELECT PLAYERNO
FROM TEAMS
WHERE TEAMNO =
(SELECT TEAMNO
FROM MATCHES
WHERE MATCHNO = 6))
Answer 6.13:
SELECT PAYMENTNO
FROM PENALTIES
WHERE AMOUNT >
(SELECT AMOUNT
FROM PENALTIES
WHERE PAYMENTNO = 4)
Answer 6.14:
SELECT PLAYERNO
FROM PLAYERS
WHERE DAYNAME(BIRTH_DATE) =
(SELECT DAYNAME(BIRTH_DATE)
FROM PLAYERS
WHERE PLAYERNO = 2)
Answer 6.15:
SELECT PLAYERNO
FROM COMMITTEE_MEMBERS
WHERE (BEGIN_DATE, END_DATE) =
(SELECT BEGIN_DATE, END_DATE
FROM COMMITTEE_MEMBERS
WHERE PLAYERNO = 8
AND POSITION = 'Treasurer')
AND PLAYERNO <> 8
Answer 6.16:
SELECT (SELECT DIVISION
FROM TEAMS
WHERE TEAMNO = 1),
(SELECT DIVISION
FROM TEAMS
WHERE TEAMNO = 2)
Answer 6.17:
SELECT (SELECT AMOUNT
FROM PENALTIES
WHERE PAYMENTNO = 1) +
(SELECT AMOUNT
FROM PENALTIES
WHERE PAYMENTNO = 2) +
(SELECT AMOUNT
FROM PENALTIES
WHERE PAYMENTNO = 3)
Example 7.1:
CREATE DATABASE EXTRA
;
USE EXTRA
;
CREATE TABLE CITIES
(CITYNO INTEGER NOT NULL PRIMARY KEY,
CITYNAME CHAR(20) NOT NULL)
;
INSERT INTO CITIES VALUES
(1, 'Stratford')
;
INSERT INTO CITIES VALUES
(2, 'Inglewood')
Example 7.2:
SELECT *
FROM EXTRA.CITIES
Example 7.3:
SELECT *
FROM TENNIS.TEAMS
Example 7.4:
SELECT TEAMNO
FROM TEAMS
;
SELECT TEAMS.TEAMNO
FROM TEAMS
;
SELECT TENNIS.TEAMS.TEAMNO
FROM TENNIS.TEAMS
Example 7.5:
SELECT TEAMNO, NAME
FROM TEAMS, PLAYERS
WHERE TEAMS.PLAYERNO = PLAYERS.PLAYERNO
Example 7.6:
SELECT PAYMENTNO, PENALTIES.PLAYERNO, AMOUNT,
NAME, INITIALS
FROM PENALTIES, PLAYERS
WHERE PENALTIES.PLAYERNO = PLAYERS.PLAYERNO
;
SELECT PLAYERS.PLAYERNO
FROM PLAYERS, TEAMS
WHERE PLAYERS.PLAYERNO = TEAMS.PLAYERNO
;
SELECT PLAYERS.PLAYERNO
FROM TEAMS, PLAYERS
WHERE PLAYERS.PLAYERNO = TEAMS.PLAYERNO
Example 7.7:
SELECT PAYMENTNO, PEN.PLAYERNO, AMOUNT,
NAME, INITIALS
FROM PENALTIES AS PEN, PLAYERS AS P
WHERE PEN.PLAYERNO = P.PLAYERNO
;
SELECT PAYMENTNO, PEN.PLAYERNO, AMOUNT,
NAME, INITIALS
FROM PENALTIES PEN, PLAYERS P
WHERE PEN.PLAYERNO = P.PLAYERNO
Example 7.8:
SELECT T.PLAYERNO
FROM TEAMS AS T, PENALTIES AS PEN
WHERE T.PLAYERNO = PEN.PLAYERNO
Example 7.9:
SELECT DISTINCT T.PLAYERNO
FROM TEAMS AS T, PENALTIES AS PEN
WHERE T.PLAYERNO = PEN.PLAYERNO
Example 7.10:
SELECT DISTINCT P.NAME, P.INITIALS
FROM PLAYERS AS P, MATCHES AS M
WHERE P.PLAYERNO = M.PLAYERNO
Example 7.11:
SELECT M.MATCHNO, M.PLAYERNO, M.TEAMNO, P.NAME, T.DIVISION
FROM MATCHES AS M, PLAYERS AS P, TEAMS AS T
WHERE M.PLAYERNO = P.PLAYERNO
AND M.TEAMNO = T.TEAMNO
Example 7.12:
SELECT PEN.PAYMENTNO, PEN.PLAYERNO, PEN.PAYMENT_DATE
FROM PENALTIES AS PEN, PLAYERS AS P
WHERE PEN.PLAYERNO = P.PLAYERNO
AND YEAR(PEN.PAYMENT_DATE) = P.JOINED
Example 7.13:
SELECT P.PLAYERNO
FROM PLAYERS AS P, PLAYERS AS PAR
WHERE PAR.NAME = 'Parmenter'
AND PAR.INITIALS = 'R'
AND P.BIRTH_DATE < PAR.BIRTH_DATE
;
SELECT P.PLAYERNO
FROM PLAYERS AS P, PLAYERS
WHERE PLAYERS.NAME = 'Parmenter'
AND PLAYERS.INITIALS = 'R'
AND P.BIRTH_DATE < PLAYERS.BIRTH_DATE
Example 7.14:
SELECT P.PLAYERNO
FROM PLAYERS AS P, EXTRA.CITIES AS TOWN
WHERE P.TOWN = TOWN.CITYNAME
Example 7.15:
SELECT PLAYERS.PLAYERNO, NAME, AMOUNT
FROM PLAYERS, PENALTIES
WHERE PLAYERS.PLAYERNO = PENALTIES.PLAYERNO
AND BIRTH_DATE > '1920-06-30'
;
SELECT PLAYERS.PLAYERNO, NAME, AMOUNT
FROM PLAYERS INNER JOIN PENALTIES
ON (PLAYERS.PLAYERNO = PENALTIES.PLAYERNO)
WHERE BIRTH_DATE > '1920-06-30'
Example 7.16:
SELECT TEAMNO, NAME
FROM TEAMS, PLAYERS
WHERE TEAMS.PLAYERNO = PLAYERS.PLAYERNO
;
SELECT TEAMNO, NAME
FROM TEAMS INNER JOIN PLAYERS
ON TEAMS.PLAYERNO = PLAYERS.PLAYERNO
;
SELECT TEAMNO, NAME
FROM TEAMS JOIN PLAYERS
ON TEAMS.PLAYERNO = PLAYERS.PLAYERNO
Example 7.17:
SELECT PLAYERS.PLAYERNO, NAME, AMOUNT
FROM PLAYERS, PENALTIES
WHERE PLAYERS.PLAYERNO = PENALTIES.PLAYERNO
ORDER BY PLAYERS.PLAYERNO
;
SELECT PLAYERS.PLAYERNO, NAME, AMOUNT
FROM PLAYERS LEFT OUTER JOIN PENALTIES
ON PLAYERS.PLAYERNO = PENALTIES.PLAYERNO
ORDER BY PLAYERS.PLAYERNO
Example 7.18:
SELECT PAYMENTNO, NAME
FROM PENALTIES LEFT OUTER JOIN PLAYERS
ON PENALTIES.PLAYERNO = PLAYERS.PLAYERNO
ORDER BY PAYMENTNO
Example 7.19:
SELECT P.PLAYERNO, NAME, TEAMNO, DIVISION
FROM PLAYERS AS P LEFT OUTER JOIN TEAMS AS T
ON P.PLAYERNO = T.PLAYERNO
ORDER BY P.PLAYERNO
Example 7.20:
SELECT PLAYERS.PLAYERNO, NAME, AMOUNT, TEAMNO
FROM PLAYERS LEFT OUTER JOIN PENALTIES
ON PLAYERS.PLAYERNO = PENALTIES.PLAYERNO
LEFT OUTER JOIN MATCHES
ON PLAYERS.PLAYERNO = MATCHES.PLAYERNO
WHERE TOWN = 'Inglewood'
Example 7.21:
SELECT PLAYERS.PLAYERNO, NAME, TEAMNO
FROM TEAMS RIGHT OUTER JOIN PLAYERS
ON TEAMS.PLAYERNO = PLAYERS.PLAYERNO
Example 7.22:
SELECT PLAYERS.PLAYERNO, NAME, AMOUNT
FROM PLAYERS INNER JOIN PENALTIES
ON PLAYERS.PLAYERNO = PENALTIES.PLAYERNO
WHERE BIRTH_DATE > '1920-06-30'
;
SELECT PLAYERS.PLAYERNO, NAME, AMOUNT
FROM PLAYERS NATURAL JOIN PENALTIES
WHERE BIRTH_DATE > '1920-06-30'
Example 7.23:
SELECT TEAMS.PLAYERNO, TEAMS.TEAMNO, PENALTIES.PAYMENTNO
FROM TEAMS LEFT OUTER JOIN PENALTIES
ON TEAMS.PLAYERNO = PENALTIES.PLAYERNO
WHERE DIVISION = 'second'
;
SELECT TEAMS.PLAYERNO, TEAMS.TEAMNO, PENALTIES.PAYMENTNO
FROM TEAMS LEFT OUTER JOIN PENALTIES
ON TEAMS.PLAYERNO = PENALTIES.PLAYERNO
AND DIVISION = 'second'
Example 7.24:
SELECT TEAMS.PLAYERNO, TEAMS.TEAMNO, PENALTIES.PAYMENTNO
FROM TEAMS FULL OUTER JOIN PENALTIES
ON TEAMS.PLAYERNO = PENALTIES.PLAYERNO
AND TEAMS.PLAYERNO > 1000
Example 7.25:
SELECT *
FROM PENALTIES LEFT OUTER JOIN TEAMS
USING (PLAYERNO)
Example 7.26:
SELECT PLAYERNO
FROM (SELECT *
FROM PLAYERS
WHERE TOWN = 'Stratford') AS STRATFORDERS
Example 7.27:
SELECT SMALL_TEAMS.PLAYERNO
FROM (SELECT PLAYERNO, DIVISION
FROM TEAMS) AS SMALL_TEAMS
WHERE SMALL_TEAMS.DIVISION = 'first'
Example 7.28:
SELECT MATCHNO, DIFFERENCE
FROM (SELECT MATCHNO,
ABS(WON – LOST) AS DIFFERENCE
FROM MATCHES) AS M
WHERE DIFFERENCE > 2
Example 7.29:
SELECT *
FROM (SELECT 'Stratford' AS TOWN, 4 AS NUMBER
UNION
SELECT 'Plymouth', 6
UNION
SELECT 'Inglewood', 1
UNION
SELECT 'Douglas', 2) AS TOWNS
ORDER BY TOWN
Example 7.30:
SELECT PLAYERNO, NAME, PLAYERS.TOWN, NUMBER * 1000
FROM PLAYERS,
(SELECT 'Stratford' AS TOWN, 4 AS NUMBER
UNION
SELECT 'Plymouth', 6
UNION
SELECT 'Inglewood', 1
UNION
SELECT 'Douglas', 2) AS TOWNS
WHERE PLAYERS.TOWN = TOWNS.TOWN
ORDER BY PLAYERNO
;
SELECT PLAYERNO, NAME, PLAYERS.TOWN, NUMBER
FROM PLAYERS LEFT OUTER JOIN
(SELECT 'Stratford' AS TOWN, 4 AS NUMBER
UNION
SELECT 'Plymouth', 6
UNION
SELECT 'Inglewood', 1
UNION
SELECT 'Douglas', 2) AS TOWNS
ON PLAYERS.TOWN = TOWNS.TOWN
ORDER BY PLAYERNO
Example 7.31:
SELECT PLAYERNO
FROM PLAYERS LEFT OUTER JOIN
(SELECT 'Stratford' AS TOWN, 4 AS NUMBER
UNION
SELECT 'Plymouth', 6
UNION
SELECT 'Inglewood', 1
UNION
SELECT 'Douglas', 2) AS TOWNS
ON PLAYERS.TOWN = TOWNS.TOWN
WHERE TOWNS.NUMBER > 2
Example 7.32:
SELECT *
FROM (SELECT 'John' AS FIRST_NAME
UNION
SELECT 'Mark'
UNION
SELECT 'Arnold') AS FIRST_NAMES,
(SELECT 'Berg' AS LAST_NAME
UNION
SELECT 'Johnson'
UNION
SELECT 'Williams') AS LAST_NAMES
Example 7.33:
SELECT NUMBER, POWER(NUMBER,3)
FROM (SELECT 10 AS NUMBER 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 NUMBERS
WHERE POWER(NUMBER,3) <= 4000
Example 7.34:
SELECT NUMBER
FROM (SELECT CAST(CONCAT(DIGIT1.DIGIT,
CONCAT(DIGIT2.DIGIT,
DIGIT3.DIGIT)) AS UNSIGNED INTEGER)
AS NUMBER
FROM (SELECT '0' AS DIGIT 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 DIGIT1,
(SELECT '0' AS DIGIT 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 DIGIT2,
(SELECT '0' AS DIGIT 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 DIGIT3)
AS NUMBERS
ORDER BY NUMBER
Example 7.35:
SELECT NUMBER AS SQUARE, ROUND(SQRT(NUMBER)) AS BASIS
FROM (SELECT CAST(CONCAT(DIGIT1.DIGIT,
CONCAT(DIGIT2.DIGIT,
DIGIT3.DIGIT)) AS UNSIGNED INTEGER)
AS NUMBER
FROM (SELECT '0' AS DIGIT 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 DIGIT1,
(SELECT '0' AS DIGIT 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 DIGIT2,
(SELECT '0' AS DIGIT 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 DIGIT3)
AS NUMBERS
WHERE SQRT(NUMBER) = ROUND(SQRT(NUMBER))
ORDER BY NUMBER
Answer 7.3:
SELECT PAYMENTNO, AMOUNT, PLAYERS.PLAYERNO, NAME
FROM PENALTIES, PLAYERS
WHERE PENALTIES.PLAYERNO = PLAYERS.PLAYERNO
Answer 7.4:
SELECT PAYMENTNO, NAME
FROM PENALTIES, PLAYERS, TEAMS
WHERE PENALTIES.PLAYERNO = TEAMS.PLAYERNO
AND TEAMS.PLAYERNO = PLAYERS.PLAYERNO
Answer 7.5:
SELECT T.TEAMNO, P.NAME
FROM TEAMS AS T, PLAYERS AS P
WHERE T.PLAYERNO = P.PLAYERNO
Answer 7.6:
SELECT M.MATCHNO, P.NAME, T.DIVISION
FROM MATCHES AS M, PLAYERS AS P, TEAMS AS T
WHERE M.PLAYERNO = P.PLAYERNO
AND M.TEAMNO = T.TEAMNO
Answer 7.7:
SELECT P.PLAYERNO, P.NAME
FROM PLAYERS AS P, COMMITTEE_MEMBERS AS C
WHERE P.PLAYERNO = C.PLAYERNO
AND B.POSITION = 'Chairman'
Answer 7.8:
SELECT DISTINCT CM.PLAYERNO
FROM COMMITTEE_MEMBERS AS CM, PENALTIES AS PEN
WHERE CM.PLAYERNO = PEN.PLAYERNO
AND CM.BEGIN_DATE = PEN.PAYMENT_DATE
Answer 7.9:
SELECT P.PLAYERNO, P.NAME
FROM PLAYERS AS P, PLAYERS AS P27
WHERE P.TOWN = P27.TOWN
AND P27.PLAYERNO = 27
AND P.PLAYERNO <> 27
Answer 7.10:
SELECT DISTINCT P.PLAYERNO AS PLAYER_PLAYERNO,
P.NAME AS PLAYER_NAME,
CAP.PLAYERNO AS CAPTAIN_PLAYERNO,
CAP.NAME AS CAPTAIN_NAME
FROM PLAYERS AS P, PLAYERS AS CAP,
MATCHES AS M, TEAMS AS T
WHERE M.PLAYERNO = P.PLAYERNO
AND T.TEAMNO = M.TEAMNO
AND M.PLAYERNO <> T.PLAYERNO
AND CAP.PLAYERNO = T.PLAYERNO
Answer 7.11:
SELECT PEN1.PAYMENTNO, PEN1.PLAYERNO
FROM PENALTIES AS PEN1, PENALTIES AS PEN2
WHERE PEN1.AMOUNT = PEN2.AMOUNT
AND PEN2.PLAYERNO = 44
AND PEN1.PLAYERNO <> 44
Answer 7.12:
SELECT T.TEAMNO, P.NAME
FROM TEAMS AS T INNER JOIN PLAYERS AS P
ON T.PLAYERNO = P.PLAYERNO
Answer 7.13:
SELECT P.PLAYERNO, P.NAME
FROM PLAYERS AS P INNER JOIN PLAYERS AS P27
ON P.TOWN = P27.TOWN
AND P27.PLAYERNO = 27
AND P.PLAYERNO <> 27
Answer 7.14:
SELECT M.MATCHNO, P.NAME, T.DIVISION
FROM (MATCHES AS M INNER JOIN PLAYERS AS P
ON M.PLAYERNO = P.PLAYERNO)
INNER JOIN TEAMS AS T
ON M.TEAMNO = T.TEAMNO
Answer 7.15:
SELECT PLAYERS.PLAYERNO, PENALTIES.AMOUNT
FROM PLAYERS LEFT OUTER JOIN PENALTIES
ON PLAYERS.PLAYERNO = PENALTIES.PLAYERNO
Answer 7.16:
SELECT P.PLAYERNO, M.TEAMNO
FROM PLAYERS AS P LEFT OUTER JOIN MATCHES AS M
ON P.PLAYERNO = M.PLAYERNO
Answer 7.17:
SELECT P.PLAYERNO, PEN.AMOUNT, M.TEAMNO
FROM (PLAYERS AS P LEFT OUTER JOIN MATCHES AS M
ON P.PLAYERNO = M.PLAYERNO)
LEFT OUTER JOIN PENALTIES AS PEN
ON P.PLAYERNO = PEN.PLAYERNO
Answer 7.21:
SELECT PLAYERNO, DIFFERENCE
FROM (SELECT PLAYERNO,
JOINED - YEAR(BIRTH_DATE) AS DIFFERENCE
FROM PLAYERS) AS DIFFERENCES
WHERE DIFFERENCE > 20
Answer 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
Answer 7.23:
SELECT ROUND(RAND() * 1000)
FROM (SELECT 0 AS NUMBER 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 NUMBERS
Example 8.1:
SELECT PLAYERNO
FROM PLAYERS
WHERE TOWN = 'Stratford'
Example 8.2:
SELECT PLAYERNO, BIRTH_DATE, JOINED
FROM PLAYERS
WHERE YEAR(BIRTH_DATE) + 17 = JOINED
Example 8.3:
SELECT PLAYERNO
FROM PLAYERS
WHERE LEAGUENO = '7060'
Example 8.4:
SELECT PLAYERNO, LEAGUENO
FROM PLAYERS
WHERE LEAGUENO = LEAGUENO
Example 8.5:
SELECT PLAYERNO, LEAGUENO
FROM PLAYERS
WHERE LEAGUENO <=> NULL
Example 8.6:
SELECT MATCHNO
FROM MATCHES
WHERE (WON, LOST) = (2, 3)
Example 8.7:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO =
(SELECT PLAYERNO
FROM TEAMS
WHERE TEAMNO = 1)
;
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO = 6
;
SELECT *
FROM PLAYERS
WHERE BIRTH_DATE <
(SELECT BIRTH_DATE
FROM PLAYERS)
Example 8.8:
SELECT PLAYERNO, NAME, INITIALS
FROM PLAYERS
WHERE BIRTH_DATE <
(SELECT BIRTH_DATE
FROM PLAYERS
WHERE LEAGUENO = '8467')
;
SELECT PLAYERNO, NAME, INITIALS
FROM PLAYERS
WHERE BIRTH_DATE <
(SELECT BIRTH_DATE
FROM PLAYERS
WHERE LEAGUENO = '9999')
Example 8.9:
SELECT MATCHNO
FROM MATCHES
WHERE TEAMNO =
(SELECT TEAMNO
FROM TEAMS
WHERE PLAYERNO = 27)
Example 8.10:
SELECT PLAYERNO
FROM PLAYERS
WHERE LEAGUENO <=>
(SELECT LEAGUENO
FROM PLAYERS
WHERE PLAYERNO = 7)
Example 8.11:
SELECT PLAYERNO, TOWN, SEX
FROM PLAYERS
WHERE (TOWN, SEX) =
((SELECT TOWN
FROM PLAYERS
WHERE PLAYERNO = 7),
(SELECT SEX
FROM PLAYERS
WHERE PLAYERNO = 2))
Example 8.12:
SELECT DISTINCT PLAYERNO
FROM COMMITTEE_MEMBERS
WHERE (BEGIN_DATE, END_DATE) =
(SELECT BEGIN_DATE, END_DATE
FROM COMMITTEE_MEMBERS
WHERE PLAYERNO = 6
AND POSITION = 'Secretary'
AND BEGIN_DATE = '1990-01-01')
Example 8.13:
SELECT PLAYERNO, NAME, INITIALS
FROM PLAYERS
WHERE (NAME, INITIALS) <
(SELECT NAME, INITIALS
FROM PLAYERS
WHERE PLAYERNO = 6)
ORDER BY NAME, INITIALS
Example 8.14:
SELECT MATCHNO
FROM MATCHES_SPECIAL
WHERE (START_DATE, START_TIME) >
(SELECT START_DATE, START_TIME
FROM MATCHES_SPECIAL
WHERE MATCHNO = 1)
Example 8.15:
SELECT MATCHNO
FROM MATCHES
WHERE 'Inglewood' =
(SELECT TOWN
FROM PLAYERS
WHERE PLAYERS.PLAYERNO = MATCHES.PLAYERNO)
;
SELECT TOWN
FROM PLAYERS
WHERE PLAYERS.PLAYERNO = 6
;
SELECT TOWN
FROM PLAYERS
WHERE PLAYERS.PLAYERNO = 44
Example 8.16:
SELECT MATCHNO, PLAYERNO, TEAMNO
FROM MATCHES
WHERE PLAYERNO =
(SELECT PLAYERNO
FROM TEAMS
WHERE TEAMS.PLAYERNO = MATCHES.PLAYERNO)
Example 8.17:
SELECT MATCHNO
FROM MATCHES
WHERE SUBSTR((SELECT DIVISION
FROM TEAMS
WHERE TEAMS.TEAMNO =
MATCHES.TEAMNO),3,1)
=
SUBSTR((SELECT NAME
FROM PLAYERS
WHERE PLAYERS.PLAYERNO =
MATCHES.PLAYERNO),3,1)
Example 8.18:
SELECT PLAYERNO, LEAGUENO
FROM PLAYERS
WHERE LEAGUENO
Example 8.19:
SELECT TEAMNO
FROM TEAMS
WHERE TEAMNO - 1
;
SELECT * FROM PLAYERS WHERE 18
;
SELECT * FROM PLAYERS WHERE NULL
;
SELECT * FROM PLAYERS WHERE PLAYERNO & 3
;
SELECT * FROM PLAYERS WHERE YEAR(BIRTH_DATE)
Example 8.20:
SELECT PLAYERNO, NAME, SEX, BIRTH_DATE
FROM PLAYERS
WHERE SEX = 'M'
AND BIRTH_DATE > '1970-12-31'
Example 8.21:
SELECT PLAYERNO, NAME, TOWN
FROM PLAYERS
WHERE TOWN = 'Plymouth'
OR TOWN = 'Eltham'
Example 8.22:
SELECT PLAYERNO, NAME, TOWN
FROM PLAYERS
WHERE TOWN <> 'Stratford'
;
SELECT PLAYERNO, NAME, TOWN
FROM PLAYERS
WHERE NOT (TOWN = 'Stratford')
Example 8.23:
SELECT PLAYERNO, LEAGUENO, PHONENO
FROM PLAYERS
WHERE LEAGUENO AND PHONENO
Example 8.24:
SELECT PLAYERNO, TOWN, BIRTH_DATE
FROM PLAYERS
WHERE (TOWN = 'Stratford' OR YEAR(BIRTH_DATE) = 1963)
AND NOT (TOWN = 'Stratford' AND YEAR(BIRTH_DATE) = 1963)
;
SELECT PLAYERNO, TOWN, BIRTH_DATE
FROM PLAYERS
WHERE (TOWN = 'Stratford') XOR (YEAR(BIRTH_DATE) = 1963)
Example 8.25:
SELECT PLAYERNO, NAME, TOWN
FROM PLAYERS
WHERE TOWN = 'Inglewood'
OR TOWN = 'Plymouth'
OR TOWN = 'Midhurst'
OR TOWN = 'Douglas'
;
SELECT PLAYERNO, NAME, TOWN
FROM PLAYERS
WHERE TOWN IN ('Inglewood', 'Plymouth', 'Midhurst',
'Douglas')
Example 8.26:
SELECT PLAYERNO, YEAR(BIRTH_DATE)
FROM PLAYERS
WHERE YEAR(BIRTH_DATE) IN (1962, 1963, 1970)
Example 8.27:
SELECT MATCHNO, WON, LOST
FROM MATCHES
WHERE 2 IN (WON, LOST)
Example 8.28:
SELECT PLAYERNO
FROM PLAYERS
WHERE PLAYERNO IN
(100,
(SELECT PLAYERNO
FROM PENALTIES
WHERE PAYMENTNO = 1),
(SELECT PLAYERNO
FROM TEAMS
WHERE TEAMNO = 2))
Example 8.29:
SELECT MATCHNO, WON, LOST
FROM MATCHES
WHERE WON IN
(TRUNCATE(MATCHNO / 2,0), LOST,
(SELECT LOST
FROM MATCHES
WHERE MATCHNO = 1))
Example 8.30:
SELECT MATCHNO
FROM MATCHES
WHERE (SELECT SUBSTR(NAME,1,1)
FROM PLAYERS
WHERE PLAYERS.PLAYERNO = MATCHES.PLAYERNO)
IN ('B','C','E')
Example 8.31:
SELECT MATCHNO, WON, LOST
FROM MATCHES
WHERE (WON, LOST) IN ((3,1),(3,2))
Example 8.32:
SELECT PLAYERNO, NAME, INITIALS
FROM PLAYERS
WHERE (NAME, INITIALS) IN
((SELECT NAME, INITIALS
FROM PLAYERS
WHERE PLAYERNO = 6),
(SELECT NAME, INITIALS
FROM PLAYERS
WHERE PLAYERNO = 27))
Example 8.33:
SELECT PLAYERNO
FROM MATCHES
;
SELECT PLAYERNO, NAME, INITIALS
FROM PLAYERS
WHERE PLAYERNO IN (6, 6, 6, 44, 83, 2, 57, 8, 27,
104, 112, 112, 8)
;
SELECT PLAYERNO, NAME, INITIALS
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM MATCHES)
;
SELECT PLAYERNO, NAME, INITIALS
FROM PLAYERS
WHERE PLAYERNO IN (6, 6, 6, 44, 83, 2, 57, 8, 27,
104, 112, 112, 8)
Example 8.34:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM MATCHES
WHERE TEAMNO = 1)
Example 8.35:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM MATCHES
WHERE TEAMNO NOT IN
(SELECT TEAMNO
FROM TEAMS
WHERE PLAYERNO = 6))
;
SELECT *
FROM PLAYERS
WHERE BIRTH_DATE NOT IN
(SELECT BIRTH_DATE
FROM PLAYERS
WHERE Town = 'London')
Example 8.36:
SELECT *
FROM COMMITTEE_MEMBERS
WHERE (BEGIN_DATE, END_DATE) IN
(SELECT BEGIN_DATE, END_DATE
FROM COMMITTEE_MEMBERS
WHERE POSITION = 'Secretary')
Example 8.37:
CREATE TABLE PLAYERS_NI
(NAME CHAR(10) NOT NULL,
INITIALS CHAR(3) NOT NULL,
TOWN VARCHAR(30) NOT NULL,
PRIMARY KEY (NAME, INITIALS))
;
INSERT INTO PLAYERS_NI VALUES ('Parmenter', 'R', 'Stratford')
;
INSERT INTO PLAYERS_NI VALUES ('Parmenter', 'P', 'Stratford')
;
INSERT INTO PLAYERS_NI VALUES ('Miller', 'P', 'Douglas')
;
CREATE TABLE PENALTIES_NI
(PAYMENTNO INTEGER NOT NULL,
NAME CHAR(10) NOT NULL,
INITIALS CHAR(3) NOT NULL,
AMOUNT DECIMAL(7,2) NOT NULL,
PRIMARY KEY (PAYMENTNO),
FOREIGN KEY (NAME, INITIALS)
REFERENCES PLAYERS_NI (NAME, INITIALS))
;
INSERT INTO PENALTIES_NI VALUES (1, 'Parmenter', 'R', 100.00)
;
INSERT INTO PENALTIES_NI VALUES (2, 'Miller', 'P', 200.00)
Example 8.38:
SELECT NAME, INITIALS, TOWN
FROM PLAYERS_NI
WHERE NAME IN
(SELECT NAME
FROM PENALTIES_NI)
AND INITIALS IN
(SELECT INITIALS
FROM PENALTIES_NI)
;
SELECT NAME, INITIALS, TOWN
FROM PLAYERS_NI
WHERE (NAME, INITIALS) IN
(SELECT NAME, INITIALS
FROM PENALTIES_NI)
;
SELECT NAME, INITIALS, TOWN
FROM PLAYERS_NI
WHERE NAME IN
(SELECT NAME
FROM PENALTIES_NI
WHERE PLAYERS_NI.INITIALS =
PENALTIES_NI.INITIALS)
Example 8.39:
SELECT NAME, INITIALS, TOWN
FROM PLAYERS_NI
WHERE (NAME, INITIALS) NOT IN
(SELECT NAME, INITIALS
FROM PENALTIES_NI)
Example 8.40:
SELECT PLAYERNO, BIRTH_DATE
FROM PLAYERS
WHERE BIRTH_DATE >= '1962-01-01'
AND BIRTH_DATE <= '1964-12-31'
;
SELECT PLAYERNO, BIRTH_DATE
FROM PLAYERS
WHERE BIRTH_DATE BETWEEN '1962-01-01' AND '1964-12-31'
Example 8.41:
SELECT MATCHNO, WON + LOST
FROM MATCHES
WHERE WON + LOST BETWEEN 2 AND 4
Example 8.42:
SELECT PLAYERNO, BIRTH_DATE, NAME, INITIALS
FROM PLAYERS
WHERE BIRTH_DATE BETWEEN
(SELECT BIRTH_DATE
FROM PLAYERS
WHERE NAME = 'Newcastle'
AND INITIALS = 'B')
AND
(SELECT BIRTH_DATE
FROM PLAYERS
WHERE NAME = 'Miller'
AND INITIALS = 'P')
Example 8.43:
SELECT NAME, PLAYERNO
FROM PLAYERS
WHERE NAME LIKE 'B%'
Example 8.44:
SELECT NAME, PLAYERNO
FROM PLAYERS
WHERE NAME LIKE '%r'
Example 8.45:
SELECT NAME, PLAYERNO
FROM PLAYERS
WHERE NAME LIKE '%e_'
Example 8.46:
SELECT NAME, TOWN, PLAYERNO
FROM PLAYERS
WHERE NAME LIKE CONCAT('%', SUBSTR(TOWN,3,1))
Example 8.47:
SELECT NAME, PLAYERNO
FROM PLAYERS
WHERE NAME LIKE '%#_%' ESCAPE '#'
Example 8.48:
SELECT NAME, PLAYERNO
FROM PLAYERS
WHERE NAME REGEXP 'e'
Example 8.49:
SELECT NAME, PLAYERNO
FROM PLAYERS
WHERE NAME REGEXP '^ba'
Example 8.50:
SELECT NAME, STREET, PLAYERNO
FROM PLAYERS
WHERE NAME REGEXP CONCAT(SUBSTR(STREET,1,1), '$')
Example 8.51:
SELECT NAME, PLAYERNO
FROM PLAYERS
WHERE NAME REGEXP '[abc]'
Example 8.52:
SELECT NAME, PLAYERNO
FROM PLAYERS
WHERE NAME REGEXP 'm.n'
Example 8.53:
SELECT NAME, PLAYERNO
FROM PLAYERS
WHERE NAME REGEXP '[men][men]'
Example 8.54:
SELECT PLAYERNO, POSTCODE
FROM PLAYERS
WHERE POSTCODE REGEXP '^[0-9][0-9]3'
Example 8.55:
SELECT STREET, PLAYERNO
FROM PLAYERS
WHERE STREET REGEXP '^St.*Road$'
Example 8.56:
SELECT PLAYERNO, POSTCODE
FROM PLAYERS
WHERE POSTCODE REGEXP '[0-9][0-9]*[a-z][a-z]*'
Example 8.57:
SELECT NAME, PLAYERNO
FROM PLAYERS
WHERE NAME REGEXP '^[^A-M]'
Example 8.58:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE NAME REGEXP '^[a-z]{7}'
Example 8.59:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE NAME REGEXP '^[a-z]{6,7}$'
Example 8.60:
SELECT PLAYERNO, POSTCODE
FROM PLAYERS
WHERE POSTCODE REGEXP '4{4}'
Example 8.61:
SELECT PLAYERNO, STREET
FROM PLAYERS
WHERE STREET REGEXP 'Street|Square'
Example 8.62:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE NAME REGEXP '[[.space.]]'
Example 8.63:
SELECT PLAYERNO, STREET
FROM PLAYERS
WHERE STREET REGEXP '[[:<:]]Street[[:>:]]'
Example 8.64:
CREATE TABLE BOOKS
(BOOKNO INTEGER NOT NULL PRIMARY KEY,
AUTHORS TEXT NOT NULL,
TITLE TEXT NOT NULL,
YEAR_PUBLICATION YEAR NOT NULL,
SUMMARY TEXT NOT NULL)
ENGINE = MyISAM
Example 8.65:
SET @@SQL_MODE = 'PIPES_AS_CONCAT'
;
INSERT INTO BOOKS VALUES (1,
'Ramez Elmasri and Shamkant B. Navathe',
'Fundamentals of Database Systems', 2007,
'This market-leading text serves as a valued resource for '||
'those who will interact with databases in future courses '||
'and careers. Renowned for its accessible, comprehensive '||
'coverage of models and real systems, it provides an '||
'up-to-date introduction to modern database technologies.')
;
INSERT INTO BOOKS VALUES (2,
'George Coulouris, Jean Dollimore and Tim Kindberg',
'Distributed Systems: Concepts and Design', 2005,
'This book provides broad and up-to-date coverage of the '||
'principles and practice in the fast moving area of '||
'distributed systems. It includes the key issues in the '||
'debate between components and web services as the way '||
'forward for industry. The depth of coverage will enable '||
'students to evaluate existing distributed systems and '||
'design new ones.')
;
INSERT INTO BOOKS VALUES (3,
'Rick van der Lans',
'Introduction to SQL: Mastering the Relational Database '||
'Language', 2007,
'This book provides a technical introduction to the '||
'features of SQL. Aimed at those new to SQL, but not new '||
'to programming, it gives the reader the essential skills '||
'required to start programming with this language.')
;
INSERT INTO BOOKS VALUES (4,
'Chris Date',
'An Introduction to Database Systems', 2004,
'Continuing in the eighth edition, this book provides a '||
'comprehensive introduction to the now very large field of '||
'database systems by providing a solid grounding in the '||
'foundations of database technology. This new edition has '||
'been rewritten and expanded to stay current with database '||
'system trends.')
;
INSERT INTO BOOKS VALUES (5,
'Thomas M. Connolly and Carolyn E. Begg',
'DataBase Systems: A Practical Approach to Design, '||
'Implementation and Management',
2005,
'A clear introduction to design implementation and management '||
'issues, as well as an extensive treatment of database '||
'languages and standards, make this book an indispensable '||
'complete reference for database students and professionals.')
Example 8.66:
CREATE FULLTEXT INDEX INDEX_TITLE
ON BOOKS (TITLE)
;
CREATE FULLTEXT INDEX INDEX_SUMMARY
ON BOOKS (SUMMARY)
Example 8.67:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE) AGAINST ('design')
;
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE)
AGAINST ('design' IN NATURAL LANGUAGE MODE)
Example 8.68:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE) AGAINST ('to')
Example 8.69:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE) AGAINST ('database')
Example 8.70:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE) AGAINST ('practical')
Example 8.71:
SELECT BOOKNO, MATCH(SUMMARY) AGAINST ('distributed')
FROM BOOKS
Example 8.72:
SELECT BOOKNO, MATCH(TITLE) AGAINST ('introduction')
FROM BOOKS
WHERE MATCH(TITLE) AGAINST ('introduction')
Example 8.73:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE) AGAINST ('practical distributed')
Example 8.74:
CREATE FULLTEXT INDEX INDEX_TITLE_SUMMARY
ON BOOKS (TITLE, SUMMARY)
Example 8.75:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE, SUMMARY) AGAINST ('careers')
Example 8.76:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE) AGAINST ('database' IN BOOLEAN MODE)
Example 8.77:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE, SUMMARY)
AGAINST ('introduction' IN BOOLEAN MODE)
Example 8.78:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE)
AGAINST ('database design' IN BOOLEAN MODE)
Example 8.79:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE)
AGAINST ('+database +design' IN BOOLEAN MODE)
Example 8.80:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE)
AGAINST ('+database -design' IN BOOLEAN MODE)
Example 8.81:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE)
AGAINST ('"design implementation"' IN BOOLEAN MODE)
Example 8.82:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE) AGAINST ('data*' IN BOOLEAN MODE)
Example 8.83:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE) AGAINST ('practical'
IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION)
;
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE) AGAINST ('practical')
;
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE) AGAINST (' DataBase Systems: A Practical
Approach to Design, Implementation and Management')
Example 8.84:
SELECT BOOKNO, TITLE
FROM BOOKS
WHERE MATCH(TITLE) AGAINST ('sql')
Example 8.85:
SELECT PLAYERNO, LEAGUENO
FROM PLAYERS
WHERE LEAGUENO IS NOT NULL
Example 8.86:
SELECT NAME, PLAYERNO, LEAGUENO
FROM PLAYERS
WHERE LEAGUENO <> '8467'
OR LEAGUENO IS NULL
Example 8.87:
SELECT NAME, INITIALS
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PENALTIES)
;
SELECT NAME, INITIALS
FROM PLAYERS
WHERE EXISTS
(SELECT *
FROM PENALTIES
WHERE PLAYERNO = PLAYERS.PLAYERNO)
;
SELECT *
FROM PENALTIES
WHERE PLAYERNO = 6
Example 8.88:
SELECT NAME, INITIALS
FROM PLAYERS
WHERE NOT EXISTS
(SELECT *
FROM TEAMS
WHERE PLAYERNO = PLAYERS.PLAYERNO)
;
SELECT NAME, INITIALS
FROM PLAYERS
WHERE NOT EXISTS
(SELECT 'nothing'
FROM TEAMS
WHERE PLAYERNO = PLAYERS.PLAYERNO)
Example 8.89:
SELECT PLAYERNO, NAME, BIRTH_DATE
FROM PLAYERS
WHERE BIRTH_DATE <= ALL
(SELECT BIRTH_DATE
FROM PLAYERS)
Example 8.90:
SELECT PLAYERNO, BIRTH_DATE
FROM PLAYERS
WHERE BIRTH_DATE < ALL
(SELECT BIRTH_DATE
FROM PLAYERS AS P INNER JOIN MATCHES AS M
ON P.PLAYERNO = M.PLAYERNO
WHERE M.TEAMNO = 2)
Example 8.91:
SELECT DISTINCT TEAMNO, PLAYERNO
FROM MATCHES AS M1
WHERE WON <= ALL
(SELECT WON
FROM MATCHES AS M2
WHERE M1.TEAMNO = M2.TEAMNO)
Example 8.92:
SELECT LEAGUENO, PLAYERNO
FROM PLAYERS
WHERE LEAGUENO >= ALL
(SELECT LEAGUENO
FROM PLAYERS)
;
SELECT LEAGUENO, PLAYERNO
FROM PLAYERS
WHERE LEAGUENO >= ALL
(SELECT LEAGUENO
FROM PLAYERS
WHERE LEAGUENO IS NOT NULL)
Example 8.93:
SELECT PLAYERNO, TOWN, LEAGUENO
FROM PLAYERS AS P1
WHERE LEAGUENO <= ALL
(SELECT P2.LEAGUENO
FROM PLAYERS AS P2
WHERE P1.TOWN = P2.TOWN)
;
SELECT PLAYERNO, TOWN, LEAGUENO
FROM PLAYERS AS P1
WHERE LEAGUENO <= ALL
(SELECT P2.LEAGUENO
FROM PLAYERS AS P2
WHERE P1.TOWN = P2.TOWN
AND LEAGUENO IS NOT NULL)
Example 8.94:
SELECT PLAYERNO, NAME, BIRTH_DATE
FROM PLAYERS
WHERE BIRTH_DATE > ANY
(SELECT BIRTH_DATE
FROM PLAYERS)
Example 8.95:
SELECT DISTINCT PLAYERNO
FROM PENALTIES
WHERE PLAYERNO <> 27
AND AMOUNT > ANY
(SELECT AMOUNT
FROM PENALTIES
WHERE PLAYERNO = 27)
Example 8.96:
SELECT PLAYERNO, BIRTH_DATE, TOWN
FROM PLAYERS AS P1
WHERE BIRTH_DATE > ANY
(SELECT BIRTH_DATE
FROM PLAYERS AS P2
WHERE P1.TOWN = P2.TOWN)
Example 8.98:
SELECT TEAMNO, DIVISION
FROM TEAMS
WHERE EXISTS
(SELECT *
FROM MATCHES
WHERE PLAYERNO = 44
AND TEAMNO = TEAMS.TEAMNO)
Example 8.99:
SELECT DISTINCT PLAYERNO
FROM PENALTIES AS PEN
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PENALTIES
WHERE PAYMENTNO <> PEN.PAYMENTNO)
Example 8.100:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE 1 <> ALL
(SELECT TEAMNO
FROM MATCHES
WHERE PLAYERNO = PLAYERS.PLAYERNO)
Example 8.101:
SELECT TEAMNO
FROM TEAMS
WHERE NOT EXISTS
(SELECT *
FROM MATCHES
WHERE PLAYERNO = 57
AND TEAMNO = TEAMS.TEAMNO)
Example 8.102:
SELECT PLAYERNO
FROM PLAYERS AS P
WHERE NOT EXISTS
(SELECT *
FROM TEAMS AS T
WHERE NOT EXISTS
(SELECT *
FROM MATCHES AS M
WHERE T.TEAMNO = M.TEAMNO
AND P.PLAYERNO = M.PLAYERNO))
;
SELECT *
FROM TEAMS AS T
WHERE NOT EXISTS
(SELECT *
FROM MATCHES AS M
WHERE T.TEAMNO = M.TEAMNO
AND M.PLAYERNO = 27)
Example 8.103:
SELECT PLAYERNO
FROM PLAYERS
WHERE NOT EXISTS
(SELECT *
FROM MATCHES AS M1
WHERE PLAYERNO = 57
AND NOT EXISTS
(SELECT *
FROM MATCHES AS M2
WHERE M1.TEAMNO = M2.TEAMNO
AND PLAYERS.PLAYERNO = M2.PLAYERNO))
Example 8.104:
SELECT PLAYERNO
FROM MATCHES
WHERE TEAMNO IN
(SELECT TEAMNO
FROM TEAMS
WHERE TEAMNO NOT IN
(SELECT TEAMNO
FROM MATCHES
WHERE PLAYERNO = 57))
;
SELECT PLAYERNO
FROM PLAYERS AS P
WHERE NOT EXISTS
(SELECT *
FROM MATCHES AS M1
WHERE PLAYERNO = 57
AND NOT EXISTS
(SELECT *
FROM MATCHES AS M2
WHERE M1.TEAMNO = M2.TEAMNO
AND P.PLAYERNO = M2.PLAYERNO))
AND PLAYERNO NOT IN
(SELECT PLAYERNO
FROM MATCHES
WHERE TEAMNO IN
(SELECT TEAMNO
FROM TEAMS
WHERE TEAMNO NOT IN
(SELECT TEAMNO
FROM MATCHES
WHERE PLAYERNO = 57)))
Example 8.105:
SELECT PLAYERNO
FROM PLAYERS
WHERE TOWN = 'Stratford'
;
SELECT PLAYERNO
FROM PLAYERS
WHERE NOT (TOWN = 'Stratford')
;
SELECT PLAYERNO
FROM PLAYERS
WHERE TOWN <> 'Stratford'
Example 8.106:
SELECT PLAYERNO
FROM PENALTIES
WHERE AMOUNT = 25
;
SELECT PLAYERNO
FROM PENALTIES
WHERE AMOUNT <> 25
;
SELECT PLAYERNO
FROM PLAYERS
WHERE PLAYERNO NOT IN
(SELECT PLAYERNO
FROM PENALTIES
WHERE AMOUNT = 25)
Example 8.107:
SELECT PLAYERNO
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PENALTIES
WHERE AMOUNT = 25)
Answer 8.1:
SELECT PAYMENTNO
FROM PENALTIES
WHERE AMOUNT > 60
;
SELECT PAYMENTNO
FROM PENALTIES
WHERE 60 < AMOUNT
;
SELECT PAYMENTNO
FROM PENALTIES
WHERE AMOUNT - 60 > 0
Answer 8.5:
SELECT DISTINCT PLAYERNO
FROM MATCHES
WHERE WON + LOST = 5
Answer 8.6:
SELECT PLAYERNO, NAME, INITIALS
FROM PLAYERS
WHERE PLAYERNO =
(SELECT PLAYERNO
FROM PENALTIES
WHERE PAYMENTNO = 4)
Answer 8.7:
SELECT PLAYERNO, NAME, INITIALS
FROM PLAYERS
WHERE PLAYERNO =
(SELECT PLAYERNO
FROM TEAMS
WHERE TEAMNO =
(SELECT TEAMNO
FROM MATCHES
WHERE MATCHNO = 2))
Answer 8.8:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE BIRTH_DATE =
(SELECT BIRTH_DATE
FROM PLAYERS
WHERE NAME = 'Parmenter'
AND INITIALS = 'R')
AND NOT (NAME = 'Parmenter'
AND INITIALS = 'R')
Answer 8.9:
SELECT MATCHNO
FROM MATCHES
WHERE WON =
(SELECT WON
FROM MATCHES
WHERE MATCHNO = 6)
AND MATCHNO <> 6
AND TEAMNO = 2
Answer 8.10:
SELECT MATCHNO
FROM MATCHES
WHERE (WON, LOST) =
((SELECT WON
FROM MATCHES
WHERE MATCHNO = 2),
(SELECT LOST
FROM MATCHES
WHERE MATCHNO = 8))
Answer 8.11:
SELECT PLAYERNO, TOWN, STREET, HOUSENO
FROM PLAYERS
WHERE (TOWN, STREET, HOUSENO) <
(SELECT TOWN, STREET, HOUSENO
FROM PLAYERS
WHERE PLAYERNO = 100)
ORDER BY TOWN, STREET, HOUSENO
Answer 8.12:
SELECT PAYMENTNO
FROM PENALTIES
WHERE 1965 <
(SELECT YEAR(BIRTH_DATE)
FROM PLAYERS
WHERE PLAYERS.PLAYERNO = PENALTIES.PLAYERNO)
Answer 8.13:
SELECT PAYMENTNO, PLAYERNO
FROM PENALTIES
WHERE PLAYERNO =
(SELECT PLAYERNO
FROM TEAMS
WHERE TEAMS.PLAYERNO = PENALTIES.PLAYERNO)
Answer 8.14:
SELECT PLAYERNO, NAME, TOWN
FROM PLAYERS
WHERE SEX = 'F'
AND TOWN <> 'Stratford'
;
SELECT PLAYERNO, NAME, TOWN
FROM PLAYERS
WHERE SEX = 'F'
AND NOT (TOWN = 'Stratford')
Answer 8.15:
SELECT PLAYERNO
FROM PLAYERS
WHERE JOINED >= 1970
AND JOINED <= 1980
;
SELECT PLAYERNO
FROM PLAYERS
WHERE NOT (JOINED < 1970 OR JOINED > 1980)
Answer 8.16:
SELECT PLAYERNO, NAME, BIRTH_DATE
FROM PLAYERS
WHERE MOD(YEAR(BIRTH_DATE), 400) = 0
OR (MOD(YEAR(BIRTH_DATE), 4) = 0
AND NOT(MOD(YEAR(BIRTH_DATE), 100) = 0))
Answer 8.17:
SELECT MATCHNO, NAME, INITIALS, DIVISION
FROM MATCHES AS M, PLAYERS AS P, TEAMS AS T
WHERE M.PLAYERNO = P.PLAYERNO
AND M.TEAMNO = T.TEAMNO
AND YEAR(BIRTH_DATE) > 1965
AND WON > LOST
Answer 8.18:
SELECT PAYMENTNO
FROM PENALTIES
WHERE AMOUNT IN (50, 75, 100)
Answer 8.19:
SELECT PLAYERNO
FROM PLAYERS
WHERE TOWN NOT IN ('Stratford', 'Douglas')
;
SELECT PLAYERNO
FROM PLAYERS
WHERE NOT (TOWN IN ('Stratford', 'Douglas'))
;
SELECT PLAYERNO
FROM PLAYERS
WHERE TOWN <> 'Stratford'
AND TOWN <> 'Douglas'
Answer 8.20:
SELECT PAYMENTNO
FROM PENALTIES
WHERE AMOUNT IN
(100, PAYMENTNO * 5,
(SELECT AMOUNT
FROM PENALTIES
WHERE PAYMENTNO = 2))
Answer 8.21:
SELECT PLAYERNO, TOWN, STREET
FROM PLAYERS
WHERE (TOWN, STREET) IN
(('Stratford','Haseltine Lane'),
('Stratford','Edgecombe Way'))
Answer 8.22:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PENALTIES)
Answer 8.23:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PENALTIES
WHERE AMOUNT > 50)
Answer 8.24:
SELECT TEAMNO, PLAYERNO
FROM TEAMS
WHERE DIVISION = 'first'
AND PLAYERNO IN
(SELECT PLAYERNO
FROM PLAYERS
WHERE TOWN = 'Stratford')
Answer 8.25:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PENALTIES)
AND PLAYERNO NOT IN
(SELECT PLAYERNO
FROM TEAMS
WHERE DIVISION = 'first')
;
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PENALTIES
WHERE PLAYERNO NOT IN
(SELECT PLAYERNO
FROM TEAMS
WHERE DIVISION = 'first'))
Answer 8.27:
SELECT MATCHNO, PLAYERNO
FROM MATCHES
WHERE (WON, LOST) IN
(SELECT WON, LOST
FROM MATCHES
WHERE TEAMNO IN
(SELECT TEAMNO
FROM TEAMS
WHERE DIVISION = 'second'))
Answer 8.28:
SELECT PLAYERNO, NAME
FROM PLAYERS AS P1
WHERE (TOWN, STREET, HOUSENO, POSTCODE) IN
(SELECT TOWN, STREET, HOUSENO, POSTCODE
FROM PLAYERS AS P2
WHERE P1.PLAYERNO <> P2.PLAYERNO)
Answer 8.29:
SELECT PAYMENTNO
FROM PENALTIES
WHERE AMOUNT BETWEEN 50 AND 100
Answer 8.30:
SELECT PAYMENTNO
FROM PENALTIES
WHERE NOT (AMOUNT BETWEEN 50 AND 100)
;
SELECT PAYMENTNO
FROM PENALTIES
WHERE AMOUNT NOT BETWEEN 50 AND 100
;
SELECT PAYMENTNO
FROM PENALTIES
WHERE AMOUNT < 50
OR AMOUNT > 100
Answer 8.31:
SELECT PLAYERNO
FROM PLAYERS
WHERE JOINED BETWEEN
YEAR(BIRTH_DATE + INTERVAL 16 YEAR + INTERVAL 1 DAY)
AND YEAR(BIRTH_DATE + INTERVAL 40 YEAR – INTERVAL 1 DAY)
Answer 8.32:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE NAME LIKE '%is%'
Answer 8.33:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE NAME LIKE '______'
Answer 8.34:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE NAME LIKE '______%'
;
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE NAME LIKE '%______'
;
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE NAME LIKE '%______%'
;
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE LENGTH(RTRIM(NAME)) > 6
Answer 8.35:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE NAME LIKE '_r%r_'
Answer 8.36:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE TOWN LIKE '_@%%@%_' ESCAPE '@'
Answer 8.37:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE NAME REGEXP 'en'
Answer 8.38:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE NAME REGEXP '^n.*e$'
Answer 8.39:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE NAME REGEXP '[a-z]{9}'
Answer 8.40:
SELECT BOOKNO, SUMMARY
FROM BOOKS
WHERE MATCH(SUMMARY)
AGAINST ('students' IN NATURAL LANGUAGE MODE)
Answer 8.41:
SELECT BOOKNO, SUMMARY
FROM BOOKS
WHERE MATCH(SUMMARY)
AGAINST ('database' IN BOOLEAN MODE)
Answer 8.42:
SELECT BOOKNO, SUMMARY
FROM BOOKS
WHERE MATCH(SUMMARY)
AGAINST ('database languages'
IN NATURAL LANGUAGE MODE)
Answer 8.43:
SELECT BOOKNO, SUMMARY
FROM BOOKS
WHERE MATCH(SUMMARY)
AGAINST ('+database -languages' IN BOOLEAN MODE)
Answer 8.44:
SELECT PLAYERNO
FROM PLAYERS
WHERE LEAGUENO IS NULL
Answer 8.46:
SELECT NAME, INITIALS
FROM PLAYERS
WHERE EXISTS
(SELECT *
FROM TEAMS
WHERE PLAYERNO = PLAYERS.PLAYERNO)
Answer 8.47:
SELECT NAME, INITIALS
FROM PLAYERS AS P
WHERE NOT EXISTS
(SELECT *
FROM TEAMS AS T
WHERE T.PLAYERNO = P.PLAYERNO
AND EXISTS
(SELECT *
FROM MATCHES AS M
WHERE M.TEAMNO = T.TEAMNO
AND M.PLAYERNO = 112))
Answer 8.48:
SELECT PLAYERNO
FROM PLAYERS
WHERE BIRTH_DATE <= ALL
(SELECT BIRTH_DATE
FROM PLAYERS
WHERE TOWN = 'Stratford')
AND TOWN = 'Stratford'
Answer 8.49:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO = ANY
(SELECT PLAYERNO
FROM PENALTIES)
Answer 8.50:
SELECT PAYMENTNO, AMOUNT, PAYMENT_DATE
FROM PENALTIES AS PEN1
WHERE AMOUNT >= ALL
(SELECT AMOUNT
FROM PENALTIES AS PEN2
WHERE YEAR(PEN1.PAYMENT_DATE) =
YEAR(PEN2.PAYMENT_DATE))
Answer 8.51:
SELECT (SELECT PLAYERNO
FROM PLAYERS
WHERE PLAYERNO <= ALL
(SELECT PLAYERNO
FROM PLAYERS)),
(SELECT PLAYERNO
FROM PLAYERS
WHERE PLAYERNO >= ALL
(SELECT PLAYERNO
FROM PLAYERS))
Answer 8.53:
SELECT NAME, INITIALS
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM MATCHES
WHERE TEAMNO IN
(SELECT TEAMNO
FROM TEAMS
WHERE DIVISION = 'first'))
AND PLAYERNO IN
(SELECT PLAYERNO
FROM MATCHES
WHERE WON > LOST)
AND PLAYERNO NOT IN
(SELECT PLAYERNO
FROM PENALTIES)
Answer 8.54:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM MATCHES
WHERE TEAMNO = 1)
AND PLAYERNO IN
(SELECT PLAYERNO
FROM MATCHES
WHERE TEAMNO = 2)
Answer 8.55:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE EXISTS
(SELECT *
FROM PENALTIES
WHERE PLAYERNO = PLAYERS.PLAYERNO)
Answer 8.56:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM MATCHES AS M1
WHERE WON > LOST
AND EXISTS
(SELECT *
FROM MATCHES AS M2
WHERE M1.PLAYERNO = M2.PLAYERNO
AND WON > LOST
AND M1.MATCHNO <> M2.MATCHNO))
;
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE 1 < (SELECT COUNT(*)
FROM MATCHES
WHERE WON > LOST
AND PLAYERS.PLAYERNO = PLAYERNO)
Answer 8.57:
SELECT NAME, INITIALS
FROM PLAYERS
WHERE NOT EXISTS
(SELECT *
FROM PENALTIES
WHERE PLAYERS.PLAYERNO = PLAYERNO
AND PAYMENT_DATE BETWEEN '1980-01-01'
AND '1980-12-31')
Answer 8.58:
SELECT DISTINCT PLAYERNO
FROM PENALTIES AS PEN1
WHERE EXISTS
(SELECT *
FROM PENALTIES AS PEN2
WHERE PEN1.AMOUNT = PEN2.AMOUNT
AND PEN1.PAYMENTNO <> PEN2.PAYMENTNO)
Answer 8.59:
SELECT PLAYERNO
FROM PLAYERS
WHERE PLAYERNO NOT IN
(SELECT PLAYERNO
FROM MATCHES WHERE WON = 3)
Answer 8.60:
SELECT TEAMNO, DIVISION
FROM TEAMS
WHERE TEAMNO NOT IN
(SELECT TEAMNO
FROM MATCHES
WHERE PLAYERNO = 6)
Answer 8.61:
SELECT DISTINCT PLAYERNO
FROM MATCHES
WHERE PLAYERNO NOT IN
(SELECT PLAYERNO
FROM MATCHES
WHERE TEAMNO IN
(SELECT TEAMNO
FROM MATCHES
WHERE PLAYERNO = 57))
Example 9.1:
SELECT *
FROM PENALTIES
;
SELECT PAYMENTNO, PLAYERNO, PAYMENT_DATE, AMOUNT
FROM PENALTIES
Example 9.2:
SELECT PENALTIES.*
FROM PENALTIES INNER JOIN TEAMS
ON PENALTIES.PLAYERNO = TEAMS.PLAYERNO
;
SELECT PENALTIES.PAYMENTNO, PENALTIES.PLAYERNO,
PENALTIES.PAYMENT_DATE, PENALTIES.AMOUNT
FROM PENALTIES INNER JOIN TEAMS
ON PENALTIES.PLAYERNO = TEAMS.PLAYERNO
;
SELECT PEN.*
FROM PENALTIES AS PEN INNER JOIN TEAMS
ON PEN.PLAYERNO = TEAMS.PLAYERNO
Example 9.3:
SELECT MATCHNO, 'Tally', WON - LOST,
WON * 10
FROM MATCHES
Example 9.4:
SELECT TOWN
FROM PLAYERS
;
SELECT DISTINCT TOWN
FROM PLAYERS
Example 9.5:
SELECT STREET, TOWN
FROM PLAYERS
;
SELECT DISTINCT STREET, TOWN
FROM PLAYERS
;
SELECT TOWN
FROM PLAYERS
;
SELECT ALL TOWN
FROM PLAYERS
Example 9.6:
SELECT DISTINCT LEAGUENO
FROM PLAYERS
Example 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
Example 9.8:
SELECT COUNT(*)
FROM PLAYERS
Example 9.9:
SELECT COUNT(*)
FROM PLAYERS
WHERE TOWN = 'Stratford'
;
SELECT COUNT(*), PLAYERNO
FROM PLAYERS
;
SELECT 'The number of players', COUNT(*)
FROM PLAYERS
Example 9.10:
SELECT COUNT(LEAGUENO)
FROM PLAYERS
;
SELECT COUNT(ALL LEAGUENO)
FROM PLAYERS
Example 9.11:
SELECT COUNT(DISTINCT TOWN)
FROM PLAYERS
Example 9.12:
SELECT COUNT(DISTINCT SUBSTR(NAME, 1, 1))
FROM PLAYERS
Example 9.13:
SELECT COUNT(DISTINCT YEAR(PAYMENT_DATE))
FROM PENALTIES
Example 9.14:
SELECT COUNT(DISTINCT TOWN), COUNT(DISTINCT SEX)
FROM PLAYERS
Example 9.15:
SELECT PLAYERNO, NAME
FROM PLAYERS AS P
WHERE (SELECT COUNT(*)
FROM PENALTIES AS PEN
WHERE P.PLAYERNO = PEN.PLAYERNO)
>
(SELECT COUNT(*)
FROM MATCHES AS M
WHERE P.PLAYERNO = M.PLAYERNO)
Example 9.16:
SELECT PLAYERNO, NAME,
(SELECT COUNT(*)
FROM PENALTIES
WHERE PENALTIES.PLAYERNO = PLAYERS.PLAYERNO)
AS NUMBER
FROM PLAYERS
WHERE (SELECT COUNT(*)
FROM PENALTIES
WHERE PENALTIES.PLAYERNO = PLAYERS.PLAYERNO) >= 2
;
SELECT PLAYERNO, NAME, NUMBER
FROM (SELECT PLAYERNO, NAME,
(SELECT COUNT(*)
FROM PENALTIES
WHERE PENALTIES.PLAYERNO =
PLAYERS.PLAYERNO)
AS NUMBER
FROM PLAYERS) AS PN
WHERE NUMBER >= 2
Example 9.17:
SELECT (SELECT COUNT(*)
FROM PENALTIES),
(SELECT COUNT(*)
FROM MATCHES)
Example 9.18:
SELECT MAX(AMOUNT)
FROM PENALTIES
Example 9.19:
SELECT MIN(AMOUNT)
FROM PENALTIES
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PLAYERS
WHERE TOWN = 'Stratford')
Example 9.20:
SELECT COUNT(*)
FROM PENALTIES
WHERE AMOUNT =
(SELECT MIN(AMOUNT)
FROM PENALTIES)
Example 9.21:
SELECT DISTINCT TEAMNO, PLAYERNO
FROM MATCHES AS M1
WHERE WON =
(SELECT MAX(WON)
FROM MATCHES AS M2
WHERE M1.TEAMNO = M2.TEAMNO)
Example 9.22:
SELECT (MAX(AMOUNT) - MIN(AMOUNT)) * 100
FROM PENALTIES
Example 9.23:
SELECT SUBSTR(MAX(NAME), 1, 1)
FROM PLAYERS
Example 9.24:
SELECT MAX(LEAGUENO)
FROM PLAYERS
WHERE TOWN = 'Midhurst'
Example 9.25:
SELECT CASE WHEN MIN(LEAGUENO) IS NULL
THEN 'Unknown'
ELSE MIN(LEAGUENO)
END
FROM PLAYERS
WHERE TOWN = 'Amsterdam'
Example 9.26:
SELECT PLAYERNO, AMOUNT, PAYMENT_DATE
FROM PENALTIES AS PEN1
WHERE AMOUNT =
(SELECT MAX(AMOUNT)
FROM PENALTIES AS PEN2
WHERE PEN2.PLAYERNO = PEN1.PLAYERNO)
Example 9.27:
SELECT PLAYERNO,
(SELECT MAX(AMOUNT)
FROM PENALTIES
WHERE PENALTIES.PLAYERNO = PLAYERS.PLAYERNO)
AS HIGHESTPENALTY,
(SELECT MAX(WON)
FROM MATCHES
WHERE MATCHES.PLAYERNO = PLAYERS.PLAYERNO)
AS NUMBEROFSETS
FROM PLAYERS
Example 9.28:
SELECT PLAYERNO
FROM PLAYERS
WHERE (SELECT MIN(AMOUNT)
FROM PENALTIES
WHERE PENALTIES.PLAYERNO = PLAYERS.PLAYERNO) =
(SELECT MAX(AMOUNT)
FROM PENALTIES
WHERE PENALTIES.PLAYERNO = PLAYERS.PLAYERNO)
Example 9.29:
SELECT SUM(AMOUNT)
FROM PENALTIES
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PLAYERS
WHERE TOWN = 'Inglewood')
;
SELECT SUM(DISTINCT AMOUNT)
FROM PENALTIES
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PLAYERS
WHERE TOWN = 'Inglewood')
Example 9.30:
SELECT AVG(AMOUNT)
FROM PENALTIES
WHERE PLAYERNO = 44
Example 9.31:
SELECT DISTINCT PLAYERNO
FROM PENALTIES
WHERE AMOUNT >
(SELECT AVG(AMOUNT)
FROM PENALTIES)
Example 9.32:
SELECT AVG(DISTINCT AMOUNT)
FROM PENALTIES
Example 9.33:
SELECT AVG(LENGTH(RTRIM(NAME))), MAX(LENGTH(RTRIM(NAME)))
FROM PLAYERS
Example 9.34:
SELECT PAYMENTNO, AMOUNT,
ABS(AMOUNT - (SELECT AVG(AMOUNT)
FROM PENALTIES)) AS DIFFERENCE
FROM PENALTIES AS P
Example 9.35:
SELECT VARIANCE(AMOUNT)
FROM PENALTIES
WHERE PLAYERNO = 44
;
SELECT AMOUNT –
(SELECT AVG(AMOUNT)
FROM PENALTIES
WHERE PLAYERNO = 44)
FROM PENALTIES
WHERE PLAYERNO = 44
SELECT SUM(P)
FROM (SELECT POWER(AMOUNT -
(SELECT AVG(AMOUNT)
FROM PENALTIES
WHERE PLAYERNO = 44),2) AS P
FROM PENALTIES
WHERE PLAYERNO = 44) AS POWERS
;
SELECT SUM(P) /
(SELECT COUNT(*) FROM PENALTIES WHERE PLAYERNO = 44)
FROM (SELECT POWER(AMOUNT -
(SELECT AVG(AMOUNT)
FROM PENALTIES
WHERE PLAYERNO = 44),2) AS P
FROM PENALTIES
WHERE PLAYERNO = 44) AS POWERS
Example 9.36:
SELECT STDDEV(AMOUNT)
FROM PENALTIES
WHERE PLAYERNO = 44
Example 9.37:
SELECT VAR_SAMP(AMOUNT), VARIANCE(AMOUNT)
FROM PENALTIES
Example 9.38:
SELECT STDDEV_SAMP(AMOUNT), STDDEV(AMOUNT)
FROM PENALTIES
Example 9.39:
CREATE TABLE BITS
(BIN_VALUE INTEGER NOT NULL PRIMARY KEY)
;
INSERT INTO BITS
VALUES (CONV(001,2,16)),
(CONV(011,2,16)),
(CONV(111,2,16))
Example 9.40:
SELECT BIN(BIT_OR(BIN_VALUE))
FROM BITS
Answer 9.4:
SELECT COUNT(*), MAX(AMOUNT)
FROM PENALTIES
Answer 9.5:
SELECT COUNT(DISTINCT POSITION)
FROM COMMITTEE_MEMBERS
Answer 9.6:
SELECT COUNT(LEAGUENO)
FROM PLAYERS
WHERE TOWN = 'Inglewood'
Answer 9.7:
SELECT TEAMNO, DIVISION,
(SELECT COUNT(*)
FROM MATCHES
WHERE TEAMS.TEAMNO = MATCHES.TEAMNO)
FROM TEAMS
Answer 9.8:
SELECT PLAYERNO, NAME,
(SELECT COUNT(*)
FROM MATCHES
WHERE MATCHES.PLAYERNO = PLAYERS.PLAYERNO
AND WON > LOST)
FROM PLAYERS
Answer 9.9:
SELECT 'Number of players' AS TABLES,
(SELECT COUNT(*) FROM PLAYERS) AS NUMBERS UNION
SELECT 'Number of teams',
(SELECT COUNT(*) FROM TEAMS) UNION
SELECT 'Number of matches',
(SELECT COUNT(*) FROM MATCHES)
Answer 9.10:
SELECT MIN(WON)
FROM MATCHES
WHERE WON > LOST
Answer 9.11:
SELECT PLAYERNO,
(SELECT MAX(AMOUNT)
FROM PENALTIES
WHERE PENALTIES.PLAYERNO =
PLAYERS.PLAYERNO) -
(SELECT MIN(AMOUNT)
FROM PENALTIES
WHERE PENALTIES.PLAYERNO =
PLAYERS.PLAYERNO)
FROM PLAYERS
Answer 9.12:
SELECT PLAYERNO, BIRTH_DATE
FROM PLAYERS
WHERE YEAR(BIRTH_DATE) =
(SELECT MAX(YEAR(BIRTH_DATE))
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM MATCHES
WHERE TEAMNO = 1))
Answer 9.14:
SELECT AVG(AMOUNT)
FROM PENALTIES
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM MATCHES
WHERE TEAMNO = 1)
Answer 9.15:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE (SELECT SUM(AMOUNT)
FROM PENALTIES
WHERE PENALTIES.PLAYERNO = PLAYERS.PLAYERNO)
> 100
Answer 9.16:
SELECT NAME, INITIALS
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM MATCHES
WHERE WON >
(SELECT SUM(WON)
FROM MATCHES
WHERE PLAYERNO = 27))
Answer 9.17:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE (SELECT SUM(WON)
FROM MATCHES
WHERE MATCHES.PLAYERNO =
PLAYERS.PLAYERNO) = 8
Answer 9.18:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE LENGTH(RTRIM(NAME)) >
(SELECT AVG(LENGTH(RTRIM(NAME)))
FROM PLAYERS)
Answer 9.19:
SELECT PLAYERNO,
(SELECT MAX(AMOUNT)
FROM PENALTIES
WHERE PENALTIES.PLAYERNO =
PLAYERS.PLAYERNO) -
(SELECT AVG(AMOUNT)
FROM PENALTIES
WHERE PENALTIES.PLAYERNO =
PLAYERS.PLAYERNO)
FROM PLAYERS
Answer 9.20:
SELECT PLAYERNO,
REPEAT('*',
CAST((SELECT AVG(AMOUNT)
FROM PENALTIES
WHERE PENALTIES.PLAYERNO =
PLAYERS.PLAYERNO)/10
AS SIGNED INTEGER))
FROM PLAYERS
Answer 9.21:
SELECT SQRT(SUM(P) /
(SELECT COUNT(*) FROM PENALTIES WHERE
PLAYERNO = 44))
FROM (SELECT POWER(AMOUNT -
(SELECT AVG(AMOUNT)
FROM PENALTIES
WHERE PLAYERNO = 44),2) AS P
FROM PENALTIES
WHERE PLAYERNO = 44) AS POWERS
Example 10.1:
SELECT TOWN
FROM PLAYERS
GROUP BY TOWN
Example 10.2:
SELECT TOWN, COUNT(*)
FROM PLAYERS
GROUP BY TOWN
Example 10.3:
SELECT TEAMNO, COUNT(*), SUM(WON)
FROM MATCHES
GROUP BY TEAMNO
Example 10.4:
SELECT TEAMNO, COUNT(*)
FROM MATCHES
WHERE TEAMNO IN
(SELECT TEAMNO
FROM TEAMS INNER JOIN PLAYERS
ON TEAMS.PLAYERNO = PLAYERS.PLAYERNO
WHERE TOWN = 'Eltham')
GROUP BY TEAMNO
Example 10.5:
SELECT AMOUNT, COUNT(*), SUM(AMOUNT)
FROM PENALTIES
GROUP BY AMOUNT
Example 10.6:
SELECT TEAMNO, PLAYERNO
FROM MATCHES
GROUP BY TEAMNO, PLAYERNO
;
SELECT TEAMNO, PLAYERNO
FROM MATCHES
GROUP BY PLAYERNO, TEAMNO
;
SELECT TEAMNO, PLAYERNO, SUM(WON),
COUNT(*), MIN(LOST)
FROM MATCHES
GROUP BY TEAMNO, PLAYERNO
Example 10.7:
SELECT P.PLAYERNO, NAME, SUM(AMOUNT)
FROM PLAYERS AS P INNER JOIN PENALTIES AS PEN
ON P.PLAYERNO = PEN.PLAYERNO
GROUP BY P.PLAYERNO, NAME
Example 10.8:
SELECT YEAR(PAYMENT_DATE), COUNT(*)
FROM PENALTIES
GROUP BY YEAR(PAYMENT_DATE)
Example 10.9:
SELECT TRUNCATE(PLAYERNO/25,0), COUNT(*), MAX(PLAYERNO)
FROM PLAYERS
GROUP BY TRUNCATE(PLAYERNO/25,0)
Example 10.10:
SELECT LEAGUENO
FROM PLAYERS
GROUP BY LEAGUENO
Example 10.11:
SELECT TEAMNO, COUNT(*)
FROM MATCHES
GROUP BY TEAMNO
ORDER BY TEAMNO DESC
;
SELECT TEAMNO, COUNT(*)
FROM MATCHES
GROUP BY TEAMNO DESC
Example 10.12:
SELECT CAST(AMOUNT * 100 AS SIGNED INTEGER)
AS AMOUNT_IN_CENTS
FROM PENALTIES
GROUP BY AMOUNT
Example 10.13:
SELECT TEAMNO, GROUP_CONCAT(PLAYERNO)
FROM MATCHES
GROUP BY TEAMNO
Example 10.14:
SELECT TEAMNO, GROUP_CONCAT(TEAMNO)
FROM MATCHES
GROUP BY TEAMNO
Example 10.15:
SELECT GROUP_CONCAT(PAYMENTNO)
FROM PENALTIES
Example 10.16:
SET @@GROUP_CONCAT_MAX_LEN=7
;
SELECT TEAMNO, GROUP_CONCAT(TEAMNO)
FROM MATCHES
GROUP BY TEAMNO
Example 10.17:
SELECT AVG(TOTAL)
FROM (SELECT PLAYERNO, SUM(AMOUNT) AS TOTAL
FROM PENALTIES
GROUP BY PLAYERNO) AS TOTALS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PLAYERS
WHERE TOWN = 'Stratford' OR TOWN = 'Inglewood')
Example 10.18:
SELECT PLAYERS.PLAYERNO, NAME, NUMBER_OF_PENALTIES,
NUMBER_OF_TEAMS
FROM PLAYERS,
(SELECT PLAYERNO, COUNT(*) AS NUMBER_OF_PENALTIES
FROM PENALTIES
GROUP BY PLAYERNO) AS NUMBER_PENALTIES,
(SELECT PLAYERNO, COUNT(*) AS NUMBER_OF_TEAMS
FROM TEAMS
GROUP BY PLAYERNO) AS NUMBER_TEAMS
WHERE PLAYERS.PLAYERNO = NUMBER_PENALTIES.PLAYERNO
AND PLAYERS.PLAYERNO = NUMBER_TEAMS.PLAYERNO
;
SELECT PLAYERS.PLAYERNO, NAME,
(SELECT COUNT(*)
FROM PENALTIES
WHERE PLAYERS.PLAYERNO =
PENALTIES.PLAYERNO) AS NUMBER_OF_PENALTIES,
(SELECT COUNT(*)
FROM TEAMS
WHERE PLAYERS.PLAYERNO =
TEAMS.PLAYERNO) AS NUMBER_OF_TEAMS
FROM PLAYERS
Example 10.19:
SELECT DISTINCT M.PLAYERNO, NUMBERP
FROM MATCHES AS M LEFT OUTER JOIN
(SELECT PLAYERNO, COUNT(*) AS NUMBERP
FROM PENALTIES
GROUP BY PLAYERNO) AS NP
ON M.PLAYERNO = NP.PLAYERNO
Example 10.20:
SELECT GROUPS.PGROUP, SUM(P.AMOUNT)
FROM PENALTIES AS P,
(SELECT 1 AS PGROUP, '1980-01-01' AS START,
'1981-06-30' AS END
UNION
SELECT 2, '1981-07-01', '1982-12-31'
UNION
SELECT 3, '1983-01-01', '1984-12-31') AS GROUPS
WHERE P.PAYMENT_DATE BETWEEN START AND END
GROUP BY GROUPS.PGROUP
ORDER BY GROUPS.PGROUP
Example 10.21:
SELECT P1.PAYMENTNO, P1.AMOUNT, SUM(P2.AMOUNT)
FROM PENALTIES AS P1, PENALTIES AS P2
WHERE P1.PAYMENTNO >= P2. PAYMENTNO
GROUP BY P1. PAYMENTNO, P1.AMOUNT
ORDER BY P1. PAYMENTNO
Example 10.22:
SELECT P1.PAYMENTNO, P1.AMOUNT,
(P1.AMOUNT * 100) / SUM(P2.AMOUNT)
FROM PENALTIES AS P1, PENALTIES AS P2
GROUP BY P1.PAYMENTNO, P1.AMOUNT
ORDER BY P1.PAYMENTNO
Example 10.23:
SELECT PLAYERNO, SUM(AMOUNT)
FROM PENALTIES
GROUP BY PLAYERNO
UNION
SELECT NULL, SUM(AMOUNT)
FROM PENALTIES
;
SELECT PLAYERNO, SUM(AMOUNT)
FROM PENALTIES
GROUP BY PLAYERNO WITH ROLLUP
Example 10.24:
SELECT SEX, TOWN, COUNT(*)
FROM PLAYERS
GROUP BY SEX, TOWN WITH ROLLUP
Answer 10.1:
SELECT JOINED
FROM PLAYERS
GROUP BY JOINED
Answer 10.2:
SELECT JOINED, COUNT(*)
FROM PLAYERS
GROUP BY JOINED
Answer 10.3:
SELECT PLAYERNO, AVG(AMOUNT), COUNT(*)
FROM PENALTIES
GROUP BY PLAYERNO
Answer 10.4:
SELECT TEAMNO, COUNT(*), SUM(WON)
FROM MATCHES
WHERE TEAMNO IN
(SELECT TEAMNO
FROM TEAMS
WHERE DIVISION = 'first')
GROUP BY TEAMNO
Answer 10.5:
SELECT WON, LOST, COUNT(*)
FROM MATCHES
WHERE WON > LOST
GROUP BY WON, LOST
ORDER BY WON, LOST
Answer 10.6:
SELECT P.TOWN, T.DIVISION, SUM(WON)
FROM (MATCHES AS M INNER JOIN PLAYERS AS P
ON M.PLAYERNO = P.PLAYERNO)
INNER JOIN TEAMS AS T
ON M.TEAMNO = T.TEAMNO
GROUP BY P.TOWN, T.DIVISION
ORDER BY P.TOWN
Answer 10.7:
SELECT NAME, INITIALS, COUNT(*)
FROM PLAYERS AS P INNER JOIN PENALTIES AS PEN
ON P.PLAYERNO = PEN.PLAYERNO
WHERE P.TOWN = 'Inglewood'
GROUP BY P.PLAYERNO, NAME, INITIALS
Answer 10.8:
SELECT T.TEAMNO, DIVISION, SUM(WON)
FROM TEAMS AS T, MATCHES AS M
WHERE T.TEAMNO = M.TEAMNO
GROUP BY T.TEAMNO, DIVISION
Answer 10.9:
SELECT LENGTH(RTRIM(NAME)), COUNT(*)
FROM PLAYERS
GROUP BY LENGTH(RTRIM(NAME))
Answer 10.10:
SELECT ABS(WON - LOST), COUNT(*)
FROM MATCHES
GROUP BY ABS(WON – LOST)
Answer 10.11:
SELECT YEAR(BEGIN_DATE), MONTH(BEGIN_DATE), COUNT(*)
FROM COMMITTEE_MEMBERS
GROUP BY YEAR(BEGIN_DATE), MONTH(BEGIN_DATE)
ORDER BY YEAR(BEGIN_DATE), MONTH(BEGIN_DATE)
Answer 10.14:
SELECT AVG(NUMBERS)
FROM (SELECT COUNT(*) AS NUMBERS
FROM PLAYERS
GROUP BY TOWN) AS TOWNS
Answer 10.15:
SELECT TEAMS.TEAMNO, DIVISION, NUMBER_PLAYERS
FROM TEAMS LEFT OUTER JOIN
(SELECT TEAMNO, COUNT(*) AS NUMBER_PLAYERS
FROM MATCHES
GROUP BY TEAMNO) AS M
ON (TEAMS.TEAMNO = M.TEAMNO)
Answer 10.16:
SELECT PLAYERS.PLAYERNO, NAME, SUM_AMOUNT,
NUMBER_TEAMS
FROM (PLAYERS LEFT OUTER JOIN
(SELECT PLAYERNO, SUM(AMOUNT) AS SUM_AMOUNT
FROM PENALTIES
GROUP BY PLAYERNO) AS TOTALS
ON (PLAYERS.PLAYERNO = TOTALS.PLAYERNO))
LEFT OUTER JOIN
(SELECT PLAYERNO, COUNT(*) AS NUMBER_TEAMS
FROM TEAMS
WHERE DIVISION = 'first'
GROUP BY PLAYERNO) AS NUMBERS
ON (PLAYERS.PLAYERNO = NUMBERS.PLAYERNO)
Answer 10.17:
SELECT TEAMNO, COUNT(DISTINCT PLAYERNO)
FROM MATCHES
WHERE TEAMNO IN
(SELECT TEAMNO
FROM PLAYERS AS P INNER JOIN TEAMS AS T
ON P.PLAYERNO = T.PLAYERNO
AND TOWN = 'Stratford')
AND WON > LOST
GROUP BY TEAMNO
Answer 10.18:
SELECT PLAYERNO, NAME, JOINED - AVERAGE
FROM PLAYERS,
(SELECT AVG(JOINED) AS AVERAGE
FROM PLAYERS) AS T
Answer 10.19:
SELECT PLAYERNO, NAME, JOINED – AVERAGE
FROM PLAYERS,
(SELECT TOWN, AVG(JOINED) AS AVERAGE
FROM PLAYERS
GROUP BY TOWN) AS TOWNS
WHERE PLAYERS.TOWN = TOWNS.TOWN
Answer 10.20:
SELECT TEAMNO, COUNT(*)
FROM MATCHES
GROUP BY TEAMNO WITH ROLLUP
Answer 10.21:
SELECT P.NAME, T.DIVISION, SUM(WON)
FROM (MATCHES AS M INNER JOIN PLAYERS AS P
ON M.PLAYERNO = P.PLAYERNO)
INNER JOIN TEAMS AS T
ON M.TEAMNO = T.TEAMNO
GROUP BY P.NAME, T.DIVISION WITH ROLLUP
Example 11.1:
SELECT PLAYERNO
FROM PENALTIES
GROUP BY PLAYERNO
HAVING COUNT(*) > 1
Example 11.2:
SELECT PLAYERNO
FROM PENALTIES
GROUP BY PLAYERNO
HAVING MAX(YEAR(PAYMENT_DATE)) = 1984
Example 11.3:
SELECT PLAYERNO, SUM(AMOUNT)
FROM PENALTIES
GROUP BY PLAYERNO
HAVING SUM(AMOUNT) > 150
Example 11.4:
SELECT PLAYERNO, SUM(AMOUNT)
FROM PENALTIES
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM TEAMS)
GROUP BY PLAYERNO
HAVING SUM(AMOUNT) > 80
Example 11.5:
SELECT PLAYERNO, SUM(AMOUNT)
FROM PENALTIES
GROUP BY PLAYERNO
HAVING SUM(AMOUNT) >= ALL
(SELECT SUM(AMOUNT)
FROM PENALTIES
GROUP BY PLAYERNO)
Example 11.6:
SELECT SUM(AMOUNT)
FROM PENALTIES
HAVING SUM(AMOUNT) >= 250
Example 11.7:
SELECT GROUP_CONCAT(PLAYERNO) AS LIST
FROM MATCHES
HAVING TRUE
Answer 11.1:
SELECT TOWN
FROM PLAYERS
GROUP BY TOWN
HAVING COUNT(*) > 4
Answer 11.2:
SELECT PLAYERNO
FROM PENALTIES
GROUP BY PLAYERNO
HAVING SUM(AMOUNT) > 150
Answer 11.3:
SELECT NAME, INITIALS, COUNT(*)
FROM PLAYERS INNER JOIN PENALTIES
ON PLAYERS.PLAYERNO = PENALTIES.PLAYERNO
GROUP BY PLAYERS.PLAYERNO, NAME, INITIALS
HAVING COUNT(*) > 1
Answer 11.4:
SELECT TEAMNO, COUNT(*)
FROM MATCHES
GROUP BY TEAMNO
HAVING COUNT(*) >= ALL
(SELECT COUNT(*)
FROM MATCHES
GROUP BY TEAMNO)
Answer 11.5:
SELECT TEAMNO, DIVISION
FROM TEAMS
WHERE TEAMNO IN
(SELECT TEAMNO
FROM MATCHES
GROUP BY TEAMNO
HAVING COUNT(DISTINCT PLAYERNO) > 4)
Answer 11.6:
SELECT NAME, INITIALS
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PENALTIES
WHERE AMOUNT > 40
GROUP BY PLAYERNO
HAVING COUNT(*) >= 2)
Answer 11.7:
SELECT NAME, INITIALS
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PENALTIES
GROUP BY PLAYERNO
HAVING SUM(AMOUNT) >= ALL
(SELECT SUM(AMOUNT)
FROM PENALTIES
GROUP BY PLAYERNO))
Answer 11.8:
SELECT PLAYERNO
FROM PENALTIES
WHERE PLAYERNO <> 104
GROUP BY PLAYERNO
HAVING SUM(AMOUNT) =
(SELECT SUM(AMOUNT) * 2
FROM PENALTIES
WHERE PLAYERNO = 104)
Answer 11.9:
SELECT PLAYERNO
FROM PENALTIES
WHERE PLAYERNO <> 6
GROUP BY PLAYERNO
HAVING COUNT(*) =
(SELECT COUNT(*)
FROM PENALTIES
WHERE PLAYERNO = 6)
Answer 11.10:
SELECT P.PLAYERNO, P.NAME
FROM PLAYERS AS P, MATCHES AS M1
WHERE P.PLAYERNO = M1.PLAYERNO
GROUP BY P.PLAYERNO, P.NAME
HAVING SUM(WON) >
(SELECT SUM(LOST)
FROM MATCHES AS M2
WHERE M2.PLAYERNO = P.PLAYERNO
GROUP BY M2.PLAYERNO)
Example 12.1:
SELECT PAYMENTNO, PLAYERNO
FROM PENALTIES
ORDER BY PLAYERNO
Example 12.2:
SELECT PLAYERNO, AMOUNT
FROM PENALTIES
ORDER BY PLAYERNO, AMOUNT
Example 12.3:
SELECT AMOUNT
FROM PENALTIES
ORDER BY PLAYERNO, AMOUNT
Example 12.4:
SELECT NAME, INITIALS, PLAYERNO
FROM PLAYERS
ORDER BY SUBSTR(NAME, 1, 1)
Example 12.5:
SELECT PLAYERNO, AMOUNT
FROM PENALTIES
ORDER BY ABS(AMOUNT - (SELECT AVG(AMOUNT) FROM PENALTIES))
Example 12.6:
SELECT PLAYERNO, AMOUNT
FROM PENALTIES AS P1
ORDER BY (SELECT AVG(AMOUNT)
FROM PENALTIES AS P2
WHERE P1.PLAYERNO = P2.PLAYERNO)
Example 12.7:
SELECT PLAYERNO, SUM(AMOUNT)
FROM PENALTIES
GROUP BY PLAYERNO
ORDER BY 2
Example 12.8:
SELECT PLAYERNO, NAME,
(SELECT SUM(AMOUNT)
FROM PENALTIES AS PEN
WHERE PEN.PLAYERNO=P.PLAYERNO)
FROM PLAYERS AS P
ORDER BY 3
;
SELECT PLAYERNO, NAME,
(SELECT SUM(AMOUNT)
FROM PENALTIES AS PEN
WHERE PEN.PLAYERNO=P.PLAYERNO) AS TOTAL
FROM PLAYERS AS P
ORDER BY TOTAL
Example 12.9:
SELECT PLAYERNO, AMOUNT
FROM PENALTIES
ORDER BY PLAYERNO DESC, AMOUNT ASC
Example 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
Example 12.11:
SELECT DISTINCT LEAGUENO
FROM PLAYERS
ORDER BY LEAGUENO DESC
Answer 12.3:
SELECT PLAYERNO, TEAMNO, WON - LOST
FROM MATCHES
ORDER BY 3 ASC
Example 13.1:
SELECT MAX(PLAYERNO)
FROM PLAYERS
;
SELECT PLAYERNO, NAME
FROM PLAYERS AS P1
WHERE 4 >
(SELECT COUNT(*)
FROM PLAYERS AS P2
WHERE P1.PLAYERNO < P2.PLAYERNO)
ORDER BY PLAYERNO DESC
;
SELECT PLAYERNO, NAME
FROM PLAYERS
ORDER BY PLAYERNO DESC
LIMIT 4
Example 13.2:
SELECT LEAGUENO, PLAYERNO, NAME
FROM PLAYERS
ORDER BY LEAGUENO ASC
LIMIT 5
Example 13.3:
SELECT PLAYERNO, COUNT(*) AS NUMBER
FROM MATCHES
WHERE WON > LOST
GROUP BY PLAYERNO
ORDER BY NUMBER DESC
LIMIT 3
Example 13.4:
SELECT PLAYERNO, COUNT(*) AS NUMBER
FROM MATCHES
WHERE WON > LOST
GROUP BY PLAYERNO
ORDER BY NUMBER DESC, PLAYERNO DESC
LIMIT 3
Example 13.5:
SELECT *
FROM (SELECT PLAYERNO, COUNT(*) AS NUMBER
FROM MATCHES
WHERE WON > LOST
GROUP BY PLAYERNO
ORDER BY NUMBER DESC, PLAYERNO DESC
LIMIT 3) AS T
ORDER BY 1
Example 13.6:
SELECT AVG(AMOUNT)
FROM (SELECT AMOUNT
FROM PENALTIES
ORDER BY AMOUNT
LIMIT 4) AS T
Example 13.7:
SELECT MIN(AMOUNT)
FROM (SELECT AMOUNT
FROM PENALTIES
ORDER BY AMOUNT DESC
LIMIT 3) AS T
Example 13.8:
SELECT DISTINCT AMOUNT
FROM PENALTIES
ORDER BY AMOUNT DESC
LIMIT 3
Example 13.9:
SELECT PLAYERNO
FROM (SELECT PLAYERNO
FROM PLAYERS
WHERE LEAGUENO IS NOT NULL
ORDER BY LEAGUENO DESC
LIMIT 6) AS T
ORDER BY PLAYERNO
LIMIT 3
Example 13.10:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM (SELECT PLAYERNO, SUM(AMOUNT) AS TOTAL
FROM PENALTIES
GROUP BY PLAYERNO
ORDER BY TOTAL DESC
LIMIT 3) AS T)
Example 13.11:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PENALTIES)
AND PLAYERNO NOT IN
(SELECT PLAYERNO
FROM PENALTIES
ORDER BY AMOUNT DESC
LIMIT 2)
AND PLAYERNO NOT IN
(SELECT PLAYERNO
FROM PENALTIES
ORDER BY AMOUNT ASC
LIMIT 2)
;
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PENALTIES
WHERE PLAYERNO NOT IN
(SELECT PLAYERNO
FROM PENALTIES
ORDER BY AMOUNT DESC
LIMIT 2)
AND PLAYERNO NOT IN
(SELECT PLAYERNO
FROM PENALTIES
ORDER BY AMOUNT ASC
LIMIT 2))
Example 13.12:
SELECT PLAYERNO, NAME
FROM PLAYERS
ORDER BY PLAYERNO ASC
LIMIT 5 OFFSET 3
Example 13.13:
SELECT SQL_CALC_FOUND_ROWS PAYMENTNO
FROM PENALTIES
LIMIT 5
;
SELECT FOUND_ROWS()
Answer 13.1:
SELECT PAYMENTNO, AMOUNT, PAYMENT_DATE
FROM PENALTIES
ORDER BY AMOUNT DESC, PAYMENT_DATE DESC
LIMIT 4
Answer 13.2:
(SELECT MATCHNO
FROM MATCHES
ORDER BY MATCHNO ASC
LIMIT 2)
UNION
(SELECT MATCHNO
FROM MATCHES
ORDER BY MATCHNO DESC
LIMIT 2)
Answer 13.3:
SELECT PLAYERNO, NAME
FROM (SELECT PLAYERNO, NAME
FROM PLAYERS
ORDER BY PLAYERNO ASC
LIMIT 10) AS S10
ORDER BY NAME DESC
LIMIT 5
Answer 13.4:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM (SELECT PLAYERNO, COUNT(*) AS NUMBER
FROM MATCHES
WHERE WON > LOST
GROUP BY PLAYERNO) AS WINNERS
ORDER BY NUMBER DESC, PLAYERNO ASC
LIMIT 2)
Answer 13.5:
SELECT PLAYERNO, NAME
FROM PLAYERS
WHERE PLAYERNO IN
(SELECT PENALTIES.PLAYERNO
FROM PENALTIES INNER JOIN PLAYERS
ON PENALTIES.PLAYERNO = PLAYERS.PLAYERNO
ORDER BY AMOUNT DESC, NAME ASC
LIMIT 4)
Answer 13.6:
SELECT PAYMENTNO, AMOUNT
FROM PENALTIES
ORDER BY AMOUNT DESC
LIMIT 1 OFFSET 2
Example 14.1:
SELECT PLAYERNO, TOWN
FROM PLAYERS
WHERE TOWN = 'Inglewood'
UNION
SELECT PLAYERNO, TOWN
FROM PLAYERS
WHERE TOWN = 'Plymouth'
;
SELECT PLAYERNO, TOWN
FROM PLAYERS
WHERE TOWN = 'Inglewood'
OR TOWN = 'Plymouth'
Example 14.2:
SELECT BIRTH_DATE AS DATES
FROM PLAYERS
UNION
SELECT PAYMENT_DATE
FROM PENALTIES
Example 14.3:
SELECT PLAYERNO
FROM PENALTIES
UNION
SELECT PLAYERNO
FROM TEAMS
Example 14.4:
SELECT PLAYERNO
FROM PENALTIES
UNION
SELECT PLAYERNO
FROM TEAMS
UNION
SELECT PLAYERNO
FROM PLAYERS
WHERE TOWN = 'Stratford'
Example 14.5:
SELECT CAST(TEAMNO AS CHAR(4)) AS TEAMNO,
CAST(PLAYERNO AS CHAR(4)) AS PLAYERNO,
SUM(WON + LOST) AS TOTAL
FROM MATCHES
GROUP BY TEAMNO, PLAYERNO
UNION
SELECT CAST(TEAMNO AS CHAR(4)),
'subtotal',
SUM(WON + LOST)
FROM MATCHES
GROUP BY TEAMNO
UNION
SELECT 'total', 'total', SUM(WON + LOST)
FROM MATCHES
ORDER BY 1, 2
Example 14.6:
SELECT PLAYERNO
FROM PENALTIES
UNION ALL
SELECT PLAYERNO
FROM TEAMS
Answer 14.1:
SELECT PLAYERNO
FROM COMMITTEE_MEMBERS
UNION
SELECT PLAYERNO
FROM PENALTIES
GROUP BY PLAYERNO
HAVING COUNT(*) >= 2
Answer 14.2:
SELECT MAX(ADATE)
FROM (SELECT MAX(BIRTH_DATE) AS ADATE
FROM PLAYERS
UNION
SELECT MAX(PAYMENT_DATE) AS ADATE
FROM PENALTIES) AS TWODATES
Answer 14.5:
SELECT SUM(NUMBER)
FROM (SELECT COUNT(*) AS NUMBER
FROM PLAYERS
UNION ALL
SELECT COUNT(*) AS NUMBER
FROM TEAMS) AS NUMBERS
Answer 14.6:
SELECT POWER(DIGIT,2)
FROM (SELECT 0 AS DIGIT 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 DIGITS1
UNION ALL
SELECT POWER(DIGIT,3)
FROM (SELECT 0 AS DIGIT 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 DIGITS2
ORDER BY 1
Example 15.1:
SET @PI = 3.141592654
Example 15.2:
SELECT @PI
Example 15.3:
SELECT NAME, TOWN, POSTCODE
FROM PLAYERS
WHERE PLAYERNO < @PI
Example 15.4:
SET @ABC = 5, @DEF = 'Inglewood',
@GHI = DATE('2004-01-01')
Example 15.5:
SET @PI = CAST(22 AS BINARY)/7
Example 15.6:
SET @ANR = (SELECT PLAYERNO
FROM TEAMS
WHERE TEAMNO = 1)
Example 15.7:
SELECT @PLAYERNO := 7
Example 15.8:
SELECT @NAME := 'Johnson', @TOWN := 'Inglewood',
@POSTCODE := '1234AB'
Example 15.9:
SELECT @NAME := NAME, @TOWN := TOWN,
@POSTCODE := POSTCODE
FROM PLAYERS
WHERE PLAYERNO = 2
Example 15.10:
SELECT @PENALTIESTOTAL := SUM(AMOUNT),
@NUMBERPENALTIES := COUNT(*)
FROM PENALTIES
Example 15.11:
SELECT @PLAYERNO := PLAYERNO
FROM PLAYERS
ORDER BY PLAYERNO DESC
;
SELECT @PLAYERNO
;
SELECT @PNR7 := 7
FROM PLAYERS
WHERE PLAYERNO < @PNR7
Example 15.12:
SET @CNO = (SELECT PLAYERNO
FROM TEAMS
WHERE TEAMNO = 1)
;
SELECT NAME
FROM PLAYERS
WHERE PLAYERNO = @CNO
Example 15.13:
SET @VAR = (((3/7) * 100)/124)+3
;
SELECT *
FROM PENALTIES
WHERE PAYMENTNO < @VAR
AND PLAYERNO > @VAR
Example 15.14:
CREATE TABLE VARIABLES
(VARNAME CHAR(30) NOT NULL PRIMARY KEY,
VARVALUE CHAR(30) NOT NULL)
;
SET @VAR1 = 100, @VAR2 = 'John'
;
INSERT INTO VARIABLES VALUES ('VAR1', @VAR1)
;
INSERT INTO VARIABLES VALUES ('VAR2', @VAR2)
;
SELECT @VAR1 := VARVALUE
FROM VARIABLES
WHERE VARNAME = 'VAR1'
;
SELECT @VAR2 := VARVALUE
FROM VARIABLES
WHERE VARNAME = 'VAR2'
;
SELECT @VAR1, @VAR2
Example 15.15:
DO CURRENT_DATE + INTERVAL 2 YEAR
Answer 15.1:
SET @TODAY = CURRENT_DATE
;
SELECT @TODAY := CURRENT_DATE
Answer 15.2:
SELECT *
FROM PENALTIES
WHERE PENALTIES_DATE < @TODAY - INTERVAL 5 YEAR
Answer 15.3:
SELECT @VAR := SUM(AMOUNT)
FROM PENALTIES
Example 16.1:
HANDLER PENALTIES OPEN
;
HANDLER PENALTIES READ FIRST
;
HANDLER PENALTIES READ NEXT
;
HANDLER PENALTIES CLOSE
Example 16.2:
CREATE INDEX PENALTIES_AMOUNT ON PENALTIES (AMOUNT)
Example 16.3:
HANDLER PENALTIES OPEN AS P
;
HANDLER P READ PENALTIES_AMOUNT FIRST
;
HANDLER P READ PENALTIES_AMOUNT NEXT
Example 16.4:
HANDLER PENALTIES OPEN AS P
;
HANDLER P READ PENALTIES_AMOUNT FIRST WHERE PLAYERNO > 100
;
HANDLER P READ PENALTIES_AMOUNT NEXT WHERE PLAYERNO > 100
Example 16.5:
HANDLER PENALTIES OPEN AS P
;
HANDLER P READ PENALTIES_AMOUNT FIRST LIMIT 3
Example 16.6:
HANDLER PENALTIES OPEN AS P
;
HANDLER P READ PENALTIES_AMOUNT = (30.00)
;
HANDLER P READ PENALTIES_AMOUNT NEXT
Example 16.7:
CREATE INDEX AMOUNT_PLAYERNO ON PENALTIES (AMOUNT, PLAYERNO)
Example 16.8:
HANDLER PENALTIES OPEN AS P
;
HANDLER P READ AMOUNT_PLAYERNO > (30.00, 44) LIMIT 100
Answer 16.1:
HANDLER MATCHES OPEN AS M1
;
HANDLER M1 READ FIRST
;
HANDLER M1 READ NEXT
;
HANDLER M1 CLOSE
Answer 16.2:
HANDLER MATCHES OPEN AS M2
;
HANDLER M2 READ `PRIMARY` FIRST
;
HANDLER M2 READ `PRIMARY` NEXT
;
HANDLER M2 CLOSE
Answer 16.3:
HANDLER MATCHES OPEN AS M3
;
HANDLER M3 READ `PRIMARY` LAST
WHERE PLAYERNO IN (6, 104, 112)
;
HANDLER M3 READ `PRIMARY` PREV
WHERE PLAYERNO IN (6, 104, 112)
;
HANDLER M3 CLOSE
Example 17.1:
INSERT INTO TEAMS (TEAMNO, PLAYERNO, DIVISION)
VALUES (3, 100, 'third')
;
INSERT INTO TEAMS
VALUES (3, 100, 'third')
;
INSERT INTO TEAMS (PLAYERNO, DIVISION, TEAMNO)
VALUES (100, 'third', 3)
;
INSERT INTO TEAMS
(TEAMNO, DIVISION)
VALUES (3, 'third')
Example 17.2:
INSERT INTO PLAYERS
(PLAYERNO, NAME, INITIALS, SEX,
JOINED, STREET, TOWN)
VALUES (611, 'Jones', 'GG', 'M', 1977, 'Green Way', 'Stratford')
;
INSERT INTO PLAYERS
(PLAYERNO, NAME, INITIALS, BIRTH_DATE,
SEX, JOINED, STREET, HOUSENO, POSTCODE,
TOWN, PHONENO, LEAGUENO)
VALUES (611, 'Jones', 'GG', NULL, 'M', 1977,
'Green Way', NULL, NULL, 'Stratford', NULL, NULL)
Example 17.3:
INSERT INTO TEAMS (TEAMNO, PLAYERNO, DIVISION)
VALUES (6, 100, 'third'),
(7, 27, 'fourth'),
(8, 39, 'fourth'),
(9, 112, 'sixth')
Example 17.4:
CREATE TABLE TOTALS
(NUMBERPLAYERS INTEGER NOT NULL,
SUMPENALTIES DECIMAL(9,2) NOT NULL)
;
INSERT INTO TOTALS (NUMBERPLAYERS, SUMPENALTIES)
VALUES ((SELECT COUNT(*) FROM PLAYERS),
(SELECT SUM(AMOUNT) FROM PENALTIES))
;
INSERT INTO TEAMS (TEAMNO, PLAYERNO, DIVISION)
VALUES (3, 100, 'third')
;
INSERT INTO TEAMS SET
TEAMNO = 3, PLAYERNO = 100, DIVISION = 'third'
Example 17.5:
INSERT IGNORE INTO TEAMS VALUES (1, 39, 'second')
Example 17.6:
INSERT INTO TEAMS VALUES (1, 39, 'second')
ON DUPLICATE KEY UPDATE PLAYERNO = 39, DIVISION='second'
Example 17.7:
CREATE TABLE RECR_PLAYERS
(PLAYERNO SMALLINT NOT NULL,
NAME CHAR(15) NOT NULL,
TOWN CHAR(10) NOT NULL,
PHONENO CHAR(13),
PRIMARY KEY (PLAYERNO))
;
INSERT INTO RECR_PLAYERS
(PLAYERNO, NAME, TOWN, PHONENO)
SELECT PLAYERNO, NAME, TOWN, PHONENO
FROM PLAYERS
WHERE LEAGUENO IS NULL
;
INSERT INTO RECR_PLAYERS
SELECT PLAYERNO, NAME, TOWN, PHONENO
FROM PLAYERS
WHERE LEAGUENO IS NULL
;
INSERT INTO RECR_PLAYERS
(TOWN, PHONENO, NAME, PLAYERNO)
SELECT TOWN, PHONENO, NAME, PLAYERNO
FROM PLAYERS
WHERE LEAGUENO IS NULL
Example 17.8:
INSERT INTO RECR_PLAYERS
(PLAYERNO, NAME, TOWN, PHONENO)
SELECT PLAYERNO + 1000, NAME, TOWN, PHONENO
FROM RECR_PLAYERS
Example 17.9:
INSERT INTO PENALTIES
SELECT PAYMENTNO + 100, PLAYERNO, PAYMENT_DATE, AMOUNT
FROM PENALTIES
WHERE AMOUNT >
(SELECT AVG(AMOUNT)
FROM PENALTIES)
Example 17.10:
UPDATE PLAYERS
SET LEAGUENO = '2000'
WHERE PLAYERNO = 95
;
UPDATE PLAYERS AS P
SET P.LEAGUENO = '2000'
WHERE P.PLAYERNO = 95
Example 17.11:
UPDATE PENALTIES
SET AMOUNT = AMOUNT * 1.05
Example 17.12:
UPDATE MATCHES
SET WON = 0
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM PLAYERS
WHERE TOWN = 'Stratford')
Example 17.13:
UPDATE PLAYERS
SET STREET = 'Palmer Street',
HOUSENO = '83',
TOWN = 'Inglewood',
POSTCODE = '1234UU',
PHONENO = NULL
WHERE NAME = 'Parmenter'
;
UPDATE PLAYERS
SET STREET = TOWN,
TOWN = STREET
WHERE PLAYERNO = 44
;
UPDATE PLAYERS
SET STREET = TOWN
WHERE PLAYERNO = 44
;
UPDATE PLAYERS
SET TOWN = STREET
WHERE PLAYERNO = 44
Example 17.14:
CREATE TABLE PLAYERS_DATA
(PLAYERNO INTEGER NOT NULL PRIMARY KEY,
NUMBER_MAT INTEGER,
SUM_PENALTIES DECIMAL(7,2))
;
INSERT INTO PLAYERS_DATA (PLAYERNO)
SELECT PLAYERNO FROM PLAYERS
;
UPDATE PLAYERS_DATA AS PD
SET NUMBER_MAT = (SELECT COUNT(*)
FROM MATCHES AS M
WHERE M.PLAYERNO = PD.PLAYERNO),
SUM_PENALTIES = (SELECT SUM(AMOUNT)
FROM PENALTIES AS PEN
WHERE PEN.PLAYERNO = PD.PLAYERNO)
Example 17.15:
UPDATE PENALTIES
SET AMOUNT = AMOUNT – (SELECT AVG(AMOUNT)
FROM PENALTIES)
;
SET @AVERAGE_AMOUNT = (SELECT AVG(AMOUNT) FROM PENALTIES)
;
UPDATE PENALTIES
SET AMOUNT = AMOUNT – @AVERAGE_AMOUNT
Example 17.16:
UPDATE PENALTIES
SET AMOUNT = AMOUNT * 1.05
ORDER BY AMOUNT DESC
Example 17.17:
UPDATE PENALTIES
SET PAYMENTNO = PAYMENTNO + 1
ORDER BY PAYMENTNO DESC
Example 17.18:
UPDATE PENALTIES
SET AMOUNT = AMOUNT * 1.05
ORDER BY AMOUNT DESC, PLAYERNO ASC
LIMIT 4
Example 17.19:
UPDATE IGNORE MATCHES
SET MATCHNO = MATCHNO + 1,
WON = 2,
LOST = 3
WHERE MATCHNO = 4
Example 17.20:
UPDATE MATCHES AS M, TEAMS AS T
SET WON = 0
WHERE T.TEAMNO = M.TEAMNO
AND T.DIVISION = 'first'
;
SELECT ...
FROM MATCHES AS M, TEAMS AS T
WHERE T.TEAMNO = M.TEAMNO
AND T.DIVISION = 'first'
;
UPDATE MATCHES
SET WON = 0
WHERE TEAMNO IN
(SELECT TEAMNO
FROM TEAMS
WHERE DIVISION = 'first')
Example 17.21:
UPDATE MATCHES AS M, TEAMS AS T
SET M.WON = 0,
T.PLAYERNO = 112
WHERE T.TEAMNO = M.TEAMNO
AND T.DIVISION = 'first'
Example 17.22:
UPDATE PLAYERS AS P,
TEAMS AS T,
MATCHES AS M,
PENALTIES AS PEN,
COMMITTEE_MEMBERS AS C
SET P.PLAYERNO = 1,
T.PLAYERNO = 1,
M.PLAYERNO = 1,
PEN.PLAYERNO = 1,
C.PLAYERNO = 1
WHERE P.PLAYERNO = T.PLAYERNO
AND T.PLAYERNO = M.PLAYERNO
AND M.PLAYERNO = PEN.PLAYERNO
AND PEN.PLAYERNO = C.PLAYERNO
AND C.PLAYERNO = 2
Example 17.23:
REPLACE INTO PLAYERS
(PLAYERNO, NAME, INITIALS, SEX,
JOINED, STREET, TOWN)
VALUES (611, 'Jones', 'GG', 'M', 1977, 'Green Way', 'Stratford')
Example 17.24:
REPLACE INTO TEAMS (TEAMNO, PLAYERNO, DIVISION)
VALUES (6, 100, 'third'),
(7, 27, 'fourth'),
(8, 39, 'fourth'),
(9, 112, 'sixth')
Example 17.25:
REPLACE INTO RECR_PLAYERS
(PLAYERNO, NAME, TOWN, PHONENO)
SELECT PLAYERNO + 1000, NAME, TOWN, PHONENO
FROM RECR_PLAYERS
Example 17.26:
DELETE
FROM PENALTIES
WHERE PLAYERNO = 44
;
DELETE
FROM PENALTIES AS PEN
WHERE PEN.PLAYERNO = 44
Example 17.27:
DELETE
FROM PLAYERS
WHERE JOINED >
(SELECT AVG(JOINED)
FROM PLAYERS
WHERE TOWN = 'Stratford')
Example 17.28:
DELETE
FROM PENALTIES
ORDER BY AMOUNT DESC, PLAYERNO ASC
LIMIT 4
Example 17.29:
DELETE IGNORE
FROM PLAYERS
Example 17.30:
DELETE MATCHES
FROM MATCHES, PLAYERS
WHERE MATCHES.PLAYERNO = PLAYERS.PLAYERNO
AND PLAYERS.TOWN = 'Inglewood'
;
SELECT ...
FROM MATCHES, PLAYERS
WHERE MATCHES.PLAYERNO = PLAYERS.PLAYERNO
AND PLAYERS.TOWN = 'Inglewood'
;
DELETE MATCHES
FROM MATCHES AS M, PLAYERS
WHERE M.PLAYERNO = PLAYERS.PLAYERNO
AND PLAYERS.TOWN = 'Inglewood'
Example 17.31:
DELETE TEAMS, MATCHES
FROM TEAMS, MATCHES
WHERE TEAMS.TEAMNO = MATCHES.TEAMNO
AND TEAMS.TEAMNO = 1
;
DELETE
FROM TEAMS, MATCHES
USING TEAMS, MATCHES
WHERE TEAMS.TEAMNO = MATCHES.TEAMNO
AND TEAMS.TEAMNO = 1
Example 17.32:
TRUNCATE TABLE COMMITTEE_MEMBERS
Answer 17.1:
INSERT INTO PENALTIES
VALUES (15, 27, '1985-11-08', 75)
Answer 17.2:
INSERT INTO PENALTIES
SELECT PAYMENTNO + 1000, PLAYERNO, PAYMENT_DATE, AMOUNT
FROM PENALTIES
WHERE AMOUNT >
(SELECT AVG(AMOUNT)
FROM PENALTIES)
UNION
SELECT PAYMENTNO + 2000, PLAYERNO, PAYMENT_DATE, AMOUNT
FROM PENALTIES
WHERE PLAYERNO = 27
Answer 17.3:
UPDATE PLAYERS
SET SEX = 'W'
WHERE SEX = 'F'
Answer 17.4:
UPDATE PLAYERS
SET SEX = 'X'
WHERE SEX = 'F'
;
UPDATE PLAYERS
SET SEX = 'F'
WHERE SEX = 'M'
;
UPDATE PLAYERS
SET SEX = 'M'
WHERE SEX = 'X'
;
UPDATE PLAYERS
SET SEX = CASE SEX
WHEN 'F' THEN 'M'
ELSE 'F' END
Answer 17.5:
UPDATE PENALTIES
SET AMOUNT = AMOUNT * 1.2
WHERE AMOUNT >
(SELECT AVG(AMOUNT)
FROM PENALTIES)
Answer 17.6:
UPDATE TEAMS AS T, PLAYERS AS P
SET DIVISION = 'third'
WHERE T.PLAYERNO = P.PLAYERNO
AND P.TOWN = 'Stratford'
Answer 17.7:
UPDATE PENALTIES, TEAMS
SET AMOUNT = 50,
DIVISION = 'fourth'
Answer 17.8:
DELETE
FROM PENALTIES
WHERE PLAYERNO = 44
AND YEAR(PAYMENT_DATE) = 1980
Answer 17.9:
DELETE
FROM PENALTIES
WHERE PLAYERNO IN
(SELECT PLAYERNO
FROM MATCHES
WHERE TEAMNO IN
(SELECT TEAMNO
FROM TEAMS
WHERE DIVISION = 'second'))
Answer 17.10:
DELETE
FROM PLAYERS
WHERE TOWN =
(SELECT TOWN
FROM PLAYERS
WHERE PLAYERNO = 44)
AND PLAYERNO <> 44
Answer 17.11:
DELETE PEN, M
FROM PENALTIES AS PEN, MATCHES AS M
WHERE PEN.PLAYERNO = M.PLAYERNO
AND PEN.PLAYERNO = 27
Answer 17.12:
DELETE PEN, M
FROM PENALTIES AS PEN, MATCHES AS M
WHERE PEN.PLAYERNO = 27
AND M.PLAYERNO = 27
Example 18.1:
SELECT *
FROM TEAMS
INTO OUTFILE 'C:/TEAMS.TXT'
Example 18.2:
SELECT *
FROM TEAMS
INTO OUTFILE 'C:/TEAMS.TXT'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '?'
Example 18.3:
SELECT *
FROM TEAMS
INTO OUTFILE 'C:/TEAMS.TXT'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '?'
Example 18.4:
SELECT *
FROM TEAMS
INTO OUTFILE 'C:/TEAMS.TXT'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '?'
Example 18.5:
SELECT *, NULL
FROM TEAMS
INTO OUTFILE 'C:/TEAMS.TXT'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '?'
Example 18.6:
SELECT *, NULL
FROM TEAMS
INTO OUTFILE 'C:/TEAMS.TXT'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '*'
LINES TERMINATED BY '?'
Example 18.7:
SELECT *
FROM TEAMS
INTO OUTFILE 'C:/TEAMS.TXT'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Example 18.8:
SELECT *
FROM TEAMS
INTO DUMPFILE 'C:/TEAMS.DUMP'
Example 18.9:
SELECT *
FROM TEAMS
WHERE TEAMNO = 1
INTO @v1, @v2, @V3
;
SELECT @V1, @V2, @V3
Example 18.10:
LOAD DATA INFILE 'C:/TEAMS.TXT'
REPLACE
INTO TABLE TEAMS
FIELDS TERMINATED BY ','
LINES TERMINATED BY '?'
Example 18.11:
LOAD DATA INFILE 'C:/TEAMS.TXT'
REPLACE
INTO TABLE TEAMS
FIELDS TERMINATED BY ','
LINES TERMINATED BY '?'
IGNORE 1 LINES
Example 18.12:
LOAD DATA INFILE 'C:/TEAMS.TXT'
REPLACE
INTO TABLE TEAMS
FIELDS TERMINATED BY ','
LINES TERMINATED BY '?'
(PLAYERNO,TEAMNO,DIVISION)
;
SELECT * FROM TEAMS
Example 18.13:
LOAD DATA INFILE 'C:/TEAMS.TXT'
REPLACE
INTO TABLE TEAMS
FIELDS TERMINATED BY ','
LINES TERMINATED BY '?'
SET DIVISION='xxx'
;
SELECT * FROM TEAMS
Example 18.14:
LOAD DATA INFILE 'C:/TEAMS.TXT'
REPLACE
INTO TABLE TEAMS
FIELDS TERMINATED BY ','
LINES TERMINATED BY '?'
(TEAMNO,PLAYERNO,@DIV)
SET DIVISION=SUBSTRING(@DIV,1,1)
;
SELECT * FROM TEAMS
Example 18.15:
LOAD DATA INFILE 'C:/TEAMS2.TXT'
REPLACE
INTO TABLE TEAMS
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r'
STARTING BY '/*/'
;
SELECT * FROM TEAMS
Example 19.1:
CREATE TABLE XML_MATCHES
(MATCHNO INTEGER NOT NULL PRIMARY KEY,
MATCH_INFO TEXT)
Example 19.2:
INSERT INTO XML_MATCHES VALUES (1,
'
Logging on has succeeded.
\n"; mysql_close($conn); ?> Example 35.2:Logging on has succeeded.\n";
$db = mysql_select_db("TENNIS")
or die ("
Database unknown.\n");
echo "
TENNIS is the current database now.\n";
mysql_close($conn);
?>
Example 35.3:
Logging on has succeeded.\n";
$db = mysql_select_db("TENNIS")
or die ("
Database unknown.\n");
echo "
TENNIS is the current database now.\n";
$result = mysql_query("CREATE UNIQUE INDEX PLAY
ON PLAYERS (PLAYERNO)");
if (!$result)
{
echo "
Index PLAY is not created!\n";
}
else
{
echo "
Index PLAY is created!\n";
};
mysql_close($conn);
?>
Example 35.4:
Logging on has succeeded.\n";
$db = mysql_select_db("TENNIS")
or die ("
Database unknown.\n");
echo "
TENNIS is the current database now.\n";
$result = mysql_query("CREATE UNIQUE INDEX PLAY
ON PLAYERS (PLAYERNO)");
if (!$result)
{
echo "
Index PLAY is not created!\n";
}
else
{
echo "
Index PLAY is created!\n";
};
echo "
mysql_info=".mysql_info($conn);
mysql_close($conn);
?>
Example 35.5:
Logging on has succeeded.\n";
$db = mysql_select_db("TENNIS")
or die ("
Database unknown.\n");
echo "
TENNIS is the current database now.\n";
$result = mysql_query("CREATE UNIQUE INDEX PLAY
ON PLAYERS (PLAYERNO)");
if (!$result)
{
echo "
Index PLAY is not created!\n";
$error_number = mysql_errno();
$error_message = mysql_error();
echo "
Fout: $error_number: $error_message\n";
}
else
{
echo "
Index PLAY is created!\n";
}
mysql_close($conn);
?>
Example 35.6:
Logging on has succeeded.\n"; $host = "localhost"; $user = "BOOKSQL"; $pass = "BOOKSQLPW"; $conn2 = mysql_connect($host, $user, $pass) or die ("
Logging on has not succeeded.\n"); echo "
Logging on has succeeded.\n";
$db = mysql_select_db("TENNIS", $conn1)
or die ("
Database unknown.\n");
echo "
Connection 1 is started.\n";
$db = mysql_select_db("TENNIS", $conn2)
or die ("
Database unknown.\n");
echo "
Connection 2 is started.\n";
mysql_close($conn1);
mysql_close($conn2);
?>
Example 35.7:
Logging on has succeeded.\n";
$db = mysql_select_db("TENNIS")
or die ("
Database unknown.\n");
echo "
TENNIS is the current database now.\n";
$wnr = 22;
$result = mysql_query("UPDATE MATCHES
SET WON = WON + 1 WHERE MATCHNO = $mno");
if (!$result)
{
echo "
Update not executed!\n";
$error_number = mysql_errno();
$error_message = mysql_error();
echo "
Error: $error_number: $error_message\n";
}
else
{
echo "
WON column has increased for match $mno.\n";
}
mysql_close($conn);
?>
Example 35.8:
Logging on has succeeded.\n";
$db = mysql_select_db("TENNIS")
or die ("
Database unknown.\n");
echo "
TENNIS is the current database now.\n";
$query = "SELECT COUNT(*) AS NUMBER FROM PLAYERS";
$result = mysql_query($query)
or die ("
Query is incorrect.\n");
$row = mysql_fetch_assoc($result)
or die ("
Query had no result.\n");
echo "
The number of players ".$row['NUMBER'].".\n";
mysql_close($conn);
?>
Example 35.9:
Logging on has not succeeded.\n";
$db = mysql_select_db("TENNIS")
or die ("
Database unknown.\n");
echo "
TENNIS is the current database now.\n";
$query = "SELECT PLAYERNO FROM PLAYERS ORDER BY 1 DESC";
$result = mysql_query($query)
or die ("
Query is incorrect.\n");
if (mysql_num_rows($result) > 0)
{
while ($row=mysql_fetch_assoc($result))
{
echo "
Player number ".$row['PLAYERNO'].".\n";
}
}
else
{
echo "
No players found.\n";
}
mysql_free_result($result);
mysql_close($conn);
?>
Example 35.10:
Logging on has succeeded.\n";
$db = mysql_select_db("TENNIS")
or die ("
Database unknown.\n");
echo "
TENNIS is the current database now.\n";
$query = "SELECT PLAYERNO FROM PLAYERS ORDER BY 1 DESC";
$result = mysql_query($query)
or die ("
Query is incorrect.\n");
while ($row=mysql_fetch_row($result))
{
echo "
Player number ".$row[0].".\n";
};
mysql_free_result($result);
mysql_close($conn);
?>
Example 35.11:
Logging on has succeeded.\n";
$db = mysql_select_db("TENNIS")
or die ("
Database unknown.\n");
echo "
TENNIS is the current database now.\n";
$query = "SELECT PLAYERNO FROM PLAYERS ORDER BY 1 DESC";
$result = mysql_query($query)
or die ("
Query is incorrect.\n");
mysql_data_seek($result, 3);
$row=mysql_fetch_row($result);
echo "
Player number ".$row[0].".\n";
mysql_close($conn);
?>
Example 35.12:
Logging on has succeeded.\n";
$db = mysql_select_db("TENNIS")
or die ("
Database unknown.\n");
echo "
TENNIS is the current database now.\n";
$query = "SELECT PLAYERNO FROM PLAYERS ORDER BY 1 DESC";
$result = mysql_query($query)
or die ("
Query is incorrect.\n");
while ($row=mysql_fetch_object($result))
{
echo "
Player number ".$row->PLAYERNO.".\n";
};
mysql_free_result($result);
mysql_close($conn);
?>
Example 35.13:
Logging on has succeeded.\n";
$db = mysql_select_db("TENNIS")
or die ("
Database unknown.\n");
echo "
TENNIS is the current database now.\n";
$query = "SELECT LEAGUENO FROM PLAYERS";
$result = mysql_query($query)
or die ("
Query is incorrect.\n");
if (mysql_num_rows($result) > 0)
{
while ($row=mysql_fetch_assoc($result))
{
if ($row['LEAGUENO'] === NULL)
{
echo "
Player number is unknown.\n";
}
else
{
echo "
Player number ".$row['LEAGUENO'].".\n";
}
}
}
else
{
echo "
No players found.\n";
}
mysql_close($conn);
?>
Example 35.14:
Logging on has succeeded.\n";
$db = mysql_select_db("TENNIS")
or die ("
Database unknown.\n");
echo "
TENNIS is the current database now.\n";
$query = "SELECT * FROM PLAYERS WHERE PLAYERNO = 27";
$result = mysql_query($query)
or die ("
Query is incorrect.\n");
while ($field=mysql_fetch_field($result))
{
echo "
".$field->name." ".$field->type." ".
$field->max_length." ".$field->primary_key."\n";
}
mysql_close($conn);
?>
Example 35.15:
Logging on has succeeded.\n";
$db = mysql_select_db("TENNIS")
or die ("
Database unknown.\n");
echo "
TENNIS is the current database now.\n";
$query = "SELECT * FROM PLAYERS WHERE PLAYERNO = 27";
$result = mysql_query($query)
or die ("
Query is incorrect.\n");
$exp = 0;
while ($field=mysql_fetch_field($result))
{
echo "
Name=".mysql_field_name($result, $exp)."\n";
echo "
Data type=".mysql_field_type($result, $exp)."\n";
echo "
Length=".mysql_field_len($result, $exp)."\n";
echo "
Table=".mysql_field_table($result, $exp)."\n";
$exp += 1;
}
mysql_close($conn);
?>
Example 35.16:
Logging on has succeeded.\n";
$db = mysql_select_db("TENNIS")
or die ("
Database unknown.\n");
echo "
TENNIS is the current database now.\n";
$query1 = "SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME IN
('COMMITTEE_MEMBERS','PENALTIES','PLAYERS',
'TEAMS','MATCHES')
ORDER BY TABLE_NAME, ORDINAL_POSITION";
$tables = mysql_query($query1)
or die ("
Query1 is incorrect.\n");
while ($tablerow=mysql_fetch_assoc($tables))
{
$query2 = "SELECT COUNT(DISTINCT ";
$query2 .= $tablerow['COLUMN_NAME'].") AS A, ";
$query2 .= "MIN( ".$tablerow['COLUMN_NAME'].") AS B, ";
$query2 .= "MAX( ".$tablerow['COLUMN_NAME'].") AS C ";
$query2 .= "FROM ".$tablerow['TABLE_NAME'];
$columns = mysql_query($query2)
or die ("
Query2 is incorrect.\n");
$columnrow=mysql_fetch_assoc($columns);
echo "
".$tablerow['TABLE_NAME'].".".
$tablerow['COLUMN_NAME'].
" Different=".$columnrow['A'].
" Minimum=".$columnrow['B'].
" Maximum=".$columnrow['C']."\n";
mysql_free_result($columns);
};
mysql_free_result($tables);
mysql_close($conn);
?>
Example 36.1:
PREPARE S1 FROM 'SELECT * FROM TEAMS'
;
EXECUTE S1
;
SET @SQL_STATEMENT = 'SELECT * FROM TEAMS'
;
PREPARE S1 FROM @SQL_STATEMENT
Example 36.2:
DEALLOCATE PREPARE S1
Example 36.3:
PREPARE S2 FROM 'SELECT * FROM TEAMS WHERE TEAMNO = @TNO'
;
SET @TNO = 1
;
EXECUTE S2
;
SET @TNO = 2
;
EXECUTE S2
Example 36.4:
PREPARE S3 FROM
'SELECT * FROM TEAMS WHERE TEAMNO BETWEEN ? AND ?'
;
SET @FROM_TNO = 1, @TO_TNO = 4
;
EXECUTE S3 USING @FROM_TNO, @TO_TNO
;
DEALLOCATE PREPARE S3
Example 36.5:
CREATE PROCEDURE DROP_TABLE
(IN TABLENAME VARCHAR(64))
BEGIN
SET @SQL_STATEMENT = CONCAT('DROP TABLE ', TABLENAME);
PREPARE S1 FROM @SQL_STATEMENT;
EXECUTE S1;
DEALLOCATE PREPARE S1;
END
Example 36.6:
CREATE PROCEDURE DYNAMIC_SELECT
(IN SELECT_STATEMENT VARCHAR(64),
OUT NUMBER_OF_ROWS INTEGER)
BEGIN
DECLARE FOUND BOOLEAN DEFAULT TRUE;
DECLARE VAR1,VAR2,VAR3 VARCHAR(100);
DECLARE C_RESULT CURSOR FOR
SELECT * FROM SELECT_TABLE;
DECLARE CONTINUE HANDLER FOR NOT FOUND
SET FOUND = FALSE;
SET @CREATE_STATEMENT =
CONCAT('CREATE TEMPORARY TABLE SELECT_TABLE AS (',
SELECT_STATEMENT, ')');
PREPARE S1 FROM @CREATE_STATEMENT;
EXECUTE S1;
DEALLOCATE PREPARE S1;
SET NUMBER_OF_ROWS = 0;
OPEN C_RESULT;
FETCH C_RESULT INTO VAR1, VAR2, VAR3;
WHILE FOUND DO
SET NUMBER_OF_ROWS = NUMBER_OF_ROWS + 1;
FETCH C_RESULT INTO VAR1, VAR2, VAR3;
END WHILE;
CLOSE C_RESULT;
DROP TEMPORARY TABLE SELECT_TABLE;
END
;
CALL DYNAMIC_SELECT('SELECT PAYMENTNO, PAYMENT_DATE, PLAYERNO
FROM PENALTIES', @NUMBER_OF_ROWS)
;
SELECT @NUMBER_OF_ROWS
Example 37.1:
DELETE
FROM PENALTIES
WHERE PLAYERNO = 44
;
SELECT *
FROM PENALTIES
;
ROLLBACK WORK
;
COMMIT WORK
Example 37.3:
DELETE FROM PLAYERS WHERE PLAYERNO = 6
;
DELETE FROM PENALTIES WHERE PLAYERNO = 6
;
DELETE FROM MATCHES WHERE PLAYERNO = 6
;
DELETE FROM COMMITTEE_MEMBERS WHERE PLAYERNO = 6
;
UPDATE TEAMS SET PLAYERNO = 83 WHERE PLAYERNO = 6
;
SHOW GLOBAL VARIABLES LIKE 'COMPLETION_TYPE'
Example 37.5:
CREATE PROCEDURE NEW_TEAM ()
BEGIN
INSERT INTO TEAMS VALUES (100,27,'first');
END
;
SET AUTOCOMMIT = 1
;
START TRANSACTION
;
INSERT INTO TEAMS VALUES (200,27,'first')
;
CALL NEW_TEAM()
;
ROLLBACK WORK
Example 37.6:
UPDATE PENALTIES
SET AMOUNT = AMOUNT + 25
WHERE PAYMENTNO = 4
;
SELECT *
FROM PENALTIES
WHERE PAYMENTNO = 4
Example 37.7:
SELECT PLAYERNO
FROM PLAYERS
WHERE TOWN = 'Stratford'
;
UPDATE PLAYERS
SET TOWN = 'Eltham'
WHERE PLAYERNO = 7
;
SELECT PLAYERNO, NAME, INITIALS,
STREET, HOUSENO, POSTCODE, TOWN
FROM PLAYERS
WHERE PLAYERNO IN (6, 83, 2, 7, 57, 39, 100)
Example 37.8:
SELECT PLAYERNO
FROM PLAYERS
WHERE TOWN = 'Stratford'
Example 37.9:
UPDATE PENALTIES
SET AMOUNT = AMOUNT + 25
WHERE PAYMENTNO = 4
;
UPDATE PENALTIES
SET AMOUNT = AMOUNT + 30
WHERE PAYMENTNO = 4
Example 37.10:
LOCK TABLE PLAYERS READ
Example 37.11:
DO GET_LOCK('lock1',0)
;
SELECT GET_LOCK('lock1',0)
Example 37.12:
SELECT IS_FREE_LOCK('lock1')
Example 37.13:
SELECT IS_USED_LOCK('lock1')
Example 37.14:
SELECT RELEASE_LOCK('lock1')