Skip to content

SQL Language

SQL Data Definition Language (DDL)

DDL is used to define and manage schema objects such as tables, views, and indexes. It includes commands like CREATE, ALTER, DROP, TRUNCATE, etc.


Creating Tables

The CREATE TABLE statement is used to define a new table with its columns and datatypes.

sql
CREATE TABLE table_name (
  column1 datatype,
  column2 datatype,
  ...
);

Example:

sql
CREATE TABLE Persons (
  ID int NOT NULL,
  LastName varchar(255) NOT NULL,
  FirstName varchar(255),
  Age int,
  PRIMARY KEY (ID)
);

CREATE TABLE Orders (
  OrderID int NOT NULL,
  OrderNumber int NOT NULL,
  PersonID int,
  PRIMARY KEY (OrderID),
  FOREIGN KEY (PersonID) REFERENCES Persons(ID)
);

Create a Table from an Existing Table:

sql
CREATE TABLE new_table_name AS
SELECT column1, column2, ...
FROM existing_table_name
WHERE ...;

Key Points:

  • PRIMARY KEY uniquely identifies a row.

  • FOREIGN KEY enforces referential integrity between tables.

  • Use NOT NULL to disallow null values in a column.


Altering Tables

The ALTER TABLE statement is used to modify an existing table’s structure.

sql
ALTER TABLE table_name 
ADD column_name datatype;

ALTER TABLE table_name 
DROP COLUMN column_name;

ALTER TABLE table_name 
MODIFY COLUMN column_name datatype;

Add Constraints:

sql
ALTER TABLE Persons 
ADD CONSTRAINT PK_Person PRIMARY KEY (ID, LastName);

Add Foreign Key Later:

sql
ALTER TABLE Orders 
ADD FOREIGN KEY (PersonID) REFERENCES Persons(ID);

Dropping Schema Objects

The DROP command is used to delete database objects permanently.

sql
DROP TABLE table_name;
DROP SCHEMA schema_name CASCADE;
DROP SCHEMA schema_name RESTRICT;
  • CASCADE: Deletes dependent objects as well.

  • RESTRICT: Fails if dependencies exist.


Truncating and Renaming

Truncate a Table (Delete All Rows):

sql
TRUNCATE TABLE table_name;

Rename a Database:

sql
RENAME DATABASE old_database_name TO new_database_name;

Other Alter Table Examples

sql
ALTER TABLE COMPANY.EMPLOYEE 
ADD COLUMN Job VARCHAR(12);

ALTER TABLE COMPANY.EMPLOYEE 
DROP COLUMN Address CASCADE;

ALTER TABLE COMPANY.DEPARTMENT 
ALTER COLUMN Mgr_ssn DROP DEFAULT;

ALTER TABLE COMPANY.DEPARTMENT 
ALTER COLUMN Mgr_ssn SET DEFAULT '333445555';

ALTER TABLE COMPANY.EMPLOYEE 
DROP CONSTRAINT EMPSUPERFK CASCADE;

Viewing Table Structure

Use DESCRIBE to see the structure of a table:

sql
DESCRIBE table_name;
DESC table_name;

SQL Data Manipulation Language (DML)

DML is used to insert, update, and delete data in tables.


Inserting Data

With Column Names:

sql
INSERT INTO table_name (column1, column2, column3)
VALUES (value1, value2, value3);

Without Column Names (All Columns):

sql
INSERT INTO table_name
VALUES (value1, value2, value3);

Examples:

sql
INSERT INTO Persons (ID, Lastname, Firstname, Age)
VALUES (1001, 'Bobby', 'Brown', 29);

INSERT INTO Persons VALUES (1002, 'Stella', 'Green', 36);
INSERT INTO Orders VALUES (101, 1011, NULL);

Updating Data

Update modifies existing rows in a table.

sql
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

Example:

sql
UPDATE Orders 
SET Personid = 1001 
WHERE OrderId = 101;

Deleting Data

sql
DELETE FROM table_name
WHERE condition;

Note: Omitting the WHERE clause will delete all rows from the table.

SQL Data Query Language (DQL)

DQL is primarily used to query data using the SELECT statement.


Basic SELECT Queries

sql
SELECT column1, column2
FROM table_name;

SELECT * FROM table_name;

SELECT DISTINCT column 
FROM table_name;

SELECT – FROM – WHERE Structure

This is the fundamental structure of a query.

sql
SELECT <attribute_list>
FROM <table_list>
WHERE <condition>;

Filtering Rows with WHERE

sql
SELECT * FROM Persons 
WHERE age = 36;

SELECT * FROM Persons 
WHERE age BETWEEN 20 AND 30;

Retrieve Specific Attributes

Get the birth date and address of an employee named John B. Smith:

sql
SELECT Bdate, Address
FROM EMPLOYEE
WHERE Fname = 'John' 
  AND Minit = 'B' 
  AND Lname = 'Smith';

Pattern Matching with LIKE

Used for filtering text with wildcards.

Wildcards:

  • % – Any sequence of characters

  • _ – A single character

sql
SELECT * FROM persons 
WHERE lastname LIKE 'S%';   -- Starts with 'S'

SELECT * FROM persons 
WHERE lastname LIKE '%n';   -- Ends with 'n'

SELECT * FROM persons 
WHERE lastname LIKE '%o%';  -- Contains 'o'

Aliasing

Used to rename columns or tables temporarily in a query.

For Columns:

sql
SELECT id AS Identity_number 
FROM persons;

SELECT lastname || firstname AS name 
FROM persons;

SELECT lastname || ', ' || firstname AS name 
FROM persons;

For Tables:

sql
SELECT p.id, o.ordernumber
FROM persons AS p, orders AS o
WHERE p.id = o.person_id;

Joining Tables

Combining rows from two or more tables based on related columns.

Simple Join:

sql
SELECT persons.id, persons.age, orders.ordernumber
FROM persons, orders
WHERE persons.id = orders.person_id;

Multi-table Join:

Get project number, department number, and manager’s details for projects in Stafford:

sql
SELECT Pnumber, Dnum, Lname, Address, Bdate
FROM PROJECT, DEPARTMENT, EMPLOYEE
WHERE Dnum = Dnumber 
  AND Mgr_ssn = Ssn 
  AND Plocation = 'Stafford';

Join with Filtering:

Get names and addresses of employees in the Research department:

sql
SELECT Fname, Lname, Address
FROM EMPLOYEE, DEPARTMENT
WHERE Dname = 'Research' 
  AND Dnumber = Dno;

Join with Common Column Names:

When tables have overlapping column names, qualify with table names:

sql
SELECT Fname, EMPLOYEE.Name, Address
FROM EMPLOYEE, DEPARTMENT
WHERE DEPARTMENT.Name = 'Research'
  AND DEPARTMENT.Dnumber = EMPLOYEE.Dnumber;

SQL Comments

Used to annotate code.

sql
-- Single-line comment

/* Multi-line
   comment */

Key Points

  • Use DDL for schema design.

  • Use DML for managing table data.

  • Use DQL (SELECT) for retrieving data.

  • Use aliases and joins to write cleaner and more efficient queries.

  • Always use WHERE clause in UPDATE and DELETE to avoid accidental data loss.

  • Use DESC or DESCRIBE to check table structure.

Made with ❤️ for students, by a fellow learner.