Categories

.NET (1) CSS (5) OOP (1) PHP (2) SQL (5) SQL Server (8) TSQL (1)
Showing posts with label SQL Server. Show all posts
Showing posts with label SQL Server. Show all posts

Wednesday, July 18, 2012

OUTPUT Clause in SQL SERVER 2008 - Update


 --Decalring temp table
  DECLARE @OUTPUTTABLE Table
  (
ID INT,
NAME VARCHAR(100),
OLDNAME VARCHAR(100),
PRICE Decimal(18,2),
OLDPRICE Decimal(18,2) 
  ); 
  
  UPDATE  dbo.SourceTable
  SET Name='TestUpdate',
 Price=64
  OUTPUT
 inserted.ID,
 inserted.Name,
 deleted.Name,
 inserted.Price,
 deleted.Price
  INTO @OUTPUTTABLE(ID,NAME,OLDNAME,PRICE,OLDPRICE)
  WHERE ID=3
  
  
  SELECT *  FROM [EVSSQL].[dbo].[SourceTable]
  
  SELECT *  FROM @OUTPUTTABLE

OUTPUT Clause in SQL SERVER 2008 - INSERT


In SQL Server 2008, you can add an OUTPUT clause to your data manipulation language (DML) statements. The clause returns a copy of the data that you have inserted into or deleted from your tables. This contains the copy of data you are inserting or updating or deleting.


Here is the example code of OUTPUT clause.


CREATE TABLE [dbo].[SourceTable1](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NULL,
[Price] [money] NULL
)


 Here is the output clause code


 --Decalring temp table
  DECLARE @OUTPUTTABLE Table
  (
ID INT,
NAME VARCHAR(100),
PRICE decimal(18,2)
  );  
  
   INSERT INTO [dbo].[SourceTable]
OUTPUT 
INSERTED.*
INTO @OUTPUTTABLE
  VALUES('Test','25')  
  
  
  SELECT *  FROM [EVSSQL].[dbo].[SourceTable]
  
  SELECT *  FROM @OUTPUTTABLE


You can also define the column names in the query.


 --Decalring temp table
  DECLARE @OUTPUTTABLE Table
  (
ID INT,
NAME VARCHAR(100),
PRICE decimal(18,2)
  ); 
  
  
  INSERT INTO [dbo].[SourceTable]
OUTPUT
INSERTED.Name,
inserted.Price
INTO @OUTPUTTABLE(NAME,Price)
  VALUES('Test','25')  
  
  
  SELECT *  FROM [EVSSQL].[dbo].[SourceTable]
  
  SELECT *  FROM @OUTPUTTABLE

Sunday, July 15, 2012

APPLY OPERATOR IN T-SQL


APPLY operator is used in the FROM clause of a query. It allows you to call a Table valued function for each row of your outer TABLE. We can pass outer table's columns as function arguments.
It has two options:
  1. CROSS APPLY, and
  2. OUTER APPLY
CROSS APPLY will not return the outer tables row if function table has no row corresponding to it, whereas OUTER APPLY returns NULL values instead of function columns.

Let's take an example.

First I will make a table valued function and then I will try to show you how to apply the "APPLY" operator.

USE [AdventureWorks]
GO
/****** Object:  UserDefinedFunction [dbo].[fnGetDepartmentId]    Script Date: 07/15/2012 21:54:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[fnGetDepartmentId] (@empid int)
RETURNS TABLE
AS
RETURN
(
--Outer Query
SELECT D.DepartmentID,D.Name 
FROM [AdventureWorks].[HumanResources].[EmployeeDepartmentHistory] EDH
INNER JOIN [AdventureWorks].[HumanResources].[Department] D
ON EDH.DepartmentID=D.DepartmentID
WHERE Employeeid=@empid
) 


This function will return the department name and its ID according to the each employee ID.


Now I will use the APPLY operator to get my required results.


SELECT E.EmployeeID,E.Title,DepartmentID,Name AS DepartmentName

FROM [AdventureWorks].[HumanResources].[Employee] E
CROSS APPLY
dbo.fnGetDepartmentId(E.EmployeeID)



Tuesday, December 27, 2011

Adventureworks Sample Database ER Diagrams

Adventureworks is the sample database from the Microsoft for the SQL Server. It is very helpful to understand any database if you have its ER diagram. So here is the all the ER diagrams I searched from internet.
ER diagrams



Friday, December 2, 2011

Restoring SQL server database ".bak" file

Right click on the database tab –> All Tasks –> Restore Database –> From device –> Select Devices –> Add your .bak file. Click OK. 
Now click the options tab. Here you will see the logical file name of your database. At its right side there will be a physical path of this file. Make sure this path is redirecting to the location where your database files exist, normally default location is "C:\Program Files\Microsoft SQL Server\MSSQL\Data" at the end of this path concatenate your file name. After concatenation your path should be something like this

C:\Program Files\Microsoft SQL Server\MSSQL\Data\test.mdf
C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_Log.ldf.

Now click ok. Large databse normally takes lot of time.



Thursday, March 24, 2011

INSERT, DELETE, UPDATE in VIEW

A view can be Updated, deleted and inserted only if it has only one base table.
For example consider there is a table called book and it has view called Book_View. So we can update, delete and insert in that view and this view will insert the data in actual table “Book”. So if we have a view which contains more than one table then we can't perform these operations on that view.
Consider the view that list the books on the basis of category. So there would be join on book table and category table on categoryID column in this view. So we can’t perform updating,inserting and deleting operations on this view because SQL server will get confuse and will give error.

Using SQL SERVER Templates

SQL SERVER management studio has very handy feature using and creating Template Scripts. It has many built in template script which we can use e.g. creating Tables, Stored Procedures Functions etc. You can see the SQL SERVER built in template list by going to View à Template Explorer or using the short key Ctrl+Alt+T

Friday, February 18, 2011

T-SQL String Functions

 --[SUBSTRING( string, start, length )]
    SELECT SUBSTRING('abcdef', 4, 3);
   -- ## OUTPUT -- def ##--
   
 --[RUGHT( string, n )]
    SELECT RIGHT('abcde', 3);           
-- ## OUTPUT -- cde ##--
   
 ---[LEFT( string, n )]
    SELECT LEFT('abcde', 3);            
-- ## OUTPUT -- abc ##--
   
 --[LEN( string );]
    SELECT LEN('abcde');              
  -- ## OUTPUT -- 5 ##--
   
 --[CHARINDEX( substring, string [, start_pos] )]
    SELECT CHARINDEX('-','abcdef ghi-jk');   
-- ## OUTPUT -- 11 ##--
   
 --[PATINDEX( pattern, string )]
    SELECT PATINDEX('%[0-9]%', 'abcdfe124563efgh');   
-- ## OUTPUT -- 7 ##--
   
 --[REPLACE( string, substring1, substring2 )]
    SELECT REPLACE('1*3 2*87', '*', '-');           
-- ## OUTPUT -- 1-3 2-87 ##--
   
 --[REPLICATE( string, n )]
    SELECT REPLICATE('abcdef', 2);                
-- ## OUTPUT -- abcdefabcdef ##--
   
 --(The STUFF function allows you to remove a substring from a string
 -- and insert a new substring)
 -- [STUFF( string, pos, delete length, inserting string )]
    SELECT STUFF('tabc', 2, 3, 'his');    
-- ## OUTPUT -- this ##--
   
-- [UPPER( string ), LOWER( string )]
    SELECT UPPER('This is a BOOK');       
-- ## OUTPUT -- THIS IS A BOOK ##--
    SELECT LOWER('This is a BOOK');        
-- ## OUTPUT -- this is a book ##--
   
 --RTRIM( string ), LTRIM( string )
    SELECT LTRIM(' abc');                  
-- ## OUTPUT -- abc ##--
    SELECT RTRIM('abc ');
   
 -- [The LIKE predicate]
    SELECT NAME FROM TBLNAME WHERE NAME LIKE '_d%'  

 -- ## OUTPUT --    Will return names where second character will be d ##-- 
    SELECT NAME FROM TBLNAME WHERE NAME LIKE '[ABC]%'
 
-- ## OUTPUT -- Return the names where starting characters will be A,B or C  ##-- 
    SELECT NAME FROM TBLNAME WHERE NAME LIKE '[A-F]%' 
  
-- ## OUTPUT -- Return the names where starting characters will be A to F  ##-- 
    SELECT NAME FROM TBLNAME WHERE NAME LIKE '[^A-F]%'
-- ## OUTPUT -- Return the names where starting characters will not from A to F  ##--