Skip to content

Instantly share code, notes, and snippets.

@harrylog
Forked from YujiShen/SQL_COOKBOOK_TABLE.sql
Created January 9, 2025 16:43
Show Gist options
  • Save harrylog/43c05eb801ea07755dadc6ca5503ad68 to your computer and use it in GitHub Desktop.
Save harrylog/43c05eb801ea07755dadc6ca5503ad68 to your computer and use it in GitHub Desktop.
Table EMP and DEPT of SQL Cookbook for MySQL
-- Thanks to http://justinsomnia.org/2009/04/the-emp-and-dept-tables-for-mysql/
DROP TABLE IF EXISTS emp;
CREATE TABLE emp (
empno decimal(4,0) NOT NULL,
ename varchar(10) default NULL,
job varchar(9) default NULL,
mgr decimal(4,0) default NULL,
hiredate date default NULL,
sal decimal(7,2) default NULL,
comm decimal(7,2) default NULL,
deptno decimal(2,0) default NULL
);
DROP TABLE IF EXISTS dept;
CREATE TABLE dept (
deptno decimal(2,0) default NULL,
dname varchar(14) default NULL,
loc varchar(13) default NULL
);
INSERT INTO emp VALUES ('7369','SMITH','CLERK','7902','1980-12-17','800.00',NULL,'20');
INSERT INTO emp VALUES ('7499','ALLEN','SALESMAN','7698','1981-02-20','1600.00','300.00','30');
INSERT INTO emp VALUES ('7521','WARD','SALESMAN','7698','1981-02-22','1250.00','500.00','30');
INSERT INTO emp VALUES ('7566','JONES','MANAGER','7839','1981-04-02','2975.00',NULL,'20');
INSERT INTO emp VALUES ('7654','MARTIN','SALESMAN','7698','1981-09-28','1250.00','1400.00','30');
INSERT INTO emp VALUES ('7698','BLAKE','MANAGER','7839','1981-05-01','2850.00',NULL,'30');
INSERT INTO emp VALUES ('7782','CLARK','MANAGER','7839','1981-06-09','2450.00',NULL,'10');
INSERT INTO emp VALUES ('7788','SCOTT','ANALYST','7566','1982-12-09','3000.00',NULL,'20');
INSERT INTO emp VALUES ('7839','KING','PRESIDENT',NULL,'1981-11-17','5000.00',NULL,'10');
INSERT INTO emp VALUES ('7844','TURNER','SALESMAN','7698','1981-09-08','1500.00','0.00','30');
INSERT INTO emp VALUES ('7876','ADAMS','CLERK','7788','1983-01-12','1100.00',NULL,'20');
INSERT INTO emp VALUES ('7900','JAMES','CLERK','7698','1981-12-03','950.00',NULL,'30');
INSERT INTO emp VALUES ('7902','FORD','ANALYST','7566','1981-12-03','3000.00',NULL,'20');
INSERT INTO emp VALUES ('7934','MILLER','CLERK','7782','1982-01-23','1300.00',NULL,'10');
INSERT INTO dept VALUES ('10','ACCOUNTING','NEW YORK');
INSERT INTO dept VALUES ('20','RESEARCH','DALLAS');
INSERT INTO dept VALUES ('30','SALES','CHICAGO');
INSERT INTO dept VALUES ('40','OPERATIONS','BOSTON');
@harrylog
Copy link
Author

harrylog commented Jan 9, 2025

-- Drop tables if they exist to avoid conflicts
DROP TABLE IF EXISTS emp;
DROP TABLE IF EXISTS dept;
DROP TABLE IF EXISTS T1;
DROP TABLE IF EXISTS T10;
DROP TABLE IF EXISTS T100;
DROP TABLE IF EXISTS T500;

-- Create main tables
CREATE TABLE emp (
empno decimal(4,0) NOT NULL,
ename varchar(10) default NULL,
job varchar(9) default NULL,
mgr decimal(4,0) default NULL,
hiredate date default NULL,
sal decimal(7,2) default NULL,
comm decimal(7,2) default NULL,
deptno decimal(2,0) default NULL
);

CREATE TABLE dept (
deptno decimal(2,0) default NULL,
dname varchar(14) default NULL,
loc varchar(13) default NULL
);

-- Insert main data
INSERT INTO emp VALUES
('7369','SMITH','CLERK','7902','1980-12-17','800.00',NULL,'20'),
('7499','ALLEN','SALESMAN','7698','1981-02-20','1600.00','300.00','30'),
('7521','WARD','SALESMAN','7698','1981-02-22','1250.00','500.00','30'),
('7566','JONES','MANAGER','7839','1981-04-02','2975.00',NULL,'20'),
('7654','MARTIN','SALESMAN','7698','1981-09-28','1250.00','1400.00','30'),
('7698','BLAKE','MANAGER','7839','1981-05-01','2850.00',NULL,'30'),
('7782','CLARK','MANAGER','7839','1981-06-09','2450.00',NULL,'10'),
('7788','SCOTT','ANALYST','7566','1982-12-09','3000.00',NULL,'20'),
('7839','KING','PRESIDENT',NULL,'1981-11-17','5000.00',NULL,'10'),
('7844','TURNER','SALESMAN','7698','1981-09-08','1500.00','0.00','30'),
('7876','ADAMS','CLERK','7788','1983-01-12','1100.00',NULL,'20'),
('7900','JAMES','CLERK','7698','1981-12-03','950.00',NULL,'30'),
('7902','FORD','ANALYST','7566','1981-12-03','3000.00',NULL,'20'),
('7934','MILLER','CLERK','7782','1982-01-23','1300.00',NULL,'10');

INSERT INTO dept VALUES
('10','ACCOUNTING','NEW YORK'),
('20','RESEARCH','DALLAS'),
('30','SALES','CHICAGO'),
('40','OPERATIONS','BOSTON');

-- Create pivot tables
CREATE TABLE T1 (id INTEGER);
INSERT INTO T1 VALUES (1);

CREATE TABLE T10 (id INTEGER);
INSERT INTO T10 VALUES
(1), (2), (3), (4), (5),
(6), (7), (8), (9), (10);

CREATE TABLE T100 (id INT);
DELIMITER //
CREATE PROCEDURE fill_T100()
BEGIN
DECLARE counter INT DEFAULT 1;
WHILE counter <= 100 DO
INSERT INTO T100 (id) VALUES (counter);
SET counter = counter + 1;
END WHILE;
END //
DELIMITER ;

CALL fill_T100();
DROP PROCEDURE fill_T100;

CREATE TABLE T500 (id INT);
DELIMITER //
CREATE PROCEDURE fill_T500()
BEGIN
DECLARE counter INT DEFAULT 1;
WHILE counter <= 500 DO
INSERT INTO T500 (id) VALUES (counter);
SET counter = counter + 1;
END WHILE;
END //
DELIMITER ;

CALL fill_T500();
DROP PROCEDURE fill_T500;

-- Verify all tables were created correctly
SELECT 'emp' as table_name, COUNT() as row_count FROM emp
UNION ALL
SELECT 'dept', COUNT(
) FROM dept
UNION ALL
SELECT 'T1', COUNT() FROM T1
UNION ALL
SELECT 'T10', COUNT(
) FROM T10
UNION ALL
SELECT 'T100', COUNT() FROM T100
UNION ALL
SELECT 'T500', COUNT(
) FROM T500;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment