1) What is Index?
- A
     pointer to data having physical representation is called as Index.
 - Record
     can be located quickly and efficiently by creating Indices on existing
     tables.
 - Each
     index in a table has some valid name and we can have more than
     one index in different columns of a table.
 - We
     can speed up queries by setting up index in a column of a table.
 - In
     a table , each row is examined by sql server to fulfill our query is known
     as table scan and it only happen when there is no index available to help
     the query.
 - On
     large tables, the table scan has huge impact on performance.
 - Clustered
     and Non clustered indexes are the most widely used indexes in a database.
 
2) What is Trigger?
- A Trigger is
     a process of firing an action when some event like Insert, Update or
     Delete occurs.
 - A
     trigger can’t be called or even executed rather they are automatically become
     active by the DBMS whenever some modification in associated table occur.
 - Triggers
     are event driven and can attached to particular table in a database.
 - Triggers
     are implicitly executed and stored procedures are also executed by
     triggers.
 - Referential
     integrity is maintained by the trigger and they are managed and stored by
     DBMS.
 - Triggers
     can be nested also, in which Insert, Update or Delete logic can be fired
     from the trigger itself.
 
3) What is a NOLOCK?
- NOLOCK is
     used to improve concurrency on a busy system.
 - On
     data read, no lock can be taken on SELECT statement.
 - When
     some other process is updating the data on the same time you are reading
     it is known as dirty read.
 - Read
     (Shared) locks are taken by SELECT Statements.
 - Simultaneous
     access of multiple SELECT statements is allowed in Shared lock but
     modification process is not allowed.
 - The
     result to your system is blocking.
 - Update
     will start on completion of all the reads.
 
4) What is the STUFF function and how does it differ from the REPLACE function?
- Using
     STUFF function we can overwrite the specified characters of a string.
 - The
     syntax of STUFF function is
 - STUFF
     (stringToChange, startIndex, length, new_characters )
 - where
     stringToChange is the string which will have the characters those we want
     to overwrite, startIndex is the starting position, length is the number of
     characters in the string that are to be overwrited, and new_characters are
     the new characters to write into the string.
 - While
     REPLACE function is used to replace specified character at all its
     existing occurances.
 - The
     syntax of REPLACE function is REPLACE (string_to_change,
     string_to_Replace, new_tring).
 - Every
     occurance of string_to_change will be replaced by new_string.
 
5) What are Self Join and Cross Join?
- When
     we want to join a table to itself then SELF JOIN is used.
 - We
     can give one or more aliases to eliminate the confusion.
 - A
     self join can be used as any type, if both the tables are same.
 - The
     simple example where we can use SELF JOIN is if in a company have a
     hierarchal reporting structure and an employee reports to another.
 - A
     cross join give the number of rows in the first table multiplied by the
     number of rows in second table.
 - The
     simple example where we can use CROSS JOIJ is if in an organization wants
     to combine every Employee with family table to see each Employee with each
     family member.
 
6) What are the advantages of using Stored Procedures?
- Procedure
     can reduce network traffic and latency, and can enhance
     application performance.
 - Procedure
     execution plans can be reused, staying cached in the management tool's memory,
     reducing its overhead.
 - Procedures
     provide the benefit of code reuse.
 - The
     logic can be encapsulated using procedures and can help to change
     procedure's code without interacting to application.
 - Procedures
     give more security to our data.
 
7) What is RANK function?
- RANK
     function can be used to give a rank to each row returned from a SELECT
     statment.
For using this function first specify the function name, followed by the empty parentheses. - Then
     mention the OVER function. For this function, you have to pass an
     ORDER BY clause as an argument. The clause identifies the column on which
     you are going to apply the RANK function.
 - For
     Example
SELECT RANK() OVER(ORDER BY BirthDate DESC) AS [RowNumber], FirstName, BirthDate FROM EmpDetails - In
     the result you will see that the eldest employee got the first rank and
     the youngest employee got the last rank. Here the rows with equal age will
     get same ranks.
 - The
     rank depends on the row's position in the result set, but not on the
     sequential number of the row.
 
8) What are cursors and when they are useful?
- When
     we execute any SQL operations, SQL Server opens a work area in
     memory which is called Cursor.
 - When
     it is required to perform the row by row operations which are not possible
     with the set-based operations then Cursor is used.
 - There are two of cursors
 
- Implicit Cursor : SQL Server automatically manages cursors for all data manipulation statements.These cursors are called implicit cursors.
 - Explicit Cursor:
 
 When the programmer wants to perform the row by row operations for the result set containing more than one row, then he explicitly declare a cursor with a name.They are managed by OPEN, FETCH and CLOSE.-%FOUND, %NOFOUND, %ROWCOUNT and %ISOPEN attributes are          used in both types of cursors.
9) What is Similarity and Difference between Truncate and Delete in SQL?Similarity
Both Truncate and Delete command will delete data from given table and they will not delete the table structure from the database.
Difference
- TRUNCATE is a DDL (data definition language) command whereas DELETE is a DML (data manipulation language) command.
 - We can’t execute a trigger with TRUNCATE whereas with DELETE command, a trigger can be executed.
 - TRUNCATE is faster than DELETE, because when you use DELETE to delete the data, at that time it store the whole data in rollback space from where you can get the data back after deletion, whereas
 - TRUNCATE will not store data in rollback space and will directly delete it.
 - You can’t get the deleted data back when you use TRUNCATE.
 - We can use any condition in WHERE clause using DELETE but it is notpossible with TRUNCATE.If table is referenced by any foreign key constraints then TRUNCATE cannot work.
 
10) What are COMMIT and ROLLBACK in SQL?
- COMMIT
     statement is used to end the current transaction and once the COMMIT
     statement is exceucted the transaction will be permanent and undone.
 - Syntax:
     COMMIT;
 - Example:
BEGIN
UPDATE EmpDetails SET EmpName = ‘Arpit’ where Dept = ‘Developer’
COMMIT;
END; - ROLLBACK
     statement is used to end the current transaction and undone the changes
     which was made by that transaction.
 - Syntax:
     ROLLBACK [TO] Savepoint_name;
 - Example
BEGIN
Statement1;
SAVEPOINT mysavepoint;
BEGIN
Statement2;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK TO mysavepoint;
Statement5;
END;
END; 
11) What is a WITH(NOLOCK)?
- WITH(NOLOCK)
     is used to unlock the data which is locked by the transaction that is not
     yet committed. This command is used before SELECT statement.
 - When
     the transaction is committed or rolled back then there is no need to use
     NOLOCK function because the data is already released by the committed
     transaction.
 - Syntax:
     WITH(NOLOCK)
 - Example:
 - SELECT
     * FROM EmpDetails WITH(NOLOCK)
 - WITH(NOLCOK)
     is similar as READ UNCOMMITTED
 
12) What is difference between Co-related sub query and nested sub query?
- Correlated
     subquery executes single time for every row which is selected by the outer
     query.
 - It
     has a reference to a value from the row selected by the outer query.
 - Nested
     subquery executes only once for the entire nesting (outer) query. It does
     not contain any reference to the outer query row.
For example, - Correlated
     Subquery:
select e.EmpFirstName, e.Salary, e.DeptId from Employee e where e.Salary = (select max(Salary) from Employee ee where ee.DeptId = e.DeptId) - Nested
     Subquery:
select EmpFirstName, Salary, DeptId from Employee where (DeptId, Salary) in (select DeptId, max(Salary) from Employee group by DeptId) 
13) Differentiate UNION, MINUS, UNION ALL and INTERSECT?
- INTERSECT
     - It will give all the distinct rows from both select queries.
 - MINUS
     - It will give distinct rows returned by the first query but not by the
     second query.
 - UNION
     - It will give all distinct rows selected by either first query or second
     query.
 - UNION
     ALL - It will give all rows returned by either query with all dublicates
     records
 
14) What is a join? Explain the different types of joins?
- Using
     Join in a query, we can retrieve referenced columns or rows from multiple
     tables.
 - Following
     are different types of Joins:
1. JOIN: Return details from tables if there is at least one matching row in both tables
2. LEFT JOIN: It will return all rows from the left table, even if there are no matching row in the right table
3. RIGHT JOIN: It will return all rows from the right table, even if there is no matching row in the left table.
4. FULL JOIN: It will return rows when there is a match in either of tables. 
15) What is DDL, DML and DCL?
SQL commands can be divided in three
large subgroups.
DDL: The SQL commands which deals with
database schemas and information of how the data will be generated in database
are classified as Data Definition Language.
- For
     example CREATE TABLE or ALTER TABLE belongs to DDL.
 - DML:
     The SQL commands which deals with data manipulation are classified as Data
     Manipulation Language.
 - For
     example SELECT, INSERT, etc.
 - DCL:
     The SQL commands which deal with rights and permission over the database
     are classified as DCL.
 - For
     example GRANT, REVOKE
 
No comments:
Post a Comment