Skip to main content

Interview Questions and answers - SQL Server Day 4

Question: What is Primary and foreign key in SQL server?

Answer: Primary key ensures the row have unique identity. Primary key have unique values and but can’t be null. A table can have only one primary key.
Foreign key ensures data integrity of the relationship tables.

Question: What is an identity in SQL Server?

Answer: If we want to set the unique value of a column then we have to use Identity. Identity automatically generates numeric value; we can set start and increment value.

Question: Can you please tell me default port of TCP/IP of SQL Server? Can we changed it if yes then how?

Answer: Default port of SQL Server is 1433, yes it can be changed. Network Utility TCP/IP propertiesà Port Number.

Question: What is difference between clustered and non-clustered index in SQL Server?

Answer: Best answer by Microsoft MSDN..
Clustered
  • Clustered indexes sort and store the data rows in the table or view based on their key values. These are the columns included in the index definition. There can be only one clustered index per table, because the data rows themselves can be sorted in only one order.
  • The only time the data rows in a table are stored in sorted order is when the table contains a clustered index. When a table has a clustered index, the table is called a clustered table. If a table has no clustered index, its data rows are stored in an unordered structure called a heap.

Non-clustered
  • Non-clustered indexes have a structure separate from the data rows. A non-clustered index contains the non-clustered index key values and each key value entry has a pointer to the data row that contains the key value.
  • The pointer from an index row in a non-clustered index to a data row is called a row locator. The structure of the row locator depends on whether the data pages are stored in a heap or a clustered table. For a heap, a row locator is a pointer to the row. For a clustered table, the row locator is the clustered index key.
  • You can add non-key columns to the leaf level of the non-clustered index to by-pass existing index key limits, 900 bytes and 16 key columns, and execute fully covered, indexed, queries. For more info https://msdn.microsoft.com/en-IN/library/ms190457.aspx

Question: How many clustered index we can create in a table- SQL Server?

Answer: We can create only one clustered index in a table.

Question: How many non-clustered index we can create in a table- SQL Server?

Answer: We can more then on clustered index in a table. Max number of non-clustered index in SQL Server 5 is 249 and max number of non-clustered index in SQL Server 8 is 999.

Question: Any disadvantage of index in SQL Server?

Answer: Frequently changes of table may increase the fragmentation of Index it may cause of slow query performance, so time to time index should be rebuilt.

Question: What is fill factor in SQL Server?

Answer: Fill Factor works in performance tuning area, for the index the most important property is Fill Factor. Fill Factor responsible to determine the percentage of space on each leaf-level page to be filled with data. As we know page is smallest unit of SQL server which size is 8k. Every page cans one or more than one row which is depending on size of row.

Popular posts from this blog

What is difference between UNION and UNION ALL in SQL Server

We use UNION and UNION ALL operator to combine multiple results set into one result set.
UNION operator is used to combining multiple results set into one result set but removes any duplicate rows. Basically, UNION is used to performing a DISTINCT operation across all columns in the result set. UNION operator has the extra overhead of removing duplicate rows and sorting result.
UNION ALL operator use to combine multiple results set into one result set but it does not remove any duplicate result. Actually, this does not remove duplicate rows so it is faster than the UNION operator. If you want to combine multiple results and without duplicate records then use UNION otherwise UNION ALL is better.
Following some rules for using UNION/UNION ALL operator
1.The number of the column should be the same in the query's when you want to combine them. 2.The column should be of the same data type. 3.ORDER BY clause can be applied to the overall result set not within each result set.
4.Column name of …

Disable/Enable All the Foreign Key Constraint in SQL Server Database

In some scenario we need to disable all foreign key relationships from all table, suppose for bad testing purpose or you want to see what will be effect of garbage data on application or performance, due to this purpose you want to insert garbage data into table and this table contains foreign key constraints then you will get the error of foreign key constraint.
Many people face this types of issue, the following query will resolve this problem but be careful on the production server, it would be better if you do this under guidance to any DBA.
The following query will disable all constraints in the database.

execsp_msforeachtable'alter table ? nocheck constraint all'

Once you disabled all constraints you should also need to enable all constraints once you completed your work, so following query will help you to enable all constraints in the database.

execsp_msforeachtable'alter table ? with check check constraint all'

Using the above query you can resolve above described s…

Dropdownlist selectedindexchanged event is not firing

<asp:DropDownList ID="ddlSource" runat="server" DataSourceID="SqlDataSource1" DataTextField="vcSuplierNm" ViewStateMode="Enabled DataValueField="vcSuplierCode" EnableViewState="true" AppendDataBoundItems="true" OnSelectedIndexChanged="ddl_OnSelectedIndexChanged" AutoPostBack="true"></asp:DropDownList>

Add property ViewStateMode="Enabled" and EnableViewState="true"
in drop DropDownList

Add day to ISODate in MongoDB

We can use $add operator to add days in ISODate in mongodb, $add is the Arithmetic Aggregation Operator which adds number and date in mongodb.
Syntax:

{ $add: [ <expression1>, <expression2>, ... ] }

Note:  If one of the argument is date $add operator treats to other arguments as milliseconds to add to the date.
Example: Suppose we have a Test collection as below.

{"Title" : "Add day to ISODate in MongoBD","CreatedDate" : ISODate("2016-07-07T08:00:00.000Z")}

Query to add 2 days in CreatedDate

db.Test.aggregate([      { $project: { Title: 1, AddedDate: { $add: [ "$CreatedDate", 2*24*60*60000 ] } } }    ])

Result:

{ "_id" : ObjectId("579a1567ac1b3f3732483de0"), "Title" : "Add day to ISODate in MongoBD", "AddedDate" : ISODate("2016-07-09T08:00:00.000Z") }

Note: As mentioned in above note we have to convert days in millisecond because $add operator treat to other arg…

Remove special characters from string in SQL server

I faced many times an issue to remove special characters from a string. Suppose you are working on searching concept and you have to remove the special characters from search string due to query performance, there are many solution are available but T-SQL is easily resolved this issue.
Following query may help you to resolve your issue.

DECLARE@strVARCHAR(400) DECLARE@expresVARCHAR(50)='%[~,@,#,$,%,&,*,(,),.,!]%' SET@str='(remove) ~special~ *characters. from string in sql!' WHILEPATINDEX(@expres,@str)> 0 BEGIN SET@str=Replace(REPLACE(@str,SUBSTRING(@str,PATINDEX(@expres,@str), 1 ),''),'-',' ') END SELECT@str



Query to find foreign key relationship and name of the constraints for each table in the database

Sometimes we need to find all foreign key on a table so that we can analyze the relation of a table and can find the solution accordingly. It is very difficult to see it manually, by using the following query we can find all foreign key relationships on the particular table.

SELECT K_Table=FK.TABLE_NAME, FK_Column=CU.COLUMN_NAME, PK_Table=PK.TABLE_NAME, PK_Column=PT.COLUMN_NAME, Constraint_Name=C.CONSTRAINT_NAME FROMINFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTSC INNERJOININFORMATION_SCHEMA.TABLE_CONSTRAINTSFKONC.CONSTRAINT_NAME=FK.CONSTRAINT_NAME INNERJOININFORMATION_SCHEMA.TABLE_CONSTRAINTSPKONC.UNIQUE_CONSTRAINT_NAME=PK.CONSTRAINT_NAME INNERJOININFORMATION_SCHEMA.KEY_COLUMN_USAGECUONC.CONSTRAINT_NAME=CU.CONSTRAINT_NAME INNERJOIN( SELECTi1.TABLE_NAME,i2.COLUMN_NAME FROMINFORMATION_SCHEMA.TABLE_CONSTRAINTSi1 INNERJOININFORMATION_SCHEMA

How to change schema of table in SQL Server

In SQL Server 2005 and above versions  all tables grouped into schemas. When we creating a table without specify a schema SQL Server creates a default schema "dbo".  We can alter the schema of table. For example I am creating a table with default schema see bellow script.
CREATETABLE Codefari (             id INTIDENTITY(1,1),             title VARCHAR(400) ) SELECT name,SCHEMA_NAME(schema_id)as [Schema] FROMsys.tables WHERE  name ='Codefari'
Result set
name            Schema ------------------------------------------------ Codefari       dbo
(1 row(s) affected)
In result set we can see schema is dbo, if we want change schema of table then first we have to create a schema if does not exist. See below script.
CREATESCHEMA Blog GO ALTERSCHEMA Blog TRANSFER dbo.Codefari GO
SELECT name,SCHEMA_NAME(schema_id)as [Schema] FROMsys.tables WHERE  name ='Codefari'

Like in MongoDB Query

In SQL, 'LIKE' query look like as below
SELECT*FROM[dbo.][USERS]WHEREFNAMELIKE'%DILIP%'
In MongoDB it's look like as below(query in MongoDB console)
db.USERS.find({"FNAME":/DILIP/})
Same as
db.USERS.find({"FNAME":/^DILIP/})   // FNAMELIKE'DILIP%'
db.USERS.find({"FNAME":/DILIP$/})   // FNAMELIKE'%DILIP'

$regex in MongoDB