create tables insert sample data RE Usable Script
ALTER TABLE [dbo].[HR_EMPLOYEES] DROP CONSTRAINT [FK_EMP_MANAGER];
ALTER TABLE [dbo].[HR_COUNTRIES] DROP CONSTRAINT [FK_COUNTRY_REGION];
ALTER TABLE [dbo].[HR_LOCATIONS] DROP CONSTRAINT [FK_LOCATION_COUNTRY];
ALTER TABLE [dbo].[HR_DEPARTMENTS] DROP CONSTRAINT [FK_DEPT_LOCATION];
ALTER TABLE [dbo].[HR_EMPLOYEES] DROP CONSTRAINT [FK_EMP_JOB];
ALTER TABLE [dbo].[HR_EMPLOYEES] DROP CONSTRAINT [FK_EMP_DEPT];
drop TABLE if exists HR_REGIONS
drop TABLE if exists HR_COUNTRIES
drop TABLE if exists HR_LOCATIONS
drop TABLE if exists HR_DEPARTMENTS
drop TABLE if exists HR_JOBS
drop TABLE if exists HR_EMPLOYEES
drop TABLE if exists HR_JOB_HISTORY
-- Create tables
CREATE TABLE HR_REGIONS (
REGION_ID int PRIMARY KEY,
REGION_NAME VARCHAR(25) NOT NULL
);
CREATE TABLE HR_COUNTRIES (
COUNTRY_ID varchar(2 ) PRIMARY KEY,
COUNTRY_NAME varchar(40 ) NOT NULL,
REGION_ID int NOT NULL,
CONSTRAINT FK_COUNTRY_REGION FOREIGN KEY (REGION_ID) REFERENCES HR_REGIONS(REGION_ID)
);
CREATE TABLE HR_LOCATIONS (
LOCATION_ID int PRIMARY KEY,
STREET_ADDRESS varchar(40 ),
POSTAL_CODE varchar(12 ),
CITY varchar(30 ) NOT NULL,
STATE_PROVINCE varchar(25 ),
COUNTRY_ID varchar(2 ),
CONSTRAINT FK_LOCATION_COUNTRY FOREIGN KEY (COUNTRY_ID) REFERENCES HR_COUNTRIES(COUNTRY_ID)
);
CREATE TABLE HR_DEPARTMENTS (
DEPARTMENT_ID int PRIMARY KEY,
DEPARTMENT_NAME varchar(30 ) NOT NULL,
MANAGER_ID int,
LOCATION_ID int,
CONSTRAINT FK_DEPT_LOCATION FOREIGN KEY (LOCATION_ID) REFERENCES HR_LOCATIONS(LOCATION_ID)
);
CREATE TABLE HR_JOBS (
JOB_ID varchar(10 ) PRIMARY KEY,
JOB_TITLE varchar(35 ) NOT NULL,
MIN_SALARY int,
MAX_SALARY int
);
CREATE TABLE HR_EMPLOYEES (
EMPLOYEE_ID int PRIMARY KEY,
FIRST_NAME varchar(20 ),
LAST_NAME varchar(25 ) NOT NULL,
EMAIL varchar(25 ),
PHONE_NUMBER varchar(20 ),
HIRE_DATE DATE NOT NULL,
JOB_ID varchar(10 ) NOT NULL,
SALARY numeric(8,2),
COMMISSION_PCT numeric(2,2),
MANAGER_ID int,
DEPARTMENT_ID int,
CONSTRAINT FK_EMP_JOB FOREIGN KEY (JOB_ID) REFERENCES HR_JOBS(JOB_ID),
CONSTRAINT FK_EMP_DEPT FOREIGN KEY (DEPARTMENT_ID) REFERENCES HR_DEPARTMENTS(DEPARTMENT_ID),
CONSTRAINT FK_EMP_MANAGER FOREIGN KEY (MANAGER_ID) REFERENCES HR_EMPLOYEES(EMPLOYEE_ID)
);
CREATE TABLE HR_JOB_HISTORY (
EMPLOYEE_ID int,
START_DATE DATE,
END_DATE DATE,
JOB_ID varchar(10 ),
DEPARTMENT_ID int,
PRIMARY KEY (EMPLOYEE_ID, START_DATE),
CONSTRAINT FK_JH_EMP FOREIGN KEY (EMPLOYEE_ID) REFERENCES HR_EMPLOYEES(EMPLOYEE_ID),
CONSTRAINT FK_JH_JOB FOREIGN KEY (JOB_ID) REFERENCES HR_JOBS(JOB_ID),
CONSTRAINT FK_JH_DEPT FOREIGN KEY (DEPARTMENT_ID) REFERENCES HR_DEPARTMENTS(DEPARTMENT_ID)
);
-- Insert sample data
-- HR_REGIONS
INSERT INTO HR_REGIONS (REGION_ID, REGION_NAME) VALUES (1, 'Europe');
INSERT INTO HR_REGIONS (REGION_ID, REGION_NAME) VALUES (2, 'Americas');
-- HR_COUNTRIES
INSERT INTO HR_COUNTRIES (COUNTRY_ID, COUNTRY_NAME, REGION_ID) VALUES ('UK', 'United Kingdom', 1);
INSERT INTO HR_COUNTRIES (COUNTRY_ID, COUNTRY_NAME, REGION_ID) VALUES ('US', 'United States', 2);
-- HR_LOCATIONS
INSERT INTO HR_LOCATIONS (LOCATION_ID, STREET_ADDRESS, POSTAL_CODE, CITY, STATE_PROVINCE, COUNTRY_ID)
VALUES (1000, '10 Downing Street', 'SW1A 2AA', 'London', 'Greater London', 'UK');
INSERT INTO HR_LOCATIONS (LOCATION_ID, STREET_ADDRESS, POSTAL_CODE, CITY, STATE_PROVINCE, COUNTRY_ID)
VALUES (2000, '1600 Pennsylvania Ave', '20500', 'Washington', 'DC', 'US');
-- HR_DEPARTMENTS
INSERT INTO HR_DEPARTMENTS (DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID) VALUES (10, 'Administration', NULL, 1000);
INSERT INTO HR_DEPARTMENTS (DEPARTMENT_ID, DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID) VALUES (20, 'Marketing', NULL, 2000);
-- HR_JOBS
INSERT INTO HR_JOBS (JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY) VALUES ('AD_PRES', 'President', 20000, 40000);
INSERT INTO HR_JOBS (JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY) VALUES ('AD_VP', 'Administration Vice President', 15000, 30000);
INSERT INTO HR_JOBS (JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY) VALUES ('MK_MAN', 'Marketing Manager', 10000, 20000);
INSERT INTO HR_JOBS (JOB_ID, JOB_TITLE, MIN_SALARY, MAX_SALARY) VALUES ('IT_PROG', 'Programmer', 4000, 10000);
-- HR_EMPLOYEES
INSERT INTO HR_EMPLOYEES (EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL, PHONE_NUMBER, HIRE_DATE, JOB_ID, SALARY, COMMISSION_PCT, MANAGER_ID, DEPARTMENT_ID) VALUES
(1, 'John', 'Doe', '[email protected]', '555-1234', cast('2020-01-01'as date), 'AD_PRES', 35000, NULL, NULL, 10),
(2, 'Jane', 'Smith', '[email protected]', '555-2345', cast('2021-03-15'as date), 'AD_VP', 25000, NULL, 1, 10),
(3, 'Mike', 'Brown', '[email protected]', '555-3456', cast('2022-06-20'as date), 'MK_MAN', 15000, 0.05, 2, 20),
(4, 'Alice', 'Green', '[email protected]', '555-4567', cast('2023-01-10'as date), 'IT_PROG', 7000, NULL, 3, 20);
-- HR_JOB_HISTORY
INSERT INTO HR_JOB_HISTORY (EMPLOYEE_ID, START_DATE, END_DATE, JOB_ID, DEPARTMENT_ID) VALUES
(2, cast('2020-01-01'as date), cast('2021-03-14'as date), 'IT_PROG', 20),
(2, cast('2021-03-15'as date), NULL, 'AD_VP', 10),
(3, cast('2021-06-01'as date), cast('2022-06-19'as date), 'IT_PROG', 20),
(3, cast('2022-06-20'as date), NULL, 'MK_MAN', 20);
select * from HR_REGIONS
select * from HR_COUNTRIES
select * from HR_LOCATIONS
select * from HR_DEPARTMENTS
select * from HR_JOBS
select * from HR_EMPLOYEES
select * from HR_JOB_HISTORY