The SQL Environment: DDL / DML / DCL, Catalog & Schema
◈ 3 cardsSort every SQL command into its three families (DDL / DML / DCL) and pin down the catalog → schema → object hierarchy the DBMS maintains for you.
One language, three jobs
SQL looks like a single language, but its commands split into three functional families, and the exam routinely asks you to drop a command into the right bucket:
- Data Definition Language (DDL) — commands that define structure:
CREATE,ALTER,DROP(plusTRUNCATEin many systems). They build and change tables, views, indexes, and constraints. In a production shop DDL is usually restricted to the DBA, because changing structure is high-stakes. DDL is the work of the Physical Design and Implementation SDLC phases. - Data Manipulation Language (DML) — commands that work with data inside the structure:
SELECT,INSERT,UPDATE,DELETE. This is what most users run all day;SELECTis by far the most complex and most-used SQL statement, and it carries you from Implementation through the entire Maintenance life of the database. - Data Control Language (DCL) — commands that control access and transactions:
GRANT,REVOKE(and, in the broad sense,COMMIT/ROLLBACK). DCL is the DBA's security and transaction lever.
A one-line memory hook: DDL = what exists, DML = what the data says, DCL = who can do what.
Worked example: classify a command list
Given this list, label each command:
CREATE TABLE student ... → DDL (defines structure)
INSERT INTO student ... → DML (changes data)
SELECT * FROM student ... → DML (queries data)
GRANT SELECT ON student → DCL (controls access)
ALTER TABLE student ... → DDL (changes structure)
REVOKE SELECT ON student → DCL (controls access)
The test is always what does it touch — the schema (DDL), the rows (DML), or the permissions/transaction (DCL)?
Catalog, schema, and the information schema
The DBMS keeps a self-describing hierarchy of metadata:
- A catalog is the complete description of one database — the full set of schemas taken together. The DBMS maintains it automatically: every
CREATE TABLEorDROP VIEWyou run silently updates the catalog. You never hand-edit it; you can browse it with ordinarySELECTs. - A schema is a named collection of objects (base tables, views, domains, constraints, triggers) belonging to one user or application — a namespace inside a catalog. Many schemas can live in one catalog, so the same table name can exist in two schemas without collision (you qualify with
owner.tableto disambiguate). - Every catalog contains at least one information schema that describes all the other schemas and their objects — metadata about the metadata.
The analogy that sticks: a catalog is the whole library's card catalog (it describes everything in the library), while a schema is one author's shelf within it. A company might keep a DEV catalog and a PROD catalog, each with its own schemas, so development never touches live business data.