530 likes | 770 Views
به نام خداوند بخشنده و مهربان. SQL. دانشكده فني مهندسي دانشگاه آزاد اسلامي ـ واحد لاهيجان مهندس عـلي اكـبر پـور طرح و تنظي م علي نوروزي – فربد ملالي – محّمد رزاقيان آذر ماه 83. يك ديد كلي از SQL
E N D
SQL دانشكده فني مهندسي دانشگاه آزاد اسلامي ـ واحد لاهيجان مهندس عـلي اكـبر پـور طرح و تنظيم علي نوروزي – فربد ملالي – محّمد رزاقيان آذر ماه 83
يك ديد كلي از SQL • SQL زبان استاندارد مورد استفاده براي اجرا و بازيابي داده ها از بانكهاي اطلاعاتي رابطه اي مي باشد . • SQL به يك برنامه نويس يا طراح بانك اطلاعاتي امكان مي دهد تا اعمال زير را انجام دهد: • اصلاح ساختار يك بانك اطلاعاتي • تغيير وضعيت امنيتي سيستم • افزودن مجوزهاي كاربر روي بانكهاي اطلاعاتي يا جدولها • پرس و جوي بانك اطلاعاتي براي بازيابي اطلاعات • به هنگام سازي محتويات بانك اطلاعاتي • عبارت SQL ميتواند تركيبي باشد.'S وL مخفف Structured و Language (كه اينها به اندازه كافي صريحو درست هستند )ولي Q مخفف Query است كه شما را به پرس و جو بانك اطلاعاتي محدود مي كند. در صورتي كه SQLچيزي بيش از در خواست پرس و جو مي باشد. • با SQL ميتوان جداول را ايجاد كرده داده ها را اضافه حذف وباهم مرتبط كرده و عملياتي را بر پايه تغييرات بانك اطلاعاتي انجام داده و پرس و جوهاي داخل برنامه يا بانك اطلاعاتي را ذخيره كرد. • عمومي ترين عبارت مورد استفاده در SQLعبارت SELECT ميباشد(در قسمت بعدي توضيح داده خواهد شد ) كه داده ها را از بانك اطلاعاتي بازيابي كرده و به كاربر برمي گرداند .
مجموعه فرامين SQL : • در SQL سه دسته كلي فرمان موجود است. • زبان دستكاري داده ها(DML){DATA MANIPULATION LANGUAGE} • زبان تعريف داده ها (DDL){DATA DEFINIT_ON LANGUAGE} • زبان كنترل داده ها(DCL{DATA CONTROL LANGUAGE } (
در زير كليه فرمانهاي SQL نشان داده مي شود :
ايجاد جدول اكنون در موقعيت شرح عبارت CREATE TABLE به طور كامل قرار داريم.قالب و شكل كلي اين عبارت به صورت زير مي باشد: CREATE TABLE base-table (column-definition[,column-definition]… [,primary-key- definition] [,foreign-key- definition[,foreign-key- definition]…]);
به يك مثال توجه كنيد(ايجاد جدول S با استفاده از عبارت CREATE TABLE ) • CREATE TABLE S • (S# CHAR(5) NOT NULL, • SNAME CHAR(20) NOT NULL, • STATUS SMALLINT NOT NULL, • CITY CHAR(15) NOT NULL, • PRIMARY KEY (S#)); • اين عبارت سبب ايجاد يك جدول مبناي جديد و خالي به نام S ميشود. اين جدول داراي چهار ستون به نامهايCITY,STATUS,SNAME,S# بوده وانواع داده هاي آنها نيز مشخص شده است. ستون S# به عنوان كليد اوليه تعريف شده است. داده ها را ميتوان در SQLبا عبارت INSERT در جداول وارد كرد.
ALTER TABLE دقيقآ مانند يك جدول مبناي جديد در هر لحظه مي تواند از طريق CREATE TABLEايجاد شود.بنابراين جدول مبناي موجود را مي توان در هر لحظه با اضافه كردن ستون جديدي در سمت راست از طريق ALTER TABLE تغييرداد: ALTER TABLE base-table ADD column data-type; به عنوان مثال: ALTER TABLE S ADD DISCOUNT SMALLINT; اين عبارت ستون DISCOUNTرا به جدول Sاضافه مي كند.تمام ركوردهاي موجود S( به طورادراكي ) از چهار فيلد به پنج فيلد توسعه مي يابند . مقدار فيلد پنجم جديد درهر حالتي خالي است ( مشخصهNOT NULLدرALTER TABLEارائه نشده است).توجه كنيد كه توسعه ركوردهاي موجود در زمان اجراي ALTER TABLEبطور فيزيكي انجام نمي گيرد. DROP TABLE اين امكان نيز وجود دارد كه جدول مبنائي را درهر لحظه حذف كرد : DROP TABLE base-table; جدول مبناي تعيين شده از سيستم حذف ميشود (بطور دقيق تر توضيحات آن جدول از كاتالوگ حذف مي شود ). تمام شاخصها و ديدگاههاي تعريف شده روي آن جدول مبنا نيز بطور خودكار حذف خواهند شد.
شاخصها شبيه جدولهاي مبنا شاخصها نيز با استفاده از عبارتتعريف داده هاي SQL ايجاد و حذف مي شوند. با اين وجود DROP INDEX,CREATE INDEX تنها عبارتي هستند كه در زبان SQLبه شاخصها رجوع مي كنند و ساير عبارات ( عبارات دستكاري داده ها مثل SELECT ) ارجاعي به شاخصها ندارند. شكل كلي عبارت CREATE INDEX بصورت زير است : CREATE [UNIQUE] INDEX index ON base-table (column[order] [,column [order]]…) [CLUSTER]; به عنوان مثال: CREATE INDEX X ON T ( P,Q DEC ,R ) CLUSTER ; اين عبارت شاخص كلاستري به نام X را روي جدول مبناي T ايجاد مي كند كه وروديهاي آن بر اساس مقدار Rبه صورت صعودي مقدار Q به صورت نزولي و مقدار p به صورت صعودي مرتب مي شود. نياز نيست كه ستونهاي Q,p وR از جدولT همنوع باشند و نيازي نيست كه همه آنها داراي طول ثابت يا طول متغير باشند. شاخص Xبه طور خودكار به هنگام مي شود تا به هنگام سازي جدول T را تا زماني كه X (يا T ) حذف نشده اند منعكس نمايد. گزينه UNIQUE در عبارت CREATE INDEX تعيين مي كند كه هيچ دو ركوردي در جدول مبناي شاخص بندي شده در فيلد شاخص دهي شده داراي مقدار يكساني نيستند
حذف شاخص DROP INDEX index ; شاخص حذف مي شود (يعني شرح آن از كاتولوگ حذف مي شود ). اگر طراحي برنامه كاربردي موجود بستگي به آن شاخص حذف شده داشته باشد پس آن طرح محدود خواهد شد.
دستور SELECT فرمت كلي اين دستور به صورت زير است : SELECT [DISTINCT] item(s) FROM table(s) [WHERE شرطها ] [GROUP BY fild)s(] [HAVING شرطها] [ORDER BY fild)s( ] فرمانهاي SQL نسبت به حالت حروف حساس نيستند.
مثالها فرض کنید جدول CHECKS به صورت زير ایجاد شده است :
اولين پرس و جو : SQL>SELECT * from checks ; بررسی : این خروجی دقیقا شبیه جدول CHECKS می باشد . پس ستاره (*) بیان مکند که بانک اطلاعاتی تمتم ستونهای موجود در جدول ذکر شده در جمله FOROM را برمی گرداند .
تغيير ترتيب ستون : SQL>SELECT payee,remarks,amount,check# from checks ;
انتخاب ستونهاي خاص SQL>SELECT CHECK#,amount from checks;
پرس وجو هاي همراه با طبقه بندي : SQL>select amount from checks;
شرطها اگر ميخواهيد يك عنصر يا گروهي از عناصر را در بانك اطلاعاتي، جستجو كنيد ، نياز به يك يا چند شرط داريد. شرطها در جمله WHEREقرار مي گيرند. جمله WHERE شكل كلي جمله WHERE به صورت زير است : WHERE <SEARCH CONDITION> SELECT,FROM,WHERE سه جمله اي هستند كه به صورت متناوب در SQL به كار مي روند.
اگر بخشي از اين اطلاعات را بخواهيم . مي توانيم تايپ كنيم : SQL>SELECT * FROM CHECKS WHERE PAYEE='Ma Bll'
عملگرهاي محاسباتي جمع(+) : فرض کنید جدول PRICEبه صورت زیر میباشد :
اگر بخواهیم 15 سنت به هر قيمتي اضافه کنیم دستور زیر را وارد می کنیم : SQL>SELECT ITEM, WHOLESALE, WHEOLESALE+0.15FROM PRICE;
منها(-) منها داراي دو كاربرد است. اول اينكه مي توان علامت عدد را تغيير داد و دوم، دو عدد را از هم كسر كرد. ابتدا جدول HILOW به صورت زیر تعریف کنیم . برای مشاهد کل جدول دستور زیر را تایپ می کنیم : SQL>SELECT * FROM HILOW
به عنوان مثال . اينجا روشي را براي كار كردن با دادها ذكر مي كنيم (کاربرد منها) SQL>SELECT STATE,-HIGHTEMP LOWS,-LOWTEMP HIGHS FROM HILOW
دومين كاربرد علامت منها تفريق يك ستون از ديگري است . به عنوان مثال : SQL>SELECT STATE,-HIGHTEMP LOWS,-LOWTEMP HIGHS FROM HILOW
تقسيم( / ) ابتدا همان جدول PRICE ( رجوع شود به مثال جمع )را مورد توجه قرار می دهیم . SQL>SELECT * FROM PRICE;
SQL>SELECT ITEM, WHOLESALE, (WHEOLESALE/2) SALEPRICEFROM PRICE;
ضرب(*) دوباره جدول PRICE به کار می بریم : SQL>SELECT ITEM, WHOLESALE, WHEOLESALE*0.9 NEWPRICE FROM PRICE;
باقيمانده(%) عملگر باقیمانده الباقی صحیح عملیات را بر می گرداند . ابتدا فرض کنید که جدول REMAINSبه صورت زیر است : SQL>SELECT * FROM REMAINS ;
همچنين مي توان ستون جديدي به نام REMAINDERايجاد كرد . تا مقاديرNUMERATOR%DENOMINATOR را نگه دارد. SQL>SELECT NUMERATOR DENOMINATOR, NUMERATOR%DENOMINATOR REMAINDER FROM REMAINS;
عملگرهاي مقايسه اي دوباره جدول PRICE به کار می بریم : SQL>SELECT * FROM PRICE
SQL>SELECT * FROM PRICEWHERE WHOLESALE IS NULL سوال :اگر به جاي IS از علامت مساوي (=) استفاده كنيد چه اتفاقي مي افتد؟ SQL>SELECT * FROM PRICE WHERE WHOLESALE = NULL; جواب : هيچ چبز به دست نمي آوريد (no rows selected)
مساوي(=) ابتدا فرض کنید جدولFRIEND به صورت زیر ایجاد شده است : SQL>SELECT * FROM FRIEND
بزرگتر(<) و بزرگتر يا مساوي (=<) SQL>SELECT * FROM FRIENDS WHERE AREACODE >300;
كوچكتر (>) و كوچكتريا مساوي(=>) SQL>SELECT * FROM FRIENDS WHERE STATE<='LA';
نا مساوي (< > يا =!) SQL>SELECT * FROM FRIENDS WHERE FIRSTNAME < > 'AL';
عملگر LINK ابتدا فرض کنید جدول PARTS به صورت زیر ایجاد شده است :
آیا LINK نسبت به بزرگی و یا کوچکی حروف حساس است ؟ پرس و جو بعدی را برای پی بردن به این موضوع انجام می دهیم . SQL>SELECT * FORM PARTS WHERE NAME LINK ' a% '; بررسی جواب : هيچ چبز به دست نمي آوريد (no rows selected)
خط تيره(-) ابتدا فرض کنید جدول FRIENDS به صورت زیر ایجاد شده است :
به هم پيوستگي( || ) SQL>SELECT FIRSTNAME || LASTNAME ENTIRENAME FROM FRIENDS
عملگرهاي منطقي ابتدا فرض کنید جدول VACATION به صورت زیر ایجاد شده است : SQL>SELECT * FROM VACATION;
عملگر AND SQL>SELECT LASTNAME,YEARS * 12- LEAVETAKEN REMAINING FROM VACATION WHERE LASTNAME LIKE 'B%' AND YEARS * 12- LEAVETAKEN>50
عملگر OR SQL>SELECT LASTNAME WORKAHOLICSFROM VACATION WHERE YEARS >=5 OR ((YEARS * 12) – LEAVETAKEN)/( YEARS * 12) >= 0.50;
عملگر NOT SQL>SELECT * FROM VACATION; WHERE LASTNAME NOT LIKE B%;