Sql Server Tutorial Lesson 5: Querying Data Using SELECT
SELECT is one of the basic construct of Sql Server, which basically facilitates the retrieval of information from Tables. This lesson covers the following Topics with extensive list of real-time examples.
- Introduction to SELECT Statement
- Using WHERE Clause
- Using Boolean Operators AND, OR and NOT
- Using LIKE Predicate
- Using BETWEEN Clause
- Table and Column Name Alias
- Using ORDER BY Clause
- Concatenation
To demo these features let us first create the Employee table with seven employee records as depicted in the below image by using the following script:
CREATE DATABASE SqlHintsQueryingDataDemo GO USE SqlHintsQueryingDataDemo GO CREATE TABLE dbo.Employee (EmployeeId INT, Name NVARCHAR(50), DOJ DateTime,City NVarchar(50), Salary Money) GO INSERT INTO dbo.Employee VALUES(1,'ShreeGanesh Biradar','2011/12/18','Pune',45000) INSERT INTO dbo.Employee VALUES(2,'Sandeep Patil','2010/02/24',NULL,55000) INSERT INTO dbo.Employee VALUES(3,'Abhi Akkanna','2008/03/22','Bangalore',89000) INSERT INTO dbo.Employee VALUES(4,'Sandy Thomas','2008/04/28','Delhi',39000) INSERT INTO dbo.Employee VALUES(5,'Kalpana Biradar','2013/11/15','Bangalore',60000) INSERT INTO dbo.Employee VALUES(6,'Basav Biradar','2012/11/15','Bangalore',54000) INSERT INTO dbo.Employee VALUES(7,'Deepak Kumar','2006/04/08','Hyderabad',75000)
1. Introduction to SELECT Statement
Demo 1: Retrieve All the Records from the Employee Table
SELECT * FROM dbo.Employee
RESULT:
Demo 2: Retrieve only the Required Information
In most of the scenario’s we don’t need the complete table data, so it is always best practice to include the columns which are required in the Select query to reduce unnecessary data transfer over the Network and IO’s.
SELECT EmployeeId,Name,City FROM dbo.Employee
RESULT:
2. Using WHERE Clause
Demo 1: Get all the Employees whose City is Bangalore
SELECT * FROM dbo.Employee WHERE City = 'Bangalore'
RESULT:
Demo 2: Get all the Employees whose city is not Bangalore
SELECT * FROM dbo.Employee WHERE City <> 'Bangalore'
RESULT:
Note: This query ignored the employees whose City column value is NULL, because NULL value can’t be compared with some value (i.e. Null means unknown value, so it can’t be used to compare with any know values). The only operation we can do with NULL is we can check whether it is NULL or NOT NULL as shown in the below Demos 3 an 4.
Demo 3: Get all the Employees whose city column has some value (i.e. employees whose City column value is NOT NULL)
SELECT * FROM dbo.Employee WHERE City is NOT NULL
RESULT:
Demo 4: Get all the Employees whose city column value is null
SELECT * FROM dbo.Employee WHERE City is NULL
RESULT:
3. Using Boolean Operators AND, OR and NOT
Demo 1 Using Boolean Operator AND: Get all the Employees whose City is Bangalore and Salary is above 55000
SELECT * FROM dbo.Employee WHERE City = 'Bangalore' AND Salary > 55000
RESULT:
Demo 2 Using Boolean Operator OR: Get all the Employees whose city is either Bangalore or have salary above 62000
SELECT * FROM dbo.Employee WHERE City = 'Bangalore' OR Salary > 62000
RESULT:
Demo 3 Using Boolean Operator NOT: Get all the Employees whose city is other than Bangalore and Hyderabad
SELECT * FROM dbo.Employee WHERE City NOT IN ('Bangalore','Hyderabad')
RESULT:
Note: The above query didn’t return the employees whose is CITY column value is NULL. As explained previously NULL means unknown value, it can’t be compared with a known value.
4. Using LIKE Predicate
Demo 1: Get all the Employees who have word deep anywhere in their Name.
SELECT * FROM dbo.Employee WHERE Name Like '%deep%'
RESULT:
Demo 2: Get all the Employees whose Name starts with the word dee
SELECT * FROM dbo.Employee WHERE Name Like 'deep%'
RESULT:
Demo 3: Get all the Employees whose Name starts with the character a or b or c.
Note the below three SELECT statements are equivalent
SELECT * FROM dbo.Employee WHERE Name like '[a-c]%' SELECT * FROM dbo.Employee WHERE Name like '[abc]%' SELECT * FROM dbo.Employee WHERE Name like '[a,b,c]%'
RESULT:
Demo 4: Get all the Employees whose Name starts with the character a or b or c and second character must be a
SELECT * FROM dbo.Employee WHERE Name like '[a-c][a]%'
RESULT:
Demo 5: Get all the Employees whose Name is not starting with letter a or b or c
SELECT * FROM dbo.Employee WHERE Name like '[^a-c]%'
RESULT:
5. Using BETWEEN Clause
BETWEEN clause can be used to compare range of values.
Demo 1: Get all the Employees whose Salary is between 45000 to 60000.
SELECT * FROM dbo.Employee WHERE Salary between 45000 AND 60000
RESULT:
Demo 2: Above Demo 1 query can also be written without between Clause as below:
SELECT * FROM dbo.Employee WHERE Salary >= 45000 AND Salary <= 60000
RESULT:
6. Table and Column Name Alias
Sql Server provides an option to give temporary alias name for the Table and it’s Column Names in the query. In that way we can give an meaning full alias to the Tables. And if two tables are joined both have the same column name in it, then we have to write two part column names i.e. [Table Name].[Column Name] otherwise Sql server gives an ambiguous column name error. If table name is too long it looks to clumsy, so better give a short alias name for the table and use this alias table name in the Two part column name specification to avoid ambiguity.
Demo 1: Table Alias Name demo. In this demo example for Employee Table the alias name specified is E in the FROM clause. Because of this we can access the employee table column names by prefixing E.
SELECT E.Name, E.City FROM dbo.Employee E
RESULT:
Demo 2: Table and Column Name Alias demo. In this demo example for Employee Table the alias name specified is E in the FROM clause. Because of this we can access the employee table column names by prefixing E. . And for the Name column we are specifying the alias name as ‘Employee Name’ and for City column the alias name is ‘Employee City’
SELECT E.Name AS 'Employee Name', E.City AS [Employee City] FROM dbo.Employee AS E
RESULT:
7. Using ORDER BY Clause
ORDER BY Clause can be used to sort the result set based on the Column Value.
Demo 1: Sort the Employee records based on Name column value. The default sorting of the ORDER BY clause is in the Ascending Orders.
SELECT Name, City FROM dbo.Employee ORDER BY Name
RESULT:
Demo 2: Sort the Employee records based on Name column value in the descending order. Here using the keyword DESC in conjunction with ORDER By clause to sort the records by Name in Descending order.
SELECT Name, City FROM dbo.Employee ORDER BY Name DESC
RESULT:
8. Concatenation
‘+’ symbol is used for concatenating string values
Demo 1: Concatenate Name and City Column Value.
SELECT Name + City as [Name & City] FROM dbo.Employee
RESULT:
Note: If ‘+’ symbol is used to concatenate the values, then if one of the values is NULL then resultant concatenated value will also be NULL.
Demo 2: One way of avoiding NULL as the RESULT of concatenation if one of the value of the to be concatenated is NULL is to use the ISNULL function like below. Here ISNULL function returns an empty string if the value is NULL otherwise the specified value.
SELECT ISNULL(Name,'') + ISNULL(City,'') AS [Name & City] FROM dbo.Employee
RESULT:
Demo 3: Add an empty space between Name and City.
SELECT ISNULL(Name,'') + ' ' + ISNULL(City,'') AS [Name & City] FROM dbo.Employee
RESULT:
You may like to go through the string function CONCAT() which is introduced in Sql Server 2012 for concatenation.