\documentclass[10pt,a4paper]{article} % Packages \usepackage{fancyhdr} % For header and footer \usepackage{multicol} % Allows multicols in tables \usepackage{tabularx} % Intelligent column widths \usepackage{tabulary} % Used in header and footer \usepackage{hhline} % Border under tables \usepackage{graphicx} % For images \usepackage{xcolor} % For hex colours %\usepackage[utf8x]{inputenc} % For unicode character support \usepackage[T1]{fontenc} % Without this we get weird character replacements \usepackage{colortbl} % For coloured tables \usepackage{setspace} % For line height \usepackage{lastpage} % Needed for total page number \usepackage{seqsplit} % Splits long words. %\usepackage{opensans} % Can't make this work so far. Shame. Would be lovely. \usepackage[normalem]{ulem} % For underlining links % Most of the following are not required for the majority % of cheat sheets but are needed for some symbol support. \usepackage{amsmath} % Symbols \usepackage{MnSymbol} % Symbols \usepackage{wasysym} % Symbols %\usepackage[english,german,french,spanish,italian]{babel} % Languages % Document Info \author{elhamsh} \pdfinfo{ /Title (sql.pdf) /Creator (Cheatography) /Author (elhamsh) /Subject (SQL Cheat Sheet) } % Lengths and widths \addtolength{\textwidth}{6cm} \addtolength{\textheight}{-1cm} \addtolength{\hoffset}{-3cm} \addtolength{\voffset}{-2cm} \setlength{\tabcolsep}{0.2cm} % Space between columns \setlength{\headsep}{-12pt} % Reduce space between header and content \setlength{\headheight}{85pt} % If less, LaTeX automatically increases it \renewcommand{\footrulewidth}{0pt} % Remove footer line \renewcommand{\headrulewidth}{0pt} % Remove header line \renewcommand{\seqinsert}{\ifmmode\allowbreak\else\-\fi} % Hyphens in seqsplit % This two commands together give roughly % the right line height in the tables \renewcommand{\arraystretch}{1.3} \onehalfspacing % Commands \newcommand{\SetRowColor}[1]{\noalign{\gdef\RowColorName{#1}}\rowcolor{\RowColorName}} % Shortcut for row colour \newcommand{\mymulticolumn}[3]{\multicolumn{#1}{>{\columncolor{\RowColorName}}#2}{#3}} % For coloured multi-cols \newcolumntype{x}[1]{>{\raggedright}p{#1}} % New column types for ragged-right paragraph columns \newcommand{\tn}{\tabularnewline} % Required as custom column type in use % Font and Colours \definecolor{HeadBackground}{HTML}{333333} \definecolor{FootBackground}{HTML}{666666} \definecolor{TextColor}{HTML}{333333} \definecolor{DarkBackground}{HTML}{A33C65} \definecolor{LightBackground}{HTML}{F9F2F5} \renewcommand{\familydefault}{\sfdefault} \color{TextColor} % Header and Footer \pagestyle{fancy} \fancyhead{} % Set header to blank \fancyfoot{} % Set footer to blank \fancyhead[L]{ \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{C} \SetRowColor{DarkBackground} \vspace{-7pt} {\parbox{\dimexpr\textwidth-2\fboxsep\relax}{\noindent \hspace*{-6pt}\includegraphics[width=5.8cm]{/web/www.cheatography.com/public/images/cheatography_logo.pdf}} } \end{tabulary} \columnbreak \begin{tabulary}{11cm}{L} \vspace{-2pt}\large{\bf{\textcolor{DarkBackground}{\textrm{SQL Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{elhamsh} via \textcolor{DarkBackground}{\uline{cheatography.com/31327/cs/14025/}}} \end{tabulary} \end{multicols}} \fancyfoot[L]{ \footnotesize \noindent \begin{multicols}{3} \begin{tabulary}{5.8cm}{LL} \SetRowColor{FootBackground} \mymulticolumn{2}{p{5.377cm}}{\bf\textcolor{white}{Cheatographer}} \\ \vspace{-2pt}elhamsh \\ \uline{cheatography.com/elhamsh} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Not Yet Published.\\ Updated 21st December, 2017.\\ Page {\thepage} of \pageref{LastPage}. \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Sponsor}} \\ \SetRowColor{white} \vspace{-5pt} %\includegraphics[width=48px,height=48px]{dave.jpeg} Measure your website readability!\\ www.readability-score.com \end{tabulary} \end{multicols}} \begin{document} \raggedright \raggedcolumns % Set font size to small. Switch to any value % from this page to resize cheat sheet text: % www.emerson.emory.edu/services/latex/latex_169.html \footnotesize % Small font. \begin{multicols*}{3} \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Functions}} \tn % Row 0 \SetRowColor{LightBackground} bin(4) & 100. Converts a decimal number to a binary number \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} CASE WHEN Quantity \textgreater{} 30 THEN "The quantity is greater than 30" WHEN Quantity = 30 THEN "The quantity is 30" ELSE "The quantity is something else" END & can be used in SELECT,DELETE,INSERT,UPDATE \tn % Row Count 12 (+ 9) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{SELECT CASE city WHEN 'calgary' THEN 'Y' ELSE 'N' END calgary FROM...} \tn % Row Count 14 (+ 2) % Row 3 \SetRowColor{white} CAST("14:06:10" AS TIME) & CAST(value AS type) \tn % Row Count 16 (+ 2) % Row 4 \SetRowColor{LightBackground} SELECT COALESCE(NULL, 1, 2, 'W3Schools.com'); & 1. Return the first non-null expression in a list \tn % Row Count 19 (+ 3) % Row 5 \SetRowColor{white} IF(500\textless{}1000, "YES", "NO") & IF(condition, value\_if\_true, value\_if\_false) \tn % Row Count 22 (+ 3) % Row 6 \SetRowColor{LightBackground} IFNULL(NULL, 500) & IFNULL(expression, alt\_value) \tn % Row Count 24 (+ 2) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{1.74195 cm} x{3.23505 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{NUMERIC}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{ABS()} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{AVG()} \tn % Row Count 2 (+ 1) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{CEIL()} \tn % Row Count 3 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{FLOOR()} \tn % Row Count 4 (+ 1) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{LOG() LOG10() LOG2()} \tn % Row Count 5 (+ 1) % Row 5 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{PI} \tn % Row Count 6 (+ 1) % Row 6 \SetRowColor{LightBackground} POWER(3,2) or POW(3,2) & 9 \tn % Row Count 8 (+ 2) % Row 7 \SetRowColor{white} RAND() & a value between 0 (inclusive) and 1 (exclusive) \tn % Row Count 10 (+ 2) % Row 8 \SetRowColor{LightBackground} RAND(4) & RAND(seed), a repeatable sequence of random numbers if a seed value is used \tn % Row Count 13 (+ 3) % Row 9 \SetRowColor{white} ROUND(135.375, 2) & 135.38, ROUND(number, decimal\_places) \tn % Row Count 15 (+ 2) % Row 10 \SetRowColor{LightBackground} \seqsplit{ROUND(135.375)} & 135 \tn % Row Count 16 (+ 1) % Row 11 \SetRowColor{white} SIGN(number) & if \textgreater{}0,1. If = 0, 0. If \textless{}0, -1 \tn % Row Count 18 (+ 2) % Row 12 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{SQRT(64)} \tn % Row Count 19 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Join}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{SELECT x.a, b, c FROM x INNER JOIN y ON x.id=y.id} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{SELECT o.a, c.b, e.d FROM ((orders o INNER JOIN customers c ON o.id=c.id) INNER JOIN employee e ON e.id=o.eid);} \tn % Row Count 4 (+ 3) % Row 2 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{LEFT JOIN} \tn % Row Count 5 (+ 1) % Row 3 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{RIGHT JOIN} \tn % Row Count 6 (+ 1) % Row 4 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{FULL OUTER JOIN} \tn % Row Count 7 (+ 1) % Row 5 \SetRowColor{white} (SELECT a FROM aa) UNION (SELECT a FROM bb) & \# of columns, and data types the same and in the same order \tn % Row Count 10 (+ 3) % Row 6 \SetRowColor{LightBackground} SELECT a,b FROM aa,bb & cartesian join, return table of length(aa*bb) \tn % Row Count 13 (+ 3) % Row 7 \SetRowColor{white} UNION ALL & Union all will not eliminate duplicate rows \tn % Row Count 16 (+ 3) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{String}} \tn % Row 0 \SetRowColor{LightBackground} ASCII(character) & number code of the first character \tn % Row Count 2 (+ 2) % Row 1 \SetRowColor{white} CONCAT("SQL ", "is ", "fun!") & Concatenate several expressions together \tn % Row Count 4 (+ 2) % Row 2 \SetRowColor{LightBackground} CONCAT\_WS("-", "SQL", "is", "fun!") & SQL-is-fun! \tn % Row Count 6 (+ 2) % Row 3 \SetRowColor{white} FIELD("c", "a", "b", "c", "d", "e") & 3. FIELD(value, val1, val2, val3, ...). position of the value in the list of values \tn % Row Count 11 (+ 5) % Row 4 \SetRowColor{LightBackground} FIND\_IN\_SET("c", "a,b,c,d,e") & 3. the position of a string in a comma-separated string list. not found=0 \tn % Row Count 15 (+ 4) % Row 5 \SetRowColor{white} \seqsplit{INSERT("W3Schools.com"}, 1, 9, "Example") & Example.com. NSERT(string, position, number, substring) \tn % Row Count 18 (+ 3) % Row 6 \SetRowColor{LightBackground} \seqsplit{INSTR("W3Schools.com"}, "COM") & 11. return position \tn % Row Count 20 (+ 2) % Row 7 \SetRowColor{white} LEFT(string, number\_of\_chars) & extracts a substring from a string (starting from left). \tn % Row Count 23 (+ 3) % Row 8 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{LENGTH(string)} \tn % Row Count 24 (+ 1) % Row 9 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{LOWER(string)} \tn % Row Count 25 (+ 1) % Row 10 \SetRowColor{LightBackground} LPAD("SQL", 10, "ABC") & ABCABCASQL. LPAD(string, length, pad\_string) \tn % Row Count 28 (+ 3) % Row 11 \SetRowColor{white} LTRIM(" SQL Tutorial") & Remove leading spaces from a string \tn % Row Count 30 (+ 2) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{String (cont)}} \tn % Row 12 \SetRowColor{LightBackground} MID("SQL Tutorial", 5, 3) or SUBSTR(string, start, length) & Tut. MID(string, start, length) \tn % Row Count 3 (+ 3) % Row 13 \SetRowColor{white} POSITION("3" IN "W3Schools.com") or LOCATE("3", "W3Schools.com") & 2 \tn % Row Count 7 (+ 4) % Row 14 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{REPEAT(string, number)} \tn % Row Count 8 (+ 1) % Row 15 \SetRowColor{white} REPLACE("SQL Tutorial", "SQL", "HTML") & REPLACE(string, from\_substring, to\_substring) \tn % Row Count 11 (+ 3) % Row 16 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{REVERSE(string)} \tn % Row Count 12 (+ 1) % Row 17 \SetRowColor{white} RIGHT("SQL Tutorial is cool", 4) & cool \tn % Row Count 14 (+ 2) % Row 18 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{RPAD("SQL Tutorial", 20, "ABC")} \tn % Row Count 15 (+ 1) % Row 19 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{RTRIM("ABC ")} \tn % Row Count 16 (+ 1) % Row 20 \SetRowColor{LightBackground} SPACE(10) & Return a string with 10 spaces \tn % Row Count 18 (+ 2) % Row 21 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{UPPER()} \tn % Row Count 19 (+ 1) % Row 22 \SetRowColor{LightBackground} TRIM() & Removes leading and trailing spaces from a string \tn % Row Count 22 (+ 3) % Row 23 \SetRowColor{white} STRCMP(string1, string2) & If string1=string2, 0 If string1\textless{}string2, -1 If string1\textgreater{}string2, 1 \tn % Row Count 26 (+ 4) % Row 24 \SetRowColor{LightBackground} \seqsplit{SUBSTRING\_INDEX("www}.w3schools.com", ".", 2) & www.w3schools, substring of string before number of occurrences of delimiter \tn % Row Count 30 (+ 4) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Date}} \tn % Row 0 \SetRowColor{LightBackground} \seqsplit{ADDDATE("2017-06-15"}, INTERVAL -10 DAY) or DATE\_ADD(...) & ADDDATE(date, INTERVAL value unit) {[}SECOND MINUTE HOUR DAY WEEK MONTH QUARTER YEAR ...{]} \tn % Row Count 5 (+ 5) % Row 1 \SetRowColor{white} \seqsplit{ADDDATE("2017-06-15"}, 1) & ADDDATE(date, days) \tn % Row Count 7 (+ 2) % Row 2 \SetRowColor{LightBackground} CURDATE() or CURRENT\_DATE() & current date as a "YYYY-MM-DD" or YYYYMMDD \tn % Row Count 10 (+ 3) % Row 3 \SetRowColor{white} CURDATE() + 1 & Tomorrow \tn % Row Count 11 (+ 1) % Row 4 \SetRowColor{LightBackground} CURTIME() or CURRENT\_TIME() & current time as a "HH-MM-SS" or HHMMSS \tn % Row Count 13 (+ 2) % Row 5 \SetRowColor{white} CURRENT\_TIMESTAMP() & "YYYY-MM-DD HH-MM-SS" \tn % Row Count 15 (+ 2) % Row 6 \SetRowColor{LightBackground} DATE("2017-06-15 09:34:21") & extracts the date value from a date or datetime expression \tn % Row Count 18 (+ 3) % Row 7 \SetRowColor{white} \seqsplit{DATEDIFF("2017-06-25} 09:34:21", "2017-06-15 15:25:35") & the difference in days between two date values \tn % Row Count 21 (+ 3) % Row 8 \SetRowColor{LightBackground} \seqsplit{DATE\_FORMAT(BirthDate}, "\%W \%M \%e \%Y") & \%W Weekday name in full, \%e Day of the month as a numeric value (0 to 31) \tn % Row Count 25 (+ 4) % Row 9 \SetRowColor{white} DAY("2017-06-15"), DAYOFMONTH & 15.DAY(date) \tn % Row Count 27 (+ 2) % Row 10 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{DAYNAME(date)} \tn % Row Count 28 (+ 1) % Row 11 \SetRowColor{white} \seqsplit{DAYOFWEEK("2017-06-15")} & 1=Sunday, ..., 7=Saturday. \tn % Row Count 30 (+ 2) \end{tabularx} \par\addvspace{1.3em} \vfill \columnbreak \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{Date (cont)}} \tn % Row 12 \SetRowColor{LightBackground} \seqsplit{DAYOFYEAR("2017-06-15")} & a number from 1 to 366 \tn % Row Count 2 (+ 2) % Row 13 \SetRowColor{white} EXTRACT(WEEK FROM "2017-06-15") & EXTRACT(unit FROM date) \tn % Row Count 4 (+ 2) % Row 14 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{YEAR(date)} \tn % Row Count 5 (+ 1) % Row 15 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{WEEK(date)} \tn % Row Count 6 (+ 1) % Row 16 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{SECOND(date)} \tn % Row Count 7 (+ 1) % Row 17 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{MONTH(date)} \tn % Row Count 8 (+ 1) % Row 18 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{MINUTE(date)} \tn % Row Count 9 (+ 1) % Row 19 \SetRowColor{white} STRFTIME('\%Y', BD) AS year & extract part of date-time format data \tn % Row Count 11 (+ 2) % Row 20 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{STRFTIME('\%m', BD) AS month} \tn % Row Count 12 (+ 1) % Row 21 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{DATE('now')} \tn % Row Count 13 (+ 1) % Row 22 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{STRFTIME('\%Y \%m \%d', 'now')} \tn % Row Count 14 (+ 1) % Row 23 \SetRowColor{white} \mymulticolumn{2}{x{5.377cm}}{DATE('now') - BD AS age} \tn % Row Count 15 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{x{2.4885 cm} x{2.4885 cm} } \SetRowColor{DarkBackground} \mymulticolumn{2}{x{5.377cm}}{\bf\textcolor{white}{view}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{2}{x{5.377cm}}{CREATE VIEW x AS SELECT...} \tn % Row Count 1 (+ 1) % Row 1 \SetRowColor{white} DROP VIEW x & delete view \tn % Row Count 2 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}--} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}