آموزش sql server 2005. مروری بر دستورات پرس و جوهای انتخاب tsql

60
ش وز م آSQL Server 2005

Upload: wendy-breakey

Post on 29-Mar-2015

237 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

SQL Server 2005آموزش

Page 2: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

مروری بر دستورات پرس و جوهای انتخاب

TSQL

Page 3: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

Use NorthwindGO

SELECT FirstName, LastName FROM dbo.Employees;

SELECT * FROM dbo.Employees;

--Concatenating

SELECT LastName + ', ' + FirstName FROM

dbo.Employees;

Page 4: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

-- Aliasing column names

SELECT LastName + ‘ , ‘ + FirstName AS [Full Name]

FROM dbo.Employees;

Page 5: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

-- AS is optional

SELECT LastName + ', ' + FirstName FullName

FROM dbo.Employees;

-- Another aliasing option

SELECT FullName = LastName + ', ' + FirstName

FROM dbo.Employees;

Page 6: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

-- This is deprecated:

SELECT 'FullName' = LastName + ', ' +

FirstName

FROM dbo.Employees;

--SELECT and SELECT DISTINCT

SELECT Title FROM dbo.Employees;

SELECT DISTINCT Title FROM dbo.Employees;

Page 7: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--WHERE

SELECT CompanyName, City

FROM dbo.Customers

WHERE City = 'Paris';

Page 8: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--LIKE and wildcard characters

SELECT CompanyNameFROM dbo.CustomersWHERE CompanyName LIKE 'S%';

SELECT CompanyNameFROM dbo.CustomersWHERE CompanyName LIKE '%S';

SELECT CompanyNameFROM dbo.CustomersWHERE CompanyName LIKE '%S%';

Page 9: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--Matching single characters

SELECT CustomerID

FROM dbo.Customers

WHERE CustomerID LIKE 'B___P';

--Matching from a list

SELECT CustomerID

FROM dbo.Customers

WHERE CustomerID LIKE 'FRAN[RK]';

Page 10: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

SELECT CustomerID

FROM dbo.Customers

WHERE CustomerID LIKE 'FRAN[A-S]';

SELECT CustomerID

FROM dbo.Customers

WHERE CustomerID LIKE 'FRAN[^R]';

Page 11: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات --BETWEEN

SELECT LastName, FirstName, PostalCode

FROM dbo.Employees

WHERE PostalCode BETWEEN '98103' AND '98999';

--Testing for Null

SELECT LastName, FirstName, Region

FROM dbo.Employees

WHERE Region IS NULL;

Page 12: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--AND requires both conditions to be true

SELECT LastName, City, PostalCode

FROM dbo.Employees

WHERE City = 'Seattle' AND PostalCode LIKE '9%';

--OR only requires one condition to be true

SELECT LastName, City, PostalCode

FROM dbo.Employees

WHERE City = 'Seattle' OR PostalCode LIKE '9%';

Page 13: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--NOT negates the expression

SELECT LastName, City, PostalCode

FROM dbo.Employees

WHERE City NOT LIKE 'Seattle';

--Operator Precedence: NOT, AND, OR

SELECT LastName, FirstName, City

FROM dbo.Employees

WHERE LastName LIKE '%S%'

AND City NOT LIKE 'Seattle';

Page 14: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات --INSELECT CustomerID, Country

FROM dbo.Customers

WHERE Country IN ('France', 'Spain');

--IN with a subquerySELECT CustomerID

FROM dbo.Customers

WHERE CustomerID NOT IN(SELECT CustomerID

FROM dbo.Orders);

Page 15: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--ORDER BY

SELECT LastName, City

FROM dbo.Employees

ORDER BY City;

Page 16: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--Sorting in descending orderSELECT LastName, City

FROM dbo.Employees

ORDER BY City DESC;

--Sorting on multiple columnsSELECT LastName, City

FROM dbo.Employees

ORDER BY City DESC, LastName ASC;

Page 17: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--Sorting on an expression

SELECT LastName

FROM dbo.Employees

ORDER BY LEN(LastName);

Page 18: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--Counting rows

SELECT COUNT(*) AS تعداد

FROM dbo.Employees;

Page 19: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--Counting values in a column

SELECT COUNT(*) AS NumEmployees,

COUNT(Region) AS NumRegion

FROM dbo.Employees;

Page 20: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--Counting with WHERE

SELECT COUNT(*) AS NumEmployeeSeattle

FROM dbo.Employees

WHERE City = 'Seattle';

Page 21: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--Gives an error (no grouping)

SELECT City, COUNT(*) AS NumEmployees

FROM dbo.Employees;

Page 22: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--Using Grouping

SELECT City, COUNT(*) AS NumEmployees

FROM dbo.Employees

GROUP BY City;

Page 23: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--ORDER BY with GROUP BY

SELECT City, COUNT(*) AS NumEmployees

FROM dbo.Employees

GROUP BY City

ORDER BY COUNT(*) DESC, City;

Page 24: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--HAVING

SELECT City, COUNT(*) AS NumEmployees

FROM dbo.Employees

GROUP BY City

HAVING COUNT(*) > 1

ORDER BY NumEmployees DESC, City;

Page 25: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQL --TOPچندین نمونه از دستورات

SELECT TOP 3

City, COUNT(*) AS NumEmployees

FROM dbo.Employees

GROUP BY City

ORDER BY COUNT(*) DESC;

Page 26: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--TOP WITH TIESSELECT TOP 3 WITH TIES

City, COUNT(*) AS NumEmployees

FROM dbo.Employees

GROUP BY City

ORDER BY COUNT(*) DESC;

Page 27: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--TOP WITH PERCENTSELECT TOP 25 PERCENT WITH TIES

City, COUNT(*) AS NumEmployees

FROM dbo.Employees

GROUP BY City

ORDER BY COUNT(*) DESC;

Page 28: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--A Cartesian Product

SELECT ProductName, CategoryName

FROM dbo.Products, dbo.Categories;

Page 29: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

SELECT ProductName, CategoryName

FROM dbo.Products CROSS JOIN dbo.Categories;

Page 30: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--Joining in the WHERE clause

SELECT ProductName, CategoryName

FROM dbo.Products, dbo.Categories

WHERE dbo.Products.CategoryID =

dbo.Categories.CategoryID;

Page 31: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--Using JOIN

SELECT dbo.Products.ProductName,

dbo.Categories.CategoryName

FROM dbo.Products JOIN dbo.Categories

ON dbo.Products.CategoryID = dbo.Categories.CategoryID;

Page 32: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

-- save typing with table aliases

SELECT P.ProductName, C.CategoryName

FROM dbo.Products AS P JOIN dbo.Categories AS C

ON P.CategoryID = C.CategoryID;

Page 33: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--JOIN with WHERE and ORDER BY

SELECT dbo.Products.ProductName,

dbo.Categories.CategoryName,

dbo.Products.UnitPrice

FROM dbo.Products INNER JOIN dbo.Categories

ON dbo.Products.CategoryID = dbo.Categories.CategoryID

WHERE UnitPrice > 50

ORDER BY ProductName;

Page 34: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--Multiple table join

SELECT OrderID, convert(varchar(10), OrderDate,101) AS

Date,CompanyName, LastName

FROM dbo.Orders

INNER JOIN dbo.Customers

ON Orders.CustomerID = Customers.CustomerID

INNER JOIN Employees

ON Orders.EmployeeID = Employees.EmployeeID

WHERE OrderDate BETWEEN '9/1/1996' AND '9/10/1996'

ORDER BY OrderDate;

Page 35: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

خروجی دستور

Page 36: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

SELECT CompanyName,

SUM([Order Details].UnitPrice * [Order Details].Quantity)

AS TotalSold

FROM dbo.Customers INNER JOIN dbo.Orders

ON Customers.CustomerID = Orders.CustomerID

INNER JOIN [Order Details]

ON Orders.OrderID = [Order Details].OrderID

WHERE Orders.OrderDate BETWEEN '9/1/1996' AND '9/10/1996'

GROUP BY CompanyName

ORDER BY TotalSold DESC;

Page 37: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

خروجی دستور

Page 38: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--Left outer join to find unmatched values

SELECT CompanyName as [No Orders]

FROM dbo.Customers LEFT JOIN dbo.Orders

ON Customers.CustomerID = Orders.CustomerID

WHERE Orders.OrderID IS NULL

ORDER BY CompanyName;

Page 39: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

TSQLچندین نمونه از دستورات

--Right outer join to find unmatched values

SELECT CompanyName as [No Orders]

FROM dbo.Orders RIGHT JOIN dbo.Customers

ON Customers.CustomerID = Orders.CustomerID

WHERE Orders.OrderID IS NULL

ORDER BY CompanyName;

Page 40: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

: Contactترکیب ستون های نام و نام خانوادگی از جدول

الحاق ستون های FirstName و LastName با عالمت+

اختصاص دادن یک Alias Name با استفاده از کلمه کلیدیAS

مرتب سازی رکوردهای به صورت الفبایی بر اساس نام با استفاده از

:ORDER BYدستور

کردن ستون ها هیچ تغییری در ساختار بانک اطالعاتی اتفاق الحاق با **

نمی افتد.

Concatenationاتصال اطالعات ستونها به یکدیگر

Page 41: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

ایجاد و مدیریت روالهای ذخیره شده

Stored Procedures

Page 42: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

آشنایی با پروسیجرهای ذخیره شده

هر پروسیجر ذخیره شده ، مجموعه ای از دستورات است که به جای اجرا در

کامپیوتر سرویس گیرنده در سروری که بانک اطالعاتی روی آن قرار دارد

اجرا میشود.

مزایای استفاده از پروسیجرهای ذخیره شده:

برنامه نویسی ماژوالر

دسترسی محدود و تابعی به جداول

کاهش ترافیک شبکه

اجرای سریع

کاهش اشتباهات برنامه نویسی

Page 43: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

آشنایی با ایجاد یک پروسیجر ذخیره شده ساده

CREATE PROCEDURE [dbo].[GetAllConcat]ASBEGIN

SET NOCOUNT ON;SELECT * FROM [AdventureWorks].[Person].

[Contact];ENDGO

Page 44: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

آشنایی با اجرای یک پروسیجر ذخیره شده ساده

Page 45: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

Stored Proceduresایجاد و مدیریت

CREATE PROCEDURE dbo.ListEmployees

AS

Begin

SET NOCOUNT ON

SELECT EmployeeID, LastName, FirstName

FROM dbo.Employees;

End

Page 46: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

Stored Proceduresایجاد و مدیریت

EXECUTE dbo.ListEmployees;

EXEC dbo.ListEmployees;

Page 47: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

Stored Proceduresایجاد و مدیریت

CREATE PROC dbo.ListEmployeesByCity

@City varchar(25)

AS

SET NOCOUNT ON

SELECT LastName, FirstName, City

FROM dbo.Employees

WHERE City = @City;

Page 48: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

Stored Proceduresایجاد و مدیریت

EXEC dbo.ListEmployeesByCity @City = 'London';

EXEC dbo.ListEmployeesByCity 'London';

Page 49: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

Stored Proceduresایجاد و مدیریت CREATE PROC dbo.ListEmployeesOptionalCity

@City varchar(25) = NULL

AS

SET NOCOUNT ON

IF @City IS NULL

SELECT LastName, FirstName, City

FROM dbo.Employees;

ELSE

SELECT LastName, FirstName, City

FROM dbo.Employees

WHERE City = @City;

Page 50: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

Stored Proceduresایجاد و مدیریت

-- Lists employees in London

EXEC dbo.ListEmployeesOptionalCity @City = 'London';

-- Lists all employees

EXEC dbo.ListEmployeesOptionalCity;

Page 51: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

CREATE PROC dbo.InsertShipper

@CompanyName nvarchar(40) = NULL,

@Phone nvarchar(24) = NULL,

@ShipperID int = NULL OUTPUT

AS

SET NOCOUNT ON

IF @CompanyName IS NULL

SET @ShipperID = 0;

ELSE

BEGIN

INSERT INTO dbo.Shippers(CompanyName, Phone)

VALUES (@CompanyName, @Phone);

SET @ShipperID = SCOPE_IDENTITY();

END

Page 52: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

Stored Proceduresایجاد و مدیریت

DECLARE @NewShipperID int

EXEC dbo.InsertShipper

@CompanyName = ‘Fantazio',

@Phone = NULL,

@ShipperID = @NewShipperID OUTPUT;

SELECT @NewShipperID AS ShipperID;

Page 53: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

CREATE PROC dbo.InsertShipperReturn @CompanyName nvarchar(40) = NULL, @Phone nvarchar(24) = NULLASSET NOCOUNT ON IF @CompanyName IS NULL RETURN 0; ELSE BEGIN DECLARE @NewID int; INSERT INTO dbo.Shippers (CompanyName, Phone) VALUES (@CompanyName , @Phone); SET @NewID = SCOPE_IDENTITY(); RETURN @NewID END

Stored Proceduresایجاد و مدیریت

Page 54: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

Stored Proceduresایجاد و مدیریت

DECLARE @NewShipperID int;

EXEC @NewShipperID = dbo.InsertShipperReturn

@CompanyName = ‘Fantazio',

@Phone = NULL;

SELECT @NewShipperID AS ShipperID;

Page 55: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

Stored Proceduresویرایش و حذف

-- ALTER کلیدی کلمه با شده ذخیره روالهای ویرایش

ALTER PROCEDURE dbo.ListEmployees

AS

SET NOCOUNT ON

SELECT EmployeeID, LastName, FirstName

FROM dbo.Employees;

-- DROP کلیدی کلمه با شده ذخیره روالهای حذف

DROP PROC dbo.ListEmployees

Page 56: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

نماها

Views

Page 57: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

CREATE VIEW dbo.vwEmployeeAddressLabelsASSELECT FirstName + SPACE(1) + LastName +

Char(13) + Char(10) +

Address + Char(13) + Char(10) +

City +

CASE WHEN Region IS NULL THEN ' ' + PostalCode

ELSE ', ' + Region + ' ' + PostalCode

END

+ Char(13) + Char(10) + Country

AS AddressFROM dbo.Employees;

Page 58: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

Viewsایجاد و مدیریت

SELECT * FROM dbo.vwEmployeeAddressLabels;

Page 59: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

Viewsویرایش و حذف

-- ALTER کلیدی کلمه نماهابا ویرایش

ALTER VIEW dbo.ListEmployees

SELECT EmployeeID, LastName, FirstName

FROM dbo.Employees;

-- DROP کلیدی کلمه با نماها حذف

DROP VIEW dbo.ListEmployees

Page 60: آموزش SQL Server 2005. مروری بر دستورات پرس و جوهای انتخاب TSQL

موفق باشید