Building vs Running: The DDL & DML Distinction Nobody Explains Simply
Picture opening Sunrise Supermarket. Before you sell a single item, you build the shelves tables for customers, products, orders. That’s construction. Once the shelves are up, you run the shop taking orders, updating them, clearing out the cancelled ones. In SQL, these are two different jobs: DDL and DML. What is DDL? DDL stands for Data Definition Language. These are the commands that build and shape your database creating tables, changing their structure, or removing them entirely. If SQL were a building, DDL pours the foundation and puts up the walls. What is DML? DML stands for Data Manipulation Language. These are the commands that work with the data inside those tables adding records, updating them, deleting them, or reading them. DML is what happens once the building is up and people start moving in. Common Commands Type Command What it does DDL CREATE Builds a new table DDL ALTER Changes an existing table’s structure DDL DROP Deletes a table entirely DML INSERT Adds new records DML UPDATE Changes existing records DML DELETE Removes records DML SELECT Reads/retrieves records Examples of Each Command CREATE => build a new table CREATE TABLE customers ( customer_id SERIAL PRIMARY KEY, full_name VARCHAR(100) NOT NULL, email VARCHAR(80) UNIQUE NOT NULL, phone_number VARCHAR(15) UNIQUE NOT NULL, city VARCHAR(50) ); Table ‘customers’ created successfully. ALTER => add a new column ALTER TABLE customers ADD COLUMN loyalty_points INT NOT NULL DEFAULT 0; Table ‘customers’ altered successfully. DROP => delete a table entirely DROP TABLE customers; Table ‘customers’ dropped successfully. INSERT => add a new customer INSERT INTO customers (full_name, email, phone_number, city) VALUES (‘Grace Wambui’, ‘grace.wambui@gmail.com’, ‘0711223344’, ‘Nairobi’); 1 row inserted. UPDATE => change an order’s status UPDATE orders SET status = ‘Delivered’ WHERE order_id = 2; 1 row updated. DELETE => remove a cancelled order DELETE FROM orders WHERE order_id = 4; 1 row deleted. SELECT => view all orders SELECT * FROM orders; order_id customer_id status 1 1 Delivered 2 2 Delivered This is the simplest way for me to remember this DDL builds the structure. DML runs the business inside it. Once you understand the difference between the two, half the confusion around SQL commands disappears.