مقدمهای بر زبان پرسوجوی SQL
اگر به دنبال مقالهای برای یادگیری زبان پرسوجوی SQL بر روی SQL Server از صفر هستید، به جای درستی آمدهاید. SQL یک زبان پرکاربرد برای مدیریت و دستکاری پایگاههای داده رابطهای است. این مقاله قصد دارد راهنمایی جامع برای درک و استفاده از SQL، با تمرکز بر SQL Server، ارائه دهد.
ما مفاهیم اساسی، انواع داده، عملگرها، کلمات کلیدی و دستورات بنیادی SQL (DDL و DML) را با مثالهای عملی پوشش خواهیم داد.
انواع داده SQL
SQL Server از انواع داده مختلفی برای ذخیره اطلاعات گوناگون پشتیبانی میکند. در اینجا برخی از پرکاربردترین آنها آورده شده است:
- INT: برای اعداد صحیح.
- DECIMAL(p, s): برای مقادیر عددی دقیق با دقت (p) و مقیاس (s) مشخص.
- VARCHAR(n): برای دادههای رشتهای با طول متغیر و حداکثر طول n.
- NVARCHAR(n): مشابه VARCHAR است اما دادههای یونیکد را ذخیره میکند.
- DATE: تاریخها را ذخیره میکند.
- DATETIME: تاریخ و زمان را ذخیره میکند.
- BIT: مقادیر بولی (0 یا 1) را ذخیره میکند.
عملگرهای SQL
عملگرهای SQL برای تعیین شرط در عبارات SQL و ترکیب چندین شرط استفاده میشوند. عملگرهای رایج عبارتند از:
- عملگرهای ریاضی:
+
,-
,*
,/
,%
- عملگرهای مقایسهای:
=
,!=
(یا<>
),>
,<
,>=
,<=
- عملگرهای منطقی:
AND
,OR
,NOT
,IN
,BETWEEN
,LIKE
کلمات کلیدی SQL
کلمات کلیدی SQL کلمات رزرو شدهای هستند که معنای خاصی در SQL دارند. برخی از آنها عبارتند از:
SELECT
FROM
WHERE
INSERT
UPDATE
DELETE
CREATE
ALTER
DROP
JOIN
GROUP BY
ORDER BY
دستورات SQL (DDL و DML)
دستورات SQL به دو دسته زبان تعریف داده (DDL) و زبان دستکاری داده (DML) تقسیم میشوند.
CREATE DATABASE
این دستور DDL برای ایجاد یک پایگاه داده جدید استفاده میشود. به عنوان مثال، برای ایجاد یک پایگاه داده به نام MyNewDatabase
:
CREATE DATABASE MyNewDatabase;
CREATE TABLE
این دستور DDL برای ایجاد یک جدول جدید در یک پایگاه داده استفاده میشود. شما نام ستونها، انواع داده آنها و محدودیتها را تعریف میکنید. به عنوان مثال، ایجاد جدول Students
:
CREATE TABLE Students (
StudentID INT PRIMARY KEY IDENTITY(1,1),
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL,
DateOfBirth DATE,
Email VARCHAR(100) UNIQUE
);
در این مثال، StudentID
یک کلید اصلی از نوع عدد صحیح با خاصیت IDENTITY
است که به طور خودکار از 1 شروع شده و با گام 1 افزایش مییابد. ستونهای FirstName
و LastName
نمیتوانند NULL باشند. Email
نیز باید منحصر به فرد باشد.
INSERT INTO
این دستور DML ردیفهای جدیدی از داده را به یک جدول اضافه میکند. برای درج یک دانشجوی جدید در جدول Students
:
INSERT INTO Students (FirstName, LastName, DateOfBirth, Email)
VALUES ('Ali', 'Karimi', '2000-01-15', 'ali.karimi@example.com');
SELECT
رایجترین دستور DML که برای بازیابی دادهها از یک یا چند جدول استفاده میشود.
SELECT پایه: برای بازیابی تمام ستونها و تمام ردیفها از جدول Students
:
SELECT * FROM Students;
SELECT با ستونهای مشخص: برای بازیابی فقط FirstName
و LastName
:
SELECT FirstName, LastName FROM Students;
بند WHERE: برای فیلتر کردن رکوردها بر اساس یک شرط مشخص استفاده میشود. برای انتخاب دانشجویانی که بعد از سال 2000 متولد شدهاند:
SELECT * FROM Students WHERE DateOfBirth > '2000-12-31';
بند ORDER BY: برای مرتبسازی مجموعه نتایج استفاده میشود. برای مرتبسازی دانشجویان بر اساس LastName
به ترتیب صعودی:
SELECT * FROM Students ORDER BY LastName ASC;
بند GROUP BY: ردیفهایی که مقادیر یکسانی در ستونهای مشخص شده دارند را در یک ردیف خلاصه گروهبندی میکند. اغلب با توابع تجمیعی (مانند COUNT, SUM, AVG) استفاده میشود.
JOIN ها: برای ترکیب ردیفها از دو یا چند جدول بر اساس یک ستون مرتبط بین آنها استفاده میشوند.
ابتدا، بیایید یک جدول دیگر به نام Courses
ایجاد کنیم:
CREATE TABLE Courses (
CourseID INT PRIMARY KEY IDENTITY(1,1),
CourseName VARCHAR(100) NOT NULL,
Credits INT
);
سپس، مقداری داده درج کنید:
INSERT INTO Courses (CourseName, Credits)
VALUES ('Database Management', 3), ('Programming Fundamentals', 4);
اکنون، بیایید یک جدول StudentCourses
برای پیوند دادن دانشجویان به دروس ایجاد کنیم:
CREATE TABLE StudentCourses (
StudentID INT FOREIGN KEY REFERENCES Students(StudentID),
CourseID INT FOREIGN KEY REFERENCES Courses(CourseID),
EnrollmentDate DATE,
PRIMARY KEY (StudentID, CourseID)
);
دادهها را در StudentCourses
درج کنید:
INSERT INTO StudentCourses (StudentID, CourseID, EnrollmentDate)
VALUES (1, 1, '2023-09-01'), (1, 2, '2023-09-01');
INNER JOIN: زمانی که تطابق در هر دو جدول وجود دارد، ردیفها را برمیگرداند. برای دریافت نام دانشجویان و دروس ثبتنام شده آنها:
SELECT
S.FirstName,
S.LastName,
C.CourseName
FROM
Students S
INNER JOIN
StudentCourses SC ON S.StudentID = SC.StudentID
INNER JOIN
Courses C ON SC.CourseID = C.CourseID;
UPDATE
این دستور DML رکوردهای موجود در یک جدول را تغییر میدهد. برای بهروزرسانی ایمیل علی کریمی:
UPDATE Students
SET Email = 'ali.karimi.new@example.com'
WHERE FirstName = 'Ali' AND LastName = 'Karimi';
DELETE
این دستور DML رکوردهای موجود را از یک جدول حذف میکند. برای حذف دانشجوی علی کریمی:
DELETE FROM Students
WHERE FirstName = 'Ali' AND LastName = 'Karimi';
DROP TABLE
این دستور DDL برای حذف یک جدول موجود در پایگاه داده استفاده میشود. مراقب باشید، زیرا این عملیات جدول و تمام دادههای آن را به طور دائمی حذف میکند. برای حذف جدول StudentCourses
:
DROP TABLE StudentCourses;