DEV Community

Santhosh V
Santhosh V

Posted on

CA 39 - Create Tables

Today I practiced some basic SQL constraints. I kept it simple and tried different rules like primary key, unique, not null, check, and foreign key.

1. Students Table (Unique ID)

CREATE TABLE students (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    age INT
);

Enter fullscreen mode Exit fullscreen mode

id is unique for every student

2. Employees Table (No Empty Name & Email)

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    phone_number VARCHAR(15)
);
Enter fullscreen mode Exit fullscreen mode

name & email must be filled
phone is optional

3. Users Table (Unique Username & Email)

CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50) UNIQUE,
    email VARCHAR(100) UNIQUE
);

Enter fullscreen mode Exit fullscreen mode

no duplicates allowed

4. Products Table (Valid Price & Stock)

CREATE TABLE products (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    price INT CHECK (price > 0),
    stock INT CHECK (stock >= 0)
);
Enter fullscreen mode Exit fullscreen mode

price > 0
stock ≥ 0

5. Orders Table (Default + Timestamp)
CREATE TABLE orders (
    id INT PRIMARY KEY,
    status VARCHAR(20) DEFAULT 'pending',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Enter fullscreen mode Exit fullscreen mode

status auto = pending
time auto added

6. Accounts Table (Safe Balance)
Enter fullscreen mode Exit fullscreen mode
CREATE TABLE accounts (
    id INT PRIMARY KEY,
    account_number VARCHAR(20) UNIQUE NOT NULL,
    balance INT CHECK (balance >= 0)
);
Enter fullscreen mode Exit fullscreen mode

no duplicate account numbers
no negative balance

7. Enrollments Table (No Duplicate Entry)

CREATE TABLE enrollments (
    student_id INT,
    course_id INT,
    PRIMARY KEY (student_id, course_id)
);
Enter fullscreen mode Exit fullscreen mode

same student can't join same course twice

8. Foreign Key (Departments & Employees)
CREATE TABLE departments (
    id INT PRIMARY KEY,
    name VARCHAR(50)
);
Enter fullscreen mode Exit fullscreen mode
CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    department_id INT,
    FOREIGN KEY (department_id) REFERENCES departments(id)
);
Enter fullscreen mode Exit fullscreen mode

employee must belong to a valid department

9. Auto Delete & Update (Advanced FK)

CREATE TABLE employees (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    department_id INT,
    FOREIGN KEY (department_id) 
    REFERENCES departments(id)
    ON DELETE CASCADE
    ON UPDATE CASCADE
);
Enter fullscreen mode Exit fullscreen mode

delete department → employees also deleted
update department id → auto update in employees

Final Thought

Constraints = rules for your data
Without rules → data becomes messy

Top comments (0)