![Page 1: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/1.jpg)
SQL 5فصل
![Page 2: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/2.jpg)
شرکتIBM دهه داده 1970در پایگاه مدیریت سیستم درSystem R نمود اسفاده زبان این از بار اولین برای
به نیاز شد استفاده زیادی های شرکت توسط که زمانیکرد پیدا شدن استاندارد
:استانداردها◦SQL-86◦SQL-89◦SQL-92◦SQL-99◦SQL-2003
جوی و پرس SQLزبان
![Page 3: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/3.jpg)
مثال
sid sname rating age
22 dustin 7 45.0
31 lubber 8 55.558 rusty 10 35.0
sid sname rating age28 yuppy 9 35.031 lubber 8 55.544 guppy 5 35.058 rusty 10 35.0
sid bid day
22 101 10/10/9658 103 11/12/96
R1
S1
S2
![Page 4: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/4.jpg)
ها قایقران جدول
CREATE TABLE "Sailors"( sid INTEGER NOT NULL, sname CHARACTER VARYING(30), age INTEGER, rating INTEGER, PRIMARY KEY (sid ))
![Page 5: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/5.jpg)
ها قایق جدول
CREATE TABLE "Boats"( bid INTEGER NOT NULL, color CHARACTER VARYING(10), bname CHARACTER VARYING(10), PRIMARY KEY (bid ))
![Page 6: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/6.jpg)
قایقران ) ارتباط رزرو جدول) ها قایق و ها
CREATE TABLE "Reserves"( sid INTEGER NOT NULL, bid INTEGER NOT NULL, date DATE NOT NULL, PRIMARY KEY (sid , bid , date ), FOREIGN KEY (bid) REFERENCES "Boats" (bid), FOREIGN KEY (sid) REFERENCES "Sailors" (sid))
![Page 7: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/7.jpg)
relation-list: ) نظر ) مورد رابطه جداول اسامیtarget-list: نظر مورد های صفت یا ها ستون لیستqualification: انواع با خاص سطرهای انتخاب برای شرایط
یا ORیا ANDترکیبات وDISTINCT ) کار: ) به خروجی جدول رابطه در ها تکراری حذف برای
. در اما نیست، الزامی کلیدی کلمه این رود بر SQLمی عادی حالت در. کند نمی حذف را ها تکراری ای رابطه عملگرهای عکس
ساده SQLمثالSELECT [DISTINCT] target-listFROM relation-listWHERE qualification
, , , , ,
![Page 8: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/8.jpg)
ساده جمله یک استراتژی SQLمفهوم یک با توان می را: نمود بیان زیر شکل به مفهومی
◦ Compute the cross-product of relation-list.◦ Discard resulting tuples if they fail qualifications.◦ Delete attributes that are not in target-list.◦ If DISTINCT is specified, eliminate duplicate rows.
. در کند نمی عمل بهینه اجرا برای استراتژی این البتهبرای هایی استراتژی از اجرا برای داده پایگاه های سیستم
. گردد می استفاده اجرا نمودن بهینه
Conceptual Evaluation Strategyمفهومی ارزیابی استراتژی
![Page 9: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/9.jpg)
مفهومی ارزیابی استراتژیSELECT S.snameFROM Sailors S, Reserves RWHERE S.sid=R.sid AND R.bid=103
(sid) sname rating age (sid) bid day
22 dustin 7 45.0 22 101 10/ 10/ 96
22 dustin 7 45.0 58 103 11/ 12/ 96
31 lubber 8 55.5 22 101 10/ 10/ 96
31 lubber 8 55.5 58 103 11/ 12/ 96
58 rusty 10 35.0 22 101 10/ 10/ 96
58 rusty 10 35.0 58 103 11/ 12/ 96
![Page 10: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/10.jpg)
یا باشند داشته نام هم های صفت رابطه دو که زمانیقسمت در بار چند رابطه باشد FROMیک آمده
A Note on Range Variables
SELECT S.snameFROM Sailors S, Reserves RWHERE S.sid=R.sid AND bid=103
SELECT snameFROM Sailors, Reserves WHERE Sailors.sid=Reserves.sid AND bid=103
It is good style,however, to userange variablesalways!OR
![Page 11: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/11.jpg)
Would adding DISTINCT to this query make a difference?
What is the effect of replacing S.sid by S.sname in the SELECT clause? Would adding DISTINCT to this variant of the query make a difference?
Find sailors who’ve reserved at least one boat
SELECT S.snameFROM Sailors S, Reserves RWHERE S.sid=R.sid
![Page 12: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/12.jpg)
Find sid’s of sailors who’ve reserved a red or a green boat
UNION: Can be used to compute the union of any two union-compatible sets of tuples (which are themselves the result of SQL queries).
If we replace OR by AND in the first version, what do we get?
Also available: EXCEPT (What do we get if we replace UNION by EXCEPT?)
SELECT S.sidFROM Sailors S, Boats B, Reserves RWHERE S.sid=R.sid AND R.bid=B.bid AND (B.color=‘red’ OR B.color=‘green’)
SELECT S.sidFROM Sailors S, Boats B, Reserves RWHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘red’UNIONSELECT S.sidFROM Sailors S, Boats B, Reserves RWHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘green’
![Page 13: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/13.jpg)
Find sid’s of sailors who’ve reserved a red and a green boat
INTERSECT: Can be used to compute the intersection of any two union-compatible sets of tuples.
Included in the SQL/92 standard, but some systems don’t support it.
Contrast symmetry of the UNION and INTERSECT queries with how much the other versions differ.
SELECT S.sidFROM Sailors S, Boats B1, Reserves R1, Boats B2, Reserves R2WHERE S.sid=R1.sid AND R1.bid=B1.bid AND S.sid=R2.sid AND R2.bid=B2.bid AND B1.color=‘red’ AND B2.color=‘green’
SELECT S.sidFROM Sailors S, Boats B, Reserves RWHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘red’INTERSECTSELECT S.sidFROM Sailors S, Boats B, Reserves RWHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘green’
Key field!
![Page 14: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/14.jpg)
اشتراک INTERSECTمعادل اجتماع UNIONمعادل تفاضل EXCEPTمعادل
در ای مجموعه SQLعملگرهای
![Page 15: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/15.jpg)
A very powerful feature of SQL: a WHERE clause can itself contain an SQL query! (Actually, so can FROM and HAVING clauses.)
To find sailors who’ve not reserved #103, use NOT IN. To understand semantics of nested queries, think of a
nested loops evaluation: For each Sailors tuple, check the qualification by computing the subquery.
تودرتو ) جوی و NestedپرسQuery)
SELECT S.snameFROM Sailors SWHERE S.sid IN (SELECT R.sid FROM Reserves R WHERE R.bid=103)
Find names of sailors who’ve reserved boat #103:
![Page 16: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/16.jpg)
EXISTS is another set comparison operator, like IN. If UNIQUE is used, and * is replaced by R.bid, finds
sailors with at most one reservation for boat #103. (UNIQUE checks for duplicate tuples; * denotes all attributes. Why do we have to replace * by R.bid?)
Illustrates why, in general, subquery must be re-computed for each Sailors tuple.
Nested Queries with Correlation
SELECT S.snameFROM Sailors SWHERE EXISTS (SELECT * FROM Reserves R WHERE R.bid=103 AND S.sid=R.sid)
Find names of sailors who’ve reserved boat #103:
![Page 17: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/17.jpg)
We’ve already seen IN, EXISTS and UNIQUE. Can also use NOT IN, NOT EXISTS and NOT UNIQUE.
Also available: op ANY, op ALL, op IN Find sailors whose rating is greater than that of
some sailor called Horatio:
More on Set-Comparison Operators
, , , , ,
SELECT *FROM Sailors SWHERE S.rating > ANY (SELECT S2.rating FROM Sailors S2 WHERE S2.sname=‘Horatio’)
![Page 18: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/18.jpg)
Similarly, EXCEPT queries re-written using NOT IN. To find names (not sid’s) of Sailors who’ve
reserved both red and green boats, just replace S.sid by S.sname in SELECT clause. (What about INTERSECT query?)
Rewriting INTERSECT Queries Using IN
Find sid’s of sailors who’ve reserved both a red and a green boat:
SELECT S.sidFROM Sailors S, Boats B, Reserves RWHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘red’ AND S.sid IN (SELECT S2.sid FROM Sailors S2, Boats B2, Reserves R2 WHERE S2.sid=R2.sid AND R2.bid=B2.bid AND B2.color=‘green’)
![Page 19: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/19.jpg)
Division in SQL
Let’s do it the hard way, without EXCEPT:
SELECT S.snameFROM Sailors SWHERE NOT EXISTS ((SELECT B.bid FROM Boats B) EXCEPT (SELECT R.bid FROM Reserves R WHERE R.sid=S.sid))
SELECT S.snameFROM Sailors SWHERE NOT EXISTS (SELECT B.bid FROM Boats B WHERE NOT EXISTS (SELECT R.bid FROM Reserves R WHERE R.bid=B.bid AND R.sid=S.sid))
Sailors S such that ...
there is no boat B without ...
a Reserves tuple showing S reserved B
Find sailors who’ve reserved all boats.
(1)
(2)
![Page 20: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/20.jpg)
تجمیع عمگرهایAggregate Operators
در چشمگیر افزایشای رابطه جبر قابلیت های
COUNT (*)COUNT ( [DISTINCT] A)SUM ( [DISTINCT] A)AVG ( [DISTINCT] A)MAX (A)MIN (A)
SELECT AVG (S.age)FROM Sailors SWHERE S.rating=10
SELECT COUNT (*)FROM Sailors S
SELECT AVG ( DISTINCT S.age)FROM Sailors SWHERE S.rating=10
SELECT S.snameFROM Sailors SWHERE S.rating= (SELECT MAX(S2.rating) FROM Sailors S2)
ستون یک نام فقط
SELECT COUNT (DISTINCT S.rating)FROM Sailors SWHERE S.sname=‘Bob’
![Page 21: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/21.jpg)
قایقران پیرترین سن و نام) قایقران ها)
اشتباه اول جوی و پرسبحث! ) در GROUP BYاست
) چرا که دید خواهیم دوم و سوم جوی و پرس
در و هستند هم معادلپیش SQL/92استاندارد
. از برخی ولی شده اند بینیجوی و پرس ها سیستم
. کنند نمی پشتیبانی را سوم
SELECT S.sname, MAX (S.age)FROM Sailors S
SELECT S.sname, S.ageFROM Sailors SWHERE S.age = (SELECT MAX (S2.age) FROM Sailors S2)
SELECT S.sname, S.ageFROM Sailors SWHERE (SELECT MAX (S2.age) FROM Sailors S2) = S.age
![Page 22: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/22.jpg)
برای را تجمیع توابع بخواهیم است ممکن مواردی درباشیم داشته مجزا صورت به مختلف گروه های
:ورودی هر برای داده پایگاه درس نمرات میانگین مثال( :امتیاز سطح هر برای جوانترین( rating levelمثال
. کنید پیدا را قایقران◦ : را قایقران جوانترین امتیاز سطح هر ازای به سریع حل راه
می یابیمداریم؟؟؟ ◦ امتیاز سطح چند که نمی دانیم اما
Motivation for Grouping
SELECT MIN (S.age)FROM Sailors SWHERE S.rating = i
For i = 1, 2, ... , 10:
![Page 23: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/23.jpg)
target-listنظر ◦ مورد ستون های لیستتجمیع )◦ عملیات با (MIN(S.age)ترم هایی
از زیرمجموعه یک باید ستون ها سطر grouping-listلیست و باشد . ) که ) کرد دقت باید است خاص گروه یک به مربوط پاسخ خروجی
در که مقدار target-listمواردی یک باید گروه هر ازای به آید می . باشد داشته
از یک هر می تواند می آید تجمیع عملیات یک داخل که ستونی ناماز که نیست الزامی باشد جدول باشد. grouping-listستون های
A group is a set of tuples that have the same value for all attributes in grouping-list.
با HAVINGو GROUP BYپرس وجو
SELECT [DISTINCT] target-listFROM relation-listWHERE qualificationGROUP BY grouping-listHAVING group-qualification
![Page 24: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/24.jpg)
The cross-product of relation-list is computed, tuples that fail qualification are discarded, `unnecessary’ fields are deleted, and the remaining tuples are partitioned into groups by the value of attributes in grouping-list.
The group-qualification is then applied to eliminate some groups. Expressions in group-qualification must have a single value per group!◦ In effect, an attribute in group-qualification that is not
an argument of an aggregate op also appears in grouping-list. (SQL does not exploit primary key semantics here!)
One answer tuple is generated per qualifying group.
Conceptual Evaluation
![Page 25: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/25.jpg)
rating minage 3 25.5 7 35.0 8 25.5
قایقران جوان گروه های قایقران ترینحداقل 18باالی که هم 2سال آنها نفر
هستند امتیاز
SELECT S.rating, MIN (S.age) AS minage
FROM Sailors SWHERE S.age >= 18GROUP BY S.ratingHAVING COUNT (*) > 1
sid sname rating age
22 dustin 7 45.0
29 brutus 1 33.0
31 lubber 8 55.5
32 andy 8 25.5
58 rusty 10 35.0
64 horatio 7 35.0
71 zorba 10 16.0
74 horatio 9 35.0
85 art 3 25.5
95 bob 3 63.5
96 frodo 3 25.5
Answer relation:
Sailors instance:
![Page 26: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/26.jpg)
rating minage 3 25.5 7 35.0 8 25.5
Find age of the youngest sailor with age>=18, for each rating with at
least 2 such sailors.rating age
7 45.0
1 33.0
8 55.5
8 25.5
10 35.0
7 35.0
10 16.0
9 35.0
3 25.5
3 63.5
3 25.5
rating age
1 33.0
3 25.5
3 63.5
3 25.5
7 45.0
7 35.0
8 55.5
8 25.5
9 35.0
10 35.0
![Page 27: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/27.jpg)
rating minage 7 35.0 8 25.5
Find age of the youngest sailor with age>=18, for each rating with at least 2 such sailors and with
every sailor under 60.
rating age
7 45.0
1 33.0
8 55.5
8 25.5
10 35.0
7 35.0
10 16.0
9 35.0
3 25.5
3 63.5
3 25.5
rating age
1 33.0
3 25.5
3 63.5
3 25.5
7 45.0
7 35.0
8 55.5
8 25.5
9 35.0
10 35.0
HAVING COUNT (*) > 1 AND EVERY (S.age <=60)
What is the result of changing EVERY toANY?
![Page 28: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/28.jpg)
rating minage 3 25.5 7 35.0 8 25.5
Find age of the youngest sailor with age>=18, for each rating with at least 2
sailors between 18 and 60.
SELECT S.rating, MIN (S.age) AS minage
FROM Sailors SWHERE S.age >= 18 AND S.age <= 60GROUP BY S.ratingHAVING COUNT (*) > 1
sid sname rating age
22 dustin 7 45.0
29 brutus 1 33.0
31 lubber 8 55.5
32 andy 8 25.5
58 rusty 10 35.0
64 horatio 7 35.0
71 zorba 10 16.0
74 horatio 9 35.0
85 art 3 25.5
95 bob 3 63.5
96 frodo 3 25.5
Answer relation:
Sailors instance:
![Page 29: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/29.jpg)
Grouping over a join of three relations. What do we get if we remove
B.color=‘red’ from the WHERE clause and add a HAVING clause with this condition?
What if we drop Sailors and the condition involving S.sid?
For each red boat, find the number of reservations for
this boatSELECT B.bid, COUNT (*) AS scountFROM Sailors S, Boats B, Reserves RWHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘red’GROUP BY B.bid
![Page 30: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/30.jpg)
قسمتHAVING( پرس وجو زیر شامل تواند ( subqueryمیشود
قسمت اتفاق HAVINGاگر چه کنیم جایگزین زیر عبارت با را: افتاد خواهد
◦HAVING COUNT(*) >1
Find age of the youngest sailor with age > 18, for each rating with at least 2
sailors (of any age)SELECT S.rating, MIN (S.age)FROM Sailors SWHERE S.age > 18GROUP BY S.ratingHAVING 1 < (SELECT COUNT (*) FROM Sailors S2 WHERE S.rating=S2.rating)
![Page 31: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/31.jpg)
. گردد استفاده تو در تو نمی تواند تجمیع اشتباه:عملیات
Find those ratings for which the average age is the minimum
over all ratings
SELECT S.ratingFROM Sailors SWHERE S.age = (SELECT MIN (AVG (S2.age)) FROM Sailors S2)
SELECT Temp.rating, Temp.avgageFROM (SELECT S.rating, AVG (S.age) AS avgage FROM Sailors S GROUP BY S.rating) AS TempWHERE Temp.avgage = (SELECT MIN (Temp.avgage) FROM Temp)
Correct solution (in SQL/92):
![Page 32: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/32.jpg)
SELECT * FROM "Sailors" JOIN "Reserves" ON "Sailors".sid = "Reserves".sid ;
SELECT COUNT(*),sname FROM "Sailors" JOIN "Reserves" ON "Sailors".sid = "Reserves".sid GROUP BY "Sailors".sid;
SELECT COUNT(*),sname FROM "Sailors" JOIN "Reserves" ON "Sailors".sid = "Reserves".sid GROUP BY "Sailors".sid;
JOIN
![Page 33: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/33.jpg)
Equi-Join: A special case of condition join where the condition c contains only equalities.
Natural Join: Equijoin on all common fields.
SELECT * FROM "Sailors" NATURAL JOIN "Reserves" ;
Equi or Natural Join
S Rsid
1 1
11 RS
![Page 34: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/34.jpg)
SELECT * FROM "Sailors" LEFT OUTER JOIN "Reserves" ON "Sailors".sid = "Reserves".sid ;
SELECT COUNT(*),sname FROM "Sailors" LEFT OUTER JOIN "Reserves" ON "Sailors".sid = "Reserves".sid GROUP BY "Sailors".sid;
LEFT OUTER JOIN
![Page 35: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/35.jpg)
Field values in a tuple are sometimes unknown (e.g., a rating has not been assigned) or inapplicable (e.g., no spouse’s name). ◦ SQL provides a special value null for such situations.
The presence of null complicates many issues. E.g.:◦ Special operators needed to check if value is/is not null. ◦ Is rating>8 true or false when rating is equal to null?
What about AND, OR and NOT connectives?◦ We need a 3-valued logic (true, false and unknown).◦ Meaning of constructs must be defined carefully. (e.g.,
WHERE clause eliminates rows that don’t evaluate to true.)
◦ New operators (in particular, outer joins) possible/needed.
Null Values
![Page 36: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/36.jpg)
An IC describes conditions that every legal instance of a relation must satisfy.◦ Inserts/deletes/updates that violate IC’s are
disallowed.◦ Can be used to ensure application semantics (e.g., sid
is a key), or prevent inconsistencies (e.g., sname has to be a string, age must be < 200)
Types of IC’s: Domain constraints, primary key constraints, foreign key constraints, general constraints.◦ Domain constraints: Field values must be of right
type. Always enforced.
Integrity Constraints (Review)
![Page 37: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/37.jpg)
محدودیت های عمومی
General Constraints
بیان برایمحدودیت های
بر عالوه جامعیتیکار به کلیدها
می رود محدودیت ها برای
نیز queryاز استفاده می توان
نمود
CREATE TABLE Sailors( sid INTEGER,sname CHAR(10),rating INTEGER,age REAL,PRIMARY KEY (sid),CHECK ( rating >= 1
AND rating <= 10 ) CREATE TABLE Reserves
( sname CHAR(10),bid INTEGER,day DATE,PRIMARY KEY (bid,day),CONSTRAINT noInterlakeResCHECK (`Interlake’ <>
( SELECT B.bnameFROM Boats BWHERE B.bid=bid)))
![Page 38: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/38.jpg)
General Constraints: CHECK
Syntax: CHECK conditional-expression. The conditional expression captures more
general ICs than keys. The conditional expressions can use queries. The conditional expressions required to hold
only if the associated table is nonempty. A CHECK constraint may be expressed over
several tables; however, it is often expressed over one single table.
باشد داشته نیز نام می تواند محدودیت هر◦ CONSTRAINT MyConstraint
CHECK conditional-expression
![Page 39: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/39.jpg)
CHECK Constraints: Examples
Constraint: Rating must be in the range 1 to 10
CREATE TABLE Sailors( sid INTEGER,sname CHAR(10),rating INTEGER,age REAL,PRIMARY KEY (sid),CHECK ( rating >= 1 AND rating <= 10 ))
![Page 40: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/40.jpg)
CHECK Constraints: Examples
CREATE TABLE Reserves( sname CHAR(10),bid INTEGER,day DATE,PRIMARY KEY (bid,day),CONSTRAINT noInterlakeResCHECK (`Interlake’ <>
( SELECT B.bnameFROM Boats BWHERE B.bid=bid)))
Constraint: Interlake boats cannot be reserved
![Page 41: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/41.jpg)
Constraints Over Multiple Relations
CREATE TABLE Sailors( sid INTEGER,sname CHAR(10),rating INTEGER,age REAL,PRIMARY KEY (sid),CHECK ( (SELECT COUNT (S.sid) FROM Sailors S)+ (SELECT COUNT (B.bid) FROM Boats B) < 100 )
CREATE ASSERTION smallClubCHECK ( (SELECT COUNT (S.sid) FROM Sailors S)+ (SELECT COUNT (B.bid) FROM Boats B) < 100 )
ها به عالوه تعداد قایقها باید رانتعداد قایق
باشد100کمتر از
![Page 42: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/42.jpg)
General Constraints: ASSERTION
This solution is awkward and wrong:◦ It is wrongfully associated only with Sailors, though it
involves both Sailors and Boats.◦ If Sailors is empty, the number of Boats tuples can be
anything, since the conditional expression is not required to hold in such case!
CREATE TABLE Sailors( sid INTEGER,sname CHAR(10),rating INTEGER,age REAL,PRIMARY KEY (sid),CHECK ( (SELECT COUNT (S.sid) FROM Sailors S)+ (SELECT COUNT (B.bid) FROM Boats B) < 100 )
Constraint: Number of boats plus number of sailors is < 100
![Page 43: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/43.jpg)
General Constraints: ASSERTION
The assertion is not associated with any one of the tables involved.
ASSERTION is the right solution; not associated with either table.
CREATE ASSERTION smallClubCHECK ( (SELECT COUNT (S.sid) FROM Sailors S)+ (SELECT COUNT (B.bid) FROM Boats B) < 100 )
Constraint: Number of boats plus number of sailors is < 100
![Page 44: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/44.jpg)
General Constraints: Further Examples
Write SQL integrity constraints (domain, key, foreign key, or CHECK constraints; or assertions) for given requirements:◦ Students must have a minimum cgpa of 5.◦ Every TA must also be a student.◦ The total percentage of all assignments to projects for a
given student must be at most 100%.◦ A TA must have a cgpa higher than any student that she
coaches.
Schema: Students(sid: int, sname: string, age: int, cgpa: real)
Works(sid: int, pid: int, pct_time: int) Projects(did: int, budget: real, ta: int)
![Page 45: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/45.jpg)
General Constraints: Further Examples (1)
Constraint: Students must have a minimum cgpa of 5. CREATE TABLE Students
( sid INTEGER,sname CHAR(10),age REAL,
cgpa REAL,PRIMARY KEY (sid),CHECK ( cgpa >= 5))
Constraint: Every TA must also be a student.
CREATE ASSERTION TAisStudentCHECK ( (SELECT COUNT (*) FROM Projects P WHERE P.ta_id NOT IN (SELECT sid
FROM Students)) =0 )
![Page 46: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/46.jpg)
General Constraints: Further Examples (2)
Constraint: The total percentage of all assignments to
projects for a student must be at most 100%.
CREATE TABLE Works( sid INTEGER,pid INTEGER,pct_time INTEGER,PRIMARY KEY (sid,pid),
FOREIGN KEY (sid) REFERENCES Students, FOREIGN KEY (pid) REFERENCES Projects,
CHECK ((SELECT COUNT (W.stid) FROM Works W
GROUP BY W.stid HAVING SUM(pct_time) > 100) = 0)
![Page 47: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/47.jpg)
General Constraints: Further Examples (3)
CREATE ASSERTION TAHigherCGPACHECK ((SELECT COUNT(S.stid) FROM Students S, Students TA, Works W, Projects P WHERE S.sid=W.sid AND W.pid=P.pid AND P.ta=TA.sid AND S.cgpa > TA.cgpa) =0)
Constraint: A TA must have a cgpa higher than any student that she coaches.
![Page 48: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/48.jpg)
Trigger :) زمانی ) که عملیات از مجموعه ای تفنگ ماشهدر مشخصی تغییر که شود می .DBMSاجرا شود ایجاد
: اصلی قسمت سه◦Event : ) ( که سازد Triggerواقعه ای می فعال را◦Condition :)( باشد قرار بر .Triggerاگر می گردد اجرا◦Action :)( شوند اجرا باید که عملیاتی
Triggers
![Page 49: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/49.jpg)
BEFORE :داخل از triggerعملیات eventاجرای قبلمی شود اجرا اصلی
AFTER :داخل از triggerعملیات اصلی eventاجرای بعدمی شود اجرا
INSTEAD :داخل جای triggerعملیات eventاجرای به . یعنی می شود اجرا و Eventاصلی نمی شود اجرای اصلی
داخل می شود triggerعملیات اجرا Row-level trigger: executed once per modified
row (that satisfies the trigger condition). Statement-level trigger: executed once per
modifying statement. Transition variables: NEW, OLD, NEW TABLE, OLD
TABLE.
Triggers
![Page 50: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/50.jpg)
CREATE TRIGGER incr_count AFTER INSERT ON Sailors
WHEN (new.age < 18)FOR EACH ROWBEGIN
count:=count+1;END
Triggers: Example (SQL:92)
برای دسترسی با داده های اضافه شده NEWاز یک رابطه شود اخیر یا مقادیر جدید به روز شده استفاده می
Increment a count for each newly inserted sailor whose age < 18.
![Page 51: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/51.jpg)
CREATE TRIGGER youngSailorsUpdateAFTER INSERT ON Sailors
REFERENCING NEW TABLE AS NewSailorsFOR EACH STATEMENT /* This is the default */
INSERTINTO YoungSailors(sid, name, age, rating)SELECT sid, name, age, ratingFROM NewSailors NWHERE N.age <= 18
Triggers: Example (SQL:1999)
Save newly inserted sailors aged < 18 in a special table.
Illustrates use of NEW TABLE to refer to a set of newly inserted tuples Exists since SQL:1999
![Page 52: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/52.jpg)
CREATE TRIGGER bumpTAcgpaAFTER UPDATE ON Students
WHEN OLD.cgpa < NEW.cgpaFOR EACH ROWBEGIN UPDATE Students S SET S.cgpa = NEW.cgpa WHERE S.cgpa < NEW.cgpa AND S.sid IN (SELECT P.ta
FROM STudents S1, Works W, Projects P WHERE S1.sid = NEW.sid
AND S1.sid = W.sid AND W.sid = P.sid);END
Triggers: More Elaborated Example
Whenever a student is given a (bonus) raise on his cgpa, the TA’s cgpa must be increased to be at least as high.
Illustrates use of Oracle PL/SQL syntax in the action part.
![Page 53: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/53.jpg)
آشنايي با يک زبان رابطه SQLاي :
انواع زبانهاي رابطه اي
SQUARESEQUELSQLQUELQBEDATALOG
![Page 54: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/54.jpg)
SQLامكانات مهم زبان
دستورات تعريف داده ها• دستورات مجازشماري• دستورات پردازش داده ها• دستورات پردازش داده ها به طور ادغام شدني• دستورات نوشتن ماژول و رويه• دستورات كنترل جامعيت• دستورات كنترل تراكنشها•
![Page 55: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/55.jpg)
دستورات تعريف 1.داده ها
- تعريف شما :1- 1
CREATE SCHEMA
AUTHORIZATION USER
{base – table definition , view definition , grant-operation }
![Page 56: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/56.jpg)
دستورات تعريف 1.داده ها
- انواع داده اي:2- 1CHARACTER[(length)]
INTEGER
DECIMAL [(precision[,scale])]
SMALLINT
DOUBLE PRECISION
REAL
FLOAT [(precision)]
NUMERIC [(precision[,scale])]
![Page 57: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/57.jpg)
- دستور ايجاد جدول :3- 1
CREATE SCHEMA
AUTHORIZATION …
CREATE TABLE …
دستورات تعريف 1.داده ها
![Page 58: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/58.jpg)
- دستور حذف جدول:4- 1
DROP TABLE table-name
دستورات تعريف 1.داده ها
![Page 59: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/59.jpg)
- دستور ايجاد و حذف ديد:5- 1
CREATE VIEW …
DROP VIEW …
دستورات تعريف 1.داده ها
![Page 60: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/60.jpg)
- دستور مجاز شماري:6- 1GRANT , REVOKE
با اين دستور حق انجام يك يا بيش از يك عمل به كاربر (كاربراني) داده مي شود.
دستورات تعريف 1.داده ها
![Page 61: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/61.jpg)
- دستورات پردازش 2داده ها
):SELECT - دستور بازيابي (1- 2
SELECT [ALL | DISTINCT] item(s)-list
FROM table(s)-name
[WHERE condition(s)]
[GROUP BY column(s)]
[HAVING conditions(s)]
![Page 62: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/62.jpg)
توابع جمعي (گروهي)
• COUNT.تعداد مقادير اسكالر را به دست مي دهد :
• SUM حاصل جمع مقادير اسكالر در يك ستون را :به دست مي دهد.
• AVG ميانگين مقادير اسكالر در يك ستون را به :دست مي دهد.
• MAX بيشترين مقدار اسكالر در يك ستون را به :دست مي دهد.
• MIN كمترين مقدار اسكالر در يك ستون را به :دست مي دهد.
![Page 63: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/63.jpg)
يك مثال در مورد استفاده از توابع جمعي
SELECT MIN(GRADE) , MAX(GRADE)
FROM STCOT
WHERE TR=‘2’
AND
YRYR=’78-79’
AND
COID=‘COM222’;
در ترم COM222باالترين و پايين ترين نمره در درس را بازيابي مي كند.79-80دوم
![Page 64: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/64.jpg)
و LIKEامكان NOTLIKE
با اين دو امكان مي توان داده هاي مورد نظر را با دادن يك رشته كاراكتري به عنوان نشانوند جستجو و بيان شرايط مورد نظر، بازيابي كرد.
![Page 65: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/65.jpg)
SELECT*
FROMPROF
WHEREPRNAMELIKE‘AR%’;
مثال: مشخصات استاداني را بدهيد كه نام آنها با AR.شروع شده باشد
![Page 66: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/66.jpg)
آزمون تست وجود هيچمقدار در يك ستون
وجود هيچ ISNULLمي توان با امكان مقدار در يك ستون را تست كرد.
![Page 67: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/67.jpg)
مثال: شماره دانشجوياني را بدهيد كه نمره آنها در درس SOC333 هنوز اعالم نشده است؟78-79 در ترم دوم
SELECT STID
FROM STCOT
WHERE COID=‘SOC333’
AND
TR=‘2’
AND
YRYR=’78-79’
AND
GRADE IS NULL
![Page 68: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/68.jpg)
UNION و UNIONامكان ALL
با اين امكان، مي توان عملكرد عملگر UNION جبري را برنامه سازي كرد. حاصل
اين عملكرد، جدولي است كه سطرهاي استفاده ALLتكراري ندارد. اگر از گزيدار
شود، سيستم ديگر سطرهاي تكراري را در صورت وجود، حذف نمي كند.
![Page 69: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/69.jpg)
: GROUP BYامكان (گروه بندي)
با اين امكان مي توان سطرهاي جدول را حسب مقادير يك ستون ساده گروه بندي كرد به نحوي كه در هر گروه، مقدار آن ستون يكسان باشد.
![Page 70: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/70.jpg)
را برحسب مقادير ستون STCOTمثال: جدول COID.منطقا گروه بندي كنيد
SELECTCOID,AVG(GRADE)ASAVGGR
FROMSTCOT
GROUPBYCOID;
![Page 71: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/71.jpg)
HAVINGامكان
با اين امكان مي توان شرط (شرايطي) ناظر به گروه سطرها اعالن كرد. نقش اين امكان
در سطر است. WHEREدر واقع همان نقش هميشه با HAVINGتوجه داشته باشيد كه
GROUPBY.مي آيد
![Page 72: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/72.jpg)
-79مثال: شماره درسهايي را بدهيد كه در ترم دوم دانشجو در آنها ثبت نام كرده باشند.10 كمتر از 78
SELECTSTCOT.COID
FROMSTCOT
WHERETR=‘2’
AND
YRYR=’78-79’
GROUPBYCOID
HAVINGCOUNT(*)<10
![Page 73: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/73.jpg)
BETWEENامكان
شكل كلي اين امكان چنين است:Scalar-expression[NOT]BETWEENScalar-expressionANDScalar-expression
![Page 74: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/74.jpg)
مثال: شماره دانشجوياني را بدهيد كه نمره آنها در 19 و 15 بين 77-78 در ترم اول HIS444درس SELECTSTCOT.STIDباشد.
FROMSTCOT
WHERETR=‘1’
AND
YRYR=’78’79’
AND
GRADEBETWEEN’15’AND’19’
![Page 75: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/75.jpg)
- دستورات پردازش 2داده ها
- دستورات عمليات 2- 2ذخيره سازي :
براي انجام عمليات سه گانه ذخيره سازي سه وجود UPDATE و DELETE، INSERTدستور
دارد.
![Page 76: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/76.jpg)
دستور UPDATE
شكل كلي اين دستور چنين UPDATEtable-nameاست:
SETassignment-commalist
[WHERECondition(s)]
![Page 77: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/77.jpg)
مثال: تعداد واحد درسهاي عملي را يك واحد UPDATECOTكاهش دهيد.
SETCREDIT=CREDIT-1
WHERECOTYPE=‘p’;
![Page 78: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/78.jpg)
دستور DELETE
شكل كلي اين دستور چنين DELETEاست:
FROMtable-name
[WHERECond(s)]
![Page 79: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/79.jpg)
را در 78110555مثال: درسهاي دانشجوي با شماره حذف كنيد78-79ترم دوم سال
DELETE
FROMSTCOT
WHERESTID=‘78110555’
AND
TR=‘2’
AND
YRYR=’78-79’;
![Page 80: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/80.jpg)
دستور INSERT
اين دستور دو شكل كلي INSERTINTOtable-nameدارد:
Values(onerow);
INSERTINTOtable-name
Subquery;
در شكل دوم، تعدادي سطر در جدول درج مي شوند.
![Page 81: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/81.jpg)
مثال: اطالعات درسي زير را در <COM888,2,78-79,12,78110888>جدول درج نمائيد.
INSERTINTOSTCOT
VALUES<‘78110888’,‘COM888’,2,78-79,12>;
![Page 82: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/82.jpg)
جمع بندي در مورد امكانات SQL1نسخه
- نارويه اي است.1
- داراي كمال ساختاري است.2
- زبان استانده سيستم هاي رابطه اي موجود 3است.
- تمام انواع داده اي ساده را دارد.4
- عملگرهاي بسيار قوي دارد.5
- يادگيري آن ساده است.6
- استقالل داده اي را تامين مي كند.7
- هم به صورت مستقل و هم به صورت 8ادغام شده قابل استفاده است.
![Page 83: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/83.jpg)
SQL2دستوراتي كه در نسخه تغيير كردند يا به آن اضافه
شدند: دستور تعريف 1.
داده ها
دستور تعريف 2.ميدان
انواع داده اي3.
دستور تغيير 4.ميدان
دستور حذف 5.ميدان
دستور ايجاد 6.جدول
دستور تغيير 7.جدول
. دستور حذف جدول8
. تعريف جدول موقت9
. دستور بازيابي10
امكانات جامعيتي11.
امكانات ايمني12.
.13 SQLپويا
![Page 84: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/84.jpg)
امكانات جامعيتي
كاربر مي تواند زمان وارسي جامعيت پايگاه را (براساس محدوديتها و قواعد داده شده) خود مشخص كند. مي تواند درخواست كند كه اين وارسي بالفاصله باشد يا با تاخير. براي اين
SETCONSTRAINTS(constraint-name)منظور از امكان زير استفاده مي شود:
{DEFERRED|IMMEDIATE}
![Page 85: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/85.jpg)
امكانات ايمني
كاربر مي تواند امتياز دستيابي به اشياء تعريف شده در شما را به منظور انجام عمل
مشخص، به كاربر ديگري بدهد. و براي GRANTبراي اعطاي امتياز از دستور
استفاده مي شود.REVOKEلغو آن از دستور
![Page 86: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/86.jpg)
امتيازهايي كه يك كاربر مي تواند به يك كاربر ديگر بدهد:
• USAGEاجازه استفاده از يك ميدان :• SELECTاجازه دستيابي به تمام ستونهاي يك جدول :• INSERT(X) اجازه درج يك مقدار در ستون :Xاز يك جدول • INSERTاجازه درج تمام ستونهاي يك جدول :• UPDATE(X) اجازه بهنگام سازي ستون :Xاز يك جدول • UPDATEاجازه بهنگام سازي تمام ستونهاي يك جدول :• DELETEاجازه حذف سطر(ها) از يك جدول :• REFRENCES(X) اجازه ارجاع به ستون :X از يك جدول در
تعريف محدوديتهاي جامعيتي
امتيازها
![Page 87: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/87.jpg)
SQL3دستوراتي كه در نسخه تغيير كردند يا به آن اضافه
شدند: تعريف نوع داده مجرد1.تعريف زيرنوع2.امكان تعريف زيرجدول و زبرجدول3.امكان ارث بري ستونهاي جدول جديد از ستونهاي 4.
جدول نامدار موجودرويه اي شدن زبان5.رهانا6.نوشتن رويه7..8SQLادغام شده واسط درخواست فراخوان9.
دستورات كنترل تراكنشها10.
![Page 88: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/88.jpg)
هدفهاي كلي: آشنايي با ديد در مدل رابطه اي
هدفهاي رفتاري: دانشجو در پايان اين جلسه مي تواند:
مرتبت با آن را SQL ديد را تعريف كند و دستورات •بكار برد.
مزاياي استفاده از ديد را برشمارد.•
عمليات قابل انجام روي ديد را شرح دهد.•
انواع ديد از لحاظ پذيرا و ناپذيرا را نام ببرد.•
![Page 89: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/89.jpg)
ديدهاي رابطه اي
ديد در مدل رابطه اي نوعي رابطه است، بنابراين مي توان آن را به كمك
يك عبارت جبر رابطه اي يا حساب رابطه اي به شكل زير تعريف كرد:
Viewname=Relationalexpression
![Page 90: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/90.jpg)
ديد در SQL
دستور ايجاد CREATEVIEWViewname[(Column-name(s))]ديد
ASSubquery
.
.
.
[WITH[CASCADE|LOCAL]CHECKOPTION];
![Page 91: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/91.jpg)
مثالCREATEVIEWMAPHSTUD(STNUM,STLEV,STAREA)
ASSELECTSTID,STDEG,STMJR
FROMSTT
WHERESTMJR=‘Math’ORSTMJR=‘Phys’
WITHLOCALCHECKOPTION;
![Page 92: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/92.jpg)
SQLديد در
دستور حذف ديد
DROPVIEWViewname{restrict|cascade}
![Page 93: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/93.jpg)
مثال:
DROPVIEWMAPHSTUDCASCADE;
![Page 94: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/94.jpg)
مزاياي ديد
تامين كننده محيط انتزاعي براي كاربران سطح 1.خارجي
تامين كننده پويايي باال در تعريف پايگاه توسط 2.كاربر
تسهيل كننده واسط كاربر برنامه ساز با پايگاه3.
امكاني است براي كوتاه نويسي يا ماكرونويسي 4.پرسشها
تامين كننده اشتراك داده اي5.
تامين كننده نوعي مكانيسم خودكار ايمني داده ها6.
تامين كننده استقالل داده اي فيزيكي و منطقي7.
امكان تعريف شيئ با اندازه هاي مختلف8.
![Page 95: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/95.jpg)
معايب ديد
ايجاد فزونكاري در سيستم براي انجام 1.تبديل خارجي/ادراكي و احيانا
خارجي/خارجي
عدم امكان انجام عمليات ذخيره سازي 2.در بسياري از گونه هاي ديد و در نتيجه
ايجاد محدوديت براي كاربر
![Page 96: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/96.jpg)
عمليات در ديدهاي رابطه اي
بازيابي از ديد رابطه اي
چون ديد خود نوعي رابطه است، پس براي بازيابي از ديد هم يك عبارت
جبري يا حسابي مي نويسيم
![Page 97: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/97.jpg)
مثال بازيابي از يك ديد با استفاده از SQLCREATEVIEWدستورات
ASSELECTSTID,STDEG
FROMSTT
WHERESTPROG=‘Math’
1V
SELECTSTID
FROM
WHERESTDEG=‘bs’;1V
![Page 98: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/98.jpg)
عمليات در ديدهاي رابطه اي
عمليات ذخيره سازي در ديدهاي رابطه اي
براي انجام عمليات ذخيره سازي در ديد از INSERT، UPDATEهمان دستورات سه گانه
استفاده مي شود.DELETEو
![Page 99: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/99.jpg)
ديدها از نظر پذيرش عمليات ذخيره سازي
ديدهاي 1.پذيرا
ديدهاي 2.ناپذيرا
![Page 100: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/100.jpg)
ديدهاي پذيرا
ديدهاي گزينشي1.
ديد گزينش – پرتوي داراي كليد 2.رابطه مبنا
CK-CKديد پيوندي 3.
CK-FKديد پيوندي 4.
ديد حاصل اجتماع، اشتراك و 5.تفاضل دو رابطه
![Page 101: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/101.jpg)
ديد گزينشي حاصل عملگر گزينش در يك رابطه است.
![Page 102: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/102.jpg)
در ديد ”گزينش-پرتوي داراي كليد رابطه مبنا“ عالوه بر گزينش
تاپلهايي از رابطه مبنا، عملگر پرتو نيز اعمال شده است. اين نوع ديد
را اصطالحا ديد داراي كليد با تاپلهاي ناقص مي گوئيم.
![Page 103: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/103.jpg)
، حاصل پيوند CK-CKديد پيوندي دو رابطه روي كليد كانديد مشترك
آنها است و در عمليات ذخيره سازي مشكلي ندارد
![Page 104: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/104.jpg)
، حاصل پيوند روي CK-FKديد پيوندي كليد كانديد يك رابطه و كليد خارجي رابطه ديگر است. اين ديد در حذف
مشكل دارد، زيرا با حذف يك تاپل از اين ديد، در هريك از دو رابطه مبنا، يك تاپل حذف مي شود و چنانچه كاربر بخواهد
محتواي ديد خود را نمايش دهد، تاپلهاي ديگر هم از ديد او حذف مي شوند كه
درخواست نكرده است.
![Page 105: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/105.jpg)
ديد حاصل اجتماع، اشتراك و تفاضل دو رابطه در عمليات
ذخيره سازي مشكلي ندارد، به شرط آنكه سيستم بتواند تشخيص دهد كه عمل درخواست شده، در كداميك از دو رابطه مبنا انجام
شود.
![Page 106: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/106.jpg)
مشكالت مهمتر ديدهاي پذيرا
بروز عارضه جانبي در خود •ديد
بروز عارضه جانبي در ديدهاي •ديگر
نقض قاعده جامعيت•
بروز فزونكاري در سيستم•
تغيير ماهيت عمل درخواست •شده
تعدد تبديالت و مشكل •تصميم گيري
![Page 107: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/107.jpg)
ديدهاي ناپذيرا
ديد پرتوي يا گزينشي فاقد كليد 1.رابطه مبنا
NK-NK ديد پيوندي 2.
FK-FK ديد پيوندي 3.
ديد حاوي صفت مجازي4.
ديد حاصل تقسيم5.
![Page 108: شرکت IBM در دهه 1970 در سیستم مدیریت پایگاه داده System R برای اولین بار از این زبان اسفاده نمود زمانی که توسط](https://reader031.vdocuments.mx/reader031/viewer/2022020716/56649ef35503460f94c05da2/html5/thumbnails/108.jpg)
ويژگيهاي ديدهاي قابل بهنگام سازي
SELECTعبارت تعريف كننده محدوده ديد، يك عبارت معتبر 1.باشد.
، فقط يك جدول وجود داشته SELECT، عبارت FROMدر كالز 2.باشد.
، يك جدول مبنا يا يك ديد قابل FROMجدول قيدشده در كالز 3.بهنگام سازي باشد.
، ستونهاي مورد نظر بايد در جدول SELECT عبارت item-listدر 4.مبنا متناظر باشد.
و گزينه HAVING و GROUPBY نبايد كالز SELECTدر عبارت 5.DISTINCT.وجود داشته باشد
FROM نبايد عبارتي حاوي كالز SELECT عبارت WHEREدر كالز 6.باشد، به گونه اي كه در آن به همان جدولي ارجاع داده شده
قبلي به آن ارجاع شده است.FROMباشد كه در كالز