آموزش sql server 2005. مروری بر دستورات پرس و جوهای انتخاب tsql
TRANSCRIPT
SQL Server 2005آموزش
مروری بر دستورات پرس و جوهای انتخاب
TSQL
TSQLچندین نمونه از دستورات
Use NorthwindGO
SELECT FirstName, LastName FROM dbo.Employees;
SELECT * FROM dbo.Employees;
--Concatenating
SELECT LastName + ', ' + FirstName FROM
dbo.Employees;
TSQLچندین نمونه از دستورات
-- Aliasing column names
SELECT LastName + ‘ , ‘ + FirstName AS [Full Name]
FROM dbo.Employees;
TSQLچندین نمونه از دستورات
-- AS is optional
SELECT LastName + ', ' + FirstName FullName
FROM dbo.Employees;
-- Another aliasing option
SELECT FullName = LastName + ', ' + FirstName
FROM dbo.Employees;
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;
TSQLچندین نمونه از دستورات
--WHERE
SELECT CompanyName, City
FROM dbo.Customers
WHERE City = 'Paris';
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%';
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]';
TSQLچندین نمونه از دستورات
SELECT CustomerID
FROM dbo.Customers
WHERE CustomerID LIKE 'FRAN[A-S]';
SELECT CustomerID
FROM dbo.Customers
WHERE CustomerID LIKE 'FRAN[^R]';
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;
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%';
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';
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);
TSQLچندین نمونه از دستورات
--ORDER BY
SELECT LastName, City
FROM dbo.Employees
ORDER BY City;
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;
TSQLچندین نمونه از دستورات
--Sorting on an expression
SELECT LastName
FROM dbo.Employees
ORDER BY LEN(LastName);
TSQLچندین نمونه از دستورات
--Counting rows
SELECT COUNT(*) AS تعداد
FROM dbo.Employees;
TSQLچندین نمونه از دستورات
--Counting values in a column
SELECT COUNT(*) AS NumEmployees,
COUNT(Region) AS NumRegion
FROM dbo.Employees;
TSQLچندین نمونه از دستورات
--Counting with WHERE
SELECT COUNT(*) AS NumEmployeeSeattle
FROM dbo.Employees
WHERE City = 'Seattle';
TSQLچندین نمونه از دستورات
--Gives an error (no grouping)
SELECT City, COUNT(*) AS NumEmployees
FROM dbo.Employees;
TSQLچندین نمونه از دستورات
--Using Grouping
SELECT City, COUNT(*) AS NumEmployees
FROM dbo.Employees
GROUP BY City;
TSQLچندین نمونه از دستورات
--ORDER BY with GROUP BY
SELECT City, COUNT(*) AS NumEmployees
FROM dbo.Employees
GROUP BY City
ORDER BY COUNT(*) DESC, City;
TSQLچندین نمونه از دستورات
--HAVING
SELECT City, COUNT(*) AS NumEmployees
FROM dbo.Employees
GROUP BY City
HAVING COUNT(*) > 1
ORDER BY NumEmployees DESC, City;
TSQL --TOPچندین نمونه از دستورات
SELECT TOP 3
City, COUNT(*) AS NumEmployees
FROM dbo.Employees
GROUP BY City
ORDER BY COUNT(*) DESC;
TSQLچندین نمونه از دستورات
--TOP WITH TIESSELECT TOP 3 WITH TIES
City, COUNT(*) AS NumEmployees
FROM dbo.Employees
GROUP BY City
ORDER BY COUNT(*) DESC;
TSQLچندین نمونه از دستورات
--TOP WITH PERCENTSELECT TOP 25 PERCENT WITH TIES
City, COUNT(*) AS NumEmployees
FROM dbo.Employees
GROUP BY City
ORDER BY COUNT(*) DESC;
TSQLچندین نمونه از دستورات
--A Cartesian Product
SELECT ProductName, CategoryName
FROM dbo.Products, dbo.Categories;
TSQLچندین نمونه از دستورات
SELECT ProductName, CategoryName
FROM dbo.Products CROSS JOIN dbo.Categories;
TSQLچندین نمونه از دستورات
--Joining in the WHERE clause
SELECT ProductName, CategoryName
FROM dbo.Products, dbo.Categories
WHERE dbo.Products.CategoryID =
dbo.Categories.CategoryID;
TSQLچندین نمونه از دستورات
--Using JOIN
SELECT dbo.Products.ProductName,
dbo.Categories.CategoryName
FROM dbo.Products JOIN dbo.Categories
ON dbo.Products.CategoryID = dbo.Categories.CategoryID;
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;
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;
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;
خروجی دستور
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;
خروجی دستور
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;
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;
: Contactترکیب ستون های نام و نام خانوادگی از جدول
الحاق ستون های FirstName و LastName با عالمت+
اختصاص دادن یک Alias Name با استفاده از کلمه کلیدیAS
مرتب سازی رکوردهای به صورت الفبایی بر اساس نام با استفاده از
:ORDER BYدستور
کردن ستون ها هیچ تغییری در ساختار بانک اطالعاتی اتفاق الحاق با **
نمی افتد.
Concatenationاتصال اطالعات ستونها به یکدیگر
ایجاد و مدیریت روالهای ذخیره شده
Stored Procedures
آشنایی با پروسیجرهای ذخیره شده
هر پروسیجر ذخیره شده ، مجموعه ای از دستورات است که به جای اجرا در
کامپیوتر سرویس گیرنده در سروری که بانک اطالعاتی روی آن قرار دارد
اجرا میشود.
مزایای استفاده از پروسیجرهای ذخیره شده:
برنامه نویسی ماژوالر
دسترسی محدود و تابعی به جداول
کاهش ترافیک شبکه
اجرای سریع
کاهش اشتباهات برنامه نویسی
آشنایی با ایجاد یک پروسیجر ذخیره شده ساده
CREATE PROCEDURE [dbo].[GetAllConcat]ASBEGIN
SET NOCOUNT ON;SELECT * FROM [AdventureWorks].[Person].
[Contact];ENDGO
آشنایی با اجرای یک پروسیجر ذخیره شده ساده
Stored Proceduresایجاد و مدیریت
CREATE PROCEDURE dbo.ListEmployees
AS
Begin
SET NOCOUNT ON
SELECT EmployeeID, LastName, FirstName
FROM dbo.Employees;
End
Stored Proceduresایجاد و مدیریت
EXECUTE dbo.ListEmployees;
EXEC dbo.ListEmployees;
Stored Proceduresایجاد و مدیریت
CREATE PROC dbo.ListEmployeesByCity
@City varchar(25)
AS
SET NOCOUNT ON
SELECT LastName, FirstName, City
FROM dbo.Employees
WHERE City = @City;
Stored Proceduresایجاد و مدیریت
EXEC dbo.ListEmployeesByCity @City = 'London';
EXEC dbo.ListEmployeesByCity 'London';
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;
Stored Proceduresایجاد و مدیریت
-- Lists employees in London
EXEC dbo.ListEmployeesOptionalCity @City = 'London';
-- Lists all employees
EXEC dbo.ListEmployeesOptionalCity;
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
Stored Proceduresایجاد و مدیریت
DECLARE @NewShipperID int
EXEC dbo.InsertShipper
@CompanyName = ‘Fantazio',
@Phone = NULL,
@ShipperID = @NewShipperID OUTPUT;
SELECT @NewShipperID AS ShipperID;
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ایجاد و مدیریت
Stored Proceduresایجاد و مدیریت
DECLARE @NewShipperID int;
EXEC @NewShipperID = dbo.InsertShipperReturn
@CompanyName = ‘Fantazio',
@Phone = NULL;
SELECT @NewShipperID AS ShipperID;
Stored Proceduresویرایش و حذف
-- ALTER کلیدی کلمه با شده ذخیره روالهای ویرایش
ALTER PROCEDURE dbo.ListEmployees
AS
SET NOCOUNT ON
SELECT EmployeeID, LastName, FirstName
FROM dbo.Employees;
-- DROP کلیدی کلمه با شده ذخیره روالهای حذف
DROP PROC dbo.ListEmployees
نماها
Views
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;
Viewsایجاد و مدیریت
SELECT * FROM dbo.vwEmployeeAddressLabels;
Viewsویرایش و حذف
-- ALTER کلیدی کلمه نماهابا ویرایش
ALTER VIEW dbo.ListEmployees
SELECT EmployeeID, LastName, FirstName
FROM dbo.Employees;
-- DROP کلیدی کلمه با نماها حذف
DROP VIEW dbo.ListEmployees
موفق باشید