DDL - Data Definition Language create SOMETHING drop SOMETHING create database blah; drop database blah; create table product ( id bigint unsigned auto_increment, name varchar(100), description text, available date, price number(12,2), primary key(id) ); drop table product; alter table product add expire date null; alter table product drop price; rename blah to glah DML - Data Manipulation Language INSERT - data into db SELECT - get data out of db UPDATE - change data in db DELETE - remove data from db INSERT tablename (column1,column2) VALUES (value1,value2); SELECT column1,column2 FROM table1,table2 WHERE condition1 AND condition2 AND condition3 SELECT * FROM PRODUCT WHERE PRODUCTID=2 UPDATE tablename SET column1=value1 WHERE condition1 AND condition2 UPDATE PRODUCT SET DESCRIPTION='Slightly used Computer.' WHERE PRODUCTID=2; DELETE FROM tablename WHERE condition1 AND condition2; DELETE FROM PRODUCT WHERE PRODUCTID=2; DELETE FROM PRODUCT WHERE LOWER(DESCRIPTION) LIKE '%computer%'; --------------------------------------- joining tables SELECT a.something, b.something FROM table1 a, table2 b WHERE a.id = b.someid employee: mysql> desc employee; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(30) | YES | | NULL | | | email | varchar(60) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ worksfor: +--------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------------+------+-----+---------+-------+ | employeeid | int(11) | NO | PRI | 0 | | | departmentid | int(11) | NO | PRI | 0 | | | salary | decimal(12,2) | NO | | 0.00 | | +--------------+---------------+------+-----+---------+-------+ mysql> desc department; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | name | varchar(40) | YES | | NULL | | +-------+-------------+------+-----+---------+----------------+ SELECT employee.id, employee.name, worksfor.salary, department.name FROM employee, worksfor, department WHERE employee.id = worksfor.employeeid and worksfor.departmentid = department.id +----+-------+----------+------+ | id | name | salary | name | +----+-------+----------+------+ | 1 | bob | 45000.00 | acct | | 1 | bob | 20000.00 | hr | | 2 | bill | 15000.00 | hr | | 3 | jane | 60000.00 | acct | | 3 | jane | 10000.00 | hr | | 4 | john | 50000.00 | it | | 5 | marry | 30000.00 | hr | +----+-------+----------+------+ SELECT e.id,e.name,w.salary,d.name, w.salary*0.7 as after_tax FROM employee e, worksfor w, department d WHERE e.id = w.employeeid and w.departmentid = d.id ORDER BY e.name asc,w.salary desc aggregate functions SELECT COUNT(*), AVG(salary), SUM(salary), MIN(salary), MAX(salary) FROM worksfor; SELECT departmentid, COUNT(*), round(AVG(salary)) as avg, SUM(salary) as sum, MIN(salary) as min, MAX(salary) as max FROM worksfor GROUP BY departmentid SELECT d.id,d.name, COUNT(*), round(AVG(salary)) as avg, SUM(salary) as sum, MIN(salary) as min, MAX(salary) as max FROM worksfor w, department d WHERE w.departmentid = d.id GROUP BY d.id,d.name HAVING COUNT(*) > 1