STUDENT(snum, first-name, last-name, date-of-birth, medicare-num, degree ) primary key= (snum) candidate key 1 = (first-name, last-name, date-of-birth) candidate key 2 = (medicare-num)
SUBJECT(code, title, credits) primary key = (code) candidate key = (title)
ENROLMENT(snum, code, edate) primary key = (snum, code, edate) foreign key 1 = (snum) references STUDENT(snum) foreign key 2 = (code) references SUBJECT(code)
COUNTRY(name) primary key = (name) CUSTOMER(cnum, first-name, last-name, country-name) primary key: (cnum) foreign key country-name references COUNTRY(name)
STUDENT(snum, first-name, last-name, date-of-birth, medicare-num, degree ) degree ... NOT NULL
STUDENT(snum, first-name, last-name, date-of-birth, medicare-num, degree ) snum DECIMAL(7) ...
SUBJECT(code, title, credits) credits IN (6, 12)
UNDERGRADUATE-STUDENT(snum, first-name, last-name, date-of-birth)
POSTGRADUATE-STUDENT(snum, first-name, last-name, date-of-birth)
SCHOLARSHIP(snum, amount)
SCHOLARSHIP.snum references either UNDERGRADUATE-STUDENT.snum or
POSTGRADUATE-STUDENT.snum
EMPLOYEE( enum, ... , city, ... ) PROJECT(pnum, ... , city, ... ) PROJECT.city is included in EMPLOYEE.city


SELECT 'Multitable constraint failed, employee' AS "Constraint",
enum, 'is not included in either DRIVER or ADMIN tables' AS "Condition"
FROM EMPLOYEE
WHERE enum NOT IN (SELECT enum
FROM DRIVER)
and
enum NOT IN (SELECT enum
FROM ADMIN);
SELECT 'Multitable constraint failed, employee' AS "Constraint",
enum, 'is not included in either DRIVER or ADMIN tables' AS "Condition"
FROM EMPLOYEE
WHERE enum NOT IN (SELECT enum
FROM DRIVER)
and
enum NOT IN (SELECT enum
FROM ADMIN);
+----------------------------------------+------+--------------------------------------------------+ | Constraint | enum | Condition | +----------------------------------------+------+--------------------------------------------------+ | Multitable constraint failed, employee | 20 | is not included in either DRIVER or ADMIN tables | +----------------------------------------+------+--------------------------------------------------+
CREATE PROCEDURE country_hos (IN con CHAR(20)) BEGIN SELECT Name, HeadOfState FROM Country WHERE Continent = con; END;
CALL country_hos('Europe');
CALL insert_employee(123456, 'James', 'Bond', '1960-12-12', 'MI6');
CREATE FUNCTION CustomerLevel(p_creditLimit double) RETURNS VARCHAR(10)
DETERMINISTIC
BEGIN
DECLARE lvlvarchar(10);
IF p_creditLimit> 50000 THEN
SET lvl = 'PLATINUM';
ELSEIF (p_creditLimit<= 50000 AND p_creditLimit>= 10000) THEN
SET lvl = 'GOLD';
ELSEIF p_creditLimit< 10000 THEN
SET lvl = 'SILVER';
END IF;
RETURN (lvl);
END;
SELECT customerName, CustomerLevel(creditLimit) FROM customers GROUP BY customerName;
CREATE TRIGGER upd_check BEFORE UPDATE ON account
FOR EACH ROW
BEGIN
IF NEW.amount < 0 THEN
ROLLBACK;
END IF;
END;
CREATE TRIGGER before_employee_update
BEFORE UPDATE ON employees
FOR EACH ROW
BEGIN
INSERT INTO employees_audit( SETaction='update',
employeeNumber=OLD.employeeNumber,
lastname=OLD.lastname, changedat=NOW() );
END;
CREATE TABLE DEPARTMENT( name VARCHAR(50) NOT NULL, code CHAR(5) NOT NULL, total_staff_number DECIMAL(2) NOT NULL, chair VARCHAR(50) NULL, budget DECIMAL(9,1) NOT NULL, CONSTRAINT dept_pkey PRIMARY KEY(name), CONSTRAINT dept_ckey1 UNIQUE(code), CONSTRAINT dept_ckey2 UNIQUE(chair), CONSTRAINT dept_check1 CHECK (total_staff_number BETWEEN 1 AND 50) );
CREATE TABLE COURSE(
cnum CHAR(7) NOT NULL,
title VARCHAR(200) NOT NULL,
credits DECIMAL(2) NOT NULL,
offered_by VARCHAR(50) NULL,
CONSTRAINT course_pkey PRIMARY KEY(cnum),
CONSTRAINT course_check1 CHECK (credits IN (6, 12)),
CONSTRAINT course_fkey1 FOREIGN KEY(offered_by)
REFERENCES DEPARTMENT(name) );
DELETE FROM COURSES WHERE offered_by = 'Arts';
SELECT COUNT(*) FROM DEPARTMENT;
SELECT offered_by, count(*) FROM COURSE GROUP BY offered_by;
DELETE FROM COURSES WHERE offered_by = 'Arts';
SELECT COUNT(*) FROM DEPARTMENT
SELECT offered_by, count(*) FROM COURSE GROUP BY offered_by

mysqldump [arguments] > file-name
mysqldump --user root --password --verbose --lock_tables
--all-databases > dump.sql
mysqldump --user root --password --verbose --lock_tables
--databases csit115 > csit115dump.sql
CREATE DATABASE /*!32312 IF NOT EXISTS*/ 'csit115' /*!40100 DEFAULT CHARACTER SET latin1 */;
USE 'csit115';
DROP TABLE IF EXISTS 'ADMIN';
CREATE TABLE 'ADMIN' (
'ENUM' decimal(12,0) NOT NULL,
'POSITION' varchar(50) NOT NULL,
PRIMARY KEY ('ENUM'),
CONSTRAINT 'ADMIN_FKEY' FOREIGN KEY ('ENUM') REFERENCES 'EMPLOYEE' ('ENUM')
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
LOCK TABLES 'ADMIN' WRITE;
INSERT INTO 'ADMIN' VALUES (18,'SUPPORT'),(19,'DIRECTOR'),(20,'CEO');
UNLOCK TABLES;
DROP TABLE IF EXISTS 'DRIVER';
CREATE TABLE 'DRIVER' (
'ENUM' decimal(12,0) NOT NULL,
'LNUM' decimal(8,0) NOT NULL,
'STATUS' varchar(10) NOT NULL,
PRIMARY KEY ('ENUM'),
UNIQUE KEY 'DRIVER_UNIQUE' ('LNUM'),
CONSTRAINT 'DRIVER_FKEY' FOREIGN KEY ('ENUM') REFERENCES 'EMPLOYEE' ('ENUM')
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
LOCK TABLES 'DRIVER' WRITE;
INSERT INTO 'DRIVER' VALUES (1,10001,'AVAILABLE'),(2,10008,'ON LEAVE'),(3,10002,'AVAILABLE'),
(4,10004,'AVAILABLE'),(5,10003,'ON LEAVE'),(6,10012,'AVAILABLE'),(7,20002,'BUSY'),
(8,20003,'BUSY'),(9,30005,'BUSY'),(10,40002,'BUSY'),(11,20045,'AVAILABLE');
UNLOCK TABLES;
... ... ...
mysql -u csit115 -p -v
DROP DATABASE csit115; exit;
mysql -u csit115 -p -v < csit115dump.sql
mysqldump csit115 EMPLOYEE DRIVER --user root --password
--verbose --lock_tables > empdriv.sql
mysql -u csit115 -p -v
ALTER TABLE TRIP DROP FOREIGN KEY trip_fkey1; ALTER TABLE ADMIN DROP FOREIGN KEY admin_fkey; DROP TABLE DRIVER; DROP TABLE EMPLOYEE; exit;
mysql csit115 -u root -p < empdriv.sql
ALTER TABLE ADMIN ADD CONSTRAINT admin_fkey
FOREIGN KEY(ENUM) REFERENCES EMPLOYEE(ENUM);
ALTER TABLE TRIP ADD CONSTRAINT trip_fkey1
FOREIGN KEY (LNUM) REFERENCES DRIVER(LNUM);