Lab 09: Views
Overview
Step 1: Setup
docker run -d --name mysql-lab -e MYSQL_ROOT_PASSWORD=rootpass mysql:8.0
for i in $(seq 1 30); do docker exec mysql-lab mysql -uroot -prootpass -e "SELECT 1" 2>/dev/null && break || sleep 2; done
docker exec mysql-lab mysql -uroot -prootpass << 'EOF'
CREATE DATABASE viewlab;
USE viewlab;
CREATE TABLE employees (
emp_id INT NOT NULL AUTO_INCREMENT,
first_name VARCHAR(50) NOT NULL,
last_name VARCHAR(50) NOT NULL,
dept_name VARCHAR(50) NOT NULL,
salary DECIMAL(10,2) NOT NULL,
email VARCHAR(100),
is_active BOOLEAN DEFAULT TRUE,
hire_date DATE,
PRIMARY KEY (emp_id)
);
CREATE TABLE sales (
sale_id INT NOT NULL AUTO_INCREMENT,
emp_id INT NOT NULL,
amount DECIMAL(10,2) NOT NULL,
sale_date DATE NOT NULL,
region VARCHAR(30),
PRIMARY KEY (sale_id),
FOREIGN KEY (emp_id) REFERENCES employees(emp_id)
);
INSERT INTO employees (first_name, last_name, dept_name, salary, email, hire_date) VALUES
('Alice', 'Johnson', 'Engineering', 95000, '[email protected]', '2020-03-15'),
('Bob', 'Smith', 'Marketing', 72000, '[email protected]', '2019-07-22'),
('Carol', 'Davis', 'Engineering', 110000, '[email protected]', '2018-01-10'),
('David', 'Wilson', 'HR', 65000, '[email protected]', '2021-09-01'),
('Eve', 'Martinez', 'Engineering', 98000, '[email protected]', '2020-11-30'),
('Frank', 'Anderson', 'Marketing', 68000, NULL, '2022-02-14'),
('Grace', 'Taylor', 'HR', 70000, '[email protected]', '2019-05-20'),
('Henry', 'Thomas', 'Engineering', 125000, '[email protected]', '2017-08-05');
INSERT INTO sales (emp_id, amount, sale_date, region) VALUES
(1, 5000, '2024-01-10', 'North'),
(2, 3500, '2024-01-15', 'South'),
(1, 4200, '2024-02-01', 'North'),
(3, 8000, '2024-02-10', 'East'),
(5, 6100, '2024-02-20', 'West'),
(2, 2800, '2024-03-01', 'South'),
(1, 3900, '2024-03-10', 'North'),
(6, 4500, '2024-03-15', 'East');
EOFStep 2: CREATE VIEW
Step 3: CREATE OR REPLACE VIEW
Step 4: View Joining Multiple Tables
Step 5: Updatable Views
Step 6: WITH CHECK OPTION
Step 7: INFORMATION_SCHEMA.VIEWS
Step 8: Capstone — Security View (Hide Sensitive Columns)
Summary
Command
Description
Last updated
