عملگرها، عبارت‌ها و پرس‌وجوهای پایه در SQL

عملگرها، عبارت‌ها و پرس‌وجوهای پایه در SQL

توسط admin | گروه SQL Server | 1405/05/22

نظرات 0

عملگرها، عبارت‌ها و پرس‌وجوهای پایه در SQL

فصل ۶ — عملگرهای SQL

عملگر در SQL چیست؟

عملگر یک واژهٔ رزروشده یا یک نویسه است که عمدتاً در عبارت WHERE یک دستور SQL برای انجام عملیاتی مانند مقایسه و محاسبات حسابی استفاده می‌شود.

عملگرها برای تعیین شرط‌ها در یک دستور SQL و نیز برای پیوند چند شرط در یک دستور به‌کار می‌روند.

  • عملگرهای حسابی
  • عملگرهای مقایسه‌ای
  • عملگرهای منطقی
  • عملگرهای مورد استفاده برای نقیض کردن شرط‌ها

عملگرهای حسابی SQL

فرض کنید متغیر a مقدار ۱۰ و متغیر b مقدار ۲۰ داشته باشد:

عملگرتوضیحمثال
+جمع؛ مقادیر دو طرف عملگر را با هم جمع می‌کند.a + b = 30
-تفریق؛ عملوند سمت راست را از عملوند سمت چپ کم می‌کند.a - b = -10
*ضرب؛ مقادیر دو طرف عملگر را در هم ضرب می‌کند.a * b = 200
/تقسیم؛ عملوند چپ را بر عملوند راست تقسیم می‌کند.b / a = 2
%باقی‌مانده؛ عملوند چپ را بر عملوند راست تقسیم کرده و باقی‌مانده را برمی‌گرداند.b % a = 0

نمونه‌های سادهٔ استفاده از عملگرهای حسابی:

SQL> select 10+ 20;
+--------+
| 10+ 20 |
+--------+
|     30 |
+--------+
1 row in set (0.00 sec)

SQL> select 10 * 20;
+---------+
| 10 * 20 |
+---------+
|     200 |
+---------+
1 row in set (0.00 sec)

SQL> select 10 / 5;
+--------+
| 10 / 5 |
+--------+
| 2.0000 |
+--------+
1 row in set (0.03 sec)

SQL> select 12 %  5;
+---------+
| 12 %  5 |
+---------+
|       2 |
+---------+
1 row in set (0.00 sec)

عملگرهای مقایسه‌ای SQL

با همان فرض a = 10 و b = 20:

عملگرتوضیحنتیجهٔ مثال
=برابر بودن دو عملوند را بررسی می‌کند.(a = b) false
!=نابرابر بودن دو عملوند را بررسی می‌کند.(a != b) true
<>صورت دیگری برای بررسی نابرابری است.(a <> b) true
>بررسی می‌کند عملوند چپ از راست بزرگ‌تر است یا خیر.(a > b) false
<بررسی می‌کند عملوند چپ از راست کوچک‌تر است یا خیر.(a < b) true
>=بزرگ‌تر یا مساوی بودن عملوند چپ نسبت به راست را بررسی می‌کند.(a >= b) false
<=کوچک‌تر یا مساوی بودن عملوند چپ نسبت به راست را بررسی می‌کند.(a <= b) true
!<بررسی می‌کند عملوند چپ از عملوند راست کوچک‌تر نیست.(a !< b) false
!>بررسی می‌کند عملوند چپ از عملوند راست بزرگ‌تر نیست.(a !> b) true

جدول CUSTOMERS با هفت رکورد مثال‌های این بخش مبناست. چند نمونهٔ عملگر مقایسه‌ای:

SQL> SELECT * FROM CUSTOMERS WHERE SALARY > 5000;
-- Chaitali 6500.00 / Hardik 8500.00 / Muffy 10000.00

SQL> SELECT * FROM CUSTOMERS WHERE SALARY = 2000;
-- Ramesh 2000.00 / kaushik 2000.00

SQL> SELECT * FROM CUSTOMERS WHERE SALARY != 2000;
-- Khilan, Chaitali, Hardik, Komal, Muffy

SQL> SELECT * FROM CUSTOMERS WHERE SALARY <> 2000;
-- همان پنج رکورد بالا

SQL> SELECT * FROM CUSTOMERS WHERE SALARY >= 6500;
-- Chaitali 6500.00 / Hardik 8500.00 / Muffy 10000.00

عملگرهای منطقی SQL

عملگرتوضیح
ALLیک مقدار را با تمام مقادیر مجموعهٔ دیگری مقایسه می‌کند.
ANDوجود چند شرط را در عبارت WHERE ممکن می‌کند.
ANYیک مقدار را، بر اساس شرط، با هر مقدار قابل اعمال در فهرست مقایسه می‌کند.
BETWEENمقادیر واقع‌شده میان حداقل و حداکثر مشخص را جست‌وجو می‌کند.
EXISTSوجود سطری را در جدول مشخص که معیارهای تعیین‌شده را برآورده کند بررسی می‌کند.
INیک مقدار را با فهرستی از مقادیر Literal مشخص‌شده مقایسه می‌کند.
LIKEیک مقدار را با مقادیر مشابه با استفاده از Wildcard (نویسهٔ عام) مقایسه می‌کند.
NOTمعنای عملگر منطقی همراه خود را معکوس می‌کند؛ مانند NOT EXISTS، NOT BETWEEN و NOT IN.
ORچند شرط را در عبارت WHERE ترکیب می‌کند.
IS NULLیک مقدار را با NULL مقایسه می‌کند.
UNIQUEتمام سطرهای جدول مشخص را از نظر یکتایی و نبود تکرار بررسی می‌کند.

نمونه‌هایی از استفاده از عملگرهای منطقی روی جدول CUSTOMERS:

SQL> SELECT * FROM CUSTOMERS WHERE AGE >= 25 AND SALARY >= 6500;
-- Chaitali و Hardik

SQL> SELECT * FROM CUSTOMERS WHERE AGE >= 25 OR SALARY >= 6500;
-- Ramesh, Khilan, Chaitali, Hardik, Muffy

SQL> SELECT * FROM CUSTOMERS WHERE AGE IS NOT NULL;
-- هر 7 رکورد

SQL> SELECT * FROM CUSTOMERS WHERE NAME LIKE 'Ko%';
-- Komal

SQL> SELECT * FROM CUSTOMERS WHERE AGE IN (25, 27);
-- Khilan, Chaitali, Hardik

SQL> SELECT * FROM CUSTOMERS WHERE AGE BETWEEN 25 AND 27;
-- Khilan, Chaitali, Hardik

SQL> SELECT AGE FROM CUSTOMERS
WHERE EXISTS (SELECT AGE FROM CUSTOMERS WHERE SALARY > 6500);
-- 32,25,23,25,27,22,24

SQL> SELECT * FROM CUSTOMERS
WHERE AGE > ALL (SELECT AGE FROM CUSTOMERS WHERE SALARY > 6500);
-- Ramesh

SQL> SELECT * FROM CUSTOMERS
WHERE AGE > ANY (SELECT AGE FROM CUSTOMERS WHERE SALARY > 6500);
-- Ramesh, Khilan, Chaitali, Hardik

فصل ۷ — عبارت‌های SQL

Expression (عبارت) ترکیبی از یک یا چند مقدار، عملگر و تابع SQL است که در نهایت به یک مقدار ارزیابی می‌شود.

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

نحو

SELECT column1, column2, columnN
FROM table_name
WHERE [CONDITION|EXPRESSION];

انواع عبارت‌های معرفی‌شده در متن عبارت‌اند از عبارت‌های بولی، عددی و تاریخ.

عبارت‌های بولی SQL

عبارت‌های بولی SQL داده را بر پایهٔ تطبیق یک مقدار منفرد بازیابی می‌کنند:

SELECT column1, column2, columnN
FROM table_name
WHERE SINGLE VALUE MATCHTING EXPRESSION;

مثال روی جدول CUSTOMERS:

SQL> SELECT * FROM CUSTOMERS WHERE SALARY = 10000;
+----+-------+-----+---------+----------+
| ID | NAME  | AGE | ADDRESS | SALARY   |
+----+-------+-----+---------+----------+
|  7 | Muffy |  24 | Indore  | 10000.00 |
+----+-------+-----+---------+----------+
1 row in set (0.00 sec)

عبارت عددی SQL

این نوع عبارت برای انجام عملیات ریاضی در یک پرس‌وجو به‌کار می‌رود:

SELECT numerical_expression as OPERATION_NAME
[FROM table_name
WHERE CONDITION] ;

numerical_expression می‌تواند یک عبارت ریاضی یا فرمول باشد:

SQL> SELECT (15 + 6) AS ADDITION
+----------+
| ADDITION |
+----------+
|       21 |
+----------+
1 row in set (0.00 sec)

توابع داخلی متعددی مانند avg()، sum() و count() برای محاسبات تجمیعی روی جدول یا ستون مشخص وجود دارند:

SQL> SELECT COUNT(*) AS "RECORDS" FROM CUSTOMERS;
+---------+
| RECORDS |
+---------+
|       7 |
+---------+
1 row in set (0.00 sec)

عبارت‌های تاریخ SQL

عبارت‌های تاریخ می‌توانند مقدار تاریخ و زمان جاری سیستم را برگردانند:

SQL> SELECT CURRENT_TIMESTAMP;
+---------------------+
| Current_Timestamp   |
+---------------------+
| 2009-11-12 06:40:23 |
+---------------------+
1 row in set (0.00 sec)

SQL> SELECT GETDATE();;
+-------------------------+
| GETDATE                 |
+-------------------------+
| 2009-10-22 12:07:18.140 |
+-------------------------+
1 row in set (0.00 sec)

ایجاد، حذف و انتخاب پایگاه داده و جدول

فصل ۸ — CREATE DATABASE

دستور CREATE DATABASE برای ایجاد یک پایگاه دادهٔ SQL جدید استفاده می‌شود.

نحو

CREATE DATABASE DatabaseName;

نام پایگاه داده باید در RDBMS یکتا باشد.

مثال: برای ایجاد پایگاه دادهٔ testDB:

SQL> CREATE DATABASE testDB;

پیش از ایجاد پایگاه داده مطمئن شوید دسترسی مدیریتی دارید. پس از ایجاد، می‌توان فهرست پایگاه‌های داده را بررسی کرد:

SQL> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| AMROOD             |
| TUTORIALSPOINT     |
| mysql              |
| orig               |
| test               |
| testDB             |
+--------------------+
7 rows in set (0.00 sec)

فصل ۹ — حذف پایگاه داده با DROP DATABASE

دستور DROP DATABASE برای حذف یک پایگاه دادهٔ موجود از شِمای SQL استفاده می‌شود.

نحو

DROP DATABASE DatabaseName;

نام پایگاه داده باید در RDBMS یکتا باشد.

مثال:

SQL> DROP DATABASE testDB;

برای حذف پایگاه داده نیز باید دسترسی مدیریتی داشته باشید. پس از حذف می‌توان با SHOW DATABASES فهرست را بررسی کرد؛ در خروجی منبع، testDB دیگر وجود ندارد و ۶ پایگاه داده باقی مانده‌اند.

فصل ۱۰ — انتخاب پایگاه داده با USE

اگر در شِمای SQL چند پایگاه داده وجود داشته باشد، پیش از آغاز عملیات باید پایگاه داده‌ای را که عملیات روی آن انجام می‌شود انتخاب کنید.

دستور USE برای انتخاب یک پایگاه دادهٔ موجود استفاده می‌شود:

USE DatabaseName;

برای مثال پس از مشاهدهٔ پایگاه‌های موجود با SHOW DATABASES، برای کار با پایگاه دادهٔ AMROOD:

SQL> USE AMROOD;

فصل ۱۱ — CREATE TABLE

ایجاد یک جدول پایه شامل نام‌گذاری جدول و تعریف ستون‌ها و نوع دادهٔ هر ستون است. دستور CREATE TABLE یک جدول جدید ایجاد می‌کند.

نحو

CREATE TABLE table_name(
   column1 datatype,
   column2 datatype,
   column3 datatype,
   .....
   columnN datatype,
   PRIMARY KEY( one or more columns )
);

CREATE TABLE به سامانهٔ پایگاه داده می‌گوید یک جدول جدید ایجاد شود. پس از آن نام یا شناسهٔ یکتای جدول قرار می‌گیرد و داخل پرانتز فهرست ستون‌ها و نوع دادهٔ هرکدام تعریف می‌شود.

ایجاد جدول با استفاده از جدول دیگر

می‌توان با ترکیب CREATE TABLE و SELECT از یک جدول موجود نسخه‌ای ساخت. جدول جدید تعریف ستون‌های متناظر را خواهد داشت و می‌توان همه یا فقط ستون‌های مشخص را انتخاب کرد. داده‌های جدول جدید از مقادیر موجود در جدول قدیمی پر می‌شوند.

CREATE TABLE NEW_TABLE_NAME AS
   SELECT [ column1, column2...columnN ]
   FROM EXISTING_TABLE_NAME
   [ WHERE ]

در این نحو، column1، column2 و دیگر ستون‌ها فیلدهای جدول موجودند و برای ساخت فیلدهای جدول جدید استفاده می‌شوند.

مثال: ساخت جدول SALARY از جدول CUSTOMERS با فیلدهای شناسهٔ مشتری و حقوق:

SQL> CREATE TABLE SALARY AS
   SELECT ID, SALARY
   FROM CUSTOMERS;

+----+----------+
| ID | SALARY   |
+----+----------+
|  1 |  2000.00 |
|  2 |  1500.00 |
|  3 |  2000.00 |
|  4 |  6500.00 |
|  5 |  8500.00 |
|  6 |  4500.00 |
|  7 | 10000.00 |
+----+----------+

مثال دیگری جدول CUSTOMERS را با ID به‌عنوان کلید اصلی و چند ستون NOT NULL ایجاد می‌کند:

SQL> CREATE TABLE CUSTOMERS(
   ID   INT              NOT NULL,
   NAME VARCHAR (20)     NOT NULL,
   AGE  INT              NOT NULL,
   ADDRESS  CHAR (25) ,
   SALARY   DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

برای بررسی ساخت موفق جدول می‌توان پیام SQL Server را مشاهده کرد یا از DESC استفاده کرد:

SQL> DESC CUSTOMERS;
+---------+---------------+------+-----+---------+-------+
| Field   | Type          | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| ID      | int(11)       | NO   | PRI |         |       |
| NAME    | varchar(20)   | NO   |     |         |       |
| AGE     | int(11)       | NO   |     |         |       |
| ADDRESS | char(25)      | YES  |     | NULL    |       |
| SALARY  | decimal(18,2) | YES  |     | NULL    |       |
+---------+---------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

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

فصل ۱۲ — حذف جدول با DROP TABLE

دستور DROP TABLE تعریف یک جدول و تمام داده‌ها، ایندکس‌ها، تریگرها، محدودیت‌ها و مشخصات مجوزهای آن جدول را حذف می‌کند.

نحو

DROP TABLE table_name;

در مثال منبع ابتدا جدول CUSTOMERS با DESC CUSTOMERS بررسی می‌شود و سپس حذف می‌گردد:

SQL> DROP TABLE CUSTOMERS;
Query OK, 0 rows affected (0.01 sec)

SQL> DESC CUSTOMERS;
ERROR 1146 (42S02): Table 'TEST.CUSTOMERS' doesn't exist

در این مثال TEST نام پایگاه دادهٔ مورد استفاده است.

فصل‌های ۱۳ و ۱۴ — INSERT و SELECT

پرس‌وجوی INSERT

دستور INSERT INTO برای افزودن سطرهای جدید داده به جدول استفاده می‌شود.

نحو

INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)]
VALUES (value1, value2, value3,...valueN);

column1 تا columnN نام ستون‌هایی هستند که داده باید در آن‌ها درج شود. اگر برای تمام ستون‌های جدول مقدار درج می‌کنید، لازم نیست نام ستون‌ها را بنویسید؛ اما ترتیب مقادیر باید دقیقاً با ترتیب ستون‌های جدول یکسان باشد:

INSERT INTO TABLE_NAME VALUES (value1,value2,value3,...valueN);

دستورهای زیر شش رکورد نخست جدول CUSTOMERS را ایجاد می‌کنند:

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'kaushik', 23, 'Kota', 2000.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'Hardik', 27, 'Bhopal', 8500.00 );

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Komal', 22, 'MP', 4500.00 );

INSERT INTO CUSTOMERS
VALUES (7, 'Muffy', 24, 'Indore', 10000.00 );

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

پرکردن یک جدول از جدول دیگر

اگر جدول دوم مجموعهٔ فیلدهای لازم را داشته باشد، می‌توان با SELECT داده‌های آن را وارد جدول نخست کرد:

INSERT INTO first_table_name [(column1, column2, ... columnN)]
   SELECT column1, column2, ...columnN
   FROM second_table_name
   [WHERE condition];

پرس‌وجوی SELECT

دستور SELECT داده را از جدول پایگاه داده بازیابی می‌کند و نتیجه را به شکل جدول نتیجه برمی‌گرداند. این جدول‌ها Result Set (مجموعه‌نتیجه) نام دارند.

نحو

SELECT column1, column2, columnN FROM table_name;

برای بازیابی همهٔ فیلدها:

SELECT * FROM table_name;

مثال برای بازیابی ID، NAME و SALARY:

SQL> SELECT ID, NAME, SALARY FROM CUSTOMERS;
+----+----------+----------+
| ID | NAME     | SALARY   |
+----+----------+----------+
|  1 | Ramesh   |  2000.00 |
|  2 | Khilan   |  1500.00 |
|  3 | kaushik  |  2000.00 |
|  4 | Chaitali |  6500.00 |
|  5 | Hardik   |  8500.00 |
|  6 | Komal    |  4500.00 |
|  7 | Muffy    | 10000.00 |
+----+----------+----------+

برای دریافت تمام فیلدهای جدول:

SQL> SELECT * FROM CUSTOMERS;

خروجی شامل همان هفت رکورد کامل با ستون‌های ID، NAME، AGE، ADDRESS و SALARY است.

فصل‌های ۱۵ تا ۱۸ — WHERE، AND/OR، UPDATE و DELETE

عبارت WHERE

WHERE برای مشخص کردن شرط هنگام بازیابی داده از یک جدول یا هنگام Join (پیوند) چند جدول استفاده می‌شود. فقط زمانی که شرط داده‌شده برقرار باشد مقدار متناظر برگردانده می‌شود.

WHERE برای فیلترکردن رکوردها و بازیابی فقط رکوردهای لازم به‌کار می‌رود و علاوه بر SELECT در دستورهایی مانند UPDATE و DELETE نیز استفاده می‌شود.

SELECT column1, column2, columnN
FROM table_name
WHERE [condition]

شرط می‌تواند از عملگرهای مقایسه‌ای یا منطقی مانند >، <، =، LIKE و NOT استفاده کند.

بازیابی مشتریانی با حقوق بیش از ۲۰۰۰:

SQL> SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE SALARY > 2000;
-- Chaitali 6500.00
-- Hardik   8500.00
-- Komal    4500.00
-- Muffy   10000.00

بازیابی مشتری با نام Hardik:

SQL> SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE NAME = 'Hardik';
-- ID 5, SALARY 8500.00

متن منبع تأکید می‌کند که رشته‌ها باید داخل کوتیشن تکی قرار گیرند، در حالی که مقادیر عددی بدون کوتیشن نوشته می‌شوند.

عملگرهای AND و OR

AND و OR چند شرط را برای محدودتر کردن داده‌ها در یک دستور SQL ترکیب می‌کنند و به آن‌ها عملگرهای پیوندی نیز گفته می‌شود.

عملگر AND

SELECT column1, column2, columnN
FROM table_name
WHERE [condition1] AND [condition2]...AND [conditionN];

می‌توان هر تعداد شرط را با AND ترکیب کرد. برای انجام عمل، همهٔ شرط‌های جداشده با AND باید درست باشند.

SQL> SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE SALARY > 2000 AND age < 25;
-- Komal 4500.00
-- Muffy 10000.00

عملگر OR

SELECT column1, column2, columnN
FROM table_name
WHERE [condition1] OR [condition2]...OR [conditionN]

در ترکیب با OR کافی است یکی از شرط‌ها درست باشد.

SQL> SELECT ID, NAME, SALARY
FROM CUSTOMERS
WHERE SALARY > 2000 OR age < 25;
-- kaushik 2000.00
-- Chaitali 6500.00
-- Hardik 8500.00
-- Komal 4500.00
-- Muffy 10000.00

پرس‌وجوی UPDATE

UPDATE برای تغییر رکوردهای موجود یک جدول استفاده می‌شود. با WHERE می‌توان فقط سطرهای منتخب را به‌روزرسانی کرد؛ بدون WHERE تمام سطرها تحت تأثیر قرار می‌گیرند.

UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

می‌توان شرط‌های متعدد را با AND یا OR ترکیب کرد.

مثال تغییر نشانی مشتری با ID = 6:

SQL> UPDATE CUSTOMERS
SET ADDRESS = 'Pune'
WHERE ID = 6;

پس از اجرا، نشانی رکورد Komal از MP به Pune تغییر می‌کند.

برای تغییر ADDRESS و SALARY همهٔ رکوردها، عبارت WHERE حذف می‌شود:

SQL> UPDATE CUSTOMERS
SET ADDRESS = 'Pune', SALARY = 1000.00;

در خروجی منبع، نشانی تمام هفت رکورد Pune و حقوق همه 1000.00 می‌شود.

پرس‌وجوی DELETE

DELETE رکوردهای موجود جدول را حذف می‌کند. با WHERE فقط سطرهای انتخاب‌شده حذف می‌شوند؛ در غیر این صورت تمام رکوردها حذف خواهند شد.

DELETE FROM table_name
WHERE [condition];

مثال حذف مشتری با ID = 6:

SQL> DELETE FROM CUSTOMERS
WHERE ID = 6;

پس از اجرا، رکورد Komal حذف می‌شود و شش رکورد باقی می‌ماند.

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

SQL> DELETE FROM CUSTOMERS;

پس از این دستور، جدول CUSTOMERS هیچ رکوردی نخواهد داشت.

فصل‌های ۱۹ تا ۲۴ — LIKE، TOP، ORDER BY، GROUP BY، DISTINCT و مرتب‌سازی

عبارت LIKE

LIKE یک مقدار را با مقادیر مشابه و با استفاده از Wildcard (نویسهٔ عام) مقایسه می‌کند. دو نویسهٔ عام معرفی‌شده عبارت‌اند از علامت درصد (%) و زیرخط (_).

% نمایندهٔ صفر، یک یا چند نویسه است و _ نمایندهٔ یک نویسه یا رقم منفرد است. این نمادها می‌توانند با هم ترکیب شوند.

نحوهای پایه

SELECT FROM table_name WHERE column LIKE 'XXXX%'
SELECT FROM table_name WHERE column LIKE '%XXXX%'
SELECT FROM table_name WHERE column LIKE 'XXXX_'
SELECT FROM table_name WHERE column LIKE '_XXXX'
SELECT FROM table_name WHERE column LIKE '_XXXX_'

XXXX می‌تواند هر مقدار عددی یا رشته‌ای باشد و می‌توان چند شرط را با AND یا OR ترکیب کرد.

شرطمفهوم
WHERE SALARY LIKE '200%'مقادیری که با ۲۰۰ شروع می‌شوند.
WHERE SALARY LIKE '%200%'مقادیری که ۲۰۰ در هر موقعیتی در آن‌ها باشد.
WHERE SALARY LIKE '_00%'مقادیری که رقم دوم و سوم آن‌ها ۰۰ است.
WHERE SALARY LIKE '2_%_%'مقادیری که با ۲ آغاز می‌شوند و دست‌کم سه نویسه طول دارند.
WHERE SALARY LIKE '%2'مقادیری که به ۲ ختم می‌شوند.
WHERE SALARY LIKE '_2%3'مقادیری که نویسهٔ دوم آن‌ها ۲ است و با ۳ پایان می‌یابند.
WHERE SALARY LIKE '2___3'عددهای پنج‌رقمی که با ۲ آغاز و با ۳ پایان می‌یابند.

مثال بازیابی رکوردهایی که SALARY آن‌ها با ۲۰۰ شروع می‌شود:

SQL> SELECT * FROM CUSTOMERS
WHERE SALARY LIKE '200%';
-- Ramesh 2000.00
-- kaushik 2000.00

عبارت TOP

TOP برای دریافت تعداد N رکورد نخست یا X درصد از رکوردهای جدول استفاده می‌شود.

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE [condition]

سه نمونهٔ معادل برای دریافت سه رکورد نخست:

-- SQL Server
SQL> SELECT TOP 3 * FROM CUSTOMERS;

-- MySQL
SQL> SELECT * FROM CUSTOMERS
LIMIT 3;

-- Oracle
SQL> SELECT * FROM CUSTOMERS
WHERE ROWNUM <= 3;

در هر سه خروجی منبع، سه رکورد نخست Ramesh، Khilan و kaushik برگردانده می‌شوند.

عبارت ORDER BY

ORDER BY داده را بر اساس یک یا چند ستون به‌صورت صعودی یا نزولی مرتب می‌کند. برخی پایگاه‌های داده به‌طور پیش‌فرض نتایج پرس‌وجو را صعودی مرتب می‌کنند.

SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

می‌توان بیش از یک ستون را در ORDER BY استفاده کرد؛ ستون مورد استفاده برای مرتب‌سازی باید در فهرست ستون‌ها قرار داشته باشد.

مرتب‌سازی صعودی بر اساس NAME و SALARY:

SQL> SELECT * FROM CUSTOMERS
     ORDER BY NAME, SALARY;

ترتیب خروجی منبع: Chaitali، Hardik، kaushik، Khilan، Komal، Muffy، Ramesh.

مرتب‌سازی نزولی بر اساس NAME:

SQL> SELECT * FROM CUSTOMERS
     ORDER BY NAME DESC;

ترتیب خروجی منبع: Ramesh، Muffy، Komal، Khilan، kaushik، Hardik، Chaitali.

GROUP BY

GROUP BY همراه SELECT برای قرار دادن داده‌های یکسان در گروه‌ها استفاده می‌شود. این عبارت پس از WHERE و پیش از ORDER BY قرار می‌گیرد.

SELECT column1, column2
FROM table_name
WHERE [ conditions ]
GROUP BY column1, column2
ORDER BY column1, column2

برای محاسبهٔ مجموع حقوق هر مشتری:

SQL> SELECT NAME, SUM(SALARY) FROM CUSTOMERS
     GROUP BY NAME;
+----------+-------------+
| NAME     | SUM(SALARY) |
+----------+-------------+
| Chaitali |     6500.00 |
| Hardik   |     8500.00 |
| kaushik  |     2000.00 |
| Khilan   |     1500.00 |
| Komal    |     4500.00 |
| Muffy    |    10000.00 |
| Ramesh   |     2000.00 |
+----------+-------------+

سپس منبع جدولی با نام‌های تکراری Ramesh و kaushik در نظر می‌گیرد و همان پرس‌وجوی GROUP BY را اجرا می‌کند. نتیجهٔ تجمیع:

+---------+-------------+
| NAME    | SUM(SALARY) |
+---------+-------------+
| Hardik  |     8500.00 |
| kaushik |     8500.00 |
| Komal   |     4500.00 |
| Muffy   |    10000.00 |
| Ramesh  |     3500.00 |
+---------+-------------+

کلیدواژهٔ DISTINCT

DISTINCT همراه SELECT برای حذف رکوردهای تکراری و بازیابی فقط مقادیر یکتا استفاده می‌شود.

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

SELECT DISTINCT column1, column2,.....columnN
FROM table_name
WHERE [condition]

ابتدا پرس‌وجوی زیر حقوق‌ها را با مقدار تکراری 2000.00 برمی‌گرداند:

SQL> SELECT SALARY FROM CUSTOMERS
     ORDER BY SALARY;

1500.00
2000.00
2000.00
4500.00
6500.00
8500.00
10000.00

با افزودن DISTINCT مقدار تکراری حذف می‌شود:

SQL> SELECT DISTINCT SALARY FROM CUSTOMERS
     ORDER BY SALARY;

1500.00
2000.00
4500.00
6500.00
8500.00
10000.00

مرتب‌سازی نتایج SQL

این بخش بار دیگر استفاده از ORDER BY برای مرتب‌سازی صعودی یا نزولی داده‌ها بر اساس یک یا چند ستون را توضیح می‌دهد:

SELECT column-list
FROM table_name
[WHERE condition]
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

مثال صعودی بر اساس NAME و SALARY و مثال نزولی بر اساس NAME همان نتایج بخش پیشین را تولید می‌کنند.

برای مرتب‌سازی سطرها با ترتیب ترجیحی سفارشی، منبع از CASE در ORDER BY استفاده می‌کند:

SQL> SELECT * FROM CUSTOMERS
    ORDER BY (CASE ADDRESS
    WHEN 'DELHI'   THEN 1
    WHEN 'BHOPAL'   THEN 2
    WHEN 'KOTA'   THEN 3
    WHEN 'AHMADABAD' THEN 4
    WHEN 'MP'  THEN 5
    ELSE 100 END) ASC, ADDRESS DESC;

در خروجی منبع ترتیب رکوردها بر اساس نشانی چنین است: Delhi، Bhopal، Kota، MP، Mumbai، Indore و Ahmedabad. این روش ابتدا نشانی‌های دارای اولویت صریح را مطابق ترتیب ترجیحی مرتب می‌کند و نشانی‌های باقی‌مانده را با ترتیب الفبایی معکوس قرار می‌دهد.

امتیاز کاربران به این مقاله

☆☆☆☆☆

0 نفر امتیاز داده اند. میانگین: 0.0 از 5

 

0 نظر

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

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

0 / 500

اطلاعات تماس

  • آدرس:اصفهان-خیابان ام کلثوم غربی - بعد خیابان تخم چی - بیست متر بعد از پیتزا ننه شب - کوچه تعمیر گاه سمار زغالی - پلاک 354 - درب مشکی - طبقه هفتم
  • آدرس ایمیل:najafzade@gmail.com
  • وب سایت:http://www.a00b.com/
  • تلفن ثابت:(+98)9131253620
  • تلفن همراه:09131253620