What is SQL?
- SQL stands for Structured Query Language
- SQL lets you access and manipulate databases
- SQL became a standard of the American National Standards Institute (ANSI) in 1986, and of the International Organization for Standardization (ISO) in 1987
What can SQL do ?
- SQL can execute queries against a database
- SQL can retrieve data from a database
- SQL can insert records in a database
- SQL can update records in a database
- SQL can delete records from a database
- SQL can create new databases
- SQL can create new tables in a database
- SQL can create stored procedures in a database
- SQL can create views in a database
- SQL can set permissions on tables, procedures, and views
SQL Syntax
SELECT
SELECT column_1, column_2,...
FROM table_name;
SELECT DISTINCT column_1, column_2,...
FROM table_name;
WHERE
SELECT column_1, column_2,...
FROM table_name
WHERE condition;
SELECT column_1, column_2,...
FROM table_name
WHERE condition1 AND condition2 AND condition3;
SELECT column_1, column_2,...
FROM table_name
WHERE condition1 OR condition2 OR condition3;
SELECT column_1, column_2,...
FROM table_name
WHERE NOT condition;
SELECT TOP number | percent column_name(s)
FROM table_name
WHERE condition;
SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;
SELECT MIN(column_name)
FROM table_name
WHERE condition;
SELECT MAX(column_name)
FROM table_name
WHERE condition;
SELECT COUNT(column_name)
FROM table_name
WHERE condition;
SELECT AVG(column_names)
FROM table_name
WHERE condition;
SELECT SUM(column_names)
FROM table_name
WHERE condition;
ORDER BY
SELECT column_1, column_2,...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
INSERT INTO
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
INSERT INTO table_name
VALUES (value1, value2, value3, ...);
NULL VALUES
SELECT column_names
FROM table_name
WHERE column_name IS (NOT) NULL;
UPDATE
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
DELETE
DELETE FROM table_name
WHERE condition;
LIKE
SELECT column1, column2, ...
FROM table_name
WHERE columnN LIKE pattern;
(patten: ‘a%’ starts with a; ‘%a’ ends with a; ‘a%’ second is a; ‘%%’ at least three characters)
IN
SELECT column1, column2, ...
FROM table_name
WHERE column_name IN (value1, value2, ...);
SELECT column1, column2, ...
FROM table_name
WHERE column_name IN (SELECT statement);
BETWEEN
SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2;
AS
SELECT column_name AS column_alias_name
FROM table_name;
SELECT column_name
FROM table_name AS table_alias_name;
JOIN
SELECT column_name(s)
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;
(the interleaving of table1 and table2)
SELECT column_name(s)
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;
(all of table1 + the interleaving)
SELECT column_name(s)
FROM table1
RIGHT JOIN table2 ON table1.column_name = table2.column_name;
(all of table2 + the interleaving)
SELECT column_name(s)
FROM table1
FULL JOIN table2 ON table1.column_name = table2.column_name;
(all of table1 + all of table2)
SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;
(self join)
UNION
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;
(UNION ALL allows duplicate values)
GROUP BY
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
ORDER BY column_name(s);
HAVING
SELECT column_name(s)
FROM table_name
WHERE condition
GROUP BY column_name(s)
HAVING condition
ORDER BY column_name(s);
(The HAVING clause was added to SQL because the WHERE keyword could not be used with aggregate functions.)
EXISTS
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);
ANY & ALL
SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
(SELECT column_name FROM table_name WHERE condition);
SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name FROM table_name WHERE condition);
SELECT INTO
SELECT column1, column2, ...
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;
(The SELECT INTO statement copies data from one table into a new table.)
INSERT INTO SELECT
INSERT INTO table2
SELECT * FROM table1
WHERE condition;
(The INSERT INTO SELECT statement copies data from one table and inserts it into another table)
Store Procedures
CREATE PROCEDURE procedure_name
AS
sql_statement
GO;
EXECUTE procedure_name;
CREATE PROCEDURE SelectAllCustomers @City nvarchar(30), @PostalCode nvarchar(10)
SELECT * FROM Customers WHERE City = @City AND PostalCode = @PostalCode
GO;
EXECUTE SelectAllCustomers City = "London", PostalCode = "WA1 1DP";
Comments
--Select all:
SELECT * FROM Customers;
/*Select all the columns
of all the records
in the Customers table:*/
SELECT * FROM Customers;
CREATE
CREATE DATABASE database_name;
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
DROP
DROP DATABASE database_name
DROP TABLE table_name
TRUNCATE TABLE table_name
(The TRUNCATE TABLE statement is used to delete the data inside a table, but not the table itself.)
ALTER
ALTER TABLE table_name
ADD column_name datatype;
ALTER TABLE table_name
DROP COLUMN column_name;