آموزش sql

آموزش دستورات SQL Server

توسط admin | گروه SQL Server | 1402/09/27

نظرات 0

آموزش دستورات SQL Server به همراه مثالهای ساده و کاربردی 

 

CREATE DATABASE:

-- ایجاد پایگاه داده با نام MyDatabase

CREATE DATABASE MyDatabase;

 

CREATE TABLE:

-- ایجاد جدول Employees با ستونهای مشخص شده

CREATE TABLE Employees (

EmployeeID INT PRIMARY KEY,

FirstName VARCHAR(50),

LastName VARCHAR(50),

DepartmentID INT

);

 

ALTER TABLE:

-- اضافه کردن ستون Salary به جدول Employees

ALTER TABLE Employees

ADD Salary DECIMAL(10, 2);

 

DROP TABLE:

-- حذف جدول Employees

DROP TABLE Employees;

 

INSERT INTO:

-- وارد کردن یک رکورد به جدول Employees

INSERT INTO Employees (EmployeeID, FirstName, LastName, DepartmentID)

VALUES (1, 'John', 'Doe', 101);

 

UPDATE:

-- بهروزرسانی مقدار Salary برای رکورد با EmployeeID برابر با 1

UPDATE Employees

SET Salary = 50000

WHERE EmployeeID = 1;

 

DELETE FROM:

-- حذف رکورد با EmployeeID برابر با 1 از جدول Employees

DELETE FROM Employees

WHERE EmployeeID = 1;

 

SELECT:

-- بازیابی تمامی اطلاعات از جدول Employees

SELECT * FROM Employees;

 

DISTINCT:

-- بازیابی مقادیر منحصر به فرد در ستون DepartmentID از جدول Employees

SELECT DISTINCT DepartmentID

FROM Employees;

 

WHERE:

-- بازیابی تمامی اطلاعات از جدول Employees که DepartmentID برابر با 101 است

SELECT * FROM Employees

WHERE DepartmentID = 101;

 

ORDER BY:

-- بازیابی تمامی اطلاعات از جدول Employees مرتب شده بر اساس ستون LastName

SELECT * FROM Employees

ORDER BY LastName;

 

GROUP BY:

-- گروهبندی اطلاعات بر اساس DepartmentID و شمارش تعداد کارکنان در هر دپارتمان

SELECT DepartmentID, COUNT(*)

FROM Employees

GROUP BY DepartmentID;

 

HAVING:

-- گروهبندی اطلاعات بر اساس DepartmentID و فیلتر بر اساس تعداد کارکنان بیشتر از 5

SELECT DepartmentID, COUNT()

FROM Employees

GROUP BY DepartmentID

HAVING COUNT() > 5;

 

INNER JOIN:

-- انجام INNER JOIN بین جدولهای Employees و Departments

SELECT e.FirstName, e.LastName, d.DepartmentName

FROM Employees e

INNER JOIN Departments d ON e.DepartmentID = d.DepartmentID;

 

LEFT JOIN:

-- انجام LEFT JOIN بین جدولهای Employees و Departments

SELECT e.FirstName, e.LastName, d.DepartmentName

FROM Employees e

LEFT JOIN Departments d ON e.DepartmentID = d.DepartmentID;

 

RIGHT JOIN:

-- انجام RIGHT JOIN بین جدولهای Employees و Departments

SELECT e.FirstName, e.LastName, d.DepartmentName

FROM Employees e

RIGHT JOIN Departments d ON e.DepartmentID = d.DepartmentID;

 

FULL JOIN:

-- انجام FULL JOIN بین جدولهای Employees و Departments

SELECT e.FirstName, e.LastName, d.DepartmentName

FROM Employees e

FULL JOIN Departments d ON e.DepartmentID = d.DepartmentID;

 

UNION:

-- اجتماع دو نتیجه مشابه از دو کوئری متفاوت

SELECT FirstName, LastName

FROM Employees

UNION

SELECT ManagerFirstName, ManagerLastName

FROM Managers;

 

UNION ALL:

-- اجتماع همه نتایج تکراری یکسان از دو کوئری متفاوت

SELECT FirstName, LastName

FROM Employees

UNION ALL

SELECT ManagerFirstName, ManagerLastName

FROM Managers;

 

EXISTS:

-- بازیابی تمامی اطلاعات از جدول Employees که در جدول Managers هم وجود دارند

SELECT *

FROM Employees e

WHERE EXISTS (SELECT * FROM Managers m WHERE e.EmployeeID = m.EmployeeID);

 

NOT EXISTS:

-- بازیابی تمامی اطلاعات از جدول Employees که در جدول Managers وجود ندارند

SELECT *

FROM Employees e

WHERE NOT EXISTS (SELECT * FROM Managers m WHERE e.EmployeeID = m.EmployeeID);

 

IN:

-- بازیابی تمامی اطلاعات از جدول Employees که در دپارتمانهای 101 و 102 هستند

SELECT *

FROM Employees

WHERE DepartmentID IN (101, 102);

 

NOT IN:

-- بازیابی تمامی اطلاعات از جدول Employees که در دپارتمانهای 101 و 102 نیستند

SELECT *

FROM Employees

WHERE DepartmentID NOT IN (101, 102);

 

BETWEEN:

-- بازیابی تمامی اطلاعات از جدول Orders که تاریخ سفارش در بازه زمانی مشخص است

SELECT *

FROM Orders

WHERE OrderDate BETWEEN '2022-01-01' AND '2022-01-31';

 

LIKE:

-- بازیابی تمامی اطلاعات از جدول Products که نام محصول با 'App' شروع میشود

SELECT *

FROM Products

WHERE ProductName LIKE 'App%';

 

IS NULL:

-- بازیابی تمامی اطلاعات از جدول Customers که ایمیل نال است

SELECT *

FROM Customers

WHERE Email IS NULL;

 

IS NOT NULL:

-- بازیابی تمامی اطلاعات از جدول Customers که ایمیل نال نیست

SELECT *

FROM Customers

WHERE Email IS NOT NULL;

 

AVG():

-- بازیابی میانگین مقدار Salary از جدول Employees

SELECT AVG(Salary)

FROM Employees;

 

SUM():

-- بازیابی جمع مقدار Salary از جدول Employees

SELECT SUM(Salary)

FROM Employees;

 

COUNT():

-- بازیابی تعداد کل رکوردها از جدول Employees

SELECT COUNT(*)

FROM Employees;

 

MAX():

-- بازیابی حداکثر مقدار Salary از جدول Employees

SELECT MAX(Salary)

FROM Employees;

 

MIN():

-- بازیابی حداقل مقدار Salary از جدول Employees

SELECT MIN(Salary)

FROM Employees;

 

GROUP_CONCAT():

-- بازیابی ترکیبی از مقادیر LastName بر اساس DepartmentID از جدول Employees

SELECT DepartmentID, GROUP_CONCAT(LastName)

FROM Employees

GROUP BY DepartmentID;

 

CASE WHEN:

-- بازیابی نام و نسبت حقوقی بر اساس مقدار Salary از جدول Employees

SELECT FirstName,

CASE WHEN Salary > 50000 THEN 'High'

WHEN Salary > 30000 THEN 'Medium'

ELSE 'Low'

END AS SalaryLevel

FROM Employees;

 

DATEPART():

-- بازیابی سال و ماه سفارش و تعداد کل سفارشات از جدول Orders

SELECT DATEPART(YEAR, OrderDate) AS OrderYear,

DATEPART(MONTH, OrderDate) AS OrderMonth,

COUNT(*) AS TotalOrders

FROM Orders

GROUP BY DATEPART(YEAR, OrderDate), DATEPART(MONTH, OrderDate);

 

DATEDIFF():

-- بازیابی تعداد روز بین تاریخ سفارش و تاریخ ارسال از جدول Orders

SELECT DATEDIFF(DAY, OrderDate, ShippedDate) AS DaysToShip

FROM Orders;

 

DATEADD():

-- بازیابی تاریخ پایان دوره آزمایشی 3 ماهه بعد از تاریخ استخدام از جدول Employees

SELECT DATEADD(MONTH, 3, HireDate) AS ProbationEndDate

FROM Employees;

 

UPPER():

-- بازیابی نام خانوادگی با حروف بزرگ از جدول Employees

SELECT UPPER(LastName)

FROM Employees;

 

LOWER():

-- بازیابی نام خانوادگی با حروف کوچک از جدول Employees

SELECT LOWER(LastName)

FROM Employees;

 

LEFT():

-- بازیابی سه حرف اول از نام از جدول Employees

SELECT LEFT(FirstName, 3)

FROM Employees;

 

RIGHT():

-- بازیابی سه حرف آخر از نام خانوادگی از جدول Employees

SELECT RIGHT(LastName, 3)

FROM Employees;

 

LEN():

-- بازیابی طول نام از جدول Employees

SELECT LEN(FirstName) AS FirstNameLength

FROM Employees;

 

ROUND():

-- بازیابی مقدار Salary با دو رقم اعشار گرد شده از جدول Employees

SELECT ROUND(Salary, 2) AS RoundedSalary

FROM Employees;

 

CAST():

-- بازیابی مقدار Salary به صورت عدد صحیح از جدول Employees

SELECT CAST(Salary AS INT) AS RoundedSalary

FROM Employees;

 

CONVERT():

-- بازیابی تاریخ استخدام با فرمت مشخص از جدول Employees

SELECT CONVERT(VARCHAR(10), HireDate, 101) AS FormattedHireDate

FROM Employees;

 

COALESCE():

-- بازیابی نام مدیر یا عبارت 'No Manager' از جدول Employees

SELECT COALESCE(ManagerFirstName, 'No Manager') AS ManagerName

FROM Employees;

 

NULLIF():

-- بازیابی نام مدیر یا NULL از جدول Employees

SELECT NULLIF(ManagerFirstName, '') AS ManagerName

FROM Employees;

 

TOP():

-- بازیابی اولین 10 رکورد از جدول Products

SELECT TOP 10 *

FROM Products;

 

ROW_NUMBER():

-- بازیابی شماره ردیف بر اساس ترتیب نام خانوادگی از جدول Employees

SELECT ROW_NUMBER() OVER (ORDER BY LastName) AS RowNumber,

FirstName,

LastName

FROM Employees;

 

RANK():

-- بازیابی رتبه بر اساس مقدار Salary به صورت نزولی از جدول Employees

SELECT RANK() OVER (ORDER BY Salary DESC) AS Rank,

FirstName,

LastName,

Salary

FROM Employees;

 

DENSE_RANK():

-- بازیابی رتبه بر اساس مقدار Salary به صورت نزولی بدون انقضاء از جدول Employees

SELECT DENSE_RANK() OVER (ORDER BY Salary DESC) AS DenseRank,

FirstName,

LastName,

Salary

FROM Employees;

 

NTILE():

-- بازیابی کوارتیل بر اساس مقدار Salary به صورت نزولی از جدول Employees

SELECT NTILE(4) OVER (ORDER BY Salary DESC) AS Quartile,

FirstName,

LastName,

Salary

FROM Employees;

 

CTE (Common Table Expression):

-- استفاده از CTE برای بازیابی اطلاعات با رتبه بالا از جدول Employees

WITH EmployeeCTE AS (

SELECT EmployeeID, FirstName, LastName, Salary,

ROW_NUMBER() OVER (ORDER BY Salary DESC) AS RowNumber

FROM Employees

)

SELECT EmployeeID, FirstName, LastName, Salary

FROM EmployeeCTE

WHERE RowNumber <= 10;

 

INDEXES:

-- ایجاد یک شاخص (اندیس) بر روی ستون DepartmentID در جدول Employees

CREATE INDEX IX_DepartmentID ON Employees(DepartmentID);

 

TRIGGERS:

-- ایجاد یک تریگر پس از وارد کردن اطلاعات جدید در جدول Employees

CREATE TRIGGER trgAfterInsertEmployee

ON Employees

AFTER INSERT

AS

BEGIN

-- منطق تریگر در اینجا

END;

 

STORED PROCEDURES:

-- ایجاد یک فرآیند ذخیره شده برای بازیابی اطلاعات کارمند با توجه به شناسه کارمند

CREATE PROCEDURE spGetEmployeeByID @EmployeeID INT

AS

BEGIN

-- منطق فرآیند در اینجا

END;

 

VIEWS:

-- ایجاد یک نمایش با نام vwHighSalaryEmployees برای نمایش اطلاعات کارمندان با حقوق بالای 50000

CREATE VIEW vwHighSalaryEmployees AS

SELECT FirstName, LastName, Salary

FROM Employees

WHERE Salary > 50000;

 

TRANSACTIONS:

-- شروع یک تراکنش SQL

BEGIN TRANSACTION;

-- دستورات SQL در اینجا

 

JOINS with USING clause:

-- استفاده از عبارت JOIN با استفاده از USING برای اتصال جدولهای Employees و Departments

SELECT e.FirstName, e.LastName, d.DepartmentName

FROM Employees e

JOIN Departments d USING (DepartmentID);

 

GRANT PERMISSIONS:

-- اختصاص مجوز SELECT به کاربر با نام user1 بر روی جدول Employees

GRANT SELECT ON Employees TO user1;

 

0 نظر

نظر محترم شما در مورد مقاله های وب سایت برنامه نویسی و پایگاه داده

نظرات محترم شما در خدمات رسانی بهتر ما را یاری می نمایند. لطفا اگر مایل بودید یک نظر ما را مهمان فرمائید. آدرس ایمیل و وب سایت شما نمایش داده نخواهد شد.

حرف 500 حداکثر