راﻫﻨﻤﺎي ﺟﺎﻣﻊ دﺳﺘﻮراتSQL ﺑﻪ اﻧﻀﻤﺎم ﻣﺜﺎل ﻫﺎيSQL Server اﯾﻦ ﮐﺘﺎب در ﻣﻮرد ﺑﯿﺸﺘﺮ ﺳﯿﺴﺘﻢ ﻫﺎي ﭘﺎﯾﮕﺎه داده راﺑﻄﻪ اي ﻣﻌﺮوف ﻣﺜﻞMS Access ، MS SQL Server ، MySQL ﺗﻮﺿﯿﺢ داده اﺳﺖ و ﺑﺮاي ﻫﺮ ﮐﺪام دﺳﺘﻮرات و ﻣﺜﺎﻟﻬﺎي ﻣﺮﺑﻮﻃﻪ را آورده اﺳﺖ. ﻣﺜﺎﻟﻬﺎي ﺿﻤﯿﻤﻪ ﺷﺪه ﻣﺮﺑﻮط ﺑﻪSQL Server 2008 ﻫﺴﺘﻨﺪ ﮐﻪ در ﻣﺤﯿﻂManagement Studio و ﺑﺎ ﭘﺎﯾﮕﺎه داده آﻣﻮزﺷﯽNorthWind ﺗﺴﺖ ﺷﺪ ه اﻧﺪ. ﻧﮕﺎرش اول ﭼﺎپ ﻋﻤﻮﻣﯽ ﻏﯿﺮ راﯾﮕﺎن اﯾﻦ ﮐﺘﺎب ﺑﻪ ﻫﺮ ﻧﺤﻮي ﻏﯿﺮ ﻣﺠﺎز اﺳﺖ اﺳﺘﻔﺎده از ﻣﻄﺎﻟﺐ ﮐﺘﺎب ﺑﺎ ذﮐﺮ ﻣﻨﺒﻊ ﺑﻼﻣﺎﻧﻊ اﺳﺖ
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
SQLراهنماي جامع دستورات SQL Serverبه انضمام مثال هاي
، MS Access ،MS SQL Serverهاي پایگاه داده رابطه اي معروف مثل این کتاب در مورد بیشتر سیستمMySQLمثالهاي ضمیمه شده . توضیح داده است و براي هر کدام دستورات و مثالهاي مربوطه را آورده استو با پایگاه داده آموزشی Management Studio هستند که در محیط SQL Server 2008مربوط به
NorthWindه اندتست شد.
نگارش
اول
به هر نحوي غیر مجاز استاین کتاب چاپ عمومی غیر رایگان استفاده از مطالب کتاب با ذکر منبع بالمانع است
مطالبفهرست
فصل اول
SQL….…………………………………………………………......................................………...............1مقدمه اي بر
SQL داده استهاي یک زبان استاندارد براي دسترسی و دستکاري پایگاه.
SQLچیست؟
·SQL مخففStructured Query Language ساخت یافته استان پرس و جوي بزیا·SQL دهدداده را میهايدستکاري به پایگاهبه شما اجازه دسترسی و·SQLاستانداردیکANSI)است) ملی آمریکاسه استانداردموس
؟می تواند انجام دهدSQLچه کارهایی
·SQLکندسریع اجرا می تواند پایگاه داده پرس و جو را در برابر یکیک·SQLواکشی کندپایگاه داده را از یکاده تواند دمی·SQLکنددرجایی را در پایگاه داده تواند رکوردهمی·SQLر پایگاه داده به روز کندیی را دتواند رکوردهامی·SQLردهاي یک پایگاه داده را حذف کندتواند رکومی·SQLبوجود آورديجدیدهاي پایگاه داده تواندمی·SQLپایگاه داده بوجود آوردا در راي جدیديتواند جدولهمی·SQLبسازددر پایگاه داده رویه هاي ذخیره شده تواند می·SQLایگاه داده بوجود آوردیی را در پتواند نماهامی·SQLیم کندمجوز تنظرویه هاي ذخیره شده و نماها براي جداول،تواند می
SQLاستاندارد هست ولی...
.وجود دارندSQLزبان اما نسخه هاي مختلفی از استاندارد است ANSIیکSQLاگرچه
، SELECT ،UPDATE ،DELETE ،INSERTمثل(ي اصلیفرمانهادست کم ازهمه آنها،ANSIبا این حال، براي موافقت با
WHERE (به روش مشابهی پشتیبانی می کنند.
پایهدستورات -اولفصل
91بهار SQLدستوراتجامعراهنماي
2
!دارندSQLهاي استانداردعالو ه بر راخودشانیاختصاصضمیمه هاي نیز SQLبیشتر برنامه هاي پایگاه داده :نکته
وب سایت تاندر SQLاز استفاده
:داشتنیاز خواهیدزیرموارد به دهد،نمایش ک پایگاه داده یرا از براي ساختن یک وب سایت که بعضی داده
)MS Access ،SQL Server ،MySQLمثل (RDBMSبرنامه پایگاه داده یک ·ASP یاphp اسکریپتی سمت سرور، مثلیک زبان ·
·SQL·HTML / CSS
RDBMS
RDBMSمخففRelational Database Management System استرابطه اي داده سیستم مدیریت پایگاه یا.
RDBMSبرايپایه ايSQLیستمهاي پایگاه داده جدید از قبیل و براي همه سMS SQL Server ،IBM DB2 ،Oracle ،MySQL وMicrosoft Accessاست.
.شود، ذخیره می شوندمینامیده اشیاء پایگاه داده که جداول در RDBMS داده در
.شودسطرها میها وو شامل ستوناست یکپارچه مرتبطدادهمجموعیک جدول
SQLگرامر
پایگاه دادهجداول
) "Customers"یا "Orders"مثل (جدول بوسیله یک نامهر.استول چند جدیک یا اغلب شامل دادهپایگاه یک .هستنددادههمراه) سطرها(جداول شامل رکوردها .شودشناسایی می
:آمده است”Persons“به نام جدول مثالی از یک زیردر
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
91بهار SQLدستوراتجامعراهنماي
3
.است) Cityو P_Id ،LastName ،FirstName ، Address(و پنج ستون) براي هر شخص(جدول باال شامل سه رکورد
SQLعبارات
.انجام می شوندSQL عباراتانجام دهید، با نیاز دارید در یک پایگاه داده ی کهعملیاتبیشتر
:کندهمه رکوردها را از جدول اشخاص انتخاب میزیرSQL جمله
SELECT * FROM Persons
. را به شما درس خواهیم دادSQL عبارات مختلفهمه،یدر این آموزش
...داشته باشیدبه خاطر
· SQLحساس به حروف کوچک و بزرگ نیست.
؟SQLسمیکالون بعداز عبارات
.داندالزم میرا SQLمیکالون در انتهاي هر جملههاي پایگاه داده یک سبیشتر سیستم
یش از یک در سیستم هاي پایگاه داده است که اجازه اجراي بSQLیک روش استاندارد براي جدا سازي هر عبارت میکالونس.را در درخواست سرور را می دهدSQLعبارت
قرار دهیم اما SQLسمیکالون بعد از هر عبارت مجبور نیستم یک استفاده می کنیم و SQL Server 2000و MS Accessما از .بعضی برنامه هاي پایگاه داده شما را مجبور به استفاده آن می کنند
DML وDDL درSQL
SQLزبان دستکاري داده : دو بخش تقسیم شودند بهمی توا)DML (و زبان تعریف داده)DDL.(
:SQLزبان دستکاري داده کردن از بخش بروزدستورات پرس و جو و
·SELECT-استخراج داده از یک پایگاه داده·UPDATE-بروز کردن داده در یک پایگاه داده·DELETE -حذف داده از یک پایگاه داده·INSERT INTO-درج یک داده جدید در یک پایگاه داده
91بهار SQLدستوراتجامعراهنماي
4
همچنین کلیدهاي فهرست را تعریف می کند، ارتباط .پایگاه داده اجازه ساخت یا حذف را می دهدجداولبه SQLاز DDLبخش :ازعبارتندSLQدر DDLمهمترین عبارات .بین جداول را تعیین می کند و محدودیت ها بین جداول را اعمال می کند
·CREATE DATABASE-یک پایگاه داده جدیدساخت·ALTER DATABASE- پایگاه دادهاصالح یک·CREATE TABLE-یک جدول جدیدساخت·ALTER TABLE - جدولاصالح یک·DROP TABLE- جدولیک حذف·CREATE INDEX -کلید جستجو(کلید جستجویک ساخت(·DROP INDEX-حذف یک فهرست
SQLدر SELECTعبارت
.توضیح خواهد داد* SELECTوSELECT این فصل در مورد
SQLدر SELECTعبارت
.شودبراي انتخاب داده از یک پایگاه داده استفاده میSELECT عبارت
.می شودنامیدهجه نتی-جدولکه در یک جدول ذخیره می شود نتیجه
SELECT درSQLگرامر
SELECT column_name(s)FROM table_name
و
SELECT * FROM table_name
.استselectمثلSELECT. نیستکوچک حساس به حروف بزرگ وSQL :تذکر
SQL درSELECTیک مثال
91بهار SQLدستوراتجامعراهنماي
5
:"Persons"جدول
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
.جدول انتخاب کنیمازرا "FirstName"و"LastName"با نامهایی خواهیم محتواي ستوناکنون می
:بریمرا بکار میزیرSELECT عبارت
SELECT LastName, FirstName FROM Persons
:خواهد شدنتیجه اینگونه
LastName FirstName
Hansen Ola
Svendson Tove
Pettersen Kari
* SELECT مثال
.را انتخاب کنیم"Persons"خواهیم همه ستونهاي جدول اکنون می
:بریممی را بکار زیرSELECT عبارت
SELECT * FROM Persons
!باشدمیهاسریع براي انتخاب کل ستونروشی)*(ستاره کاراکتر : توجه
:نتیجه اینگونه خواهد شد
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
91بهار SQLدستوراتجامعراهنماي
6
نتیجه- پیمایش در جدول
-Move-Toمثل ؛دندهمیجدول نتیجهدر را اجازه پیمایش با توابع برنامه نویسی هاي نرم افزاري پایگاه داده بیشتر سیستم
فراخوانی تابع، با داده به دسترسی در مورد براي یادگیري . به عنوان قسمتی از این آموزش نیستنداز این قبیل توابع برنامه نویسی.بازدید کنیدماPHPدوره آموزشی یاADOیآموزشدروه از لطفا
SQL SELECT DISTINCTعبارت
. توضیح خواهد دادSELECT DISTINCT این فصل در مورد جمله
SQLدر SELECT DISTINCT عبارت
خواهید گاهی اوقات میامااین یک مشکل نیست . محتواي تکراري داشته باشدمقدار کن است هاي یک جدول ممبرخی از ستون.را لیست کنیدهستندکه در یک جدول )متمایز(مختلفیمقادیرفقط
کند که رکورد یا رکوردهایی باید به روز تعیین میWHERE عبارت. توجه کنیدUPDATEدر گرامر WHEREبه عبارت :کتهن!کنید همه کوردها بروز خواهند شدرا حذف WHERE اگر عبارت . شوند
SQL UPDATE مثال
:"Persons"جدول
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger
5 Tjessem Jakob
.کنیمآپدیت را ”Persons“جدولرا در"Tjessem, Jakob" می خواهیم شخصاکنون
: کنیماستفاده میزیرSQL از جمله
E PersonsUPDATSET Address='Nissestien 67', City='Sandnes'WHERE LastName='Tjessem' AND FirstName='Jakob'
:اکنون شبیه این است”Persons“جدول
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger
5 Tjessem Jakob Nissestien 67 Sandnes
91بهار SQLدستوراتجامعراهنماي
16
SQLدر UPDATE اخطار
:مثل این،را در مثال باال حذف کرده باشیمWHEREاگر ما عبارت.دقت کنیدمی کنید، بروز را زمانیکه رکوردها
. شودبراي حذف رکوردهاي یک جدول استفاده میDELETE جمله
DELETE عبارت
.شود جدول استفاده مییک براي حذف سطرهاي DELETE جمله
SQL DELETE گرامر
DELETE FROM table_nameWHERE some_column=some_value
رکوردها یا رکوردهایی باید حذف کند کهتعیین میWHEREعبارت . توجه کنیدDELETE در گرامرWHEREتبه عبار:نکته.را حذف کنید همه رکوردها حذف خواهند شدWHEREاگر شما عبارت . شوند
SQLدر DELETE مثال
:"Persons"جدول
91بهار SQLدستوراتجامعراهنماي
17
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger
5 Tjessem Jakob Nissestien 67 Sandnes
.کنیمحذف "Persons" جدول را از"Tjessem, Jakob" می خواهیم شخصاکنون
: یمکناستفاده میزیرSQL از جمله
DELETE FROM PersonsWHERE LastName='Tjessem' AND FirstName='Jakob'
:اکنون شبیه این است”Persons“جدول
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
4 Nilsen Johan Bakken 2 Stavanger
حذف همه سطرها
جدول، ویژگی ها و فهرست هاي به این معنی که ساختار. جدول ممکن استحذف بدون ها در یک جدول حذف کردن همه سطر.خواهند ماندباقی دست نخورده
.شروع می شود"sa"اشخاصی را انتخاب کنیم که شهر زندگی آنها با "persons"هیم از جدولاکنون می خوا
:زیر استفاده می کنیم SELECT از دستور
SELECT * FROM PersonsWHERE City LIKE 'sa%'
91بهار SQLدستوراتجامعراهنماي
23
:نتیجه اینگونه خواهد شد
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
.باشد "nes"اشخاصی را انتخاب کنیم که شهر زندگی آنها شامل الگوي "persons"جدول سپس می خواهیم از
:زیر استفاده می کنیم SELECT از دستور
SELECT * FROM PersonsWHERE City LIKE '%nes%'
:نتیجه اینگونه خواهد شد
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
_استفاده از کاراکتر جایگزین شونده
را می یابد ادامه"la"با اشخاصی که نام آنها با هر کاراکتري شروع می شود و""Personsاز جدولاکنون می خواهیم .انتخاب کنیم
:زیر استفاده می کنیم SELECT از دستور
SELECT * FROM PersonsWHERE FirstName LIKE '_la'
:نتیجه اینگونه خواهد شد
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
با هرشروع می شود و"s"ن ها با اشخاصی را انتخاب کنیم که نام خانوادگی آ"persons"س می خواهیم از جدول سپ.ادامه می یابد را انتخاب کنیم"on"و ، هر کاراکتر"end"، کاراکتر
:زیر استفاده می کنیم SELECT از دستور
SELECT * FROM PersonsWHERE LastName LIKE 'S_end_on'
91بهار SQLدستوراتجامعراهنماي
24
:نتیجه اینگونه خواهد شد
P_Id LastName FirstName Address City
2 Svendson Tove Borgvn 23 Sandnes
[charlist]استفاده از کاراکتر جایگزین شونده
شروع می"p"یا "b" یا "s"اشخاصی را انتخاب کنیم که نام خانوادگی آن ها با"persons"می خواهیم از جدول اکنون .شود
:زیر استفاده می کنیم SELECT از دستور
SELECT * FROM PersonstName LIKE '[bsp]%'WHERE Las
:نتیجه اینگونه خواهد شد
P_Id LastName FirstName Address City
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
وع شر"p"یا "b" یا "s"اشخاصی را انتخاب کنیم که نام خانوادگی آن ها با"persons"می خواهیم از جدول سپس .نمی شود
:زیر استفاده می کنیم SELECT از دستور
SELECT * FROM PersonsWHERE LastName LIKE '[!bsp]%'
:نتیجه اینگونه خواهد شد
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
SQLدر INعملگر
.تعیین کنید WHEREندگانه در عبارت به شما اجازه می دهد مقادیر چINعملگر
SQL در IN گرامر
91بهار SQLدستوراتجامعراهنماي
25
SELECT column_name(s)FROM table_nameWHERE column_name IN (value1,value2,...)
INمثالی از عملگر
:"Persons"جدول
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
است را انتخاب "pettersen"یا "Hansen"که نام خانوادگی آن ها برابر با اکنون می خواهیم از جدول باال اشخاصی را.کنیم
:زیر استفاده می کنیم SELECT از دستور
SELECT * FROM Personsn','Pettersen')WHERE LastName IN ('Hanse
:نتیجه اینگونه خواهد شد
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
SQLدر BETWEENعملگر
.ی شود، براي انتخاب یک دامنه از داده بین مقدار استفاده مWHEREدر یک عبارت BETWEENعملگر
BETWEEN عملگر
.دباشمتن یا داده مقادیر می توانند اعداد،. دامنه اي از داده ها را از بین دو مقدار انتخاب می کندBETWEEN عملگر
SQL در BETWEEN گرامر
91بهار SQLدستوراتجامعراهنماي
26
SELECT column_name(s)FROM table_nameWHERE column_nameBETWEEN value1 AND value2
BETWEENمثال عملگر
:"Persons"جدول
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
"pettersen"و "Hansen"بینحروف الفباصورت که نام خانوادگی آن ها به اکنون می خواهیم از جدول باال اشخاصی را
.است را انتخاب کنیم
:زیر استفاده می کنیم SELECT از دستور
SELECT * FROM PersonsWHERE LastNameBETWEEN 'Hansen' AND 'Pettersen'
:نتیجه اینگونه خواهد شد
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
.در پایگاه داده هاي مختلف به طور متفاوت عمل می کندBETWEENعملگر :تذکر
زیرا نمی شوند؛لیست "Pettersen"یا "Hansen"، اشخاصی با نام خانوادگیدر بعضی از پایگاه داده ها.را انتخاب می کند) ثناي مقادیر تستباست(فقط فیلدهایی که بین آن ها هستند BETWEENعملگر
BETWEEN، زیرا عملگر لیست می شوند"pettersen"یا "Hansen"ه ها، اشخاصی با نام خانوادگیدر دیگر پایگاه داد
.آن ها هستند را انتخاب می کندو شامل فیلدهایی که بین
شبیه مثال (در لیست نیست "pattersen"در لیست هستند اما "Hansen"اشخاصی با نام خانوادگی،دیگربرخی در و ).ثناي مقدار آخر تستباست(را انتخاب می کند اولین مقدار تست و دیر تست ابین مقفیلدهايBETWEENعملگر ، زیرا ) باال
. چک کنیدBETWEENعملگر یگاه داده خود را با پارفتار : بنابراین
2مثال
91بهار SQLدستوراتجامعراهنماي
27
:استفاده کنیدNOT BETWEEN ، از ه بیرون از دامنه مثال قبل هستندبراي نمایش اشخاصی ک
FROM PersonsSELECT *WHERE LastNameNOT BETWEEN 'Hansen' AND 'Pettersen'
:نتیجه اینگونه خواهد شد
P_Id LastName FirstName Address City
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
Alias درSQL
. داده شودیا یک ستون می تواند یک جدول مستعار، یک نام SQL با
Alias درSQL
خوب چیزاین می تواند یک . معین کنید ) نام مستعار(Aliasمی توانید یک جدول یا یک ستون را با نام دیگر، با استفاده از
.پیچیده یا نام ستون طوالنی باشدبراي نام جدول
.تواند باشد اما معموال کوتاه استهر چیزي می Aliasیک نام
اي جدول هابر SQL در Alias گرامر
SELECT column_name(s)FROM table_nameAS alias_name
براي ستون ها SQL در Alias گرامر
SELECT column_name AS alias_nameFROM table_name
Aliasل مثا
"p"ترتیب ه جدول را بAlias. داریم"Product_Orders"بنام دیگر یو جدول"persons"بنامفرض کنید یک جدول
.معین می کنیم"po"و
.کنیملیستآن هست را مسئول"Ola Hansen"که سفارشاتی خواهیم همهاکنون می
91بهار SQLدستوراتجامعراهنماي
28
از دستور SELECT :زیر استفاده می کنیم
SELECT po.OrderID, p.LastName, p.FirstNameFROM Persons AS p,Product_Orders AS po
Hansen' AND p.FirstName='Ola'WHERE p.LastName='
:مشابه بدون نام هاي مستعارSELECTعبارت
SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstNameFROM Persons,Product_OrdersWHERE Persons.LastName='Hansen' AND Persons.FirstName='Ola'
می بینید، نام مستعار می تواند پرس و جو را هم براي نوشتن و هم براي خواندن باالSELECTعبارتهمانطور که از دو
.آسانتر کند
JOIN ها درSQL
JOIN ها درSQL ها رابطه بین برخی ستون ها در این جدولیک مبنی بر، چند جدولیا دوداده از پرس و جويبراي
.استفاده می شود
JOIN درSQL
رابطه بین برخی ستون ها مبنی بر یک ، SQLعبارتول در یک چند جدداده از دو یا پرس و جويبراي JOINکلمه کلیدي
.استفاده می شودها در این جدول
.اغلب با کلیدها با یکدیگر مرتبط هستندجدول ها در یک پایگاه داده
هر مقدار. استمنحصر براي هر سطرمقداربا یک مقدار) ترکیبی از ستون هایا(یک ستون ) Primary Key(کلید اصلی
، جلوگیري از هال جدوسراسر در ،اندن داده ها به یکدیگرهدف چسب. منحصر به فرد باشد،باید در داخل جدولکلید اصلی
.در هر جدول استهمه داده هاتکرار
:را ببینید"Persons"جدول
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
91بهار SQLدستوراتجامعراهنماي
29
یکسان "P_Id"مقدار ،به این معنا که دو سطر.است"persons"در جدول یک کلید اصلی"P_Id"ستون توجه کنید که .ر آن ها نام یکسانی داشته باشندگحتی امتمایز می نماید؛دو شخص راP_Id. نمی توانند داشته باشند
:را داریم"Order"پس جدول
O_Id OrderNo P_Id
1 77895 3
2 44678 3
3 22456 1
4 24562 1
5 34764 15
بدون "Persons"به جدول را "p-Id"است و ستون "Orders"جدولکلید اصلی دریک "O-Id"ستون توجه کنید که .دهداستفاده از نام آنها ارجاع می
.است"P-Id"ستون،رابطه بین دو جدول باالکه توجه کنید
JOINدر هاي مختلفSQL
.لیست می کنیمرا هایی که می توانید استفاده کنید و تفاوت بین آن هاJOIN، انواعادامه دهیممثال ها با قبل از اینکه
.دشته باشتطابق در هر دو جدول داکه حداقل یکوقتیسطرها را برمی گرداند، :JOIN
.حتی اگر نظیر آن در جدول راست نباشد؛تمام سطرهاي جدول چپ را برمی گرداند :LEFT JOIN
.حتی اگر نظیر آن در جدول چپ نباشد؛تمام سطرهاي جدول راست را برمی گرداند :RIGHT JOIN
.برمی گرداندسطرها را زمانی که نظیرش در یکی از جدول ها باشد، :FULL JOIN
SQLدر INNER JOIN لمه کلیديک
SQLدر INNER JOIN کلمه کلیدي
.در دو جدول وجود داشته باشد، بر می گرداندتطابق که حداقل یک سطر ها را زمانیINNER JOINکلمه کلیدي
.را با هر سفارشی لیست کنیمهمه اشخاصیمی خواهیم اکنون
:زیر استفاده می کنیم SELECT از دستور
SELECT Persons.LastName, Persons.FirstName, Orders.OrderNorsonsFROM Pe
INNER JOIN OrdersON Persons.P_Id=Orders.P_IdORDER BY Persons.LastName
:نتیجه اینگونه خواهد شد
LastName FirstName OrderNo
Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
Pettersen Kari 44678
اگر سطرهایی در . ل در دو جدول نظیر هستند، بر می گرداندکه حداقسطر ها را زمانیINNER JOINکلمه کلیدي"Persons" هستند که نظیرشان در"Orders"نیست، آن سطرها لیست نمی شوند.
91بهار SQLدستوراتجامعراهنماي
31
SQLدر LEFT JOIN کلمه کلیدي
SQLدر LEFT JOIN کلمه کلیدي
جدول راستگر نظیرش درحتی ا؛ )table_name1(تمام سطرهاي جدول چپ را برمی گرداندLEFT JOINکلمه کلیدي )table_name2 (وجود نداشته باشد.
rders.P_IdON Persons.P_Id=OORDER BY Persons.LastName
:نتیجه اینگونه خواهد شد
LastName FirstName OrderNo
Hansen Ola 22456
Hansen Ola 24562
Pettersen Kari 77895
91بهار SQLدستوراتجامعراهنماي
35
Pettersen Kari 44678
Svendson Tove
34764
.بر می گرداند (orders) همه سطرها از جدول راستو (persons) سطرها را از جدول چپمه ه FULL JOIN کلیديکلمه
وجود دارد که "Orders"اگر سطرهایی در نیست، یا ""Ordersوجود دارد که نظیرش در"Persons"اگر سطرهایی در
.نیز لیست می شوندنیست، آن سطرها "Persons"نظیرش در
SQLدر UNIONعملگر
.را ترکیب می کندSELECTدو یا چند دستور SQLدر UNIONعملگر
SQL UNION در عملگر
.استفاده می شود SELECT عبارتچند از دو یا ،نتیجهجدول براي ترکیب UNION عملگر
همچنین ستون ها باید . یکسانی از ستون ها را داشته باشدباید تعداد UNIONدر داخلSELECTعبارت هرتوجه کنید که.به باید ترتیب یکسان داشته باشندهمچنین ستون ها در هر عبارت مشا. باشندانند انواع داده هاي مشابه داشتههم
SQL UNION در گرامر
SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2
براي اجازه دادن به UNION ALLاز . به صورت پیش فرض فقط مقادیر متمایز را انتخاب می کندUNIONعملگر :توجه.مقادیر تکراري استفاده کنید
SQL UNION ALL در گرامر
SELECT column_name(s) FROM table_name1UNION ALLSELECT column_name(s) FROM table_name2
.است UNION در SELECT در اولین عبارتهاستوننام همیشه برابر با UNION نتیجهجدول در هاستوننام :انوشتهپ
SQL UNION در مثال:به جداول زیر نگاه کنید
"Employees_Norway":
91بهار SQLدستوراتجامعراهنماي
36
E_ID E_Name
01 Hansen, Ola
02 Svendson, Tove
03 Svendson, Stephen
04 Pettersen, Kari
"Employees_USA":
E_ID E_Name
01 Turner, Sally
02 Kent, Clark
03 Svendson, Stephen
04 Scott, Stephen
.کنیمرا لیستUSAوNorway درهمه کارمندهاي مختلفمی خواهیم اکنون
:زیر استفاده می کنیمSELECTاز دستور
SELECT E_Name FROM Employees_NorwayUNIONSELECT E_Name FROM Employees_USA
:جدول نتیجه اینگونه خواهد شد
E_Name
Hansen, Ola
Svendson, Tove
Svendson, Stephen
Pettersen, Kari
Turner, Sally
Kent, Clark
Scott, Stephen
با نام در مثال باال کارمند . شود استفاده USAو Norwayکارمندهايهمه لیست کردن تواند براي نمیاین دستور:توجه.قط مقادیر متمایز را انتخاب می کندفUNIONدستور . هاي یکسان قرار دارند و فقط یکی از آنها در لیست است
SQL UNION ALL در مثال
.کنیمرا لیستUSAوNorway کارمندهاي همه می خواهیم اکنون
91بهار SQLدستوراتجامعراهنماي
37
SELECT E_Name FROM Employees_NorwayUNION ALLSELECT E_Name FROM Employees_USA
:نتیجه
E_Name
Hansen, Ola
Svendson, Tove
Svendson, Stephen
Pettersen, Kari
Turner, Sally
Kent, Clark
Svendson, Stephen
Scott, Stephen
SQLدر SELECT INTOعبارت
.می تواند براي ساخت کپی هاي پشتیبان از جدول، استفاده شودSQLدر SELECT INTOعبارت
SQLدر SELECT INTOعبارت
.درون یک جدول متفاوت درج می کندآن رای کند وداده ها را از یکی از جدول ها انتخاب م SELECT INTO عبارت
.هاي پشتیبان از جدول استفاده می شودبیشتر اوقات براي کپی SELECT INTO عبارت
SQL SELECT INTO در گرامر
:می توانیم همه ستون ها را درون جدول جدید انتخاب کنیمما
SELECT *ernaldatabase]INTO new_table_name [IN ext
FROM old_tablename
:د نانتخاب کنیم که می خواهیم درون جدول جدید باشیا می توانیم فقط ستون هایی را
براي یک مرجع کامل از انواع داده موجود در . در ستون می تواند نگه داشته شودنوع داده مشخص می کند چه نوع داده ايMS Access ،SQL Server وMySQL برویدمادادهانواعمرجعبه.
CREATE TABLE مثال
و FirstName و LastName وP_Id : ایجاد کنیم که شامل پنج ستون"persons"اکنون می خواهیم یک جدول با نام Addressو Cityاست.
CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName))
:شودیمجادیا"Persons"جدولکهیزماند؛ می ساز"P_Id"ستونيروبرPRIMARY KEYتیمحدودکد زیر یک
MySQL:
CREATE TABLE Persons(P_Id int NOT NULL,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),PRIMARY KEY (P_Id))
SQL Server / Oracle / MS Access:
CREATE TABLE Persons(P_Id int NOT NULL PRIMARY KEY,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255))
CREATE TABLE Orders(O_Id int NOT NULL,OrderNo int NOT NULL,P_Id int,PRIMARY KEY (O_Id),CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)REFERENCES Persons(P_Id))
CREATE TABLE Persons(P_Id int NOT NULL AUTO_INCREMENT,LastName varchar(255) NOT NULL,FirstName varchar(255),Address varchar(255),City varchar(255),PRIMARY KEY (P_Id))
MySQL از کلمه کلیديAUTO_INCREMENTراي ویژگی یک براي اجauto-incrementاستفاده می کند.
SQLتوابع داخلی زیادي براي انجام محاسبات بر روي داده دارد.
SQLتوابع جمعی
.یک مقدار تکی محاسبه شده از مقادیر یک ستون را برمی گردانندSQLتوابع جمعی
:توابع جمعی مفید
·AVG()-معدل را برمی گرداند·COUNT()-تعداد سطرها را برمی گرداند·FIRST() -ولین مقدار را برمی گرداندا·LAST()-آخرین مقدار را برمی گرداند·MAX()-بیشترین مقدار را برمی گرداند·MIN()-کمترین مقدار را برمی گرداند·SUM()-مجموع را برمی گرداند
SQLاسکالرتوابع
.یک مقدار تکی مبنی بر مقدار ورودي را برمی گردانندSQLاسکالرتوابع
:مفیداسکالرع تواب
·UCASE() -تبدیل رشته به حروف بزرگ·LCASE() -تبدیل رشته به حروف کوچک·MID() -استخراج کاراکترها از یک رشته متنی·LEN()-طول یک رشته متنی را برمی گرداند·ROUND()- گرد می کندرشته عددي را با تعداد اعشار مشخصیک·NOW()-گرداندستم را برمیتاریخ و ساعت فعلی سی·FORMAT()-چگونگی نمایش یک فیلد را مشخص می کند
()AVGتابع
SQLتوابع -فصل سوم
91بهار SQLدستوراتجامعراهنماي
75
.مقدار میانگین از یک ستون عددي را برمی گرداند()AVGتابع
SQLدر ()AVGگرامر
SELECT AVG(column_name) FROM table_name
SQLدر ()AVGمثال
:زیر را داریم”Orders“جدول
O_Id OrderDate OrderPrice Customer
1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen
.مرا پیدا کنی”OrderPrice“اکنون می خواهیم مقدار میانگین فیلد
:تفاده می کنیمزیر اسSQLاز دستور
SELECT AVG(OrderPrice) AS OrderAverage FROM Orders
:نتیجه اینگونه خواهد شد
OrderAverage
950
.میانگین دارند را پیدا کنیم”OrderPrice“باالتر از مقدار ”OrderPrice“یک مقدار ) حداقل(که اکنون می خواهیم مشتریانی
:مزیر استفاده می کنیSQLاز دستور
SELECT Customer FROM OrdersWHERE OrderPrice>(SELECT AVG(OrderPrice) FROM Orders)
:نتیجه اینگونه خواهد شد
91بهار SQLدستوراتجامعراهنماي
76
Customer
Hansen
Nilsen
Jensen
SQLدر ()COUNTتابع
.تعدادي سطر که با یک معیارهاي مشخص تطبیق داده شده اند را برمی گرداندSQLدر ()COUNTتابع
:رکورد از یک جدول را برمی گرداندSQLدر (*)COUNTتابع
SELECT COUNT(*) FROM table_name
SQLدر COUNT(DISTINCT column_name)گرامر
:تعدادي مقادیر متمایز از ستون مشخصی را برمی گرداندCOUNT(DISTINCT column_name)تابع
SELECT COUNT(DISTINCT column_name) FROM table_name
Microsoftو ORACLEدر COUNT(DISTINCT): توجه SQL Server کار می کند و درMicrosoft Access کار نمی.کند
SQLدر COUNT(DISTINCT column_name)مثال
:زیر را داریم”Orders“جدول
91بهار SQLدستوراتجامعراهنماي
77
O_Id OrderDate OrderPrice Customer
1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen
:را بشماریم”Nilsen“اکنون می خواهیم تعداد سفارشات مشتري
:زیر استفاده می کنیمSQLاز دستور
SELECT COUNT(Customer) AS CustomerNilsen FROM OrdersWHERE Customer='Nilsen'
:سفارش دارد2مجموعا Nilsenن مشتري خواهد شد؛ چو2باال SQLنتیجه دستور
CustomerNilsen
2
SQLدر (*)COUNTمثال
:صرفنظر کنیم، مثل اینWHEREاگر از عبارت
SELECT COUNT(*) AS NumberOfOrders FROM Orders
:نتیجه این گونه خواهد شد
NumberOfOrders
6
.که مجموع تعداد سطرهاي جدول است
SQLدر COUNT(DISTINCT column_name)مثال
91بهار SQLدستوراتجامعراهنماي
78
.را بشماریم”Orders“اکنون می خواهیم تعداد مشتریان غیر تکراري در جدول
:زیر استفاده می کنیمSQLاز دستور
SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders
:نتیجه اینگونه خواهد شد
NumberOfCustomers
3
,Hansen(ان غیر تکراري که تعداد مشتری Nilsen وJansen (در جدول است.
()FIRSTتابع
.اولین مقدار از ستون انتخاب شده را برمی گرداند()FIRSTتابع
SQLدر ()FIRSTگرامر
SELECT FIRST(column_name) FROM table_name
SQLدر ()FIRSTمثال
:زیر را داریم”Orders“جدول
O_Id OrderDate OrderPrice Customer
1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen
.را پیدا کنیم”OrderPrice“اکنون می خواهیم اولین مقدار از ستون
91بهار SQLدستوراتجامعراهنماي
79
:فاده می کنیمزیر استSQLاز دستور
SELECT FIRST(OrderPrice) AS FirstOrderPrice FROM Orders
.پشتیبانی نشود()FIRSTراه حلی وجود دارد؛ اگر تابع : نکته
SELECT OrderPrice FROM Orders ORDER BY O_Id LIMIT 1
:نتیجه اینگونه خواهد شد
FirstOrderPrice
1000
()LASTتابع
.رین مقدار از ستون انتخاب شده را برمی گرداندآخ()LASTتابع
SQLدر ()LASTگرامر
SELECT LAST(column_name) FROM table_name
SQLدر ()LASTمثال
:زیر را داریم”Orders“جدول
O_Id OrderDate OrderPrice Customer
1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen
91بهار SQLدستوراتجامعراهنماي
80
.را پیدا کنیم”OrderPrice“اکنون می خواهیم آخرین مقدار از ستون
:زیر استفاده می کنیمSQLاز دستور
SELECT LAST(OrderPrice) AS LastOrderPrice FROM Orders
.پشتیبانی نشود()LASTوجود دارد؛ اگر تابع راه حلی : نکته
SELECT OrderPrice FROM Orders ORDER BY O_Id DESC LIMIT 1
:نتیجه اینگونه خواهد شد
LastOrderPrice
100
()MAXتابع
.بزرگترین مقدار از ستون انتخاب شده برمی گرداند()MAXتابع
SQLدر ()MAXگرامر
SELECT MAX(column_name) FROM table_name
SQLدر ()MAXمثال
:زیر را داریم”Orders“جدول
O_Id OrderDate OrderPrice Customer
1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen
91بهار SQLدستوراتجامعراهنماي
81
.را پیدا کنیم”OrderPrice“نون می خواهیم بزرگترین مقدار از ستون اک
:زیر استفاده می کنیمSQLاز دستور
SELECT MAX(OrderPrice) AS LargestOrderPrice FROM Orders
:نتیجه اینگونه خواهد شد
LargestOrderPrice
2000
()MINتابع
.شده را برمی گرداندکوچکترین مقدار از ستون انتخاب ()MINتابع
SQLدر ()MINگرامر
SELECT MIN(column_name) FROM table_name
SQLدر ()MINمثال
:زیر را داریم”Orders“جدول
O_Id OrderDate OrderPrice Customer
1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen
.را پیدا کنیم”OrderPrice“اکنون می خواهیم کوچکترین مقدار از ستون
:زیر استفاده می کنیمSQLاز دستور
SELECT MIN(OrderPrice) AS SmallestOrderPrice FROM Orders
91بهار SQLدستوراتجامعراهنماي
82
:نتیجه اینگونه خواهد شد
SmallestOrderPrice
100
()SUMتابع
.مجموع یک ستون عددي را برمی گرداند()SUMتابع
SQLدر ()SUMگرامر
SELECT SUM(column_name) FROM table_name
SQLدر ()SUMمثال
:زیر را داریم”Orders“جدول
O_Id OrderDate OrderPrice Customer
1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen
.را پیدا کنیم”OrderPrice“اکنون می خواهیم مجموع همه فیلدهاي
:زیر استفاده می کنیمSQLاز دستور
SELECT SUM(OrderPrice) AS OrderTotal FROM Orders
:نتیجه اینگونه خواهد شد
91بهار SQLدستوراتجامعراهنماي
83
OrderTotal
5700
SQLدر Group Byدستور
.اضافه شده نیاز دارندGroup Byتوابع جمعی اغلب به یک دستور
Group Byدستور
.چند ستون استفاده می شوده توسط یک یابراي دسته بندي کردن نتیج،بع جمعیبا تواGroup Byدستور
SQLدر Group Byگرامر
SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_name
SQLدر Group Byمثال
:زیر را داریم"Orders"جدول
O_Id OrderDate OrderPrice Customer
1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen
.می خواهیم مجموع سفارشات هر مشتري را پیدا کنیماکنون
.براي دسته بندي کردن مشتریان استفاده کنیمGroup Byما مجبور خواهیم شد از دستور
91بهار SQLدستوراتجامعراهنماي
84
:زیر استفاده می کنیمSQLاز دستور
SELECT Customer,SUM(OrderPrice) FROM OrdersGROUP BY Customer
:نتیجه اینگونه خواهد شد
Customer SUM(OrderPrice)
Hansen 2000
Nilsen 1700
Jensen 2000
Jدلپسند است، مگه نه؟
:فاقی می افتادصرف نظر می کردیم چه اتGroup Byاگر از دستور ؛بگذارید ببینیم
SELECT Customer,SUM(OrderPrice) FROM Orders
:نتیجه اینگونه خواهد شد
Customer SUM(OrderPrice)
Hansen 5700
Nilsen 5700
Hansen 5700
Hansen 5700
Jensen 5700
Nilsen 5700
.نتیجه باال چیزي نیست که می خواستیم
باال دو ستون مشخص شده دارد SELECTدستور :نمی تواند استفاده شودباالSELECTتشریح اینکه چرا دستور )Customer وSUM(OrderPrice) .(هنگامیکه""Customer6 مقدار برمی گرداند) یک مقدار براي هر در سطر جدول""Orders( ،"SUM(OrderPrice)"گرداند یک مقدار واحد برمی) آن مجموع ستون"OrderPrice"نابراین این ب). است
.این مشکل را حل می کندGroup Byبا این حال، دیدید که دستور . نتیجه درست را به ما نخواهد داد
Group Byبا بیش از یک ستون
:براي بیش از یک ستون استفاده کنیم، مثل اینGroup Byما می توانیم از دستور
91بهار SQLدستوراتجامعراهنماي
85
SELECT Customer,OrderDate,SUM(OrderPrice) FROM OrdersGROUP BY Customer,OrderDate
Havingعبارت
.نمی تواند براي توابع جمعی استفاده شودWHEREاضافه شد؛ چون کلمه کلیدي SQLبه Havingعبارت
Havingگرامر عبارت
SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_nameHAVING aggregate_function(column_name) operator value
SQLدر Havingمثال
:زیر را داریم"Orders"جدول
O_Id OrderDate OrderPrice Customer
1 2008/11/12 1000 Hansen
2 2008/10/23 1600 Nilsen
3 2008/09/02 700 Hansen
4 2008/09/03 300 Hansen
5 2008/08/30 2000 Jensen
6 2008/10/04 100 Nilsen
.دارد را پیدا کنیم2000اکنون می خواهیم هر مشتري را که جمع سفارش کمتر از
:زیر استفاده می کنیمSQLاز دستور
SELECT Customer,SUM(OrderPrice) FROM OrdersGROUP BY CustomerHAVING SUM(OrderPrice)<2000
:نتیجه اینگونه خواهد شد
Customer SUM(OrderPrice)
Nilsen 1700
91بهار SQLدستوراتجامعراهنماي
86
.دارند را پیدا کنیم1500که جمع سفارش بیشتر از "Jensen"یا "Hansen"اکنون می خواهیم مشتریانی با نام
:اضافه می کنیمSQLمعمولی به دستور WHEREیک عبارت
SELECT Customer,SUM(OrderPrice) FROM OrdersWHERE Customer='Hansen' OR Customer='Jensen'GROUP BY CustomerHAVING SUM(OrderPrice)>1500
:نتیجه اینگونه خواهد شد
Customer SUM(OrderPrice)
Hansen 2000
Jensen 2000
()UCASEتابع
.مقدار یک رشته را به حروف بزرگ تبدیل می کند()UCASEتابع
()UCASEگرامر
SELECT UCASE(column_name) FROM table_name
SQL Serverگرامر براي
SELECT UPPER(column_name) FROM table_name
SQLدر ()UCASEمثال
:زیر را داریم”Persons“جدول
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
را به ”LastName“باال را انتخاب کنیم و ستون ”FirstName“و ”LastName“اکنون می خواهیم محتواي ستونهاي .حروف بزرگ تبدیل کنیم
91بهار SQLدستوراتجامعراهنماي
87
:زیر استفاده می کنیمSQLاز دستور
SELECT UCASE(LastName) as LastName,FirstName FROM Persons
:نتیجه اینگونه خواهد شد
LastName FirstName
HANSEN Ola
SVENDSON Tove
PETTERSEN Kari
()LCASEتابع
.مقدار یک رشته را حروف کوچک تبدیل می کند()LCASEتابع
()LCASEگرامر
SELECT LCASE(column_name) FROM table_name
SQL Serverگرامر براي
SELECT LOWER(column_name) FROM table_name
SQLدر ()LCASEتابع مثال
:زیر را داریم"Persons"جدول
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
را به "LastName"ستون هاي باال را انتخاب کنیم و ستون "FirstName"و "LastName"اکنون می خواهیم محتواي .ف کوچک تبدیل کنیم.حرو
:زیر استفاده می کنیمSQLاز دستور
SELECT LCASE(LastName) as LastName,FirstName FROM Persons
91بهار SQLدستوراتجامعراهنماي
88
:نتیجه اینگونه خواهد شد
LastName FirstName
hansen Ola
svendson Tove
pettersen Kari
()MIDتابع
.براي استخراج کاراکترها از یک رشته متنی استفاده می شود()MIDتابع
()MIDتابع گرامر
SELECT MID(column_name,start[,length]) FROM table_name
توضیحات پارامتر
رشته مورد نظر براي استخراج کاراکترها. الزم column_name
)1شروع از (موقعیت شروع را مشخص کنید .الزم start
.بقیه متن را برمی گرداند()MIDاگر صرفنظر شود، تابع . تعداد کاراکترها براي بازگشت. اختیاري length
SQLدر()MIDمثال
:زیر را داریم"Persons"جدول
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
.باال را استخراج کنیم"City"اکنون می خواهیم چهار کاراکتر اول از ستون
:زیر استفاده می کنیمSQLاز دستور
91بهار SQLدستوراتجامعراهنماي
89
SELECT MID(City,1,4) as SmallCity FROM Persons
:شدنتیجه اینگونه خواهد
SmallCity
Sand
Sand
Stav
()LENتابع
.طول مقدار یک فیلد متنی را برمی گرداند()LENتابع
()LENتابع گرامر
SELECT LEN(column_name) FROM table_name
SQLدر ()LENتابع مثال
:زیر را داریم"Persons"جدول
P_Id LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger
.باال را انتخاب کنیم"Address"اکنون می خواهیم طول مقادیر در ستون
:زیر استفاده می کنیمSQLاز دستور
SELECT LEN(Address) as LengthOfAddress FROM Persons
:نگونه خواهد شدنتیجه ای
LengthOfAddress
12
9
9
91بهار SQLدستوراتجامعراهنماي
90
()ROUDNتابع
.براي گرد کردن یک فیلد عددي به تعداد عدد اعشاري مشخص()ROUDNتابع
SQLدر ()ROUDNگرامر
SELECT ROUND(column_name,decimals) FROM table_name
توضیحات پارامترها
.فیلدي که باید گرد شود. الزم column_name
.تعداد اعشار براي گرد شدن را تعیین می کند. الزم decimals
SQLدر ()ROUDNمثال
:زیر را داریم"Products"جدول
Prod_Id ProductName Unit UnitPrice
1 Jarlsberg 1000 g 10.45
2 Mascarpone 1000 g 32.56
3 Gorgonzola 1000 g 15.67
.والت و قیمت گرد شده به نزدیکترین عدد نمایش دهیماکنون می خواهیم نام محص
:زیر استفاده می کنیمSQLاز دستور
SELECT ProductName, ROUND(UnitPrice,0) as UnitPrice FROM Products
:نتیجه اینگونه خواهد شد
ProductName UnitPrice
Jarlsberg 10
Mascarpone 33
Gorgonzola 16
()NOWتابع
91بهار SQLدستوراتجامعراهنماي
91
.تاریخ و زمان فعلی سیستم را برمی گرداند()NOWابع ت
SQLدر ()NOWگرامر
SELECT NOW() FROM table_name
()NOWمثال
:زیر را داریم"Products"جدول
Prod_Id ProductName Unit UnitPrice
1 Jarlsberg 1000 g 10.45
2 Mascarpone 1000 g 32.56
3 Gorgonzola 1000 g 15.67
.اکنون می خواهیم محصوالت و قیمت ها در تاریخ امروز را نمایش دهیم
:زیر استفاده می کنیمSQLاز دستور
SELECT ProductName, UnitPrice, Now() as PerDate FROM Products
:نتیجه اینگونه خواهد شد
ProductName UnitPrice PerDate
Jarlsberg 10.45 10/7/2008 11:25:02 AM
Mascarpone 32.56 10/7/2008 11:25:02 AM
Gorgonzola 15.67 10/7/2008 11:25:02 AM
()FORMATتابع
.براي چگونگی نمایش فرمت یک فیلد استفاده می شود()FORMATتابع
SQLدر ()FORMATگرامر
91بهار SQLدستوراتجامعراهنماي
92
SELECT FORMAT(column_name,format) FROM table_name
SQLدر ()FORMATمثال
:زیر را داریم"Products"جدول
Prod_Id ProductName Unit UnitPrice
1 Jarlsberg 1000 g 10.45
2 Mascarpone 1000 g 32.56
3 Gorgonzola 1000 g 15.67
.را نمایش دهیم) "YYYY-MM-DD"با فرمت (خواهیم محصوالت و قیمت در تاریخ امروز اکنون می
:زیر استفاده می کنیمSQLاز دستور
SELECT ProductName, UnitPrice, FORMAT(Now(),'YYYY-MM-DD') as PerDate FROMProducts
DELETE FROM table_nameWHERE some_column=some_value
یا
DELETE FROM table_name
!)محتواي جدول را حذف می کند: توجه(
DELETE * FROM table_name
!)را حذف می کندمحتواي جدول : توجه(
DROP DATABASE DROP DATABASE database_name
DROP INDEX
DROP INDEX table_name.index_name (SQL Server)DROP INDEX index_name ON table_name (MS Access)DROP INDEX index_name (DB2/Oracle)ALTER TABLE table_nameDROP INDEX index_name (MySQL)
DROP TABLE DROP TABLE table_name
GROUP BY
SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_name
HAVING
SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_nameHAVING aggregate_function(column_name) operator value