نگاهی دقیقتر به دستور select در sql
کاربرد دستور select در sql server
دستور select در sql server کاربردهای زیادی دارد. کاربرد اصلی این دستور برای واکشی رکوردهای پایگاه داده می باشد. چند کاربرد را در ذیل مورد بررسی قرار می دهیم.
در اولین کاربرد از این دستور برای واکشی دیتا از پایگاه داده استفاده می شود. شکل کلی:
SELECT column1, column2, ...
FROM table_name;
و یا
SELECT * FROM table_name;
در دستور Select هم می توان نام ستونها را نوشت و هم می توان به جای تمامی نامهای ستونها از علامت * استفاده نمود.
شکل دیگر دستور Select استفاده از آن به صورت Select Distict می باشد که در این صورت رکوردهایی که تکراری هستند فقط یک بار نمایش داده می شوند. شکل کلی دستور:
SELECT DISTINCT column1, column2, ...
FROM table_name;
مثال: جدول اطلاعات زیر را در نظر بگیرید:
CustomerID
|
PostalCode
|
Country
|
1
|
12209
|
Germany
|
2
|
05021
|
Mexico
|
3
|
05023
|
Mexico
|
4
|
WA1 1DP
|
UK
|
5
|
S-958 22
|
Sweden
|
دستور زیر را روی این جدول اجرا می نمائیم:
SELECT DISTINCT Country FROM Customers;
نتیجه به شکل زیر خواهد بود:
Country
|
Germany
|
Mexico
|
UK
|
Sweden
|
دستور select into
با استفاده از این دستور اطلاعات واکشی شده با دستور Select در جدول جدید کپی می شوند. شکل دستور:
SELECT *
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;
و یا
SELECT column1, column2, column3, ...
INTO newtable [IN externaldb]
FROM oldtable
WHERE condition;
منظور از عبارت [IN externaldb] در sql این است که میتوان اطلاعات را با این دستور از یک دیتابیس به یک دیتابیس دیگر منتقل نمود. (حتی در یک Server دیگر)
چند مثال:
SELECT * INTO CustomersBackup2017
FROM Customers;
و
SELECT * INTO CustomersBackup2017 IN 'Backup.mdb'
FROM Customers;
و
SELECT CustomerName, ContactName INTO CustomersBackup2017
FROM Customers;
و
SELECT * INTO CustomersGermany
FROM Customers
WHERE Country = 'Germany';
و
SELECT Customers.CustomerName, Orders.OrderID
INTO CustomersOrderBackup2017
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
و
SELECT * INTO newtable
FROM oldtable
WHERE 1 = 0;
مثال آخری یک جدول خالی یا ساختار و اسکمای جدول اصلی ایجاد می نماید.
دستور Insert into Select
توسط این دستور رکوردها در جدولی که از قبل موجود است کپی می شوند. ساختار دستور:
INSERT INTO table2
SELECT * FROM table1
WHERE condition;
و یا استفاده از نام فیلدها:
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;
مثال:
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;
و یا
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country FROM Suppliers;
و استفاده از شرط:
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers
WHERE Country='Germany';
دستور Select Top
از این عبارت برای مشخص سازی تعداد رکوردهای مورد واکشی استفاده می شود که تعداد رکوردها هم می تواند به صورت درصد و هم به صورت عدد صحیح نوشته شود.
شکل کلی در SQL و Access:
SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;
مثال در Oracle:
SELECT column_name(s)
FROM table_name
WHERE ROWNUM <= number;