- The SQL Server Joins are classified into two types such as
- ANSI format JOINS
- NON-ANSI format JOINS
- ANSI -
- Inner join
- Outer join
- Cross join
- Further, the outer join is divided into three types are as follows
- Left outer join
- Right outer join
- Full outer join
- NON - ANSI
- EQUI join
- NON-EQUI join
- SELF-join
- Natural Join
- Note :- Default JOIN in SQL is Inner join
- INDEX:-
- Note - In a table, we can use a maximum of 1000 indexes (1 Clustered Index plus 999 Non-Clustered Index).
- When an index is created, a balanced tree which has root, non-leaf and leaf nodes are created. Hence the search becomes faster.
- Clustered index is created by default only when primary key is present for the table.
- In Non clustered,the leaf node actually holds the data and in the case of a non-clustered index, the leaf node actually points to the leaf node of a clustered index or points to the heap table if the table does not have any clustered index.
- What is a Covering query?
- If all the columns that we have requested in the select clause of the query are present in the index, then there is no need to look up the table again. The requested column data can simply be returned from the index. This is called Covering Query.
- Aspect | RANK() Function | DENSE_RANK() Function |
- -------------------------|--------------------------|--------------------------|
- Rank Assignment | Assigns unique ranks | Assigns unique ranks |
- Handling Tied Rows | Skips ranks for tied rows | No gaps in rank sequence |
- Tied Rows | Receive different ranks if tied | Receive the same rank if tied |
- Rank Values | Non-consecutive (may have gaps) | Consecutive (no gaps) |
- Example SQL | RANK() OVER (ORDER BY Column) | DENSE_RANK() OVER (ORDER BY Column) |
- Use Case | When gaps in ranks are acceptable | When consecutive ranks are preferred for tied rows |
- Window Functions:-
- Aggregate Functions :- Avg, min, max, count, sum
- Ranking funtions :- rank, dense_rank, row_number, ntile
- value functions :- lag, lead, first_value, last_value, nth_value
- SELECT
- Date,
- Price,
- Price - LAG(Price, 1) OVER (ORDER BY Date) AS DailyChange,
- LAST_VALUE(Price) OVER (ORDER BY Date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS EndOfWeekPrice
- FROM
- StockPrices;
- Stored procedure:-
- When we execute a sql query it goes through 3 process:Syntax Checked,Plan Selected,Query Execution.
- When we create a stored procedure, the syntaxes are checked while creating the procedure or we can say at the design. When we execute the procedure for the first time, the best execution plan is selected and is cached in memory. And after that whenever we call the stored procedure, the query execution plan is taken from the cache rather than creating again and again and executed
- NOTE:-So, in SQL Server by using the return values, we can return only one integer. It is not possible, to return more than one value using return values, whereas in output parameters, we can return any data type and a stored procedure can have more than one output parameter.
- Temporary/private Stored procedure
- CREATE PROCEDURE #GlobalProcedue
- AS
- BEGIN
- PRINT 'This is Temporary Temporary Procedure'
- END
- GLobal SP:-
- CREATE PROCEDURE ##GlobalProcedue
- AS
- BEGIN
- PRINT 'This is Global Temporary Procedure'
- END
- FUNCTIONS :-
- User defined Scalar function:- Meaning it returns only one value
- CREATE FUNCTION AddTwoNumber(@firstNo INT, @second INT)
- RETURNS INT
- AS
- BEGIN
- DECLARE @result INT
- SET @result = @firstNo + @second
- RETURN @result
- END
- We can call using
- Select dbo.AddTwoNumber
- or
- DECLARE @result INT
- SET @result = (Select dbo.AddTwoNumber(10,15))
- PRINT @result
- User defined Inline Table Valued function
- It returns a whole table and its return type is TABLE
- CREATE FUNCTION FN_GetStudentDetailsByID
- (
- @ID INT
- )
- RETURNS TABLE
- AS
- RETURN (SELECT * FROM Student WHERE ID = @ID)
- We can call it using just like a table But with ()
- SELECT * FROM FN_GetStudentDetailsByBranch(‘CSE’)
- User defined Multi-statement Table Valued Function
- -- Multi-statement Table Valued function: In this we create our own return table definition
- CREATE FUNCTION MSTVF_GetEmployees()
- RETURNS @Table Table (ID int, Name nvarchar(20), DOB Date)
- AS
- BEGIN
- INSERT INTO @Table
- SELECT ID, Name, Cast(DOB AS Date)
- FROM Employee
- Return
- End
- Calling:-
- SELECT * FROM MSTVF_GetEmployees()
- Functions VS Procedures
- https://dotnettutorials.net/lesson/multi-statement-table-valued-function-in-sql-server/
- Deterministic function
- The Deterministic functions in SQL Server always return the same result every time they are called with a specific set of input values and give the same state of the database. For examples: SQUARE(), Power(), Sum(), AVG(), and Count(). All aggregate functions are deterministic functions. Let us see some examples.
- Non deterministic function
- The Non-deterministic functions in SQL Server may return different results each time they are called with a specific set of values even if the database state that they access remains the same. For examples: GetDate() and Current_Timestamp