\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{freesprited} \pdfinfo{ /Title (sql-server-recipies.pdf) /Creator (Cheatography) /Author (freesprited) /Subject (SQL Server Recipies 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 Server Recipies Cheat Sheet}}}} \\ \normalsize{by \textcolor{DarkBackground}{freesprited} via \textcolor{DarkBackground}{\uline{cheatography.com/161506/cs/33858/}}} \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}freesprited \\ \uline{cheatography.com/freesprited} \\ \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 28th August, 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{multicols*}{3} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Select Statement}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Select Statements} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{show the whole table}} \newline Select {\emph{ from \textless{}TableName\textgreater{} \newline Select }} from Sales.salesperson; \newline \newline {\bf{Returns the total number of rows that match our search.}} \newline Select count ({\emph{) From Person.Person; \newline \newline {\bf{Top 10}} \newline Select top 10 }} From Person.Address \newline \newline {\bf{bottom 10}} \newline Select top 10 * From person.Address \newline order by AddressID desc} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Select Statement}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Aggregate Functions} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{SUM}} \newline Select sum(TotalDue) From Sales.SalesOrderHeader; \newline \newline {\bf{AVERAGE}} \newline select avg(TotalDue) from Sales.SalesOrderHeader; \newline \newline {\bf{Largest Value}} \newline select max(TotalDue) from Sales.SalesOrderHeader; \newline \newline {\bf{Smallest Value}} \newline select min(TotalDue) from Sales.SalesOrderHeader;} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Select Statement}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{other tips} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{ Multiple values displayed}} \newline select Count(TotalDue) as NumOfOrders ,min(TotalDue) as {[}Min{]}, max(TotalDue) as {[}Max{]}, sum(TotalDue) as {[}TOTAL{]}, AVG(TotalDue) as Average from Sales.SalesOrderHeader \newline Where PurchaseOrderNumber is not Null;} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Distinct}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Distinct Clause}} \newline Select Distinct {[}Name{]}, CurrencyCode from sales.ss\_currency \newline select * from sales.ss\_currency} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Date and time}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Date and time}} \newline select GETDATE(); \newline \newline {\bf{extract Date}} \newline Select FORMAT(GETDATE(),'dd/MM/yyyy') \newline \newline {\bf{extract time}} \newline select FORMAT(GETDATE(),'hh:mm:ss') \newline \newline select * from sales.SpecialOffer \newline where format(StartDate, 'dd/MM/yyyy') = '31/05/2011' \newline order by DiscountPct desc} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{set Database to be used}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{USE}}} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{use AdventureWorks2019} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Joins}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Inner Joins - (intersecting data)} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{INNER JOINS}} \newline \newline Select sod.productID as {[}Product{]}, soh.SalesOrderNumber as {[}OrderNumber{]}, soh.CustomerID as {[}Customer{]}, SOH.TotalDue as {[}TOTAL{]} \newline from sales.SalesOrderDetail SOD \newline inner join Sales.SalesOrderHeader SOH \newline on SOD.SalesOrderID = SOH.SalesOrderID;} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Joins}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Left Joins} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{ LEFT Join }} \newline \newline Select PP.BusinessEntityID, PP.FirstName as {[}FirstName{]}, PP.LastName as {[}Surname{]}, PPH.PhoneNumber as {[}PhoneNumber{]} \newline from Person.Person PP \newline left join Person.PersonPhone PPH \newline on PP.BusinessEntityID = PPH.BusinessEntityID \newline where PPH.BusinessEntityID is NULL;} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Joins}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Left Outer Join} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{LEFT Outer Join}} \newline Select PP.BusinessEntityID, PP.FirstName as {[}FirstName{]}, PP.LastName as {[}Surname{]}, PPH.PhoneNumber as {[}PhoneNumber{]} \newline from Person.Person PP \newline left outer join Person.PersonPhone PPH \newline on PP.BusinessEntityID = PPH.BusinessEntityID \newline order by pp.BusinessEntityID} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Having Clause}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{select CurrencyCode, Name from sales.ss\_currency \newline group by CurrencyCode, Name \newline having count (*)\textgreater{}1} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Acending / Decending}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Order BY Decending}} \newline Select {\emph{ From Sales.SalesReason \newline Order by {[}name{]} desc; \newline \newline {\bf{Order BY Acending}} \newline Select }} From Sales.SalesReason \newline Order By {[}name{]};} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Update}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Update Multiple Rows} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Update multiple rows}} \newline Update sales.SS\_Currency \newline Set CurrencyCode = 'SHI' , {[}Name{]} = 'Shi Dollar' \newline Where CurrencyCode = 'SHD'; \newline select * from sales.SS\_Currency \newline Where CurrencyCode = 'SHI' \newline or currencyCode ='BKS';} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Update}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{} \tn % Row Count 0 (+ 0) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Update multiple columns }} \newline select {\emph{ from sales.SS\_Currency \newline Update sales.SS\_Currency \newline Set Name = 'Shilpa Dollar' \newline Where CurrencyCode = 'SHD' \newline or currencyCode ='BKS'; \newline select }} from sales.SS\_Currency \newline Where CurrencyCode = 'SHD' \newline or currencyCode ='BKS';} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Change Tables}} \tn \SetRowColor{white} \mymulticolumn{1}{x{5.377cm}}{{\bf{COPY TABLE}} \newline % Row Count 1 (+ 1) Select * into new\_table from old\_table \newline % Row Count 2 (+ 1) Select * into sales.SS\_Currency from sales.Currency \newline % Row Count 4 (+ 2) {\bf{ DROP - delete contents of table }} \newline % Row Count 5 (+ 1) drop table \seqsplit{sales.SS\_salesperson\_Own}% Row Count 6 (+ 1) } \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Tables}} \tn \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{Create Table}} \newline Create Table \seqsplit{sales.SS\_salesperson\_Own} \newline (SalesPersonID int not NULL Identity, \newline SalesPersonName varchar(100) not Null, \newline ModifiedDate datetime, \newline Notes varchar(max), \newline IsManager bit, \newline commission decimal(10,2))} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Changing Data}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Update / Delete / Insert} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{{\bf{UPDATE}} \newline update sales.SS\_Currency set {[}Name{]} = 'SS dollar', ModifiedDate = GETDATE() \newline where CurrencyCode = 'SSD'; \newline select {\emph{ from sales.SS\_Currency \newline where CurrencyCode = 'SSD'; \newline \newline {\bf{DELETE}} \newline Delete from sales.SS\_Currency \newline where CurrencyCode = 'SSD'; \newline select }} from sales.SS\_Currency \newline where CurrencyCode = 'SSD'; \newline \newline {\bf{INSERT INTO}} \newline Insert Into sales.SS\_Currency (CurrencyCode, {[}Name{]}, ModifiedDate) \newline Values ('SSD','ShilpaDollar', GETDATE())} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} \begin{tabularx}{5.377cm}{X} \SetRowColor{DarkBackground} \mymulticolumn{1}{x{5.377cm}}{\bf\textcolor{white}{Insert}} \tn % Row 0 \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{Another Example of - Insert Into} \tn % Row Count 1 (+ 1) \hhline{>{\arrayrulecolor{DarkBackground}}-} \SetRowColor{LightBackground} \mymulticolumn{1}{x{5.377cm}}{insert into \seqsplit{sales.SS\_salesperson\_Own} ( SalesPersonName, ModifiedDate , Notes , IsManager, commission) \newline values \newline ( 'James Smith', GETDATE(), 'likes to sing', 0, 456.55), \newline ( 'carrol james', GETDATE(), 'likes to dance', 0, 556.55), \newline ( 'Aarav Prasad', GETDATE(), 'likes to play guitar', 0, 1000.00), \newline ( 'Aanya Prasad', GETDATE(), 'likes to play Cello', 0, 1000), \newline ( 'KPBS', GETDATE(), 'likes chips', 0, 5943.24), \newline ( 'SS', GETDATE(), 'likes to play Cello', 0, 1000000)} \tn \hhline{>{\arrayrulecolor{DarkBackground}}-} \end{tabularx} \par\addvspace{1.3em} % That's all folks \end{multicols*} \end{document}