DDL refers to the SQL commands used to define, modify, and remove the structure of database objects such as tables, schemas, and indexes.
๐งฑ CREATE โ Create New Database Objects
Used to create tables, databases, views, indexes, etc.
๐ Example:
-- Step 1: Create the students table
CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
grade CHAR(2)
);
-- Step 2: Insert some sample student data
INSERT INTO students (id, name, grade) VALUES
(1, 'Swastika', 'A+'),
(2, 'Anya', 'B'),
(3, 'Rahul', 'A'),
(4, 'Neha', 'C');
-- Step 3: View the student records
SELECT * FROM students;๐ธ Creates a table named students with 4 columns
๐งฐ ALTER โ Modify an Existing Table
Used to add, modify, or drop columns and constraints.
๐ Add a column:
-- Step 1: Create the students table
-- Step 2: Insert some sample student data
ALTER TABLE students ADD email VARCHAR(100);
-- Step 3: View the student recordsโ๏ธWhat this does:
Adds a new column named
emailto the existingstudentstable.The column type is
VARCHAR(100)โ it can store email addresses up to 100 characters.
๐ Modify a column:
-- Step 1: Create the students table
-- Step 2: Insert some sample student data
-- Step 3: Modify grade column type
ALTER TABLE students
ALTER COLUMN grade VARCHAR(5);
INSERT INTO students (id, name, grade) VALUES
(5, 'Ishaan', 'FAIL');
-- Step 5: View the student records๐ What this does:
Changes the data type of the
gradecolumn fromCHAR(2)(or whatever it was) toVARCHAR(5).
โ Why do this?
Allows storing longer grade values like
'A++','FAIL','B+1', etc.
๐๏ธ DROP โ Delete Database Objects
Permanently deletes a table, database, or view
๐ Drop a table:
DROP TABLE students;๐งน TRUNCATE โ Delete All Records from a Table
Removes all rows from a table, but keeps its structure
๐ Example:
TRUNCATE TABLE students;โก Faster than DELETE
โ Cannot be rolled back in many databases
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DDL Commands โ Try It Yourself</title>
<style>
.infographic-ddlrunner {
--ink: #1a1a1a;
--ink-soft: #5c5c5c;
--paper: #ffffff;
--paper-alt: #f0ece4;
--accent: #2563eb;
--accent-soft:#e3ebfd;
--line: #ddd6c9;
--good: #16a34a;
--good-soft: #dcfce7;
--bad: #dc2626;
--bad-soft: #fee2e2;
--on-accent: #ffffff;
--display-font: Georgia, 'Iowan Old Style', serif;
--body-font: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
--mono-font: 'SF Mono', Consolas, monospace;
background: var(--paper);
color: var(--ink);
font-family: var(--body-font);
max-width: 780px;
margin: 0 auto;
box-sizing: border-box;
overflow-x: hidden;
}
.infographic-ddlrunner[data-theme="dark"] {
--ink: #e8e6e1;
--ink-soft: #9a968c;
--paper: #121212;
--paper-alt: #1e1e26;
--accent: #5b8def;
--accent-soft:#202942;
--line: #2c313d;
--good: #4ade80;
--good-soft: #123420;
--bad: #f87171;
--bad-soft: #3a1414;
--on-accent: #101418;
}
.infographic-ddlrunner * { box-sizing: border-box; }
.dd-topbar { display: flex; justify-content: flex-end; margin-bottom: 0.75rem; }
.dd-showfull-btn {
font: inherit;
font-size: 0.78rem;
background: none;
border: 1px solid var(--line);
border-radius: 999px;
padding: 0.35rem 0.8rem;
cursor: pointer;
color: var(--ink-soft);
}
.dd-showfull-btn:hover { border-color: var(--accent); color: var(--accent); }
.dd-showfull-btn.is-on { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }
.dd-fullcode-panel { display: none; margin-bottom: 1.25rem; }
.dd-fullcode-panel.is-visible { display: block; }
.dd-fullcode-scroll { overflow-x: auto; }
.dd-fullcode {
background: var(--ink);
color: #d4e2ff;
border-radius: 8px;
padding: 1rem 1.2rem;
font-family: var(--mono-font);
font-size: 0.76rem;
line-height: 1.7;
white-space: pre;
opacity: 0.85;
display: inline-block;
min-width: 100%;
}
.infographic-ddlrunner[data-theme="dark"] .dd-fullcode { background: #05070a; }
.dd-frame {
background: var(--paper-alt);
border: 1px solid var(--line);
border-radius: 10px;
padding: 1.25rem;
}
.dd-kw { color: #9cc5ff; }
.dd-str { color: #f8d980; }
.dd-num { color: #4ade80; }
.dd-cm { color: #7c8aa8; }
.dd-step { display: none; margin-bottom: 1rem; }
.dd-step.is-revealed { display: block; animation: dd-step-in 0.4s ease; }
@keyframes dd-step-in { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
.dd-step.is-done .dd-step-code-full { display: none; }
.dd-step.is-done .dd-step-done-pill { display: flex; }
.dd-step-done-pill {
display: none;
align-items: center;
gap: 0.5rem;
background: var(--good-soft);
color: var(--good);
border-radius: 7px;
padding: 0.55rem 0.85rem;
font-family: var(--mono-font);
font-size: 0.8rem;
cursor: pointer;
}
.dd-step-done-pill .chevron { margin-left: auto; font-size: 0.7rem; opacity: 0.7; }
.dd-step.is-expanded-done .dd-step-code-full { display: block; }
.dd-step.is-expanded-done .dd-step-done-pill { background: var(--accent-soft); color: var(--accent); }
.dd-code-scroll { overflow-x: auto; }
.dd-code {
background: var(--ink);
color: #d4e2ff;
border-radius: 8px;
padding: 0.9rem 1.1rem;
font-family: var(--mono-font);
font-size: 0.78rem;
line-height: 1.7;
white-space: pre;
display: inline-block;
min-width: 100%;
}
.infographic-ddlrunner[data-theme="dark"] .dd-code { background: #05070a; }
.dd-run-row { display: flex; justify-content: center; gap: 0.6rem; flex-wrap: wrap; margin-top: 0.85rem; }
.dd-run-btn {
font: inherit;
font-size: 0.83rem;
background: var(--accent);
color: var(--on-accent);
border: none;
border-radius: 7px;
padding: 0.55rem 1rem;
cursor: pointer;
}
.dd-run-btn:hover { opacity: 0.9; }
.dd-run-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.dd-run-btn.is-danger { background: var(--bad); }
.dd-run-btn.is-secondary { background: var(--paper); color: var(--ink); border: 1px solid var(--line); }
.dd-output-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--ink-soft); margin: 1.1rem 0 0.6rem; }
.dd-table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; min-width: 0; }
table.dd-table {
width: 100%;
min-width: 320px;
border-collapse: collapse;
background: var(--paper);
border-radius: 8px;
font-size: 0.85rem;
}
table.dd-table th, table.dd-table td {
border: 1px solid var(--line);
padding: 0.5rem 0.65rem;
text-align: left;
white-space: nowrap;
transition: background 0.3s, color 0.3s;
}
table.dd-table th { background: var(--accent); color: var(--on-accent); font-weight: 700; font-size: 0.72rem; }
table.dd-table th.is-new-col, table.dd-table td.is-new-col { animation: dd-col-in 1.1s ease; }
@keyframes dd-col-in { 0%,35% { background: var(--good-soft); } 100% { background: transparent; } }
table.dd-table tr.is-new td { animation: dd-row-in 1.1s ease; }
@keyframes dd-row-in { 0%,35% { background: var(--good-soft); } 100% { background: transparent; } }
table.dd-table td.is-null { color: var(--ink-soft); font-style: italic; }
table.dd-table tr.is-removing td { opacity: 0.3; text-decoration: line-through; background: var(--bad-soft); }
.dd-gone-note {
text-align: center;
font-size: 0.88rem;
color: var(--bad);
background: var(--bad-soft);
border-radius: 8px;
padding: 0.9rem 1rem;
display: none;
}
.dd-gone-note.is-visible { display: block; }
.dd-status {
text-align: center;
font-size: 0.83rem;
margin-top: 0.85rem;
padding: 0.55rem 0.8rem;
border-radius: 7px;
display: none;
}
.dd-status.is-visible { display: block; animation: dd-step-in 0.3s ease; }
.dd-status.st-good { color: var(--good); background: var(--good-soft); }
.dd-status.st-bad { color: var(--bad); background: var(--bad-soft); }
.dd-reset-row { display: flex; justify-content: center; margin-top: 1.25rem; }
@media (prefers-reduced-motion: reduce) {
.infographic-ddlrunner *, .infographic-ddlrunner *::before, .infographic-ddlrunner *::after {
transition-duration: 0.001ms !important;
animation-duration: 0.001ms !important;
}
}
</style>
</head>
<body>
<div class="infographic-ddlrunner" id="ddlrunner">
<div class="dd-topbar">
<button class="dd-showfull-btn" id="ddShowFullBtn" type="button">๐๏ธ Show full SQL script</button>
</div>
<div class="dd-fullcode-panel" id="ddFullCodePanel">
<div class="dd-fullcode-scroll">
<div class="dd-fullcode"><span class="dd-cm">-- Step 1: Create the students table</span>
<span class="dd-kw">CREATE TABLE</span> students (
id <span class="dd-kw">INT PRIMARY KEY</span>,
name <span class="dd-kw">VARCHAR</span>(50),
grade <span class="dd-kw">CHAR</span>(2)
);
<span class="dd-cm">-- Step 2: Insert some sample student data</span>
<span class="dd-kw">INSERT INTO</span> students (id, name, grade) <span class="dd-kw">VALUES</span>
(<span class="dd-num">1</span>, <span class="dd-str">'Swastika'</span>, <span class="dd-str">'A+'</span>),
(<span class="dd-num">2</span>, <span class="dd-str">'Anya'</span>, <span class="dd-str">'B'</span>),
(<span class="dd-num">3</span>, <span class="dd-str">'Rahul'</span>, <span class="dd-str">'A'</span>),
(<span class="dd-num">4</span>, <span class="dd-str">'Neha'</span>, <span class="dd-str">'C'</span>);
<span class="dd-cm">-- Step 3: Add a new column</span>
<span class="dd-kw">ALTER TABLE</span> students <span class="dd-kw">ADD</span> email <span class="dd-kw">VARCHAR</span>(100);
<span class="dd-cm">-- Step 4: Widen the grade column, then insert a longer value</span>
<span class="dd-kw">ALTER TABLE</span> students
<span class="dd-kw">ALTER COLUMN</span> grade <span class="dd-kw">VARCHAR</span>(5);
<span class="dd-kw">INSERT INTO</span> students (id, name, grade) <span class="dd-kw">VALUES</span>
(<span class="dd-num">5</span>, <span class="dd-str">'Ishaan'</span>, <span class="dd-str">'FAIL'</span>);
<span class="dd-cm">-- Step 5a: Permanently delete the table...</span>
<span class="dd-kw">DROP TABLE</span> students;
<span class="dd-cm">-- ...or Step 5b: keep structure, remove all rows instead</span>
<span class="dd-kw">TRUNCATE TABLE</span> students;</div>
</div>
</div>
<div class="dd-frame">
<!-- Step: CREATE -->
<div class="dd-step is-revealed" id="stepCreate">
<div class="dd-step-done-pill" data-step="Create"><span>โ CREATE + INSERT ran</span><span class="chevron">โพ view code</span></div>
<div class="dd-step-code-full">
<div class="dd-code-scroll">
<div class="dd-code"><span class="dd-cm">-- Step 1: Create the students table</span>
<span class="dd-kw">CREATE TABLE</span> students (
id <span class="dd-kw">INT PRIMARY KEY</span>,
name <span class="dd-kw">VARCHAR</span>(50),
grade <span class="dd-kw">CHAR</span>(2)
);
<span class="dd-cm">-- Step 2: Insert some sample student data</span>
<span class="dd-kw">INSERT INTO</span> students (id, name, grade) <span class="dd-kw">VALUES</span>
(<span class="dd-num">1</span>, <span class="dd-str">'Swastika'</span>, <span class="dd-str">'A+'</span>),
(<span class="dd-num">2</span>, <span class="dd-str">'Anya'</span>, <span class="dd-str">'B'</span>),
(<span class="dd-num">3</span>, <span class="dd-str">'Rahul'</span>, <span class="dd-str">'A'</span>),
(<span class="dd-num">4</span>, <span class="dd-str">'Neha'</span>, <span class="dd-str">'C'</span>);</div>
</div>
<div class="dd-run-row">
<button class="dd-run-btn" id="ddCreateBtn" type="button">โถ Run CREATE + INSERT</button>
</div>
</div>
</div>
<!-- Step: ALTER ADD -->
<div class="dd-step" id="stepAlterAdd">
<div class="dd-step-done-pill" data-step="AlterAdd"><span>โ ALTER (add column) ran</span><span class="chevron">โพ view code</span></div>
<div class="dd-step-code-full">
<div class="dd-code-scroll">
<div class="dd-code"><span class="dd-cm">-- Add a new column</span>
<span class="dd-kw">ALTER TABLE</span> students <span class="dd-kw">ADD</span> email <span class="dd-kw">VARCHAR</span>(100);</div>
</div>
<div class="dd-run-row">
<button class="dd-run-btn" id="ddAlterAddBtn" type="button">โถ Run ALTER (add column)</button>
</div>
</div>
</div>
<!-- Step: ALTER MODIFY -->
<div class="dd-step" id="stepAlterModify">
<div class="dd-step-done-pill" data-step="AlterModify"><span>โ ALTER (modify + insert) ran</span><span class="chevron">โพ view code</span></div>
<div class="dd-step-code-full">
<div class="dd-code-scroll">
<div class="dd-code"><span class="dd-cm">-- Widen the grade column, then insert a longer grade value</span>
<span class="dd-kw">ALTER TABLE</span> students
<span class="dd-kw">ALTER COLUMN</span> grade <span class="dd-kw">VARCHAR</span>(5);
<span class="dd-kw">INSERT INTO</span> students (id, name, grade) <span class="dd-kw">VALUES</span>
(<span class="dd-num">5</span>, <span class="dd-str">'Ishaan'</span>, <span class="dd-str">'FAIL'</span>);</div>
</div>
<div class="dd-run-row">
<button class="dd-run-btn" id="ddAlterModifyBtn" type="button">โถ Run ALTER (modify + insert)</button>
</div>
</div>
</div>
<!-- Step: DROP / TRUNCATE -->
<div class="dd-step" id="stepFinal">
<p class="dd-output-label" style="margin-top:0;">Choose one ending</p>
<div class="dd-code-scroll">
<div class="dd-code"><span class="dd-cm">-- Permanently delete the table...</span>
<span class="dd-kw">DROP TABLE</span> students;
<span class="dd-cm">-- ...or keep structure, remove all rows instead</span>
<span class="dd-kw">TRUNCATE TABLE</span> students;</div>
</div>
<div class="dd-run-row">
<button class="dd-run-btn is-danger" id="ddDropBtn" type="button">โถ Run DROP</button>
<button class="dd-run-btn is-danger" id="ddTruncateBtn" type="button">โถ Run TRUNCATE</button>
</div>
</div>
<p class="dd-status" id="ddStatus"></p>
<p class="dd-output-label">Table: students</p>
<div class="dd-table-scroll" id="ddTableScroll">
<table class="dd-table" id="ddTable">
<thead id="ddThead"><tr><th>id</th><th>name</th><th>grade</th></tr></thead>
<tbody id="ddTbody"></tbody>
</table>
</div>
<p class="dd-gone-note" id="ddGoneNote">๐๏ธ Table "students" no longer exists โ structure and data are both gone.</p>
<div class="dd-reset-row">
<button class="dd-run-btn is-secondary" id="ddReset" type="button">โบ Reset</button>
</div>
</div>
</div>
<script>
(function () {
const wrapper = document.getElementById('ddlrunner');
const bodyAttr = document.body.getAttribute('data-darkmode');
let dark;
if (bodyAttr === 'true') {
dark = true;
} else if (bodyAttr === 'false') {
dark = false;
} else {
const match = document.cookie.match(/(?:^|;\s*)darkMode=([^;]+)/);
dark = match ? match[1] === 'true' : false;
}
if (dark) wrapper.setAttribute('data-theme', 'dark');
})();
/* show full code toggle */
(function () {
const btn = document.getElementById('ddShowFullBtn');
const panel = document.getElementById('ddFullCodePanel');
btn.addEventListener('click', () => {
const on = panel.classList.toggle('is-visible');
btn.classList.toggle('is-on', on);
btn.textContent = on ? '๐๏ธ Hide full SQL script' : '๐๏ธ Show full SQL script';
});
})();
/* done-pill expand/collapse for finished steps */
(function () {
document.querySelectorAll('.dd-step-done-pill').forEach(pill => {
pill.addEventListener('click', () => {
const step = pill.closest('.dd-step');
step.classList.toggle('is-expanded-done');
pill.querySelector('.chevron').textContent = step.classList.contains('is-expanded-done') ? 'โด hide code' : 'โพ view code';
});
});
})();
(function () {
const baseRows = [
[1, 'Swastika', 'A+'],
[2, 'Anya', 'B'],
[3, 'Rahul', 'A'],
[4, 'Neha', 'C']
];
const stepCreate = document.getElementById('stepCreate');
const stepAlterAdd = document.getElementById('stepAlterAdd');
const stepAlterModify = document.getElementById('stepAlterModify');
const stepFinal = document.getElementById('stepFinal');
const createBtn = document.getElementById('ddCreateBtn');
const alterAddBtn = document.getElementById('ddAlterAddBtn');
const alterModifyBtn = document.getElementById('ddAlterModifyBtn');
const dropBtn = document.getElementById('ddDropBtn');
const truncateBtn = document.getElementById('ddTruncateBtn');
const resetBtn = document.getElementById('ddReset');
const thead = document.getElementById('ddThead');
const tbody = document.getElementById('ddTbody');
const tableScroll = document.getElementById('ddTableScroll');
const goneNote = document.getElementById('ddGoneNote');
const status = document.getElementById('ddStatus');
function showStatus(text, kind) {
status.textContent = text;
status.className = 'dd-status is-visible st-' + kind;
}
function markDone(stepEl) {
stepEl.classList.add('is-done');
}
function revealNext(stepEl) {
stepEl.classList.add('is-revealed');
stepEl.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}
function renderBaseRows() {
tbody.innerHTML = '';
baseRows.forEach(r => {
const tr = document.createElement('tr');
tr.className = 'is-new';
tr.dataset.id = r[0];
tr.innerHTML = '<td>' + r[0] + '</td><td>' + r[1] + '</td><td>' + r[2] + '</td>';
tbody.appendChild(tr);
});
}
createBtn.addEventListener('click', () => {
createBtn.disabled = true;
createBtn.textContent = 'Running...';
setTimeout(() => {
renderBaseRows();
showStatus('โ๏ธ Table created, 4 rows inserted. Scroll down to see it.', 'good');
markDone(stepCreate);
revealNext(stepAlterAdd);
}, 400);
});
alterAddBtn.addEventListener('click', () => {
alterAddBtn.disabled = true;
alterAddBtn.textContent = 'Running...';
setTimeout(() => {
const th = document.createElement('th');
th.textContent = 'email';
th.className = 'is-new-col';
thead.querySelector('tr').appendChild(th);
tbody.querySelectorAll('tr').forEach(tr => {
const td = document.createElement('td');
td.className = 'is-null is-new-col';
td.textContent = 'NULL';
tr.appendChild(td);
});
showStatus('โ๏ธ Column "email" added โ existing rows get NULL. Look at the table below.', 'good');
markDone(stepAlterAdd);
revealNext(stepAlterModify);
}, 450);
});
alterModifyBtn.addEventListener('click', () => {
alterModifyBtn.disabled = true;
alterModifyBtn.textContent = 'Running...';
setTimeout(() => {
const tr = document.createElement('tr');
tr.className = 'is-new';
tr.dataset.id = 5;
tr.innerHTML = '<td>5</td><td>Ishaan</td><td>FAIL</td><td class="is-null">NULL</td>';
tbody.appendChild(tr);
showStatus('โ๏ธ grade widened to VARCHAR(5) โ "FAIL" now fits as a new row.', 'good');
markDone(stepAlterModify);
revealNext(stepFinal);
}, 450);
});
dropBtn.addEventListener('click', () => {
dropBtn.disabled = true;
truncateBtn.disabled = true;
dropBtn.textContent = 'Running...';
tbody.querySelectorAll('tr').forEach(tr => tr.classList.add('is-removing'));
setTimeout(() => {
tableScroll.style.display = 'none';
goneNote.classList.add('is-visible');
showStatus('โ Table and all data permanently removed.', 'bad');
}, 500);
});
truncateBtn.addEventListener('click', () => {
dropBtn.disabled = true;
truncateBtn.disabled = true;
truncateBtn.textContent = 'Running...';
tbody.querySelectorAll('tr').forEach(tr => tr.classList.add('is-removing'));
setTimeout(() => {
tbody.innerHTML = '';
showStatus('โ All rows removed โ but table structure (and email column) still exists.', 'bad');
}, 500);
});
resetBtn.addEventListener('click', () => {
thead.innerHTML = '<tr><th>id</th><th>name</th><th>grade</th></tr>';
tbody.innerHTML = '';
tableScroll.style.display = '';
goneNote.classList.remove('is-visible');
status.classList.remove('is-visible');
[stepCreate, stepAlterAdd, stepAlterModify, stepFinal].forEach(s => {
s.classList.remove('is-done', 'is-expanded-done');
});
stepCreate.classList.add('is-revealed');
[stepAlterAdd, stepAlterModify, stepFinal].forEach(s => s.classList.remove('is-revealed'));
createBtn.disabled = false;
createBtn.textContent = 'โถ Run CREATE + INSERT';
alterAddBtn.disabled = false;
alterAddBtn.textContent = 'โถ Run ALTER (add column)';
alterModifyBtn.disabled = false;
alterModifyBtn.textContent = 'โถ Run ALTER (modify + insert)';
dropBtn.disabled = false;
dropBtn.textContent = 'โถ Run DROP';
truncateBtn.disabled = false;
truncateBtn.textContent = 'โถ Run TRUNCATE';
});
})();
</script>
</body>
</html>.demo {
font-family: system-ui, sans-serif;
padding: 16px;
}
.demo h1 {
color: #2563eb;
margin: 0 0 8px;
}
.demo p {
color: #4b5563;
margin: 0;
}document.querySelector('.demo h1')?.addEventListener('click', () => {
alert('Hello from live preview!');
});โ Summary of DDL Commands
Command | Purpose |
|---|---|
๐งฑ | Define a new table or database |
๐งฐ | Modify structure of an existing table |
๐๏ธ | Delete table or database completely |
๐งน | Remove all data, keep table structure |