ionicons-v5-l
ionicons-v5-l

آموزش SQL


SQL، که مخفف "Structured Query Language" است، یک زبان برنامه‌نویسی مخصوص برای مدیریت پایگاه‌های داده‌های رابطه‌ای است. SQL به کاربران این امکان را می‌دهد که داده‌ها را از پایگاه‌های داده بازیابی، اضافه، به‌روزرسانی و حذف کنند. همچنین SQL ابزارهایی برای ایجاد و مدیریت ساختار پایگاه داده ارائه می‌دهد.

پایگاه داده (Database)

پایگاه داده (Database) یک مجموعه سازمان‌یافته از داده‌ها است که به گونه‌ای ذخیره و مدیریت می‌شود که دسترسی و بازیابی آسان آن امکان‌پذیر باشد. پایگاه‌های داده معمولاً توسط نرم‌افزارهای مدیریت پایگاه داده (DBMS) مدیریت می‌شوند و می‌توانند برای ذخیره‌سازی، جستجو و تجزیه و تحلیل انواع مختلف اطلاعات مورد استفاده قرار گیرند.

اطلاعات در پایگاه داده به صورت جدول‌هایی سازمان‌دهی می‌شود که شامل ردیف‌ها (record) و ستون‌ها (field) هستند. هر جدول نمایان‌گر یک موجودیت خاص (مثل مشتریان، محصولات، یا فروش‌ها) است.

html

پایگاه داده‌های رابطه‌ای (Relational Databases):

این نوع پایگاه داده‌ها بر مبنای مدل رابطه‌ای هستند و داده‌ها با استفاده از جداول و روابط بین آن‌ها سازماندهی می‌شوند. SQL (Structured Query Language) معمولاً برای مدیریت و جستجوی داده‌ها در این نوع پایگاه‌ها استفاده می‌شود. مثال‌هایی از این نوع پایگاه داده‌ها شامل MySQL، PostgreSQL و Oracle DB هستند.

SQL چیست؟

  • SQL یک زبان استاندارد برای دسترسی و دستکاری پایگاه های داده است.
  • SQL مخفف Structured Query Language است
  • SQL به شما امکان می دهد به پایگاه داده ها دسترسی داشته باشید و آنها را دستکاری کنید

SQL چه کاری می تواند انجام دهد؟

  • query در زبان انگلیسی به معنی درخواست اطلاعات می باشد و کوئری به درخواست داده از یک پایگاه داده اشاره دارد
  • SQL می تواند queries یا کوئری ها را برای یک پایگاه داده اجرا کند .
  • SQL می تواند رکوردها را در پایگاه داده وارد کند
  • SQL می تواند رکوردهای موجود در پایگاه داده را به روز کند
  • SQL می تواند رکوردها را از پایگاه داده حذف کند
  • SQL می تواند پایگاه های داده جدید ایجاد کند
  • SQL می تواند جداول جدید در پایگاه های داده ایجاد کند
  • SQL می تواند رویه های ذخیره شده را در یک پایگاه داده ایجاد کند
  • SQL می تواند نماها را در پایگاه داده ایجاد کند
  • SQL می تواند مجوزها را روی جداول، رویه ها و نماها تنظیم کند

استفاده از SQL در وب سایت خود

برای ساخت یک وب سایت که داده ها را از یک پایگاه داده نشان می دهد، شما به موارد زیر نیاز دارید:

  • یک برنامه پایگاه داده RDBMS (به عنوان مثال MySQL)
  • استفاده از یک زبان برنامه نویسی سمت سرور، مانند PHP
  • استفاده از SQL برای بدست آوردن داده های مورد نظر
  • استفاده از HTML / CSS برای استایل دادن به صفحه

RDBMS

RDBMS مخفف Relational Database Management System به معنی سیستم مدیریت پایگاه داده رابطه ای می باشد.

RDBMS پایه ای برای SQL و برای تمام سیستم های پایگاه داده مدرن مانند MS SQL Server، IBM DB2، Oracle، MySQL و Microsoft Access است.

داده ها در RDBMS در اشیاء پایگاه داده به نام جداول ذخیره می شوند. جدول مجموعه ای از ورودی های داده مرتبط است و از ستون ها و ردیف ها تشکیل شده است.

هر جدول داری یک نام منحصر به فرد می باشد که در کوئری نویسی از آن نام استفاده می شود. به عنوان مثال نام جدول زیر Customers می باشد. (جدول مشخصات مشتریان)

html

به هر یک از ستون های جدول بالا field گفته می شود در اصل فیلد ها ستون های جدول می باشند که هر کدام برای حفظ اطلاعات خاصی همچون نام، نام خانوادگی، آدرس و غیره مورد استفاده قرار می گیرد.

بنابراین فیلد های جدول فوق عبارتند از:

  • CustomerID
  • CustomerName
  • ContactName
  • Address
  • City
  • PostalCode
  • Country

یک record که ردیف نیز نامیده می شود، هر ورودی جداگانه ای است که در یک جدول وجود دارد. به عنوان مثال، 5 رکورد در جدول بالا وجود دارد .

SQL Syntax

اکثر اقداماتی که باید روی پایگاه داده انجام دهید با دستورات SQL انجام می شود.

دستورات SQL از کلمات کلیدی تشکیل شده است که به راحتی قابل درک هستند.

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

SELECT * FROM Customers;

Database Tables

یک پایگاه داده اغلب حاوی یک یا چند جدول است. هر جدول با یک نام (مثلاً «مشتریان» یا «سفارش‌ها») مشخص می‌شود و حاوی رکوردها (ردیف‌ها) با داده است.

html

جدول بالا شامل پنج رکورد (برای هر مشتری) و هفت ستون (شناسه مشتری، نام مشتری، نام تماس، آدرس، شهر، کد پستی و کشور) است.

به خاطر داشته باشید که ...
  • کلمات کلیدی SQL به حروف بزرگ و کوچک حساس نیستند: select معادل SELECT است

در این آموزش ما تمام کلمات کلیدی SQL را با حروف بزرگ می نویسیم.

آیا نقطه ویرگول بعد از دستورات SQL نیاز است؟

برخی از سیستم های پایگاه داده به یک نقطه ویرگول در انتهای هر دستور SQL نیاز دارند.

نقطه ویرگول روش استاندارد برای جدا کردن هر دستور SQL در سیستم های پایگاه داده است که اجازه می دهد بیش از یک دستور SQL در همان فراخوانی به سرور اجرا شود.

در این آموزش از نقطه ویرگول در انتهای هر دستور SQL استفاده می کنیم.

برخی از مهمترین دستورات SQL

  • SELECT داده ها را از پایگاه داده استخراج می کند
  • UPDATE به روز رسانی داده ها در پایگاه داده
  • DELETE داده ها را از پایگاه داده حذف می کند
  • INSERT INTO داده های جدید را در پایگاه داده وارد می کند
  • CREATE DATABASE یک پایگاه داده جدید ایجاد می کند
  • ALTER DATABASE یک پایگاه داده را اصلاح می کند
  • CREATE TABLE یک جدول جدید ایجاد می کند
  • ALTER TABLE یک جدول را اصلاح می کند
  • DROP TABLE یک جدول را حذف می کند
  • CREATE INDEX یک شاخص ایجاد می کند (کلید جستجو)
  • DROP INDEX یک شاخص را حذف می کند

فرض کنید جدول موجود در پایگاه داده که قرار است دستورات زیر را بر روی آن اعمال کنیم به نام Customers و به صورت زیر باشد

html

دستور SQL SELECT

دستور SELECT برای انتخاب داده ها از پایگاه داده استفاده می شود.

SELECT
SELECT column1, column2, ... FROM table name;

فرض کنید قصد دارید دو ستون از جدول customers را به صورت زیر انتخاب کنید

html

دستور لازم برای انتخاب دو ستون فوق از جدول اصلی یعنی customers به صورت زیر می باشد:

SELECT CustomerName, City FROM Customers;

انتخاب همه ستون ها

اگر می خواهید همه ستون ها را بدون تعیین نام هر ستون برگردانید، می توانید از دستور * SELECT استفاده کنید:

* SELECT
SELECT * FROM table name;

فرض کنید قصد دارید همه ستون های جدول customers را به صورت زیر انتخاب کنید

html

دستور لازم برای انتخاب همه ستون های یک جدول مانند جدول customers به صورت زیر می باشد:

SELECT * FROM Customers;

دستور SELECT DISTINCT

دستور SELECT DISTINCT فقط برای برگرداندن مقادیر غیر تکراری استفاده می شود در اصل این دستور یک ستون از جدول را با حذف گزینه های تکراری بر می گرداند.

در واقع این دستور جهت حذف موارد تکراری استفاده می گردد.

SELECT DISTINCT
SELECT DISTINCT column_name FROM table name;

دستور SELECT DISTINCT فقط برای برگرداندن مقادیر غیر تکراری استفاده می شود در اصل این دستور یک ستون از جدول را با حذف گزینه های تکراری بر می گرداند.

select-distinct

تفاوت این دستور با دستور SELECT و انتخاب فقط یک ستون در این است که در این حالت مقادیر تکراری ستون حذف می شود:

فرض کنید قصد داریم مشخص کنیم مشتریان از چه کشورهایی می باشند :

SELECT DISTINCT country FROM Customers;

COUNT DISTINCT

با استفاده از کلمه کلیدی DISTINCT در داخل تابع ای به نام COUNT می توانید تعداد موارد متمایز یا غیر تکراری را برگردانید

COUNT DISTINCT
SELECT COUNT(DISTINCT column_name) FROM table name;

در این صورت تعداد کلمات متمایز یا غیر تکراری نمایش داده خواهد شد.

توجه: COUNT(DISTINCT column_name) در پایگاه داده های Microsoft Access پشتیبانی نمی شود.

فرض کنید قصد داریم مشخص کنیم مشتریان از چند کشور مختلف می باشند :

SELECT COUNT(DISTINCT country) FROM customers;

SQL WHERE

عبارت WHERE برای فیلتر کردن رکوردها یا همان ردیف های جدول استفاده می شود.

SQL WHERE
SELECT column1, column2, ...
FROM table name
WHERE condition;

فقط برای استخراج رکورد یا ردیف هایی استفاده می شود که یک شرط مشخص را برآورده می کنند.

برای مثال اگر بخواهید مطابق جدول زیر ردیف ها یا رکوردهایی که شامل کشور مکزیک باشند را نمایش دهید باید برای جدول customers دستوری به صورت زیر بنویسید:

SQL WHERE
SELECT * FROM Customers
WHERE Country='Mexico';

نکته: عبارت WHERE نه تنها در دستورات SELECT استفاده می شود، بلکه در UPDATE، DELETE و غیره نیز استفاده می شود!

فیلدهای متنی در مقابل فیلدهای عددی

SQL برای فیلد های متنی به نقل قول تک یا single qoat نیاز دارد در صورتی که برای فیلد های عددی نباید از نقل قول تکی استفاده کرد.

در اکثر سیستم های پایگاه داده می توان از دابل کوتیشن نیز به جای سینگل کوتیشن استفاده کرد.

SELECT * FROM Customers
WHERE CustomerID=1;

انواع عملگرها در بند WHERE

برای فیلتر کردن جستجو می توانید از عملگرهای دیگری غیر از عملگر = استفاده کنید.

SELECT * FROM Customers
WHERE CustomerID > 8;

عملگرهای زیر را می توان در عبارت WHERE استفاده کرد:

x = y

Equal

SELECT * FROM Customers
WHERE CustomerID = 8;
x > y

Greater than

SELECT * FROM Customers
WHERE CustomerID > 8;
x < y

Less than

SELECT * FROM Customers
WHERE CustomerID < 8;
x >= y

Greater than or equal

SELECT * FROM Customers
WHERE CustomerID >= 8;
x <= y

Less than or equal

SELECT * FROM Customers
WHERE CustomerID <= 8;
x <> y

Not equal. Note: In some versions of SQL this operator may be written as !=

SELECT * FROM Customers
WHERE CustomerID <> 8;
BETWEEN

Between a certain range

SQL-BETWEEN
SELECT * FROM Customers
WHERE CustomerID BETWEEN 8 AND 12;
LIKE

Search for a pattern

SQL-LIKE
SELECT * FROM Customers
WHERE City LIKE 's%';
IN

برای تعیین چندین مقدار ممکن برای یک ستون

SQL-IN
SELECT * FROM Customers
WHERE City IN ('London','Paris');

SQL ORDER BY

کلمه کلیدی ORDER BY برای مرتب کردن مجموعه نتایج به ترتیب صعودی یا نزولی استفاده می شود.

SQL ORDER BY
SELECT column1, column2, ...
FROM table name
ORDER BY column1, column2, ...ASC|DESC;

کلمه کلیدی ORDER BY برای مرتب کردن مجموعه نتایج به ترتیب صعودی یا نزولی استفاده می شود.

SQL ORDER BY
SELECT * FROM Customers
ORDER BY PostalCode ;

DESC

descendig

کلیدواژه ORDER BY به طور پیش فرض رکوردها را به ترتیب صعودی (ascending) مرتب می کند. برای مرتب کردن رکوردها به ترتیب نزولی (descendig)، از کلمه کلیدی DESC استفاده کنید.

DESC
SELECT PostalCode
FROM customers
ORDER BY PostalCode DESC;

کلیدواژه ORDER BY به طور پیش فرض رکوردها را به ترتیب صعودی (ascending) مرتب می کند. برای مرتب کردن رکوردها به ترتیب نزولی (descendig)، از کلمه کلیدی DESC استفاده کنید.

SQL DESC
SELECT PostalCode
FROM customers
ORDER BY PostalCode DESC;

ترتیب حروف الفبا

برای مقادیر رشته، کلمه کلیدی ORDER BY بر اساس حروف الفبا مرتب می کند:

Order Alphabetically
SELECT CustomerName
FROM Customers
ORDER BY CustomerName;

برای مقادیر رشته، کلمه کلیدی ORDER BY بر اساس حروف الفبا مرتب می کند:

SQL-ORDER BY Alphabet
SELECT CustomerName
FROM Customers
ORDER BY CustomerName;

مرتب کردن بر اساس حروف الفبا از آخر به اول

اگر بخواهیم چیدمان بر اساس حروف الفبا و از آخر به اول باشد از DESC به صورت زیر استفاده می کنیم :

Alphabetically DESC
SELECT CustomerName
FROM Customers
ORDER BY CustomerName DESC;

اگر بخواهیم چیدمان بر اساس حروف الفبا و از آخر به اول باشد از DESC به صورت زیر استفاده کنیم:

SQL-ORDER BY Alphabet
SELECT CustomerName
FROM Customers
ORDER BY CustomerName DESC;

مرتب سازی بر اساس چند ستون مختلف

اگر بخواهیم جدول مشتریان بر اساس چند ستون مرتب شود مثلا بر اساس نام کشور ها و نام مشتریان باید از دستوری به صورت زیر استفاده کنید

ORDER BY Several Columns
SELECT * FROM Customers
ORDER BY Country , CustomerName ;

اگر بخواهیم جدول مشتریان بر اساس چند ستون مرتب شود مثلا بر اساس نام کشور ها و نام مشتریان باید از دستوری به صورت زیر استفاده کنید

SQL two columns
SELECT * FROM Customers
ORDER BY Country , CustomerName ;

استفاده همزمان از ASC و DESC

اگر بخواهید یک ستون به صورت صعودی مرتب شود در صورتی که برای موارد تکراری آن ستون در ستون دیگر چیدمان به صورت نزولی باشد می توان به طور همزمان از ASC و DESC به صورت زیر استفاده کرد.

ASC / DESC
SELECT column1, column2
FROM table name
ORDER BY column1 ASC, column2 DESC;

اگر بخواهید یک ستون به صورت صعودی مرتب شود در صورتی که برای موارد تکراری آن ستون در ستون دیگر چیدمان به صورت نزولی باشد می توان به طور همزمان از ASC و DESC به صورت زیر استفاده کرد.

ASC-DESC
SELECT Country, CustomerName
FROM Customers
ORDER BY Country ASC, CustomerName DESC;

SQL AND Operator

عبارت WHERE می تواند شامل یک یا چند عملگر AND باشد.

عملگر AND برای فیلتر کردن رکوردها بر اساس بیش از یک شرط استفاده می‌شود، مثلاً اگر می‌خواهید همه مشتریان اسپانیایی را که با حرف «G» شروع می‌شود برگردانید:

SQL AND Operator
SELECT column1 , column2 , column3
FROM table name
WHERE Condition1 AND Condition2 AND Condition3 ;

عملگر AND برای فیلتر کردن رکوردها بر اساس بیش از یک شرط استفاده می‌شود، مثلاً اگر می‌خواهید همه مشتریان اسپانیایی را که با حرف «G» شروع می‌شود برگردانید:

SQL AND
SELECT Country , CustomerName
FROM Customers
WHERE Country = 'spain' AND CustomerName LIKE 'G%';

SQL OR Operator

عبارت WHERE می تواند شامل یک یا چند عملگر OR باشد.

عملگر OR برای فیلتر کردن رکوردها بر اساس بیش از یک شرط استفاده می‌شود، مثلاً اگر می‌خواهید همه مشتریان از آلمان و همچنین مشتریان اسپانیایی را برگردانید:

SQL OR Operator
SELECT column1 , column2 , column3
FROM table name
WHERE Condition1 OR Condition2 OR Condition3 ;

عملگر OR برای فیلتر کردن رکوردها بر اساس بیش از یک شرط استفاده می‌شود، مثلاً اگر می‌خواهید همه مشتریان از آلمان و همچنین مشتریان اسپانیایی را برگردانید:

SQL OR
SELECT Country
FROM Customers
WHERE Country = 'spain' OR Country = 'Germany' ;

ترکیب AND و OR

می توانید عملگرهای AND و OR را با هم ترکیب کنید.

Combining AND and OR
SELECT * FROM Customers
WHERE Country = 'spain' AND (CustomerName LIKE 'G%' OR CustomerName LIKE 'R%');

عبارت SQL زیر همه مشتریان اسپانیایی را انتخاب می کند که با "G" یا "R" شروع می شوند.

SQL AND OR
SELECT * FROM Customers
WHERE Country = 'spain' AND (CustomerName LIKE 'G%' OR CustomerName LIKE 'R%');

SQL NOT Operator

عملگر NOT در ترکیب با سایر عملگرها برای به دست آوردن نتیجه مخالف استفاده می شود که نتیجه منفی نیز نامیده می شود.

SQL NOT Operator
SELECT column1, column2, ...
FROM table name
WHERE NOT condition;

در عبارت انتخابی زیر می‌خواهیم همه مشتریانی را که اهل مکزیک نیستند برگردانیم:

SQL NOT
SELECT * FROM Customers
WHERE NOT Country='Mexico';

SQL NOT LIKE

SQL NOT LIKE
SELECT * FROM Customers
WHERE CustomerName NOT LIKE 'A%';

مشتریانی را انتخاب کنید که با حرف A شروع نمی شوند:

SQL NOT LIKE
SELECT * FROM Customers
WHERE CustomerName NOT LIKE 'A%';

SQL NOT BETWEEN

SQL NOT BETWEEN
SELECT * FROM Customers
WHERE CustomerID NOT BETWEEN 4 AND 8;

مشتریانی را انتخاب کنید که شناسه مشتری بین 10 تا 60 نباشد:

SQL NOT BEETWEEN
SELECT * FROM Customers
WHERE CustomerID NOT BETWEEN 4 AND 8;

NOT IN

NOT IN
SELECT * FROM Customers
WHERE City NOT IN ('London','Paris');

مشتریانی را انتخاب کنید که اهل پاریس یا لندن نیستند:

SQL NOT IN
SELECT * FROM Customers
WHERE City NOT IN ('London','Paris');

NOT Greater Than

NOT Greater Than
SELECT * FROM Customers
WHERE NOT CustomerID > 5;

مشتریانی را انتخاب کنید که شناسه مشتری آنها بیشتر از 5 نباشد:

SQL NOT greater than
SELECT * FROM Customers
WHERE NOT CustomerID > 5;

NOT Less Than

NOT Less Than
SELECT * FROM Customers
WHERE NOT CustomerID < 50;

مشتریانی را انتخاب کنید که شناسه مشتری آنها کمتر از 50 نباشد:

SQL NOT less than
SELECT * FROM Customers
WHERE NOT CustomerID < 50;

SQL INSERT INTO

درج یک یا چند رکورد در یک جدول

توسط دستور INSERT INTO به دو روش می توان یک یا چند رکورد را به جدول اضافه کرد:

  • روش اول
  • هم نام ستون ها و هم مقادیری که باید درج شوند را مشخص کنید:

    SQL INSERT INTO
    INSERT INTO table_name (column1, column2, column3, column4, column5, column6, ...)
    VALUES (value1, value2, value3, value4, value5, value6, ...);

    جدول مشتریان قبل از درج مقدار جدید:

    SQL INSERT INTO1

    جدول مشتریان بعد از درج مقدار جدید:

    SQL INSERT INTO
    INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
    VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');
  • روش دوم
  • در این روش نیاز به وارد کردن نام ستون های جدول نمی باشد، فقط دقت کنید مقادیر را به ترتیب ستون های جدول وارد کنید:

    SQL INSERT INTO
    INSERT INTO table_name
    VALUES (value1, value2, value3, value4, value5, value6, ...);

    جدول مشتریان قبل از درج مقدار جدید:

    SQL INSERT INTO1

    جدول مشتریان بعد از درج مقدار جدید:

    SQL INSERT INTO
    INSERT INTO Customers
    VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');

درج رکورد در ستون های دلخواه

به روش زیر می توان مقادیر را در ستون های دلخواه وارد کرد:

SQL INSERT INTO
INSERT INTO table_name (column1, column3, column6)
VALUES (value1, value3, value6);

جدول مشتریان قبل از درج مقدار جدید:

SQL INSERT INTO1

جدول مشتریان بعد از درج مقدار جدید فقط در سه ستون CustomerName ، City و Country:

SQL INSERT INTO only
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');

درج همزمان چند ردیف

همچنین امکان درج چند ردیف در یک دستور وجود دارد.

SQL INSERT INTO
INSERT INTO table_name (column1, column2, column3, column4, column5, column6, ...)
VALUES
(value1, value2, value3, value4, value5, value6, ...),
(value1, value2, value3, value4, value5, value6, ...),
(value1, value2, value3, value4, value5, value6, ...);

جدول مشتریان قبل از درج مقدار جدید:

SQL INSERT INTO1

توسط همان فرمان INSERT INTO به صورت زیر می توان به صورت همزمان چند ردیف یه جدول اضافه کرد:

SQL INSERT INTO MULTIPLE
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway'),
('Greasy Burger', 'Per Olsen', 'Gateveien 15', 'Sandnes', '4306', 'Norway'),
('Tasty Tee', 'Finn Egan', 'Streetroad 19B', 'Liverpool', 'L1 0AA', 'UK');

SQL NULL Values

مقدار NULL چیست؟

فیلدی با مقدار NULL فیلدی بدون مقدار است.

توجه: مقدار NULL با مقدار صفر یا فیلدی که حاوی فاصله است متفاوت است. فیلدی با مقدار NULL فیلدی است که در حین ایجاد رکورد خالی مانده است!

روش بررسی خانه های خالی جدول (NULL)

آزمایش مقادیر NULL با عملگرهای مقایسه، مانند =، <، یا <> ممکن نیست.

در عوض باید از عملگرهای IS NULL و IS NOT NULL استفاده کنیم.

IS NULL Operator

عملگر IS NULL برای آزمایش مقادیر خالی (مقادیر NULL) استفاده می شود.

IS NULL Operator
SELECT * FROM Customers
WHERE Address IS NULL;

فرض کنید قصد داریم در جدول مشتریان مشخص کنیم آیا همه 91 مشتری دارای آدرس می باشند :

IS NULL

یعنی طبق دستور زیر هیچ مشتری ای نداریم که در جدول مشتریان فاقد آدرس باشد.

SELECT * FROM Customers
WHERE Address IS NULL;

نکته: همیشه از IS NULL برای جستجوی مقادیر NULL استفاده کنید.

IS NOT NULL Operator

عملگر IS NOT NULL برای آزمایش مقادیر غیر خالی (مقادیر NULL) استفاده می شود.

IS NOT NULL Operator
SELECT * FROM Customers
WHERE Address IS NOT NULL;

فرض کنید قصد داریم در جدول مشتریان مشخص کنیم کدام مشتری فاقد آدرس می باشد:

IS NOT NULL

یعنی طبق دستور زیر همه 91 مشتری دارای آدرس مشخص در جدول مشتریان می باشند.

SELECT * FROM Customers
WHERE Address IS NOT NULL;

SQL UPDATE Statement

دستور UPDATE برای اصلاح رکوردهای موجود در یک جدول استفاده می شود.

SQL UPDATE Statement
UPDATE table_name
SET column1 = value1 , column2 = value2 , ...
WHERE Condition ;
SQL UPDATE

فرض کنید در جدول مشتریان ContactName و نام شهر یکی از مشتریان با ID شماره 1 را می خواهیم به ترتیب به Alfred Schmidt و Frankfurt تغییر دهیم

SQL UPDATE

برای انجام این تغییرات از دستور زیر استفاده شده است:

UPDATE Customers
SET ContactName = 'Alfred Schmidt' , City = 'Frankfurt' , ...
WHERE CustomerID = 1 ;

توجه: هنگام به روز رسانی رکوردها در جدول مراقب باشید! به عبارت WHERE در عبارت UPDATE توجه کنید. بند WHERE مشخص می کند که کدام رکورد(های) باید به روز شود. اگر بند WHERE را حذف کنید، تمام رکوردهای جدول به روز می شوند!

UPDATE Multiple Records

به روز رسانی چندین ردیف

فرض کنید در جدول مشتریان قصد داریم ContactName مشتریان اهل مکزیک را به Juan تغییر نام دهیم یعنی چند ردیف که شامل کشور مکزیک می باشد در ستون ContactName به صورت همزمان تغییر ایجاد کنیم:

UPDATE Multiple Records
UPDATE table_name
SET column1
WHERE Condition ;

فرض کنید در جدول مشتریان قصد داریم ContactName مشتریان اهل مکزیک را به Juan تغییر نام دهیم یعنی چند ردیف که شامل کشور مکزیک می باشد در ستون ContactName به صورت همزمان تغییر ایجاد کنیم:

SQL MULTIPLE UPDATE
UPDATE Customers
SET ContactName= 'Juan'
WHERE Country = 'Mexico' ;

هنگام به روز رسانی ردیف ها مراقب باشید. اگر بند WHERE را حذف کنید، تمام رکوردها به روز می شوند!

اگر بند WHERE را حذف کنید
UPDATE table_name
SET column1 ;
SQL MULTIPLE UPDATE
UPDATE Customers
SET ContactName= 'Juan';

SQL DELETE Statement

دستور DELETE برای حذف رکوردهای موجود در جدول استفاده می شود.

SQL DELETE Statement
DELETE FROM table_name
WHERE Condition ;
SQL DELETE

فرض کنید قصد داریم به صورت زیر ردیفی که شامل نام Alfreds Futterkiste می باشد را حذف کنیم

SQL DELETE

برای انجام این تغییرات از دستور زیر استفاده شده است:

DELETE FROME Customers
WHERE CustomerName = 'Alfreds Futterkiste' ;

توجه: هنگام حذف رکوردها در جدول مراقب باشید! به عبارت WHERE در عبارت DELETE توجه کنید. بند WHERE مشخص می کند که کدام رکورد(های) باید حذف شوند. اگر بند WHERE را حذف کنید، تمام رکوردهای جدول حذف خواهند شد!

Delete All Records

دستور DELETE برای حذف همه رکوردهای موجود در جدول استفاده می شود.

Delete All Records
DELETE FROM table_name ;

دستور SQL زیر تمام ردیف‌های جدول «Customers» را بدون حذف جدول حذف می‌کند:

DELETE FROME Customers ;

Delete a Table

برای حذف کامل جدول، از عبارت DROP TABLE استفاده کنید:

Delete a Table
DROP TABLE table_name ;

برای حذف کامل جدول مشتریان از دستور زیر استفاده می شود

DROP TABLE Customers ;

SQL TOP and LIMIT

عبارت SELECT TOP برای تعیین تعداد رکوردهایی که باید برگردانده شوند استفاده می شود.

عبارت SELECT TOP در جداول بزرگ با هزاران رکورد مفید است. بازگرداندن تعداد زیادی رکورد می تواند بر عملکرد تأثیر بگذارد.

توجه: همه سیستم های پایگاه داده از عبارت SELECT TOP پشتیبانی نمی کنند. MySQL از بند LIMIT برای انتخاب تعداد محدودی از رکوردها پشتیبانی می کند.

SQL Server / MS Access Syntax

SELECT TOP
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE Condition ;

برای مثال برای برگرداندن 3 ردیف از جدول customers توسط SQL Server باید دستوری به صورت زیر نوشت:

sql server
SELECT TOP 3 *
FROM Customers
WHERE Country='Germany' ;

MySQL Syntax

LIMIT
SELECT column_name(s)
FROM table_name
WHERE Condition
LIMIT number ;

برای مثال برای برگرداندن 3 ردیف از جدول customers توسط MySQL باید دستوری به صورت زیر نوشت:

sql server
SELECT *
FROM Customers
WHERE Country='Germany'
LIMIT 3 ;

اضافه کردن کلمه کلیدی ORDER BY

هنگامی که می خواهید نتیجه را مرتب کنید، کلمه کلیدی ORDER BY را اضافه کنید و 3 رکورد اول نتیجه مرتب شده را برگردانید.

SQL Server Syntax

ORDER BY
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE Condition
ORDER BY colamn ;

برای مثال برای برگرداندن 3 ردیف از جدول customers توسط MySQL باید دستوری به صورت زیر نوشت:

LIMIT ORDER BY
SELECT TOP 3 * FROM Customers
WHERE Country='Germany'
ORDER BY CustomerName Desc;

MySQL Syntax

ORDER BY
SELECT column_name(s) FROM table_name
WHERE Condition
ORDER BY colamn
LIMIT number ;

برای مثال برای برگرداندن 3 ردیف از جدول customers توسط MySQL باید دستوری به صورت زیر نوشت:

LIMIT ORDER BY
SELECT * FROM Customers
WHERE Country='Germany'
ORDER BY CustomerName DESC
LIMIT 3 ;

SQL Aggregate Functions

توابع SQL Aggregate

تابع Aggregate تابعی است که یک محاسبات را روی مجموعه ای از مقادیر انجام می دهد و یک مقدار واحد را برمی گرداند.

توابع Aggregate اغلب با عبارت GROUP BY در دستور SELECT استفاده می شود. بند GROUP BY مجموعه نتایج را به گروه‌هایی از مقادیر تقسیم می‌کند و تابع Aggregate می‌تواند برای برگرداندن یک مقدار واحد برای هر گروه استفاده شود.

متداول ترین توابع Aggregate عبارتند از:

  • ()MIN
  • ()MAX
  • ()COUNT
  • ()SUM
  • ()AVG

توابع aggregate مقادیر NULL را نادیده می گرند (به جز تابع ()COUNT).

SQL MIN() Functions

تابع ()MIN کوچکترین مقدار ستون انتخاب شده را برمی گرداند.

()MIN
SELECT MIN(column_name) FROM table_name ;

فرض کنید قصد داریم در جدول products زیر کمترین قیمت را در ستون price مشخص کنیم:

MIN()

برای این منظور اگر از دستور زیر استفاده کنیم نتیجه به صورت زیر با کمترین قیمت بازگردانده خواهد شد:

MIN()
SELECT MIN(price) FROM Products;

SQL MAX() Functions

تابع ()MAX بزرگترین مقدار ستون انتخاب شده را برمی گرداند.

()MAX
SELECT MAX(column_name) FROM table_name ;

فرض کنید قصد داریم در جدول products زیر بیشترین قیمت را در ستون price مشخص کنیم:

MIN()

برای این منظور اگر از دستور زیر استفاده کنیم نتیجه به صورت زیر با بیشترین قیمت بازگردانده خواهد شد:

MIN()
SELECT MAX(price) FROM Products;

تنظیم نام ستون (نام مستعار)

وقتی از ()MIN یا ()MAX استفاده می کنید، ستون برگشتی نام توصیفی نخواهد داشت. برای دادن یک نام توصیفی به ستون، از کلمه کلیدی AS استفاده کنید:

اگر به آنچه در دو مثال بالا باز گردانده شده دقت کنید ستون مربوط به کمترین قیمت یا بیشترین قیمت فاقد نام می باشد و برای رفع این مشکل از کلمه کلیدی AS به صورت زیر استفاده می کنیم:

AS
SELECT MIN(column_name) AS Alias FROM table_name ;

فرض کنید قصد داریم در جدول products زیر کمترین قیمت را در ستون price مشخص کنیم:

MIN()

بنابراین ستون مربوط به کمترین قیمت با نام مستعار SmallestPrice به صورت زیر باز گردانده خواهد شد:

SQL MIN AS
SELECT MIN(price) AS SmallestPrice FROM Products;

Use MIN() with GROUP BY

در جدول محصولات هر محصول دارای یک CategoryID می باشد که عددیست بین 1 تا 8 حال فرض کنید قرار است کمترین قیمت برای هر Category را از جدول استخراج کنیم

با استفاده از تابع ()MIN و عبارت GROUP BY به صورت زیر می توان کمترین قیمت برای هر دسته را از جدول استخراج کرد:

GROUP BY
SELECT MIN(column_name1) AS Alias , column_name2
FROM table_name
GROUP BY column_name2;

فرض کنید قصد داریم در جدول products زیر کمترین قیمت را در ستون price برای هر CategoryID:

MIN()

بنابراین ستون مربوط به کمترین قیمت با نام مستعار SmallestPrice به صورت زیر باز گردانده خواهد شد:

SQL-GROUP BY
SELECT MIN(price) AS SmallestPrice, CategoryID
FROM Products
GROUP BY CategoryID;

شمارش تعداد ردیف های جدول

تابع ()COUNT تعداد ردیف هایی را برمی گرداند که با یک معیار مشخص مطابقت دارند.

()count
SELECT COUNT (column_name)
FROM table_name
WHERE condition ;

فرض کنید در جدول products قصد داریم ببینیم چند ردیف با قیمت زیر 50 دلار وجود دارد:

MIN()

با استفاده از دستور زیر خواهیم دید مطابق شکل زیر 70 ردیف در جدول products وجود دارد که در آن ردیف ها قیمت کمتر از 50 دلار می باشد:

SQL COUNT
SELECT COUNT (productID)
FROM products
WHERE price < 50 ;