SQL Data Manipulation Language (DML)
Data Manipulation Language (DML) statements are used to add, change, and remove data in your database. These are the most frequently used commands in SQL.
Core DML Commands
1. INSERT
The INSERT statement is used to add new records (rows) into a table.
Syntax:
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
You can also insert multiple rows at once:
INSERT INTO table_name (column1, column2)
VALUES
(value1a, value2a),
(value1b, value2b);
Example: Inserting a new customer
Assume a Customers table with columns CustomerID, FirstName, and LastName.
INSERT INTO Customers (CustomerID, FirstName, LastName)
VALUES (101, 'Alice', 'Smith');
2. UPDATE
The UPDATE statement is used to modify existing records in a table.
Syntax:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
The WHERE clause is crucial. If omitted, all rows in the table will be updated.
Example: Updating a customer's last name
Update the last name of the customer with CustomerID 101.
UPDATE Customers
SET LastName = 'Johnson'
WHERE CustomerID = 101;
Tip: Always test UPDATE statements with a SELECT query using the same WHERE clause first to ensure you are targeting the correct rows.
3. DELETE
The DELETE statement is used to remove existing records from a table.
Syntax:
DELETE FROM table_name
WHERE condition;
Similar to UPDATE, omitting the WHERE clause will delete all records in the table.
Example: Deleting an inactive customer
Delete the customer with CustomerID 101.
DELETE FROM Customers
WHERE CustomerID = 101;
Tip: For bulk deletion or if you intend to remove all rows and reset the table's identity, consider using TRUNCATE TABLE (if supported by your RDBMS), which is often faster and resets the identity counter.
4. SELECT (Data Retrieval)
While often categorized under Data Query Language (DQL), SELECT is fundamental to data manipulation as you often need to retrieve data before deciding how to modify or delete it.
Basic Syntax:
SELECT column1, column2, ...
FROM table_name
WHERE condition;
Example: Selecting customers from a specific city
Retrieve the first name and last name of all customers living in 'New York'.
SELECT FirstName, LastName
FROM Customers
WHERE City = 'New York';
Working with Transactions
DML operations are often performed within transactions to ensure data integrity. Transactions group a sequence of operations into a single logical unit of work.
BEGIN TRANSACTION/START TRANSACTION: Initiates a new transaction.COMMIT: Saves all changes made during the transaction permanently.ROLLBACK: Undoes all changes made during the transaction.
Example: Transaction for transferring funds
Imagine transferring $100 from Account A to Account B.
BEGIN TRANSACTION;
UPDATE Accounts
SET Balance = Balance - 100
WHERE AccountID = 'A';
UPDATE Accounts
SET Balance = Balance + 100
WHERE AccountID = 'B';
-- Check if both updates were successful and balances are valid
-- If all checks pass:
COMMIT;
-- If any check fails or an error occurs:
-- ROLLBACK;
Common DML Scenarios
Copying Data Between Tables
You can use INSERT INTO ... SELECT to copy data from one table to another, potentially with modifications or filtering.
INSERT INTO NewTable (ColumnA, ColumnB)
SELECT SourceColumn1, SourceColumn2
FROM SourceTable
WHERE SomeCondition;
Merging Data
Often, you'll need to update existing records if they match a condition or insert them if they don't. This is commonly handled with `MERGE` statements (in SQL Server, Oracle) or a combination of `UPDATE` and `INSERT` in other RDBMS.
Bulk Operations
For large amounts of data, consider using database-specific bulk loading utilities or optimized `INSERT` statements. Ensure your transactions are managed efficiently to avoid locking issues and excessive logging.
| Command | Purpose | Example |
|---|---|---|
INSERT |
Add new rows | INSERT INTO Products (Name, Price) VALUES ('Gadget', 19.99); |
UPDATE |
Modify existing rows | UPDATE Products SET Price = 21.99 WHERE Name = 'Gadget'; |
DELETE |
Remove rows | DELETE FROM Products WHERE Name = 'Gadget'; |
SELECT |
Retrieve rows | SELECT * FROM Products WHERE Price > 50; |
Mastering DML statements is essential for effective database management. Always use the WHERE clause carefully and consider the implications of your operations, especially in production environments.