<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5562253332413822713</id><updated>2026-08-25T18:16:01.972-07:00</updated><category term="sql server interview questions"/><category term=".net developers"/><category term="SQL Server Interview Questions on Indexes"/><category term="advantages of using views"/><category term="dot net"/><category term="dotnet"/><category term="Advantages of stored procedures"/><category term="Delete from tables involved in a SQL Join"/><category term="Difference between Index Scan and Index Seek"/><category term="Full Outer Join"/><category term="Full Outer Join in SQL Server"/><category term="Full Outer Join in SQL Server with an example"/><category term="Inner Join with example"/><category term="Left Join in SQL Server"/><category term="Left Join with an example"/><category term="Right Join in sql server"/><category term="Right Outer Join with an example"/><category term="SQL Server Interview Questions by topic"/><category term="SQL Server Interview Questions on Temporary Tables"/><category term="SQL Server Interview Questions on triggers"/><category term="Self Join"/><category term="Self Join with an example"/><category term="String Manipulation functions in SQL Server"/><category term="What are the different ways to replace NULL values in SQL Server"/><category term="What is the use of COALESCE in SQL Server"/><category term="cross join"/><category term="difference between Having and Where clause in sql server"/><category term="difference between a Temporary Table and a Table Variable"/><category term="difference between a UDF and an SP in SQL Server"/><category term="difference between a User Defined Function and a Stored Procedure in SQL Server"/><category term="example"/><category term="indexed views"/><category term="joins"/><category term="materialized views"/><category term="self join in sql server"/><category term="selfjoin"/><category term="selfjoin in sql server"/><category term="stored procedure to return data sorted by a column"/><category term="table scan"/><category term="that the user is going to pass into the stored procedure as a parameter"/><title type='text'>SQL Server Interview Questions</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-8614684683552912465</id><published>2012-05-20T12:49:00.000-07:00</published><updated>2013-03-03T10:28:55.702-08:00</updated><title type='text'>What is deferred name resolution in SQL Server?</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Let me explain deferred name resolution with an example. Consider the stored procedure shown below.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Create procedure&lt;/span&gt; spGetCustomers&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;as&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;Begin&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Select * from&lt;/span&gt; Customers1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;End&lt;/span&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #990000;&quot;&gt;Customers1 &lt;/span&gt;&lt;/b&gt;table does not exist. When you execute the above SQL code, the stored procedure &lt;b&gt;spGetCustomers &lt;/b&gt;will be successfully created without errors. But when you try to &lt;b&gt;call or execute&lt;/b&gt; the stored procedure using &lt;b&gt;&lt;span style=&quot;color: blue;&quot;&gt;Execute &lt;/span&gt;spGetCustomers&lt;/b&gt;, you will get a run time error stating Invalid object name &#39;Customers1&#39;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;So, at the time of creating stored procedures, only the syntax of the sql code is checked. The objects used in the stored procedure are not checked for their existence. Only when we try to run the procedure, the existence of the objects is checked. So, the process of postponing, the checking of physical existence of the objects until runtime, is called as deffered name resolution in SQL server.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Functions&lt;/b&gt; in sql server does not support &lt;b&gt;deferred name resolution&lt;/b&gt;. If you try to create an inline table valued function as shown below, we get an error stating&lt;span style=&quot;color: #cc0000;&quot;&gt; Invalid object name &#39;Customers1&#39;&lt;/span&gt; at the time of creation of the function itself.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Create function&lt;/span&gt; fnGetCustomers()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;returns table&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;as&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;return Select * from&lt;/span&gt; Customers1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;So, this proves that, stored procedures support deferred name resolution, where as functions does not. Infact, this is one of the major difference between functions and stored procedures in sql server. For all the &lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/what-is-difference-between-user-defined.html&quot;&gt;&lt;b&gt;differences between stored procedures and functions, please read this artilce.&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/8614684683552912465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2012/05/what-is-deferred-name-resolution-in-sql.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/8614684683552912465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/8614684683552912465'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2012/05/what-is-deferred-name-resolution-in-sql.html' title='What is deferred name resolution in SQL Server?'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-7004954449407874122</id><published>2012-04-10T11:08:00.001-07:00</published><updated>2013-03-03T10:30:21.172-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="stored procedure to return data sorted by a column"/><category scheme="http://www.blogger.com/atom/ns#" term="that the user is going to pass into the stored procedure as a parameter"/><title type='text'>Write a Stored Procedure that takes column name as a parameter and returns the result sorted by the column that is passed</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Let&#39;s understand the requirement better with an example. I have an Employee table as shown below. &lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3xrg9bdKQGw5bXzcpFJZzUKe0CLIA2z1YY707OSYw8nkd4U3o2dGT8eJzS7s7IFeSeOQs-GqDmFdfYFEjKCNAw_WNhgxSQJz4FmPvJdza53LM2CnQ65THCYLzfzDzMjaUo_3nLxIwsmCL/s1600/Employee+Table.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;I want a stored procedure that returns employee data sorted by a column, that the user is going to pass into the stored procedure as a parameter. There are 2 ways of doing this.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Option 1: Use Case Statement as shown below:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Create Proc&lt;/span&gt; &lt;b&gt;spGetEmployeesSorted&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;@SortCoumn &lt;span style=&quot;color: blue;&quot;&gt;nvarchar&lt;/span&gt;(10)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;as&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;Begin&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Select &lt;/span&gt; [Id],[Name],[Gender],[Salary],[City] &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;From &amp;nbsp;&amp;nbsp;&lt;/span&gt;[Employee]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Order by Case When&lt;/span&gt; @SortCoumn = &lt;span style=&quot;color: red;&quot;&gt;&#39;Id&#39;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;Then &lt;/span&gt;Id &lt;span style=&quot;color: blue;&quot;&gt;End&lt;/span&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Case When&lt;/span&gt; @SortCoumn = &lt;span style=&quot;color: red;&quot;&gt;&#39;Name&#39;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;Then &lt;/span&gt;Name &lt;span style=&quot;color: blue;&quot;&gt;End&lt;/span&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Case When&lt;/span&gt; @SortCoumn = &lt;span style=&quot;color: red;&quot;&gt;&#39;Gender&#39;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;Then &lt;/span&gt;Gender &lt;span style=&quot;color: blue;&quot;&gt;End&lt;/span&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Case When&lt;/span&gt; @SortCoumn = &lt;span style=&quot;color: red;&quot;&gt;&#39;Salary&#39;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;Then &lt;/span&gt;Salary &lt;span style=&quot;color: blue;&quot;&gt;End&lt;/span&gt;,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Case When&lt;/span&gt; @SortCoumn = &lt;span style=&quot;color: red;&quot;&gt;&#39;City&#39;&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;Then &lt;/span&gt;City &lt;span style=&quot;color: blue;&quot;&gt;End&lt;/span&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;End&lt;/span&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Option 2: Use Dynamic SQL as shown below:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Create Proc&lt;/span&gt; &lt;b&gt;spGetEmployeesSortedUsingDynamicSQL&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;@SortCoumn &lt;span style=&quot;color: blue;&quot;&gt;nvarchar&lt;/span&gt;(10)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;as&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;Begin&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Declare &lt;/span&gt;@DynamicQuery &lt;span style=&quot;color: blue;&quot;&gt;nvarchar&lt;/span&gt;(100)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Set &lt;/span&gt;@DynamicQuery = &#39;&lt;span style=&quot;color: red;&quot;&gt;select [Id],[Name],[Gender],[Salary],[City] from [Employee] order by&lt;/span&gt; &#39; + @SortCoumn&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Execute&lt;/span&gt;(@DynamicQuery)&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;End&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Please share if there are other ways of doing this.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/7004954449407874122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2012/04/write-stored-procedure-that-takes.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/7004954449407874122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/7004954449407874122'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2012/04/write-stored-procedure-that-takes.html' title='Write a Stored Procedure that takes column name as a parameter and returns the result sorted by the column that is passed'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi3xrg9bdKQGw5bXzcpFJZzUKe0CLIA2z1YY707OSYw8nkd4U3o2dGT8eJzS7s7IFeSeOQs-GqDmFdfYFEjKCNAw_WNhgxSQJz4FmPvJdza53LM2CnQ65THCYLzfzDzMjaUo_3nLxIwsmCL/s72-c/Employee+Table.png" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-2706799726071099030</id><published>2012-04-06T11:03:00.002-07:00</published><updated>2013-03-03T10:32:04.428-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="String Manipulation functions in SQL Server"/><title type='text'>SQL Server interview questions on string manipulation functions</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
The following 2 SQL Server Interview questions were asked when I attended an interview for SQL Server Developer role.&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Can you list a few useful string manipulation functions in SQL Server?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: magenta;&quot;&gt;LEN(), SUBSTRING(), CHARINDEX(), LEFT(), RIGHT()&lt;/span&gt; etc.&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Then he asked me, Can you give me one example of where you have used these functions in your experience?&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;The following is one simple real time example, where we can use &lt;span style=&quot;color: magenta;&quot;&gt;LEN(), CHARINDEX()&lt;/span&gt; and &lt;span style=&quot;color: magenta;&quot;&gt;SUBSTRING()&lt;/span&gt; functions. Let us assume we have table as shown below. &lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ6mHdIJnYckNTf3DOadN-8AGRPiWFjVZPXmzoyzkca68hBaxdoBWLMqYD3rdusFbCLU8JpwV3zKhHbyX30wP7x0kzLuJzDlUQKDnItRggEq7t8e4aplZWxeUhkqd75Ta4LIYuqMUAg489/s1600/String+Manipulation.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;I want you to write a query to find out total number of emails, by domain. The result of the query should be as shown below.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy0f0Qb106Ms0JqrlMX-60919xdYM3RuvVJ_FDnnSk8DgQmdHnWuJMuRHtQVlh_4Ywxu2rrSf3PkDrHdFDwLvCs8tetTcwhMclAvVm3tWMO4VhCZBCbzupEkfby2PJTta4mMykhHCEcU1n/s1600/String+Manipulation+Functions.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;We can use &lt;span style=&quot;color: magenta;&quot;&gt;LEN(), CHARINDEX() &lt;/span&gt;and &lt;span style=&quot;color: magenta;&quot;&gt;SUBSTRING()&lt;/span&gt; functions to produce the desired results. Please refer to the query below.&lt;br /&gt;
&lt;/span&gt;
&lt;br /&gt;
&lt;table border=&quot;1&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;Select &lt;/span&gt;&lt;span style=&quot;color: magenta; font-family: Arial, Helvetica, sans-serif;&quot;&gt;SUBSTRING&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;(Email,&lt;/span&gt;&lt;span style=&quot;color: magenta; font-family: Arial, Helvetica, sans-serif;&quot;&gt;CHARINDEX&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;(&#39;@&#39;,Email)+1,(&lt;/span&gt;&lt;span style=&quot;color: magenta; font-family: Arial, Helvetica, sans-serif;&quot;&gt;LEN&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;(Email) - &lt;/span&gt;&lt;span style=&quot;color: magenta; font-family: Arial, Helvetica, sans-serif;&quot;&gt;CHARINDEX&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;(&#39;@&#39;,Email))) &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;as &lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;EmailDomain, &lt;/span&gt;&lt;span style=&quot;color: magenta; font-family: Arial, Helvetica, sans-serif;&quot;&gt;Count&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;(*) &lt;/span&gt;&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;as &lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Total&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;From &lt;/span&gt;TableName &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Group By&lt;/span&gt; &lt;span style=&quot;color: magenta;&quot;&gt;SUBSTRING&lt;/span&gt;(Email,&lt;span style=&quot;color: magenta;&quot;&gt;CHARINDEX&lt;/span&gt;(&#39;@&#39;,Email)+1,(&lt;span style=&quot;color: magenta;&quot;&gt;LEN&lt;/span&gt;(Email) - &lt;span style=&quot;color: magenta;&quot;&gt;CHARINDEX&lt;/span&gt;(&#39;@&#39;,Email)))&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Order by&lt;/span&gt; &lt;span style=&quot;color: magenta;&quot;&gt;Count&lt;/span&gt;(*) &lt;span style=&quot;color: blue;&quot;&gt;Desc&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;There could be even better ways of producing the same result. If you feel you have a better way of producing the same output, please share using the form below.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/2706799726071099030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2012/04/sql-server-interview-questions-on.html#comment-form' title='29 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/2706799726071099030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/2706799726071099030'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2012/04/sql-server-interview-questions-on.html' title='SQL Server interview questions on string manipulation functions'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQ6mHdIJnYckNTf3DOadN-8AGRPiWFjVZPXmzoyzkca68hBaxdoBWLMqYD3rdusFbCLU8JpwV3zKhHbyX30wP7x0kzLuJzDlUQKDnItRggEq7t8e4aplZWxeUhkqd75Ta4LIYuqMUAg489/s72-c/String+Manipulation.png" height="72" width="72"/><thr:total>29</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-3335460809530805144</id><published>2012-03-31T14:17:00.000-07:00</published><updated>2013-03-03T10:33:18.600-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="What are the different ways to replace NULL values in SQL Server"/><title type='text'>What are the different ways to replace NULL values in SQL Server</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;This interview question is not that common. My friend faced this interview question, when he attended an interview in London. My friend said we can use&amp;nbsp;&lt;/span&gt; &lt;b style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;COALESCE()&lt;/b&gt;&amp;nbsp;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;in SQL Server. Then the interviewer said, that&#39;s very good answer, but do you know of any other way? &lt;/span&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Apart from using &lt;b&gt;COALESCE()&lt;/b&gt;, there are 2 other ways to replace NULL values in SQL Server. Let&#39;s understand this with an example.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;I have a Table tblEmployee, as shown in the diagram below. Some of the Employees does not have gender. All those employees who does not have Gender, must have a replacement value of &lt;b&gt;&lt;span style=&quot;color: #20124d;&quot;&gt;&#39;No Gender&#39;&lt;/span&gt;&lt;/b&gt; in your query result. Let&#39;s explore all the 3 possible options we have.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTjm_9rn4VHeqsY6MHl1WYffvkUpIDG72ZOHNvk4vqs5N1uaAcumP5SkGNjOFiW6u3AkI4kfJ-ocgqZYY6dYhl5z5oehNqs5Li1S09XQ3GD_tp1z__DaPOkzu81wJUIixHaX5XdmqMy2mZ/s1600/ReplaceNulls.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Option 1&lt;/b&gt; : Replace NULL values in SQL Server using &lt;b&gt;ISNULL()&lt;/b&gt; function.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Select&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;Name, &lt;span style=&quot;color: magenta;&quot;&gt;ISNULL&lt;/span&gt;(Gender,&#39;&lt;span style=&quot;color: #990000;&quot;&gt;No Gender&lt;/span&gt;&#39;) &lt;span style=&quot;color: blue;&quot;&gt;as &lt;/span&gt;Gender&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;From&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;tblEmployee&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Option 2&lt;/b&gt; : Replace NULL values in SQL Server using &lt;b&gt;CASE&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Select&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;Name, &lt;span style=&quot;color: blue;&quot;&gt;Case &amp;nbsp;When&lt;/span&gt; Gender IS NULL &lt;span style=&quot;color: blue;&quot;&gt;Then &lt;/span&gt;&#39;&lt;span style=&quot;color: #990000;&quot;&gt;No Gender&lt;/span&gt;&#39; &lt;span style=&quot;color: blue;&quot;&gt;Else &lt;/span&gt;Gender &lt;span style=&quot;color: blue;&quot;&gt;End &lt;/span&gt;as Gender&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;From&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;tblEmployee&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;Option 3&lt;/b&gt; : Replace NULL values in SQL Server using &lt;b&gt;COALESCE()&lt;/b&gt; function.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Select&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;Name, &lt;span style=&quot;color: magenta;&quot;&gt;Coalesce&lt;/span&gt;(Gender, &#39;&lt;span style=&quot;color: #990000;&quot;&gt;No Gender&lt;/span&gt;&#39;) &lt;span style=&quot;color: blue;&quot;&gt;as &lt;/span&gt;Gender&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;From&lt;/span&gt;&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;tblEmployee&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;These are the 3 options that I can think of at the moment. If you can think of any other option, please post it here.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/3335460809530805144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2012/03/what-are-different-ways-to-replace-null.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/3335460809530805144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/3335460809530805144'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2012/03/what-are-different-ways-to-replace-null.html' title='What are the different ways to replace NULL values in SQL Server'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTjm_9rn4VHeqsY6MHl1WYffvkUpIDG72ZOHNvk4vqs5N1uaAcumP5SkGNjOFiW6u3AkI4kfJ-ocgqZYY6dYhl5z5oehNqs5Li1S09XQ3GD_tp1z__DaPOkzu81wJUIixHaX5XdmqMy2mZ/s72-c/ReplaceNulls.png" height="72" width="72"/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-7302948850774795479</id><published>2011-07-20T12:42:00.000-07:00</published><updated>2013-09-22T09:17:52.790-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Advantages of stored procedures"/><title type='text'>Advantages of stored procedures</title><content type='html'>&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;width: 550px; word-wrap: break-word;&quot;&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;This is a very common sql server interview question. There are several advantages of using stored procedures over adhoc queries, as listed below.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;1. &lt;strong&gt;Better Performance&lt;/strong&gt; : Stored Procedures are compiled and their execution plan is cached and used again, when the same SP is executed again. Although adhoc queries also create and reuse plan, the plan is reused only when the query is textual match and the datatypes are matching with the previous call. Any change in the datatype or you have an extra space in the query then, a new plan is created.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;2. &lt;strong&gt;Better Security &lt;/strong&gt;: Applications making use of dynamically built adhoc sql queries are highly &lt;div style=&quot;display:block;float:left;margin: 3px;&quot;&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;/div&gt;susceptible to sql injection attacks, where as Stored Procedures can avoid SQL injection attacks completely.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;3. &lt;strong&gt;Reduced Network Traffic&lt;/strong&gt;: Stored procedures can reduce network traffic to a very great extent when compared with adhoc sql queries. With stored procedures, you only need to send the name of the procedure between client and server. Imagine the amount of network bandwith that can be saved especially if the stored procedure contains 1000 to 2000 lines of SQL.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;4. &lt;strong&gt;Better Maintainance and Reusability&lt;/strong&gt;: Stored procedures can be used any where in the application. It is easier to maintain a stored procedure that is used on several pages as &lt;span style=&quot;color: black;&quot;&gt;the&lt;/span&gt; modfifcations just need to be changed at one place where the stored procedure is defined. On the other hand, maintaining an adhoc sql query that&#39;s used on several pages is tedious and error prone, as we have to make modifications on each and every page.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;If you can think of any other advantage of using stored procedures, please contribute by submitting the form below.&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/7302948850774795479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/07/advantages-of-stored-procedures.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/7302948850774795479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/7302948850774795479'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/07/advantages-of-stored-procedures.html' title='Advantages of stored procedures'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-7838646694453534407</id><published>2011-07-11T11:03:00.000-07:00</published><updated>2013-03-03T10:36:15.401-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Delete from tables involved in a SQL Join"/><title type='text'>Delete from tables involved in a SQL Join</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;This question is not asked that often in an interview, but you may have to write a query to delete from tables that are involved in a SQL join in your day to day job routine as a SQL Developer. &lt;/span&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Let me explain you the question first. Consider the &lt;strong&gt;Employees&lt;/strong&gt; and &lt;strong&gt;Departments &lt;/strong&gt;tables below. &lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;div style=&quot;clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;1&quot; m$=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHkI1iJuoRdapt384EUVHyeu39idh8wgbNiMjJDImFzpO0Op0zb7chvIosG0Q5v3aj1KwmMtCHr8x8xhsz5GJSy-5jcFkH4d6hr3TxiijUN-M_GN7xWwKgVRewI3-VQN9PvJ7H7sSwLEGA/s1600/EmployeeAndDept.png&quot; /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;I want you to write a query &lt;span style=&quot;color: black;&quot;&gt;using&lt;/span&gt; joins which will give me the &lt;strong&gt;list of all HR Department employees&lt;/strong&gt;. The output should be as shown below.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;0&quot; m$=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiozFN5xxPYRKQYh-lYYbQ7-NKYtPln8WcTC860yjePRx54WrollkRO3IAe88Z86qIkU5TCMnYSahOrgyzCcY9-l3rj7xQ9di8gdJ-DPVGlM100ib83wdZbF83SvwYUqLrXggBR6Q9yRVBA/s1600/JoinResult.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;strong&gt;To do this we will write a query using joins as shown below.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Select&lt;/span&gt; E.Name as [Employee Name],D.Name as [Department Name]&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;from&lt;/span&gt; Employees E&lt;br /&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;Inner Join&lt;/span&gt; Departments D&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;On&lt;/span&gt; E.DeptId = D.Id&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Where&lt;/span&gt; D.Name = &#39;HR&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Now I want you to write a query, that &lt;strong&gt;deletes all the HR department employees&lt;/strong&gt;. To do this we have to join &lt;strong&gt;Employees &lt;/strong&gt;and &lt;strong&gt;Departments &lt;/strong&gt;tables and usually we will be tempted to write the query as shown below, but this query will not execute and will give a syntax error.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #cc0000; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Incorrect SQL Delete Query to delete from multiple tables invloved in a SQL join&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Delete&lt;/span&gt; &lt;span style=&quot;color: blue;&quot;&gt;From&lt;/span&gt; Employees E&lt;br /&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;Inner Join&lt;/span&gt; Departments D&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;On&lt;/span&gt; E.DeptId = D.Id&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Where&lt;/span&gt; D.Name = &#39;HR&#39;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #274e13; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;The query below shows the correct syntax for issuing a SQL delete that involves a SQL join.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Delete&lt;/span&gt; E From (Employees E&lt;br /&gt;
&lt;span style=&quot;color: #444444;&quot;&gt;Inner Join&lt;/span&gt; Departments D&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;On&lt;/span&gt; E.DeptId = D.Id&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;and&lt;/span&gt; D.Name = &#39;HR&#39;)&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;b&gt;The following syntax is also valid and has the same effect.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Delete&lt;/span&gt;&amp;nbsp;Employees &lt;span style=&quot;color: blue;&quot;&gt;From&lt;/span&gt;&lt;br /&gt;
(&lt;br /&gt;
Employees &lt;span style=&quot;color: blue;&quot;&gt;join&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;&lt;/span&gt;Departments&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;on &lt;/span&gt;Employees.DeptId = Departments.Id&lt;br /&gt;
)&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;where&amp;nbsp;&lt;/span&gt;Departments.Name = &#39;&lt;span style=&quot;color: red;&quot;&gt;HR&lt;/span&gt;&#39;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/7838646694453534407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/07/delete-from-tables-involved-in-sql-join.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/7838646694453534407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/7838646694453534407'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/07/delete-from-tables-involved-in-sql-join.html' title='Delete from tables involved in a SQL Join'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhHkI1iJuoRdapt384EUVHyeu39idh8wgbNiMjJDImFzpO0Op0zb7chvIosG0Q5v3aj1KwmMtCHr8x8xhsz5GJSy-5jcFkH4d6hr3TxiijUN-M_GN7xWwKgVRewI3-VQN9PvJ7H7sSwLEGA/s72-c/EmployeeAndDept.png" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-8671219134011705462</id><published>2011-07-09T02:18:00.000-07:00</published><updated>2013-03-03T10:38:42.868-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="difference between Having and Where clause in sql server"/><title type='text'>What is the difference between Having and Where clause</title><content type='html'>&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Let us understand the difference between&amp;nbsp;&lt;strong&gt;HAVING&lt;/strong&gt; and &lt;strong&gt;WHERE&lt;/strong&gt; clause with an example. Consider the &lt;strong&gt;Employees&lt;/strong&gt; table below.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Employee Table&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;img border=&quot;0&quot; m$=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxoMCL5noXah-twinbKwlYjh40eFDwX04maMbuJ6b4z3TPRKzqtsEOSeITwXpiuHyS4-SWukhfO_XcaK_fJxjS5gY6FoWjjfiFI1FijnjO5qbgA1KZW0rCbyIGOenrpANEB7227a8YdYG0/s1600/Employees.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Use the script below to create and populate the table, so you can follow along with the examples.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;CREATE TABLE&lt;/span&gt; [dbo].[Employees1]&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;(&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; [Id] [int] NOT NULL,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; [Name] [nvarchar](50) NULL,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; [Dept] [nvarchar](50) NULL,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; [Gender] [nvarchar](50) NULL,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; [Country] [nvarchar](50) NULL,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; [Salary] [float] NULL,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;)&lt;/span&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Data Inserttion Script:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Insert into&lt;/span&gt; Employees Values(1,&#39;John&#39;,&#39;IT&#39;,&#39;Male&#39;,&#39;UK&#39;,5000)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Insert into&lt;/span&gt; Employees Values(2,&#39;Mary&#39;,&#39;HR&#39;,&#39;Female&#39;,&#39;India&#39;,3000)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Insert into&lt;/span&gt; Employees Values(3,&#39;Todd&#39;,&#39;IT&#39;,&#39;Male&#39;,&#39;UK&#39;,3500)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Insert into&lt;/span&gt; Employees Values(4,&#39;Pam&#39;,&#39;HR&#39;,&#39;Female&#39;,&#39;India&#39;,4000)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Insert into&lt;/span&gt; Employees Values(5,&#39;Tatcher&#39;,&#39;Payroll&#39;,&#39;Male&#39;,&#39;USA&#39;,2000)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Insert into&lt;/span&gt; Employees Values(6,&#39;Sunil&#39;,&#39;IT&#39;,&#39;Male&#39;,&#39;USA&#39;,1400)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Insert into&lt;/span&gt; Employees Values(7,&#39;Hari&#39;,&#39;Payroll&#39;,&#39;Male&#39;,&#39;UK&#39;,2500)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Insert into&lt;/span&gt; Employees Values(8,&#39;Sunitha&#39;,&#39;HR&#39;,&#39;Female&#39;,&#39;India&#39;,4000)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Insert into&lt;/span&gt; Employees Values(9,&#39;Sneha&#39;,&#39;IT&#39;,&#39;Female&#39;,&#39;India&#39;,3000)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Insert into&lt;/span&gt; Employees Values(10,&#39;Ruby&#39;,&#39;Payroll&#39;,&#39;Male&#39;,&#39;UK&#39;,4600)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;You can use &lt;strong&gt;HAVING&lt;/strong&gt; clause only when you use &lt;strong&gt;Group By &lt;/strong&gt;clause. The following query will give an error stating &quot;Column &#39;Employees.Dept&#39; is invalid in the HAVING clause because it is not contained in either an aggregate function or the &lt;strong&gt;GROUP BY&lt;/strong&gt; clause.&quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Select &lt;/span&gt;* &lt;span style=&quot;color: blue;&quot;&gt;from&lt;/span&gt; Employees &lt;span style=&quot;color: blue;&quot;&gt;Having&lt;/span&gt; Dept=&lt;span style=&quot;color: red;&quot;&gt;&#39;IT&#39;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;So to filter the rows as they are selected from the table we use &lt;strong&gt;WHERE&lt;/strong&gt; clause as shown below &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Select&lt;/span&gt; * &lt;span style=&quot;color: blue;&quot;&gt;from&lt;/span&gt; Employees &lt;span style=&quot;color: blue;&quot;&gt;Where&lt;/span&gt; Dept=&lt;span style=&quot;color: red;&quot;&gt;&#39;IT&#39;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If I want to select, the toal number of employees in IT department I can write the query in 2 different ways as shown below.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;1. &lt;span style=&quot;color: blue;&quot;&gt;Select&lt;/span&gt; Dept, &lt;span style=&quot;color: magenta;&quot;&gt;COUNT(*)&lt;/span&gt; as Total &lt;span style=&quot;color: blue;&quot;&gt;from&lt;/span&gt; Employees &lt;span style=&quot;color: blue;&quot;&gt;Where&lt;/span&gt; Dept=&#39;IT&#39; &lt;span style=&quot;color: blue;&quot;&gt;Group By &lt;/span&gt;Dept&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;2. &lt;span style=&quot;color: blue;&quot;&gt;Select&lt;/span&gt; Dept, &lt;span style=&quot;color: magenta;&quot;&gt;COUNT(*)&lt;/span&gt; as Total &lt;span style=&quot;color: blue;&quot;&gt;from&lt;/span&gt; Employees &lt;span style=&quot;color: blue;&quot;&gt;Group By &lt;/span&gt;Dept &lt;span style=&quot;color: blue;&quot;&gt;Having&lt;/span&gt; Dept=&#39;IT&#39;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;The first query runs faster than the second query. This is because, in the first query we only select IT department records and then perform the count operation where as in the second query we perform the count on all the Department records and then select only the IT department and its count using the HAVING clause. As the second query has more records to process than the first query, it tends to be relatively slower.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;So, a WHERE clause is used in the select statement to filter the rows as they are retrieved from the database table. HAVING clause is used in the select statement in conjunction with the Group By clause, to filter the query results after they have been grouped.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If you have spotted any errors or if you can improve this answer further, please feel free to do so by submitting the form below.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/8671219134011705462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/07/what-is-difference-between-having-and.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/8671219134011705462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/8671219134011705462'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/07/what-is-difference-between-having-and.html' title='What is the difference between Having and Where clause'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxoMCL5noXah-twinbKwlYjh40eFDwX04maMbuJ6b4z3TPRKzqtsEOSeITwXpiuHyS4-SWukhfO_XcaK_fJxjS5gY6FoWjjfiFI1FijnjO5qbgA1KZW0rCbyIGOenrpANEB7227a8YdYG0/s72-c/Employees.png" height="72" width="72"/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-8836101457368004341</id><published>2011-06-05T10:53:00.003-07:00</published><updated>2013-03-03T10:39:39.126-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sql server interview questions"/><title type='text'>SQL Server Interview Questions Index</title><content type='html'>&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/basic-sql-server-interview-questions.html&quot;&gt; Basic SQL Server Interview Questions &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/07/what-is-difference-between-having-and.html&quot;&gt; What is the difference between Having and Where clause&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on_2213.html&quot;&gt; SQL Server Interview Questions on Temporary Tables &lt;/a&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on.html&quot;&gt; SQL Server Interview Questions on Indexes - Part 1 &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on_07.html&quot;&gt; SQL Server Interview Questions on Indexes - Part 2 &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/what-is-difference-between-temporary.html&quot;&gt; What is the difference between a Temporary Table and a Table Variable &lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/what-is-use-of-coalesce-in-sql-server.html&quot;&gt; What is the use of COALESCE in SQL Server &lt;/a&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on_10.html&quot;&gt; SQL Server Interview Questions on triggers &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/what-is-difference-between-user-defined.html&quot;&gt; Difference between User Defined Function and Stored Procedure &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on-views.html&quot;&gt; SQL Server Interview Questions on Views - Part 1 &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on-views_16.html&quot;&gt; SQL Server Interview Questions on Views - Part 2 &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/basic-sql-server-interview-questions-on.html&quot;&gt; Basic SQL Server Interview Questions on Joins &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/inner-join-with-example.html&quot;&gt; Explain Inner Join with an example &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/left-join-with-example.html&quot;&gt; Explain Left Outer Join with an example &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/right-outer-join-with-example.html&quot;&gt; Explain Right Outer Join with an example &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/full-outer-join-in-sql-server-with.html&quot;&gt; Explain Full Outer Join with an example &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/self-join-with-example.html&quot;&gt; Explain Self Join with an example &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/difference-between-index-scan-and-index.html&quot;&gt; What is the difference between Index Scan and Index Seek &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/07/advantages-of-stored-procedures.html&quot;&gt; What are the advantages of using stored procedures &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.co.uk/2012/03/what-are-different-ways-to-replace-null.html&quot;&gt;What are the different ways to replace NULL values in SQL Server&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.co.uk/2012/04/sql-server-interview-questions-on.html&quot;&gt;SQL Server interview questions on string manipulation functions&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.co.uk/2012/04/write-stored-procedure-that-takes.html&quot;&gt;Write a Stored Procedure that takes column name as a parameter and returns the result sorted by the column that is passed&lt;/a&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2012/05/what-is-deferred-name-resolution-in-sql.html&quot;&gt;What is deferred name resolution in SQL Server?&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/8836101457368004341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/06/sql-server-interview-questions-index.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/8836101457368004341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/8836101457368004341'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/06/sql-server-interview-questions-index.html' title='SQL Server Interview Questions Index'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-8572772108727889617</id><published>2011-06-05T10:51:00.001-07:00</published><updated>2013-03-03T10:40:04.137-08:00</updated><title type='text'>Search Results</title><content type='html'>&lt;div id=&quot;cse-search-results&quot;&gt;&lt;/div&gt;&lt;script type=&quot;text/javascript&quot;&gt;
  var googleSearchIframeName = &quot;cse-search-results&quot;;
  var googleSearchFormName = &quot;cse-search-box&quot;;
  var googleSearchFrameWidth = 800;
  var googleSearchDomain = &quot;www.google.com&quot;;
  var googleSearchPath = &quot;/cse&quot;;
&lt;/script&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/afsonline/show_afs_search.js&quot;&gt;&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/8572772108727889617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/06/search-results.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/8572772108727889617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/8572772108727889617'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/06/search-results.html' title='Search Results'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-3600433387911127990</id><published>2011-05-22T06:14:00.003-07:00</published><updated>2013-03-03T10:41:18.493-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server Interview Questions by topic"/><title type='text'>SQL Server Interview Questions by topic</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/basic-sql-server-interview-questions.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;Basic SQL Server Interview Questions&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/07/what-is-difference-between-having-and.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;What is the difference between Having and Where clause&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on_2213.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;SQL Server Interview Questions on Temporary Tables&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;SQL Server Interview Questions on Indexes - Part 1&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on_07.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;SQL Server Interview Questions on Indexes - Part 2&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/what-is-difference-between-temporary.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;What is the difference between a Temporary Table and a Table Variable&lt;/span&gt;&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/what-is-use-of-coalesce-in-sql-server.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;What is the use of COALESCE in SQL Server&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on_10.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;SQL Server Interview Questions on triggers&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/what-is-difference-between-user-defined.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;Difference between User Defined Function and Stored Procedure&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on-views.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;SQL Server Interview Questions on Views - Part 1&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on-views_16.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;SQL Server Interview Questions on Views - Part 2&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/basic-sql-server-interview-questions-on.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;Basic SQL Server Interview Questions on Joins&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/inner-join-with-example.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;Explain Inner Join with an example&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/left-join-with-example.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;Explain Left Outer Join with an example&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/right-outer-join-with-example.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;Explain Right Outer Join with an example&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/full-outer-join-in-sql-server-with.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;Explain Full Outer Join with an example&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/self-join-with-example.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;Explain Self Join with an example&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/difference-between-index-scan-and-index.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;What is the difference between Index Scan and Index Seek&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/07/delete-from-tables-involved-in-sql-join.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;Write a SQL Query to delete from a table that is involved in a SQL join&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/07/advantages-of-stored-procedures.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;What are the advantages of using stored procedures?&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.co.uk/2012/03/what-are-different-ways-to-replace-null.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;What are the different ways to replace NULL values in SQL Server?&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.co.uk/2012/04/sql-server-interview-questions-on.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;SQL Server interview questions on string manipulation functions&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.co.uk/2012/04/write-stored-procedure-that-takes.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;Write a Stored Procedure that takes column name as a parameter and returns the result sorted by the column that is passed&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2012/05/what-is-deferred-name-resolution-in-sql.html&quot;&gt;&lt;span style=&quot;color: #0066cc; text-decoration: none;&quot;&gt;What is deferred name resolution in SQL Server?&lt;/span&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/3600433387911127990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-by-topic.html#comment-form' title='37 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/3600433387911127990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/3600433387911127990'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-by-topic.html' title='SQL Server Interview Questions by topic'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>37</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-727904083381715374</id><published>2011-05-21T03:24:00.000-07:00</published><updated>2013-03-03T10:43:20.485-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Difference between Index Scan and Index Seek"/><category scheme="http://www.blogger.com/atom/ns#" term="table scan"/><title type='text'>Difference between Index Scan and Index Seek</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Index Scan:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Index Scan &lt;/strong&gt;scans each and every record in the index. &lt;strong&gt;Table Scan &lt;/strong&gt;is where the table is processed row by row from beginning to end. If the index is a clustered index then an &lt;strong&gt;index scan&lt;/strong&gt; is really a &lt;strong&gt;table scan&lt;/strong&gt;. Since a scan touches every row in the table whether or not it qualifies, the cost is proportional to the total number of rows in the table. &lt;strong&gt;&lt;span style=&quot;color: red;&quot;&gt;Hence, a scan is an efficient strategy only if the table is small.&lt;/span&gt;&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Index Seek:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Since a seek only touches rows that qualify and pages that contain these qualifying rows, the cost is proportional to the number of qualifying rows and pages rather than to the total number of rows in the table. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;I have an &lt;strong&gt;employee &lt;/strong&gt;table as shown in the diagram below. EmployeeId is the primary key. We have a clustered index on the employeeId column. &lt;/span&gt;
&lt;br /&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br/&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;img border=&quot;0&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkvxJsl6WVE6KSHmcqhLW9nvuAC1Od6Q4qNeXgMzn8GYsF3ZpUwSueVQG5_mSYBboZJJR06QosjQWTr_GO-pEsF48JOCevL1u9NrDqmHRaZdcUpL2-Fx2JeOLomQmk8J0a4nPBcStrdRkN/s1600/IndexScan.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Query 1&lt;/strong&gt; : &lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;Select &lt;/span&gt;* from Employee &lt;span style=&quot;color: blue;&quot;&gt;where&lt;/span&gt; FirstName=&lt;span style=&quot;color: red;&quot;&gt;&#39;Ben&#39;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Query 2&lt;/strong&gt; : &lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;Select&lt;/span&gt; * from Employee &lt;span style=&quot;color: blue;&quot;&gt;where&lt;/span&gt; EmployeeId=2&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Query 1 will do an &lt;strong&gt;Index scan &lt;/strong&gt;(Table Scan) to retrieve the record as there is no Index on the FirstName column. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Query 2 will do an &lt;strong&gt;Index seek &lt;/strong&gt;to retrieve the record as there is an Index on the EmployeeId column. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;So from this example, you should have understood that, a query will result into an index seek, only if there is an index on the table to help they query to retrieve the data.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/727904083381715374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/difference-between-index-scan-and-index.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/727904083381715374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/727904083381715374'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/difference-between-index-scan-and-index.html' title='Difference between Index Scan and Index Seek'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhkvxJsl6WVE6KSHmcqhLW9nvuAC1Od6Q4qNeXgMzn8GYsF3ZpUwSueVQG5_mSYBboZJJR06QosjQWTr_GO-pEsF48JOCevL1u9NrDqmHRaZdcUpL2-Fx2JeOLomQmk8J0a4nPBcStrdRkN/s72-c/IndexScan.png" height="72" width="72"/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-6256674682062690527</id><published>2011-05-21T02:03:00.000-07:00</published><updated>2013-03-03T10:44:36.128-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Self Join"/><category scheme="http://www.blogger.com/atom/ns#" term="self join in sql server"/><category scheme="http://www.blogger.com/atom/ns#" term="Self Join with an example"/><category scheme="http://www.blogger.com/atom/ns#" term="selfjoin"/><category scheme="http://www.blogger.com/atom/ns#" term="selfjoin in sql server"/><title type='text'>Self Join with an example</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;There are 3 different types of joins available in sql server, and they are&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;1.&lt;/strong&gt; Cross Join &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; Inner Join or Join &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;3.&lt;/strong&gt; Outer Join&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Outer Join &lt;/strong&gt;is again divided into 3 types as shown below.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;1.&lt;/strong&gt; Left Outer Join or Left Join &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; Right Outer Join or Right Join &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;3.&lt;/strong&gt; Full Outer Join or Full Join &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;I strongly recomend to learn about the basics and types of joins, before reading this article. Read the articles below, before proceeding with self join.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;strong&gt;1.&lt;/strong&gt; &lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/basic-sql-server-interview-questions-on.html&quot;&gt;Basics of Joins&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; &lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/inner-join-with-example.html&quot;&gt;Inner Join&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;strong&gt;3.&lt;/strong&gt; &lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/left-join-with-example.html&quot;&gt;Left Outer Join&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;strong&gt;4.&lt;/strong&gt; &lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/right-outer-join-with-example.html&quot;&gt;Right Outer Join&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial;&quot;&gt;&lt;strong&gt;5.&lt;/strong&gt; &lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/full-outer-join-in-sql-server-with.html&quot;&gt;Full Outer Join&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Self join &lt;/strong&gt;is not a different type of join. &lt;strong&gt;Self join &lt;/strong&gt;means joining a table with itself. We can have an &lt;strong&gt;inner self join &lt;/strong&gt;or &lt;strong&gt;outer self join&lt;/strong&gt;. Let us try to understand with an &lt;strong&gt;example&lt;/strong&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;To set up the data for the &lt;strong&gt;example&lt;/strong&gt;, use the script below to create &lt;strong&gt;Employee Table &lt;/strong&gt;and populate it with some sample data. We will be using &lt;strong&gt;Employee Table &lt;/strong&gt;to understand &lt;strong&gt;Self Join&lt;/strong&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;CREATE TABLE&lt;/span&gt; EMPLOYEE&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;[EMPLOYEEID] &lt;span style=&quot;color: blue;&quot;&gt;INT PRIMARY KEY&lt;/span&gt;,&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;[NAME] &lt;span style=&quot;color: blue;&quot;&gt;NVARCHAR(50)&lt;/span&gt;,&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;[MANAGERID] &lt;span style=&quot;color: blue;&quot;&gt;INT&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT INTO&lt;/span&gt; EMPLOYEE &lt;span style=&quot;color: blue;&quot;&gt;VALUES&lt;/span&gt;(101,&lt;span style=&quot;color: red;&quot;&gt;&#39;Mary&#39;&lt;/span&gt;,102)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT INTO&lt;/span&gt; EMPLOYEE &lt;span style=&quot;color: blue;&quot;&gt;VALUES&lt;/span&gt;(102,&lt;span style=&quot;color: red;&quot;&gt;&#39;Ravi&#39;&lt;/span&gt;,NULL)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT INTO&lt;/span&gt; EMPLOYEE &lt;span style=&quot;color: blue;&quot;&gt;VALUES&lt;/span&gt;(103,&lt;span style=&quot;color: red;&quot;&gt;&#39;Raj&#39;&lt;/span&gt;,102)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT INTO&lt;/span&gt; EMPLOYEE &lt;span style=&quot;color: blue;&quot;&gt;VALUES&lt;/span&gt;(104,&lt;span style=&quot;color: red;&quot;&gt;&#39;Pete&#39;&lt;/span&gt;,103)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT INTO&lt;/span&gt; EMPLOYEE &lt;span style=&quot;color: blue;&quot;&gt;VALUES&lt;/span&gt;(105,&lt;span style=&quot;color: red;&quot;&gt;&#39;Prasad&#39;&lt;/span&gt;,103)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT INTO&lt;/span&gt; EMPLOYEE &lt;span style=&quot;color: blue;&quot;&gt;VALUES&lt;/span&gt;(106,&lt;span style=&quot;color: red;&quot;&gt;&#39;Ben&#39;&lt;/span&gt;,103)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;We use &lt;strong&gt;Self Join&lt;/strong&gt;, if we have a &lt;strong&gt;table &lt;/strong&gt;that references itself. For &lt;strong&gt;example&lt;/strong&gt;, In the &lt;strong&gt;Employee Table &lt;/strong&gt;below MANAGERID column references EMPLOYEEID column. So the table is said to &lt;strong&gt;referencing itself&lt;/strong&gt;. This is the right scenario where we can use &lt;strong&gt;Self Join&lt;/strong&gt;. Now I want to write a query that will give me the list of all Employee Names and their respective Manager Names. In order to achieve this I can use Self Join. In the Table below,Raj is the manager for Pete,Prasad and Ben. Ravi is the manager for Raj and Mary. Ravi does not have a manager as he is the president of the Company.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;0&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Gty5Pa6yySBy1NNYaK0iPwAIpVEbstVLHAsxXMitztVZyLYf71rXinYmLJtlyjE6Gk-aBWpl5OxSzBifpxhgwZVpjU5y-r6-kIZvwDeSQV5vwAGK8Tu1ZUwm95eG3vfJuyrjhnMHXBLi/s1600/EmployeeTable.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
The query below is an example of &lt;strong&gt;Self Join&lt;/strong&gt;. Both E1 and E2 refer to the same &lt;strong&gt;Employee &lt;/strong&gt;Table. In this query we are joining the &lt;strong&gt;Employee&lt;/strong&gt; Table with itself. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;SELECT&lt;/span&gt; E1.[NAME],E2.[NAME] &lt;span style=&quot;color: blue;&quot;&gt;AS&lt;/span&gt; [MANAGER NAME]&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FROM&lt;/span&gt; EMPLOYEE E1 &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INNER JOIN&lt;/span&gt; EMPLOYEE E2 &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt; E2.EMPLOYEEID =E1.MANAGERID&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If we run the above query we only get 5 rows out of the 6 rows as shown below.&lt;/span&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Inner Self Join&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;img border=&quot;0&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5zaZ7ExlKuB4VHB3x4dRputo9ESsh4Y50B6mGNTOvFOMaBT5l73eYs1sMZdq55zWxiGJed-qSscXcluc1cL2GprDaay2dJak-sfmm1ktIc0fLnm4HhLlCS6qGDvJdHtrbD2sUdFjvW62g/s1600/InnerSelfJoin.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
This is because Ravi does not have a Manager. MANAGERID column for Ravi is NULL. If we want to get all the rows then we can use &lt;strong&gt;LEFT OUTER JOIN &lt;/strong&gt;as shown below.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;SELECT&lt;/span&gt; E1.[NAME],E2.[NAME] AS [MANAGER NAME]&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FROM&lt;/span&gt; EMPLOYEE E1 &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;LEFT OUTER JOIN&lt;/span&gt; EMPLOYEE E2 &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt; E2.EMPLOYEEID =E1.MANAGERID&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If we execute the above query we get all the rows, including the row that has a null value in the MANAGERID column. The results are shown below. The MANAGERNAME for 2nd record is NULL as Ravi does not have a Manager.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Left Outer Self Join&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;img border=&quot;0&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRUUsx8ppqDBTLGb4oiZlqTtc8BAn8YuyUG7X78HgVD8bNaoFllFsQ38eEC5cvL98p1rhjOnSw87DNK03HqW1o3OAYeJ_Ol2Id-SYgKbsC3k35x0ztldo7Ddvx4lZl5fOB6K9kDK-usZNh/s1600/LeftOuterSelfJoin.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
Let us now slightly modify the above query using &lt;strong&gt;COALESCE &lt;/strong&gt;as shown below. Read &lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/what-is-use-of-coalesce-in-sql-server.html&quot;&gt;COALESCE function in SQL Server&lt;/a&gt; to understand &lt;strong&gt;COALESCE &lt;/strong&gt;in a greater detail.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;SELECT&lt;/span&gt; E1.[NAME],&lt;span style=&quot;color: magenta;&quot;&gt;COALESCE&lt;/span&gt;(E2.[NAME],&lt;span style=&quot;color: red;&quot;&gt;&#39;No Manager&#39;&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;AS&lt;/span&gt; [MANAGER NAME]&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FROM &lt;/span&gt;EMPLOYEE E1 &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;LEFT JOIN&lt;/span&gt; EMPLOYEE E2 &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt; E2.EMPLOYEEID =E1.MANAGERID&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If we execute the above query the output will be as shown in the image below. This is how &lt;strong&gt;COALESCE&lt;/strong&gt; can be used.&lt;/span&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;span style=&quot;color: #660000; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Left Outer Self Join with COALESCE&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;img border=&quot;0&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1CJVKI6Ug85c_PBS0qkY0b7Os7TeNsRi2k38rboe5DuSWU2Y3doPqjUw24l0UAkf9xC3riytM9d3fKDb3akKNXfG2VOBGsm9u3mW5mamXo_LedkvLq6gnXUPyh0bPJmf3eDhKoYxlDeXf/s1600/SlefJoinCoalesce.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/6256674682062690527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/self-join-with-example.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/6256674682062690527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/6256674682062690527'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/self-join-with-example.html' title='Self Join with an example'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1Gty5Pa6yySBy1NNYaK0iPwAIpVEbstVLHAsxXMitztVZyLYf71rXinYmLJtlyjE6Gk-aBWpl5OxSzBifpxhgwZVpjU5y-r6-kIZvwDeSQV5vwAGK8Tu1ZUwm95eG3vfJuyrjhnMHXBLi/s72-c/EmployeeTable.png" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-7040211452440592705</id><published>2011-05-20T13:38:00.000-07:00</published><updated>2013-03-03T10:46:10.673-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Full Outer Join"/><category scheme="http://www.blogger.com/atom/ns#" term="Full Outer Join in SQL Server"/><category scheme="http://www.blogger.com/atom/ns#" term="Full Outer Join in SQL Server with an example"/><title type='text'>Full Outer Join in SQL Server with an example</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Inner Join and left join &lt;/strong&gt;are the most commonly used joins in real time projects. It is very important that you understand the basics of joins before reading this article.&amp;nbsp;Please read the articles below if you have not done so already.&lt;br /&gt;
&lt;strong&gt;1.&lt;/strong&gt; &lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/basic-sql-server-interview-questions-on.html&quot;&gt;Basics of Joins in SQL Server&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; &lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/inner-join-with-example.html&quot;&gt;Inner Join&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;3.&lt;/strong&gt; &lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/left-join-with-example.html&quot;&gt;Left Join&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;4.&lt;/strong&gt; &lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/right-outer-join-with-example.html&quot;&gt;Right Join&lt;/a&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
Now, let us understand&amp;nbsp;&lt;strong&gt;Full Outer&amp;nbsp;join with an example.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Create 2 tables &lt;strong&gt;Company &lt;/strong&gt;and &lt;strong&gt;Candidate&lt;/strong&gt;. Use the script below to create these tables and populate them. CompanyId column in Candidate Table is a foreign key referencing CompanyId in Company Table.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;CREATE TABLE&lt;/span&gt; Company&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyId &lt;span style=&quot;color: blue;&quot;&gt;TinyInt Identity Primary Key,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyName &lt;span style=&quot;color: blue;&quot;&gt;Nvarchar(50) NULL&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;DELL&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;HP&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;IBM&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Microsoft&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;CREATE TABLE&lt;/span&gt; Candidate&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CandidateId &lt;span style=&quot;color: blue;&quot;&gt;tinyint identity primary key,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FullName &lt;span style=&quot;color: blue;&quot;&gt;nvarchar(50) NULL,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyId &lt;span style=&quot;color: blue;&quot;&gt;tinyint REFERENCES Company(CompanyId)&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Ron&#39;&lt;/span&gt;,1)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Pete&#39;&lt;/span&gt;,2)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Steve&#39;&lt;/span&gt;,3)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Steve&#39;&lt;/span&gt;,NULL)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Ravi&#39;&lt;/span&gt;,1)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Raj&#39;&lt;/span&gt;,3)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Kiran&#39;&lt;/span&gt;,NULL)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If you want to select all the rows from the &lt;strong&gt;LEFT Table &lt;/strong&gt;( In our example &lt;strong&gt;Candidate &lt;/strong&gt;Table ) plus all the rows from the &lt;strong&gt;RIGHT table &lt;/strong&gt;( In our example &lt;strong&gt;Company &lt;/strong&gt;Table ) , then we use &lt;strong&gt;FULL OUTER JOIN&lt;/strong&gt;. A query involving a &lt;strong&gt;FULL OUTER JOIN &lt;/strong&gt;for the &lt;strong&gt;Candidate and Company &lt;/strong&gt;Table is shown below.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;SELECT&lt;/span&gt; Cand.CandidateId, Cand.FullName, Cand.CompanyId, Comp.CompanyId, Comp.CompanyName&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FROM&lt;/span&gt; Candidate Cand&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FULL OUTER&amp;nbsp;JOIN&lt;/span&gt; Company Comp&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt; Cand.CompanyId = Comp.CompanyId&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If we run the above query the output will be as shown in below. If you look at the out put, we now got 8 rows. All the rows from the &lt;strong&gt;Candidate &lt;/strong&gt;Table and all the rows from the &lt;strong&gt;Company &lt;/strong&gt;Table.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;0&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiA84dZbt0RJEBKcttCXHhnS62LWDO1tkVLwov0ncVF1tiLLhH2JIf894iVP_Fo7EuMwWWenPPVoprz4fLF5udBpw8kn8L7G1S2NlV7Y7OqaftslKc8JcbfMcAaoCUDVaClOBjgq1MYdDP/s1600/FullOuterJoin.png&quot; /&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #20124d; font-family: Arial, Helvetica, sans-serif;&quot;&gt;Full Outer Join Result&lt;/span&gt;&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Instead of using &lt;strong&gt;FULL OUTER JOIN &lt;/strong&gt;keyword we can just use &lt;strong&gt;FULL JOIN &lt;/strong&gt;keyword as shown below. &lt;strong&gt;FULL OUTER JOIN or FULL JOIN &lt;/strong&gt;means the same.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;SELECT&lt;/span&gt; Cand.CandidateId, Cand.FullName, Cand.CompanyId, Comp.CompanyId, Comp.CompanyName&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FROM&lt;/span&gt; Candidate Cand&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FULL JOIN&lt;/span&gt; Company Comp&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt; Cand.CompanyId = Comp.CompanyId&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #20124d; font-family: Arial, Helvetica, sans-serif;&quot;&gt;If you can think of any other sql server interview questions please post them as comments, so they will be useful to other users like you. This will be a great help from your side to improve this site.&lt;/span&gt;&lt;/strong&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/7040211452440592705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/full-outer-join-in-sql-server-with.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/7040211452440592705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/7040211452440592705'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/full-outer-join-in-sql-server-with.html' title='Full Outer Join in SQL Server with an example'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgiA84dZbt0RJEBKcttCXHhnS62LWDO1tkVLwov0ncVF1tiLLhH2JIf894iVP_Fo7EuMwWWenPPVoprz4fLF5udBpw8kn8L7G1S2NlV7Y7OqaftslKc8JcbfMcAaoCUDVaClOBjgq1MYdDP/s72-c/FullOuterJoin.png" height="72" width="72"/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-4601556430821981606</id><published>2011-05-20T13:14:00.000-07:00</published><updated>2013-03-03T10:47:06.122-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Right Join in sql server"/><category scheme="http://www.blogger.com/atom/ns#" term="Right Outer Join with an example"/><title type='text'>Right Outer Join with an example</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/basic-sql-server-interview-questions-on.html&quot;&gt;Please read, Basic SQL Server Interview Questions on Joins article before reading this article.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Inner Join and left join &lt;/strong&gt;are the most commonly used joins in real time projects. &lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/inner-join-with-example.html&quot;&gt;Click here to read about Inner Join in SQL Server&lt;/a&gt;. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/left-join-with-example.html&quot;&gt;Click here to read about&amp;nbsp;Left Outer Join in SQL Server.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
Now, let us understand&amp;nbsp;&lt;strong&gt;Right Outer&amp;nbsp;join with an example.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Create 2 tables &lt;strong&gt;Company &lt;/strong&gt;and &lt;strong&gt;Candidate&lt;/strong&gt;. Use the script below to create these tables and populate them. CompanyId column in Candidate Table is a foreign key referencing CompanyId in Company Table.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;CREATE TABLE&lt;/span&gt; Company&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyId &lt;span style=&quot;color: blue;&quot;&gt;TinyInt Identity Primary Key,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyName &lt;span style=&quot;color: blue;&quot;&gt;Nvarchar(50) NULL&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;DELL&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;HP&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;IBM&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Microsoft&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;CREATE TABLE&lt;/span&gt; Candidate&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CandidateId &lt;span style=&quot;color: blue;&quot;&gt;tinyint identity primary key,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FullName &lt;span style=&quot;color: blue;&quot;&gt;nvarchar(50) NULL,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyId &lt;span style=&quot;color: blue;&quot;&gt;tinyint REFERENCES Company(CompanyId)&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Ron&#39;&lt;/span&gt;,1)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Pete&#39;&lt;/span&gt;,2)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Steve&#39;&lt;/span&gt;,3)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Steve&#39;&lt;/span&gt;,NULL)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Ravi&#39;&lt;/span&gt;,1)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Raj&#39;&lt;/span&gt;,3)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Kiran&#39;&lt;/span&gt;,NULL)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If you want to select all the rows from the &lt;strong&gt;LEFT Table &lt;/strong&gt;( In our example &lt;strong&gt;Candidate &lt;/strong&gt;Table) that have non null foreign key values plus all the rows from the &lt;strong&gt;RIGHT table &lt;/strong&gt;( In our example &lt;strong&gt;Company &lt;/strong&gt;Table) including the rows that are not referenced in the &lt;strong&gt;LEFT Table&lt;/strong&gt;, then we use &lt;strong&gt;RIGHT OUTER JOIN&lt;/strong&gt;. A query involving a &lt;strong&gt;RIGHT OUTER JOIN &lt;/strong&gt;for the &lt;strong&gt;Candidate &lt;/strong&gt;and &lt;strong&gt;Company Table &lt;/strong&gt;is shown below.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;SELECT&lt;/span&gt; Cand.CandidateId, Cand.FullName, Cand.CompanyId, Comp.CompanyId, Comp.CompanyName&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FROM&lt;/span&gt; Candidate Cand&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;RIGHT&amp;nbsp;OUTER&amp;nbsp;JOIN&lt;/span&gt; Company Comp&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt; Cand.CompanyId = Comp.CompanyId&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If we run the above query the output will be as shown in below. If you look at the out put, we now got 6 rows. All the rows from the &lt;strong&gt;Candidate &lt;/strong&gt;Table that has non null foreign key value plus all the rows from the &lt;strong&gt;Company &lt;/strong&gt;Table including the row that is not referenced in the &lt;strong&gt;Candidate &lt;/strong&gt;Table.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;0&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdjbnAKqKCVdp-Te3gc8ou6W6Ow9CiRIAuohfKs3jlB1W7GtnHHi8qguCEvR9A-hjYxGZZVwxDCfR_mRzSNmTyup_svBeVpUYBIuaPar74ZQbspYH83Up49CNTfbx3RGSTeMGiaw2oUmmq/s1600/RightJoin.png&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #20124d; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Right Outer Join Results&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Instead of using&amp;nbsp;&lt;strong&gt;RIGHT OUTER JOIN &lt;/strong&gt;keyword we can just use&amp;nbsp;&lt;strong&gt;RIGHT JOIN &lt;/strong&gt;keyword as shown below. &lt;strong&gt;RIGHT OUTER JOIN or&amp;nbsp;RIGHT JOIN&lt;/strong&gt; means the same.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;SELECT&lt;/span&gt; Cand.CandidateId, Cand.FullName, Cand.CompanyId, Comp.CompanyId, Comp.CompanyName&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FROM&lt;/span&gt; Candidate Cand&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;RIGHT&amp;nbsp;JOIN&lt;/span&gt; Company Comp&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt; Cand.CompanyId = Comp.CompanyId&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #20124d; font-family: Arial, Helvetica, sans-serif;&quot;&gt;If you can think of any other sql server interview questions please post them as comments, so they will be useful to other users like you. This will be a great help from your side to improve this site.&lt;/span&gt;&lt;/strong&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/4601556430821981606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/right-outer-join-with-example.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/4601556430821981606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/4601556430821981606'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/right-outer-join-with-example.html' title='Right Outer Join with an example'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhdjbnAKqKCVdp-Te3gc8ou6W6Ow9CiRIAuohfKs3jlB1W7GtnHHi8qguCEvR9A-hjYxGZZVwxDCfR_mRzSNmTyup_svBeVpUYBIuaPar74ZQbspYH83Up49CNTfbx3RGSTeMGiaw2oUmmq/s72-c/RightJoin.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-1466964293068441386</id><published>2011-05-20T12:33:00.000-07:00</published><updated>2013-03-03T10:48:04.310-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Left Join in SQL Server"/><category scheme="http://www.blogger.com/atom/ns#" term="Left Join with an example"/><title type='text'>Left Join with an example</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/basic-sql-server-interview-questions-on.html&quot;&gt;Please read, Basic SQL Server Interview Questions on Joins article before reading this article.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Inner Join and left join &lt;/strong&gt;are the most commonly used joins in real time projects. &lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/inner-join-with-example.html&quot;&gt;Click here to read about Inner Join in SQL Server&lt;/a&gt;. Now, let us understand &lt;strong&gt;Left join with an example.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Create 2 tables &lt;strong&gt;Company &lt;/strong&gt;and &lt;strong&gt;Candidate&lt;/strong&gt;. Use the script below to create these tables and populate them. CompanyId column in Candidate Table is a foreign key referencing CompanyId in Company Table.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;CREATE TABLE&lt;/span&gt; Company&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyId &lt;span style=&quot;color: blue;&quot;&gt;TinyInt Identity Primary Key,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyName &lt;span style=&quot;color: blue;&quot;&gt;Nvarchar(50) NULL&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;DELL&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;HP&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;IBM&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Microsoft&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;CREATE TABLE&lt;/span&gt; Candidate&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CandidateId &lt;span style=&quot;color: blue;&quot;&gt;tinyint identity primary key,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FullName &lt;span style=&quot;color: blue;&quot;&gt;nvarchar(50) NULL,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyId &lt;span style=&quot;color: blue;&quot;&gt;tinyint REFERENCES Company(CompanyId)&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Ron&#39;&lt;/span&gt;,1)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Pete&#39;&lt;/span&gt;,2)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Steve&#39;&lt;/span&gt;,3)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Steve&#39;&lt;/span&gt;,NULL)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Ravi&#39;&lt;/span&gt;,1)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Raj&#39;&lt;/span&gt;,3)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Kiran&#39;&lt;/span&gt;,NULL)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If you want to select all the rows from the &lt;strong&gt;LEFT table &lt;/strong&gt;( In our example &lt;strong&gt;Candidate&lt;/strong&gt; Table ) including the rows that have a null foreign key value ( CompanyId in &lt;strong&gt;Candidate &lt;/strong&gt;Table is the foreign key ) then we use &lt;strong&gt;LEFT OUTER JOIN&lt;/strong&gt;. A query involving a &lt;strong&gt;LEFT OUTER JOIN &lt;/strong&gt;for the &lt;strong&gt;Candidate and Company &lt;/strong&gt;Table is shown below.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;SELECT&lt;/span&gt; Cand.CandidateId, Cand.FullName, Cand.CompanyId, Comp.CompanyId, Comp.CompanyName&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FROM&lt;/span&gt; Candidate Cand&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;LEFT OUTER&amp;nbsp;JOIN&lt;/span&gt; Company Comp&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt; Cand.CompanyId = Comp.CompanyId&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If we run the above query the output will be as shown in below. If you look at the out put, we now got all 7 rows ( All the rows from the &lt;strong&gt;Candidate&lt;/strong&gt; Table ) including the row that has a null value for the &lt;strong&gt;CompanyId&lt;/strong&gt; column in the &lt;strong&gt;Candidate &lt;/strong&gt;Table. So, &lt;strong&gt;LEFT OUTER JOIN &lt;/strong&gt;would get all the rows from the &lt;strong&gt;LEFT Table &lt;/strong&gt;including the rows that has null foreign key value.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwCbYbSh8gi9M4we_DAndN5tt26QgHVh6p_PTV6A8A44V9Hauy6Db8Xfhhmf5-31w2U3yxkaGPewQV_PUAMOT-cK4FFaeNW4IPxJGntXz2JDygriURToWaTbE-IYKYRFDP66MvGUUEPeLE/s1600/LeftJoin.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwCbYbSh8gi9M4we_DAndN5tt26QgHVh6p_PTV6A8A44V9Hauy6Db8Xfhhmf5-31w2U3yxkaGPewQV_PUAMOT-cK4FFaeNW4IPxJGntXz2JDygriURToWaTbE-IYKYRFDP66MvGUUEPeLE/s1600/LeftJoin.png&quot; /&gt;&lt;/a&gt;&lt;strong&gt;&lt;span style=&quot;color: #20124d; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #20124d; font-family: Arial, Helvetica, sans-serif;&quot;&gt;Left Join Result&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Instead of using &lt;strong&gt;LEFT OUTER JOIN &lt;/strong&gt;keyword we can just use &lt;strong&gt;LEFT JOIN &lt;/strong&gt;keyword as shown below. &lt;strong&gt;LEFT OUTER JOIN or LEFT JOIN&lt;/strong&gt; means the same.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;SELECT&lt;/span&gt; Cand.CandidateId, Cand.FullName, Cand.CompanyId, Comp.CompanyId, Comp.CompanyName&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FROM&lt;/span&gt; Candidate Cand&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;LEFT JOIN&lt;/span&gt; Company Comp&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt; Cand.CompanyId = Comp.CompanyId&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #20124d; font-family: Arial, Helvetica, sans-serif;&quot;&gt;If you can think of any other sql server interview questions please post them as comments, so they will be useful to other users like you. This will be a great help from your side to improve this site.&lt;/span&gt;&lt;/strong&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/1466964293068441386/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/left-join-with-example.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/1466964293068441386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/1466964293068441386'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/left-join-with-example.html' title='Left Join with an example'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiwCbYbSh8gi9M4we_DAndN5tt26QgHVh6p_PTV6A8A44V9Hauy6Db8Xfhhmf5-31w2U3yxkaGPewQV_PUAMOT-cK4FFaeNW4IPxJGntXz2JDygriURToWaTbE-IYKYRFDP66MvGUUEPeLE/s72-c/LeftJoin.png" height="72" width="72"/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-5366540729209043138</id><published>2011-05-18T13:08:00.000-07:00</published><updated>2013-03-03T10:49:27.890-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Inner Join with example"/><category scheme="http://www.blogger.com/atom/ns#" term="sql server interview questions"/><title type='text'>Inner Join with an example</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/basic-sql-server-interview-questions-on.html&quot;&gt;Please read, Basic SQL Server Interview Questions on Joins article before reading this article.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Inner Join and left join &lt;/strong&gt;are the most commonly used joins in real time projects. We will talk about left join in a later article. Now, let us understand &lt;strong&gt;Inner join with an example.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Create 2 tables &lt;strong&gt;Company &lt;/strong&gt;and &lt;strong&gt;Candidate&lt;/strong&gt;. Use the script below to create these tables and populate them. CompanyId column in Candidate Table is a foreign key referencing CompanyId in Company Table.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;CREATE TABLE&lt;/span&gt; Company&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyId &lt;span style=&quot;color: blue;&quot;&gt;TinyInt Identity Primary Key,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyName &lt;span style=&quot;color: blue;&quot;&gt;Nvarchar(50) NULL&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;DELL&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;HP&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;IBM&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Microsoft&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;CREATE TABLE&lt;/span&gt; Candidate&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CandidateId &lt;span style=&quot;color: blue;&quot;&gt;tinyint identity primary key,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FullName &lt;span style=&quot;color: blue;&quot;&gt;nvarchar(50) NULL,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyId &lt;span style=&quot;color: blue;&quot;&gt;tinyint REFERENCES Company(CompanyId)&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Ron&#39;&lt;/span&gt;,1)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Pete&#39;&lt;/span&gt;,2)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Steve&#39;&lt;/span&gt;,3)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Steve&#39;&lt;/span&gt;,NULL)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Ravi&#39;&lt;/span&gt;,1)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Raj&#39;&lt;/span&gt;,3)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Kiran&#39;&lt;/span&gt;,NULL)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If you want to select all the rows from the &lt;strong&gt;LEFT table&lt;/strong&gt;(In our example &lt;strong&gt;Candidate Table&lt;/strong&gt;) that have a non null foreign key value(CompanyId in &lt;strong&gt;Candidate Table &lt;/strong&gt;is the foreign key) then we use &lt;strong&gt;INNER JOIN&lt;/strong&gt;. A query involving an &lt;strong&gt;INNER JOIN &lt;/strong&gt;for the &lt;strong&gt;Candidate and Company &lt;/strong&gt;Table is shown below. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;SELECT&lt;/span&gt; Cand.CandidateId, Cand.FullName, Cand.CompanyId, Comp.CompanyId, Comp.CompanyName&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FROM&lt;/span&gt; Candidate Cand&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INNER JOIN&lt;/span&gt; Company Comp&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt; Cand.CompanyId = Comp.CompanyId&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If we run the above query the output will be as shown in the image below. If you look at the out put, we only got 5 rows. We did not get the 2 rows which has NULL value in the CompanyId column. So an INNER JOIN would get all the rows from the LEFT Table that has non null foreign key value.&lt;/span&gt;&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;0&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtygcrsOliIpE3Ep_s9-cXqAzdilCwbvBlCpAN_Du4GcgQYhBfCths8N6BWNsXtPd5rbC8GFC0sxQFTtMIaUu5v4aIXu2wpxva2NsXVFXYqSb8wo05JZDQq0v8tMpzPgpA0q0vTbmSWIL5/s1600/InnerJoin.png&quot; /&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: #20124d; font-family: Arial, Helvetica, sans-serif;&quot;&gt;Inner Join Result&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Instead of using &lt;strong&gt;INNER JOIN &lt;/strong&gt;keyword we can just use &lt;strong&gt;JOIN &lt;/strong&gt;keyword as shown below. &lt;strong&gt;JOIN &lt;/strong&gt;or &lt;strong&gt;INNER JOIN &lt;/strong&gt;means the same.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;SELECT&lt;/span&gt; Cand.CandidateId, Cand.FullName, Cand.CompanyId, Comp.CompanyId, Comp.CompanyName&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FROM&lt;/span&gt; Candidate Cand&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;JOIN&lt;/span&gt; Company Comp&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;ON&lt;/span&gt; Cand.CompanyId = Comp.CompanyId&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #20124d; font-family: Arial, Helvetica, sans-serif;&quot;&gt;If you can think of any other sql server interview questions please post them as comments, so they will be useful to other users like you. This will be a great help from your side to improve this site.&lt;/span&gt;&lt;/strong&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/5366540729209043138/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/inner-join-with-example.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/5366540729209043138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/5366540729209043138'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/inner-join-with-example.html' title='Inner Join with an example'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtygcrsOliIpE3Ep_s9-cXqAzdilCwbvBlCpAN_Du4GcgQYhBfCths8N6BWNsXtPd5rbC8GFC0sxQFTtMIaUu5v4aIXu2wpxva2NsXVFXYqSb8wo05JZDQq0v8tMpzPgpA0q0vTbmSWIL5/s72-c/InnerJoin.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-6951450707830012125</id><published>2011-05-17T12:20:00.000-07:00</published><updated>2013-03-03T10:50:31.308-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cross join"/><category scheme="http://www.blogger.com/atom/ns#" term="example"/><category scheme="http://www.blogger.com/atom/ns#" term="joins"/><category scheme="http://www.blogger.com/atom/ns#" term="sql server interview questions"/><title type='text'>Basic SQL Server Interview Questions on Joins</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;&lt;br/&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;What are the different types of joins available in sql server?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;There are 3 different types of joins available in sql server, and they are&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;1.&lt;/strong&gt; Cross Join &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; Inner Join or Join &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;3.&lt;/strong&gt; Outer Join&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Outer Join is again divided into 3 types as shown below.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;1.&lt;/strong&gt; Left Outer Join or Left Join &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; Right Outer Join or Right Join &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;3.&lt;/strong&gt; Full Outer Join or Full Join &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;You might have heard about self join, but self join is not a different type of join. A self join means joining a table with itself. We can have an inner self join or outer self join. Read this sql server interview question, to understand self join in a greater detail.&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;What is cross join. Explain with an example?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Let us understand Cross Join with an example. Create 2 tables &lt;strong&gt;&lt;span style=&quot;color: #20124d;&quot;&gt;Company&lt;/span&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;span style=&quot;color: #20124d;&quot;&gt;Candidate&lt;/span&gt;&lt;/strong&gt;. Use the script below to create these tables and populate them. CompanyId column in Candidate Table is a foreign key referencing CompanyId in Company Table.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;CREATE TABLE&lt;/span&gt; Company&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyId &lt;span style=&quot;color: blue;&quot;&gt;TinyInt Identity Primary Key,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyName &lt;span style=&quot;color: blue;&quot;&gt;Nvarchar(50) NULL&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;DELL&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;HP&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;IBM&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Company VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Microsoft&#39;&lt;/span&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;CREATE TABLE&lt;/span&gt; Candidate&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CandidateId &lt;span style=&quot;color: blue;&quot;&gt;tinyint identity primary key,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FullName &lt;span style=&quot;color: blue;&quot;&gt;nvarchar(50) NULL,&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CompanyId &lt;span style=&quot;color: blue;&quot;&gt;tinyint REFERENCES Company(CompanyId)&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Ron&#39;&lt;/span&gt;,1)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Pete&#39;&lt;/span&gt;,2)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Steve&#39;&lt;/span&gt;,3)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Steve&#39;&lt;/span&gt;,NULL)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Ravi&#39;&lt;/span&gt;,1)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Raj&#39;&lt;/span&gt;,3)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;INSERT&lt;/span&gt; Candidate VALUES(&lt;span style=&quot;color: red;&quot;&gt;&#39;Kiran&#39;&lt;/span&gt;,NULL)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;GO&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A cross join produces the Cartesian product of the tables involved in the join. The size of a Cartesian product result set is the number of rows in the first table multiplied by the number of rows in the second table. A query involving a CROSS JOIN for the &lt;strong&gt;&lt;span style=&quot;color: #20124d;&quot;&gt;Candidate&lt;/span&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;span style=&quot;color: #20124d;&quot;&gt;Company&lt;/span&gt;&lt;/strong&gt; Table is shown below.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;SELECT&lt;/span&gt;&amp;nbsp; Cand.CandidateId,Cand.FullName,Cand.CompanyId, &lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Comp.CompanyId,Comp.CompanyName&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;FROM &lt;/span&gt;Candidate Cand&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;CROSS JOIN &lt;/span&gt;Company Comp&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #20124d; font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;If we run the above query, we produce the result set shown in the image below.&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;0&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaeFRKHpkDLqLtcM-3SAdN8Wetw0I6gHV7M1Orf_oN9CSeiI3OnUWcb8YGpyRM6UbKmAa_eZNHmga50AOavF4zz5mCS_fdjxVKtjVRK08dPgjVpsM9KVxZk5auroxNH6FyATA7vnuuh-_O/s1600/CrossJoin.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Key Points to remember about CROSS JOIN.&lt;/strong&gt; &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;1.&lt;/strong&gt; A cross join produces the Cartesian product of the tables involved in the join.This mean every row in the Left Table is joined to every row in the Right Table. &lt;strong&gt;&lt;span style=&quot;color: #20124d;&quot;&gt;Candidate&lt;/span&gt;&lt;/strong&gt; is LEFT Table and &lt;strong&gt;&lt;span style=&quot;color: #20124d;&quot;&gt;Company&lt;/span&gt;&lt;/strong&gt; is RIGHT Table. In our example we have 28 total number of rows in the result set. 7 rows in the Candidate table multiplied by 4 rows in the Company Table. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; In real time scenarios we rarley use CROSS JOIN. Most often we use either INNER JOIN or LEFT OUTER JOIN. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;3.&lt;/strong&gt; CROSS JOIN does not have an ON clause with a Join Condition. All the other JOINS use ON clause with a Join Condition. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;4.&lt;/strong&gt; Using an ON clause on a CROSS JOIN would generate a syntax error. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;em&gt;Note:&lt;/em&gt;&lt;/strong&gt; Understanding the above key points will help you answer any follow up interview questions on cross join in sql server.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #20124d; font-family: Arial, Helvetica, sans-serif;&quot;&gt;If you can think of any other sql server interview questions please post them as comments, so they will be useful to other users like you. This will be a great help from your side to improve this site.&lt;/span&gt;&lt;/strong&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/6951450707830012125/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/basic-sql-server-interview-questions-on.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/6951450707830012125'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/6951450707830012125'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/basic-sql-server-interview-questions-on.html' title='Basic SQL Server Interview Questions on Joins'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaeFRKHpkDLqLtcM-3SAdN8Wetw0I6gHV7M1Orf_oN9CSeiI3OnUWcb8YGpyRM6UbKmAa_eZNHmga50AOavF4zz5mCS_fdjxVKtjVRK08dPgjVpsM9KVxZk5auroxNH6FyATA7vnuuh-_O/s72-c/CrossJoin.png" height="72" width="72"/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-4451551949313547315</id><published>2011-05-16T12:45:00.000-07:00</published><updated>2013-03-03T10:51:47.980-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advantages of using views"/><category scheme="http://www.blogger.com/atom/ns#" term="indexed views"/><category scheme="http://www.blogger.com/atom/ns#" term="materialized views"/><category scheme="http://www.blogger.com/atom/ns#" term="sql server interview questions"/><title type='text'>SQL Server Interview Questions on Views - Part 2</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Can you create a view based on other views?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Yes&lt;/strong&gt;, you can create a view &lt;strong&gt;based on other views&lt;/strong&gt;. Usually we create views based on tables, but it also possible to create views based on views.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Can you update views?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Yes&lt;/strong&gt;, views can be updated. However, updating a view that is based on multiple tables, may not update the underlying tables &lt;strong&gt;&lt;span style=&quot;color: red;&quot;&gt;correctly&lt;/span&gt;&lt;/strong&gt;. To correctly update a view that is based on multiple tables you can make use &lt;strong&gt;INSTEAD OF triggers &lt;/strong&gt;in SQL Server. &lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on_10.html&quot;&gt;Click here for a real time example, that we have already discussed in SQL Server Interview Questions on triggers article.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;What are indexed views?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Or&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;What are materialized views?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A view is a virtual table, it does not contain any physical data. A view is nothing more than compiled SQL query. Every time, we issue a select query against a view, we actually get the data from the underlying base tables and not from the view, as the view itself does not contain any data.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;When you create an index on a view, the data gets physically stored in the view. So, when we issue a select query against an indexed view, the data is retrieved from the index without having to go to the underlying table, which will make the select statement to work slightly faster. However, the disadvantage is, INSERT, UPDATE and DELETE operations will become a little slow, because every time you insert or delete a row from the underlying table, the view index needs to be updated. Inshort, DML operations will have negative impact on performance.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Oracle refers to indexed views as materialized views.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Only the views created with schema binding, can have an Index. Simply adding WITH SCHEMABINDING to the end of the CREATE VIEW statement will accomplish this. However, the effect is that any changes to the underlying tables which will impact the view are not allowed. Since the indexed view is stored physically, any schema changes would impact the schema of the stored results set. Therefore, SQL Server requires that schema binding be used to prevent the view&#39;s schema (and therefore the underlying tables) from changing.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;The first index for a view must be a UNIQUE CLUSTERED INDEX, after which, it&#39;s possible to create non-clustered indexes against the view.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Indexed Views are heavily used in data warehouses and reporting databases that are not highly transactional.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;What are the limitations of a View?&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;1.&lt;/strong&gt; You cannot pass parameters to a view.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;2.&lt;/strong&gt; Rules and Defaults cannot be associated with views.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;3.&lt;/strong&gt; The ORDER BY clause is invalid in views unless TOP or FOR XML is also specified.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;4.&lt;/strong&gt; Views cannot be based on temporary tables.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: #20124d; font-family: Arial, Helvetica, sans-serif;&quot;&gt;If you can think of any other interview questions on views please post them as comments, so they will be useful to other users like you.&lt;/span&gt;&lt;/strong&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/4451551949313547315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on-views_16.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/4451551949313547315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/4451551949313547315'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on-views_16.html' title='SQL Server Interview Questions on Views - Part 2'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-8116954869382628727</id><published>2011-05-15T12:56:00.000-07:00</published><updated>2013-03-03T10:53:34.111-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="advantages of using views"/><category scheme="http://www.blogger.com/atom/ns#" term="sql server interview questions"/><title type='text'>SQL Server Interview Questions on Views - Part 1</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;&lt;br/&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;br /&gt;
What is a View in SQL Server?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;You can think of a &lt;strong&gt;view&lt;/strong&gt; either as a &lt;strong&gt;compiled sql query &lt;/strong&gt;or a &lt;strong&gt;virtual &lt;/strong&gt;table. As a view represents a virtual table, it does not physically store any data. When you query a view, you actually retrieve the data from the underlying base tables.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;What are the advantages of using views?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Or &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;When do you usually use views?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;1.&lt;/strong&gt; Views can be used to implement row level and column level security.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Example 1:&lt;/strong&gt; Consider the &lt;strong&gt;tblEmployee&lt;/strong&gt; table below. I don&#39;t want some of the users to have access to the salary column, but they should still be able to access ID, NAME and DEPT columns. If I grant access to the table, the users will be able to see all the columns. So, to achieve this, I can &lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;create a view as shown in &lt;strong&gt;Listing 1&lt;/strong&gt; below. Now, grant access to the view and not the table. So using views we can provide &lt;strong&gt;column level security&lt;/strong&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;tblEmployee&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;img border=&quot;0&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVgIhCXz7KgPUW6U2S3dw5iDaNiTPvg7FKPQ5ZbnVwl9ON24DAmb3cIEEkE4JPzmZZ_DMO38Dp7cxN3CWzQRbd3IkX5eX1XbFlH762X6h4mqCupstq3WfuqE_-a_1IfwAIH2QX-5INEDuE/s1600/ViewBaseTable.png&quot; /&gt;&lt;/div&gt;&lt;br/&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;Listing 1&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Create View&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;vWEmployee&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;As&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Select&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ID, Name, Dept&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;From&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tblEmployee&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Example 2:&lt;/strong&gt; Let us say, we have a few users who should be able to access only &lt;strong&gt;IT employee&lt;/strong&gt; details and not any other dept. To do this, I can create a view as shown in &lt;strong&gt;Listing 2&lt;/strong&gt; below. Now, grant access only to the view &lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;and not the table. So using views we can provide row level security as well.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;Listing 2&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Create View&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;vWITEmployees&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;As&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Select&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID, Name, Dept&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;From&amp;nbsp;&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tblEmployee&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Where&amp;nbsp;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dept = &lt;span style=&quot;color: red;&quot;&gt;&#39;IT&#39;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; Simplify the database schema to the users. You can create a view based on multiple tables which join columns from all these multiple tables so that they look like a single table.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;3.&lt;/strong&gt; Views can be used to present &lt;strong&gt;aggregated &lt;/strong&gt;and &lt;strong&gt;summarized &lt;/strong&gt;data.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Example 1:&lt;/strong&gt; Consider the &lt;strong&gt;tblEmployee&lt;/strong&gt; table above. I want to aggregate the data as shown in the image below. To do this I can create a view as shown in &lt;strong&gt;Listing 3&lt;/strong&gt;. Now, you can simply issue a select query&amp;nbsp;against the&amp;nbsp;view rather than writing a complex query every time you want to retrieve the aggregated data.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;0&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0cTfkhcI1zwuqOA63Xd3gHXYUIVhMFMMXFrFWTz_2cmAPj9M6iQ8fQaxCJg3TRwOSQPoUJb06JK2SP-9Ms2QZvDJ2fqT5q_CawKhvhJy3D5X6LnglVh41udjewhct9NWtUdEyH-n9yzIW/s1600/GroupedData.png&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;span style=&quot;color: blue;&quot;&gt;Listing 3&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Select&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dept, &lt;span style=&quot;color: magenta;&quot;&gt;Count&lt;/span&gt;(*) &lt;span style=&quot;color: blue;&quot;&gt;As&lt;/span&gt; Total&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;From&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tblEmployee&lt;br /&gt;
&lt;span style=&quot;color: blue;&quot;&gt;Group By&lt;/span&gt;&amp;nbsp;&amp;nbsp; Dept&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;If you can think of any other advantages of using views please post them as comments, so they will be useful to other users like you. &lt;/strong&gt;&amp;nbsp;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/8116954869382628727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on-views.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/8116954869382628727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/8116954869382628727'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on-views.html' title='SQL Server Interview Questions on Views - Part 1'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVgIhCXz7KgPUW6U2S3dw5iDaNiTPvg7FKPQ5ZbnVwl9ON24DAmb3cIEEkE4JPzmZZ_DMO38Dp7cxN3CWzQRbd3IkX5eX1XbFlH762X6h4mqCupstq3WfuqE_-a_1IfwAIH2QX-5INEDuE/s72-c/ViewBaseTable.png" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-8063214504972682315</id><published>2011-05-13T09:53:00.000-07:00</published><updated>2013-03-03T10:56:04.364-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="difference between a UDF and an SP in SQL Server"/><category scheme="http://www.blogger.com/atom/ns#" term="difference between a User Defined Function and a Stored Procedure in SQL Server"/><category scheme="http://www.blogger.com/atom/ns#" term="sql server interview questions"/><title type='text'>What is the difference between a User Defined Function (UDF) and a Stored Procedure (SP) in SQL Server</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;&lt;br/&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;&lt;br /&gt;
1. Stored Procedure &lt;/strong&gt;support deffered name resolution where as &lt;strong&gt;functions &lt;/strong&gt;do not support deffered name resolution. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2. User Defined Function &lt;/strong&gt;can be used in a select statement where as you cannot use a &lt;strong&gt;stored procedure &lt;/strong&gt;in a select statement. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;3. UDF&lt;/strong&gt;&#39;s cannot return Image, Text where as a &lt;strong&gt;StoredProcedure&lt;/strong&gt; can return any datatype. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;4.&lt;/strong&gt; In general &lt;strong&gt;User Defined Functions &lt;/strong&gt;are used for computations where as &lt;strong&gt;Stored Procedures &lt;/strong&gt;are used for performing business logic. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;5. UDF &lt;/strong&gt;should return a value where as &lt;strong&gt;Stored Procedure &lt;/strong&gt;need not. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;6. User Defined Functions &lt;/strong&gt;accept lesser number of input parameters than &lt;strong&gt;Stored Procedures. UDF &lt;/strong&gt;can have upto 1023 input parameters where as a &lt;strong&gt;Stored Procedure &lt;/strong&gt;can have upto 21000 input parameters. &lt;/span&gt;&lt;br /&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;&lt;br/&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;7.&lt;/strong&gt; Temporary Tables can not be used in a &lt;strong&gt;UDF &lt;/strong&gt;where as a &lt;strong&gt;StoredProcedure &lt;/strong&gt;can use Temporary Tables. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;8. UDF&lt;/strong&gt; can not Execute Dynamic SQL where as a &lt;strong&gt;Stored Procedure &lt;/strong&gt;can execute Dynamic SQL. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;9. User Defined Function &lt;/strong&gt;does not support error handling where as &lt;strong&gt;Stored Procedure &lt;/strong&gt;support error handling. RAISEERROR or @@ERROR are not allowed in &lt;strong&gt;UDF&lt;/strong&gt;s. &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;If you are aware of any other differences, please post them as comments, so that they will be useful for others.&lt;/strong&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/8063214504972682315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/what-is-difference-between-user-defined.html#comment-form' title='35 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/8063214504972682315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/8063214504972682315'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/what-is-difference-between-user-defined.html' title='What is the difference between a User Defined Function (UDF) and a Stored Procedure (SP) in SQL Server'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>35</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-6666942579608414143</id><published>2011-05-10T13:56:00.000-07:00</published><updated>2013-03-03T10:57:18.998-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sql server interview questions"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server Interview Questions on triggers"/><title type='text'>SQL Server Interview Questions on triggers</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;&lt;br/&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;What is a Trigger in SQL Server?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;A Trigger is a database object that is attached to a table. In many aspects it is similar to a stored procedure. As a matter of fact, triggers are often referred to as a &quot;special kind of stored procedure.&quot; The main difference between a trigger and a stored procedure is that the former is attached to a table and is only fired when an INSERT, UPDATE or DELETE occurs.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;What are the two types of Triggers in SQL Server?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;1. After Triggers : &lt;/strong&gt;Fired after Insert, Update and Delete operations on a table.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2. Instead of Triggers: &lt;/strong&gt;Fired instead of Insert, Update and Delete operations on a table.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;What are the special tables used by Triggers in SQL Server?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Triggers &lt;/strong&gt;make use of two special tables called &lt;strong&gt;inserted&lt;/strong&gt; and &lt;strong&gt;deleted&lt;/strong&gt;. The &lt;strong&gt;inserted &lt;/strong&gt;table contains the data referenced in an INSERT before it is actually committed to the database. The &lt;strong&gt;deleted &lt;/strong&gt;table contains the data in the underlying table referenced in a DELETE before it is actually removed from the database. When an UPDATE is issued both tables are used. More specifically, the new data referenced in the UPDATE statement is contained in &lt;strong&gt;inserted &lt;/strong&gt;table and the data that is being updated is contained in &lt;strong&gt;deleted &lt;/strong&gt;table.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Give a real time example for triggers usage?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;It is recomended to avoid triggers in a real time environment. There is one scenario I can think of why you may want to use triggers in a real time environment. Let us use an example to understand this.&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;&lt;br/&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;I have 2 tables, &lt;strong&gt;tblPerson &lt;/strong&gt;and &lt;strong&gt;tblGender&lt;/strong&gt; as shown below. &lt;strong&gt;GenderId &lt;/strong&gt;is the foriegn key in &lt;strong&gt;tblPerson &lt;/strong&gt;table.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;1&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPnVoJ_mpcpsSL_cGtVxWC9lNvSoPE1oiLRVub7DW4gdTRY3tt5XxURHVhgCYaPy9c51uj7Dcho0AOt5Sbz2Xs6kJlEYk6pwBVt901POWHVWUHhhCZrkpb6qKSCrT9XWJuM5elvLNsAM1G/s1600/Tables.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
Now create a view based on the above 2 tables as shown below.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;1&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_OFZo46xAUPWnydmBMk-tpAxjB_QxZZmvYDabndS0IfvHky66qT3uCW9iQ5SUlg1up_-n1pDDFh94tWk0OIlgIuwIkaGJu2xwg9v7af-wo3FlOTGer6FkpnDAbut4ZTDTKkp5wDuFiqPc/s1600/ViewOnMultipleTables.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Select * from &lt;strong&gt;vWPersons&lt;/strong&gt; will give us the result as shown below.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;1&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwd6mxEiBuYIOb0BV9w9oMbe3KEf1nndRcwOVMT94qRjPu_lQu1JaQjnwITkP4HmIBewXJtgpegs1XDCnbCoRXuxGkSwY6CRZYvGNwXo110YFyqoOXlLEukBxO2cuDXaLNjuCEE2Mw5rB9/s1600/ViewResult.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Now update the view the following query. This will change the Gender Text to &lt;strong&gt;Female&lt;/strong&gt; in &lt;strong&gt;tblGender &lt;/strong&gt;table for Id = 1. This is not what we have expected.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: blue; font-family: Arial, Helvetica, sans-serif;&quot;&gt;Update tblGender Set Gender=&#39;Female&#39; where Id=1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;The base tables are updated incorrectly. So, Select * from &lt;strong&gt;vWPersons&lt;/strong&gt; will give us the result as shown below.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;1&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhsPyX6SJAtSEjUZr2YAtN-KQr6DwzFwIxkfaXfZYA5GrJweN6IX3dvHoPuJJKnNc-qtIB9vxmamBXmv4LH-HYNBiSmUTtBML4Ry7ivLG-5NzF04TqGq4ctCDnWxVm7dqqZH8ZGC4L56z2/s1600/IncorrectResult.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;To update the base tables correctly, you can create an &lt;strong&gt;INSTEAD OF&lt;/strong&gt; trigger on the view as shown below.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;1&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFKluhNewDg2VDyCkQUnOjdnp-NefxiGOuUfI7DglIR1JK9nZVsPbQkHNm3jpwSGlGtPGoGvHAYJP7ns0_eSVYdLDdENKEBcKcY8VJ9C7qO-_Gu307f8OFIQaUN8AQlIm-dHCIA8lEbovc/s1600/InsteadOfTrigger.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Now run the query below which will update the underlying base tables correctly.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Update vWPersons Set Gender=&#39;Female&#39; Where Id=1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;Select * from vWPersons&lt;/span&gt;, will show the correct result set as shown below. The &lt;strong&gt;INSTEAD OF&lt;/strong&gt; trigger has correctly updated the GenderId in tblPerson table.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;1&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgOGvtMvX-cpYfTAcPKk026I7sHZZB8BLh46x9Tq453Nep-DOHuNUVq0NVk_JLxtmkjZ7XJ9puWioaq-UK8SFQ7tzYC86oYO340-g9gtWX86IMeW2pIyr4nYvxYGHHIaoq8-hAMiY8YngHh/s1600/CorrectResult.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;So, &lt;strong&gt;Instead of triggers &lt;/strong&gt;can be used to facilitate &lt;strong&gt;updating Views that are based on multiple base tables&lt;/strong&gt;.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/6666942579608414143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on_10.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/6666942579608414143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/6666942579608414143'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on_10.html' title='SQL Server Interview Questions on triggers'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPnVoJ_mpcpsSL_cGtVxWC9lNvSoPE1oiLRVub7DW4gdTRY3tt5XxURHVhgCYaPy9c51uj7Dcho0AOt5Sbz2Xs6kJlEYk6pwBVt901POWHVWUHhhCZrkpb6qKSCrT9XWJuM5elvLNsAM1G/s72-c/Tables.png" height="72" width="72"/><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-2793402435332835069</id><published>2011-05-09T13:31:00.000-07:00</published><updated>2013-03-03T10:59:16.916-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sql server interview questions"/><category scheme="http://www.blogger.com/atom/ns#" term="What is the use of COALESCE in SQL Server"/><title type='text'>What is the use of COALESCE in SQL Server</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 CS Programs */
google_ad_slot = &quot;6388997780&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Let us understand the use of &lt;strong&gt;COALESCE&lt;/strong&gt; with the help of an example.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;In this example, the &lt;strong&gt;Candidate&lt;/strong&gt; table is shown to include three columns with information about a Candidate: &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;1. Candidate_id&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;2. PrimaryEmail&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;3. SecondaryEmail&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;COALESCE&lt;/strong&gt; in the SELECT statement below, selects the PrimaryEmail if it is not null. If the PrimaryEmail is null then SecondaryEmail will be selected. If both PrimaryEmail and SecondaryEmail is present then only PrimaryEmail is selected. So, COALESCE returns the first nonnull column among the list of columns passed. If both PrimaryEmail and SecondaryEmail is NULL, COALESCE returns NULL.&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;1&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF4_MgWw8lezphMa0anucv_X-nrM1OwzNpYsCEz-3kBuAMOKKOS6AxJvS29JIeMOnrNBJKoI7arbYCSEZ5zpp1XTKOYAlMQPGqXZl9ZFCxZg8eO7CE_-_emGulJrmWmeNsp4-D2CMMu5M0/s1600/coalesce.png&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;COALESCE&lt;/strong&gt; can also be used in joins as shown in the example below. If the Candidate table has a non null value in the Email column, then the value is selected. If the Email column is null in the Candidate Table then, CompanyEmail from CandidateCompany Table is selected.&lt;/span&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;img border=&quot;1&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHg4Uvou_R8QHea_LaCDAyMmmo_v65I9_rDr6dVnAvYNYns1EeKhBYtFTXhlvYq-dm7hPs7toK19rgmcr5TlCQ3o0CLWv0KghJuMigxgBm3f_hAHAiVHKL6AiPlOquKbvjKdxvPCHUxtNw/s1600/coalesce2.jpg&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/2793402435332835069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/what-is-use-of-coalesce-in-sql-server.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/2793402435332835069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/2793402435332835069'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/what-is-use-of-coalesce-in-sql-server.html' title='What is the use of COALESCE in SQL Server'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgF4_MgWw8lezphMa0anucv_X-nrM1OwzNpYsCEz-3kBuAMOKKOS6AxJvS29JIeMOnrNBJKoI7arbYCSEZ5zpp1XTKOYAlMQPGqXZl9ZFCxZg8eO7CE_-_emGulJrmWmeNsp4-D2CMMu5M0/s72-c/coalesce.png" height="72" width="72"/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-610985671424870098</id><published>2011-05-09T12:09:00.000-07:00</published><updated>2013-03-03T11:00:39.011-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="difference between a Temporary Table and a Table Variable"/><category scheme="http://www.blogger.com/atom/ns#" term="sql server interview questions"/><title type='text'>What is the difference between a Temporary Table and a Table Variable</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;What is the difference between a Temporary Table and a Table Variable?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Or&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;When do you use Table Variable over a Temporary Table and vice versa?&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;1.&lt;/strong&gt; Table variable is created in the memory where as a temporary table is created in the TempDB. But, if there is a memory pressure, the pages belonging to a table variable may be pushed out to tempdb.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; Table variables cannot be involved in transactions, logging or locking. This makes table variable faster than a temporary table.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;3.&lt;/strong&gt; You can pass table variable as parameter to functions and stored procedures, where as you cannot do the same with temporary table.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;4.&lt;/strong&gt; A temporary table can have indexes, whereas a table variable can only have a primary index. If speed is an issue Table variables can be faster, but if there are a lot of records, or there is a need to search the temporary table based on a clustered index, then a Temporary Table would be better. If you have less than 100 rows generally use a table variable. Otherwise use a temporary table. This is because SQL Server won&#39;t create statistics on table variables.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on_2213.html&quot;&gt;Read this article for more SQL Server Interview Questions on Temporary Tables.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If you know of any other differences between a Temporary Table and a Table Variable, please post them below.&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/610985671424870098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/what-is-difference-between-temporary.html#comment-form' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/610985671424870098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/610985671424870098'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/what-is-difference-between-temporary.html' title='What is the difference between a Temporary Table and a Table Variable'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-4544136294974913720</id><published>2011-05-07T03:21:00.000-07:00</published><updated>2013-03-03T11:02:28.389-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sql server interview questions"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server Interview Questions on Temporary Tables"/><title type='text'>SQL Server Interview Questions on Temporary Tables</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;What are the 2 types of Temporary Tables in SQL Server?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;1.&lt;/strong&gt; Local Temporary Tables&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; Global Temporary Tables&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;What is the difference between Local and Global Temporary Tables?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Local Temporary Tables:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;1.&lt;/strong&gt; Prefixed with a single pound sign (#). &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; Local temporary tables are visible to that session of SQL Server which has created it. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;3.&lt;/strong&gt; Local temporary tables are automatically dropped, when the session that created the temporary tables is closed.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Global Temporary Tables:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;1.&lt;/strong&gt; Prefixed with two pound signs (##). &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; Global temporary tables are visible to all the SQL server sessions. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;3.&lt;/strong&gt; Global temporary tables are also automatically dropped, when the session that created the temporary tables is closed.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Can you create foreign key constraints on temporary tables?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;No&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Do you have to manually delete temporary tables?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;No, temporary tables are automatically dropped, when the session that created the temporary tables is closed. But if you maintain a persistent connection or if connection pooling is enabled, then it is better to explicitly drop the temporary tables you have created.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;However, It is generally considered a good coding practice to explicitly drop every temporary table you create.&lt;/span&gt;&lt;br /&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;&lt;br/&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;In which database, the temporary tables get created?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;TEMPDB database.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;How can I check for the existence of a temporary table?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;img border=&quot;0&quot; j8=&quot;true&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ1S95MbRLR0aUtCdf749qXN1BOXTv8462zLhcnxH7d3DieZTWjq3kDAr9uk-pbmRHwwjQgC4DUVFgG2iRNb50iHCE7uTWGeZ13UADZt8waWH7Nw7Smxb3RBDzZeUDUWXV9uGed0N2gcm7/s1600/Temporary+Table.png&quot; /&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/4544136294974913720/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on_2213.html#comment-form' title='29 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/4544136294974913720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/4544136294974913720'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on_2213.html' title='SQL Server Interview Questions on Temporary Tables'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQ1S95MbRLR0aUtCdf749qXN1BOXTv8462zLhcnxH7d3DieZTWjq3kDAr9uk-pbmRHwwjQgC4DUVFgG2iRNb50iHCE7uTWGeZ13UADZt8waWH7Nw7Smxb3RBDzZeUDUWXV9uGed0N2gcm7/s72-c/Temporary+Table.png" height="72" width="72"/><thr:total>29</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5562253332413822713.post-7804338270199508980</id><published>2011-05-07T02:12:00.000-07:00</published><updated>2013-03-03T11:06:04.843-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="sql server interview questions"/><category scheme="http://www.blogger.com/atom/ns#" term="SQL Server Interview Questions on Indexes"/><title type='text'>SQL Server Interview Questions on Indexes - Part 2</title><content type='html'>&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;What are the disadvantages of an Index?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;There are 2 disadvantages of an Index&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;1. &lt;/strong&gt;Increased Disk Space&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; Insert, Update and Delete statements could be slow. In short, all DML statements could be slow.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Disk Space:&lt;/strong&gt; Indexes are stored on the disk, and the amount of space required will depend on the size of the table, and the number and types of columns used in the index. Disk space is generally cheap enough to trade for application performance, particularly when a database serves a large number of users. &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Insert, Update and Delete statements could be slow:&lt;/strong&gt; Another downside to using an index is the performance implication on data modification statements. Any time a query modifies the data in a table (&lt;span style=&quot;color: blue;&quot;&gt;INSERT, UPDATE, or DELETE&lt;/span&gt;), the database needs to update all of the indexes where data has changed. Indexing can help the database during data modification statements by allowing the database to quickly locate the records to modify, however, providing too many indexes to update can actually hurt the performance of data modifications. This leads to a delicate balancing act when tuning the database for performance.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;What are the 2 types of Indexes in SQL Server?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;1.&lt;/strong&gt; Clustered Index &lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;2.&lt;/strong&gt; Non Clustered Index&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;How many Clustered and Non Clustered Indexes can you have per table?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Clustered Index&lt;/strong&gt; - Only one Clustered Index per table. A clustered index contains all of the data for a table in the index, sorted by the index key. Phone Book is an example for Clustered Index.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Non Clustered Index &lt;/strong&gt;- You can have multiple Non Clustered Indexes per table. Index at the back of a book is an example for Non Clustered Index.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Which Index is faster, Clustered or Non Clustered Index?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;Clustered Index &lt;/strong&gt;is slightly faster than Non Clustered Index. This is because, when a Non Clustered Index is used there is an extra look up from the Non Clustered Index to the table, to fetch the actual rows.&lt;/span&gt;&lt;br/&gt;&lt;br/&gt;
&lt;script type=&quot;text/javascript&quot;&gt;&lt;!--
google_ad_client = &quot;ca-pub-6328538092426311&quot;;
/* 300 X 250 SQL IQ */
google_ad_slot = &quot;6932224589&quot;;
google_ad_width = 300;
google_ad_height = 250;
//--&gt;
&lt;/script&gt;
&lt;script type=&quot;text/javascript&quot;
src=&quot;http://pagead2.googlesyndication.com/pagead/show_ads.js&quot;&gt;
&lt;/script&gt;
&lt;br /&gt;&lt;br/&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;When is it usually better to create a unique nonclustered index on the primary key column?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Sometimes it is better to use a unique nonclustered index on the primary key column, and place the clustered index on a column used by more queries. For example, if the majority of searches are for the price of a product instead of the primary key of a product, the clustered index could be more effective if used on the price field.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;What is a Composite Index in SQL Server?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;or &lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;What is the advantage of using a Composite Index in SQL Server?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;or &lt;/span&gt;&lt;br /&gt;
&lt;strong&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;What is Covering Query?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;strong&gt;A composite index &lt;/strong&gt;is an index on two or more columns. Both clustered and nonclustered indexes can be composite indexes.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;If all of the information for a query can be retrieved from an Index. A clustered index, if selected for use by the query optimizer, always covers a query, since it contains all of the data in a table.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;By creating a composite indexes, we can have covering queries.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://venkatsqlinterview.blogspot.com/feeds/7804338270199508980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on_07.html#comment-form' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/7804338270199508980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5562253332413822713/posts/default/7804338270199508980'/><link rel='alternate' type='text/html' href='http://venkatsqlinterview.blogspot.com/2011/05/sql-server-interview-questions-on_07.html' title='SQL Server Interview Questions on Indexes - Part 2'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>20</thr:total></entry></feed>