vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Wed Dec 22, 2004 4:56 pm Post subject: مقدمه اي بر SQL و اشنايي با select و where |
|
|
SQL مخفف Structured Query Language ميباشد كه خوانده ميشود ess-que-el
SQL براي ارتباط با يك بانك اطلاعاتي استفاده ميشود . اين زبان كه بر طبق سازمان استاندارد سازي زبانها ANSI American National Standard Institute تنظيم شده است براي مديريت سيستمهاي بانكهاي اطلاعاتي رابطه اي به كار ميرود . دستورات SQL بيشتر براي انجام عملياتي همچون بروز رساني و يا پاك كردن و اضافه كردن مطالب به بانك اطلاعاتي است . بعضي نرم افزارهاي مديريت بانك اطلاعاتي همچون Access , DB2 , Informix , Oracle , SQL Server , Sybase , Ingres و غيره از اين زبان استفاده ميكنند . البته هر كدام از اين سيستمها داراي SQL با مشخصات خاص خودشان هستند اما بعضي دستورات همچون Select , Insert , Update , Delete , Create و Drop تقريبا در تمامي اينها با كمي تفاوت مشابه است . سعي ميكنم تا حد توان ا انجايي كه بتوانم وارد اين دستورات شده و تك تك انها را بررسي كنم .
SQL ميتواند ركوردها را از جدولي پاك كند يا اضافه كند . ميتواند همانطور كه گفتم جداول را بروز كند . و ميتواند ازجداول كپي برداري كند . به هر حال فراگيري SQL ساده و اسان است .
جدول چيست ؟ TABLE
يك سيستم مديريت بانك اطلاعاتي رابطه اي از چندين شئ تشكيل ميشود كه يكي از اين اشياء مهم جداول هستند . داده ها و اطلاعات بانك اطلاعاتي در اين جداول ضبط ميشوند . جداول همانطور كه از نامشان پيداست مشخصند كه چه هستند . هر جدول داراي سطرها و ستونهايي است . ستونهاي جدول داراي نام , نوع و ديگر خصيصه ها attribute هستند . در اين جداول كليه عناصر ستون از يك نوع هستند . مثلا همگي با هم عدد هستند يا متن يا هر چيز ديگري . رديفها يا ركوردها كه سطرهاي جدول را تشكيل ميدهند متشكل از كليه ستونهاي ان جدول در يك سطر هستند در واقع مجموعه اطلاعاتي كه مرتبط با هم هستند در يك سطر اورده ميشوند . جدول زير را ببينيد .
Lastname را يك ستون گوييم كه بر هر يك از سلولهاي اين ستون يك فيلد ميگوييم . Firstname و Address و city نيز هر كدام يك ستون هستند .
اين جدول سه سطر دارد كه مشخصات سه فرد را به ما ميدهد. كه هر كدام از اين سطرها از مجموعه ستونها تشكيل شده است .
| LastName | firstName |Address | City
vahid | imani | Tehran 10 |Tehran
arash | vishoniee | roodehen 23 |Tehran
amir | matrixi | karaj20 |isfahan |
دستور SELECT
اين دستور براي پرس و جو از بانك اطلاعاتي به كار ميرود . در اين دستور داده اي را از جدول انتخاب كرده و نمايش ميدهيم . اين دستور با شرايطي كه نويسنده دستور براي ان ذكر ميكند به كار ميرود : نوع قالب اصلي اين دستور به اين شرح است :
| select "column1"
[,"column2",etc]
from "tablename"
[where "condition"]; |
عباراتيكه در قالب فوق درون كروشه ميبينيد بيانگر اختياري بودن دستورات هستند . در دستور فوق به جاي column از نام ستون استفاده ميكنيد . اگر خواستيد كليه ستونهاي يك جدول را بازيابي كنيد كافيست بجاي نوشتن تك تك ستون ها از * استفاده كنيد .
بعد از دستور from نام جدولي كه ميخواهيم فيلد مربوطه را بازيابي كنيم مينويسيم . براي where ميتوان شرطي گذاشت كه از عملگرهاي > , < , >= , <= , <> , = , LIKE , Between استفاده كند .
در بعضي بانكهاي اطلاعاتي بايد از سميكالن ; در انتهاي دستور استفاده كرد . اما استفاده از ان در بانكهاي اطلاعاتي چون Access و SQL server اختياري است .
SQL Data Manipulation Language (DML)
SQL داراي دستوراتي براي ساخت گزارشهاست . اما زبان SQL شامل دستوراتي است كه براي بروزرساني و قراردادن پاك كردن دكوردها به كار ميروند . اين دستورات در دسته DML ها هستند . كه براي دستكاري داده ها به كار ميروند .
SELECT , UPDATE , DELETE , INSERT INTO در اين دسته هستند .
SQL Data Definition Language (DDL)
بخشي از دستورات SQL كه براي ساخت و يا پاك كردن جداول به كار ميروند در اين دسته قرار ميگيرند . دستورات مهم اين بخش شامل : Create Table , ALTER TABLE , DROP TABLE , VREATE INDEX , DROP INDEX ميباشد .
استفاده از دستور DISTINCT در دستور select باعث ميشود انتخابات ما همگي بصورت منحصر بفرد در خروجي نمايش داده شود . فرضا دستور زير :
| SELECT DISTINCT Company FROM jadvalname |
اين دستوراز كليه ركوردهاي جدول تنها يك نمونه نشان ميدهد در خروجي ركورد تكراري نخواهيم داشت ..
بنابراين چند مثال از دستورات ساده select مي اورم :
| select column1 from jadval1 ; |
اين دستور column1 را از جدول jadval1 استخراج ميكند و به شما نمايش ميدهد .
| select DISTINCT column1 from jadval1 ; |
اين دستور كليه ركوردهاي فيلد column1 را از جدول jadval1 استخراج ميكند منتهي بصورت منحصر فرد و ركوردهاي تكراري را نشان نميدهد . .
| select DISTINCT column1,column2 from jadval1 ; |
اين دستور كليه محتويات دو فيلد column1 و column2 را از جدول jadval1 را استخراج ميكند
بصورت منحصر بفرد
| select cloumn1,column2 from jadval2 ; |
ستونهاي column1 , column2 را از جدول jadval2 استخراج ميكند .
كليه ستونهاي جدول jadval2 را نمايش ميدهد . در واقع همان جدول را بدون تغيير نمايش ميدهد .
| select firstname, lastname from student ; |
ستونهاي firstname و lastname را از جدول student استخراج ميكند . در واقع نام و نام خانوادگي دانش اموزاني كه اطلاعات انها در student است را نمايش ميدهد .
دستور where
هر وقت از دستور select استفاده كرديد ميتوانيد از دستور Where براي شرط گذاري بر دستور select نيز استفاده كنيد .
| SELECT column FROM table
WHERE column operator value |
عملگرهاي where بترتيب تساوي = عدم تساوي <> بزرگتر > كوچكتر < و كوچكتر مساوي <= و بزرگتر مساوي >= و بالاخره between و like ميباشند . توجه داشته باشيد كه در بعضي زبانهاي SQL بجاي <> از != استفاده ميكنند .
مثلا براي انتخاب كردن فردي از جدول persons كه در شهر تهران زندگي ميكند . كه البته در ان جدول ستوني بنام city وجود دارد از
| SELECT * From Persons where City=’Tehran’ |
از تك كوتيشن به ان سبب كه نوع فيلد city از نوع text است استفاده كرديم .
در بعضي نسخه هاي SQL از جفت كوتيشن استفاده ميشود اما يادتان باشد كه اگر نوع فيلد ما عددي بود نبايد از كوتيشن استفاده كنيم
| SELECT * from persons where year >1984 |
اين دستور غلط است :
| SELECT * from persons where year>’1984’ |
براي LIKE ميتوان از % يا * استفاده كرد . اين دو علامت يعني انكه هر چه بعد از ان يا هر چه قبل از ان ( كاراكتر ) بود مثال زير را ببينيد
| SELECT * from persons where firstname LIKE ‘%a’
select * from persons where firstname like ‘*a*’ |
با تشكر از استاد رئوف مكفي |
|