آموزش SQL Server 2005
مروری بر دستورات پرس و جوهای انتخاب TSQL
چندین نمونه از دستورات TSQL Use Northwind GO 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
چندین نمونه از دستورات 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 CompanyName FROM dbo.Customers WHERE CompanyName LIKE 'S%'; WHERE CompanyName LIKE '%S'; WHERE CompanyName LIKE '%S%';
چندین نمونه از دستورات TSQL --Matching single characters SELECT CustomerID FROM dbo.Customers WHERE CustomerID LIKE 'B___P'; --Matching from a list WHERE CustomerID LIKE 'FRAN[RK]';
چندین نمونه از دستورات TSQL SELECT CustomerID FROM dbo.Customers WHERE CustomerID LIKE 'FRAN[A-S]'; 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 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 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 WHERE LastName LIKE '%S%' AND City NOT LIKE 'Seattle';
چندین نمونه از دستورات TSQL --IN SELECT CustomerID, Country FROM dbo.Customers WHERE Country IN ('France', 'Spain'); --IN with a subquery SELECT CustomerID 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 order SELECT LastName, City FROM dbo.Employees ORDER BY City DESC; --Sorting on multiple columns 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 TIES SELECT TOP 3 WITH TIES City, COUNT(*) AS NumEmployees FROM dbo.Employees GROUP BY City ORDER BY COUNT(*) DESC;
چندین نمونه از دستورات TSQL --TOP WITH PERCENT SELECT 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;
اتصال اطلاعات ستونها به یکدیگرConcatenation ترکیب ستون های نام و نام خانوادگی از جدول Contact : الحاق ستون های FirstName و LastName با علامت + اختصاص دادن یک Alias Name با استفاده از کلمه کلیدی AS مرتب سازی رکوردهای به صورت الفبایی بر اساس نام با استفاده از دستور ORDER BY: ** با الحاق کردن ستون ها هیچ تغییری در ساختار بانک اطلاعاتی اتفاق نمی افتد.
ایجاد و مدیریت روالهای ذخیره شده Stored Procedures
آشنایی با پروسیجرهای ذخیره شده هر پروسیجر ذخیره شده ، مجموعه ای از دستورات است که به جای اجرا در کامپیوتر سرویس گیرنده در سروری که بانک اطلاعاتی روی آن قرار دارد اجرا میشود. مزایای استفاده از پروسیجرهای ذخیره شده: برنامه نویسی ماژولار دسترسی محدود و تابعی به جداول کاهش ترافیک شبکه اجرای سریع کاهش اشتباهات برنامه نویسی
آشنایی با ایجاد یک پروسیجر ذخیره شده ساده CREATE PROCEDURE [dbo].[GetAllConcat] AS BEGIN SET NOCOUNT ON; SELECT * FROM [AdventureWorks].[Person].[Contact]; END GO
آشنایی با اجرای یک پروسیجر ذخیره شده ساده
ایجاد و مدیریت 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 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;
ایجاد و مدیریت Stored Procedures CREATE PROC dbo.InsertShipperReturn @CompanyName nvarchar(40) = NULL, @Phone nvarchar(24) = NULL AS SET 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 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.vwEmployeeAddressLabels AS SELECT 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 Address FROM 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
موفق باشید