Get All Employee Details From The Employee Table
Get All Employee Details From The Employee Table
Get All Employee Details From The Employee Table
3. Get First_Name from employee table using alias name “Employee Name”
9. Get FIRST_NAME from employee table after removing white spaces from right side
12. Get First_Name from employee table after replacing 'o' with '$'
13. Get First_Name and Last_Name as single column from employee table separated by a
'_'
SQL Server Equivalent of MySQL concat is '+', Query : Select FIRST_NAME + '_'
+LAST_NAME from EMPLOYEE
14. Get FIRST_NAME ,Joining year,Joining Month and Joining Date from employee table
What is a Trigger?
A trigger is a SQL procedure that initiates an action when an event (INSERT, DELETE or
UPDATE) occurs. Triggers are stored in and managed by the DBMS. Triggers are used to
maintain the referential integrity of data by changing the data in a systematic fashion. A trigger
cannot be called or executed; DBMS automatically fires the trigger as a result of a data
modification to the associated table. Triggers can be considered to be similar to stored
procedures in that both consist of procedural logic that is stored at the database level. Stored
procedures, however, are not event-drive and are not attached to a specific table as triggers are.
Stored procedures are explicitly executed by invoking a CALL to the procedure while triggers
are implicitly executed. In addition, triggers can also execute stored procedures.
Nested Trigger: A trigger can also contain INSERT, UPDATE and DELETE logic within itself;
so when the trigger is fired because of data modification, it can also cause another data
modification, thereby firing another trigger. A trigger that contains data modification logic
within itself is called a nested trigger. (Read more here)
1) DML Trigger
1.Instead of Trigger
Instead of Triggers are fired in place of the triggering action such as an insert, update, or delete.
2. After Trigger
After triggers execute following the triggering action, such as an insert, update, or delete.
2) DDL Trigger
This type of trigger is fired against Drop Table, Create Table, Alter Table or Login events. DDL
Triggers are always After Triggers.
What is a View?
A simple view can be thought of as a subset of a table. It can be used for retrieving data as well
as updating or deleting rows. Rows updated or deleted in the view are updated or deleted in the
table the view was created with. It should also be noted that as data in the original table changes,
so does the data in the view as views are the way to look at parts of the original table. The results
of using a view are not permanently stored in the database. The data accessed through a view is
actually constructed using standard T-SQL select command and can come from one to many
different base tables or even other views.
What is an Index?
An index is a physical structure containing pointers to the data. Indices are created in an existing
table to locate rows more quickly and efficiently. It is possible to create an index on one or more
columns of a table, and each index is given a name. The users cannot see the indexes; they are
just used to speed up queries. Effective indexes are one of the best ways to improve performance
in a database application. A table scan happens when there is no index available to help a query.
In a table scan, the SQL Server examines every row in the table to satisfy the query results. Table
scans are sometimes unavoidable, but on large tables, scans have a terrific impact on
performance.
What is a Cursor?
A cursor is a database object used by applications to manipulate data in a set on a row-by-row
basis, instead of the typical SQL commands that operate on all the rows in the set at one time.
In order to work with a cursor, we need to perform some steps in the following order:
Declare cursor
Open cursor
Fetch row from the cursor
Process fetched row
Close cursor
Deallocate cursor (Read more here)
What is Collation?
Collation refers to a set of rules that determine how data is sorted and compared. Character data
is sorted using rules that define the correct character sequence with options for specifying case
sensitivity, accent marks, Kana character types, and character width. (Read more here)
A subquery is a SELECT statement that is nested within another T-SQL statement. A subquery
SELECT statement if executed independently of the T-SQL statement, in which it is nested, will
return a resultset. This implies that a subquery SELECT statement can stand alone, and it does
not depend on the statement in which it is nested. A subquery SELECT statement can return any
number of values and can be found in the column list of a SELECT statement, and FROM,
GROUP BY, HAVING, and/or ORDER BY clauses of a T-SQL statement. A subquery can also
be used as a parameter to a function call. Basically, a subquery can be used anywhere an
expression can be used. (Read more here)
A cross join that does not have a WHERE clause 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. The common example is when
company wants to combine each product with a pricing table to analyze each product at each
price.
Inner Join
A join that displays only the rows that have a match in both joined tables is known as inner Join.
This is the default type of join in the Query and View Designer.
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 to specify the unmatched rows to be included:
Left Outer Join: In Left Outer Join, all the rows in the first-named table, i.e. “left” table, which
appears leftmost in the JOIN clause, are included. Unmatched rows in the right table do not
appear.
Right Outer Join: In Right Outer Join, all the rows in the second-named table, i.e. “right” table,
which appears rightmost in the JOIN clause are included. Unmatched rows in the left table are
not included.
Full Outer Join: In Full Outer Join, all the rows in all joined tables are included, whether they are
matched or not.
Self Join
This is a particular case when one table joins to itself with one or two aliases to avoid confusion.
A self join can be of any type, as long as the joined tables are the same. A self join is rather
unique in that it involves a relationship with only one table. The common example is when
company has a hierarchal reporting structure whereby one member of staff reports to another.
Self Join can be Outer Join or Inner Join. (Read more here)
Foreign keys are a method of ensuring data integrity and manifestation of the relationship
between tables.
A scalar user-defined function returns one of the scalar data types. Text, ntext, image and
timestamp data types are not supported. These are the type of user-defined functions that most
developers are used to in other programming languages.
An Inline table-value user-defined function returns a table data type and is an exceptional
alternative to a view as the user-defined function can pass parameters into a T-SQL select
command and in essence provide us with a parameterized, non-updateable view of the
underlying tables.
What is an Identity?
Identity (or AutoNumber) is a column that automatically generates numeric values. A start and
increment value can be set, but most DBAs leave these at 1. A GUID column also generates
unique keys. Updated based on the comment of Aaron Bertrand. (Blog)
What is DataWarehousing?
Subject-oriented, which means that the data in the database is organized so that all the data
elements relating to the same real-world event or object are linked together;
Time-variant, which means that the changes to the data in the database are tracked and
recorded so that reports can be produced showing changes over time;
Non-volatile, which means that data in the database is never over-written or deleted, once
committed, the data is static, read-only, but retained for future reporting.
Integrated, which means that the database contains data from most or all of an organization’s
operational applications, and that this data is made consistent.
This language is used for retrieving data from SSAS cubes. It looks very similar to T-SQL, but it
is very different in the areas of conceptualization and implementation.
This is again used for SSAS, but rather than cubes it is used for data mining structures. This
language is more complicated than MDX. Microsoft has provided many wizards in its BI tools,
which further reduced number of experts for learning this language, which deals with data
mining structures.
This is mainly used for SSAS administrative tasks. It is quite commonly used in administration
tasks such as backup or restore database, copy and move database, or for learning Meta data
information. Again, MS BI tools provide a lot of wizards for the same.
(Read More Here)
Hot Standby can be achieved in the SQL Server using SQL Server 2005 Enterprise Edition and
the later enterprise versions. SQL Server 2005 has introduced Mirroring of database that can be
configured for automatic failover in a disaster situation. In the case of synchronous mirroring, the
database is replicated to both the servers simultaneously. This is a little expensive but provides
the best high availability. In this case, both primary and standby servers have same data all the
time.
2) Warm Standby:
In Warm Standby, automatic failover is not configured. This is usually set up using Log
Shipping or asynchronous mirroring. Sometimes warm standby is lagging by a few minutes or
seconds, which results into loss of few latest updates when the primary server fails and
secondary server needs to come online. Sometimes a warm standby server that is lagging by a
few transactions is brought back to the current state by applying the recent transaction log.
3) Cold Standby:
Code Standby servers need to be switched manually, and sometimes all the backups as well as
the required OS need to be applied. Cold Standby just physically replaces the previous server.
1. FROM
2. ON
3. OUTER
4. WHERE
5. GROUP BY
6. CUBE | ROLLUP
7. HAVING
8. SELECT
9. DISTINCT
10. TOP
11. ORDER BY
Which TCP/IP port does the SQL Server run on? How can it
be Changed?
SQL Server runs on port 1433. It can be changed from the Network Utility TCP/IP properties –>
Port number, both on client and the server.
A non-clustered index is a special type of index in which the logical order of the index does not
match the physical stored order of the rows on disk. The leaf node of a non-clustered index does
not consist of the data pages. Instead, the leaf nodes contain index rows. (Read more here)
No indexes
A clustered index
A clustered index and many non-clustered indexes
A non-clustered index
Many non-clustered indexes
Kana Sensitivity – When Japanese Kana characters Hiragana and Katakana are treated
differently, it is called Kana sensitive.
Width sensitivity – When a single-byte character (half-width) and the same character represented
as a double-byte character (full-width) are treated differently, it is width sensitive. (Read more
here)
TRUNCATE
TRUNCATE is faster and uses fewer system and transaction log resources than DELETE. (Read all
the points below)
TRUNCATE removes the data by deallocating the data pages used to store the table’s data, and
only the page deallocations are recorded in the transaction log.
TRUNCATE removes all the rows from a table, but the table structure, its columns, constraints,
indexes and so on remains. The counter used by an identity for new rows is reset to the seed for
the column.
You cannot use TRUNCATE TABLE on a table referenced by a FOREIGN KEY constraint.
Using T-SQL – TRUNCATE cannot be rolled back unless it is used in TRANSACTION. OR TRUNCATE
can be rolled back when used with BEGIN … END TRANSACTION using T-SQL.
TRUNCATE is a DDL Command.
TRUNCATE resets the identity of the table.
DELETE
DELETE removes rows one at a time and records an entry in the transaction log for each deleted
row.
DELETE does not reset Identity property of the table.
DELETE can be used with or without a WHERE clause
DELETE activates Triggers if defined on table.
DELETE can be rolled back.
DELETE is DML Command.
DELETE does not reset the identity of the table.
Pessimistic Locking is when you lock the record for your exclusive use until you have finished
with it. It has much better integrity than optimistic locking but requires you to be careful with
your application design to avoid Deadlocks.
When is the use of UPDATE_STATISTICS command?
This command is basically used when a large amount of data is processed. If a large amount of
deletions, modifications or Bulk Copy into the tables has occurred, it has to update the indexes to
take these changes into account. UPDATE_STATISTICS updates the indexes on these tables
accordingly.
The pooler maintains ownership of the physical connection. It manages connections by keeping
alive a set of active connections for each given connection configuration. Whenever a user calls
Open on a connection, the pooler looks for an available connection in the pool. If a pooled
connection is available, it returns it to the caller instead of opening a new connection. When the
application calls Close on the connection, the pooler returns it to the pooled set of active
connections instead of closing it. Once the connection is returned to the pool, it is ready to be
reused on the next Open call.
Use SQL Profiler to monitor only the events in which you are interested. If traces are becoming
too large, you can filter them based on the information you want, so that only a subset of the
event data is collected. Monitoring too many events adds overhead to the server and the
monitoring process and can cause the trace file or trace table to grow very large, especially when
the monitoring process takes place over a long period of time.
Windows Mode
Mixed Mode – SQL and Windows
To change authentication mode in SQL Server, go to Start -> Programs- > Microsoft SQL Server
and click SQL Enterprise Manager to run SQL Enterprise Manager from the Microsoft SQL
Server program group. Select the server; then from the Tools menu, select SQL Server
Configuration Properties and choose the Security page.
A global temporary table remains in the database accessible across the connections. Once the
connection where original global table is declared dropped this becomes unavailable.
UNION ALL
The UNION ALL command is equal to the UNION command, except that UNION ALL selects
all values.
The difference between UNION and UNION ALL is that UNION ALL will not eliminate
duplicate rows, instead it just pulls all rows from all the tables fitting your query specifics and
combines them into a table. (Read more here)
What is B-Tree?
The database server uses a B-tree structure to organize index information. B-Tree generally has
following types of index pages or nodes:
Root node: A root node contains node pointers to only one branch node.
Branch nodes: A branch node contains pointers to leaf nodes or other branch nodes,
which can be two or more.
Leaf nodes: A leaf node contains index items and horizontal pointers to other leaf nodes,
which can be many.
If someone is using db it will not accept sp_renmaedb. In that case, first bring db to single user
mode using sp_dboptions. Use sp_renamedb to rename the database. Use sp_dboptions to bring
the database to multi-user mode.
e.g.
USE MASTER;
GO
EXEC sp_dboption AdventureWorks, 'Single User', True
GO
EXEC sp_renamedb 'AdventureWorks', 'AdventureWorks_New'
GO
EXEC sp_dboption AdventureWorks, 'Single User', False
GO
To Rename Table
e.g.
To rename Column
e.g.
sp_RENAME 'Table_First.Name', 'NameChange' , 'COLUMN'
GO
e.g.
You can run the following command and check the advanced global configuration settings.
sp_CONFIGURE 'show advanced', 1
GO
RECONFIGURE
GO
sp_CONFIGURE
GO
Many-to-Many relationships are implemented using a junction table with the keys from both the
tables forming the composite primary key of the junction table.
BEGIN TRANSACTION
Operations
COMMIT TRANSACTION or ROLLBACK TRANSACTION
When Commit is executed, every statement between BEGIN and COMMIT becomes persistent
to database. When Rollback is executed, every statement between BEGIN and ROLLBACK are
reverted to the state when BEGIN was executed.
e.g.
In the above example, col1 and tab1 are the column alias and table alias, respectively. They do
not affect the performance at all.
Here are few methods which can be used to protect again SQL Injection attack:
How to Find Out the List Schema Name and Table Name
for the Database?
We can use following script: