SQL Quick Reference
From SquadLimberWiki
[edit]
Indexes
CREATE [UNIQUE] INDEX index_name ON table_name (column1, column2, ...) [ COMPUTE STATISTICS ];
ALTER INDEX index_name RENAME TO new_index_name;
DROP INDEX index_name;
[edit]
Finding NULL values
SELECT * from TABLE where COLUMN IS NULL;
[edit]
Using SQL Operators ( '=' '>' '<' '<=' '>=' '<>' )
SELECT * FROM monkeys WHERE bananas > '3';
SELECT * FROM monkeys WHERE name <> 'Bubbles';
[edit]
Using SQL Regex - the LIKE command
Wildcard (%): Value ends with:
SELECT * FROM monkeys WHERE type LIKE '%panzee';
Wildcard (%): Value starts with:
SELECT * FROM monkeys WHERE type LIKE 'chimp%';
Any char (_):
SELECT * FROM monkeys WHERE type LIKE 'ch_mp_nzee';
[edit]
Using SQL aggregate functions - AVG, COUNT, MAX, MIN, SUM
SELECT COUNT(*) total_monkeys, SUM(bananas) total_bananas FROM monkeys;
[edit]
Using GROUP BY with aggregate functions
The following without a GROUP BY will be invalid:
SELECT monkey_type, SUM(bananas) FROM monkeys;
...and return something like:
monkey_type | SUM(bananas) ------------------------------ chimp | 73 gorilla | 73 chimp | 73
Using GROUP BY gets the sum of bananas per monkey type:
SELECT monkey_type, SUM(bananas) FROM monkeys GROUP BY monkey_type;
monkey_type | SUM(bananas) ------------------------------ chimp | 53 gorilla | 20
[edit]
Using HAVING, the WHERE for aggregate functions
Using the example above:
SELECT monkey_type, SUM(bananas) FROM monkeys GROUP BY monkey_type HAVING SUM(bananas) > 50;
monkey_type | SUM(bananas) ------------------------------ chimp | 53
[edit]
Ordering Results
Order the monkeys in descending order by the number of bananas and then by name:
SELECT * FROM monkeys ORDER BY bananas DESC, name;
[edit]
Finding unique values
SELECT DISTINCT type FROM monkeys;
[edit]
Simple Updates
UPDATE monkeys SET bananas = bananas + 20;
[edit]
Simple Inserts
INSERT INTO monkeys (name, bananas) VALUES ('Mr Chimp', 34);
INSERT INTO monkeys VALUES ('Mr Chimp', 'chimpanzee', 2);
[edit]
Simple Deletes
Delete everything:
DELETE FROM monkeys;
Delete specific monkeys:
DELETE FROM monkeys WHERE bananas = '0';
[edit]
Emptying a table
DELETE * FROM table_name;
[edit]
Advanced Select Statements
See [ SELECT Statement -- Extended Query Capabilities ]
[edit]
Viewing Blobs as Text
SELECT UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(monkeys_blob,2000,1)) FROM monkeys;
[edit]
Concatenating Strings (Oracle)
SELECT name || ' has ' || bananas || ' bananas' FROM monkeys;
[edit]
Select-ing particular row numbers (Oracle)
SELECT * FROM monkeys WHERE rownum < 10;
[edit]
Creating views
CREATE OR REPLACE VIEW Monkey_Rich_List AS
SELECT name Monkeys_Name, bananas Food_Rich_Index
FROM monkeys
WHERE bananas > 100000
ORDER BY bananas DESC;
[edit]
Show Column Names (Oracle)
DESCRIBE monkeys;
[edit]
Show Tables (Oracle)
SELECT * FROM tabs;
or
SELECT * FROM user_tables;
[edit]
Oracle Built-ins Reference
See [ Oracle built-in functions ]
[edit]
Prepared Statements
Just prepared statements using ? as a placeholder for inserting different values e.g.
SELECT * FROM monkeys WHERE name = ?
[edit]
Cursors
Cursors provide a way to iterate through multiple rows (usually in PL/SQL) returned as part of a query.
CURSOR monkey_names
IS
SELECT name FROM monkeys;
[edit]
Joins - Inner, Outer, Left, Right
See [ Joins in SQL ]
[edit]
TODO: Constraints
[edit]

