For quick reference, below is the cheat sheet I created for an introduction to SQL course I took in 2005. Use CTRL-F to find specific terms.
##################################################################################### SQL Cheatsheet SELECT selects columns ORDER BY (DESC, ASC) sorts output, must be the last clause. Can sort multiple levels. ASC is default. WHERE filters output, contains logical expression: = Text and dates need delimiters, numbers/money no. > < <> >= <= = 'Db' IN (1985, 1995, 1997) or NOT IN IN ('CMP', 'PGM', 'SCI') or NOT IN BETWEEN inclusive, range must be increasing. BETWEEN 1990 AND 1993 Text value tests: leading blanks are significant. Null - a value missing from the table. Must be explicitly tested for. Use IS NULL or IS NOT NULL. Zero length strings - these are strings, and they aren't null. Use two single quotes, '' to denote a zero length string. AND, OR, NOT Use IN list for multiple ORs. Precedence is NOT, AND, OR. Use parentheses to group logical operators. Logic tables: Databases allow null values, so a logic table can have TRUE, FALSE, and UNKNOWN entries. CROSS JOIN - cartesian product INNER JOIN, ON - can be nested LEFT/RIGHT OUTER JOIN - include all records from the left or right once. FULL JOIN DISTINCT removes duplicate rows from output (that might result from a join), i.e. SELECT DISTINCT TOP n must include ORDER BY, then returns first n rows WITH TIES includes ties for the last place, where n = int or int PERCENT. Example: TOP 30 PERCENT WITH TIES AS column or table aliasing. Use [] delimiter for spaces/punctuation can't use alias in criterion. Example: AS [Zip Code] + use in SELECT to concatenate fields. Use ' ' for spaces. Use with AS. if a field is null, entire concatenation is null. Simple arithmetic: +, -, *, /, % (ints only) Use operators in SELECT, WHERE, ORDER BY, BETWEEN, IN As with concatenation, arithmetic operations on nulls result in a null. Order of Precedence Exponentiation Negation(-) Multiplication, Division (/) Modulus Arithmetic (mod) Addition, Subtraction Math Functions Round(numeric expression, numDigits) This is rounding, not formatting(STR) Round(numeric expr, numDigits, 1) Truncates values Floor(numeric expr) returns an int expression Ceiling(numberic expr) returns an int expression Cast and Convert Functions Cast(valueToConvert AS dataTypeDesired) Convert(dataTypeDesired, ExpressionToConvert, Style) p.138 for styles Dates and Times Remember to always include years. GETDATE() retrieves the system date. Predefined Convert Styles(text only) 100 Jun 5 2005 4:51PM 101 06/05/2005 102 2005.06.05 104 05.06.2005 111 2005/06/05 112 20050605 To see the date expressed as an integer: Convert(int, getdate()). You can do date arithmetic. The days unit is used in date arithmetic. Date Functions Year(Date Expression) Month(Date Expression) Day(Date Expression) Week(Date Expression) DatePart(DateUnit, DateExpression) returns dateunit part of expr DateAdd(DateUnit, Number, DateExpression) where Number is an integer. adds number of dateunits to date DateName(DateUnit, DateExpression) returns the name of DateUnit (day or week) DateUnit is: Year, yy, yyyy Month, mm, m Day, dd, d Quarter, qq, q DayOfYear, dy, y Week, wk, w Weekday, dw (Sunday is 1) DateDiff(DateUnit, Date1, Date2) returns the dateunit intervals crossed between Date1 and Date2 (Sunday is 1st) CHAR - fixed width (blanks padded on if value is too short) VARCHAR - actual width Zero length string - "" Null string - not zero length, not blank, just nothing at all String Functions Upper(str), Lower(str) manipulates case Left(str, n), Right(str, n) returns the start or end of a string, n?0 Ltrim(str), Rtrim(str) removes leading or trailing blanks Len(str) returns the number of characters in expression Substring(str, startnum, length) returns specified part of str Charindex(str1, str2) searches for starting position of str1 inside str2. Returns 0 if not found. 3rd argument specifies starting position. str(NumExpr, length, DecDigits) formats a number with a specific number of digits after the decimal point. Length is the field width. ascii(str) returns the ASCII value of str char(n) returns ASCII character for number n 0-255 Nchar(n) returns UNICODE character for number n 0-65535 Replace(str1, str2, str3) replaces str2 with str3 in str1 Space(n) returns a string of n spaces Replicate(str, n) repeats str n times Logical Functions ISNULL(expression, replacement) returns replacement when expression is null ISNUMERIC(expression) returns 1 if expression can be converted to a number. 0 if not. CASE expression WHEN value1 THEN result1 all values must be the same type WHEN value2 THEN result2 ELSE result99 END CASE WHEN logExpr1 THEN result1 WHEN logExpr2 THEN result2 ELSE result99 END COALESCE(expressions) returns first expression that is not null. If all expressions are null, returns null. Expressions must all be the same type. Wildcards (for matching strings only) example: SELECT blabla FROM blablabla WHERE bla LIKE '%, [ei]' <==note LIKE keyword % matches zero or more of any character (not nulls) _ matches exactly one of any character [list] matches exactly one of the items in the list [^list] matches exactly one of the items not in the list list can be a range, but range must be ascending. [#] match '#' literally, i.e. [] is escape. Changing Data Values(Action queries) UPDATE tableName SET columnName1 = value or expression, columnName2 = value or expression, . . columnName99 = value or expression WHERE condition DELETE FROM tableName WHERE condition INSERT INTO tableName VALUES(field1value, field2value, field3 value, etc.) can also use SELECT in place of VALUES (p161) Create and Alter Table Design DROP TABLE tablename CREATE TABLE tablename(columnname, type(length)) with constraints: PRIMARY KEY UNIQUE REFERENCES CHECK NULL, NOT NULL optional CREATE TABLE name(columnName datatype CONSTRAINT constraintName constraintType) Example: CREATE TABLE test(column1 int CONSTRAINT column1_ck CHECK (column1 < 0)) ALTER TABLE name ADD optional columnName datatype (CONSTRAINT constraintName constraintType) Each ALTER must be done separately. Creating a compound(composite) primary key: CONSTRAINT tablename_pk PRIMARY KEY (column1, column2) Adding a foreign key constraint with cascade delete after table creation: ALTER TABLE tblName ADD CONSTRAINT constraintName FOREIGN KEY (fieldname) REFERENCES foreignTblName ON DELETE CASCADE Copying data from one table to another: SELECT columns INTO newTable FROM existingTable WHERE condition Parameters CREATE PROCEDURE "StoredProcedure" (@parametername1 datatype, @parametername2 datatype, . . @parametername9 datatype) AS whatever, using @parameternames for values Aggregates and Grouping of Data Count(1) counts the number of rows in the table (or count(*)) Count(field) counts the number of rows with non-nulls in that field Max(field), Min(field) Avg(field) ignores null values, returns truncated integer if used with integer Sum(field) Count(Distinct field) counts the number of unique values for that field #####################################################################################