SQL - Standard Test Data
Overview
This page defines a small, consistent schema and seed rows used across the lessons. Load it once per engine to reproduce the expected outputs shown in examples.
Schema
- departments(id, name)
- employees(id, first_name, department_id, salary, hired_at)
Seed Data (load into an empty database)
-- Create database if needed
CREATE DATABASE IF NOT EXISTS company;
USE company;
-- Tables
DROP TABLE IF EXISTS employees;
DROP TABLE IF EXISTS departments;
CREATE TABLE departments (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(80) NOT NULL UNIQUE
);
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
first_name VARCHAR(50) NOT NULL,
department_id INT NULL,
salary DECIMAL(10,2) NULL,
hired_at DATETIME NULL,
CONSTRAINT fk_emp_dept FOREIGN KEY (department_id) REFERENCES departments(id)
);
-- Seed departments
INSERT INTO departments (name) VALUES
('Engineering'),
('HR'),
('Sales');
-- Seed employees
INSERT INTO employees (first_name, department_id, salary, hired_at) VALUES
('Ada', 1, 120000.00, '2021-01-10 10:00:00'),
('Bob', 1, 90000.00, '2021-05-05 09:30:00'),
('Chen',2, 80000.00, NULL),
('Dee', 3, 110000.00, '2022-03-01 12:00:00'),
('Eli', 1, 130000.00, '2020-11-20 15:15:00');
-- Create DB if needed
IF DB_ID(N'company') IS NULL BEGIN
CREATE DATABASE company;
END
GO
USE company;
GO
IF OBJECT_ID('dbo.employees') IS NOT NULL DROP TABLE dbo.employees;
IF OBJECT_ID('dbo.departments') IS NOT NULL DROP TABLE dbo.departments;
CREATE TABLE dbo.departments (
id INT IDENTITY(1,1) PRIMARY KEY,
name NVARCHAR(80) NOT NULL UNIQUE
);
CREATE TABLE dbo.employees (
id INT IDENTITY(1,1) PRIMARY KEY,
first_name NVARCHAR(50) NOT NULL,
department_id INT NULL,
salary DECIMAL(10,2) NULL,
hired_at DATETIME2 NULL,
CONSTRAINT fk_emp_dept FOREIGN KEY (department_id) REFERENCES dbo.departments(id)
);
INSERT INTO dbo.departments(name) VALUES (N'Engineering'), (N'HR'), (N'Sales');
INSERT INTO dbo.employees(first_name, department_id, salary, hired_at) VALUES
(N'Ada', 1, 120000.00, '2021-01-10T10:00:00'),
(N'Bob', 1, 90000.00, '2021-05-05T09:30:00'),
(N'Chen', 2, 80000.00, NULL),
(N'Dee', 3, 110000.00, '2022-03-01T12:00:00'),
(N'Eli', 1, 130000.00, '2020-11-20T15:15:00');
-- From the sqlite3 CLI, open/create the file DB:
-- $ sqlite3 company.db
DROP TABLE IF EXISTS employees;
DROP TABLE IF EXISTS departments;
CREATE TABLE departments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE
);
CREATE TABLE employees (
id INTEGER PRIMARY KEY AUTOINCREMENT,
first_name TEXT NOT NULL,
department_id INTEGER NULL,
salary NUMERIC NULL,
hired_at TEXT NULL, -- ISO8601
FOREIGN KEY (department_id) REFERENCES departments(id)
);
INSERT INTO departments(name) VALUES ('Engineering'), ('HR'), ('Sales');
INSERT INTO employees(first_name, department_id, salary, hired_at) VALUES
('Ada', 1, 120000.00, '2021-01-10 10:00:00'),
('Bob', 1, 90000.00, '2021-05-05 09:30:00'),
('Chen', 2, 80000.00, NULL),
('Dee', 3, 110000.00, '2022-03-01 12:00:00'),
('Eli', 1, 130000.00, '2020-11-20 15:15:00');
Verification Queries
Current seed tables (from the local SQLite DB used for live examples):
departments
id | name |
---|---|
1 | Engineering |
2 | HR |
3 | Sales |
employees
id | first_name | department_id | salary | hired_at |
---|---|---|---|---|
1 | Ada | 1 | 120000 | 2021-01-10 10:00:00 |
2 | Bob | 1 | 90000 | 2021-05-05 09:30:00 |
3 | Chen | 2 | 80000 | |
4 | Dee | 3 | 110000 | 2022-03-01 12:00:00 |
5 | Eli | 1 | 130000 | 2020-11-20 15:15:00 |