Lab 19: MySQL Specific Features
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; doneStep 2: AUTO_INCREMENT
docker exec mysql-lab mysql -uroot -prootpass << 'EOF'
CREATE DATABASE mysqllab;
USE mysqllab;
-- AUTO_INCREMENT: automatically assigns sequential integers
CREATE TABLE items (
item_id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
PRIMARY KEY (item_id)
) AUTO_INCREMENT = 1000; -- start from 1000
INSERT INTO items (name) VALUES ('Alpha'), ('Beta'), ('Gamma');
SELECT * FROM items;
-- Check last inserted ID
SELECT LAST_INSERT_ID();
-- Check current auto_increment value
SELECT AUTO_INCREMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'mysqllab' AND TABLE_NAME = 'items';
-- Gap behavior: deleted rows create gaps
DELETE FROM items WHERE item_id = 1001;
INSERT INTO items (name) VALUES ('Delta'); -- gets 1003, not 1002!
SELECT * FROM items;
-- Reset AUTO_INCREMENT
ALTER TABLE items AUTO_INCREMENT = 10;
INSERT INTO items (name) VALUES ('Epsilon');
SELECT * FROM items ORDER BY item_id;
EOFStep 3: ENUM and SET Types
Step 4: FULLTEXT Index and MATCH AGAINST
Step 5: JSON Column and JSON_EXTRACT
Step 6: GENERATED Columns
Step 7: ON DUPLICATE KEY UPDATE
Step 8: Capstone — SHOW PROCESSLIST and Session Info
Summary
Feature
Syntax
Notes
Last updated
