\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{Rahil (rahilkasimi)} \pdfinfo{ /Title (sql.pdf) /Creator (Cheatography) /Author (Rahil (rahilkasimi)) /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}{A3A3A3} \definecolor{LightBackground}{HTML}{F3F3F3} \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}{Rahil (rahilkasimi)} via \textcolor{DarkBackground}{\uline{cheatography.com/102433/cs/32112/}}} \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}Rahil (rahilkasimi) \\ \uline{cheatography.com/rahilkasimi} \\ \end{tabulary} \vfill \columnbreak \begin{tabulary}{5.8cm}{L} \SetRowColor{FootBackground} \mymulticolumn{1}{p{5.377cm}}{\bf\textcolor{white}{Cheat Sheet}} \\ \vspace{-2pt}Published 17th May, 2022.\\ Updated 17th May, 2022.\\ 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{tabularx}{17.67cm}{x{4.3862 cm} x{6.2419 cm} x{6.2419 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{COMMANDS}} \tn % Row 0 \SetRowColor{LightBackground} {\bf{COMMAND}}\{\{width=15\}\} & {\bf{CODE}}\{\{width=50\}\} & {\bf{DESCRIPTION}} \tn % Row Count 3 (+ 3) % Row 1 \SetRowColor{white} Create & CREATE DATABASE \textless{}DATABASE NAME\textgreater{}\{\{nl\}\} CREATE TABLE \textless{}TABLE NAME\textgreater{} & used to create a new database or table \tn % Row Count 8 (+ 5) % Row 2 \SetRowColor{LightBackground} Drop & DROP DATABASE \textless{}DATABASE NAME\textgreater{}\{\{nl\}\}DROP TABLE \textless{}TABLE NAME\textgreater{} & used to delete an existing database or table \tn % Row Count 13 (+ 5) % Row 3 \SetRowColor{white} Truncate & TRUNCATE TABLE \textless{}TABLE NAME\textgreater{} & used to delete information in the table but doesn t delete the table itself \tn % Row Count 19 (+ 6) % Row 4 \SetRowColor{LightBackground} Alter & ALTER TABLE \textless{}TABLE NAME\textgreater{}\{\{nl\}\} ADD \textless{}COLUMN NAME\textgreater{} \textless{}DATA TYPE\textgreater{} \{\{nl\}\}ALTER TABLE \textless{}TABLE NAME\textgreater{} \{\{nl\}\}DROP COLUMN \textless{}COLUMN NAME\textgreater{} \{\{nl\}\}ALTER TABLE \textless{}TABLE NAME\textgreater{} \{\{nl\}\}ALTER COLUMN \textless{}COLUMN NAME\textgreater{} \textless{}DATA TYPE\textgreater{} & used to delete, add or modify constraints or columns in a table \tn % Row Count 34 (+ 15) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.3862 cm} x{6.2419 cm} x{6.2419 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{COMMANDS (cont)}} \tn % Row 5 \SetRowColor{LightBackground} Backup & BACKUP DATABASE \textless{}DATABASE NAME\textgreater{} \{\{nl\}\}TO DISK = '\textless{}PATH\textgreater{}' & used to create a backup on an existing database \tn % Row Count 5 (+ 5) % Row 6 \SetRowColor{white} Insert & INSERT INTO \textless{}TABLE NAME\textgreater{} (\textless{}COLUMN1\textgreater{}, ....)\{\{nl\}\}VALUES (\textless{}VALUE1\textgreater{}, ....) & used to insert new tuples (rows) in a table\{\{nl\}\}{\emph{*you do not need to specify all columns if you will add values for all the columns}} \tn % Row Count 15 (+ 10) % Row 7 \SetRowColor{LightBackground} Delete & DELETE FROM \textless{}TABLE NAME\textgreater{}\{\{nl\}\} WHERE \textless{}CONDITION\textgreater{} & used to delete tuples (rows) from a table\{\{nl\}\} {\emph{*if you don t add the WHERE clause, all rows will be deleted}} \tn % Row Count 23 (+ 8) % Row 8 \SetRowColor{white} Update & UPDATE \textless{}TABLE NAME\textgreater{}\{\{nl\}\} SET \textless{}COLUMN NAME\textgreater{} = \textless{}NEW VALUE\textgreater{} \{\{nl\}\}WHERE \textless{}CONDITION\textgreater{} & used to modify existing records in a table \tn % Row Count 29 (+ 6) % Row 9 \SetRowColor{LightBackground} Select & SELECT \textless{}ATTRIBUTE LIST\textgreater{}\{\{nl\}\} FROM \textless{}TABLE NAME\textgreater{} \{\{nl\}\}WHERE \textless{}CONDITION\textgreater{} & used to select data from a table \{\{nl\}\}{\emph{*if you want all attributes of a table use (*)}} \tn % Row Count 36 (+ 7) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.3862 cm} x{6.2419 cm} x{6.2419 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{COMMANDS (cont)}} \tn % Row 10 \SetRowColor{LightBackground} Union, Intersect, Except & \textless{}FIRST SELECT STATEMENT\textgreater{} \{\{nl\}\}UNION / INTERSECT / EXCEPT \{\{nl\}\}\textless{}SECOND SELECT STATEMENT\textgreater{} & equivalent to the set operations: union, intersection and difference. \tn % Row Count 7 (+ 7) % Row 11 \SetRowColor{white} In & SELECT \textless{}ATTRIBUTE LIST\textgreater{}\{\{nl\}\}FROM \textless{}TABLE NAME\textgreater{}\{\{nl\}\}WHERE \textless{}VALUE\textgreater{} IN \textless{}ANOTHER SELECT QUERY\textgreater{} & compares a value with a set of values, returns true if the value is one of the elements of the set. \tn % Row Count 15 (+ 8) % Row 12 \SetRowColor{LightBackground} Null & \textless{}ATTRIBUTE NAME\textgreater{} IS (NOT) NULL & used to check whether a value is NULL \tn % Row Count 18 (+ 3) % Row 13 \SetRowColor{white} Join & SELECT \textless{}ATTRIBUTES LIST\textgreater{} \{\{nl\}\}FROM \textless{}TABLE 1\textgreater{} JOIN \textless{}TABLE 2\textgreater{} \{\{nl\}\}ON \textless{}JOIN CONDITION\textgreater{} \{\{nl\}\}WHERE \textless{}SELECTION CONDITION\textgreater{} & used to join two tables based on a related column between them \tn % Row Count 27 (+ 9) % Row 14 \SetRowColor{LightBackground} Assertion & CREATE ASSERTION \textless{}ASSERTION NAME\textgreater{} \{\{nl\}\}CHECK (\textless{}CONDITION\textgreater{}) & used to ensure a certain condition is always met in the database \tn % Row Count 32 (+ 5) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.3862 cm} x{6.2419 cm} x{6.2419 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{COMMANDS (cont)}} \tn % Row 15 \SetRowColor{LightBackground} Trigger & CREATE TRIGGER \textless{}TRIGGER NAME\textgreater{} \{\{nl\}\}BEFORE / AFTER \{\{nl\}\}INSERT / UPDATE / DELETE \{\{nl\}\}ON \textless{}TABLE NAME\textgreater{} \{\{nl\}\}FOR EACH ROW \{\{nl\}\}\textless{}TRIGGER BODY\textgreater{} & Triggers are activated when a defined action is executed for the table \tn % Row Count 11 (+ 11) % Row 16 \SetRowColor{white} Data Types & {\bf{Numeric}} - INT, SMALLINT, DECIMAL(i, j) \{\{nl\}\}{\bf{String}} - CHAR, CHAR(n), VARCHAR(n) \{\{nl\}\}{\bf{Bit Sring}} - BIT, BIT(n) \{\{nl\}\}{\bf{Date and Time}} - DATE, TIME, TIME(i) \{\{nl\}\}{\bf{Timestamp}} -TIMESTAMP & \tn % Row Count 26 (+ 15) % Row 17 \SetRowColor{LightBackground} \seqsplit{Referential} Triggered Action & ON DELETE \textless{}OPTION\textgreater{} \{\{nl\}\}ON UPDATE \textless{}OPTION\textgreater{} & used to set what happens on updating or deleting a tuple (row) in the database that references another row \{\{nl\}\}{\bf{OPTIONS:}} \{\{nl\}\}SET NULL \{\{nl\}\}SET DEFAULT \{\{nl\}\}CASCADE \tn % Row Count 39 (+ 13) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.3862 cm} x{6.2419 cm} x{6.2419 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{COMMANDS (cont)}} \tn % Row 18 \SetRowColor{LightBackground} Renaming \seqsplit{(Aliasing)} & \textless{}TABLE NAME\textgreater{} AS \textless{}NEW TABLE NAME\textgreater{} \{\{nl\}\}(\textless{}NEW ATTRIBUTE 1 NAME\textgreater{}, .....) & Relation and attribute names can be renamed for conenience or to remove ambiguity using the keyword AS \tn % Row Count 8 (+ 8) % Row 19 \SetRowColor{white} Cross Product (,) & SELECT \textless{}ATTRIBUTE LIST\textgreater{} \{\{nl\}\}FROM \textless{}TABLE 1\textgreater{}, \textless{}TABLE 2\textgreater{} & used to produce a result table that has the number of rows of the first table multiplied by the number of rows of the second table \tn % Row Count 18 (+ 10) % Row 20 \SetRowColor{LightBackground} \seqsplit{Duplicates} & SELECT ALL \textless{}ATTRIBUTE LIST\textgreater{} \{\{nl\}\}FROM \textless{}TABLE NAME\textgreater{} \textless{}ATTRIBUTE\textgreater{} LIKE \textless{}PATTERN\textgreater{} \textless{}ATTRIBUTE NAME\textgreater{} IS (NOT) NULL \{\{nl\}\}SELECT \textless{}ATTRIBUTES LIST\textgreater{} \{\{nl\}\}FROM \textless{}TABLE 1\textgreater{} JOIN \textless{}TABLE 2\textgreater{} ON \textless{}JOIN CONDITION\textgreater{} WHERE \textless{}SELECTION CONDITION\textgreater{} SELECT DISTINCT \textless{}ATTRIBUTE LIST\textgreater{} FROM \textless{}TABLE NAME\textgreater{} & {\bf{DISTINCT}} is used to eliminate duplicates \{\{nl\}\}{\bf{ALL}} is used to allow duplicates {\emph{*SELECT without ALL or DISTINCT is equivalent to ALL}} \tn % Row Count 38 (+ 20) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.3862 cm} x{6.2419 cm} x{6.2419 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{COMMANDS (cont)}} \tn % Row 21 \SetRowColor{LightBackground} String \seqsplit{Comparisons} & \textless{}ATTRIBUTE\textgreater{} LIKE \textless{}PATTERN\textgreater{} & {\bf{LIKE}} is used for string comparisoJ \{\{nl\}\}(\%) replaces an arbitary number of characters \{\{nl\}\}(\_) replaces one character \tn % Row Count 9 (+ 9) % Row 22 \SetRowColor{white} \seqsplit{Arithmetic} Operators & \# (+) add ~~~~~~~~~~\# (*) multiply \{\{nl\}\}\# ( ) subtract ~~~~~\# (/) divide & \tn % Row Count 20 (+ 11) % Row 23 \SetRowColor{LightBackground} Ordering & \textless{}SELECT STATEMENT\textgreater{} \{\{nl\}\}ORDER BY \textless{}ATTRIBUTE\textgreater{} \textless{}ASC / DESC\textgreater{} & {\bf{ORDER BY}} is used to order the resulting tuples \{\{nl\}\}The keyword {\bf{ASC}} (ascending) and {\bf{DESC}} can be used. {\emph{*The default is ASC (ascending)}} \tn % Row Count 31 (+ 11) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.3862 cm} x{6.2419 cm} x{6.2419 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{COMMANDS (cont)}} \tn % Row 24 \SetRowColor{LightBackground} Set \seqsplit{Comparisons} & SELECT \textless{}ATTRIBUTE LIST\textgreater{} \{\{nl\}\}FROM \textless{}TABLE NAME\textgreater{} \{\{nl\}\}WHERE \textless{}VALUE\textgreater{} \textgreater{} ALL / ANY \textless{}ANOTHER SELECT QUERY\textgreater{} & {\bf{ANY}} and {\bf{ALL}} can be used with (=, \textgreater{}, \textgreater{}=, \textless{}, \textless{}=, \textless{}\textgreater{}) to compare a value with a set \{\{nl\}\}{\bf{\#CONTAINS}} Compares two sets and returns true if one set contains the other \{\{nl\}\}{\bf{\#EXISTS}} It checks whether the result of a nested query is empty or not \{\{nl\}\}{\bf{\#UNIQUE}} checks if the table has duplicates \tn % Row Count 22 (+ 22) % Row 25 \SetRowColor{white} Aggregate Functions & & {\bf{\#COUNT}} - Counts how many rows in a particular column \{\{nl\}\}{\bf{\#SUM}} - adds together all the values in a particular column \{\{nl\}\}{\bf{\#MIN}} returns the minumum value in a column \{\{nl\}\}{\bf{\#MAX}} returns the maximum value in a column \{\{nl\}\}{\bf{\#AVG}} - returns the average of a group of selected values \tn % Row Count 44 (+ 22) \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{17.67cm}{x{4.3862 cm} x{6.2419 cm} x{6.2419 cm} } \SetRowColor{DarkBackground} \mymulticolumn{3}{x{17.67cm}}{\bf\textcolor{white}{COMMANDS (cont)}} \tn % Row 26 \SetRowColor{LightBackground} Types of Join & & Inner join\{\{nl\}\}Left Join\{\{nl\}\}Right Join\{\{nl\}\}Full Outer Join \tn % Row Count 5 (+ 5) \hhline{>{\arrayrulecolor{DarkBackground}}---} \SetRowColor{LightBackground} \mymulticolumn{3}{x{17.67cm}}{Credit: @yosracodes} \tn \hhline{>{\arrayrulecolor{DarkBackground}}---} \end{tabularx} \par\addvspace{1.3em} \end{document}