MSSQL Interview Questions
MSSQL Interview Questions
Cloud-based No No
Supported Programming Lang It supports C#, PHP, Python, Ruby, R, Visual It supports c++, C#, Java, PHP, Perl, Python, Ruby, Tcl,
Basic, Java etc Delphi, D etc
3. 1NF – Removes duplicated attributes, Attribute data should be atomic, and attribute should be same kind.
4. 2NF – Should be in 1NF and each non-key is fully dependent on the primary key.
5. 3NF – Should be in 2NF and all the non-key attributes which are not dependent on the primary key should be removed. All the attributes which are
dependent on the other non-key attributes should also be removed. Normalization is done in OLTP.
Q4) How do you implement one-to-one, one-to-many and many-to-many relationships while designing tables?
1. One to One –It can be implemented as a single table. Rarely it is implemented in two tables. For each instance in the first entity there is one and only
2. One to Many –For each instance in the first entity there can be one or more in the second entity. For each instance in the second entity there can be one
second entity there can be one or more instance in the first entity.
Primary Key
Unique Key
2.Alternate key –If the table has more than one candidate keys and when one becomes a primary key the rest becomes alternate keys.
3.Composite key –More than one key uniquely identify a row in a table.
Q7) What are defaults? Is there a column to which a default can’t be bound?
1.It is a value that will be used by a column if no value is supplied to that column while inserting data.
Q8) What are user defined data types and when you should go for them?
Lets you extend the base SQL server data types by providing a descriptive name and format to the database.
E.g. Flight_num appears in many tables and all these tables have varchar(8)
A transaction is a logical unit of work in which, all the steps must be performed or none. ACID stands for Atomicity, Consistency, Isolation, and Durability.
Q10) What part does database design have to play in the performance of a SQL Server-based application?
It plays a very major part. When building a new system, or adding to an existing system, it is crucial that the design is correct. Ensuring that the correct
data is captured and is placed in the appropriate tables, that the right relationships exist between the tables and that data redundancy is eliminated is an
ultimate goal when considering performance. Planning a design should be an iterative process, and constantly reviewed as an application is developed.
It is rare, although it should be the point that everyone tries to achieve, when the initial design and system goals are not altered, no matter how slightly.
Therefore, a designer has to be on top of this and ensure that the design of the database remains efficient..
Learn how to use SQL Server, from beginner basics to advanced techniques, with online video tutorials taught by industry experts. Enroll for Free SQL
Server Training Demo!
Q11) What can a developer do during the logical and physical design of a database in order to help ensure that their database and SQL
A developer must investigate volumes of data (capacity planning), what types of information will be stored, and how that data will be accessed. If you are
dealing with an upgrade to an existing system, analyzing the present data and where existing data volumes occur, how that data is accessed and where
the current response bottlenecks are occurring, can help you search for problem areas in the design.
A new system would require a thorough investigation of what data will be captured, and looking at volumes of data held in other formats also will aid
design. Knowing your data is just as important as knowing the constituents of your data. Also, constantly revisit your design. As your system is built,
check relationships, volumes of data, and indexes to ensure that the physical design is still at its optimum. Always be ready to check your system by
Q13) What are cursors? Explain different types of cursors. What are the disadvantages of cursors? How can you avoid cursors?
Types of cursors:
Static – Makes a temporary copy of the data and stores in tempdb and any modifications on the base table does not reflected in data returned by fetches
Forward-only – specifies that cursor can only fetch sequentially from first to last.
Keyset-driven – Keyset is the set of keys that uniquely identifies a row is built in a tempdb.
Disadvantages of cursors:
Each time you fetch a row from the cursor, it results in a network roundtrip, whereas a normal SELECT query makes only one roundtrip, however large
the result set is. Cursors are also costly because they require more resources and temporary storage (results in more IO operations). Further, there are
restrictions on the SELECT statements that can be used with some types of cursors.
Here is an example:
If you have to give a flat hike to your employees using the following criteria:
In this situation, many developers tend to use a cursor, determine each employee’s salary and update his salary according to the above formula. But the
same can be achieved by multiple update statements or can be combined in a single UPDATE statement as shown below:
CASE
END
another situation in which developers tend to use cursors: You need to call a stored procedure when a column in a particular row meets certain
condition. You don’t have to use cursors for this. This can be achieved using WHILE loop, as long as there is a unique key to identify each row.
Q14) Write down the general syntax for a SELECT statement covering all the options.
Here’s the basic syntax: (Also checkout SELECT in books online for advanced syntax).
SELECT select_list
[HDEV:INTO new_table_]
FROM table_source
[HDEV:WHERE search_condition]
[HDEV:GROUP BY group_by_expression]
[HDEV:HAVING search_condition]
Joins are used in queries to explain how different tables are related. Joins also let you select data from a table depending upon data from another table.
Types of joins: INNER JOINs, OUTER JOINs, CROSS JOINs. OUTER JOINs are further classified as LEFT OUTER JOINS, RIGHT OUTER JOINS and
Yes, very much. Check out BEGIN TRAN, COMMIT, ROLLBACK, SAVE TRAN and @@TRANCOUNT
Q17) What is an extended stored procedure? Can you instantiate a COM object by using T-SQL?
An extended stored procedure is a function within a DLL (written in a programming language like C, C++ using Open Data Services (ODS) API) that can
be called from T-SQL, just the way we call normal stored procedures using the EXEC statement.
Yes, you can instantiate a COM (written in languages like VB, VC++) object from T-SQL by using sp_OACreate stored procedure. Also see books online
Q18) What is the system function to get the current user’s userid?
USER_ID(). Also check out other system functions like USER_NAME(), SYSTEM_USER, SESSION_USER, CURRENT_USER, USER, SUSER_SID(),
HOST_NAME().
Q19) What are triggers? How many triggers you can have on a table? How to invoke a trigger on demand?
Triggers are special kind of stored procedures that get executed automatically when an INSERT, UPDATE or DELETE operation takes place on a table.
In SQL Server 6.5 you could define only 3 triggers per table, one for INSERT, one for UPDATE and one for DELETE. From SQL Server 7.0 onwards,
this restriction is gone, and you could create multiple triggers per each action. But in 7.0 there’s no way to control the order in which the triggers fire. In
SQL Server 2000 you could specify which trigger fires first or fires last using sp_settriggerorder.
Triggers can’t be invoked on demand. They get triggered only when an associated action (INSERT, UPDATE, DELETE) happens on the table on which
they are defined. Triggers are generally used to implement business rules, auditing. Triggers can also be used to extend the referential integrity checks,
but wherever possible, use constraints for this purpose, instead of triggers, as constraints are much faster.
Till SQL Server 7.0, triggers fire only after the data modification operation happens. So in a way, they are called post triggers. But in SQL Server 2000
Virtual tables – Inserted and Deleted form the basis of trigger architecture.
Self join is just like any other join, except that two instances of the same table will be joined in the query. Here is an example: Employees table which
contains rows for normal employees as well as managers. So, to find out the managers of all the employees, you need a self join.
(
empid int,
mgrid int,
empname char(10)
Here’s an advanced query using a LEFT OUTER JOIN that even returns the employees without managers (super bosses)
FROM emp t1
emp t2
ON
t1.mgrid = t2.empid
Explore SQL Server Sample Resumes! Download & Edit, Get Noticed by Top Employers!Download Now!
SELECT TOP 1 salary FROM (SELECT DISTINCT TOP 6 salary FROM employee ORDER BY salary DESC) a ORDER BY salary
You can use index hint (index=index_name) after the table name. SELECT au_lname FROM authors (index=aunmind)
The ORDER BY clause sorts query results by one or more columns up to 8,060 bytes. This will happen by the time when we retrieve data from
database. Clustered indexes will physically sort data, while inserting/updating the table.
Referential integrity refers to the consistency that must be maintained between primary and foreign keys, i.e. every foreign key value must have a
It updates information about the distribution of key values for one or more statistics groups (collections) in the specified table or indexed view.
It returns the most recently created identity value for the tables in the current execution scope.
Q29) What do you consider are the best reasons to use stored procedures in your application instead of passing Transact-SQL code directly
to SQL Server?
First and foremost, a stored procedure is a compiled set of code, where passing T-SQL through languages such as VB, Visual FoxPro, etc., means that
the set of code needs to be compiled first. Although T-SQL within VB, etc., can be prepared before running, this is still slower than using a stored
procedure. Then, of course, there is the security aspect, where, by building a stored procedure, you can place a great deal of security around it. When
dealing with sensitive data, you can use an encrypted stored procedure to hide sensitive columns, calculations, and so on. Finally, by using a stored
procedure, I feel that transactional processing becomes a great deal easier and, in fact, using nested transactions become more insular and secure.
Having to deal with transactions within code that may have front end code, will slow up a transaction and therefore a lock will be held for longer than
necessary.
Q30) What are some techniques for writing fast performing stored procedures?
Fast performing stored procedures are like several other areas within T-SQL. Revisiting stored procedures every six months or so, to ensure that they
are still running at their optimum performance is essential. However, actual techniques themselves include working with as short a transaction area as
possible, as lock contention will certainly impact performance. Recompiling your stored procedures after index additions if you are unable or not wishing
to restart SQL Server, will also ensure that a procedure is using the correct index, if that stored procedure is accessing the table which has received the
new index. If you have a T-SQL command that joins several tables, and it takes a long time to return a value, first of all check out the indexes. But what
you may find tends to help, is to break down the code and try to determine which join it is that is causing the performance problem. Then analyze this
Always check out a stored procedure’s performance as you build it up by using the SHOWPLAN commands.
Also, try to use EXISTS, rather than a JOIN statement. An EXISTS statement will only join on a table until one record is found, rather than joining all the
records . Also, try to look at using sub queries when you are trying to find a handful of values in the sub query statement, and there is no key on the
Q31) When should SQL Server-based cursors be used, and not be used?
SQL Server cursors are perfect when you want to work one record at a time, rather than taking all the data from a table as a single bulk. However, they
should be used with care as they can affect performance, especially when the volume of data increases. From a beginner’s viewpoint, I really do feel
that cursors should be avoided every time because if they are badly written, or deal with too much data, they really will impact a system’s performance.
There will be times when it is not possible to avoid cursors, and I doubt if many systems exist without them. If you do find you need to use them, try to
reduce the number of records to process by using a temporary table first, and then building the cursor from this. The lower the number of records to
process, the faster the cursor will finish. Always try to think “out of the envelope”.
Q32) What alternatives do developers have over using SQL Server-based cursors? In other words, how can developers perform the same
Perhaps one of the performance gains least utilized by developers starting out in SQL Server are temporary tables. For example, using one or more
temporary tables to break down a problem in to several areas could allow blocks of data to be processed in their own individual way, and then at the end
of the process, the information within the temporary tables merged and applied to the underlying data. The main area of your focus should be, is there
an alternative way of doing things? Even if I have to break this down into several chunks of work, can I do this work without using cursors, and so result
in faster performance. Another area that you can look at is the use of CASE statements within your query. By using a CASE statement, you can check
the value within a column and make decisions and operations based on what you have found. Although you will still be working on a whole set of data,
rather than a subset found in a cursor, you can use CASE to leave values, or records as they are, if they do not meet the right criteria. Care should be
taken here though, to make sure that by looking at all the data, you will not be creating a large performance impact. Again, look at using a subset of the
data by building a temporary table first, and then merging the results in afterwards. However, don’t get caught out with these recommendations and do
any of them in every case. Cursors can be faster if you are dealing with small amounts of data. However, what I have found, to be rule number one, is
Q33) If you have no choice but to use a SQL Server-based cursor, what tips do you have in order to optimize them?
Perhaps the best performance gain is when you can create a cursor asynchronously rather than needing the whole population operation to be completed
before further processing can continue. Then, by checking specific global variables settings, you can tell when there is no further processing to take
place. However, even here, care has to be taken. Asynchronous population should only occur on large record sets rather than those that only deal with a
small number of rows. Use the smallest set of data possible. Break out of the cursor loop as soon as you can. If you find that a problem has occurred, or
processing has ended before the full cursor has been processed, then exit. If you are using the same cursor more than once in a batch of work, and this
could mean within more than one stored procedure, then define the cursor as a global cursor by using the GLOBAL keyword, and not closing or
deallocating the cursor until the whole process is finished. A fair amount of time will be saved, as the cursor and the data contained will already be
Q34) What are the steps you will take to improve performance of a poor performing query?
This is a very open ended question and there could be lot of reasons behind the poor performance of a query. But some general issues that you could
1. No indexes
2. No Table scans
4. Blocking
An ER diagram or Entity-Relationship diagram is a special picture used to represent the requirements and assumptions in a system from a top down
This means the transaction finish completely, or it will not occur at all.
Consistency means that the transaction will repeat in a predictable way each time it is performed.
The data the transactions are independent of each other. The success of one transaction doesn’t depend on the success of another.
Guarantees that the database will keep track of pending changes so that the server will be able to recover if an error occurs.
It is a set of software programs used to interact with and manage relational databases. Relational databases are databases that contain tables.
Refers to computer-based techniques used in identifying, extracting, and analyzing business data, such as sales revenue by products and/or
Database normalization is the process of organizing the fields and tables of a relational database to minimize redundancy and dependency.
The way in which two or more concepts/entities are connected, or the state of being connected.
An OLTP is the process of gathering the data from the users, and a database is the initial information.
An attribute that would not exist if it were not for the existence of a relation.
An associative entity is a conceptual concept. An associative entity can be thought of as both an entity and a relationship since it encapsulates
properties from both. It is a relationship since it is serving to join two or more entities together, but it is also an entity since it may have its own properties.
Q55) What is the difference between a derived attribute, derivedpersistent attribute, and computed column?
A derived attribute is a attribute that is obtained from the values of other existing columns and does not exist on it’s own. A derived persistent attribute is
a derived attribute that is stored. A computed attribute is a attribute that is computed from internal system values.
Simple, composite (split into columns), multi-valued (becomes a separate table), derived, computed, derived persistent.
Q57) Is the relationship between a strong and weak entity always identifying?
No.
Primary keys – Unique clustered index by default, doesn’t accept null values, only one primary key per table.
Foreign Key – References a primary key column. Can have null values. Enforces referential integrity.
Unique key – Can have more than one per table. Can have null values. Cannot have repeating values. Maximum of 999 clustered indexes per table.
Q61) What do you mean by CTEs? How will you use it?
CTEs also known as common table expressions are used to create a temporary table that will only exist for the duration of a query. They are used to
create a temporary table whose content you can reference in order to simplify a queries structure.
Q63) What would the command: DENY CREATE TABLE TO Peter do?
It wouldn’t allow the user Peter to perform the operation CREATE TABLE regardless of his role.
Q64) What does the command: GRANT SELECT ON project TO Peter do?
Q65) What does the command: REVOKE GRANT SELECT ON project TO Peter do?
Database encryption, CDCs tables – For on the fly auditing of tables, Merge operation, INSERT INTO – To bulk insert into a table from another table,
Hierarchy attributes, Filter indexes, C like operations for numbers, resource management, Intellisense – For making programming easier in SSMS,
A table variable is faster in most cases since it is held in memory while a temporary table is stored on disk. However, when the table variable’s size
exceeds memory size the two table types tend to perform similarly.
It will give you the number of active transactions for the current user.
It is query bound.
It keeps a record of all activities that occur during a transaction and is used to roll back changes.
Q72) What are before images, after images, undo activities and redo activities in relation to transactions?
Before images refers to the changes that are rolled back on if a transaction is rolled back. After images are used to roll forward and enforce a
transaction. Using the before images is called the undo activity. Using after images is called the redo activity.
A shared lock, locks a row so that it can only be read. An exclusive lock locks a row so that only one operation can be performed on it at a time. An
update lock basically has the ability to convert a shared lock into an exclusive lock.
Q74) What does WITH TIES do?
If you use TOP 3 WITH TIES *, it will return the rows, that have a similarity in each of their columns with any of the column values from the returned
result set.
By concurrently running the same resources that access the same information in a transaction.
It is used for determining the amount of time that the system will wait for a lock to be released.
SELECT * FROM emp_table WHERE enter_date > ANY (SELECT enter_date FROM works_on)
SELECT * FROM emp_table WHERE enter_date > ALL (SELECT enter_date FROM works_on)
It is used to determine whether a query returns one or more rows. If it does, the EXIST function returns TRUE, otherwise, it will return FALSE.
Department:
Department_No Department_Name
10 ECE
20 ECE
30 CSE
40 IT
Employee Details:
Q1) Write a Query to display employee details who are working in ECE department?
SELECT employee.employee_name, employee.address, employee.salary, employee.age,
FROM Department D
INNER JOIN Employees E
ON department.D_no=employee.D_no WHERE department.D_name= ‘ECE’
Q4) Write a Query to display employee details whose sal>20000 and who is working in ECE department?
SELECT employee.employee_no, employee.employee_name, employee.address, employee.salary, employee.age
FROM department D
INNER JOIN employee E
ON dept.D_no=emp.D_no
WHERE dept.D_name=’ECE’ and E.salary>20000
5) Write a Query to display employee details along with department_name and who is working in ECE department, whose name starts with a?
SELECT emp.e_no, emp.e_name, emp.address, emp.salary, emp.age, dept.dname
FROM department D
INNER JOIN employee E
ON dept.D_no=emp.D_no
WHERE dept.D_name=’ECE’ and emp.E_name like ‘a%’
Q6) Write a Query to display employee details along with department_name and whose age between 20 and 24?
SELECT emp.e_no, emp.e_name, emp.address, emp.salary, emp.age, dept.d_name
FROM department D
INNER JOIN employee E
ON dept.D_no=emp.D_no
WHERE E.age between 20 and 24
Q7) Write a Query to display employee details along with department_name and who are staying in hyderabad?
SELECT emp.e_no, emp.e_name, emp.address, emp.salary, emp.age, dept.d_name
FROM department D
INNER JOIN employee E
ON dept.D_no=emp.D_no
WHERE E.address=’hyd’
Q8) Write a Query to display employee details whose salary>20000 and whose age>20 & who is working in ECE department?
SELECT emp.e_no, emp.e_name, emp.address, emp.salary, emp.age, dept.d_name
FROM department D
INNER JOIN employee E
ON dept.D_no=emp.D_no
WHERE E.age>20 and E.salary>20000 and dept.D_name=’ECE’
State Table:
S1 Telangana
S2 AP
S3 Tamil Nadu
S4 Karnataka
S5 Kerala
City
1 Hyderabad S1
2 Vizag S2
3 Vijayawada S2
4 Chennai S3
5 Madhurai S3
6 Bangalore S4
B1 A+ve
B2 B+ve
B3 AB +ve
B4 A -ve
B5 O +ve
Donor Details
D1 Anil 9999 1 B1
D2 Sunil 8888 1 B1
D3 Ajay 7777 2 B1
D4 John 6666 4 B3
D5 James 5555 4 B5
Q11) Write a Query to display Donor_ID, Donor_Name, Phone No, Blood Group?
SELECT D.Donor_ID, D_Name, D_Phone No, B.Blood_Group
FROM Donor D
INNER JOIN Blood B
ON D.Blood_ID=B.Blood_ID;
Q12) Write a Query to display Donor_ID, Donor_Name, Phone No and who are staying in hyderabad?
SELECT D.Donor_ID, D_Name, D_Phone No, C.City_Name
FROM Donor D
INNER JOIN City C
ON C.City_ID=D.City_ID
WHERE C.City_Name=’hyderabad’
Q13) Write a Query to display donor details whose blood group is A +ve?
SELECT D.Donor_ID, D_Name, D_Phone No
FROM Donor D
INNER JOIN Blood B
ON D.Donor_ID=B.Blood_ID
WHERE B.Blood_Group=’A+ve’
Q14) Write a Query to display Donor_ID, Donor_Name, Phone No, City, Blood Group?
SELECT D.Donor_ID, D_Name, D_Phone No, C.City_Name B.Blood_Group
FROM Blood B
INNER JOIN Donor D
ON D.Blood_ID=B.Donor_Name
INNER JOIN City C
ON D.City_ID=C.City_ID
Q15) Write a Query to display Donor_Name, Phone No, Blood Group of the donors who is staying in hyderabad and whose blood group is
A+ve?
SELECT D.Donor_Name, D. Phone_Number, B.Blood_Group
FROM Donor D
INNER JOIN Blood B
ON D.Blood_ID=B.Blood_ID
INNER JOIN City C
ON D.City_ID=C.City_ID
WHERE C.City_Name=’hyderabad’ and B.Blood_Group=’A+ve’
Outer Join A join that includes rows even if they do not have related rows in the joined table is an Outer Join.. You can create three different outer join
101 Anil 10
102 Sunil 20
103 Ajay 30
104 Vijay 40
Dept_No Depat_Name
10 EEE
20 EEE
30 CSE
Null Null
50 IT
Q18) Write a Query to display employee details where employee number is null?
SELECT *
FROM Employee E
WHERE E_No IS NULL
Q20) Write a Query to display all the records from the table except matching records?
SELECT E.*, D.*
FROM Employee E
FULL JOIN Department D
ON E.D_No=D.D_No
WHERE E.D_No IS NULL or D.D_No IS NULL
Dept_No Dept_Name
1 ECE
2 CSE
3 EEE
Course_ID Course_Name Cr
1 EDC 4
2 PDC 4
3 SS 4
4 DAA 4
5 OS 4
Student_No Student_Name
101 Anil
102 Sunil
103 Ajay
104 Vijay
105 John
1/2/2014 101 10 S1
3/2/2016 102 10 S1
3/2/2016 104 20 S2
3/2/2016 105 20 S2
Address Table
Emp_No Address
E1 Hyderabad
E2 Vizag
E3 Hyderabad
E4 Bangalore
E5 Hyderabad
Emp_No Emp_Name
E1 Arun
E2 Kiran
E3 Kumar
E4 Anus
E5 James
Semester Sn
S1 1
S2 2-1
S3 2-2
S4 3-1
S5 3-2
S6 4-1
S7 4-2
Dept_No Course_ID
10 1
10 2
10 3
20 4
20 5
Syllabus Table
10 1 S1
10 2 S1
10 3 S1
20 4 S2
20 5 S2
Emp_No Dept_No
E1 10
E2 10
E3 10
E4 20
E5 30
1 E1 S1 10
1 E1 S1 20
1 E2 S1 30
2 E3 S1 10
4 E4 S2 20
5 E4 S2 20
5 E5 S1 10
Q) Write a query to display Student No, Student Name, Enroll Date, Department Name?
SELECT S.Student_No, S.Student_Name, S.Enroll_Date, D.Dept_Name
FROM Student S
INNER JOIN Enroll E
ON S.Student_No=E.Student_No
INNER JOIN Department D
ON D.Dept_No=E.Dept_No
Q) Write a query to display Employee Number, Employee Name and address, department name?
SELECT E.Emp_No, E.Emp_Name, A.Address, D.Dept_Name
FROM Employee E
INNER JOIN Address A
ON E.Emp_No=A.Emp_No
INNER JOIN Instructor I
ON A.Emp_No=I.Emp_No
INNER JOIN Department D
ON I.Dept_No=D.Dept_No
Q) ) Write a query to display student number, student name, enroll date, dept name, semester name?
SELECT S.Student_No, S.Student_Name, S.Enroll_Date, D.Dpet_Name, Sem.Student_Name
FROM Enroll E
INNER JOIN Student S
ON S.Student_No=E.Student_No
INNER JOIN Deprtment D
ON E.Dept_No=D.Dept_No
INNER JOIN Semester SE
ON E.Student_ID=Sem.Student_ID
Q) Write a query to display the employee names and faculty names of ECE dept 1st year?
SELECT E.Emp_Name
FROM Employee E
INNER JOIN Course Instructor Ci
ON E.Emp_No=Ci.Emp_No
INNER JOIN Semester Se
ON Se.Student_ID=Ci.Student_ID
INNER JOIN Dept D
ON Ci.Dept_No=D.Dept_No
WHERE D.Dept_Name=’ECE’ and Se.Student_Name=’1’
Q) ) Write a query to display student details who enrolled for ECE department?
SELECT S.Student_NO, S.Student_Name, S.Enroll_Date
FROM Student S
INNER JOIN Enroll E
ON S.Student_No=E.Student_No
INNER JOIN Department D
ON E.Dept_No=D.Dept_No
WHERE D.Dept_Name=’ECE’
Q) ) Write a query to display student details along with dept name who are enrolled in ECE department first year?
SELECT S.Student_No, S.Student_Name, S.Enroll_Date, D.Dept_Name
FROM Student S
INNER JOIN Enrollment E
ON S.Student_No=E.Student_No
INNER JOIN Department D
ON D.Dept_No=E.Dept_No
INNER JOIN Semester Se
ON E.Student_ID=Se.Student_ID
WHERE D.Dept_Name=’ECE’ and Se.Student_Name=’1’
Q) ) Write a query to display employee details along with dept name who are staying in Hyderabad?
SELECT E.Emp_No, Emp_Name, D.Dept_Name
FROM Employee E
INNER JOIN Address A
ON E.Emp_No=A.Emp_No
INNER JOIN Instructor I
ON A.Emp_No=I.Emp_No
INNER JOIN Department D
ON I.Dept_No=D.Dept_No
WHERE A.Address=’hyderabad’
Q) Write a Query to display employee details whose salary > 20000 and whose age >23?
SELECT * FROM Employee
WHERE Salary>20000 AND Age>23;
Q) Write a Query to display employee details whose salary >20000 and who is working in ECE department?
SELECT * FROM Employee
WHERE Salary>20000 AND Dept_Name=’ECE’
Q) Write a Query to display employee details whose age is BETWEEN 18 and 22?
SELECT * FROM Employee Details
WHERE Age BETWEEN 18 AND 22;
Q) Write a Query to display employee details whose salary range BETWEEN 20000 and 23000?
SELECT * FROM Employee
WHERE Salary BETWEEN 20000 AND 23000;
Q) Write a Query to display employee details whose age is NOT BETWEEN 18 & 22?
SELECT * FROM Employee
WHERE Age NOT BETWEEN 18 AND 22;
Q) Write a Query to display employee details and whose age>20 & whose name starts with a?
SELECT * FROM Employee
WHERE Salary>20000 AND Age>20 AND Emp_Name LIKE ‘a%’
Q) Write a Query to display employee details whose name not starts with a?
SELECT * FROM employee
WHERE Emp_Name NOT LIKE ‘a%’
SSIS Power BI
SSRS SharePoint
I have segregated this “SQL Server Interview Questions” post into two types.
I don’t want to take much time of yours but I couldn’t move further without mentioning about this inevitable job interview question which every hiring manager asks
you in any interview i.e., Tell Me About Yourself. Answering these questions is very easy if you follow the link. It contains sample answers for both freshers and
experienced. Now, Let’s move on to the actual post.
7. What is DBMS?
Database Management System is a collection of programs that enables a user to store, retrieve, update and delete information from a database.
9. What is RDBMS?
RDBMS stands for Relational Database Management System. RDBMS is a database management system (DBMS) that is based on the relational model. Data from a
relational database can be accessed using Structured Query Language (SQL)
10. What are the popular Database Management Systems in the IT Industry?
Oracle, MySQL, Microsoft SQL Server, PostgreSQL, Sybase, MongoDB, DB2, and Microsoft Access etc.,
11. What is SQL?
SQL Overview: SQL stands for Structured Query Language. It is an American National Standard Institute (ANSI) standard. It is a standard language for accessing and
manipulating databases. Using SQL, some of the action we could do are to create databases, tables, stored procedures (SP’s), execute queries, retrieve, insert,
update, delete data against a database.
CREATE VIEW view_name AS SELECT column_name1, column_name2 FROM table_name WHERE CONDITION;
1
CREATE VIEW view_name AS SELECT column_name1, column_name2 FROM table_name WHERE CONDITION;
21. What are the advantages of Views?
Some of the advantages of Views are
27. What is the difference between Local Variables and Global Variables?
Local Variables: Local variables can be used or exist only inside the function. These variables are not used or referred by any other functions. These are not known to
other functions. Variables can be created whenever that function is called.
Global Variables: Global variables can be used or exist throughout the program. Same variable declared in global cannot be used in functions. Global variables cannot
be created whenever that function is called.
AUTO INCREMENT keyword is used in Oracle and IDENTITY keyword is used in SQL Server.
INNER JOIN
LEFT JOIN
RIGHT JOIN
OUTER JOIN
View Complete Post
35. What is the difference between an inner and outer join?
An inner join returns rows when there is at least some matching data between two (or more) tables that are being compared.
An outer join returns rows from both tables that include the records that are unmatched from one or both the tables.
The short answer is no, a table is not allowed to contain multiple primary keys but it allows to have one composite primary key consisting of two or more columns.
44. What is the difference between UNIQUE and PRIMARY KEY constraints?
There should be only one PRIMARY KEY in a table whereas there can be any number of UNIQUE Keys.
PRIMARY KEY doesn’t allow NULL values whereas Unique key allows NULL values.
46. What is the difference between NULL value, Zero, and Blank space?
As I mentioned earlier, Null value is field with no value which is different from zero value and blank space.
Null value is a field with no value.
Zero is a number
Blank space is the value we provide. The ASCII value of space is CHAR(32).
E.g. ‘Age’ field should contain only the value greater than 18.
CREATE TABLE EMP_DETAILS(EmpID int NOT NULL, NAME VARCHAR (30) NOT NULL, Age INT CHECK (AGE > 18), PRIMARY KEY (EmpID));
1
CREATE TABLE EMP_DETAILS(EmpID int NOT NULL, NAME VARCHAR (30) NOT NULL, Age INT CHECK (AGE > 18), PRIMARY KEY (EmpID));
50. What is a DEFAULT constraint?
DEFAULT constraint is used to include a default value in a column when no value is supplied at the time of inserting a record.
57. What are the possible values that can be stored in a BOOLEAN data field?
TRUE and FALSE
58. What is the largest value that can be stored in a BYTE data field?
The largest number that can be represented in a single byte is 11111111 or 255. The number of possible values is 256 (i.e. 255 (the largest possible value) plus 1
(zero), or 28).
Arithmetic Operators
Comparison Operators
Logical Operators
View Detailed Post
Delete command is a DML command, it is used to delete rows from a table. It can be rolled back.
Truncate is a DDL command, it is used to delete all the rows from the table and free the space containing the table. It cant be rolled back.
Drop is a DDL command, it removes the complete data along with the table structure(unlike truncate command that removes only the rows). All the tables’ rows,
indexes, and privileges will also be removed.
64. What is the difference between Delete and Truncate?
The difference between the Delete, and Truncate are
DELETE TRUNCATE
Delete statement is used to delete rows from a table. It can be rolled back. Truncate statement is used to delete all the rows from the table and free the space
containing the table. It cant be rolled back.
We can use WHERE condition in DELETE statement and can delete required rows We cant use WHERE condition in TRUNCATE statement. So we cant delete
required rows alone
We can delete specific rows using DELETE We can only delete all the rows at a time using TRUNCATE
Delete is a DML command Truncate is a DDL command
Delete maintains log and performance is slower than Truncate Truncate maintains minimal log and performance wise faster
We need DELETE permission on Table to use DELETE command We need at least ALTER permission on the table to use TRUNCATE command
65. What is the difference between Union and Union All command?
This is one of the tricky SQL Interview Questions. Interviewer may ask you this question in another way as what are the advantages of Union All over Union.
Both Union and Union All concatenate the result of two tables but the way these two queries handle duplicates are different.
Union: It omits duplicate records and returns only distinct result set of two or more select statements.
Union All: It returns all the rows including duplicates in the result set of different select statements.
Performance wise Union All is faster than Union, Since Union All doesn’t remove duplicates. Union query checks the duplicate values which consumes some time to
remove the duplicate records.
Assume: Table1 has 10 records, Table2 has 10 records. Last record from both the tables are same.
Data type of all the columns in the two tables should be same.
INSERT into Employee_Details (Employee_Name, Salary, Age) VALUES (‘John’, 5500 , 29);
1
INSERT into Employee_Details (Employee_Name, Salary, Age) VALUES (‘John’, 5500 , 29);
View Detailed Post
80. How to change a value of the field ‘Salary’ as 7500 for an Employee_Name ‘John’ in a table Employee_Details?
81. Write an SQL Query to select all records from the table?
USE TestDB
GO
SELECT * FROM sys.Tables
GO
1
2
3
4
USE TestDB
GO
SELECT * FROM sys.Tables
GO
83. Define SQL Delete statement.
The SQL Delete statement is used to delete records from a table.
84. Write the command to remove all Players named Sachin from the Players table.
--------------
| TestTable1 |
--------------
| 11 |
| 12 |
| 13 |
| 14 |
--------------
1
2
3
4
5
6
7
8
--------------
| TestTable1 |
--------------
| 11 |
| 12 |
| 13 |
| 14 |
--------------
--------------
| TestTable2 |
--------------
| 11 |
| 12 |
--------------
1
2
3
4
5
6
--------------
| TestTable2 |
--------------
| 11 |
| 12 |
--------------
By using the except keyword
SELECT * FROM TestTable1 EXCEPT SELECT * FROM TestTable2;
1
SELECT * FROM TestTable1 EXCEPT SELECT * FROM TestTable2;
86. How to get each name only once from an employee table?
By using the DISTINCT keyword, we could get each name only once.
In SQL, there is a built-in function called GetDate() which helps to return the current date.
SELECT GetDate();
1
SELECT GetDate();
90. Write an SQL Query to find an Employee_Name whose Salary is equal or greater than 5000 from the below table Employee_Details.
| Employee_Name | Salary|
-----------------------------
| John | 2500 |
| Emma | 3500 |
| Mark | 5500 |
| Anne | 6500 |
-----------------------------
1
2
3
4
5
6
7
| Employee_Name | Salary|
-----------------------------
| John | 2500 |
| Emma | 3500 |
| Mark | 5500 |
| Anne | 6500 |
-----------------------------
Syntax:
| Employee_Name | Salary|
-----------------------------
| Mark | 5500 |
| Anne | 6500 |
-----------------------------
1
2
3
4
5
| Employee_Name | Salary|
-----------------------------
| Mark | 5500 |
| Anne | 6500 |
-----------------------------
91. Write an SQL Query to find list of Employee_Name start with ‘E’ from the below table
| Employee_Name | Salary|
-----------------------------
| John | 2500 |
| Emma | 3500 |
| Mark | 5500 |
| Anne | 6500 |
-----------------------------
1
2
3
4
5
6
7
| Employee_Name | Salary|
-----------------------------
| John | 2500 |
| Emma | 3500 |
| Mark | 5500 |
| Anne | 6500 |
-----------------------------
Syntax:
| Employee_Name | Salary|
-----------------------------
| Emma | 3500 |
-----------------------------
1
2
3
4
| Employee_Name | Salary|
-----------------------------
| Emma | 3500 |
-----------------------------
92. Write SQL SELECT query that returns the FirstName and LastName from Employee_Details table.
sp_rename OldTableName,NewTableName
sp_rename 'TableName.OldColumnName', 'NewColumnName'
1
2
sp_rename OldTableName,NewTableName
sp_rename 'TableName.OldColumnName', 'NewColumnName'
94. How to select all the even number records from a table?
To select all the even number records from a table:
1
2
Select * from table where id % 2 = 0
95. How to select all the odd number records from a table?
To select all the odd number records from a table:
97. Can you display the result from the below table TestTable based on the criteria M,m as M and F, f as F and Null as N and g, k, I as U
SELECT Gender,
case
when Gender='i' then 'U'
when Gender='g' then 'U'
when Gender='H' then 'U'
when Gender='NULL' then 'N'
else upper(Gender)
end as newgender from TestTable GROUP BY Gender
1
2
3
4
5
6
7
8
SELECT Gender,
case
when Gender='i' then 'U'
when Gender='g' then 'U'
when Gender='H' then 'U'
when Gender='NULL' then 'N'
else upper(Gender)
end as newgender from TestTable GROUP BY Gender
98. What will be the result of the query below?
select case when null = null then 'True' else 'False' end as Result;
1
select case when null = null then 'True' else 'False' end as Result;
This query returns “False”. In the above question, we could see null = null is not the proper way to compare a null value. To compare a value with null, we use IS
operator in SQL.
select case when null is null then 'True' else 'False' end as Result;
1
select case when null is null then 'True' else 'False' end as Result;
99. What will be the result of the query below?
select case when null is null then 'Queries In SQL Server' else 'Queries In MySQL' end as Result;
1
select case when null is null then 'Queries In SQL Server' else 'Queries In MySQL' end as Result;
This query will returns “Queries In SQL Server”.
100. How do you update F as M and M as F from the below table TestTable?
| Name | Gender |
------------------------
| John | M |
| Emma | F |
| Mark | M |
| Anne | F |
------------------------
1
2
3
4
5
6
7
| Name | Gender |
------------------------
| John | M |
| Emma | F |
| Mark | M |
| Anne | F |
------------------------
By using the below syntax we could achieve the output as required.
UPDATE TestTable SET Gender = CASE Gender WHEN 'F' THEN 'M' ELSE 'F' END
1
UPDATE TestTable SET Gender = CASE Gender WHEN 'F' THEN 'M' ELSE 'F' END
101. Describe SQL comments?
Single Line Comments: Single line comments start with two consecutive hyphens (–) and ended by the end of the line
Multi-Line Comments: Multi-line comments start with /* and end with */. Any text between /* and */ will be ignored.
102. What is the difference between NVL function, IFNULL function, and ISNULL function?
These three functions work in the same way. These functions are used to replace NULL value with another value. Oracle developers use NVL function, MySQL
developers use IFNULL function and SQL Server developers use ISNULL function.
Assume, some of the values in a column are NULL.
If you run below statement, you will get result as NULL
104. What is the difference between GUI Testing and Database Testing?