Lab 03: Inserting and Querying Data
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 run -d --name pg-lab -e POSTGRES_PASSWORD=rootpass postgres:15
sleep 10docker exec mysql-lab mysql -uroot -prootpass -e "
CREATE DATABASE IF NOT EXISTS shop;
USE shop;
CREATE TABLE products (
product_id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
category VARCHAR(50) NOT NULL,
price DECIMAL(10,2) NOT NULL,
stock INT NOT NULL DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (product_id)
);"
docker exec pg-lab psql -U postgres -c "CREATE DATABASE shop;"
docker exec pg-lab psql -U postgres -d shop -c "
CREATE TABLE products (
product_id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
category VARCHAR(50) NOT NULL,
price NUMERIC(10,2) NOT NULL,
stock INT NOT NULL DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);"Step 2: INSERT INTO — Single Row
Step 3: INSERT INTO — Multiple Rows
Step 4: SELECT * and SELECT Columns
Step 5: Column Aliases with AS
Step 6: INSERT … SELECT (Copy Rows)
Step 7: REPLACE INTO (MySQL) vs INSERT … ON CONFLICT (PostgreSQL)
Step 8: Capstone — Verify Row Counts
Summary
Operation
MySQL
PostgreSQL
Last updated
