ali80dal
06-Feb-2007, 01:24 PM
Structural query ******** لغة الاستعلام البنيوية SQL
قواعد البيانات العلائقية أوراكل Relational Data Base
يمكن تقسيم عبارات لغة SQL بالشكل التالي :
وصف De************ion Statement
استرجاع البيانات من قاعدة البيانات Select
DML _ Data manipulation ******** وتعرف بلغة معالجة البيانات تستخدم لإدخال صفوف جديدة أو تغيير في صفوف موجودة وحذف صفوف غير ضرورية من جدول في قاعدة البيانات Insert
Update
Delete
DDL _ Data definition ******** وتعرف بلغة تعريف البيانات (التعامل مع الكائنات ) وتستخدم لتثبيت و تغيير تركيبات أو أبنية البيانات في الجدول بشكل عام Create
Alter
Drop
Rename
Truncate
DCL _ Data control ******** تعرف بلغة التحكم بالبيانات وعن طريقها يتم تحديد السماحيات بالدخول على قاعدة البيانات أو التغيير في بنيتها Grant
Revoke
عبارة الاختيار Select الأساسية (Basic select statement) :
الصيغة العامة :
Select {*, Column name , ----}
From Table name:
أمثلة Examples :
1) اختيار كافة الأعمدة 1) 1. SQL> select * Select all column 2. from emp ;
2) اختيار بعض الأعمدة بأسمائها 2) 1.SQL> Select deptno ,dname ,loc
Selecting specific column 2. from emp ;
3) استخدام التعابير الحسابية Arithmetic Operators
3) 1. SQL> select ename,sal,sal+300
2. from emp;
جدول الرموز الحسابية :
وصف De************ion الرمز Operator
Add +
Subtract -
Multiply *
Divide /
أسبقية العمليات الحسابية ( الضرب - القسمة – الجمع الطرح )
Using Parentheses (استخدام الأقواس ): يمكن استخدام الأقواس لتحديد أسبقية العملية الحسابية
مثلاً : 12*(sal+100)=1260 تختلف عن 12*sal+100=160 وذلك باعتبار sal =5
القيمة NULL أي عدم الوجود أو باطلة : وهي قيمة غير موجودة وغير محددة Unassigned وغير معروفة Unknown وغير قابلة للاستعمال و التطبيق Inapplicable وهي لا تشبه الصفر أو الفراغ وأي عملية حسابية على القيمة NULL تنتج القيمة NULL نفسها .
4) استخدام أسماء مستعارة للأعمدة Using column aliases
- إما أن نستعمل AS أو نكتب الاسم القديم والاسم الجديد مباشرة بعده و بينهما فراغ :
4) 1.SQL>select ename As name ,sal salary
2. from emp;
-أو نضع الاسم الجديد ضمن فواصل علوية و خاصة في اللغة العربية كما يلي :
1.SQL>select ename "name" , sal*12 "annual salary"
2. from emp;
5) استخدام السلاسل الحرفية البسيطة Using Literal Character String
يمكننا دمج السلاسل الحرفية لحقلين أو أكثر ووضع فراغات بينها باستخدام الرمز || كما يلي :
5) 1.SQL>select ename ||' '|| job as "Employee Details"
وفي هذه الحالة يجب استخدام AS حتماً 2. from emp;
كما يمكننا دمج الصفوف بدون فراغات 1.SQL>select ename || job as "Employees"
2. from emp;
6)الصفوف المزدوجة (المكررة) Duplicate Rows
عند عرض الجدول يقوم البرنامج بعرض كل الصفوف والصفوف المكررة يمكن استخدام عبارة Distinct لإزالة الصفوف المكررة
إزالة الصفوف المكررة 6) 1.SQL>select Distinct deptno
2. from emp;
وصف بنية الجدول Displaying Table Structure :
يمكننا وصف بنية الجدول باستخدام العبارة DESCRIBE مع اسم الجدول ويمكن اختصار العبارة بكتابة DESC والذي يعطينا وصف للجدول ولأنواع البيانات في الحقول والقيم الباطلة أو الفارغة كما يلي : SQL> Desc dept
بعض أنواع البيانات : SOME DATA TYPE
NUMBER (P,S) : النوع العددي حيث P أكبر طول رقم قيل الفاصلة العشرية و S أكبرطول رقم بعد الفاصلة العشرية .
VARCAR(S) : نوع بيانات حرفي أو رمزي أكبر عدد لحروفه S .
DATE : بيانات من النوع تاريخ ويأخذ أكبر قيمة له 31/ December /9999 .
CHAR(S) : بيانات نوع حرفي تأخذ طول ثابت S .
أوامر التحرير في لغة الــSQL PLUS SQL*PLUS EDITING COMMANDS
I. الأمر APPEND وبعده نص (يمكن اختصاره بحرف A) : يقوم هذا الأمر بإضافة النص إلى آخر السطر الحالي أو السطر الأخير في عبارة SQL السابقة بمعنى آخر في حالة وضع عبارة ناقصة وتنفيذها يمكن إكمالها بعد التنفيذ باستخدام الأمر A .
II. الأمر CHANGE (اختصاراً C) : كما يلي C /old ****/new **** يقوم بتغيير النص OLD إلى النص NEW في عبارة SQL الأخيرة .
III. الأمر CHNGE /****/ أو C /****/ : يحذف النص **** نهائياً من عبارة SQL الأخيرة أي يستبدلها بفراغ .
IV. الأمر CLEAR BUFFER أو اختصارا CL BUFF : يحذف كل السطور أو التعليمات الموجودة ضمن الحاجز أو المصد ( الـ Buffer ).
V. الأمر DEL: يقوم بحذف السطر الحالي أي السطر الأخير في عبارة SQL الأخيرة .
VI. الأمر RUN أو R :يقوم هذا الأمر بعرض وتشغيل عبارة SQL الأخيرة والموجودة ضمن المصد الـ Buffer .
أوامر الملفات في لغة الــ SQL PLUS SQL*PLUS FILE COMMANDS
i. الأمر SAVE Filename أو SAV Filename : يقوم بحفظ تعليمة الـSQL الأخيرة ضمن الملف المسمى ؟ والذي يمكن استدعاؤه وتنفيذ التعليمة ضمنه باستخدام الأمر التالي GET .
ii. الأمر GET Filename : يقوم باستدعاء تعليمة الـ SQL المخزنة ضمن الملف النصي المذكور .
iii. الأمر START Filename أو STA Filename : يقوم مباشرة بتنفيذ تعليمة الـ SQL المخزنة في الملف المذكور ويمكن الاستعاضة عنه بالأمر @filename .
iv. الأمر EDIT أو اختصارا ED: يقوم بتحرير آخر تعليمة SQL ضمن محرر نصوص المفكرة عندها يمكن إصلاحها ثم حفظها وتنفيذها من جديد باستخدام الأمر R .
v. الأمر EDIT Filename أو ED Filename : يقوم بتحرير الملف الذي قمنا بحفظ تعليمة SQL ضمنه مسبقاً ضمن محرر نصوص .
vi. الأمر SPOOL Filename أو اختصاراً SPO Filename : يقوم هذا الأمر بتخزين نتائج الاستفسار في ملف , بإضافة OFF إلى الأمر فإنه يقوم بإغلاق الملف , أما بإضافة OUT فإنه يقوم بإغلاق الملف وإرسال النتائج إلى طابعة النظام . SPO filename|OFF أو SPO filename|out .
vii. الأمر EXIT يقوم بالخروج من واجهة الـ SQL*PLUS .
عبارة WHERE ( Were Clause) :
تحديد الصفوف المختارة LIMITING ROWS SELECTED
تحديد الصفوف التي تظهر باستخدام عبارة Where Restrict the rows returned by using the where clause _
الصيغة العامة SQL>select Distinct -------
From table name
Where conditions ;
مثال : SQL>select ename , job , deptno
from emp
Where job= 'clerk' ;
رموز (عوامل) المقارنة COMPARISON OPERATORS
Meaning المعنى Operator
Equal toيساوي =
Greater than أكبر من >
Greater than or equal to أكبر أو يساوي >=
Less than أقل من <
Less than or equal to أقل أو يساوي <=
Not equal to لا يساوي < >
Example :
SQL>Select ename , sal , comm
From emp
Where sal<=comm ;
عوامل مقارنة أخرى OTHER COMPARISON OPERATORS
Meaning المعنى Operator
Between tow values بين قيمتين Between…and…
Match any of a list of values يطابق مع كل قيمة ضمن القائمة List IN (list)
Mach a character pattern
يطابق نموذج الحرف LIKE
Is a null value كقيمة باطلة IS NULL
Examples :
SQL>Select empno , enam , mgr, deptno
From emp
Where ename in ('ford',allen') ;
Or Where sal between 1000 and 1500;
Or Where mgr in (7902,7566,7788) ;
Or Where mgr is null ;
استخدامات معامل LIKE Using The Like Operator
Meaning and De************ion المعنى والتوصيف Operator
(per cent) Represent any sequence of zero or more characters
تمثل أي سلسلة مكونة من عدة أحرف أو ولا حرف %
(under score) Represent any single characters
تمثل أي حرف وحيد _
Example :
SQL>select ename , hiredate
From emp
Where hiredate like '%81' ;
Or Where ename like '_ A%' ;
المعاملات المنطقية LOGICAL OPERATOTS
Meaning المعنى Operator
Returns true if both component condition is true
يعيد قيمة صحيحة عندما يكون كل من الشرطين صحيحاً AND
Returns true if either component condition is true
يعيد قيمة صحيحة عندما يكون أحد الشرطين صحيحاً OR
Returns true if the following condition is false
يعيد قيمة صحيحة عندما تكون العبارة خاطئة NOT
جدول الحقيقة للمعامل AND AND true table
Unknown False True AND
Unknown False True True
False False False False
Unknown False Unknown Unknown
Example :
SQL>select * from emp
Where sal >= 100
AND Job='clerk' ;
جدول الحقيقة للمعامل OR OR true table
Unknown False True OR
True True True True
Unknown False True False
Unknown Unknown True Unknown
Example :
SQL>select * from emp
Where sal >= 100
OR Job='clerk' ;
جدول الحقيقة للمعامل NOT NOT true table
Unknown False True NOT
Unknown True False
Example :
SQL>select * from emp
Where Job is NOT in ( 'clerk','manager' );
قوانين أسبقية المعاملات Rules of Precedence
Operator المعامل رقم الأولوية
All comparison operators
كافة معاملات المقارنة 1
NOT 2
AND 3
OR 4
Example :
SQL>select ename,job,sal
From emp
Where Job = 'salesman'
Or Job = 'president'
And sal > 1500 ;
عبارة Order By (Order by Clause ) :
اختيار الصفوف باستخدام عبارة Order By Sort rows with the order by clause
تأتي عبارة Order By في آخر عبارة الاختيار Select .
مثال : SQL>select ename , job , hiredate
from emp
Order By hiredate ;
تقوم عبارة Order By بترتيب طريقة ظهور الصفوف المسترجعة Order By specifies the order in witch the retrieved rows are displayed .if order by clause not used the sort order is undefined and the Oracle server may not fetch rows in the same order for the same query twice .
إذا لم تستخدم عبارة الترتيب Order By تصبح طريقة الترتيب غير محددة وربما لا يقوم مخدم أوراكل بإعادة نفس نتيجة الاستفسار بنفس الترتيب مرتين .
استخدام DESC مع عبارة الترتيب Order By (الترتيب بشكل تنازلي): Sorting with descending order
افتراضياً تقوم عبارة Order by بترتيب الصفوف بشكل تصاعدي وباستخدام DESC مع عبارة Order by يصبح الترتيب بشكل تنازلي .
طريقة الترتيب الافتراضية هي بشكل تصاعدي The default sort order is ascending .
مثال : SQL>select ename , job , hiredate
from emp
Order by hiredate DESC ;
Notices :
تظهر القيم الرقمية بدءاً بأقل قيمة ثم الأكبر والأكبر Numeric values are displayed with the lowest values first
تظهر قيم التواريخ حسب أبكر قيمة أولاً Date values are displayed with the earliest values first
تظهر القيم النصية حسب التسلسل الأبجدي Character values are displayed in alphabetical order
تظهر القيم الفارغة أخيراً في الترتيبات التصاعدية Null values are displayed last for ascending sequences
وأولاً في الترتيبات التنازلية and first for descending sequences
الترتيب وفق حقول متعددة أي حسب أكثر من عمود Sorting by Multiple columns
مثال : SQL>select ename , deptno , sal
from emp
Order by deptno , sal DESC ;
يمكنك الترتيب وفق عمود غير موجود ضمن قائمة الحقول المختارة You can sort by a column that is not in the select list .
يمكن الترتيب وفق عدد حقول موافق لعدد حقول الجدول المرتب The sort limit is the number of columns in the given table .
توابع SQL SQL Functions
معظم الدوال التالية مخصصة لنسخة الـ SQL التابعة لأوراكل حصراً
Most of the functions are specific to Oracle version of SQL .
نوعي دوال الـ SQL Two Types of SQL Functions
1. توابع وحيدة الصف 1-Single – Row Functions
2. توابع متعددة الصفوف 2-Multiple – Row Functions
1. التوابع وحيدة الصف : تعمل هذه التوابع بصف واحد فقط وتعيد نتيجة واحدة لكل صف
1-Single–Row Functions : These functions operate on single row only and return one
result per row.
2. التوابع متعددة الصفوف : وهي تركيب مجموعات من الصفوف تعطي نتيجة واحدة لكل مجموعة صفوف .
2- Multiple – Row Functions :these functions multiplate groups of rows to give one
result per group of rows .
الدوال الحرفية Character Functions
1. دوال تحويل الحالة 1-Case Conversion Functions : ( Lower , Upper , Initcap )
2-Character Manipulation Functions :( Concat , Substr ,Length , Instr, Lpad )
2. دوال معالجة الأحرف
الهدفPurpose Function
Convert alpha character values to lowercase يقوم بتحويل الرموز والأحرف إلى أحرف صغيرة Lower (اسم العمود)
Convert alpha character values to uppercase يقوم بتحويل الأحرف إلى أحرف كبيرة Upper(اسم العمود)
Convert alpha character values to uppercase for the first letter of each word and all other letters in lowercase يقوم بتحويل الحرف الأول من كل كلمة على حرف كبير وبقية الأحرف من كل كلمة صغيرة Initcap(اسم العمود)
الهدفPurpose Function
Concatenates the first character value to the second character value يقوم بدمج التعبير في العمود الأول بسلسلة واحدة مع التعبير في العمود الثاني ويمكن إضافة نص وهو مرادف للرمز || الذي رأيناه سابقاً Concat(اسم العمود1 , Expre.. …, اسم العمود2)
يقوم هذا التابع بالقص ابتداءً من الحرف رقم 6 وينتهي بعد 4 حروف بتعبير آخر
Count إذا لم يحدد العدد أي القيمةSubstr(column,start,count)
يعطينا الأحرف بدءاً منstart حتى نهاية الكلمة Substr(column,6,4)
Return the number of character in value يعيد عدد أحرف كل قيمة من قيم الحقل المحدد column Length(column)
يقوم بالبحث عن حرف أو كلمة ضمن سلسلة أحرف يمثل columnاسم الحقل وset الحرف أو مجموعة الأحرف المراد البحث عنها ويجب أن تكون بين فاصلتين علويتين وstart رقم الحرف الذي يبدأ منه البحث وn رقم التكرار لأننا قد نقوم بالبحث عن التكرار الثاني أو الرابع للحرف أو الكلمة Instr(column,'set',start,n)
يقوم بإضافة أحرف أو رموز إلى يسار الكلمة يمثل columnاسم الحقل و length طول السلسلة الحرفية المطلوب بعد الإضافة وset الحرف أو مجموعة الأحرف المراد إضافتها Lpad(column,length,'set')
يقوم بإضافة أحرف أو رموز إلى يمين الكلمة يمثل columnاسم الحقل و length طول السلسلة الحرفية المطلوب بعد الإضافة وset الحرف أو مجموعة الأحرف المراد إضافتها Rpad(column,length,'set')
ملاحظة : يجب التمييز بين الأحرف الكبيرة والصغيرة ضمن التوابع السابقة أي في حالة البحث عن حرف صغير فإننا لا نجده إذا كان بهيئة حرف كبير .
مثال 1 : SQL> select 'the job title for' || Initcap(ename) ||
'is' || Lower(Job) As Employee Details
from emp ;
مثال 2 : SQL> select Lpad(ename,10,'F')||Rpad(ename,10,'J')
As Name
from emp ;
مثال 1 : SQL>select ename , Instr(ename,'E',1,1)
As Number
from emp ;
1 الأولى تمثل رقم الحرف الذي يبدأ منه البحث وهنا يبدأ البحث من الحرف الأول و 1 الثانية تعبر عن رقم التكرار للحرف ويعيد التابع رقم مكان توضع الحرف المطلوب أو الكلمة المطلوبة والموضوعة ضمن فواصل علوية .
استخدام دالة التدوير (التقريب ) Using The Round Function
The round function rounds the column expression or value to n decimal places .
تقوم دالة التدوير بتقريب العدد إلى n فاصلة عشرية أو عدد عشري .
مثال 1 : SQL> select Round ( 45.923 , 2) , Round( 45.923 , -1 )
from dual ;
Round ( 45.923 , 0) = 46 , Round ( 45.923 , 2) = 45.92 , Round ( 45.923 , -1) = 50 ,
Round ( 499.923 , -2) = 500 , Round ( 45.923 , 1) = 45.9
If the second argument is 0 or is missing the value is rounded to zero decimal places . If the second argument is 2 the value is rounded to two decimal places . If the second argument is -2 the value is rounded to two decimal places to the left .
إذا كان المعامل الثاني لدالة التدوير مساوياً الصفر أو غير موجود يتم حذف الأرقام العشرية ويتم التقريب إلى أول رقم صحيح
وإذا كان المعامل الثاني لدالة التدوير مساوياً للعدد 2 يتم تقريب الرقم إلى أقرب رقمين بعد الفاصلة وفي حالة كون المعامل الثاني مساوياً لـ -2يتم تقريب الرقم منزلتين عشريتين إلى اليسار .
استخدام دالة القطع (البتر ) Using The TRUNC Function
The TRUNC function truncates the column expression or value to n decimal places .
تقوم دالة القطع بقطع العدد إلى n مرتبة أو فاصلة عشرية .
مثال 1 : SQL> select TRUNC ( 45.923 , 2) , TRUNC ( 45.923 , -1 )
from dual ;
TRUNC ( 45.923) = 45 , TRUNC ( 45.923 , 2) = 45.92 , TRUNC ( 45.923 , -1) = 40 ,
TRUNC ( 499.923 , -2) = 400 , Round ( 45.923 , 1) = 45.9
The TRUNC function works with arguments similar to those of the Round function . If the second argument is 0 or is missing the value is truncate to zero decimal places . If the second argument is 2 the value is truncate to two decimal places . If the second argument is -2 the value is truncate to two decimal places to the left .
تعمل دالة القطع تعمل نفس عمل دالة التدوير مع المعاملات إذا كان المعامل الثاني لدالة القطع مساوياً الصفر أو غير موجود يتم بتر الأرقام العشرية وإذا كان المعامل الثاني لدالة التدوير مساوياً للعدد 2 يتم قطع الرقم إلى أول رقمين بعد الفاصلة وفي حالة كون المعامل الثاني مساوياً لـ -2يتم القطع منزلتين عشريتين إلى اليسار .
استخدام دالة باقي القسمة (MOD) Using The MOD Function
The MOD function finds the remainder of value1 divided by value2 .
تقوم دالة باقي القسمة بإيجاد باقي قسمة القيمة1 على القيمة2 .
مثال 1 : SQL> select ename , sal , comm, MOD(sal , comm)
from dual
Where job = 'SALESMAN' ;
العمل مع التواريخ (Dates) Working with Dates
Oracle stores dates in an internal numeric format : century , year , month , day , hours ,minutes
, seconds . يخزن أوراكل التواريخ بشكل عددي داخلي : قرن, سنة , شهر , يوم , ساعات , دقائق , ثواني
الشكل الافتراضي للتاريخ هو DD-MON-YY The default date format is DD-MON-YY
SYSDATE إجراء يعيد التاريخ والوقت الحالي SYSDATE is a function returning current date an d time .
سنقوم باستخدام جدول يسمى DUAL لإظهار نتيجة هذا الإجراء وهو جدول وهمي فارغ يحتوي على حقل حرفي واحد باسم dummy .ويحتوي على قيمة وحيدة هي X يستخدم هذا الجدول لإعادة قيمة وحيدة وهو منشأ من قبل المستخدم SYSTEM
Valid oracle dates are between January 1.4712 B.C and December 31.9999 A.D
يمكنك استخدام التابع أو الإجراء SYSDATE مع أي جدول وذلك باستخدام عبارة select واختيار اسم للحقل الجديد أو بدون اسم SQL> select SYSDATE today from emp ;
أو SQL> select SYSDATE from dual ;
العمليات الحسابية على التواريخ Arithmetic With Dates
تشمل العمليات التالية :
إضافة أو حذف رقم من أو إلى تاريخ لإنتاج تاريخ -Add or subtract a number to or from a date for
a resultant date value
طرح تاريخين لإيجاد عدد الأيام بينهما -Subtract two dates to find the number of days
between those dates .
إضافة ساعات للتاريخ بتقسيم عدد الساعات على 24 -Add hours to a date by dividing the number of
hours by 24
يمكنك إنجاز العمليات الحسابية على التاريخ باستخدام المعاملات الحسابية كالجمع والطرح لأن التاريخ يخزن بشكل رقم كما يمكنك إضافة أو طرح رقم ثابت من وإلى التاريخ .
You can perform calculation using arithmetic operators such as additional and subtraction . You can add and subtract number constants as well as dates .
You can perform the following operations:
العمليةOperation Result النتيجة De************ion الوصف
Date + number Date إضافة عدد أيام إلى التاريخ
Date - number Date طرح عدة أيام من التاريخ
Date - Date Number of days طرح تاريخ من آخر
Date + number/24 Date إضافة عدد من الساعات إلى التاريخ
مثال 1 : SQL> select ename , (sysdate-hiredate)/ 7 weeks
from emp
Where deptno = 10 ;
يظهر هذا المثال أسماء وعدد أسابيع العمل لجميع الموظفين أو العمال في القسم رقم 10 لأن الفرق بين التاريخ الحالي الناتج عن التابع Sysdate وتاريخ الاستخدام للعامل Hiredate يعطي المدة الزمنية بالأيام وبالقسمة على 7 تكون النتيجة بالأسابيع .
DATE FUNCTIONS
FUNCTION DE************ION
MONTHS_BETWEEN(D1,D2) عدد الأشهر بين تاريخين D1 و D2
ADD_MONTHS(D1,n) إضافة n شهر إلى التاريخ D1
NEXT_DAY(DATE ,'CH') يعطينا تاريخ أول يوم اسمه CH بعد التاريخ Date
LAST_DAY(DATE) يعطي تاريخ آخر يوم من الشهر المذكور
ROUND(DATE , 'DAY' or 'MONTH' or 'YEAR' ) في حالة Day يقوم التابع بتقريب التاريخ إلى تاريخ أقرب يوم أحد من التاريخ الحالي وفي حالة Month يقوم بتقريب التاريخ إلى تاريخ أقرب أول شهر من التاريخ الحالي أما في حالة Year فإنه يقرب التاريخ إلى أقرب أول يوم من أقرب عام
TRUNC( DATE , 'DAY' or 'MONTH' or 'YEAR' ) في حالة Day يقوم التابع بتقريب التاريخ إلى تاريخ أقرب يوم أحد قبل التاريخ الحالي وفي حالة Month يقوم بتقريب التاريخ إلى تاريخ أقرب أول شهر قبل التاريخ الحالي أما في حالة Year فإنه يقرب التاريخ إلى تاريخ بداية العام الحالي
أمثلة عن استخدام توابع التواريخ :
مثال 1 : SQL> select empno , hiredate,
Months_between(sysdate,hiredate) Tenure,
Add_months(hiredate,6) Review ,
Next_day(hiredate,'Friday') , Last_day(hiredate)
from emp
Where Months_between(sysdate,hiredate )<200 ;
For all employees employed for fewer than 200 month .display the employee number ,hiredate , number of months employed , six-month review date , first Friday after hire date ,and last day of the month when hired .
من أجل جميع الموظفين الذين تم استخدامهم لأقل من 200 شهر قم بإظهار رقم الموظف وتاريخ الاستخدام (التوظيف) وعدد أشهر الاستخدام و تاريخ التوظيف مضاف إليه 6 أشهر وتاريخ أول يوم جمعة بعد الاستخدام وتاريخ آخر يوم من شهر الاستخدام
أمثلة : ROUND('25-JUL-95' , 'MONTH' ) →→→→ 01-AUG-95
ROUND('25-JUL-95' , 'YEAR' ) →→→→→ 01-JAN-96
TRUNC('25-JUL-95' , 'MONTH' ) →→→→ 01-JUL-95
TRUNC ('25-JUL-95' , 'YEAR' ) →→→→→ 01-JAN-95
مثال : SQL> select empno , hiredate,
Round (hiredate , 'MONTH') ,
Trunc ( hiredate , 'MONTH')
from emp
Where hiredate LIKE '%82' ;
Compare the hire dates for all employees who started in 1982 display the employee number ,hire date , and month started using the ROUND and TRUNC functions.
توابع التحويل CONVERSION FUNCTIONS
التحويل الضمني لأنواع البيانات Implicit Datatype Conversion
For assignments the Oracle can automatically convert the following :
من أجل المهام يستطيع أوراكل تحويل ما يلي بشكل أوتوماتيكي :
FROM TO
محرفيVARCHAR2 or CHAR رقمNUMBER
محرفيVARCHAR2 or CHAR تاريخDATE
رقمNUMBER VARCHAR2 محرفي
تاريخDATE VARCHAR2 محرفي
الفرق بين CHAR و VARCHAR2 أن العرض الأعظمي لعمود من النمط CHAR 2000 محرف أما العرض الأعظمي لعمود من النمط VARCHAR2 فيصل إلى 4000 محرف .
For expression evaluation the Oracle Server can automatically convert the following :
من أجل عبارة التقدير يستطيع أوراكل تحويل ما يلي بشكل أوتوماتيكي :
FROM TO
محرفيVARCHAR2 or CHAR رقمNUMBER
محرفيVARCHAR2 or CHAR تاريخDATE
NOTE: CHAR to NUMBER conversions succeed only if the character string represents a valid number .
CHAR to DATE conversions succeed only if the character string has the default format DD-MON-YY
يتم التحويل التلقائي من المحارف إلى الأرقام بنجاح في حالة كون المحارف بصورة أرقام كما يتم التحويل التلقائي الضمني من المحارف إلى التاريخ عندما يكون لسلسلة المحارف الشكل الافتراضي للتاريخ DD-MON-YY .
التحويل الصريح لأنواع البيانات Explicit Datatype Conversion
SQL provides three functions to convert a value from one datatype to another :
تحوي لغة الـSQL. ثلاثة دوال تحويل لأنواع البيانات وهي :
FUNCTION الدالة Purpose الهدف
TO_CHAR(number or date ,'fmt') Converts number or date value to a VARCHAR2 character string
with format model 'fmt'
تحويل الأرقام أو التواريخ إلى سلسلة محرفية من الشكل 'fmt'
TO_NUMBER(char , 'fmt' ) Converts a character string containing digits to a number with the optional format model 'fmt'
تحويل السلسلة المحرفية التي تحتوي أرقام إلى رقم من الشكل 'fmt'
TO_DATE(char , 'fmt' ) Converts a character string representing a date to a date value according to the fmt specified ( If fmt is omitted format is DD-MON-YY)
تحويل السلسلة الحرفية التي تمثل التاريخ إلى قيمة تاريخ حسب الشكل fmt ( بحيث يكون شكل النمط fmt بالشكل الافتراضي لأوراكل وهو DD-MON-YY )
TO_CHAR Function with dates TO_CHAR (date , 'fmt' ) to display date in a specific format .
The format model fmt must be enclosed in single quotation marks and is case sensitive and separated
From the date value by a comma
يجب أن تكون صيغة التاريخ المطلوبة fmt محصورة بين علامتي اقتباس مفردتين ' fmt ' و مفصولة عن التاريخ بفاصلة .
مثال : SQL> select empno , TO_CHAR( hiredate , 'MM/YY' ) Month_Hired
from emp
Where ename = ' BLAKE ' ;
عناصر نموذج شكل التاريخ Elements of Date Format Model
Element De************ion
YYYY Full year in numbers كامل التاريخ بالأرقام
YEAR Year spelled out التاريخ مكتوب بالكلمات
MM Two digit value for month قيمة التاريخ من رقمين
MONTH Full name of the monthاسم الشهر كامل
DY Three letter abbreviation of the day of the weekثلاثة أحرف اختصار من اسم اليوم
DAY Full name of the day اسم اليوم كاملاً
SCC or CC Century prefixes BC date with القرن الذي يقع التاريخ ضمنه
Y,YYY Year with a comma in the position رقم العام مع فاصلة بنفس الموضع
YYY or YY or Y Last three ,two , or one digits of year آخر 3 أرقام أو رقمين أو رقم من العام
SYYYY رقم العام مع وجود الإشارة مثل 1000 B.C هو -1000
IYYY or IYY or IY or I Four ,three ,two or one digit year based on the ISO standard .
أربع أو ثلاث خانات أو خانتين أو خانة واحدة للعام من المقياس ISO
BC or AD BC or AD indicator - يظهر المؤشرBC أو AD بحسب التاريخ و لهما نفس العمل
B.C. or A.D. BC or AD indicator with Periods – نفس السابق مع علامات توقف (نقاط)
Q Quarter of year – رقم الربع من العام الذي يقع
MON اسم الشهر ثلاثة أحرف اختصار Three letter abbreviation -
RM رقم الشهر بالترميز الروماني Roman mineral month -
WW or W رقم الأسبوع في السنة أو الشهر – Week of year or month
DDD or DD or D رقم اليوم في السنة أو الشهر أو الأسبوع Day of year ,month , or day -
J عدد الأيام منذ 31 كانون الأول عام 4713 قبل الميلاد
Use the formats listed in the following tables to display time information and literals and to change numerals to spelled numbers
استخدم قائمة الأشكال الموجودة في الجدول التالي لإظهار معلومات الوقت والأحرف و تحويل الأعداد إلى أرقام مقروءة
Element De************ion
AM or PM مؤشر منتصف النهار – Meridian indicator
A.M. or P.M. مؤشر منتصف النهار مع علامات توقف - Meridian indicator with periods
HH or HH12 or HH24 الساعة في اليوم و ترميز اليوم 12 ساعة (1-12) أو 24 ساعة (0-24)
MI الدقيقة في الساعة (0-59 )
SS الثانية في الدقيقة ( 0-59)
SSSSS عدد الثواني منذ منتصف الليل - Seconds past midnight
TH لاحقة لعدد ما مثل (Ordinal number - ( 4TH – 24TH
SP لاحقة لعدد تجبره على كتابة العدد بشكل نص – Spelled out number ( DDSP for FOUR)
SPTH or THSP لاحقة تركيبية تجمع بين الاثنين Spelled out number (DDSPTH for FOURTH )
استخدام تابع التحويل To_Char مع التواريخ Using the TO_CHAR Function with dates
مثال : SQL> select ename ,
TO_CHAR( hiredate , 'MM/YY' ) Month_Hired
from emp ;
Example : Modify the slide example to display the dates in a format that appears as Seventh of February 1981 08:00:00 AM .
حول التاريخ ليظهر بالشكل Seven of February 1981 08:00:00 AM
SQL> select ename ,
TO_CHAR(hiredate , ‘fmDdspth “of” Month yyyy fmHH:MI:SS AM’ )
From emp ;
استخدام تابع التحويل To_Char مع الأعداد TO_CHAR Function with Numbers
TO_CHAR(number , ‘fmt’ )
Use these formats with the TO_CHAR function to display a number value as a character:
استخدم الأشكال التالية مع التابع TO_CHAR لتظهر القيم الرقمية كأحرف :
9 Represents a number تمثل الرقم
0 Forces a zero to displayed تجبر الصفر على الظهور
$ Places a floating dollar sign يظهر علامة الدولار
L Use the floating local currency symbol رمز الفاصلة العائمة
. Prints a decimal point يطبع الفاصلة العشرية
, Prints a thousand indicator يطبع مؤشر الآلاف
مثال : SQL> select TO_CHAR( sal , ‘$99,999 ‘ ) SALARY
FROM emp
Where ename = ‘SCOTT’ ;
When working with number values such as a character string you should convert those numbers to the character datatype using the TO_CHAR function which translates a value of NUMBER datatype to VARCHAR2 datatype . This technique is specially useful with concatenation .
عند العمل مع القيم الرقمية على أنها أحرف عليك تحويل تلك الأرقام إلى النمط الحرفي باستخدام التابع TO_CHAR والذي يحول نمط البيانات العددية إلى النمط الحرفي VARCHAR2 وهذه التقنية مفيدة بشكل خاص في السلاسل .
TO_NUMBER and TO_DATE Functions
Convert a character string to a number format using the TO_NUMBER function .
تحويل السلسلة الحرفية إلى هيئة رقمية باستخدام التابع TO_NUMBER TO_NUMBER(char , ‘fmt’)
Convert a character string to a date format using the TO_DATE function .
TO_DATE(char , ‘fmt’ ) تحويل السلسلة الحرفية إلى هيئة تاريخ باستخدام التابع
مثال : SQL> select ename , hiredate
FROM emp
Where hiredate = TO_DATE( ‘February 22 ,1981 ‘ ,’Month dd , YYYY’) ;
تابع تعويض القيمة الخالية NVL function
يحول القيمة الخالية إلى قيمة حقيقية Convert null to an actual value
أنواع المعطيات التي يستخدم معها التواريخ والأحرف والأرقام Datatypes that can be used are date, character, and number.
EX: NVL(comm,0) , NVL(hiredate,’01-JAN-97’) , NVL(job ,’No Job Yet’)
مثال : SQL> select ename , sal , comm , (sal*12)+NVL(comm.,0)
FROM emp ;
Note: If any column value in an expression is null the result is null .
إذا كانت القيمة في أي عمود خالية وأجرينا عليها عملية حسابية تنتج لدينا القيمة الخالية .
تابع البحث والمطابقة وإجراء العمليات بشكل منفصل DECODE function
DECODE(Value , if 1 ,then 1, if 2 , then 2 , if 3 , then 3 ,….,else ) الشكل العام
The DECODE function decodes an expression in a way similar the IF-THEN-ELSE logic used in various ********s . The DECODE function decodes expression after comparing it to each search value . If the expression is the same as search result is returned .If the default value is omitted a null value is returned where a search value dose not mach any of the result values .
يقوم التابع DECODE بحل العبارة الجبرية بطريقة مشابهة لعبارة IF-THEN-ELSE المنطقية والتي تستعمل بشكل في لغات متنوعة . يحل التابع العبارة الجبرية بعد مقارنتها مع كل قيمة من قيم البحث إذا كان التعبير مطابق لقيمة البحث يعيد قيمة . أما إذا كانت القيمة الأصلية محذوفة أو فارغة تعاد قيمة فارغة وذلك عندما لا تتطابق قيمة البحث مع أي قيمة من قيم البحث .
مثال : SQL> select job , sal
DECODE( job, 'ANALYST’ , sal*1.1 ,
‘CLERK’ , sal*1.15 ,
‘MANAGER’ , sal*1.20 ,
sal )
REVISED_SALARY
FROM emp ;
Display the applicable tax rate for each employee in department 30 .
استعراض معدل الضريبة الملائم لكل موظف في القسم 30 .
مثال : SQL> select ename , sal
DECODE(TRUC(sal/1000,0) ,
0 , 0.00 ,
1 , 0.09 ,
2 , 0.20 ,
3 , 0.30 ,
4 , 0.40 ,
5 , 0.42 ,
6 , 0.44 ,
0.45 ) TAX_RATE
FROM emp
WHERE deptno = 30 ;
NESTING FUNCTIONS SAMPLES أمثلة عن التوابع المتداخلة
مثال1 : SQL> select ename ,
NVL(TO_CHAR(mgr) , ‘No Manager’)
From emp
Where mgr Is NULL ;
مثال2 : SQL> select TO_CHAR(NEXT_DAY(ADD_MONTHS
(hiredate , 6 ) , ‘FRIDAY’ ) ,
‘fmDAY , Month ddth , YYYY)
“ Next 6 Month Review “
From emp
Order By hiredate ;
Displaying data from multiple tables عرض البيانات من جداول متعددة
-Write SELECT statements to access data from more than one tables using equality and none quality joins
View data that generally does not meet a join condition by using outer joins .
Join a table to itself
كتابة عبارة الاختيار SELECT للوصول إلى البيانات من أكثر من جدول باستخدام الربط المتساوي وغير المتساوي .
عرض البيانات التي لا تلتقي عادة بشرط ربط باستخدام الروابط الخارجية .
ربط الجدول بنفسه
Use a join to query data from more than one table استخدام الربط للاستفسار عن البيانات من أكثر من جدول
SELECT table1.column , table2.column
FROM table1 , table2
WHERE table1.coulumn1 = table2.coulumn2 ;
Write the join condition in the WHERE clause قم بكتابة شرط الربط ضمن عبارة WHERE
Prefix the column name with the table name when the same column name appears in more than one table .
يجب أن يسبق اسم الحقل اسم الجدول المحتوى ضمنه إذا كان الحقل يظهر أو موجود في أكثر من جدول .
أنواع الربط Types of Joins
هناك نوعان رئيسيان من حالات الربط : There are two main types of join conditions:
- الربط المتساوي . - Equijoins .
- الربط الغير متساوي . - Non-equijoins .
تتضمن طرق الربط الإضافية ما يلي : Additional join methods include the following :
+ الربط الخارجي . + Outer joins .
+ الربط الذاتي . + Self joins .
+ مجموعة المشغلات . + Set operators .
الربط المتساوي (الداخلي )Equijoins or Inner Joins :
يجب أن يكون هناك حقل مشترك على الأقل بين الجدولين المرتبطين بحيث تكون القيم في الحقول المتقابلة متساوية من كلا الجدولين . هذا النوع من الربط يشكل تتمة للمفتاح الأساسي والثانوي .
استرجاع السجلات مع الربط المتساوي Retrieving records with Equijoins
مثال : SQL> select emp , empno , emp.ename , emp.deptno ,
Dept.deptno , dept.loc ,
From emp , dept
Where emp.deptno=dept.deptno ;
The Where clause specifies how the tables are to be joined .
Additional search conditions Using the AND operator حالات بحث إضافية باستخدام المعامل AND
In addition to the join , you may have criteria for your WHERE clause .
بالإضافة إلى الربط قد تحتاج إلى بعض المعايير من أجل عبارة WHERE .
مثال : SQL> select empno , ename , emp.deptno , loc
FROM emp , dept
WHERE emp.deptno = dept.deptno
AND INITCAP(ename) = ‘king’ ;
استخدام الأسماء المستعارة للجداول Using Table Aliases
تبسيط الاستعلامات باستخدام الأسماء المستعارة للجداول Simplify queries by using table aliases .
You can use table aliases instead of table names . Just as a column aliases gives a column another name .a table aliases give a table another name . Table aliases help to keep SQL code smaller , therefore using less memory.
يمكنك استخدام اسم مستعار للجدول بدلاً من اسم الجدول تماماً مثل الأسماء المستعارة للحقول أو الأعمدة . تساعد الأسماء المستعارة للجداول في جعل كود الـ SQL أصغر والذي يستعمل ذاكرة أقل .
مثال : SQL> select emp.empno , emp.ename , emp.deptno ,
Dept.deptno , dept.loc
FROM emp , dept
WHERE emp.deptno = dept.deptno ;
بغد تطبيق الأسماء المستعارة على الجداول يصبح المثال السابق بالشكل التالي :
مثال : SQL> select e.empno , e.ename , e.deptno ,
d.deptno , d.loc
FROM emp e , dept d
WHERE e.deptno = d.deptno ;
الربط لأكثر من جدولين Join more than two tables
مثال : SQL> select c.name , i.itemid , i.itemotot , o.total ,
FROM customer c , ord o , item i
WHERE c.custid = o.custid
AND o.ordid = i.ordid
AND c.name = ‘TKP SPORT SHOP’ ;
حيث الجداول بالشكل التالي :
الربط الغير متساوي Non-Equijoins :
لا يشترط وجود حقل أو أكثر متساوي من الجدولين ولكن يوجد علاقة ما بين حقل أو أكثر من الجدول الأول و حقل أو أكثر من الجدول الثاني و هذه العلاقة ليست مساواة .
The relationship between tables is obtained using an operator other than equal (= ) .
استرجاع السجلات مع الربط الغير متساوي Retrieving records with Non-Equijoins
في المثال التالي لدينا جدولين الأول EMP والثاني SALGRADE وتوجد علاقة بين الحقل SAL من الجدول EMP والحقلين LOSAL وHISAL وهي أن أي قيمة في الحقل SAL تقع بين القيمتين LOSAL و HISAL .
مثال : SQL> select e.ename , e.sal , s.grade ,
From emp e , salgrade s
Where e.sal
Between s.losat and s.hisat ;
الربط الخارجي Outer joins :
You use an Outer join to also see rows that does not usually meet the join condition .
Outer join operator is the plus sign ( + ) .
يستخدم الربط الخارجي لإظهار الصفوف التي لا تظهر لأنها لا تحقق شرط الربط وكمثال على ذلك المثال القادم إذا استخدمنا الربط المتساوي وأردنا معرفة أسماء الموظفين وأقسامهم من الجدولين DEPT وEMP بحيث يتساوى رقم القسم DEPTNO من الجدول الأول مع رقم القسم من الثاني نجد أن قسم العمليات OPERATIONS ورقمه لا يظهران لدينا في نتيجة الاستعلام وذلك لعدم وجود أشخاص يعملون في ذلك القسم وبالتالي رقم القسم في جدول الموظفينEMP غير موجود وفي حالة أردنا ظهور رقم القسم نستخدم الربط الخارجي والذي يستخدم المعامل ( + ) كما يلي :
مثال : باستخدام الربط المتساوي SQL> select e.ename , e.deptno , d.dname ,
From emp e , dept d
WHERE e.deptno = d.deptno ;
مثال : و باستخدام الربط الخارجي يصبح كما يلي : SQL> select e.ename , d.deptno , d.dname
From emp e , dept d
WHERE e.deptno(+) = d.deptno
ORDER BY e.deptno ;
الربط الذاتي Self joins (Join the table to itself) :
تحتاج في بعض الأحيان إلى ربط الجدول بنفسه فمثلاً لإيجاد اسم مدير كل موظف من الجدول عليك ربط الجدول EMP بنفسه بالشكل التالي حيث MANAGER , WORKER أسماء مستعارة للجدول نفسه EMP :
SQL> select worker.ename||’ works for ‘||manager.ename
From emp worker , emp manager
Where worker.mgr = manager.empno ;
Aggregating Data Using Group Functions: تحصيل البيانات باستخدام توابع قيمة المجموعة
Group functions: Unlike single-row functions operate on sets of rows to give one result per group . These sets may be the whole table or the table split into groups.
توابع قيمة المجموعة : لا تشبه التوابع وحيدة الصف وهي تؤثر على مجموعات من الصفوف لتعطي نتيجة واحدة لكل مجموعة ولكن هذه المجموعات ممكن تكون الجدول كاملاً أو الجدول مقسم إلى مجموعات .
أنماط من توابع قيمة المجموعة Types of Group Functions
Function De************ion
AVG( [DISTICT|ALL] n ) Average value of n ignoring null values
قيمة المتوسط لـn قيمة ويقوم بتجاهل القيم الفارغة
COUNT( * [DISTICT|ALL] expr ) Number of rows where expr evaluates to something other than null ( Count all selected rows using * , including duplicates and rows with nulls )
يعيد هذا التابع عدد الصفوف في حال كانت القيم مغايرة للقيمة الفارغة null (استخدم * مع التابع ليعيد عدد كل الصفوف إضافة إلى الصفوف المكررة والقيم الفارغة NULL )
MAX( [DISTICT|ALL] expr ) Maximum value of expr , ignoring null values .
أكبر قيمة من قيم expr ويتجاهل القيم الفارغة
MIN( [DISTICT|ALL] expr ) Minimum value of expr , ignoring null values
أصغر قيمة من قيم expr ويتجاهل القيم الفارغة
STDDEV( [DISTICT|ALL] x ) Standard deviation of n ignoring null values
الانحراف المعياري لـn قيمة يتجاهل القيم الفارغة
SUM( [DISTICT|ALL] n ) Sum values of n , ignoring null values
مجموع n قيمة ويتجاهل القيم الفارغة
VARIANCE( [DISTICT|ALL] x ) Variance of n , ignoring null values
التباين لـ n قيمة ويتجاهل القيم الفارغة
Distinct makes the function consider only nonduplicate values ; ALL makes it consider every value including duplicates . The default is ALL and therefore does not need to be specified .
The datatypes for the arguments may be CHAR, VARCHAR2, NUMBER, DATE where exp is listed.
All group functions except COUNT( * ) ignore null values .To substitute a value for null values . use the NVL function .
The Oracle Server implicitly sorts the result set in ascending order when using a GROUP BY clause. To override this default ordering. DESC can be used in the ORDER BY clause.
الأمر Distinct يجعل التابع يأخذ بعين الاعتبار القيم الغير مكررة فقط . أما ALL فيجعل التابع يأخذ بعين الاعتبار كل قيمة بما فيها القيم المكررة . ALL عبارة عن أمر افتراضي ولذلك لست بحاجة لإدخاله.
أنماط البيانات يمكن أن تكون أي من التالي CHAR , VARCHAR2 , NUMBER , DATE وذلك حسب التعبيرexpr .
جميع توابع قيمة المجموعة ما عدا COUNT( * ) تتجاهل القيم الفارغة null ولكي تقوم باستبدال القيم الفارغة عليك استخدام تابع الاستبدال NVL .
يقوم مزود أوراكل بشكل ضمني بترتيب مجموعة النتائج بشكل تصاعدي عندما تقوم باستخدام عبارة الترتيب ORDER BY وحتى تقوم بتغيير نمط الترتيب الافتراضي عليك باستخدام الأمر DESC مع عبارة الترتيب ORDER BY .
أمثلة : SAMPLES :
مثال : SQL> select AVG(sal), MAX(SAL), MIN(sal), MAX(sal)
From emp
WHERE job LIKE 'SALES%' ;
مثال : SQL> select MIN(ename), MAX(ename)
From emp ;
باستخدام التابعين MAX و MIN مع البيانات الحرفية تكون النتيجة حسب الترتيب الأبجدي كما في المثال السابق يكون الناتج كما يلي :
مثال : SQL> select MIN(hiredate), MAX(hiredate)
From emp ;
مثال : SQL> select COUNT( * )
From emp
WHERE deptno = 30 ;
مثال : SQL> select COUNT( comm )
From emp
WHERE deptno = 30 ;
مثال : SQL> select COUNT( deptno )
From emp ;
مثال : SQL> select COUNT(DISTINCT( deptno) )
From emp ;
Group functions ignore null values in the column. تتجاهل توابع قيمة المجموعة القيمة الفارغة لكن لا تتجاهل الصفر
مثال :قيمة المتوسط الحسابي للعمود COMM SQL> select AVG ( comm. )
From emp ;
The NVL function forces group functions to include null values.
يجبر التابع NVL توابع التصنيف بأن تتضمن القيمة الفارغة كما في المثال التالي .
مثال : باستخدام الربط المتساوي SQL> select AVG ( NVL (comm. ))
From emp ;
Creating Groups of DATA: GROUP BY Clause
إنشاء مجموعات بيانات باستخدام عبارة التجميع GROUP BY :
You can use the GROUP BY clause to divide the rows in a table into groups. You can then use the group functions to return summary information for each group.
يمكنك استخدام عبارة GROUP BY لتقسيم الصفوف ضمن الجدول إلى مجموعات . يمكنك عندها استخدام توابع المجموعة لتحصل على خلاصة معلومات عن كل مجموعة .
You must include the columns in the GROUP BY clause.
You cannot use the column alias in the GROUP BY clause.
يجب تضمين الأعمدة في عبارة GROUP BY كما لا يمكنك استخدام الأسماء المستعارة معها .
All columns in the SELECT list that are not in group functions must be in the GROUP BY clause.
جميع الأعمدة المذكورة في قائمة عبارة الاختيار SELECT والتي لم تطبق عليها التوابع السابقة يجب أن تذكر ضمن عبارة GROUP BY كما في المثال التالي :
مثال : SQL> select deptno , AVG ( sal )
From emp
GROUP BY deptno ;
The GROUP BY column does not have to be in the SELECT list .
ليس من الضروري أن يكون العمود المذكور في عبارة GROUP BY موجوداً ضمن قائمة الأعمدة المذكورة في عبارة SELECT .
مثال : SQL> select AVG ( sal )
From emp
GROUP BY deptno ;
You can use the group function in the ORDER BY clause.
يمكنك استخدام توابع التصفية ضمن عبارة GROUP BY .
مثال : SQL> select deptno, AVG ( sal )
From emp
GROUP BY deptno
ORDER BY AVG(SAL) ;
Using the GROUP BY Clause on Multiple Columns
استخدام عبارة GROUP BY مع أعمدة متعددة :
You can return summary results for groups and subgroups by listing more than one GROUP BY column You can determine the default sort order of the results by the order of columns in the GROUP BY clause
يمكنك الحصول على ملخص عن المجموعات والمجموعات الثانوية بإدخال أكثر من عمود ضمن عبارة GROUP BY .
كما يمكنك أن تقوم بتغيير طريقة الترتيب الافتراضية للنتائج بترتيب الأعمدة ضمن عبارة GROUP BY .
مثال : SQL> select deptno, job, SUM ( sal )
From emp
GROUP BY deptno, job ;
Any column or expression in the SELECT list that is not an aggregate function must be in the GROUP BY clause.
أي عمود أو تعبير ضمن قائمة عبارة SELECT وليس تابع تجميع يجب أن يكون موجوداً ضمن عبارة GROUP BY وإلا ينتج خطأ ويكون عليك تصحيحه ليصبح مثل المثال التالي :
مثال : SQL> select deptno, COUNT ( ename )
From emp
GROUP BY deptno ;
You cannot use the WHERE clause to restrict groups.
You use the HAVING clause to restrict groups.
ليس بإمكانك استخدام عبارة WHERE من أجل تقييد المجموعات ولكنك تستخدم بدلاً عنها عبارة HAVING .
تعمل تعليمة HAVING عملاً مشابهاً لعمل تعليمة WHERE مع الفرق أنها مرتبطة بنتيجة تنفيذ توابع مجموعة أي أنها تأثي مع توابع المجموعة وعبارة GROUP BY كما يلي :
مثال : SQL> select deptno, AVG ( sal )
From emp
GROUP BY deptno
HAVING AVG (sal) > 2000 ;
Excluding Group Results: HAVING Clause
استخدام عبارة HAVING لاستثناء مجموعات من النتائج:
You use the HAVING clause to specify which groups are to be displayed. Therefore you further restrict the groups on the basis of aggregate information.
تستخدم عبارة HAVING لتخصيص المجموعات التي نريد إظهارها ولذلك من المستحسن حصر المجموعات ضمن معلومات التجميع .
مثال : SQL> select deptno, MAX ( sal )
From emp
GROUP BY deptno
HAVING MAX (sal) > 2000 ;
You can use the GROUP BY clause without using a group function in the SELECT list.
If you restrict rows based on the result of a group function. You must have a GROUP BY clause as well as the HAVING clause.
بإمكانك استخدام عبارة GROUP BY بدون استخدام تابع تجميع ضمن عبارة SELECT .
إذا كنت تريد تقييد الصفوف ضمن نتيجة تابع التجميع عليك أن تستخدم GROUP BY بالإضافة إلى عبارة HAVING .
مثال : SQL> select deptno, AVG ( sal )
From emp
GROUP BY deptno
HAVING MAX (sal) > 2900 ;
مثال : SQL> select job, SUM ( sal ) PAYROLL
From emp
WHERE job not like 'sales%'
GROUP BY job
HAVING SUM (sal) > 5000
ORDER BY SUM(sal) ;
Nesting Group Functions تداخل توابع قيمة المجموعة
مثال : SQL> select MAX(AVG ( sal ) )
From emp
GROUP BY deptno ;
Subqueries الاستفسارات الجزئية
Select select_list الصيغة العامة
From table
Where expr operator
(select select_list
From table ) ;
The subquery (inner query ) executes once before the main query .
The result of the subquery is used by the main query (outer query).
الاستفسار الجزئي (الداخلي ) ينفذ أولاً قبل الاستفسار الرئيسي.
تستخدم نتيجة الاستفسار الجزئي أو الداخلي من قبل الاستفسار الرئيسي أو الخارجي.
A subquery is a SELECT statement that is embedded in a clause of another SELECT statement. You can build powerful statements out of simple ones by using subqueries. They can be very useful when you need to select rows from a table with a condition that depends on the data in the table itself.
الاستفسار الجزئي هو عبارة SELECT مغلفة بعبارة SELECT أخرى. يمكنك بناء عبارات فعالة خارج عبارات بسيطة باستخدام الاستفسارات الجزئية.تكون مفيدة جداً عندما تريد اختيار صفوف من جدول مع شرط يعتمد على بيانات التابع نفسه.
مثال : SQL> Select ename
From emp
WHERE sal >
( SELECT sal
From emp
WHERE empno = 7566 ) ;
Guidelines for Using Subqueries إرشادات عامة لاستخدام الاستفسارات الجزئية
• Enclose subqueries in parentheses.
• Place subqueries on the right slide of the comparison operator.
• Do not add an ORDER BY clause to a subquery.
• Use single-row operators with single-row subquery.
• Use multiple-row operators with multiple-row subqueries.
• قم بوضع الاستعلامات الجزئية ضمن أقواس .
• قم بوضع الاستعلامات الجزئية في الجهة اليمنى من معاملات المقارنة.
• لا تقم بإضافة عبارة ORDER BY إلى الاستفسار الجزئي.
• استخدم المعاملات وحيدة الصف مع الاستعلام الجزئي وحيد الصف.
• استخدم المعاملات متعددة الصفوف مع الاستعلامات الجزئية متعددة الصفوف.
Types of subqueries أنماط الاستفسارات الجزئية
Single-row subquery: query that return only one row from the inner SELECT statement.
Multiple-row subquery: query that return more than one row from the inner SELECT statement.
Multiple -column subquery: query that return more than one column from the inner SELECT statement.
الاستفسار الجزئي الوحيد الصف : هو استفسار يعيد صف واحد فقط من عبارة SELECT الداخلية .
الاستفسار الجزئي متعدد الصفوف : هو استفسار يعيد أكثر من صف من عبارة SELECT الداخلية .
الاستفسار الجزئي متعدد الأعمدة : هو استفسار أكثر من صف من عبارة SELECT الداخلية .
Single-row subqueries: الاستفسار الجزئي وحيد الصف
Use single-row comparison operators قم باستخدام معاملات المقارنة وحيدة الصف
Meaning المعنى Operator
Equal toيساوي =
Greater than أكبر من >
Greater than or equal to أكبر أو يساوي >=
Less than أقل من <
Less than or equal to أقل أو يساوي <=
Not equal to لا يساوي < >
مثال : قم بعرض الموظفين الذين يطابق عملهم عمل الموظف رقم 7369
SQL> Select ename, job
From emp
WHERE job =
(select job
From emp
WHERE empno = 7369 ) ;
مثال : : قم بعرض الموظفين الذين يطابق عملهم عمل الموظف رقم 7369 و رواتبهم تساوي راتب الموظف رقم 7876
SQL> Select ename, job
From emp
WHERE job =
(select job
From emp
WHERE empno = 7369 )
AND SAL >
(select sal
From emp
WHERE empno = 7876 ) ;
استخدام توابع التجميع ضمن الاستفسار الجزئي Using Group Functions in a subquery
مثال :
SQL> Select ename, job, sal
From emp
WHERE sal =
(select MIN(sal)
FROM emp );
استخدام عبارة HAVING مع الاستفسار الجزئي HAVING clause with subqueries
The Oracle Server executes subqueries first.
The Oracle Server returns results into the HAVING clause of the main query.
يقوم مزود أوراكل بإنجاز الاستفسارات الجزئية أو الداخلية أولاً.
يعيد مزود أوراكل النتائج إلى عبارة HAVING التابعة للاستفسار الرئيسي (الخارجي).
مثال :
SQL> Select deptno, MIN( sal)
From emp
GROUP BY deptno
HAVING MIN(sal) >
(select MIN(sal)
FROM emp
WHERE deptno = 20 );
مثال : أوجد العمل الموافق لأقل معدل راتب : Find the job with the lowest average salary
SQL> Select job, AVG( sal)
From emp
GROUP BY job
HAVING AVG(sal) =
(select MIN(AVG(sal))
FROM emp
GROUP BY job );
مثال خاطئ : الخطأ في المثال التالي أننا استخدمنا معامل وحيد الصف مع استفسار جزئي متعدد الصفوف هذا يعني أن الاستفسار الداخلي سوف يعيد أكثر من صف : SQL> Select empno, ename
From emp
WHERE sal =(select MIN(sal) FROM emp
GROUP BY deptno );
الاستفسارات الجزئية متعددة الصفوف (التي تعيد أكثر من صف) Multiple-Row Subqueries
Meaning المعنى Operator
Equal to any member in the list
مساوٍ لأي قيمة ضمن القائنة IN
Compare value to each value returned by the subquery
يقارن القيمة مع أي قيمة من القيم المعادة من قبل الاستفسار الجزئي ANY
Compare value to every value returned by the subquery
يقارن القيمة مع كل قيمة معادة من قبل الاستفسار الجزئي ALL
Use Multiple-row comparison operators قم باستخدام معاملات المقارنة متعددة الصفوف
Subqueries that return more than one row are called Multiple-row subqueries. You use a multiple-row operator instead of single row operator. With a multiple-row subquery. The multiple-row operator expects one or more value.
تسمى الاستفسارات الجزئية التي تعيد أكثر من صف بالاستفسارات متعددة الصفوف. تستخدم المعاملات متعددة الصفوف بالإضافة إلى المعاملات وحيدة الصف مع الاستفسارات متعددة الصوف. المعاملات متعددة الصفوف تتوقع قيمة أو أكثر.
يقوم المعامل IN بالمقارنة مع كل قيمة من القيم المعادة من الاستفسار الجزئي ويعيد كل نتيجة على حدة .
استخدام المعامل IN مع الاستفسارات الجزئية متعددة الصفوف Using IN operator in Multiple-Row Subqueries
يقوم المعامل IN بالمقارنة مع كل قيمة من القيم المعادة من الاستفسار الجزئي ويعيد كل نتيجة على حدة
مثال : أوجد العامل الذي يحصل على أقل راتب في كل قسم:
SQL> Select ename, sal, deptno
From emp
WHERE sal IN
(select MIN (sal)
FROM emp
GROUP BY deptno );
استخدام المعامل ANY مع الاستفسارات الجزئية متعددة الصفوف Using ANY operator in Multiple-Row Subqueries
يقوم المعامل ANY بالمقارنة مع كل قيمة من القيم المعادة من الاستفسار الجزئي ويعيد كل نتيجة على حدة
مثال : SQL> Select empno, ename, job
From emp
WHERE sal < ANY
(select sal
FROM emp
WHERE job = 'CLERK' )
AND job <> 'clerk' ;
استخدام المعامل ALL مع الاستفسارات الجزئية متعددة الصفوف Using ALL operator in Multiple-Row Subqueries
يقوم المعامل ALL بالمقارنة مع كل القيم المعادة من الاستفسار الجزئي .
مثال : قم بعرض رقم الموظف واسمه و عمله للموظفين الذين تكون رواتبهم أكبر من معدل الرواتب لكل قسم
SQL> Select empno, ename, job
From emp
WHERE sal > ALL
(select AVG( sal)
FROM emp
GROUP BY deptno );
الفرق بين المعاملات : مع المعامل IN يقوم الاستفسار الرئيسي بالمقارنة مع كل قيمة من القيم المعادة ويعيد النتائج المطابقة لكل قيمة من قيم القائمة التي يعيدها الاستفسار الجزئي أما مع المعامل ANY فيقوم الاستفسار الرئيسي بالمقارنة مع كل قيمة من القيم المعادة على حدة ويعيد النتائج بشكل منفصل لكل قيمة من القيم التي يعيدها الاستفسار الجزئي أما مع المعامل ALL فيقوم الاستفسار الرئيسي بالمقارنة مع كل القيم المعادة مجتمعة ويعيد النتائج التي تحقق الشرط على جميع القيم التي يعيدها الاستفسار الجزئي .
الاستفسارات الجزئية متعددة الأعمدة Multiple-Column Subqueries
So far you have written single-row subqueries and multiple-row subqueries where only one column was compared in the WHERE clause or HAVING clause of the SELECT statement. If you want to compare two or more columns. You must write a compare WHERE clause using logical operators. Multiple-column subqueries enable you to combine duplicate WHERE conditions into a single WHERE clause.
لقد قمت سابقاً بكتابة استفسارات جزئية وحيدة الصف واستفسارات جزئية متعددة الصفوف والتي يكون فيها عمود واحد يقارن ضمن عبارة WHERE أو ضمن عبارةHAVING التابعة لعبارة SELECT . إذا كنت تريد مقارنة عمودين أو أكثر عليك كتابة عبارة المقارنة الخاصة بـ WHERE باستخدام المعاملات المنطقية. تمكنك الاستفسارات الجزئية متعددة الأعمدة من ضم شروط متعددة ضمن عبارة WHERE واحدة.
Example: Display the order number, product number and quantity of any item in which the product number and quantity match both the product number and quantity of an item in order 605.
يقوم المثال التالي بعرض رقم الترتيب ورقم المنتج والكمية لكل عنصر يكون فيه رقم المنتج والكمية مماثلين (كلاهما) لرقم المنتج والكمية الموافقة للعنصر ذو الترتيب 605 .
مثال : SQL> Select ordid, prodid, qty
From item
WHERE (prodid, qty ) IN
(select prodid, qty
FROM item
WHERE ordid = 605 )
AND ordid <> 605 ;
هذا يعني أنه توجد ثلاث عناصر بترتيب آخر تحتوي على نفس رقم المنتج والكمية الموجودة ضمن الترتيب رقم 605.
مقارنات العمود Column Comparisons
يوجد نوعان من المقارنة في حالتنا هذه المقارنة الذكية للزوج (PAIRWISE ) كما في المثال السابق و التي تكون كما في الشكل :
والمقارنة الثانية تسمى المقارنة الغير ذكية للزوج ( NONPAIRWISE )كما في الشكل السابق والمثال التالي :
Example: Display the order number, product number and quantity of any item in which the product number and quantity match any product number and any quantity of an item in order 605.
يقوم المثال التالي بعرض رقم الترتيب ورقم المنتج والكمية لكل عنصر يكون فيه رقم المنتج والكمية مماثلين لأي رقم منتج أي كمية موافقة للعنصر ذو الترتيب 605 .
مثال : SQL> Select ordid, prodid, qty
From item
WHERE Prodid IN (select prodid
FROM item
WHERE ordid = 605 )
AND qty IN (select qty
FROM item
WHERE ordid = 605 )
AND ordid <> 605 ;
هذا يعني أنه يوجد 16 عنصر بترتيب آخر مماثلين لأي رقم منتج أو أي كمية موجودة ضمن الترتيب رقم 605.
القيم الفارغة في الاستفسار الجزئي Null Values in a Subquery
Return Nulls in the Resulting Set of a Subquery إعادة القيم الفارغة ضمن مجموعة النتائج التي يعيدها الاستفسار الجزئي
مثال : SQL> Select employee.ename
From emp employee
WHERE employee.empno NOT IN
(select manager.mgr
FROM emp manager );
لا يعيد المثال السابق أي صف وذلك لأن أحد القيم التي يعيدها الاستفسار الجزئي أو الداخلي هي قيمة فارغة NULL والسبب في ذلك أن أي نتيجة مقارنة مع القيمة الفارغة تعطينا قيمة فارغة NULL .ولذلك مع أي استفسار جزئي قد ينتج قيم فارغة لا تستخدم معامل المقارنة NOT IN لأنه يكافئ !=ALL و لكن باستخدام المعامل IN لن يكون هناك مشكلة لأن هذا المعامل يكافئ =ANY كما في المثال التالي:
مثال : SQL> Select employee.ename
From emp employee
WHERE employee.empno IN
(select manager.mgr
FROM emp manager );
استخدام الاستفسار الجزئي ضمن عبارة FROM Using a Subquery in the FROM Clause
مثال : SQL> Select a.ename, a.sal ,a.deptno , b.salavg
From emp a ,( SELECT deptno , avg(sal) salavg
FROM emp
GROUP BY deptno ) b
WHERE a.demptno = b.deptno
AND a.sal > b.salavg ;
التقارير التفاعليةInteractive Reports
المتحولات البديلة (متحولات الإبدال ) Substitution Variables
Use SQL*Plus substitution variables to temporarily store values.
تستخدم متحولات التبديل من أجل التخزين المؤقت للقيم.
Single ampersand (&). العلامة
Double ampersand (&&).العلامة المزدوجة
DEFINE and ACCEPT commands.الأوامر
Pass variable values between SQL statements.تمرير قيم المتحولات بين عبارات الـ
Dynamically alter headers and footers.التغيير الديناميكي للعناوين(الرؤوس) والذيول (الهوامش السفلية)
Using the & substitution variable استخدام المتحول البديل &
Use the variable prefixed with an ampersand (&) to prompt the user for a value.
قم باستخدام المتحول البديل مع وضع العلامة & في بدايته وذلك ليقوم بدعوة المستخدم لإدخال القيمة .
Notation De************ion
&user_variable Indicates a variable in a SQL statement; if the variable does not exist. SQL*Plus prompts the user for a value (SQL*Plus discards a new variable once it is used )
يدل على المتحول في عبارة SQL .إذا لم يكن المتحول مدخلاً تقوم SQL بحث المستخدم على إدخال قيمة المتحول ( تقوم SQL بالاستغناء عن القيمة المدخلة عند استخدامها مرة واحدة
مثال : SQL> Select empno, ename ,sal , deptno
From emp
WHERE empno = &employee_num;
ويكون الخرج بالشكل السابق حيث يطالبنا بإدخال قيمة المتحول البديل نقوم بإدخال أحد أرقام الموظفين وليكن 7367 .
Using the SET VERIFY Command استخدام وتفعيل أمر التحقق
Toggling the display of the **** of a command before and after SQL*Plus replaces substitution variables with values.
يقوم هذا الأمر بالتأكيد على عرض النص الخاص بالأمر قبل وبعد أن تقوم SQL بتبديل متحولات البدل بقيمها.
مثال : SQL> SET VERIFY ON
SQL> Select empno, ename ,sal , deptno
From emp
WHERE empno = &employee_num;
بمعنى آخر يقوم هذا الأمر بإعطاء تقرير عن اسم المتحول قبل التغيير وقيمته بعد التغيير. وعندما نريد إيقاف مجموعة التأكيد نكتب التعليمة SET VERIFY OFF .
Character and Data Values with Substitution Variables المحارف وقيم البيانات مع المتحولات البديلة
Use single quotation marks for data and character values.
قم باستخدام فواصل علوية مع البيانات والقيم الحرفية (المحارف).
مثال : SQL> Select ename , deptno, sal*12
From emp
WHERE job = '&job_title' ;
Specifying Column Names, Expressions, and **** at Runtime
أسماء أعمدة مختارة , تعابير مختارة , ونصوص مختارة في وضع التنفيذ
Use substitution variables to supplement the following:
قم باستخدام متحولات البدل لاستكمال ما يلي :
WHERE condition
ORDER BY clause
Column expression.
Table name
Entire select statement
شرط WHERE وعبارة ORDER BY و تعبير العمود و اسم الجدول و عبارة SELECT تامة.
Not only can you use the substitution variables in the where clause of a SQL statement. But also these variables can be used to substitute column names, expressions, or ****.
لا تستخدم متحولات البدل فقط ضمن عبارة WHERE الخاصة بعبارة SQL ولكن هذه المتحولات تستخدم لاستبدال أسماء الأعمدة و التعابير والنص.
مثال : SQL> Select empno, &column_name
From emp
WHERE &condition ;
مثال : SQL> Select empno, ename, job, &column_name
From emp
WHERE &condition
ORDER BY &order_column ;
Using the && substitution variable &استخدام المتحول البديل &
Use the double-ampersand (&&) if you want to reuse the variable value without prompting the user each time.
قم باستخدام العلامة المزدوجة (&&) مع المتحول البديل في حالة أردت إعادة استخدام قيمة المتحول بدون إبلاغ المستخدم في كل مرة.
مثال : SQL> Select empno, ename, job, &&column_name
From emp
ORDER BY & column_name ;
في هذه الحالة يقوم المتحول البديل بحفظ القيمة المدخلة ضمنه من أول تنفيذ
Defining User Variables تعريف متحولات خاصة بالمستخدم
Command الأمر الوصفDe************ion
DEFINE variable - value Creates a CHAR datatype user variable and assigns a value to it.إنشاء متحول حرفي خاص با لمستخدم وتحديد قيمة له
DEFINE variable Display the variable, its value, and its datatype
عرض المتحول وقيمته ونوع بياناته
DEFINE Display all user variables with value and datatype
عرض جميع متحولات المستخدم مع قيمها وأنواعها
ACCEPT (see syntax on next slide ) Reads the line of user input and store it in a variable
قراءة السطر المدخل من المستخدم وتخزينه ضمن المتحول
The DEFINECommand الأمرDEFINE
المتحولات تبقى معرفة حتى تقوم بأحد الأمرين : Variables remains defined until you either:
- استخدام الأمر UNDEFINE لمسحها . -Use the UNDEFINE command to clear it.
- الخروج من بيئة SQL*Plus . - Exit SQL*Plus.
To define variables for every session modify your login.sql file so that the variables are created at startup.
لتبقى المتحولات معرفة في كل مرة تريد فيها الدخول قم بتعديل الملف Login.sql عندها تتولد المتحولات تلقائياً عند الإقلاع.
مثال : إنشاء متحول يحمل اسم الشقة Create a variable to hold the department name
SQL> DEFINE deptname = sales
SQL> DEFINE deptname
مثال : قم باستخدام المتحول كأي متحول آخر Use the variable as you would any other variable
SQL> Select *
FROM dept
Where dname = UPPER( '&deptname') ;
لمحو المتحول أو إزالته نستخدم الأمر UNDEFINE To erase the variable you use the UNDEFINE command
SQL> UNDEFINE deptname
SQL> DEFINE deptname
The ACCEPT Command الأمرACCEPT
الشكل العام: ACCEPT variable [datatype] [FORMAT format]
[PROMPT ****] [HIDE]
variable is the name of the variable that stores a value (If it does not exist SQL*Plus creates it )
variable اسم المتحول الذي يقوم بتخزين القيمة ( إذا لم تقم بإنشائه تقوم SQL*Plus بإنشائه تلقائياً )
datatype is NUMBER, CHAR, or DATE (CHAR has a maximum length limit of 240 bytes. DATE checks against a format model, and the datatype is CHAR)
datatype نوع البيانات عددية أو حرفية أو تاريخ ( البيانات الحرفية تأخذ طول أعظمي 240 بايت, والتاريخ يأخذ الشكل المطبق عليه ضمن format ونوع بياناته حرفية )
FOR[MAT] format specifies the format model—for example, A10 or 9.999
PROMPT **** displays the **** before the user can enter the value.
PROMPT **** عرض النص الذي يقوم بإخبار المستخدم بإدخال القيمة قبل إدخالها.
HIDE suppresses what the user enters--- for example, a password.
HIDE يقوم بإخفاء القيمة المدخلة من قبل المستخدم يستخدم على سبيل المثال لكلمة المرور.
• ACCEPT: Read user input and store it in a variable.
• Creates a customized prompt when accepting user input.
• Explicitly defines a NUMBER or DATE datatype variable.
• Hides user input for security reasons.
• يقوم هذا الأمر بقراءة القيمة التي يدخلها المستخدم ثم يقوم بتخزينها في المتحول.
• يستخدم لوضع عبارة اختيارية من أجل إخبار المستخدم بعملية الإدخال.
• يستخدم للتحديد الصريح لنوع بيانات المتحول إن كان رقم أو تاريخ.
• و يستخدم لإخفاء القيم المدخلة من قبل المستخدم لأسباب أمنية (للحفاظ على السرية).
مثال :
SQL>ACCEPT dept PROMPT ' Provide the department name : '
Select *
From dept
WHERE dname = UPPER( '&dept') ;
Customizing the SQL*Plus Environment تخصيص بيئة الاس كيو ال بلس
الشكل العام: SET system_variable value
system_variable is a variable that controls one aspect of the session environment .
value is a value for the system variable .
system_variable متحول يتحكم بمظهر واحد من مظاهر بيئة الجلسة الحالية.
Value قيمة متحول النظام.
باستخدام أمر SET يمكنك التحكم بإعدادات الجلسة الحالية .
يمكن التأكد من الإعدادات باستخدام أمر التأكد SHOW .
يمكنك استخدام الأمر SHOW ALL لرؤية كافة متحولات النظام وأوضاعها.
مثال : SQL> SET ECHO ON
SQL> SHOW ECHO
حيث Echo مسؤول عن التكرار
متحولات أمر التفعيل (التحديد) SET SET Command Variables
الخط السفلي في الجدول موضوع تحت القيم الافتراضية The underscore values indicate default values
SET Variable and Value الوصفDe************ion
ARRAYSIZE {20|n} Set the database data fetch size تحديد حجم البيانات المستخرجة من قاعدة البيانات
CLOSEP { |****} Sets **** to be printed between columns ( The default is single space)
ضبط النص الذي نريد طباعته بين الأعمدة ( الافتراضي فراغ وحيد )
FEED[BACK]{6 |n |OFF|ON} Display a number of records returned by a query when the query selects at least n records. Example ( 13 rows selected.)في نهاية نتيجة الاستعلام
يعرض عدد السجلات المعادة من الاستعلام عندما يقوم الاستعلام باختيار n سجل كحد أدنى
HEA[DING] {OFF|ON} مسؤول عن إظهار وإخفاء أسماء الأعمدة في نتيجة الاستعلام
LIN[ESIZE] {80| n } ضبط وتحديد عدد الأحرف الأعظمي لكل سطر حتى n حرف وبذلك يمكن إظهار الجدول كاملاً إذا كانت السجلات طويلة أو عدد الأعمدة كبير مثلاً :SET LIN 100
LONG {80| n } تحديد الطول الأعظمي لعرض قيم البيانات الطويلة LONG
PAGES[IZE] {24| n } تحديد عدد الأسطر الأعظمي في كل صفحة من صفحات الخرج بذلك يمكن تحديد عدد صفوف معينة لكل جزء من الخرج أي يمكن تجزيء الناتج إلى جداول بدل من جدول
PAU[SE] {OFF|ON| ****} Allow you to control scrolling of your terminal ( You must press [Return] after seeing each pause) تمكنك من التحكم بتحريك الطرف السفلي
TERM[OUT] {OFF|ON} Determines whether output is displayed on screen
يحدد فيما إذا كان الخرج قد ظهر على الشاشة
ECHO {OFF|ON} مسؤول عن التكرار
The login.sql file contains standard set and other SQL*Plus commands that are implemented at login.
You can modify login.sql to contain additional set commands .
يحتوي الملف login.sql الأوامر القياسية بالإضافة إلى أوامر أخرى من SQL*Plus والتي تنفذ عند الدخول .
بإمكانك القيام بتعديل ملف الدخول login.sql ليحوي أوامر إضافية.
أوامر الشكل في الـ SQL*Plus SQL*Plus Format Commands
Command الوصفDe************ion
COL[UMN] [column option] التحكم بتصميمات العمود بإضافة خيار كما في الفقرة التالية Control column formats
TTI[TLE] [****|OFF|ON] Specifies a header to appear at the top of each page
تخصيص عنوان يظهر في أعلى كل صفحة
BTI[TLE] [****|OFF|ON] Specifies a footer to appear at the bottom of each page of the report
تخصيص هامش سفلي يظهر في أسفل كل صفحة
BRE[AK] [ON report element] Suppresses duplicate value and sections rows of data with line feeds
طمس وإخفاء القيم المضاعفة ومقاطع من الصفوف بسطر فارغ
تكتب هذه الأوامر مع معاملاتها مباشرة بدون سابق كما يلي : SQL>TTI "Students Table"
SQL>BTI "END Report"
أوامر العمود The COLUMN Command
تحكمات بطريقة عرض العمود Controls display of a column
COL[UMN] [{column|alias} [option]]
جدول خيارات أمر العمود COLUMN Command Options
Option الخيار الوصفDe************ion
CLE[AR] مسح أي إعداد لشكل العمود مثال: COL ename CLE
FOR[MAT] format تغيير طريقة عرض بيانات العمود
HEA[DING] **** تغيير طريقة عرض عنوان العمود (رأس العمود) مثال: COL ename HEA employee
JUS[TIFY] {align} يجعل اسم العمود (الرأس) وليس البيانات يكون في اليسار أو الوسط أو اليمين حسب الإتجاه
مثال :COL job JUS CENTER
NOPRI[NT] إخفاء أعمدة ضمن التقرير مثال : COL sal NOPRI
NUL[L] **** اختيار قيمة لتعبئتها في التقرير مكان القيم الفارغة مثال : COL comm NUL 0
PRI[NT] إظهار العمود المخفي مثال : COL sal PRI
TRU[NCATED] يقوم بقطع السلسلة في نهاية السطر الأول من العرض
WRA[PPED] التفاف نهاية السلسلة إلى السطر التالي (السطور ملتفة)
أمثلة :
إنشاء رؤوس (عناوين ) للأعمدة : SQL>COLUMN ename HEADING 'Employee|Name' FORMAT A15
SQL>COLUMN sal JUSTIFY LEFT FORMAT $99,990.00
SQL>COLUMN mgr FORMAT 999999999 NULL 'No manager'
وعندها يصبح ناتج ما يلي : SQL>SELECT ename, mgr , sal FROM emp ;
COLUMN Format Models نماذج لشكل العمود
Result Example De************ion Element
N/A N/A يقوم بإعدادالعرض حسب قيمة n كما في المثال السابقA15 An
1234 999999 أقرب عدد صحيح 9
01234 099999 يضع صفر يساري إجباري 0
$1234 $9999 علامة دولار $ $
L1234 L9999 رمز للعملة المحلية مهما يكن L
1234.00 9999.99 الفاصلة العشرية .
1,234 9.999 فاصلة الآلاف ,
أمثلة :
عرض الإعدادات الحالية للعمود ENAME Display the current setting for the ENAME column
SQL>COLUMN ename
عرض الإعدادات الحالية لكافة الأعمدة Display the current setting for all columns
SQL>COLUMN
مسح الإعدادات الحالية للعمود ENAME Clear setting for the ENAME column
SQL>COLUMN ename CLEAR
مسح الإعدادات الحالية لكافة الأعمدة Clear setting for all columns
SQL> CLEAR COLUMN
أو اختصاراً SQL> CLE COL
إخفاء القيم المضاعفة Suppresses duplicate value
SQL>BREAK ON ename ON job
لاقتطاع صفوف أو وضع صفوف فارغة بين سجلات التقرير To section out rows at break value
SQL>BREAK ON ename SKIP4 ON job SKIP2
مسح كل إعدادات تعليمة الــ BREAK Clear all BREAK setting
SQL>CLEAR BREAK
وضع عنوان للتقرير Set the report header
SQL>TTITLE 'Salary|Report'
وضع هامش سفلي للتقرير Set the report footer
SQL>BTITLE ' Confidential '
إنشاء ملف نصي لحفظ وتشغيل التقرير Creating a ************ File to Run a Report
A. Create the SQL SELECT statement at the SQL prompt. Ensure that the data required for the report is accurate before you save the statement to a file and apply formatting commands. Ensure that the relevant ORDER BY clause is included if you intend to use breaks.
B. Save the SELECT statement to a ************ file.
C. Edit the ************ file to enter the SQL*Plus commands.
D. Add the required formatting commands before the SELECT statement. Be certain not to place SQL*Plus commands within the SELECT statement.
E. Verify that the SELECT statement is followed by a run character. Either a semicolon ( ; ) or a slash ( / ).
F. Add the format-clearing SQL*Plus commands after the run character. As an alternative, you can call a reset file that contains all the format-clearing commands.
G. Save the ************ file with your changes.
H. In SQL*Plus, run the ************ing file by entering START filename or @filename. This command is required to read and execute the ************ file.
A. قم بإنشاء عبارة SQL ضمن ملقن SQL. تأكد أن البيانات المطلوبة للتقرير دقيقة قبل حفظ التعليمة إلى ملف وتفعيل أوامر التنسيقات . تأكد من وجود عبارة ORDER BY مناسبة إذا كنت تنوي استخدام أوامر ال**ر BREAK .
B. قم بحفظ تعليمة SELECT التي قمت بإنشائها ضمن ملف نصي.
C. قم بتحرير الملف النصي لإدخال أوامر SQL*Plus .
D. قم بإضافة أوامر التنسيقات قبل عبارة SELECT . كن واثقاً من عدم وضع أوامر SQL*Plus ضمن عبارة SELECT .
E. تحقق من أن عبارة SELECT متبوعة برمز تشغيل وهو أياً من الفاصلة المنقوطة ( ; ) أو الخط المائل بالشكل ( / ).
F. قم بإضافة أوامر مسح التنسيق بعد رمز التشغيل, كأحد الخيارات غير أنه يمكنك استدعاء ملف إعادة الإفتراضيات reset الذي يحتوي بدوره على كافة أوامر مسح التنسيق .
G. إحفظ الملف النصي مع التغييرات.
H. ضمن SQL*Plus قم بتشغيل الملف النصي باستخدام الأمر START مع اسم الملف أو اختصاراً @filename هذا الأمر مطلوب لقراءة وتنفيذ الملف النصي.
مثال : قم بإنشاء تقرير يظهر نوع العمل واس وراتب كل موظف راتبه أقل من 3000$ قم بوضع عنوان للتقرير مكون من سطرين Employee Report وفي وسط وأسفل الصفحة أكتب Confidential قم بوضع عنوان آخر للعمود Job باسم Job Category يكون مقسوماً إلى سطرين . ثم قم بوضع عنوان آخر للعمود Ename باسم Employee .ثم قم بوضع عنوان آخر لعمود الراتب Sal باسم Salary وقم بتنسيقه إلى الشكل $2,500.0 :
Data Manipulation ********
لغة معالجة البيانات
Data manipulation ******** (DML) is a core part of SQL . When you want to add, update, or delete data in the database, you execute a DML statement .
A collection of DML statements that from a logical unit of work is called a transaction .
لغة معالجة البيانات ويرمز لها اختصاراً DML تعتبر جزء رئيسي أو مركزي من لغة اـ SQL عندما تريد إضافة أو تعديل أو حذف بيانات من قاعدة البيانات عليك إنجاز عبارة DML .
مجموعة عبارات لغة DML من وحدة منطقية من العمل تسمى إجراء أو صفقة (معاملة تجارية).
على سبيل المثال إذا قام أحد عملاء بنك بتحويل مبلغ من الحساب المودع إلى حساب الشيكات (الجاري ) هذا الإجراء ربما يكون مؤلفاً من ثلاث عمليات منفصلة . إنقاص الحساب المودع وزيادة الحساب الجاري وتسجيل عملية التحويل ضمن سجل التحويل . يجب أن يضمن مخدّم أوراكل إنجاز جميع عبارات SQL ليحافظ على الحسابات في توازن صحيح . وإذا أعاق شيء ما أحد هذه العبارات الخاصة بعملية التحويل يجب أن لا تنجز باقي العمليات .
عبارة الإدخال INSERT The INSERT statement
إدخال صفوف جديدة باستخدام INSERT Add new rows to a table by using the INSERT statement
الصيغة العامة: INSERT INTO table [ (column [, column….])]
Values (value [, value….]) ;
table تعبر عن اسم الجدول table is the name of table
column تعبر عن اسم العمود ضمن الجدول للإدخال column is the name of the column in the table to populate
value تعبر عن القيمة المناظرة للعمود value is the corresponding value for the column
إرشادات : عند إدخال صف جديد عليك التقيد بما يلي :
أدخل الصف الجديد بحيث يحتوي على قيم لكل عمود بدون استثناء .
قم بترتيب القيم المدخلة حسب الترتيب الافتراضي للأعمدة في الجدول .
بإمكانك ترتيب أسماء الأعمدة في الجدول بشكل اختياري لكن ترتيب القيم يجب أن يطابق ترتيب الأعمدة .
قم بإحاطة القيم الموافقة للبيانات الحرفية والتواريخ بفواصل علوية (علامات اقتباس) مفردة .
مثال : SQL> INSERT INTO dept (deptno, dname, loc)
VALUES ( 50, 'DEVELOPMENT' , 'DETRIOT' ) ;
إدخال قيم خاصة باستخدام التوابع Inserting Special Value
مثال : SQL> INSERT INTO emp (empno, ename, job, mgr, hiredate,
Sal, comm, deptno)
VALUES ( 7196, 'GREEN' , 'SALESMAN', 7782, SYSDATE,
2000, NULL, 10 ) ;
يقوم التابع SYSDATE في المثال السابق بإدراج قيمة التاريخ الحالي ضمن الحقل hiredate
للتحقق نضع : SQL> SELECT * FROM emp
WHERE empno = 7196 ;
إدخال قيم خاصة للتاريخ باستخدام التوابع Inserting Special Date Value
مثال : SQL> INSERT INTO emp
VALUES ( 2296, 'ARMANO' , 'SALESMAN', 7782,
TO_DATE( 'FEB 3, 97' , 'MON DD, YY' ) , 1300, NULL, 10 ) ;
وبالتالي يمكننا استخدام توابع التواريخ ضمن تعليمة الإدخال INSERT .
إنشاء ملف نصي مع إدخال خاص Creating a ************ with Customized Prompts
عند تشغيل هذا الملف يطلب منا إدخال قيم المتحولات واحد تلو الآخر ثم يقوم بإدخالها ضمن الجدول .
عبارة الإدخال UPDATE The UPDATE statement
تعديل صفوف موجودة باستخدام UPDATE Modify existing rows with the UODATE statement
الصيغة العامة: UPDATE table
SET column = value [ , column = value, …..]
[WHERE condition ] ;
table تعبر عن اسم الجدول table is the name of table
column تعبر عن اسم العمود ضمن الجدول للإدخال column is the name of the column in the table to populate
value تعبر عن القيمة المناظرة للعمود value is the corresponding value for the column
Condition شرط يعين الصفوف التي سيتم تعديلها condition identifies the rows to be updated
Specific row or rows are modified when you specify the WHERE clause.
يتم تعديل صف واحد أو عدة صفوف محددة بشكل دقيق عند استخدام عبارة WHERE .
مثال : SQL> UPDATE emp
SET deptno = 20
WHERE empno = 7782 ;
All rows in the table are modified if you omit the WHERE clause.
يتم تعديل كل الصفوف ضمن الجدول عند حذف عبارة WHERE .
مثال : SQL> UPDATE emp
SET deptno = 20 ;
التحديث باستخدام استفسار جزئي متعدد الأعمدة Updating with Multiple-Column Subquery
مثال : تحديث عمل الموظف job ورقم الشقة deptno للموظف رقم 7698 empno=لتكون مساوية للموظف رقم empno= 7499
SQL> UPDATE emp
SET ( job, deptno ) =
( SELECT job, deptno
FROM emp
WHERE empno = 7944 )
WHERE empno = 7698 ;
Multiple-column subqueries can be implemented in he SET clause of an UPDATE statement.
الاستفسار المتعدد الأعمدة يمكن أن ينفذ ضمن عبارة STE التابعة لتعليمة UPDATE .
تحديث صفوف بناء على جدول ثاني Updating Rows Based on Another Table
مثال : SQL> UPDATE employee
SET deptno = ( SELECT deptno
FROM emp
WHERE empno = 7788 )
WHERE job = ( SELECT job
FROM emp
WHERE empno = 7788 ) ;
تحديث الصفوف وخطأ قيد التكامل Updating Rows Integrity Constraint Error
مثال : SQL> UPDATE emp
SET deptno = 55
WHERE deptno = 10 ;
رقم القسم 55 غير موجود
عبارة الحذف DELETE The DELETE statement
(حذف صفوف موجودة باستخدام DELETE) Remove existing rows from a table by using the DELETE statement
الصيغة العامة: DELETE [FROM] table
[WHERE condition ] ;
table تعبر عن اسم الجدول table is the name of table
Condition شرط يعين الصفوف التي سيتم حذفها condition identifies the rows to be deleted
Specific rows are deleted when you specify the WHERE clause.
يتم حذف صفوف محددة بشكل دقيق عند استخدام عبارة WHERE .
مثال : SQL> DELETE FROM dept
WHERE dname = 'DEVELOPMENT' ;
All rows in the table are deleted if you omit the WHERE clause.
يتم حذف كل الصفوف ضمن الجدول عند حذف عبارة WHERE .
مثال : SQL> DELETE FROM dept ;
مثال : SQL> DELETE FROM emp
WHERE hiredate > TO_DATE ( '01.01.97' , 'DD.MM.YY' ) ;
يقوم بحذف كل الموظفين الذين بدأوا بعد January 1. 1997
حذف صفوف بناء على جدول ثاني Deleting Rows Based on Another Table
SQL> DELETE FROM emp
WHERE deptno =
( SELECT deptno
FROM dept
WHERE dname = 'SALES' ) ;
حذف صفوف وخطأ قيد التكامل Deleting Rows Integrity Constraint Error
مثال : SQL> DELETE FROM dept
WHERE deptno = 10 ;
لا يمكنك حذف الصف الذي يحتوي على مفتاح أساسي
يستخدم كمفتاح ثانوي في جدول آخر .
إجراءات قاعدة البيانات Database Transactions
Consist of one of the following statements: يتألف من أحد العبارات التالية:
DML (Data Manipulation ******** )statements that make up one consistent change to the data.
أي عدد من عبارات DML التي تقوم بتغيير واحد على البيانات أي التي يعاملها مزود أوراكل ككينونة واحدة أي كوحدة منطقية تشكل جزء واحد من العمل.
One DDL (Data Definition ********) statement. تعليمة واحدة
One DCL (Data Control ********) statement. تعليمة واحدة
عند تعديل قاعدة المعطيات بالإضافة أو التحديث يمكنك حفظ هذا التعديل أو عدم الحفظ وهذا مفيد عند اكتشاف أخطاء أثناء التعديل و عملية تثبيت التعديل أو التراجع تكتبان بالأوامر Commit للحفظ و Rollback للتراجع.
تبدأ إجراءات قاعدة البيانات عندما تنفذ أول عبارة SQL قابلة للتنفيذ .
وتنتهي مع حدوث أي مما يلي :
1. إذا تم تنفيذ أي من الأوامر COMMIT or ROLLBACK .
2. إذا تم تنفيذ أي من تعليمات DDL or DCL والتي تعد بمثابة الحفظ الأوتوماتيكي Auto Commit .
3. خروج المستخدم User Exits والذي يقوم بالحفظ تلقائياً .
4. انهيار النظام أو فشل النظام .
عندما تنتهي أحد العمليات أو الإجراءات تقوم عبارة SQL التالية بشكل أوتوماتيكي ببدء الإجراء التالي .
كما وتقوم تعليمات DDL or DCL بالحفظ التلقائي ولذلك فإنها تقوم ضمنياً بإنهاء الإجراء.
Advantages of COMMIT and ROLLBACK Statements
ميزات عبارتي COMMIT و ROLLBACK
تضمن ثبات البيانات Ensure data consistency
تسمح بمراجعة التغييرات قبل تثبيتها بشكل دائم Preview data changes before making changes permanent
تقوم بتجميع العمليات المنطقية Group logically related operations
عملية التحكم بالإجراءات Controlling Transactions
Transaction
DELETE
INSERT
UPDATE INSERT
Savepoint B Savepoint A
Statement الوصفDe************ion
COMMIT Ends the current transaction by making all pending data changes permanent
إنهاء الإجراء الحالي بجعل كل التغييرات المتعلقة بالبيانات ثابتة ودائمة )حفظ التغييرات )
SAVEPOINT name Marks a savepoint within the current transaction
تحديد نقطة حفظ خلال الإجراء الحالي
ROLLBACK [TO SAVEPOINT name] ROLLBACK ends the current transaction by discarding all pending data changes :ROLLBACK TO SAVEPOINT name discards the savepoint and all subsequent changes
التراجع عن الإجراء الحالي بإلغاء كافة التغييرات الأخيرة المتعلقة بالبيانات
التراجع إلى نقطة الحفظ تعمل على تجاهل نقطة الحفظ وكافة التغييرات اللاحقة
يحدث الحفظ الأوتوماتيكي Automatic commit مع حدوث أي مما يلي :
1. تنفيذ تعليمة DDL .
2. تنفيذ تعليمة DCL .
3. الخروج بشكل عادي من بيئة SQL*Plus بدون تنفيذ COMMIT أو ROLLBACK
كما يحدث التراجع الأوتوماتيكي Automatic rollback بالإنهاء الغير طبيعي للـ SQL*Plus أو بانهيار النظام وفي هذه الحالة يقوم مزود أوراكل بالتراجع إلى آخر نقطة حفظ COMMIT مع المحافظة على سلامة الجداول.
ملاحظة : إن الأمر AUTOCOMMIT هو من تعليمات DML ويمكن استخدامه مع SET وتفعيله أو عدم تفعيله ON or OFF ولكن لا يمكنك عندها تنفيذ عملية التراجع ROLLBACK في حالة تفعيله ويكون افتراضيا على الوضع OFF .
SQL> SET AUTOCOMMIT ON
قبل تطبيق أحد عمليتي التثبيت أو التراجع COMMIT or ROLLBACKلا يستطيع أي مستخدم آخر مشاهدة نتائج عبارة DML المستخدمة من قبل المستخدم الحالي وتكون البيانات مقفلة بحيث لا يستطيع مستخدم آخر تغييرها.
أما بعد عملية التثبيت أو التراجع COMMIT or ROLLBACK يستطيع المستخدمين الآخرين مشاهدة النتائج أو التغييرات كما أن جميع نقاط الحفظ Savepoints تمحى .
تثبيت التغييرات على البيانات Committing Data
مثال1 : إحداث تغييرات على البيانات SQL> UPDATE emp SET deptno = 10
WHERE deptno = 7782 ;
تثبيت التغييرات على البيانات SQL> COMMIT ;
مثال2 : إحداث تغييرات على البيانات SQL> INSERT INTO dept (deptno, dname, loc )
VALUES (50, 'ADVERTISING', 'MIAMI' ) ;
مثال2 : إحداث تغييرات على البيانات SQL> UPDATE emp SET deptno = 10
WHERE deptno = 7782 ;
تثبيت التغييرات على البيانات SQL> COMMIT ;
مثال3 : حذف بيانات جدول SQL> DELETE FROM emp ;
التراجع عن الحذف SQL> ROLLBACK ;
التراجع عن التغييرات حتى نقطة معلمة Rolling Back Changes to a Marker
Create a marker in a current transaction by using the SAVEPOINT statement.
Roll back to that marker by using the ROLLBACK TO SAVEPOINT statement.
If you create a second savepoint with the same name as an earlier savepoint, the erlier savepoint is deleted
إنشاء نقطة علامة ضمن الجلسة الحالية أو الإجراء الحالي باستخدام عبارة SAVEPOINT .
التراجع للخلف حتى تلك النقطة باستخدام عبارة ROLLBACK TO SAVEPOINT .
إذا قمت بإنشاء نقطة حفظ أخرى بنفس اسم الأولى فإن الأولى تلغى .
مثال : SQL> INSERT SQL> INSERT
SQL> UPDATE …
SQL> SAVEPOINT update_done ;
SQL> INSERT …
SQL> ROLLBACK TO update_done ;
The purpose of read consistency is to ensure that each user sees data as it existed at the last commit, before a DML operation started.
الهدف من عملية القراءة المتوافقة هو ضمان أن كل مستخدم يرى البيانات كما هي موجودة عند آخر تثبيت لها وذلك قبل بدء أي عملية من عمليات لغة الــ DML.
Data Definition ********
لغة تعريف البيانات (التعامل مع الكائنات)
- أشياء أو أغراض قاعدة البياناتDatabase Objects
Objectالغرض الوصفDe************ion
Table الجدول Basic unit of storage; composed of rows and columns
وحدة التخزين الأساسية للبيانات مؤلفة من صفوف وأعمدة
View المنظور Logically represents subsets of data from one or more table
إجراء ثانوي تمثل ( تصور ) بشكل منطقي البيانات من جدول أو أكثر
Sequenceالمسلسل Generates primary key values تولد قيم المفتاح الأساسي )المسلسِل )
Index الفهرس Improve the performance of some queries يقوم بتحسين أداء بعض الاستفسارات
Synonym المرادف Give alternative names to objects إعطاء أسماء بديلة للأشياء
اصطلاحات (قوانين) التسمية Naming Conventions (Rules)
Name database tables and columns according to the standard rules for naming any Oracle database object:
تسمية قاعدة البيانات والجداول والأعمدة خاضعة لقوانين قياسية خاصة بتسمية أغراض أوراكل كما يلي :
Must begin with a letter and can be 1 – 30 characters long.
يجب أن تبدأ أسماء الجداول والأعمدة بمحارف حصراً وبطول من 1 إلى 30 محرف كحد أقصى.
Must contain only A-Z , a – z , 0 – 9 , _ (underscore), $ , and # .يجب أن تحوي فقط الرموز التالية
Must not duplicate the name of another object owned by the same user.
لا يجب أن يكون إسم الغرض التابع لنفس المستخدم مكرراً .
Must not be an Oracle Server reserved word.يجب أن لا تكون أحد الكلمات المحجوزة لمزود أوراكل
عبارة إنشاء جدول CREATE TABLE The CREATE TABLE statement
بداية يجب أن يكون لديك امتياز إنشاء جدول ومساحة للتخزين ويجب أن تخصص اسم للجدول وأسماء الأعمدة وأنواع البيانات لكل منها وقياس كل عمود :
الصيغة العامة: CREATE TABLE [ schema .] table
( column datatype [DEFAULT expr][ , … ] ) ;
schema تعبر عن نفس اسم المالك schema is the same as the owner's name
table تعبر عن اسم الجدول table is the name of the table
DEFAULT expr specifies a default value if a value is omitted in the INSERT statement
DEFAULT expr تخصيص قيمة افتراضية إذا كانت هذه القيمة قد حذفت من عبارة INSERT
column تعبر عن اسم العمود column is the name of the column
Datatype تحديد نوع البيانات وطولها الأعظمي datatype is the column's datatype and length
يمكن تخصيص قيمة افتراضية للعمود أثناء عملية الإدخال كما في المثال التالي :
……. Hiredate DATE DEFAULT SYSDATE , ……..
القيم المقبولة أو القانونية هي القيمة الحرفية أو التعابير أو توابع الــ SQL .
القيم الغير قانونية أو الغير مقبولة هي أسماء أعمدة أخرى أو الأعمدة الزائفة .
نوع بيانات القيمة الافتراضية يجب أن يكون مماثل لنوع بيانات العمود.
مثال : SQL> CREATE TABLE dept
( deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13) ) ;
الجداول في مزود أوراكل Tables in the Oracle Database
1. جداول المستخدم (User Tables ) : وهي مجموعة من الجداول المنشأة والمحفوظة من قبل المستخدم وتحوي معلومات المستخدم ( User Information ).
2. قاموس المعطيات ( Data Dictionary ) : وهي مجموعة من الجداول المنشأة والمحفوظة من قبل مخدم أوراكل والتي تحتوي معلومات عن البيانات ( Database Information ).
There are four categories of data dictionary views : each category has a distinct prefix witch reflects their intended use .
هناك أربعة من أصناف مناظر قواميس البيانات : كل صنف له بادئة واضحة تع** الإستخدام المطلوب كما الجدول :
Prefix البادئة الوصفDe************ion
USER_ Contains objects owned by the user يحتوي الأغراض التي يملكها المستخدم
ALL_ يستطيع الوصول للأغراض التي منح المستخدم حقوق الوصول لها بالإضافة إلى الأغراض المملوكة من قبل المستخدم
DBA_ يعطي الإمتياز للدخول أو الوصول إلى أي غرض ضمن قاعدة البيانات
V$_ يعرض سلوك مزود قاعدة البيانات و القفل وهو متاح مبدئياً فقط لـ DBA
الاستعلام عن قاموس المعطيات Querying the Data Dictionary
- وصف الجداول المملوكة للمستخدم - Describe tables owned by the user
SQL> SELECT *
FROM user_tables ;
- إظهار أنواع الأغراض التابعة للمستخدم بدون تكرار - View distinct object types owned by the user
SQL> SELECT DISTINCT object_type
FROM user_objects ;
- View tables, views, synonyms, sequences owned by the user .
- إظهار الجداول والمناظير والمرادفات والمتسلسلات التابعة للمستخدم
SQL> SELECT *
FROM user_catalog ;
The USER_CATALOG has a synonym called CAT. You can use this synonym instead of USER_CATALOG in SQL statement.
SQL> SELECT *
FROM CAT ;
يمكن استخدام الاسم المرادف CAT بدلاً من USER_CATALOG .
أنواع البيانات المتاحة في أوراكل DATATYPES
Datatype النوع الوصفDe************ion
VARCHAR2(size) نوع البيانات متحول حرفي متغير الطول يجب أن يكون size طول السلسلة بين حرف واحد 1على الأقل و4000 محرف على الأكثر
CHAR(size) نوع البيانات متحول حرفي ثابت الطول يجب أن يكون size طول السلسلة بين حرف واحد 1على الأقل و2000 محرف على الأكثر
NUMBER(p , s) متحول حرفي متغير الطول له الدقة P والمقياس S حيث Pأكبر طول لرقم قبل الفاصلة العشرية وS أكبر طول لرقم بعد الفاصلة العشرية من جهة اليمين يأخذ p مجال القيم بين 1 إلى 38 أما S فيأخذ مجال القيم بين-84 وبين 127
DATE نوع البيانات تاريخ ووقت بين January 1. 4712B.C. وبين December 31.9999A.D.
LONG نمط حرفي متغير الطول من البيانات يأخذ يصل حجمه إلى حتى 2 جيجا بايت
CLOB متحول حرفي يصل حجمه إلى حتى 4 جيجا بايت
ROW متحول ثنائي يأخذ طول محدد size يمكن جعله حتى 2000 كحد أقصى
LONG ROW متحول ثنائي متغير الطول يصل حجمه حتى 2 جيجا بايت
BLOB بيانات ثنائية يصل حجمها حتى 4 جيجا بايت
BFILE بيانات ثنائية تخزن ضمن ملف خارجي يصل حجمها حتى 4 جيجا بايت
إنشاء جدول باستخدام الاستفسار الجزئي Create a Table by Using a Subquery
SQL> CREATE TABLE dept30 مثال:
2 AS
3 SELECT empno, ename, sal*12 ANNSAL, hiredate
4 FROM emp
5 WHERE deptno = 30 ;
SQL> DESCRIBE dept30
عبارة تعديل جدول ALTER TABLE The ALTER TABLE statement
Use the ALTER TABLE statement to: Add a new column, modify an existing column, and define a default value for the new column.
تستخدم تعليمة ALTER TABLE لإضافة عمود جديد أو تعديل عمود موجود أو تحديد قيمة افتراضية للعمود جديد.
الصيغة العامة1: ALTER TABLE table
ADD ( column datatype [DEFAULT expr]
[ , column datatype]…. ) ;
الصيغة العامة2: ALTER TABLE table
MODIFY ( column datatype [DEFAULT expr]
[ , column datatype]…. ) ;
table تعبر عن اسم الجدول table is the name of the table
تخصيص قيمة افتراضية للعمود الجديد DEFAULT expr specifies a default value for a new column
column تعبر عن اسم العمود column is the name of the column
Datatype تحديد نوع البيانات وطولها للعمود الجديد datatype is the datatype and length of the new column
إضافة عمود Adding a Column
نستخدم عبارة ADD لإضافة أعمدة You use the ADD clause to add columns
SQL> ALTER TABLE dept30 مثال:
2 ADD ( job VARCHAR2(9)) ;
يصبح العمود الجديد في نهاية الجدول كما يلي :
SQL> SELECT *
2 FROM dept30 ;
تعديل عمود Modifying a Column
You can change a column's datatype, size, and default value.
بإمكانك تغيير نوع بيانات العمود و الحجم والقيمة الافتراضية
لتعديل عمود تستخدم عبارة MODIFY مع تعليمة ALTER TABLE
SQL> ALTER TABLE dept30 مثال:
2 MODIFY ( ename VARCHAR2(15)) ;
يمكنك تغيير عرض أو دقة الأعمدة الحاوية على بيانات عددية.
يمكن إنقاص عرض العمود إذا احتوى العمود على قيم فارغة فقط NULL أو إذا لم يحوي الجدول أي صفوف (فارغ).
يمكن تغيير نوع البيانات إذا احتوى العمود قيم فارغة NULL.
يمكن تحويل نوع البيانات CHAR إلى النوع VARCHAR2 أو بالع** إذا احتوى العمود على قيم فارغة NULL أو إذا لم تقوم بتغيير الحجم size .
عبارة إسقاط ( حذف) جدول DROP TABLE Dropping a Table
- جميع البيانات و البنى في الجدول ستمحى. - All data and structure in the table is deleted.
- أي إجراءات قيد الانتظار سيتم تثبيتها. - Any pending transactions are committed.
- جميع الفهارس ستحذف. - All indexes are dropped
- لا يمكن التراجع عن هذه التعليمة. - You cannot roll back this statement.
- تبقى المناظير والمرادفات لكنها تعتبر باطلة. - Any views and synonyms will remains but are invalid.
الصيغة العامة: DROP TABLE table ;
SQL> DROP TABLE dept30; مثال:
إعادة تسمية غرض باستخدام RENAME Changing the name of an Object
لتغيير اسم جدول أو منظور أو متسلسلة أو مرادف عليك تنفيذ تعليمة RENAME .
الصيغة العامة: RENAME old_name TO new_name ;
SQL> RENAME dept TO department; مثال:
بتر الجدول باستخدام تعليمة TRUNCATE Truncating a Table
تقوم تعليمة TRUNCATE TABLE بحذف كافة الصفوف أو السجلات من الجدول والتخلي عن مساحة التخزين المستخدمة لذلك الجدول كما أنه لا يمكنك استعادة الصفوف أو التراجع عن الصفوف المحذوفة باستخدام التعليمة TRUNCATE كما يمكنك حذف صفوف اختيارياً باستخدام تعليمة DELETE :
الصيغة العامة: TRUNCATE TABLE table ;
SQL> TRUNCATE TABLE department ; مثال:
إضافة تعليق للجدول باستخدام COMMENT Adding Comments to a table
يمكنك إضافة تعليقات للجدول أو العمود باستخدام التعليمة COMMENT .
الصيغة العامة: COMMENT TO TABLE table|column table.column
IS '****' ;
table تعبر عن اسم الجدول table is the name of the table
column تعبر عن اسم عمود في الجدول column is the name of the column in a table
**** تعبر عن نص التعليق **** is the **** of the comment
SQL> COMMENT ON TABLE emp مثال:
IS 'Employee Information' ;
Comments can be viewed through the data dictionary views:
يظهر التعليق خلال مناظر قاموس المعطيات باستخدام ما يلي :
ALL_COL_COMMENTS
USER_COL_COMMENTS
ALL_TAB_COMMENTS
USER_TAB_COMMENTS
SQL> SELECT * مثال: بعد إدراج التعليق السابق نجد
FROM user_tab_comments ;
Constraints-القيود
ما هي القيود What Are Constraints ?
- تقوم القيود بفرض القوانين على مستوى الجدول . - Constraints enforce rules at the table level.
- Constraints prevent the deletion of a table if there are dependencies.
- القيود تمنع الحذف من الجدول إذا كان هناك تبعيات.
يبين الجدول التالي أنواع القيود المتاحة في أواكل The following constraint types are valid in Oracle
Constraint القيد الوصفDe************ion
NOT NULL Specifies that this column may not contain a null values
لا يمكن أن يحوي العمود المقيد بهذا القيد قيم فارغة
UNIQUE المفتاح الفريد Specifies a column or combination of columns whose values must be unique for all rows in the table
هو عبارة عن تركيب من عمود أو مجموعة أعمدة التي تكون قيمها وحيدة من أجل جميع الصفوف في الجدول
PRIMARY KEY
المفتاح الأساسي Uniquely identifies each row of the table
يعرف بشكل فريد كل صف من الجدول وهو أحد المفاتيح الفريد لكنه أعطي بعض الميزات الخاصة
FOREIGN KEY
المفتاح الخارجي ( الغريب) Establishes and enforces a foreign key relationship between the column and a column of the referenced table
يؤسس و يؤكد على علاقة مفتاح ثانوي بين العمود الحالي وعمود من الجدول المرجع
CHECK
قيد الإختبار Specifies a condition that must be true
يوصّف الشرط بوجوب كونه صحيحاً
تعريف القيود Defining Constraints
الصيغة العامة: CREATE TABLE [schema.] table
(column datatype [DEFAULT expr]
[ column_constraint] , ….
[ table_constraint ][ ,….]) ;
schema تعبر عن نفس اسم المالك schema is the same as the owner's name
table تعبر عن اسم الجدول table is the name of the table
DEFAULT expr specifies a default value if a value is omitted in the INSERT statement
DEFAULT expr تخصيص قيمة افتراضية إذا كانت هذه القيمة قد حذفت من عبارة INSERT
column تعبر عن اسم العمود column is the name of the column
Datatype تحديد نوع البيانات وطولها الأعظمي datatype is the column's datatype and length
Column constraint is an integrity constraint as part of the column definition
column constraint قيد العمود يعبر عن كمال القيد كجزء من تعريف العمود .
Table constraint is an integrity constraint as part of the table definition
table constraint قيد الجدول يعبر عن كمال القيد كجزء من تعريف الجدول .
مثال : SQL> CREATE TABLE emp (
empno NUMBER(4),
ename VARCHAR2(10),
……….
deptno NUMBER(7 , 2) NOT NULL,
CONSTRAINT emp_empno_pk PRIMARY KEY (EMPNO) ) ;
• عادة نقوم بإنشاء القيود في نفس وقت إنشاء الجدول إلا أنه يمكننا إضافة القيود إلى الجدول بعد إنشائه .
• تنشأ القيود على مستويين مستوى العمود ومستوى الجدول :
Column [COMSTRAINT constraint_name] constraint_type على مستوى العمود: يكون الشكل العام
على مستوى الجدول : يكون الشكل العام Column , …..
[COMSTRAINT constraint_name] constraint_type
(column , …..) ,
القيد NOT NULL The NOT NULL Constraint
وهو يعرف على مستوى العمود Defined at the column level
مثال : SQL> CREATE TABLE emp (
empno NUMBER(4),
ename VARCHAR2(10) NOT NULL,
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7 , 2),
comm NUMBER(7 , 2),
deptno NUMBER(7 , 2) NOT NULL ) ;
كما يمكنك تخصيص اسم للقيد عند إنشاء القيد وذلك بتعديل التعليمة السابقة كما يلي :
……. deptno NUMBER(7 , 2)
CONSTRAINT emp_deptno_nn NOT NULL ….
يمكننا إعطاء القيود أسماء ويفضل أن يكون لها علاقة بالجدول وبالحقل كما في السابق وإذا لم نفعل فإن أوراكل يتولى هذه المهمة بتوليد أسماء خاصة .
قيد المفتاح الفريد The UNIQUE KEY Constraint
وهو يعرف على أيٍّ من مستوى العمود أو مستوى الجدول Defined at either the column level or the table level
و هو عبارة عن تركيب من عمود أو عدة أعمدة بحيث تكون قيمة هذا المفتاح وحيدو حسب كل سطر في الجدول وإذا كان القيد NOT NULL غير معرف على هذا العمود فإن العمود يمكن أن يحوي القيمة NULL الفارغة .
مثال : SQL> CREATE TABLE dept (
deotno NUMBER(2),
dname VARCHAR2(14) ,
loc VARCHAR2(13),
CONSTRAINT dept_dname_uk UNIQUE (dname) ) ;
Note : The Oracle Server enforces the UNIQUE KEY constraint by implicitly creating a unique index on the unique key.
ملاحظة : ينفذ مزود أوراكل قيد المفتاح الوحيد بإنشاء فهرس وحيد ضمنياً على المفتاح الفريد.
قيد المفتاح الأساسي The PRIMARY KEY Constraint
وهو يعرف على أيٍّ من مستوى العمود أو مستوى الجدول Defined at either the column level or the table level
و هو عبارة عن أحد المفاتيح الفريدة و لكننا قمنا بإعطائه بعض الميزات الخاصة ويمكن تعريف مفتاح أساسي واحد في الجدول و لا يمكنه احتواء القيمة NULL .
يمكننا تعريف المفتاح كمفتاح أساسي أو فريد إذا كان مكوناً من عمود واحد بواسطة قيد على عمود بدلاً من قيد على جدول .
مثال : SQL> CREATE TABLE dept (
deotno NUMBER(2),
dname VARCHAR2(14) ,
loc VARCHAR2(13),
CONSTRAINT dept_dname_uk UNIQUE (dname)
CONSTRAINT dept_deptno_pk PRIMARY KEY (deptno) ) ;
ينشأ فهرس وحيد بشكل تلقائي من أجل عمود المفتاح الأساسي
قيد المفتاح الخارجي ( الغريب ) The FRREIGN KEY Constraint
وهو يعرف على أيٍّ من مستوى العمود أو مستوى الجدول Defined at either the column level or the table level
و هو عبارة عن تركيب من مجموعة أعمدة قيمها موجودة في المفتاح الأساسي لجدول آخر .
مثال : SQL> CREATE TABLE emp (
empno NUMBER(4),
ename VARCHAR2(10) NOT NULL,
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7 , 2),
comm NUMBER(7 , 2),
deptno NUMBER(7 , 2) NOT NULL,
CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) REFERENCES dept (deptno) ) ;
يمكن الرجوع للمفتاح الأساسي في نفس الجدول أو في جدول آخر باستخدام تعليمة المراجع REFERENCES كما في المثال السابق حيث أن الحقل deptno والذي هو عبارة عن مفتاح خارجي في الجدول emp يرجع إلى العمود deptno والذي هو عبارة عن مفتاح أساسي في الجدول dept وبالتالي عندما تريد حذف أسطر من الجدول الأب فإنه من الضروري حذف الأسطر المرتبطة به من الجدول الأب وذلك باستخدام التعليمة ON DELETE CASCADE والتي تضاف إلى تعليمة REFERENCESوالتي تجبر أوراكل على حذف الأسطر المرتبطة من الجدول الابن عندما تحذف أسطر من الجدول الأب ( الأساسي ).
FOREIGN KEY Constraint Keywords
REFERENCES Identifies the table and column in the parent table
تحدد الجدول والعمود المرجع من الجدول الأب
ON DELETE CASCADE Allows deletion in the parent table and deletion of the dependent rows in the child table
تقوم بحذف الصفوف من الجدول الابن والمرتبطة مع الصفوف المحذوفة من الجدول الأب
قيد الاختبار The CHECK Constraint
وهو يحدد الشرط الذي يجب أن تحققه كافة الصفوف Defines a condition that each row must satisfy
التعابير الغير مسموح بها : Expressions that are not allowed:
لا يمكنك استخدام هذه القيود على الأعمدة الغير حقيقية مثل :
• References to CURRVAL, NEXTVAL, LEVEL, and ROWNUM pseudo columns
• Calls to SYSDATE, UID, USER, and USERENV functions.استدعاء التوابع التالية :
• Queries that refer to other values in other rows. الاستفسارات التي تشير إلى قيم أخرى في صفوف أخرى
مثال : SQL> CREATE TABLE dept (
deotno NUMBER(2),
dname VARCHAR2(14) ,
loc VARCHAR2(13),
CONSTRAINT emp_dname_ck CHECK (deptno BETWEEN 10 and 99) ) ;
إضافة قيد Adding a Constraint
- يمكن إضافة أو حذف قيد ولكن لا يمكن التعديل - Add or drop, but not modify a constraint
- تمكين أو إلغاء تمكين القيود - Enable or disable constraints
- Add a NOT NULL constraint by using the MODIFY clause.
- يمكن إضافة القيد NOT NULL باستخدام عبارة MODIFY
الصيغة العامة ALTER TABLE table
ADD [CONSTRAINT constraint ] type (column) ;
table تعبر عن اسم الجدول table is the name of the table
constraint تعبر عن اسم القيد constraint is the name of the constraint
type تعبر عن نوع القيد type is the constraint type
column تعبر عن اسم العمود المتأثر بالقيد column is the name of the column
مثال : SQL> ALTER TABLE emp
ADD CONSTRAINT emp_mgr_fk
FOREIGN KEY (mgr) REFERENCES emp (empno);
إسقاط (إنهاء) قيد Dropping a Constraint
- حذف قيد عمود المدراء من جدول EMP - Remove the manager constraint from the EMP table
مثال : SQL> ALTER TABLE emp
DROP CONSTRAINT emp_mgr_fk ;
- حذف قيد المفتاح الأساسي من جدول Dept وإسقاط قيد المفتاح الخارجي المرتبط به من جدول EMP وهو العمود Deptno باستخدام التعليمة CASCADE و التي تقوم بإسقاط القيود من الجداول الأبناء والمرتبطة مع القيد المحذوف من الجدول الأب كما في المثال التالي :
مثال : SQL> ALTER TABLE dept
DROP PRIMARY KEY CASCADE ;
إلغاء تمكين القيود Disabling Constraints
- Execute the DISABLE clause of the ALTER TABLE statement to deactivate an integrity constraint.
يتم تنفيذ عبارة DISABLE مع عبارة ALTER TABLE لتبطل عمل القيد.
- Apply the CASCADE option to disable dependent integrity constraints.
يتم تفعيل خيار CASCADE لتبطل عمل القيود المرتبطة مع قيد الجدول الأب.
الصيغة العامة ALTER TABLE table
DISABLE CONSTRAINT constraint [CASCADE] ;
table تعبر عن اسم الجدول table is the name of the table
constraint تعبر عن اسم القيد constraint is the name of the constraint
مثال : SQL> ALTER TABLE emp
DISABLE CONSTRAINT emp_empno_pk CASCADE ;
تمكين القيود Enabling Constraints
- Execute the ENABLE clause of the ALTER TABLE statement to activate an integrity constraint.
يتم تنفيذ عبارة ENABLE مع عبارة ALTER TABLE لتفعيل عمل القيد.
- A UNIQUE or PRIMARY KEY index is automatically created if you enable a UNIQUE KEY or PRIMARY KEY constraint .
يتم إنشاء فهرس المفتاح الرئيسي والمفتاح الفريد تلقائياً عند تفعيل أي من هذين القيدين.
الصيغة العامة ALTER TABLE table
ENABLE CONSTRAINT constraint ;
table تعبر عن اسم الجدول table is the name of the table
constraint تعبر عن اسم القيد constraint is the name of the constraint
مثال : SQL> ALTER TABLE emp
ENABLE CONSTRAINT emp_empno_pk ;
عرض القيود Viewing Constraints
Query the USER_CONSTRAINTS table to view all constraint definitions and names.
لإظهار كافة أسماء و تعاريف القيود يجب إجراء استفسار على جدول القيود USER_CONSTRAINTS كما في المثال التالي:
مثال : SQL> SELECT con
قواعد البيانات العلائقية أوراكل Relational Data Base
يمكن تقسيم عبارات لغة SQL بالشكل التالي :
وصف De************ion Statement
استرجاع البيانات من قاعدة البيانات Select
DML _ Data manipulation ******** وتعرف بلغة معالجة البيانات تستخدم لإدخال صفوف جديدة أو تغيير في صفوف موجودة وحذف صفوف غير ضرورية من جدول في قاعدة البيانات Insert
Update
Delete
DDL _ Data definition ******** وتعرف بلغة تعريف البيانات (التعامل مع الكائنات ) وتستخدم لتثبيت و تغيير تركيبات أو أبنية البيانات في الجدول بشكل عام Create
Alter
Drop
Rename
Truncate
DCL _ Data control ******** تعرف بلغة التحكم بالبيانات وعن طريقها يتم تحديد السماحيات بالدخول على قاعدة البيانات أو التغيير في بنيتها Grant
Revoke
عبارة الاختيار Select الأساسية (Basic select statement) :
الصيغة العامة :
Select {*, Column name , ----}
From Table name:
أمثلة Examples :
1) اختيار كافة الأعمدة 1) 1. SQL> select * Select all column 2. from emp ;
2) اختيار بعض الأعمدة بأسمائها 2) 1.SQL> Select deptno ,dname ,loc
Selecting specific column 2. from emp ;
3) استخدام التعابير الحسابية Arithmetic Operators
3) 1. SQL> select ename,sal,sal+300
2. from emp;
جدول الرموز الحسابية :
وصف De************ion الرمز Operator
Add +
Subtract -
Multiply *
Divide /
أسبقية العمليات الحسابية ( الضرب - القسمة – الجمع الطرح )
Using Parentheses (استخدام الأقواس ): يمكن استخدام الأقواس لتحديد أسبقية العملية الحسابية
مثلاً : 12*(sal+100)=1260 تختلف عن 12*sal+100=160 وذلك باعتبار sal =5
القيمة NULL أي عدم الوجود أو باطلة : وهي قيمة غير موجودة وغير محددة Unassigned وغير معروفة Unknown وغير قابلة للاستعمال و التطبيق Inapplicable وهي لا تشبه الصفر أو الفراغ وأي عملية حسابية على القيمة NULL تنتج القيمة NULL نفسها .
4) استخدام أسماء مستعارة للأعمدة Using column aliases
- إما أن نستعمل AS أو نكتب الاسم القديم والاسم الجديد مباشرة بعده و بينهما فراغ :
4) 1.SQL>select ename As name ,sal salary
2. from emp;
-أو نضع الاسم الجديد ضمن فواصل علوية و خاصة في اللغة العربية كما يلي :
1.SQL>select ename "name" , sal*12 "annual salary"
2. from emp;
5) استخدام السلاسل الحرفية البسيطة Using Literal Character String
يمكننا دمج السلاسل الحرفية لحقلين أو أكثر ووضع فراغات بينها باستخدام الرمز || كما يلي :
5) 1.SQL>select ename ||' '|| job as "Employee Details"
وفي هذه الحالة يجب استخدام AS حتماً 2. from emp;
كما يمكننا دمج الصفوف بدون فراغات 1.SQL>select ename || job as "Employees"
2. from emp;
6)الصفوف المزدوجة (المكررة) Duplicate Rows
عند عرض الجدول يقوم البرنامج بعرض كل الصفوف والصفوف المكررة يمكن استخدام عبارة Distinct لإزالة الصفوف المكررة
إزالة الصفوف المكررة 6) 1.SQL>select Distinct deptno
2. from emp;
وصف بنية الجدول Displaying Table Structure :
يمكننا وصف بنية الجدول باستخدام العبارة DESCRIBE مع اسم الجدول ويمكن اختصار العبارة بكتابة DESC والذي يعطينا وصف للجدول ولأنواع البيانات في الحقول والقيم الباطلة أو الفارغة كما يلي : SQL> Desc dept
بعض أنواع البيانات : SOME DATA TYPE
NUMBER (P,S) : النوع العددي حيث P أكبر طول رقم قيل الفاصلة العشرية و S أكبرطول رقم بعد الفاصلة العشرية .
VARCAR(S) : نوع بيانات حرفي أو رمزي أكبر عدد لحروفه S .
DATE : بيانات من النوع تاريخ ويأخذ أكبر قيمة له 31/ December /9999 .
CHAR(S) : بيانات نوع حرفي تأخذ طول ثابت S .
أوامر التحرير في لغة الــSQL PLUS SQL*PLUS EDITING COMMANDS
I. الأمر APPEND وبعده نص (يمكن اختصاره بحرف A) : يقوم هذا الأمر بإضافة النص إلى آخر السطر الحالي أو السطر الأخير في عبارة SQL السابقة بمعنى آخر في حالة وضع عبارة ناقصة وتنفيذها يمكن إكمالها بعد التنفيذ باستخدام الأمر A .
II. الأمر CHANGE (اختصاراً C) : كما يلي C /old ****/new **** يقوم بتغيير النص OLD إلى النص NEW في عبارة SQL الأخيرة .
III. الأمر CHNGE /****/ أو C /****/ : يحذف النص **** نهائياً من عبارة SQL الأخيرة أي يستبدلها بفراغ .
IV. الأمر CLEAR BUFFER أو اختصارا CL BUFF : يحذف كل السطور أو التعليمات الموجودة ضمن الحاجز أو المصد ( الـ Buffer ).
V. الأمر DEL: يقوم بحذف السطر الحالي أي السطر الأخير في عبارة SQL الأخيرة .
VI. الأمر RUN أو R :يقوم هذا الأمر بعرض وتشغيل عبارة SQL الأخيرة والموجودة ضمن المصد الـ Buffer .
أوامر الملفات في لغة الــ SQL PLUS SQL*PLUS FILE COMMANDS
i. الأمر SAVE Filename أو SAV Filename : يقوم بحفظ تعليمة الـSQL الأخيرة ضمن الملف المسمى ؟ والذي يمكن استدعاؤه وتنفيذ التعليمة ضمنه باستخدام الأمر التالي GET .
ii. الأمر GET Filename : يقوم باستدعاء تعليمة الـ SQL المخزنة ضمن الملف النصي المذكور .
iii. الأمر START Filename أو STA Filename : يقوم مباشرة بتنفيذ تعليمة الـ SQL المخزنة في الملف المذكور ويمكن الاستعاضة عنه بالأمر @filename .
iv. الأمر EDIT أو اختصارا ED: يقوم بتحرير آخر تعليمة SQL ضمن محرر نصوص المفكرة عندها يمكن إصلاحها ثم حفظها وتنفيذها من جديد باستخدام الأمر R .
v. الأمر EDIT Filename أو ED Filename : يقوم بتحرير الملف الذي قمنا بحفظ تعليمة SQL ضمنه مسبقاً ضمن محرر نصوص .
vi. الأمر SPOOL Filename أو اختصاراً SPO Filename : يقوم هذا الأمر بتخزين نتائج الاستفسار في ملف , بإضافة OFF إلى الأمر فإنه يقوم بإغلاق الملف , أما بإضافة OUT فإنه يقوم بإغلاق الملف وإرسال النتائج إلى طابعة النظام . SPO filename|OFF أو SPO filename|out .
vii. الأمر EXIT يقوم بالخروج من واجهة الـ SQL*PLUS .
عبارة WHERE ( Were Clause) :
تحديد الصفوف المختارة LIMITING ROWS SELECTED
تحديد الصفوف التي تظهر باستخدام عبارة Where Restrict the rows returned by using the where clause _
الصيغة العامة SQL>select Distinct -------
From table name
Where conditions ;
مثال : SQL>select ename , job , deptno
from emp
Where job= 'clerk' ;
رموز (عوامل) المقارنة COMPARISON OPERATORS
Meaning المعنى Operator
Equal toيساوي =
Greater than أكبر من >
Greater than or equal to أكبر أو يساوي >=
Less than أقل من <
Less than or equal to أقل أو يساوي <=
Not equal to لا يساوي < >
Example :
SQL>Select ename , sal , comm
From emp
Where sal<=comm ;
عوامل مقارنة أخرى OTHER COMPARISON OPERATORS
Meaning المعنى Operator
Between tow values بين قيمتين Between…and…
Match any of a list of values يطابق مع كل قيمة ضمن القائمة List IN (list)
Mach a character pattern
يطابق نموذج الحرف LIKE
Is a null value كقيمة باطلة IS NULL
Examples :
SQL>Select empno , enam , mgr, deptno
From emp
Where ename in ('ford',allen') ;
Or Where sal between 1000 and 1500;
Or Where mgr in (7902,7566,7788) ;
Or Where mgr is null ;
استخدامات معامل LIKE Using The Like Operator
Meaning and De************ion المعنى والتوصيف Operator
(per cent) Represent any sequence of zero or more characters
تمثل أي سلسلة مكونة من عدة أحرف أو ولا حرف %
(under score) Represent any single characters
تمثل أي حرف وحيد _
Example :
SQL>select ename , hiredate
From emp
Where hiredate like '%81' ;
Or Where ename like '_ A%' ;
المعاملات المنطقية LOGICAL OPERATOTS
Meaning المعنى Operator
Returns true if both component condition is true
يعيد قيمة صحيحة عندما يكون كل من الشرطين صحيحاً AND
Returns true if either component condition is true
يعيد قيمة صحيحة عندما يكون أحد الشرطين صحيحاً OR
Returns true if the following condition is false
يعيد قيمة صحيحة عندما تكون العبارة خاطئة NOT
جدول الحقيقة للمعامل AND AND true table
Unknown False True AND
Unknown False True True
False False False False
Unknown False Unknown Unknown
Example :
SQL>select * from emp
Where sal >= 100
AND Job='clerk' ;
جدول الحقيقة للمعامل OR OR true table
Unknown False True OR
True True True True
Unknown False True False
Unknown Unknown True Unknown
Example :
SQL>select * from emp
Where sal >= 100
OR Job='clerk' ;
جدول الحقيقة للمعامل NOT NOT true table
Unknown False True NOT
Unknown True False
Example :
SQL>select * from emp
Where Job is NOT in ( 'clerk','manager' );
قوانين أسبقية المعاملات Rules of Precedence
Operator المعامل رقم الأولوية
All comparison operators
كافة معاملات المقارنة 1
NOT 2
AND 3
OR 4
Example :
SQL>select ename,job,sal
From emp
Where Job = 'salesman'
Or Job = 'president'
And sal > 1500 ;
عبارة Order By (Order by Clause ) :
اختيار الصفوف باستخدام عبارة Order By Sort rows with the order by clause
تأتي عبارة Order By في آخر عبارة الاختيار Select .
مثال : SQL>select ename , job , hiredate
from emp
Order By hiredate ;
تقوم عبارة Order By بترتيب طريقة ظهور الصفوف المسترجعة Order By specifies the order in witch the retrieved rows are displayed .if order by clause not used the sort order is undefined and the Oracle server may not fetch rows in the same order for the same query twice .
إذا لم تستخدم عبارة الترتيب Order By تصبح طريقة الترتيب غير محددة وربما لا يقوم مخدم أوراكل بإعادة نفس نتيجة الاستفسار بنفس الترتيب مرتين .
استخدام DESC مع عبارة الترتيب Order By (الترتيب بشكل تنازلي): Sorting with descending order
افتراضياً تقوم عبارة Order by بترتيب الصفوف بشكل تصاعدي وباستخدام DESC مع عبارة Order by يصبح الترتيب بشكل تنازلي .
طريقة الترتيب الافتراضية هي بشكل تصاعدي The default sort order is ascending .
مثال : SQL>select ename , job , hiredate
from emp
Order by hiredate DESC ;
Notices :
تظهر القيم الرقمية بدءاً بأقل قيمة ثم الأكبر والأكبر Numeric values are displayed with the lowest values first
تظهر قيم التواريخ حسب أبكر قيمة أولاً Date values are displayed with the earliest values first
تظهر القيم النصية حسب التسلسل الأبجدي Character values are displayed in alphabetical order
تظهر القيم الفارغة أخيراً في الترتيبات التصاعدية Null values are displayed last for ascending sequences
وأولاً في الترتيبات التنازلية and first for descending sequences
الترتيب وفق حقول متعددة أي حسب أكثر من عمود Sorting by Multiple columns
مثال : SQL>select ename , deptno , sal
from emp
Order by deptno , sal DESC ;
يمكنك الترتيب وفق عمود غير موجود ضمن قائمة الحقول المختارة You can sort by a column that is not in the select list .
يمكن الترتيب وفق عدد حقول موافق لعدد حقول الجدول المرتب The sort limit is the number of columns in the given table .
توابع SQL SQL Functions
معظم الدوال التالية مخصصة لنسخة الـ SQL التابعة لأوراكل حصراً
Most of the functions are specific to Oracle version of SQL .
نوعي دوال الـ SQL Two Types of SQL Functions
1. توابع وحيدة الصف 1-Single – Row Functions
2. توابع متعددة الصفوف 2-Multiple – Row Functions
1. التوابع وحيدة الصف : تعمل هذه التوابع بصف واحد فقط وتعيد نتيجة واحدة لكل صف
1-Single–Row Functions : These functions operate on single row only and return one
result per row.
2. التوابع متعددة الصفوف : وهي تركيب مجموعات من الصفوف تعطي نتيجة واحدة لكل مجموعة صفوف .
2- Multiple – Row Functions :these functions multiplate groups of rows to give one
result per group of rows .
الدوال الحرفية Character Functions
1. دوال تحويل الحالة 1-Case Conversion Functions : ( Lower , Upper , Initcap )
2-Character Manipulation Functions :( Concat , Substr ,Length , Instr, Lpad )
2. دوال معالجة الأحرف
الهدفPurpose Function
Convert alpha character values to lowercase يقوم بتحويل الرموز والأحرف إلى أحرف صغيرة Lower (اسم العمود)
Convert alpha character values to uppercase يقوم بتحويل الأحرف إلى أحرف كبيرة Upper(اسم العمود)
Convert alpha character values to uppercase for the first letter of each word and all other letters in lowercase يقوم بتحويل الحرف الأول من كل كلمة على حرف كبير وبقية الأحرف من كل كلمة صغيرة Initcap(اسم العمود)
الهدفPurpose Function
Concatenates the first character value to the second character value يقوم بدمج التعبير في العمود الأول بسلسلة واحدة مع التعبير في العمود الثاني ويمكن إضافة نص وهو مرادف للرمز || الذي رأيناه سابقاً Concat(اسم العمود1 , Expre.. …, اسم العمود2)
يقوم هذا التابع بالقص ابتداءً من الحرف رقم 6 وينتهي بعد 4 حروف بتعبير آخر
Count إذا لم يحدد العدد أي القيمةSubstr(column,start,count)
يعطينا الأحرف بدءاً منstart حتى نهاية الكلمة Substr(column,6,4)
Return the number of character in value يعيد عدد أحرف كل قيمة من قيم الحقل المحدد column Length(column)
يقوم بالبحث عن حرف أو كلمة ضمن سلسلة أحرف يمثل columnاسم الحقل وset الحرف أو مجموعة الأحرف المراد البحث عنها ويجب أن تكون بين فاصلتين علويتين وstart رقم الحرف الذي يبدأ منه البحث وn رقم التكرار لأننا قد نقوم بالبحث عن التكرار الثاني أو الرابع للحرف أو الكلمة Instr(column,'set',start,n)
يقوم بإضافة أحرف أو رموز إلى يسار الكلمة يمثل columnاسم الحقل و length طول السلسلة الحرفية المطلوب بعد الإضافة وset الحرف أو مجموعة الأحرف المراد إضافتها Lpad(column,length,'set')
يقوم بإضافة أحرف أو رموز إلى يمين الكلمة يمثل columnاسم الحقل و length طول السلسلة الحرفية المطلوب بعد الإضافة وset الحرف أو مجموعة الأحرف المراد إضافتها Rpad(column,length,'set')
ملاحظة : يجب التمييز بين الأحرف الكبيرة والصغيرة ضمن التوابع السابقة أي في حالة البحث عن حرف صغير فإننا لا نجده إذا كان بهيئة حرف كبير .
مثال 1 : SQL> select 'the job title for' || Initcap(ename) ||
'is' || Lower(Job) As Employee Details
from emp ;
مثال 2 : SQL> select Lpad(ename,10,'F')||Rpad(ename,10,'J')
As Name
from emp ;
مثال 1 : SQL>select ename , Instr(ename,'E',1,1)
As Number
from emp ;
1 الأولى تمثل رقم الحرف الذي يبدأ منه البحث وهنا يبدأ البحث من الحرف الأول و 1 الثانية تعبر عن رقم التكرار للحرف ويعيد التابع رقم مكان توضع الحرف المطلوب أو الكلمة المطلوبة والموضوعة ضمن فواصل علوية .
استخدام دالة التدوير (التقريب ) Using The Round Function
The round function rounds the column expression or value to n decimal places .
تقوم دالة التدوير بتقريب العدد إلى n فاصلة عشرية أو عدد عشري .
مثال 1 : SQL> select Round ( 45.923 , 2) , Round( 45.923 , -1 )
from dual ;
Round ( 45.923 , 0) = 46 , Round ( 45.923 , 2) = 45.92 , Round ( 45.923 , -1) = 50 ,
Round ( 499.923 , -2) = 500 , Round ( 45.923 , 1) = 45.9
If the second argument is 0 or is missing the value is rounded to zero decimal places . If the second argument is 2 the value is rounded to two decimal places . If the second argument is -2 the value is rounded to two decimal places to the left .
إذا كان المعامل الثاني لدالة التدوير مساوياً الصفر أو غير موجود يتم حذف الأرقام العشرية ويتم التقريب إلى أول رقم صحيح
وإذا كان المعامل الثاني لدالة التدوير مساوياً للعدد 2 يتم تقريب الرقم إلى أقرب رقمين بعد الفاصلة وفي حالة كون المعامل الثاني مساوياً لـ -2يتم تقريب الرقم منزلتين عشريتين إلى اليسار .
استخدام دالة القطع (البتر ) Using The TRUNC Function
The TRUNC function truncates the column expression or value to n decimal places .
تقوم دالة القطع بقطع العدد إلى n مرتبة أو فاصلة عشرية .
مثال 1 : SQL> select TRUNC ( 45.923 , 2) , TRUNC ( 45.923 , -1 )
from dual ;
TRUNC ( 45.923) = 45 , TRUNC ( 45.923 , 2) = 45.92 , TRUNC ( 45.923 , -1) = 40 ,
TRUNC ( 499.923 , -2) = 400 , Round ( 45.923 , 1) = 45.9
The TRUNC function works with arguments similar to those of the Round function . If the second argument is 0 or is missing the value is truncate to zero decimal places . If the second argument is 2 the value is truncate to two decimal places . If the second argument is -2 the value is truncate to two decimal places to the left .
تعمل دالة القطع تعمل نفس عمل دالة التدوير مع المعاملات إذا كان المعامل الثاني لدالة القطع مساوياً الصفر أو غير موجود يتم بتر الأرقام العشرية وإذا كان المعامل الثاني لدالة التدوير مساوياً للعدد 2 يتم قطع الرقم إلى أول رقمين بعد الفاصلة وفي حالة كون المعامل الثاني مساوياً لـ -2يتم القطع منزلتين عشريتين إلى اليسار .
استخدام دالة باقي القسمة (MOD) Using The MOD Function
The MOD function finds the remainder of value1 divided by value2 .
تقوم دالة باقي القسمة بإيجاد باقي قسمة القيمة1 على القيمة2 .
مثال 1 : SQL> select ename , sal , comm, MOD(sal , comm)
from dual
Where job = 'SALESMAN' ;
العمل مع التواريخ (Dates) Working with Dates
Oracle stores dates in an internal numeric format : century , year , month , day , hours ,minutes
, seconds . يخزن أوراكل التواريخ بشكل عددي داخلي : قرن, سنة , شهر , يوم , ساعات , دقائق , ثواني
الشكل الافتراضي للتاريخ هو DD-MON-YY The default date format is DD-MON-YY
SYSDATE إجراء يعيد التاريخ والوقت الحالي SYSDATE is a function returning current date an d time .
سنقوم باستخدام جدول يسمى DUAL لإظهار نتيجة هذا الإجراء وهو جدول وهمي فارغ يحتوي على حقل حرفي واحد باسم dummy .ويحتوي على قيمة وحيدة هي X يستخدم هذا الجدول لإعادة قيمة وحيدة وهو منشأ من قبل المستخدم SYSTEM
Valid oracle dates are between January 1.4712 B.C and December 31.9999 A.D
يمكنك استخدام التابع أو الإجراء SYSDATE مع أي جدول وذلك باستخدام عبارة select واختيار اسم للحقل الجديد أو بدون اسم SQL> select SYSDATE today from emp ;
أو SQL> select SYSDATE from dual ;
العمليات الحسابية على التواريخ Arithmetic With Dates
تشمل العمليات التالية :
إضافة أو حذف رقم من أو إلى تاريخ لإنتاج تاريخ -Add or subtract a number to or from a date for
a resultant date value
طرح تاريخين لإيجاد عدد الأيام بينهما -Subtract two dates to find the number of days
between those dates .
إضافة ساعات للتاريخ بتقسيم عدد الساعات على 24 -Add hours to a date by dividing the number of
hours by 24
يمكنك إنجاز العمليات الحسابية على التاريخ باستخدام المعاملات الحسابية كالجمع والطرح لأن التاريخ يخزن بشكل رقم كما يمكنك إضافة أو طرح رقم ثابت من وإلى التاريخ .
You can perform calculation using arithmetic operators such as additional and subtraction . You can add and subtract number constants as well as dates .
You can perform the following operations:
العمليةOperation Result النتيجة De************ion الوصف
Date + number Date إضافة عدد أيام إلى التاريخ
Date - number Date طرح عدة أيام من التاريخ
Date - Date Number of days طرح تاريخ من آخر
Date + number/24 Date إضافة عدد من الساعات إلى التاريخ
مثال 1 : SQL> select ename , (sysdate-hiredate)/ 7 weeks
from emp
Where deptno = 10 ;
يظهر هذا المثال أسماء وعدد أسابيع العمل لجميع الموظفين أو العمال في القسم رقم 10 لأن الفرق بين التاريخ الحالي الناتج عن التابع Sysdate وتاريخ الاستخدام للعامل Hiredate يعطي المدة الزمنية بالأيام وبالقسمة على 7 تكون النتيجة بالأسابيع .
DATE FUNCTIONS
FUNCTION DE************ION
MONTHS_BETWEEN(D1,D2) عدد الأشهر بين تاريخين D1 و D2
ADD_MONTHS(D1,n) إضافة n شهر إلى التاريخ D1
NEXT_DAY(DATE ,'CH') يعطينا تاريخ أول يوم اسمه CH بعد التاريخ Date
LAST_DAY(DATE) يعطي تاريخ آخر يوم من الشهر المذكور
ROUND(DATE , 'DAY' or 'MONTH' or 'YEAR' ) في حالة Day يقوم التابع بتقريب التاريخ إلى تاريخ أقرب يوم أحد من التاريخ الحالي وفي حالة Month يقوم بتقريب التاريخ إلى تاريخ أقرب أول شهر من التاريخ الحالي أما في حالة Year فإنه يقرب التاريخ إلى أقرب أول يوم من أقرب عام
TRUNC( DATE , 'DAY' or 'MONTH' or 'YEAR' ) في حالة Day يقوم التابع بتقريب التاريخ إلى تاريخ أقرب يوم أحد قبل التاريخ الحالي وفي حالة Month يقوم بتقريب التاريخ إلى تاريخ أقرب أول شهر قبل التاريخ الحالي أما في حالة Year فإنه يقرب التاريخ إلى تاريخ بداية العام الحالي
أمثلة عن استخدام توابع التواريخ :
مثال 1 : SQL> select empno , hiredate,
Months_between(sysdate,hiredate) Tenure,
Add_months(hiredate,6) Review ,
Next_day(hiredate,'Friday') , Last_day(hiredate)
from emp
Where Months_between(sysdate,hiredate )<200 ;
For all employees employed for fewer than 200 month .display the employee number ,hiredate , number of months employed , six-month review date , first Friday after hire date ,and last day of the month when hired .
من أجل جميع الموظفين الذين تم استخدامهم لأقل من 200 شهر قم بإظهار رقم الموظف وتاريخ الاستخدام (التوظيف) وعدد أشهر الاستخدام و تاريخ التوظيف مضاف إليه 6 أشهر وتاريخ أول يوم جمعة بعد الاستخدام وتاريخ آخر يوم من شهر الاستخدام
أمثلة : ROUND('25-JUL-95' , 'MONTH' ) →→→→ 01-AUG-95
ROUND('25-JUL-95' , 'YEAR' ) →→→→→ 01-JAN-96
TRUNC('25-JUL-95' , 'MONTH' ) →→→→ 01-JUL-95
TRUNC ('25-JUL-95' , 'YEAR' ) →→→→→ 01-JAN-95
مثال : SQL> select empno , hiredate,
Round (hiredate , 'MONTH') ,
Trunc ( hiredate , 'MONTH')
from emp
Where hiredate LIKE '%82' ;
Compare the hire dates for all employees who started in 1982 display the employee number ,hire date , and month started using the ROUND and TRUNC functions.
توابع التحويل CONVERSION FUNCTIONS
التحويل الضمني لأنواع البيانات Implicit Datatype Conversion
For assignments the Oracle can automatically convert the following :
من أجل المهام يستطيع أوراكل تحويل ما يلي بشكل أوتوماتيكي :
FROM TO
محرفيVARCHAR2 or CHAR رقمNUMBER
محرفيVARCHAR2 or CHAR تاريخDATE
رقمNUMBER VARCHAR2 محرفي
تاريخDATE VARCHAR2 محرفي
الفرق بين CHAR و VARCHAR2 أن العرض الأعظمي لعمود من النمط CHAR 2000 محرف أما العرض الأعظمي لعمود من النمط VARCHAR2 فيصل إلى 4000 محرف .
For expression evaluation the Oracle Server can automatically convert the following :
من أجل عبارة التقدير يستطيع أوراكل تحويل ما يلي بشكل أوتوماتيكي :
FROM TO
محرفيVARCHAR2 or CHAR رقمNUMBER
محرفيVARCHAR2 or CHAR تاريخDATE
NOTE: CHAR to NUMBER conversions succeed only if the character string represents a valid number .
CHAR to DATE conversions succeed only if the character string has the default format DD-MON-YY
يتم التحويل التلقائي من المحارف إلى الأرقام بنجاح في حالة كون المحارف بصورة أرقام كما يتم التحويل التلقائي الضمني من المحارف إلى التاريخ عندما يكون لسلسلة المحارف الشكل الافتراضي للتاريخ DD-MON-YY .
التحويل الصريح لأنواع البيانات Explicit Datatype Conversion
SQL provides three functions to convert a value from one datatype to another :
تحوي لغة الـSQL. ثلاثة دوال تحويل لأنواع البيانات وهي :
FUNCTION الدالة Purpose الهدف
TO_CHAR(number or date ,'fmt') Converts number or date value to a VARCHAR2 character string
with format model 'fmt'
تحويل الأرقام أو التواريخ إلى سلسلة محرفية من الشكل 'fmt'
TO_NUMBER(char , 'fmt' ) Converts a character string containing digits to a number with the optional format model 'fmt'
تحويل السلسلة المحرفية التي تحتوي أرقام إلى رقم من الشكل 'fmt'
TO_DATE(char , 'fmt' ) Converts a character string representing a date to a date value according to the fmt specified ( If fmt is omitted format is DD-MON-YY)
تحويل السلسلة الحرفية التي تمثل التاريخ إلى قيمة تاريخ حسب الشكل fmt ( بحيث يكون شكل النمط fmt بالشكل الافتراضي لأوراكل وهو DD-MON-YY )
TO_CHAR Function with dates TO_CHAR (date , 'fmt' ) to display date in a specific format .
The format model fmt must be enclosed in single quotation marks and is case sensitive and separated
From the date value by a comma
يجب أن تكون صيغة التاريخ المطلوبة fmt محصورة بين علامتي اقتباس مفردتين ' fmt ' و مفصولة عن التاريخ بفاصلة .
مثال : SQL> select empno , TO_CHAR( hiredate , 'MM/YY' ) Month_Hired
from emp
Where ename = ' BLAKE ' ;
عناصر نموذج شكل التاريخ Elements of Date Format Model
Element De************ion
YYYY Full year in numbers كامل التاريخ بالأرقام
YEAR Year spelled out التاريخ مكتوب بالكلمات
MM Two digit value for month قيمة التاريخ من رقمين
MONTH Full name of the monthاسم الشهر كامل
DY Three letter abbreviation of the day of the weekثلاثة أحرف اختصار من اسم اليوم
DAY Full name of the day اسم اليوم كاملاً
SCC or CC Century prefixes BC date with القرن الذي يقع التاريخ ضمنه
Y,YYY Year with a comma in the position رقم العام مع فاصلة بنفس الموضع
YYY or YY or Y Last three ,two , or one digits of year آخر 3 أرقام أو رقمين أو رقم من العام
SYYYY رقم العام مع وجود الإشارة مثل 1000 B.C هو -1000
IYYY or IYY or IY or I Four ,three ,two or one digit year based on the ISO standard .
أربع أو ثلاث خانات أو خانتين أو خانة واحدة للعام من المقياس ISO
BC or AD BC or AD indicator - يظهر المؤشرBC أو AD بحسب التاريخ و لهما نفس العمل
B.C. or A.D. BC or AD indicator with Periods – نفس السابق مع علامات توقف (نقاط)
Q Quarter of year – رقم الربع من العام الذي يقع
MON اسم الشهر ثلاثة أحرف اختصار Three letter abbreviation -
RM رقم الشهر بالترميز الروماني Roman mineral month -
WW or W رقم الأسبوع في السنة أو الشهر – Week of year or month
DDD or DD or D رقم اليوم في السنة أو الشهر أو الأسبوع Day of year ,month , or day -
J عدد الأيام منذ 31 كانون الأول عام 4713 قبل الميلاد
Use the formats listed in the following tables to display time information and literals and to change numerals to spelled numbers
استخدم قائمة الأشكال الموجودة في الجدول التالي لإظهار معلومات الوقت والأحرف و تحويل الأعداد إلى أرقام مقروءة
Element De************ion
AM or PM مؤشر منتصف النهار – Meridian indicator
A.M. or P.M. مؤشر منتصف النهار مع علامات توقف - Meridian indicator with periods
HH or HH12 or HH24 الساعة في اليوم و ترميز اليوم 12 ساعة (1-12) أو 24 ساعة (0-24)
MI الدقيقة في الساعة (0-59 )
SS الثانية في الدقيقة ( 0-59)
SSSSS عدد الثواني منذ منتصف الليل - Seconds past midnight
TH لاحقة لعدد ما مثل (Ordinal number - ( 4TH – 24TH
SP لاحقة لعدد تجبره على كتابة العدد بشكل نص – Spelled out number ( DDSP for FOUR)
SPTH or THSP لاحقة تركيبية تجمع بين الاثنين Spelled out number (DDSPTH for FOURTH )
استخدام تابع التحويل To_Char مع التواريخ Using the TO_CHAR Function with dates
مثال : SQL> select ename ,
TO_CHAR( hiredate , 'MM/YY' ) Month_Hired
from emp ;
Example : Modify the slide example to display the dates in a format that appears as Seventh of February 1981 08:00:00 AM .
حول التاريخ ليظهر بالشكل Seven of February 1981 08:00:00 AM
SQL> select ename ,
TO_CHAR(hiredate , ‘fmDdspth “of” Month yyyy fmHH:MI:SS AM’ )
From emp ;
استخدام تابع التحويل To_Char مع الأعداد TO_CHAR Function with Numbers
TO_CHAR(number , ‘fmt’ )
Use these formats with the TO_CHAR function to display a number value as a character:
استخدم الأشكال التالية مع التابع TO_CHAR لتظهر القيم الرقمية كأحرف :
9 Represents a number تمثل الرقم
0 Forces a zero to displayed تجبر الصفر على الظهور
$ Places a floating dollar sign يظهر علامة الدولار
L Use the floating local currency symbol رمز الفاصلة العائمة
. Prints a decimal point يطبع الفاصلة العشرية
, Prints a thousand indicator يطبع مؤشر الآلاف
مثال : SQL> select TO_CHAR( sal , ‘$99,999 ‘ ) SALARY
FROM emp
Where ename = ‘SCOTT’ ;
When working with number values such as a character string you should convert those numbers to the character datatype using the TO_CHAR function which translates a value of NUMBER datatype to VARCHAR2 datatype . This technique is specially useful with concatenation .
عند العمل مع القيم الرقمية على أنها أحرف عليك تحويل تلك الأرقام إلى النمط الحرفي باستخدام التابع TO_CHAR والذي يحول نمط البيانات العددية إلى النمط الحرفي VARCHAR2 وهذه التقنية مفيدة بشكل خاص في السلاسل .
TO_NUMBER and TO_DATE Functions
Convert a character string to a number format using the TO_NUMBER function .
تحويل السلسلة الحرفية إلى هيئة رقمية باستخدام التابع TO_NUMBER TO_NUMBER(char , ‘fmt’)
Convert a character string to a date format using the TO_DATE function .
TO_DATE(char , ‘fmt’ ) تحويل السلسلة الحرفية إلى هيئة تاريخ باستخدام التابع
مثال : SQL> select ename , hiredate
FROM emp
Where hiredate = TO_DATE( ‘February 22 ,1981 ‘ ,’Month dd , YYYY’) ;
تابع تعويض القيمة الخالية NVL function
يحول القيمة الخالية إلى قيمة حقيقية Convert null to an actual value
أنواع المعطيات التي يستخدم معها التواريخ والأحرف والأرقام Datatypes that can be used are date, character, and number.
EX: NVL(comm,0) , NVL(hiredate,’01-JAN-97’) , NVL(job ,’No Job Yet’)
مثال : SQL> select ename , sal , comm , (sal*12)+NVL(comm.,0)
FROM emp ;
Note: If any column value in an expression is null the result is null .
إذا كانت القيمة في أي عمود خالية وأجرينا عليها عملية حسابية تنتج لدينا القيمة الخالية .
تابع البحث والمطابقة وإجراء العمليات بشكل منفصل DECODE function
DECODE(Value , if 1 ,then 1, if 2 , then 2 , if 3 , then 3 ,….,else ) الشكل العام
The DECODE function decodes an expression in a way similar the IF-THEN-ELSE logic used in various ********s . The DECODE function decodes expression after comparing it to each search value . If the expression is the same as search result is returned .If the default value is omitted a null value is returned where a search value dose not mach any of the result values .
يقوم التابع DECODE بحل العبارة الجبرية بطريقة مشابهة لعبارة IF-THEN-ELSE المنطقية والتي تستعمل بشكل في لغات متنوعة . يحل التابع العبارة الجبرية بعد مقارنتها مع كل قيمة من قيم البحث إذا كان التعبير مطابق لقيمة البحث يعيد قيمة . أما إذا كانت القيمة الأصلية محذوفة أو فارغة تعاد قيمة فارغة وذلك عندما لا تتطابق قيمة البحث مع أي قيمة من قيم البحث .
مثال : SQL> select job , sal
DECODE( job, 'ANALYST’ , sal*1.1 ,
‘CLERK’ , sal*1.15 ,
‘MANAGER’ , sal*1.20 ,
sal )
REVISED_SALARY
FROM emp ;
Display the applicable tax rate for each employee in department 30 .
استعراض معدل الضريبة الملائم لكل موظف في القسم 30 .
مثال : SQL> select ename , sal
DECODE(TRUC(sal/1000,0) ,
0 , 0.00 ,
1 , 0.09 ,
2 , 0.20 ,
3 , 0.30 ,
4 , 0.40 ,
5 , 0.42 ,
6 , 0.44 ,
0.45 ) TAX_RATE
FROM emp
WHERE deptno = 30 ;
NESTING FUNCTIONS SAMPLES أمثلة عن التوابع المتداخلة
مثال1 : SQL> select ename ,
NVL(TO_CHAR(mgr) , ‘No Manager’)
From emp
Where mgr Is NULL ;
مثال2 : SQL> select TO_CHAR(NEXT_DAY(ADD_MONTHS
(hiredate , 6 ) , ‘FRIDAY’ ) ,
‘fmDAY , Month ddth , YYYY)
“ Next 6 Month Review “
From emp
Order By hiredate ;
Displaying data from multiple tables عرض البيانات من جداول متعددة
-Write SELECT statements to access data from more than one tables using equality and none quality joins
View data that generally does not meet a join condition by using outer joins .
Join a table to itself
كتابة عبارة الاختيار SELECT للوصول إلى البيانات من أكثر من جدول باستخدام الربط المتساوي وغير المتساوي .
عرض البيانات التي لا تلتقي عادة بشرط ربط باستخدام الروابط الخارجية .
ربط الجدول بنفسه
Use a join to query data from more than one table استخدام الربط للاستفسار عن البيانات من أكثر من جدول
SELECT table1.column , table2.column
FROM table1 , table2
WHERE table1.coulumn1 = table2.coulumn2 ;
Write the join condition in the WHERE clause قم بكتابة شرط الربط ضمن عبارة WHERE
Prefix the column name with the table name when the same column name appears in more than one table .
يجب أن يسبق اسم الحقل اسم الجدول المحتوى ضمنه إذا كان الحقل يظهر أو موجود في أكثر من جدول .
أنواع الربط Types of Joins
هناك نوعان رئيسيان من حالات الربط : There are two main types of join conditions:
- الربط المتساوي . - Equijoins .
- الربط الغير متساوي . - Non-equijoins .
تتضمن طرق الربط الإضافية ما يلي : Additional join methods include the following :
+ الربط الخارجي . + Outer joins .
+ الربط الذاتي . + Self joins .
+ مجموعة المشغلات . + Set operators .
الربط المتساوي (الداخلي )Equijoins or Inner Joins :
يجب أن يكون هناك حقل مشترك على الأقل بين الجدولين المرتبطين بحيث تكون القيم في الحقول المتقابلة متساوية من كلا الجدولين . هذا النوع من الربط يشكل تتمة للمفتاح الأساسي والثانوي .
استرجاع السجلات مع الربط المتساوي Retrieving records with Equijoins
مثال : SQL> select emp , empno , emp.ename , emp.deptno ,
Dept.deptno , dept.loc ,
From emp , dept
Where emp.deptno=dept.deptno ;
The Where clause specifies how the tables are to be joined .
Additional search conditions Using the AND operator حالات بحث إضافية باستخدام المعامل AND
In addition to the join , you may have criteria for your WHERE clause .
بالإضافة إلى الربط قد تحتاج إلى بعض المعايير من أجل عبارة WHERE .
مثال : SQL> select empno , ename , emp.deptno , loc
FROM emp , dept
WHERE emp.deptno = dept.deptno
AND INITCAP(ename) = ‘king’ ;
استخدام الأسماء المستعارة للجداول Using Table Aliases
تبسيط الاستعلامات باستخدام الأسماء المستعارة للجداول Simplify queries by using table aliases .
You can use table aliases instead of table names . Just as a column aliases gives a column another name .a table aliases give a table another name . Table aliases help to keep SQL code smaller , therefore using less memory.
يمكنك استخدام اسم مستعار للجدول بدلاً من اسم الجدول تماماً مثل الأسماء المستعارة للحقول أو الأعمدة . تساعد الأسماء المستعارة للجداول في جعل كود الـ SQL أصغر والذي يستعمل ذاكرة أقل .
مثال : SQL> select emp.empno , emp.ename , emp.deptno ,
Dept.deptno , dept.loc
FROM emp , dept
WHERE emp.deptno = dept.deptno ;
بغد تطبيق الأسماء المستعارة على الجداول يصبح المثال السابق بالشكل التالي :
مثال : SQL> select e.empno , e.ename , e.deptno ,
d.deptno , d.loc
FROM emp e , dept d
WHERE e.deptno = d.deptno ;
الربط لأكثر من جدولين Join more than two tables
مثال : SQL> select c.name , i.itemid , i.itemotot , o.total ,
FROM customer c , ord o , item i
WHERE c.custid = o.custid
AND o.ordid = i.ordid
AND c.name = ‘TKP SPORT SHOP’ ;
حيث الجداول بالشكل التالي :
الربط الغير متساوي Non-Equijoins :
لا يشترط وجود حقل أو أكثر متساوي من الجدولين ولكن يوجد علاقة ما بين حقل أو أكثر من الجدول الأول و حقل أو أكثر من الجدول الثاني و هذه العلاقة ليست مساواة .
The relationship between tables is obtained using an operator other than equal (= ) .
استرجاع السجلات مع الربط الغير متساوي Retrieving records with Non-Equijoins
في المثال التالي لدينا جدولين الأول EMP والثاني SALGRADE وتوجد علاقة بين الحقل SAL من الجدول EMP والحقلين LOSAL وHISAL وهي أن أي قيمة في الحقل SAL تقع بين القيمتين LOSAL و HISAL .
مثال : SQL> select e.ename , e.sal , s.grade ,
From emp e , salgrade s
Where e.sal
Between s.losat and s.hisat ;
الربط الخارجي Outer joins :
You use an Outer join to also see rows that does not usually meet the join condition .
Outer join operator is the plus sign ( + ) .
يستخدم الربط الخارجي لإظهار الصفوف التي لا تظهر لأنها لا تحقق شرط الربط وكمثال على ذلك المثال القادم إذا استخدمنا الربط المتساوي وأردنا معرفة أسماء الموظفين وأقسامهم من الجدولين DEPT وEMP بحيث يتساوى رقم القسم DEPTNO من الجدول الأول مع رقم القسم من الثاني نجد أن قسم العمليات OPERATIONS ورقمه لا يظهران لدينا في نتيجة الاستعلام وذلك لعدم وجود أشخاص يعملون في ذلك القسم وبالتالي رقم القسم في جدول الموظفينEMP غير موجود وفي حالة أردنا ظهور رقم القسم نستخدم الربط الخارجي والذي يستخدم المعامل ( + ) كما يلي :
مثال : باستخدام الربط المتساوي SQL> select e.ename , e.deptno , d.dname ,
From emp e , dept d
WHERE e.deptno = d.deptno ;
مثال : و باستخدام الربط الخارجي يصبح كما يلي : SQL> select e.ename , d.deptno , d.dname
From emp e , dept d
WHERE e.deptno(+) = d.deptno
ORDER BY e.deptno ;
الربط الذاتي Self joins (Join the table to itself) :
تحتاج في بعض الأحيان إلى ربط الجدول بنفسه فمثلاً لإيجاد اسم مدير كل موظف من الجدول عليك ربط الجدول EMP بنفسه بالشكل التالي حيث MANAGER , WORKER أسماء مستعارة للجدول نفسه EMP :
SQL> select worker.ename||’ works for ‘||manager.ename
From emp worker , emp manager
Where worker.mgr = manager.empno ;
Aggregating Data Using Group Functions: تحصيل البيانات باستخدام توابع قيمة المجموعة
Group functions: Unlike single-row functions operate on sets of rows to give one result per group . These sets may be the whole table or the table split into groups.
توابع قيمة المجموعة : لا تشبه التوابع وحيدة الصف وهي تؤثر على مجموعات من الصفوف لتعطي نتيجة واحدة لكل مجموعة ولكن هذه المجموعات ممكن تكون الجدول كاملاً أو الجدول مقسم إلى مجموعات .
أنماط من توابع قيمة المجموعة Types of Group Functions
Function De************ion
AVG( [DISTICT|ALL] n ) Average value of n ignoring null values
قيمة المتوسط لـn قيمة ويقوم بتجاهل القيم الفارغة
COUNT( * [DISTICT|ALL] expr ) Number of rows where expr evaluates to something other than null ( Count all selected rows using * , including duplicates and rows with nulls )
يعيد هذا التابع عدد الصفوف في حال كانت القيم مغايرة للقيمة الفارغة null (استخدم * مع التابع ليعيد عدد كل الصفوف إضافة إلى الصفوف المكررة والقيم الفارغة NULL )
MAX( [DISTICT|ALL] expr ) Maximum value of expr , ignoring null values .
أكبر قيمة من قيم expr ويتجاهل القيم الفارغة
MIN( [DISTICT|ALL] expr ) Minimum value of expr , ignoring null values
أصغر قيمة من قيم expr ويتجاهل القيم الفارغة
STDDEV( [DISTICT|ALL] x ) Standard deviation of n ignoring null values
الانحراف المعياري لـn قيمة يتجاهل القيم الفارغة
SUM( [DISTICT|ALL] n ) Sum values of n , ignoring null values
مجموع n قيمة ويتجاهل القيم الفارغة
VARIANCE( [DISTICT|ALL] x ) Variance of n , ignoring null values
التباين لـ n قيمة ويتجاهل القيم الفارغة
Distinct makes the function consider only nonduplicate values ; ALL makes it consider every value including duplicates . The default is ALL and therefore does not need to be specified .
The datatypes for the arguments may be CHAR, VARCHAR2, NUMBER, DATE where exp is listed.
All group functions except COUNT( * ) ignore null values .To substitute a value for null values . use the NVL function .
The Oracle Server implicitly sorts the result set in ascending order when using a GROUP BY clause. To override this default ordering. DESC can be used in the ORDER BY clause.
الأمر Distinct يجعل التابع يأخذ بعين الاعتبار القيم الغير مكررة فقط . أما ALL فيجعل التابع يأخذ بعين الاعتبار كل قيمة بما فيها القيم المكررة . ALL عبارة عن أمر افتراضي ولذلك لست بحاجة لإدخاله.
أنماط البيانات يمكن أن تكون أي من التالي CHAR , VARCHAR2 , NUMBER , DATE وذلك حسب التعبيرexpr .
جميع توابع قيمة المجموعة ما عدا COUNT( * ) تتجاهل القيم الفارغة null ولكي تقوم باستبدال القيم الفارغة عليك استخدام تابع الاستبدال NVL .
يقوم مزود أوراكل بشكل ضمني بترتيب مجموعة النتائج بشكل تصاعدي عندما تقوم باستخدام عبارة الترتيب ORDER BY وحتى تقوم بتغيير نمط الترتيب الافتراضي عليك باستخدام الأمر DESC مع عبارة الترتيب ORDER BY .
أمثلة : SAMPLES :
مثال : SQL> select AVG(sal), MAX(SAL), MIN(sal), MAX(sal)
From emp
WHERE job LIKE 'SALES%' ;
مثال : SQL> select MIN(ename), MAX(ename)
From emp ;
باستخدام التابعين MAX و MIN مع البيانات الحرفية تكون النتيجة حسب الترتيب الأبجدي كما في المثال السابق يكون الناتج كما يلي :
مثال : SQL> select MIN(hiredate), MAX(hiredate)
From emp ;
مثال : SQL> select COUNT( * )
From emp
WHERE deptno = 30 ;
مثال : SQL> select COUNT( comm )
From emp
WHERE deptno = 30 ;
مثال : SQL> select COUNT( deptno )
From emp ;
مثال : SQL> select COUNT(DISTINCT( deptno) )
From emp ;
Group functions ignore null values in the column. تتجاهل توابع قيمة المجموعة القيمة الفارغة لكن لا تتجاهل الصفر
مثال :قيمة المتوسط الحسابي للعمود COMM SQL> select AVG ( comm. )
From emp ;
The NVL function forces group functions to include null values.
يجبر التابع NVL توابع التصنيف بأن تتضمن القيمة الفارغة كما في المثال التالي .
مثال : باستخدام الربط المتساوي SQL> select AVG ( NVL (comm. ))
From emp ;
Creating Groups of DATA: GROUP BY Clause
إنشاء مجموعات بيانات باستخدام عبارة التجميع GROUP BY :
You can use the GROUP BY clause to divide the rows in a table into groups. You can then use the group functions to return summary information for each group.
يمكنك استخدام عبارة GROUP BY لتقسيم الصفوف ضمن الجدول إلى مجموعات . يمكنك عندها استخدام توابع المجموعة لتحصل على خلاصة معلومات عن كل مجموعة .
You must include the columns in the GROUP BY clause.
You cannot use the column alias in the GROUP BY clause.
يجب تضمين الأعمدة في عبارة GROUP BY كما لا يمكنك استخدام الأسماء المستعارة معها .
All columns in the SELECT list that are not in group functions must be in the GROUP BY clause.
جميع الأعمدة المذكورة في قائمة عبارة الاختيار SELECT والتي لم تطبق عليها التوابع السابقة يجب أن تذكر ضمن عبارة GROUP BY كما في المثال التالي :
مثال : SQL> select deptno , AVG ( sal )
From emp
GROUP BY deptno ;
The GROUP BY column does not have to be in the SELECT list .
ليس من الضروري أن يكون العمود المذكور في عبارة GROUP BY موجوداً ضمن قائمة الأعمدة المذكورة في عبارة SELECT .
مثال : SQL> select AVG ( sal )
From emp
GROUP BY deptno ;
You can use the group function in the ORDER BY clause.
يمكنك استخدام توابع التصفية ضمن عبارة GROUP BY .
مثال : SQL> select deptno, AVG ( sal )
From emp
GROUP BY deptno
ORDER BY AVG(SAL) ;
Using the GROUP BY Clause on Multiple Columns
استخدام عبارة GROUP BY مع أعمدة متعددة :
You can return summary results for groups and subgroups by listing more than one GROUP BY column You can determine the default sort order of the results by the order of columns in the GROUP BY clause
يمكنك الحصول على ملخص عن المجموعات والمجموعات الثانوية بإدخال أكثر من عمود ضمن عبارة GROUP BY .
كما يمكنك أن تقوم بتغيير طريقة الترتيب الافتراضية للنتائج بترتيب الأعمدة ضمن عبارة GROUP BY .
مثال : SQL> select deptno, job, SUM ( sal )
From emp
GROUP BY deptno, job ;
Any column or expression in the SELECT list that is not an aggregate function must be in the GROUP BY clause.
أي عمود أو تعبير ضمن قائمة عبارة SELECT وليس تابع تجميع يجب أن يكون موجوداً ضمن عبارة GROUP BY وإلا ينتج خطأ ويكون عليك تصحيحه ليصبح مثل المثال التالي :
مثال : SQL> select deptno, COUNT ( ename )
From emp
GROUP BY deptno ;
You cannot use the WHERE clause to restrict groups.
You use the HAVING clause to restrict groups.
ليس بإمكانك استخدام عبارة WHERE من أجل تقييد المجموعات ولكنك تستخدم بدلاً عنها عبارة HAVING .
تعمل تعليمة HAVING عملاً مشابهاً لعمل تعليمة WHERE مع الفرق أنها مرتبطة بنتيجة تنفيذ توابع مجموعة أي أنها تأثي مع توابع المجموعة وعبارة GROUP BY كما يلي :
مثال : SQL> select deptno, AVG ( sal )
From emp
GROUP BY deptno
HAVING AVG (sal) > 2000 ;
Excluding Group Results: HAVING Clause
استخدام عبارة HAVING لاستثناء مجموعات من النتائج:
You use the HAVING clause to specify which groups are to be displayed. Therefore you further restrict the groups on the basis of aggregate information.
تستخدم عبارة HAVING لتخصيص المجموعات التي نريد إظهارها ولذلك من المستحسن حصر المجموعات ضمن معلومات التجميع .
مثال : SQL> select deptno, MAX ( sal )
From emp
GROUP BY deptno
HAVING MAX (sal) > 2000 ;
You can use the GROUP BY clause without using a group function in the SELECT list.
If you restrict rows based on the result of a group function. You must have a GROUP BY clause as well as the HAVING clause.
بإمكانك استخدام عبارة GROUP BY بدون استخدام تابع تجميع ضمن عبارة SELECT .
إذا كنت تريد تقييد الصفوف ضمن نتيجة تابع التجميع عليك أن تستخدم GROUP BY بالإضافة إلى عبارة HAVING .
مثال : SQL> select deptno, AVG ( sal )
From emp
GROUP BY deptno
HAVING MAX (sal) > 2900 ;
مثال : SQL> select job, SUM ( sal ) PAYROLL
From emp
WHERE job not like 'sales%'
GROUP BY job
HAVING SUM (sal) > 5000
ORDER BY SUM(sal) ;
Nesting Group Functions تداخل توابع قيمة المجموعة
مثال : SQL> select MAX(AVG ( sal ) )
From emp
GROUP BY deptno ;
Subqueries الاستفسارات الجزئية
Select select_list الصيغة العامة
From table
Where expr operator
(select select_list
From table ) ;
The subquery (inner query ) executes once before the main query .
The result of the subquery is used by the main query (outer query).
الاستفسار الجزئي (الداخلي ) ينفذ أولاً قبل الاستفسار الرئيسي.
تستخدم نتيجة الاستفسار الجزئي أو الداخلي من قبل الاستفسار الرئيسي أو الخارجي.
A subquery is a SELECT statement that is embedded in a clause of another SELECT statement. You can build powerful statements out of simple ones by using subqueries. They can be very useful when you need to select rows from a table with a condition that depends on the data in the table itself.
الاستفسار الجزئي هو عبارة SELECT مغلفة بعبارة SELECT أخرى. يمكنك بناء عبارات فعالة خارج عبارات بسيطة باستخدام الاستفسارات الجزئية.تكون مفيدة جداً عندما تريد اختيار صفوف من جدول مع شرط يعتمد على بيانات التابع نفسه.
مثال : SQL> Select ename
From emp
WHERE sal >
( SELECT sal
From emp
WHERE empno = 7566 ) ;
Guidelines for Using Subqueries إرشادات عامة لاستخدام الاستفسارات الجزئية
• Enclose subqueries in parentheses.
• Place subqueries on the right slide of the comparison operator.
• Do not add an ORDER BY clause to a subquery.
• Use single-row operators with single-row subquery.
• Use multiple-row operators with multiple-row subqueries.
• قم بوضع الاستعلامات الجزئية ضمن أقواس .
• قم بوضع الاستعلامات الجزئية في الجهة اليمنى من معاملات المقارنة.
• لا تقم بإضافة عبارة ORDER BY إلى الاستفسار الجزئي.
• استخدم المعاملات وحيدة الصف مع الاستعلام الجزئي وحيد الصف.
• استخدم المعاملات متعددة الصفوف مع الاستعلامات الجزئية متعددة الصفوف.
Types of subqueries أنماط الاستفسارات الجزئية
Single-row subquery: query that return only one row from the inner SELECT statement.
Multiple-row subquery: query that return more than one row from the inner SELECT statement.
Multiple -column subquery: query that return more than one column from the inner SELECT statement.
الاستفسار الجزئي الوحيد الصف : هو استفسار يعيد صف واحد فقط من عبارة SELECT الداخلية .
الاستفسار الجزئي متعدد الصفوف : هو استفسار يعيد أكثر من صف من عبارة SELECT الداخلية .
الاستفسار الجزئي متعدد الأعمدة : هو استفسار أكثر من صف من عبارة SELECT الداخلية .
Single-row subqueries: الاستفسار الجزئي وحيد الصف
Use single-row comparison operators قم باستخدام معاملات المقارنة وحيدة الصف
Meaning المعنى Operator
Equal toيساوي =
Greater than أكبر من >
Greater than or equal to أكبر أو يساوي >=
Less than أقل من <
Less than or equal to أقل أو يساوي <=
Not equal to لا يساوي < >
مثال : قم بعرض الموظفين الذين يطابق عملهم عمل الموظف رقم 7369
SQL> Select ename, job
From emp
WHERE job =
(select job
From emp
WHERE empno = 7369 ) ;
مثال : : قم بعرض الموظفين الذين يطابق عملهم عمل الموظف رقم 7369 و رواتبهم تساوي راتب الموظف رقم 7876
SQL> Select ename, job
From emp
WHERE job =
(select job
From emp
WHERE empno = 7369 )
AND SAL >
(select sal
From emp
WHERE empno = 7876 ) ;
استخدام توابع التجميع ضمن الاستفسار الجزئي Using Group Functions in a subquery
مثال :
SQL> Select ename, job, sal
From emp
WHERE sal =
(select MIN(sal)
FROM emp );
استخدام عبارة HAVING مع الاستفسار الجزئي HAVING clause with subqueries
The Oracle Server executes subqueries first.
The Oracle Server returns results into the HAVING clause of the main query.
يقوم مزود أوراكل بإنجاز الاستفسارات الجزئية أو الداخلية أولاً.
يعيد مزود أوراكل النتائج إلى عبارة HAVING التابعة للاستفسار الرئيسي (الخارجي).
مثال :
SQL> Select deptno, MIN( sal)
From emp
GROUP BY deptno
HAVING MIN(sal) >
(select MIN(sal)
FROM emp
WHERE deptno = 20 );
مثال : أوجد العمل الموافق لأقل معدل راتب : Find the job with the lowest average salary
SQL> Select job, AVG( sal)
From emp
GROUP BY job
HAVING AVG(sal) =
(select MIN(AVG(sal))
FROM emp
GROUP BY job );
مثال خاطئ : الخطأ في المثال التالي أننا استخدمنا معامل وحيد الصف مع استفسار جزئي متعدد الصفوف هذا يعني أن الاستفسار الداخلي سوف يعيد أكثر من صف : SQL> Select empno, ename
From emp
WHERE sal =(select MIN(sal) FROM emp
GROUP BY deptno );
الاستفسارات الجزئية متعددة الصفوف (التي تعيد أكثر من صف) Multiple-Row Subqueries
Meaning المعنى Operator
Equal to any member in the list
مساوٍ لأي قيمة ضمن القائنة IN
Compare value to each value returned by the subquery
يقارن القيمة مع أي قيمة من القيم المعادة من قبل الاستفسار الجزئي ANY
Compare value to every value returned by the subquery
يقارن القيمة مع كل قيمة معادة من قبل الاستفسار الجزئي ALL
Use Multiple-row comparison operators قم باستخدام معاملات المقارنة متعددة الصفوف
Subqueries that return more than one row are called Multiple-row subqueries. You use a multiple-row operator instead of single row operator. With a multiple-row subquery. The multiple-row operator expects one or more value.
تسمى الاستفسارات الجزئية التي تعيد أكثر من صف بالاستفسارات متعددة الصفوف. تستخدم المعاملات متعددة الصفوف بالإضافة إلى المعاملات وحيدة الصف مع الاستفسارات متعددة الصوف. المعاملات متعددة الصفوف تتوقع قيمة أو أكثر.
يقوم المعامل IN بالمقارنة مع كل قيمة من القيم المعادة من الاستفسار الجزئي ويعيد كل نتيجة على حدة .
استخدام المعامل IN مع الاستفسارات الجزئية متعددة الصفوف Using IN operator in Multiple-Row Subqueries
يقوم المعامل IN بالمقارنة مع كل قيمة من القيم المعادة من الاستفسار الجزئي ويعيد كل نتيجة على حدة
مثال : أوجد العامل الذي يحصل على أقل راتب في كل قسم:
SQL> Select ename, sal, deptno
From emp
WHERE sal IN
(select MIN (sal)
FROM emp
GROUP BY deptno );
استخدام المعامل ANY مع الاستفسارات الجزئية متعددة الصفوف Using ANY operator in Multiple-Row Subqueries
يقوم المعامل ANY بالمقارنة مع كل قيمة من القيم المعادة من الاستفسار الجزئي ويعيد كل نتيجة على حدة
مثال : SQL> Select empno, ename, job
From emp
WHERE sal < ANY
(select sal
FROM emp
WHERE job = 'CLERK' )
AND job <> 'clerk' ;
استخدام المعامل ALL مع الاستفسارات الجزئية متعددة الصفوف Using ALL operator in Multiple-Row Subqueries
يقوم المعامل ALL بالمقارنة مع كل القيم المعادة من الاستفسار الجزئي .
مثال : قم بعرض رقم الموظف واسمه و عمله للموظفين الذين تكون رواتبهم أكبر من معدل الرواتب لكل قسم
SQL> Select empno, ename, job
From emp
WHERE sal > ALL
(select AVG( sal)
FROM emp
GROUP BY deptno );
الفرق بين المعاملات : مع المعامل IN يقوم الاستفسار الرئيسي بالمقارنة مع كل قيمة من القيم المعادة ويعيد النتائج المطابقة لكل قيمة من قيم القائمة التي يعيدها الاستفسار الجزئي أما مع المعامل ANY فيقوم الاستفسار الرئيسي بالمقارنة مع كل قيمة من القيم المعادة على حدة ويعيد النتائج بشكل منفصل لكل قيمة من القيم التي يعيدها الاستفسار الجزئي أما مع المعامل ALL فيقوم الاستفسار الرئيسي بالمقارنة مع كل القيم المعادة مجتمعة ويعيد النتائج التي تحقق الشرط على جميع القيم التي يعيدها الاستفسار الجزئي .
الاستفسارات الجزئية متعددة الأعمدة Multiple-Column Subqueries
So far you have written single-row subqueries and multiple-row subqueries where only one column was compared in the WHERE clause or HAVING clause of the SELECT statement. If you want to compare two or more columns. You must write a compare WHERE clause using logical operators. Multiple-column subqueries enable you to combine duplicate WHERE conditions into a single WHERE clause.
لقد قمت سابقاً بكتابة استفسارات جزئية وحيدة الصف واستفسارات جزئية متعددة الصفوف والتي يكون فيها عمود واحد يقارن ضمن عبارة WHERE أو ضمن عبارةHAVING التابعة لعبارة SELECT . إذا كنت تريد مقارنة عمودين أو أكثر عليك كتابة عبارة المقارنة الخاصة بـ WHERE باستخدام المعاملات المنطقية. تمكنك الاستفسارات الجزئية متعددة الأعمدة من ضم شروط متعددة ضمن عبارة WHERE واحدة.
Example: Display the order number, product number and quantity of any item in which the product number and quantity match both the product number and quantity of an item in order 605.
يقوم المثال التالي بعرض رقم الترتيب ورقم المنتج والكمية لكل عنصر يكون فيه رقم المنتج والكمية مماثلين (كلاهما) لرقم المنتج والكمية الموافقة للعنصر ذو الترتيب 605 .
مثال : SQL> Select ordid, prodid, qty
From item
WHERE (prodid, qty ) IN
(select prodid, qty
FROM item
WHERE ordid = 605 )
AND ordid <> 605 ;
هذا يعني أنه توجد ثلاث عناصر بترتيب آخر تحتوي على نفس رقم المنتج والكمية الموجودة ضمن الترتيب رقم 605.
مقارنات العمود Column Comparisons
يوجد نوعان من المقارنة في حالتنا هذه المقارنة الذكية للزوج (PAIRWISE ) كما في المثال السابق و التي تكون كما في الشكل :
والمقارنة الثانية تسمى المقارنة الغير ذكية للزوج ( NONPAIRWISE )كما في الشكل السابق والمثال التالي :
Example: Display the order number, product number and quantity of any item in which the product number and quantity match any product number and any quantity of an item in order 605.
يقوم المثال التالي بعرض رقم الترتيب ورقم المنتج والكمية لكل عنصر يكون فيه رقم المنتج والكمية مماثلين لأي رقم منتج أي كمية موافقة للعنصر ذو الترتيب 605 .
مثال : SQL> Select ordid, prodid, qty
From item
WHERE Prodid IN (select prodid
FROM item
WHERE ordid = 605 )
AND qty IN (select qty
FROM item
WHERE ordid = 605 )
AND ordid <> 605 ;
هذا يعني أنه يوجد 16 عنصر بترتيب آخر مماثلين لأي رقم منتج أو أي كمية موجودة ضمن الترتيب رقم 605.
القيم الفارغة في الاستفسار الجزئي Null Values in a Subquery
Return Nulls in the Resulting Set of a Subquery إعادة القيم الفارغة ضمن مجموعة النتائج التي يعيدها الاستفسار الجزئي
مثال : SQL> Select employee.ename
From emp employee
WHERE employee.empno NOT IN
(select manager.mgr
FROM emp manager );
لا يعيد المثال السابق أي صف وذلك لأن أحد القيم التي يعيدها الاستفسار الجزئي أو الداخلي هي قيمة فارغة NULL والسبب في ذلك أن أي نتيجة مقارنة مع القيمة الفارغة تعطينا قيمة فارغة NULL .ولذلك مع أي استفسار جزئي قد ينتج قيم فارغة لا تستخدم معامل المقارنة NOT IN لأنه يكافئ !=ALL و لكن باستخدام المعامل IN لن يكون هناك مشكلة لأن هذا المعامل يكافئ =ANY كما في المثال التالي:
مثال : SQL> Select employee.ename
From emp employee
WHERE employee.empno IN
(select manager.mgr
FROM emp manager );
استخدام الاستفسار الجزئي ضمن عبارة FROM Using a Subquery in the FROM Clause
مثال : SQL> Select a.ename, a.sal ,a.deptno , b.salavg
From emp a ,( SELECT deptno , avg(sal) salavg
FROM emp
GROUP BY deptno ) b
WHERE a.demptno = b.deptno
AND a.sal > b.salavg ;
التقارير التفاعليةInteractive Reports
المتحولات البديلة (متحولات الإبدال ) Substitution Variables
Use SQL*Plus substitution variables to temporarily store values.
تستخدم متحولات التبديل من أجل التخزين المؤقت للقيم.
Single ampersand (&). العلامة
Double ampersand (&&).العلامة المزدوجة
DEFINE and ACCEPT commands.الأوامر
Pass variable values between SQL statements.تمرير قيم المتحولات بين عبارات الـ
Dynamically alter headers and footers.التغيير الديناميكي للعناوين(الرؤوس) والذيول (الهوامش السفلية)
Using the & substitution variable استخدام المتحول البديل &
Use the variable prefixed with an ampersand (&) to prompt the user for a value.
قم باستخدام المتحول البديل مع وضع العلامة & في بدايته وذلك ليقوم بدعوة المستخدم لإدخال القيمة .
Notation De************ion
&user_variable Indicates a variable in a SQL statement; if the variable does not exist. SQL*Plus prompts the user for a value (SQL*Plus discards a new variable once it is used )
يدل على المتحول في عبارة SQL .إذا لم يكن المتحول مدخلاً تقوم SQL بحث المستخدم على إدخال قيمة المتحول ( تقوم SQL بالاستغناء عن القيمة المدخلة عند استخدامها مرة واحدة
مثال : SQL> Select empno, ename ,sal , deptno
From emp
WHERE empno = &employee_num;
ويكون الخرج بالشكل السابق حيث يطالبنا بإدخال قيمة المتحول البديل نقوم بإدخال أحد أرقام الموظفين وليكن 7367 .
Using the SET VERIFY Command استخدام وتفعيل أمر التحقق
Toggling the display of the **** of a command before and after SQL*Plus replaces substitution variables with values.
يقوم هذا الأمر بالتأكيد على عرض النص الخاص بالأمر قبل وبعد أن تقوم SQL بتبديل متحولات البدل بقيمها.
مثال : SQL> SET VERIFY ON
SQL> Select empno, ename ,sal , deptno
From emp
WHERE empno = &employee_num;
بمعنى آخر يقوم هذا الأمر بإعطاء تقرير عن اسم المتحول قبل التغيير وقيمته بعد التغيير. وعندما نريد إيقاف مجموعة التأكيد نكتب التعليمة SET VERIFY OFF .
Character and Data Values with Substitution Variables المحارف وقيم البيانات مع المتحولات البديلة
Use single quotation marks for data and character values.
قم باستخدام فواصل علوية مع البيانات والقيم الحرفية (المحارف).
مثال : SQL> Select ename , deptno, sal*12
From emp
WHERE job = '&job_title' ;
Specifying Column Names, Expressions, and **** at Runtime
أسماء أعمدة مختارة , تعابير مختارة , ونصوص مختارة في وضع التنفيذ
Use substitution variables to supplement the following:
قم باستخدام متحولات البدل لاستكمال ما يلي :
WHERE condition
ORDER BY clause
Column expression.
Table name
Entire select statement
شرط WHERE وعبارة ORDER BY و تعبير العمود و اسم الجدول و عبارة SELECT تامة.
Not only can you use the substitution variables in the where clause of a SQL statement. But also these variables can be used to substitute column names, expressions, or ****.
لا تستخدم متحولات البدل فقط ضمن عبارة WHERE الخاصة بعبارة SQL ولكن هذه المتحولات تستخدم لاستبدال أسماء الأعمدة و التعابير والنص.
مثال : SQL> Select empno, &column_name
From emp
WHERE &condition ;
مثال : SQL> Select empno, ename, job, &column_name
From emp
WHERE &condition
ORDER BY &order_column ;
Using the && substitution variable &استخدام المتحول البديل &
Use the double-ampersand (&&) if you want to reuse the variable value without prompting the user each time.
قم باستخدام العلامة المزدوجة (&&) مع المتحول البديل في حالة أردت إعادة استخدام قيمة المتحول بدون إبلاغ المستخدم في كل مرة.
مثال : SQL> Select empno, ename, job, &&column_name
From emp
ORDER BY & column_name ;
في هذه الحالة يقوم المتحول البديل بحفظ القيمة المدخلة ضمنه من أول تنفيذ
Defining User Variables تعريف متحولات خاصة بالمستخدم
Command الأمر الوصفDe************ion
DEFINE variable - value Creates a CHAR datatype user variable and assigns a value to it.إنشاء متحول حرفي خاص با لمستخدم وتحديد قيمة له
DEFINE variable Display the variable, its value, and its datatype
عرض المتحول وقيمته ونوع بياناته
DEFINE Display all user variables with value and datatype
عرض جميع متحولات المستخدم مع قيمها وأنواعها
ACCEPT (see syntax on next slide ) Reads the line of user input and store it in a variable
قراءة السطر المدخل من المستخدم وتخزينه ضمن المتحول
The DEFINECommand الأمرDEFINE
المتحولات تبقى معرفة حتى تقوم بأحد الأمرين : Variables remains defined until you either:
- استخدام الأمر UNDEFINE لمسحها . -Use the UNDEFINE command to clear it.
- الخروج من بيئة SQL*Plus . - Exit SQL*Plus.
To define variables for every session modify your login.sql file so that the variables are created at startup.
لتبقى المتحولات معرفة في كل مرة تريد فيها الدخول قم بتعديل الملف Login.sql عندها تتولد المتحولات تلقائياً عند الإقلاع.
مثال : إنشاء متحول يحمل اسم الشقة Create a variable to hold the department name
SQL> DEFINE deptname = sales
SQL> DEFINE deptname
مثال : قم باستخدام المتحول كأي متحول آخر Use the variable as you would any other variable
SQL> Select *
FROM dept
Where dname = UPPER( '&deptname') ;
لمحو المتحول أو إزالته نستخدم الأمر UNDEFINE To erase the variable you use the UNDEFINE command
SQL> UNDEFINE deptname
SQL> DEFINE deptname
The ACCEPT Command الأمرACCEPT
الشكل العام: ACCEPT variable [datatype] [FORMAT format]
[PROMPT ****] [HIDE]
variable is the name of the variable that stores a value (If it does not exist SQL*Plus creates it )
variable اسم المتحول الذي يقوم بتخزين القيمة ( إذا لم تقم بإنشائه تقوم SQL*Plus بإنشائه تلقائياً )
datatype is NUMBER, CHAR, or DATE (CHAR has a maximum length limit of 240 bytes. DATE checks against a format model, and the datatype is CHAR)
datatype نوع البيانات عددية أو حرفية أو تاريخ ( البيانات الحرفية تأخذ طول أعظمي 240 بايت, والتاريخ يأخذ الشكل المطبق عليه ضمن format ونوع بياناته حرفية )
FOR[MAT] format specifies the format model—for example, A10 or 9.999
PROMPT **** displays the **** before the user can enter the value.
PROMPT **** عرض النص الذي يقوم بإخبار المستخدم بإدخال القيمة قبل إدخالها.
HIDE suppresses what the user enters--- for example, a password.
HIDE يقوم بإخفاء القيمة المدخلة من قبل المستخدم يستخدم على سبيل المثال لكلمة المرور.
• ACCEPT: Read user input and store it in a variable.
• Creates a customized prompt when accepting user input.
• Explicitly defines a NUMBER or DATE datatype variable.
• Hides user input for security reasons.
• يقوم هذا الأمر بقراءة القيمة التي يدخلها المستخدم ثم يقوم بتخزينها في المتحول.
• يستخدم لوضع عبارة اختيارية من أجل إخبار المستخدم بعملية الإدخال.
• يستخدم للتحديد الصريح لنوع بيانات المتحول إن كان رقم أو تاريخ.
• و يستخدم لإخفاء القيم المدخلة من قبل المستخدم لأسباب أمنية (للحفاظ على السرية).
مثال :
SQL>ACCEPT dept PROMPT ' Provide the department name : '
Select *
From dept
WHERE dname = UPPER( '&dept') ;
Customizing the SQL*Plus Environment تخصيص بيئة الاس كيو ال بلس
الشكل العام: SET system_variable value
system_variable is a variable that controls one aspect of the session environment .
value is a value for the system variable .
system_variable متحول يتحكم بمظهر واحد من مظاهر بيئة الجلسة الحالية.
Value قيمة متحول النظام.
باستخدام أمر SET يمكنك التحكم بإعدادات الجلسة الحالية .
يمكن التأكد من الإعدادات باستخدام أمر التأكد SHOW .
يمكنك استخدام الأمر SHOW ALL لرؤية كافة متحولات النظام وأوضاعها.
مثال : SQL> SET ECHO ON
SQL> SHOW ECHO
حيث Echo مسؤول عن التكرار
متحولات أمر التفعيل (التحديد) SET SET Command Variables
الخط السفلي في الجدول موضوع تحت القيم الافتراضية The underscore values indicate default values
SET Variable and Value الوصفDe************ion
ARRAYSIZE {20|n} Set the database data fetch size تحديد حجم البيانات المستخرجة من قاعدة البيانات
CLOSEP { |****} Sets **** to be printed between columns ( The default is single space)
ضبط النص الذي نريد طباعته بين الأعمدة ( الافتراضي فراغ وحيد )
FEED[BACK]{6 |n |OFF|ON} Display a number of records returned by a query when the query selects at least n records. Example ( 13 rows selected.)في نهاية نتيجة الاستعلام
يعرض عدد السجلات المعادة من الاستعلام عندما يقوم الاستعلام باختيار n سجل كحد أدنى
HEA[DING] {OFF|ON} مسؤول عن إظهار وإخفاء أسماء الأعمدة في نتيجة الاستعلام
LIN[ESIZE] {80| n } ضبط وتحديد عدد الأحرف الأعظمي لكل سطر حتى n حرف وبذلك يمكن إظهار الجدول كاملاً إذا كانت السجلات طويلة أو عدد الأعمدة كبير مثلاً :SET LIN 100
LONG {80| n } تحديد الطول الأعظمي لعرض قيم البيانات الطويلة LONG
PAGES[IZE] {24| n } تحديد عدد الأسطر الأعظمي في كل صفحة من صفحات الخرج بذلك يمكن تحديد عدد صفوف معينة لكل جزء من الخرج أي يمكن تجزيء الناتج إلى جداول بدل من جدول
PAU[SE] {OFF|ON| ****} Allow you to control scrolling of your terminal ( You must press [Return] after seeing each pause) تمكنك من التحكم بتحريك الطرف السفلي
TERM[OUT] {OFF|ON} Determines whether output is displayed on screen
يحدد فيما إذا كان الخرج قد ظهر على الشاشة
ECHO {OFF|ON} مسؤول عن التكرار
The login.sql file contains standard set and other SQL*Plus commands that are implemented at login.
You can modify login.sql to contain additional set commands .
يحتوي الملف login.sql الأوامر القياسية بالإضافة إلى أوامر أخرى من SQL*Plus والتي تنفذ عند الدخول .
بإمكانك القيام بتعديل ملف الدخول login.sql ليحوي أوامر إضافية.
أوامر الشكل في الـ SQL*Plus SQL*Plus Format Commands
Command الوصفDe************ion
COL[UMN] [column option] التحكم بتصميمات العمود بإضافة خيار كما في الفقرة التالية Control column formats
TTI[TLE] [****|OFF|ON] Specifies a header to appear at the top of each page
تخصيص عنوان يظهر في أعلى كل صفحة
BTI[TLE] [****|OFF|ON] Specifies a footer to appear at the bottom of each page of the report
تخصيص هامش سفلي يظهر في أسفل كل صفحة
BRE[AK] [ON report element] Suppresses duplicate value and sections rows of data with line feeds
طمس وإخفاء القيم المضاعفة ومقاطع من الصفوف بسطر فارغ
تكتب هذه الأوامر مع معاملاتها مباشرة بدون سابق كما يلي : SQL>TTI "Students Table"
SQL>BTI "END Report"
أوامر العمود The COLUMN Command
تحكمات بطريقة عرض العمود Controls display of a column
COL[UMN] [{column|alias} [option]]
جدول خيارات أمر العمود COLUMN Command Options
Option الخيار الوصفDe************ion
CLE[AR] مسح أي إعداد لشكل العمود مثال: COL ename CLE
FOR[MAT] format تغيير طريقة عرض بيانات العمود
HEA[DING] **** تغيير طريقة عرض عنوان العمود (رأس العمود) مثال: COL ename HEA employee
JUS[TIFY] {align} يجعل اسم العمود (الرأس) وليس البيانات يكون في اليسار أو الوسط أو اليمين حسب الإتجاه
مثال :COL job JUS CENTER
NOPRI[NT] إخفاء أعمدة ضمن التقرير مثال : COL sal NOPRI
NUL[L] **** اختيار قيمة لتعبئتها في التقرير مكان القيم الفارغة مثال : COL comm NUL 0
PRI[NT] إظهار العمود المخفي مثال : COL sal PRI
TRU[NCATED] يقوم بقطع السلسلة في نهاية السطر الأول من العرض
WRA[PPED] التفاف نهاية السلسلة إلى السطر التالي (السطور ملتفة)
أمثلة :
إنشاء رؤوس (عناوين ) للأعمدة : SQL>COLUMN ename HEADING 'Employee|Name' FORMAT A15
SQL>COLUMN sal JUSTIFY LEFT FORMAT $99,990.00
SQL>COLUMN mgr FORMAT 999999999 NULL 'No manager'
وعندها يصبح ناتج ما يلي : SQL>SELECT ename, mgr , sal FROM emp ;
COLUMN Format Models نماذج لشكل العمود
Result Example De************ion Element
N/A N/A يقوم بإعدادالعرض حسب قيمة n كما في المثال السابقA15 An
1234 999999 أقرب عدد صحيح 9
01234 099999 يضع صفر يساري إجباري 0
$1234 $9999 علامة دولار $ $
L1234 L9999 رمز للعملة المحلية مهما يكن L
1234.00 9999.99 الفاصلة العشرية .
1,234 9.999 فاصلة الآلاف ,
أمثلة :
عرض الإعدادات الحالية للعمود ENAME Display the current setting for the ENAME column
SQL>COLUMN ename
عرض الإعدادات الحالية لكافة الأعمدة Display the current setting for all columns
SQL>COLUMN
مسح الإعدادات الحالية للعمود ENAME Clear setting for the ENAME column
SQL>COLUMN ename CLEAR
مسح الإعدادات الحالية لكافة الأعمدة Clear setting for all columns
SQL> CLEAR COLUMN
أو اختصاراً SQL> CLE COL
إخفاء القيم المضاعفة Suppresses duplicate value
SQL>BREAK ON ename ON job
لاقتطاع صفوف أو وضع صفوف فارغة بين سجلات التقرير To section out rows at break value
SQL>BREAK ON ename SKIP4 ON job SKIP2
مسح كل إعدادات تعليمة الــ BREAK Clear all BREAK setting
SQL>CLEAR BREAK
وضع عنوان للتقرير Set the report header
SQL>TTITLE 'Salary|Report'
وضع هامش سفلي للتقرير Set the report footer
SQL>BTITLE ' Confidential '
إنشاء ملف نصي لحفظ وتشغيل التقرير Creating a ************ File to Run a Report
A. Create the SQL SELECT statement at the SQL prompt. Ensure that the data required for the report is accurate before you save the statement to a file and apply formatting commands. Ensure that the relevant ORDER BY clause is included if you intend to use breaks.
B. Save the SELECT statement to a ************ file.
C. Edit the ************ file to enter the SQL*Plus commands.
D. Add the required formatting commands before the SELECT statement. Be certain not to place SQL*Plus commands within the SELECT statement.
E. Verify that the SELECT statement is followed by a run character. Either a semicolon ( ; ) or a slash ( / ).
F. Add the format-clearing SQL*Plus commands after the run character. As an alternative, you can call a reset file that contains all the format-clearing commands.
G. Save the ************ file with your changes.
H. In SQL*Plus, run the ************ing file by entering START filename or @filename. This command is required to read and execute the ************ file.
A. قم بإنشاء عبارة SQL ضمن ملقن SQL. تأكد أن البيانات المطلوبة للتقرير دقيقة قبل حفظ التعليمة إلى ملف وتفعيل أوامر التنسيقات . تأكد من وجود عبارة ORDER BY مناسبة إذا كنت تنوي استخدام أوامر ال**ر BREAK .
B. قم بحفظ تعليمة SELECT التي قمت بإنشائها ضمن ملف نصي.
C. قم بتحرير الملف النصي لإدخال أوامر SQL*Plus .
D. قم بإضافة أوامر التنسيقات قبل عبارة SELECT . كن واثقاً من عدم وضع أوامر SQL*Plus ضمن عبارة SELECT .
E. تحقق من أن عبارة SELECT متبوعة برمز تشغيل وهو أياً من الفاصلة المنقوطة ( ; ) أو الخط المائل بالشكل ( / ).
F. قم بإضافة أوامر مسح التنسيق بعد رمز التشغيل, كأحد الخيارات غير أنه يمكنك استدعاء ملف إعادة الإفتراضيات reset الذي يحتوي بدوره على كافة أوامر مسح التنسيق .
G. إحفظ الملف النصي مع التغييرات.
H. ضمن SQL*Plus قم بتشغيل الملف النصي باستخدام الأمر START مع اسم الملف أو اختصاراً @filename هذا الأمر مطلوب لقراءة وتنفيذ الملف النصي.
مثال : قم بإنشاء تقرير يظهر نوع العمل واس وراتب كل موظف راتبه أقل من 3000$ قم بوضع عنوان للتقرير مكون من سطرين Employee Report وفي وسط وأسفل الصفحة أكتب Confidential قم بوضع عنوان آخر للعمود Job باسم Job Category يكون مقسوماً إلى سطرين . ثم قم بوضع عنوان آخر للعمود Ename باسم Employee .ثم قم بوضع عنوان آخر لعمود الراتب Sal باسم Salary وقم بتنسيقه إلى الشكل $2,500.0 :
Data Manipulation ********
لغة معالجة البيانات
Data manipulation ******** (DML) is a core part of SQL . When you want to add, update, or delete data in the database, you execute a DML statement .
A collection of DML statements that from a logical unit of work is called a transaction .
لغة معالجة البيانات ويرمز لها اختصاراً DML تعتبر جزء رئيسي أو مركزي من لغة اـ SQL عندما تريد إضافة أو تعديل أو حذف بيانات من قاعدة البيانات عليك إنجاز عبارة DML .
مجموعة عبارات لغة DML من وحدة منطقية من العمل تسمى إجراء أو صفقة (معاملة تجارية).
على سبيل المثال إذا قام أحد عملاء بنك بتحويل مبلغ من الحساب المودع إلى حساب الشيكات (الجاري ) هذا الإجراء ربما يكون مؤلفاً من ثلاث عمليات منفصلة . إنقاص الحساب المودع وزيادة الحساب الجاري وتسجيل عملية التحويل ضمن سجل التحويل . يجب أن يضمن مخدّم أوراكل إنجاز جميع عبارات SQL ليحافظ على الحسابات في توازن صحيح . وإذا أعاق شيء ما أحد هذه العبارات الخاصة بعملية التحويل يجب أن لا تنجز باقي العمليات .
عبارة الإدخال INSERT The INSERT statement
إدخال صفوف جديدة باستخدام INSERT Add new rows to a table by using the INSERT statement
الصيغة العامة: INSERT INTO table [ (column [, column….])]
Values (value [, value….]) ;
table تعبر عن اسم الجدول table is the name of table
column تعبر عن اسم العمود ضمن الجدول للإدخال column is the name of the column in the table to populate
value تعبر عن القيمة المناظرة للعمود value is the corresponding value for the column
إرشادات : عند إدخال صف جديد عليك التقيد بما يلي :
أدخل الصف الجديد بحيث يحتوي على قيم لكل عمود بدون استثناء .
قم بترتيب القيم المدخلة حسب الترتيب الافتراضي للأعمدة في الجدول .
بإمكانك ترتيب أسماء الأعمدة في الجدول بشكل اختياري لكن ترتيب القيم يجب أن يطابق ترتيب الأعمدة .
قم بإحاطة القيم الموافقة للبيانات الحرفية والتواريخ بفواصل علوية (علامات اقتباس) مفردة .
مثال : SQL> INSERT INTO dept (deptno, dname, loc)
VALUES ( 50, 'DEVELOPMENT' , 'DETRIOT' ) ;
إدخال قيم خاصة باستخدام التوابع Inserting Special Value
مثال : SQL> INSERT INTO emp (empno, ename, job, mgr, hiredate,
Sal, comm, deptno)
VALUES ( 7196, 'GREEN' , 'SALESMAN', 7782, SYSDATE,
2000, NULL, 10 ) ;
يقوم التابع SYSDATE في المثال السابق بإدراج قيمة التاريخ الحالي ضمن الحقل hiredate
للتحقق نضع : SQL> SELECT * FROM emp
WHERE empno = 7196 ;
إدخال قيم خاصة للتاريخ باستخدام التوابع Inserting Special Date Value
مثال : SQL> INSERT INTO emp
VALUES ( 2296, 'ARMANO' , 'SALESMAN', 7782,
TO_DATE( 'FEB 3, 97' , 'MON DD, YY' ) , 1300, NULL, 10 ) ;
وبالتالي يمكننا استخدام توابع التواريخ ضمن تعليمة الإدخال INSERT .
إنشاء ملف نصي مع إدخال خاص Creating a ************ with Customized Prompts
عند تشغيل هذا الملف يطلب منا إدخال قيم المتحولات واحد تلو الآخر ثم يقوم بإدخالها ضمن الجدول .
عبارة الإدخال UPDATE The UPDATE statement
تعديل صفوف موجودة باستخدام UPDATE Modify existing rows with the UODATE statement
الصيغة العامة: UPDATE table
SET column = value [ , column = value, …..]
[WHERE condition ] ;
table تعبر عن اسم الجدول table is the name of table
column تعبر عن اسم العمود ضمن الجدول للإدخال column is the name of the column in the table to populate
value تعبر عن القيمة المناظرة للعمود value is the corresponding value for the column
Condition شرط يعين الصفوف التي سيتم تعديلها condition identifies the rows to be updated
Specific row or rows are modified when you specify the WHERE clause.
يتم تعديل صف واحد أو عدة صفوف محددة بشكل دقيق عند استخدام عبارة WHERE .
مثال : SQL> UPDATE emp
SET deptno = 20
WHERE empno = 7782 ;
All rows in the table are modified if you omit the WHERE clause.
يتم تعديل كل الصفوف ضمن الجدول عند حذف عبارة WHERE .
مثال : SQL> UPDATE emp
SET deptno = 20 ;
التحديث باستخدام استفسار جزئي متعدد الأعمدة Updating with Multiple-Column Subquery
مثال : تحديث عمل الموظف job ورقم الشقة deptno للموظف رقم 7698 empno=لتكون مساوية للموظف رقم empno= 7499
SQL> UPDATE emp
SET ( job, deptno ) =
( SELECT job, deptno
FROM emp
WHERE empno = 7944 )
WHERE empno = 7698 ;
Multiple-column subqueries can be implemented in he SET clause of an UPDATE statement.
الاستفسار المتعدد الأعمدة يمكن أن ينفذ ضمن عبارة STE التابعة لتعليمة UPDATE .
تحديث صفوف بناء على جدول ثاني Updating Rows Based on Another Table
مثال : SQL> UPDATE employee
SET deptno = ( SELECT deptno
FROM emp
WHERE empno = 7788 )
WHERE job = ( SELECT job
FROM emp
WHERE empno = 7788 ) ;
تحديث الصفوف وخطأ قيد التكامل Updating Rows Integrity Constraint Error
مثال : SQL> UPDATE emp
SET deptno = 55
WHERE deptno = 10 ;
رقم القسم 55 غير موجود
عبارة الحذف DELETE The DELETE statement
(حذف صفوف موجودة باستخدام DELETE) Remove existing rows from a table by using the DELETE statement
الصيغة العامة: DELETE [FROM] table
[WHERE condition ] ;
table تعبر عن اسم الجدول table is the name of table
Condition شرط يعين الصفوف التي سيتم حذفها condition identifies the rows to be deleted
Specific rows are deleted when you specify the WHERE clause.
يتم حذف صفوف محددة بشكل دقيق عند استخدام عبارة WHERE .
مثال : SQL> DELETE FROM dept
WHERE dname = 'DEVELOPMENT' ;
All rows in the table are deleted if you omit the WHERE clause.
يتم حذف كل الصفوف ضمن الجدول عند حذف عبارة WHERE .
مثال : SQL> DELETE FROM dept ;
مثال : SQL> DELETE FROM emp
WHERE hiredate > TO_DATE ( '01.01.97' , 'DD.MM.YY' ) ;
يقوم بحذف كل الموظفين الذين بدأوا بعد January 1. 1997
حذف صفوف بناء على جدول ثاني Deleting Rows Based on Another Table
SQL> DELETE FROM emp
WHERE deptno =
( SELECT deptno
FROM dept
WHERE dname = 'SALES' ) ;
حذف صفوف وخطأ قيد التكامل Deleting Rows Integrity Constraint Error
مثال : SQL> DELETE FROM dept
WHERE deptno = 10 ;
لا يمكنك حذف الصف الذي يحتوي على مفتاح أساسي
يستخدم كمفتاح ثانوي في جدول آخر .
إجراءات قاعدة البيانات Database Transactions
Consist of one of the following statements: يتألف من أحد العبارات التالية:
DML (Data Manipulation ******** )statements that make up one consistent change to the data.
أي عدد من عبارات DML التي تقوم بتغيير واحد على البيانات أي التي يعاملها مزود أوراكل ككينونة واحدة أي كوحدة منطقية تشكل جزء واحد من العمل.
One DDL (Data Definition ********) statement. تعليمة واحدة
One DCL (Data Control ********) statement. تعليمة واحدة
عند تعديل قاعدة المعطيات بالإضافة أو التحديث يمكنك حفظ هذا التعديل أو عدم الحفظ وهذا مفيد عند اكتشاف أخطاء أثناء التعديل و عملية تثبيت التعديل أو التراجع تكتبان بالأوامر Commit للحفظ و Rollback للتراجع.
تبدأ إجراءات قاعدة البيانات عندما تنفذ أول عبارة SQL قابلة للتنفيذ .
وتنتهي مع حدوث أي مما يلي :
1. إذا تم تنفيذ أي من الأوامر COMMIT or ROLLBACK .
2. إذا تم تنفيذ أي من تعليمات DDL or DCL والتي تعد بمثابة الحفظ الأوتوماتيكي Auto Commit .
3. خروج المستخدم User Exits والذي يقوم بالحفظ تلقائياً .
4. انهيار النظام أو فشل النظام .
عندما تنتهي أحد العمليات أو الإجراءات تقوم عبارة SQL التالية بشكل أوتوماتيكي ببدء الإجراء التالي .
كما وتقوم تعليمات DDL or DCL بالحفظ التلقائي ولذلك فإنها تقوم ضمنياً بإنهاء الإجراء.
Advantages of COMMIT and ROLLBACK Statements
ميزات عبارتي COMMIT و ROLLBACK
تضمن ثبات البيانات Ensure data consistency
تسمح بمراجعة التغييرات قبل تثبيتها بشكل دائم Preview data changes before making changes permanent
تقوم بتجميع العمليات المنطقية Group logically related operations
عملية التحكم بالإجراءات Controlling Transactions
Transaction
DELETE
INSERT
UPDATE INSERT
Savepoint B Savepoint A
Statement الوصفDe************ion
COMMIT Ends the current transaction by making all pending data changes permanent
إنهاء الإجراء الحالي بجعل كل التغييرات المتعلقة بالبيانات ثابتة ودائمة )حفظ التغييرات )
SAVEPOINT name Marks a savepoint within the current transaction
تحديد نقطة حفظ خلال الإجراء الحالي
ROLLBACK [TO SAVEPOINT name] ROLLBACK ends the current transaction by discarding all pending data changes :ROLLBACK TO SAVEPOINT name discards the savepoint and all subsequent changes
التراجع عن الإجراء الحالي بإلغاء كافة التغييرات الأخيرة المتعلقة بالبيانات
التراجع إلى نقطة الحفظ تعمل على تجاهل نقطة الحفظ وكافة التغييرات اللاحقة
يحدث الحفظ الأوتوماتيكي Automatic commit مع حدوث أي مما يلي :
1. تنفيذ تعليمة DDL .
2. تنفيذ تعليمة DCL .
3. الخروج بشكل عادي من بيئة SQL*Plus بدون تنفيذ COMMIT أو ROLLBACK
كما يحدث التراجع الأوتوماتيكي Automatic rollback بالإنهاء الغير طبيعي للـ SQL*Plus أو بانهيار النظام وفي هذه الحالة يقوم مزود أوراكل بالتراجع إلى آخر نقطة حفظ COMMIT مع المحافظة على سلامة الجداول.
ملاحظة : إن الأمر AUTOCOMMIT هو من تعليمات DML ويمكن استخدامه مع SET وتفعيله أو عدم تفعيله ON or OFF ولكن لا يمكنك عندها تنفيذ عملية التراجع ROLLBACK في حالة تفعيله ويكون افتراضيا على الوضع OFF .
SQL> SET AUTOCOMMIT ON
قبل تطبيق أحد عمليتي التثبيت أو التراجع COMMIT or ROLLBACKلا يستطيع أي مستخدم آخر مشاهدة نتائج عبارة DML المستخدمة من قبل المستخدم الحالي وتكون البيانات مقفلة بحيث لا يستطيع مستخدم آخر تغييرها.
أما بعد عملية التثبيت أو التراجع COMMIT or ROLLBACK يستطيع المستخدمين الآخرين مشاهدة النتائج أو التغييرات كما أن جميع نقاط الحفظ Savepoints تمحى .
تثبيت التغييرات على البيانات Committing Data
مثال1 : إحداث تغييرات على البيانات SQL> UPDATE emp SET deptno = 10
WHERE deptno = 7782 ;
تثبيت التغييرات على البيانات SQL> COMMIT ;
مثال2 : إحداث تغييرات على البيانات SQL> INSERT INTO dept (deptno, dname, loc )
VALUES (50, 'ADVERTISING', 'MIAMI' ) ;
مثال2 : إحداث تغييرات على البيانات SQL> UPDATE emp SET deptno = 10
WHERE deptno = 7782 ;
تثبيت التغييرات على البيانات SQL> COMMIT ;
مثال3 : حذف بيانات جدول SQL> DELETE FROM emp ;
التراجع عن الحذف SQL> ROLLBACK ;
التراجع عن التغييرات حتى نقطة معلمة Rolling Back Changes to a Marker
Create a marker in a current transaction by using the SAVEPOINT statement.
Roll back to that marker by using the ROLLBACK TO SAVEPOINT statement.
If you create a second savepoint with the same name as an earlier savepoint, the erlier savepoint is deleted
إنشاء نقطة علامة ضمن الجلسة الحالية أو الإجراء الحالي باستخدام عبارة SAVEPOINT .
التراجع للخلف حتى تلك النقطة باستخدام عبارة ROLLBACK TO SAVEPOINT .
إذا قمت بإنشاء نقطة حفظ أخرى بنفس اسم الأولى فإن الأولى تلغى .
مثال : SQL> INSERT SQL> INSERT
SQL> UPDATE …
SQL> SAVEPOINT update_done ;
SQL> INSERT …
SQL> ROLLBACK TO update_done ;
The purpose of read consistency is to ensure that each user sees data as it existed at the last commit, before a DML operation started.
الهدف من عملية القراءة المتوافقة هو ضمان أن كل مستخدم يرى البيانات كما هي موجودة عند آخر تثبيت لها وذلك قبل بدء أي عملية من عمليات لغة الــ DML.
Data Definition ********
لغة تعريف البيانات (التعامل مع الكائنات)
- أشياء أو أغراض قاعدة البياناتDatabase Objects
Objectالغرض الوصفDe************ion
Table الجدول Basic unit of storage; composed of rows and columns
وحدة التخزين الأساسية للبيانات مؤلفة من صفوف وأعمدة
View المنظور Logically represents subsets of data from one or more table
إجراء ثانوي تمثل ( تصور ) بشكل منطقي البيانات من جدول أو أكثر
Sequenceالمسلسل Generates primary key values تولد قيم المفتاح الأساسي )المسلسِل )
Index الفهرس Improve the performance of some queries يقوم بتحسين أداء بعض الاستفسارات
Synonym المرادف Give alternative names to objects إعطاء أسماء بديلة للأشياء
اصطلاحات (قوانين) التسمية Naming Conventions (Rules)
Name database tables and columns according to the standard rules for naming any Oracle database object:
تسمية قاعدة البيانات والجداول والأعمدة خاضعة لقوانين قياسية خاصة بتسمية أغراض أوراكل كما يلي :
Must begin with a letter and can be 1 – 30 characters long.
يجب أن تبدأ أسماء الجداول والأعمدة بمحارف حصراً وبطول من 1 إلى 30 محرف كحد أقصى.
Must contain only A-Z , a – z , 0 – 9 , _ (underscore), $ , and # .يجب أن تحوي فقط الرموز التالية
Must not duplicate the name of another object owned by the same user.
لا يجب أن يكون إسم الغرض التابع لنفس المستخدم مكرراً .
Must not be an Oracle Server reserved word.يجب أن لا تكون أحد الكلمات المحجوزة لمزود أوراكل
عبارة إنشاء جدول CREATE TABLE The CREATE TABLE statement
بداية يجب أن يكون لديك امتياز إنشاء جدول ومساحة للتخزين ويجب أن تخصص اسم للجدول وأسماء الأعمدة وأنواع البيانات لكل منها وقياس كل عمود :
الصيغة العامة: CREATE TABLE [ schema .] table
( column datatype [DEFAULT expr][ , … ] ) ;
schema تعبر عن نفس اسم المالك schema is the same as the owner's name
table تعبر عن اسم الجدول table is the name of the table
DEFAULT expr specifies a default value if a value is omitted in the INSERT statement
DEFAULT expr تخصيص قيمة افتراضية إذا كانت هذه القيمة قد حذفت من عبارة INSERT
column تعبر عن اسم العمود column is the name of the column
Datatype تحديد نوع البيانات وطولها الأعظمي datatype is the column's datatype and length
يمكن تخصيص قيمة افتراضية للعمود أثناء عملية الإدخال كما في المثال التالي :
……. Hiredate DATE DEFAULT SYSDATE , ……..
القيم المقبولة أو القانونية هي القيمة الحرفية أو التعابير أو توابع الــ SQL .
القيم الغير قانونية أو الغير مقبولة هي أسماء أعمدة أخرى أو الأعمدة الزائفة .
نوع بيانات القيمة الافتراضية يجب أن يكون مماثل لنوع بيانات العمود.
مثال : SQL> CREATE TABLE dept
( deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13) ) ;
الجداول في مزود أوراكل Tables in the Oracle Database
1. جداول المستخدم (User Tables ) : وهي مجموعة من الجداول المنشأة والمحفوظة من قبل المستخدم وتحوي معلومات المستخدم ( User Information ).
2. قاموس المعطيات ( Data Dictionary ) : وهي مجموعة من الجداول المنشأة والمحفوظة من قبل مخدم أوراكل والتي تحتوي معلومات عن البيانات ( Database Information ).
There are four categories of data dictionary views : each category has a distinct prefix witch reflects their intended use .
هناك أربعة من أصناف مناظر قواميس البيانات : كل صنف له بادئة واضحة تع** الإستخدام المطلوب كما الجدول :
Prefix البادئة الوصفDe************ion
USER_ Contains objects owned by the user يحتوي الأغراض التي يملكها المستخدم
ALL_ يستطيع الوصول للأغراض التي منح المستخدم حقوق الوصول لها بالإضافة إلى الأغراض المملوكة من قبل المستخدم
DBA_ يعطي الإمتياز للدخول أو الوصول إلى أي غرض ضمن قاعدة البيانات
V$_ يعرض سلوك مزود قاعدة البيانات و القفل وهو متاح مبدئياً فقط لـ DBA
الاستعلام عن قاموس المعطيات Querying the Data Dictionary
- وصف الجداول المملوكة للمستخدم - Describe tables owned by the user
SQL> SELECT *
FROM user_tables ;
- إظهار أنواع الأغراض التابعة للمستخدم بدون تكرار - View distinct object types owned by the user
SQL> SELECT DISTINCT object_type
FROM user_objects ;
- View tables, views, synonyms, sequences owned by the user .
- إظهار الجداول والمناظير والمرادفات والمتسلسلات التابعة للمستخدم
SQL> SELECT *
FROM user_catalog ;
The USER_CATALOG has a synonym called CAT. You can use this synonym instead of USER_CATALOG in SQL statement.
SQL> SELECT *
FROM CAT ;
يمكن استخدام الاسم المرادف CAT بدلاً من USER_CATALOG .
أنواع البيانات المتاحة في أوراكل DATATYPES
Datatype النوع الوصفDe************ion
VARCHAR2(size) نوع البيانات متحول حرفي متغير الطول يجب أن يكون size طول السلسلة بين حرف واحد 1على الأقل و4000 محرف على الأكثر
CHAR(size) نوع البيانات متحول حرفي ثابت الطول يجب أن يكون size طول السلسلة بين حرف واحد 1على الأقل و2000 محرف على الأكثر
NUMBER(p , s) متحول حرفي متغير الطول له الدقة P والمقياس S حيث Pأكبر طول لرقم قبل الفاصلة العشرية وS أكبر طول لرقم بعد الفاصلة العشرية من جهة اليمين يأخذ p مجال القيم بين 1 إلى 38 أما S فيأخذ مجال القيم بين-84 وبين 127
DATE نوع البيانات تاريخ ووقت بين January 1. 4712B.C. وبين December 31.9999A.D.
LONG نمط حرفي متغير الطول من البيانات يأخذ يصل حجمه إلى حتى 2 جيجا بايت
CLOB متحول حرفي يصل حجمه إلى حتى 4 جيجا بايت
ROW متحول ثنائي يأخذ طول محدد size يمكن جعله حتى 2000 كحد أقصى
LONG ROW متحول ثنائي متغير الطول يصل حجمه حتى 2 جيجا بايت
BLOB بيانات ثنائية يصل حجمها حتى 4 جيجا بايت
BFILE بيانات ثنائية تخزن ضمن ملف خارجي يصل حجمها حتى 4 جيجا بايت
إنشاء جدول باستخدام الاستفسار الجزئي Create a Table by Using a Subquery
SQL> CREATE TABLE dept30 مثال:
2 AS
3 SELECT empno, ename, sal*12 ANNSAL, hiredate
4 FROM emp
5 WHERE deptno = 30 ;
SQL> DESCRIBE dept30
عبارة تعديل جدول ALTER TABLE The ALTER TABLE statement
Use the ALTER TABLE statement to: Add a new column, modify an existing column, and define a default value for the new column.
تستخدم تعليمة ALTER TABLE لإضافة عمود جديد أو تعديل عمود موجود أو تحديد قيمة افتراضية للعمود جديد.
الصيغة العامة1: ALTER TABLE table
ADD ( column datatype [DEFAULT expr]
[ , column datatype]…. ) ;
الصيغة العامة2: ALTER TABLE table
MODIFY ( column datatype [DEFAULT expr]
[ , column datatype]…. ) ;
table تعبر عن اسم الجدول table is the name of the table
تخصيص قيمة افتراضية للعمود الجديد DEFAULT expr specifies a default value for a new column
column تعبر عن اسم العمود column is the name of the column
Datatype تحديد نوع البيانات وطولها للعمود الجديد datatype is the datatype and length of the new column
إضافة عمود Adding a Column
نستخدم عبارة ADD لإضافة أعمدة You use the ADD clause to add columns
SQL> ALTER TABLE dept30 مثال:
2 ADD ( job VARCHAR2(9)) ;
يصبح العمود الجديد في نهاية الجدول كما يلي :
SQL> SELECT *
2 FROM dept30 ;
تعديل عمود Modifying a Column
You can change a column's datatype, size, and default value.
بإمكانك تغيير نوع بيانات العمود و الحجم والقيمة الافتراضية
لتعديل عمود تستخدم عبارة MODIFY مع تعليمة ALTER TABLE
SQL> ALTER TABLE dept30 مثال:
2 MODIFY ( ename VARCHAR2(15)) ;
يمكنك تغيير عرض أو دقة الأعمدة الحاوية على بيانات عددية.
يمكن إنقاص عرض العمود إذا احتوى العمود على قيم فارغة فقط NULL أو إذا لم يحوي الجدول أي صفوف (فارغ).
يمكن تغيير نوع البيانات إذا احتوى العمود قيم فارغة NULL.
يمكن تحويل نوع البيانات CHAR إلى النوع VARCHAR2 أو بالع** إذا احتوى العمود على قيم فارغة NULL أو إذا لم تقوم بتغيير الحجم size .
عبارة إسقاط ( حذف) جدول DROP TABLE Dropping a Table
- جميع البيانات و البنى في الجدول ستمحى. - All data and structure in the table is deleted.
- أي إجراءات قيد الانتظار سيتم تثبيتها. - Any pending transactions are committed.
- جميع الفهارس ستحذف. - All indexes are dropped
- لا يمكن التراجع عن هذه التعليمة. - You cannot roll back this statement.
- تبقى المناظير والمرادفات لكنها تعتبر باطلة. - Any views and synonyms will remains but are invalid.
الصيغة العامة: DROP TABLE table ;
SQL> DROP TABLE dept30; مثال:
إعادة تسمية غرض باستخدام RENAME Changing the name of an Object
لتغيير اسم جدول أو منظور أو متسلسلة أو مرادف عليك تنفيذ تعليمة RENAME .
الصيغة العامة: RENAME old_name TO new_name ;
SQL> RENAME dept TO department; مثال:
بتر الجدول باستخدام تعليمة TRUNCATE Truncating a Table
تقوم تعليمة TRUNCATE TABLE بحذف كافة الصفوف أو السجلات من الجدول والتخلي عن مساحة التخزين المستخدمة لذلك الجدول كما أنه لا يمكنك استعادة الصفوف أو التراجع عن الصفوف المحذوفة باستخدام التعليمة TRUNCATE كما يمكنك حذف صفوف اختيارياً باستخدام تعليمة DELETE :
الصيغة العامة: TRUNCATE TABLE table ;
SQL> TRUNCATE TABLE department ; مثال:
إضافة تعليق للجدول باستخدام COMMENT Adding Comments to a table
يمكنك إضافة تعليقات للجدول أو العمود باستخدام التعليمة COMMENT .
الصيغة العامة: COMMENT TO TABLE table|column table.column
IS '****' ;
table تعبر عن اسم الجدول table is the name of the table
column تعبر عن اسم عمود في الجدول column is the name of the column in a table
**** تعبر عن نص التعليق **** is the **** of the comment
SQL> COMMENT ON TABLE emp مثال:
IS 'Employee Information' ;
Comments can be viewed through the data dictionary views:
يظهر التعليق خلال مناظر قاموس المعطيات باستخدام ما يلي :
ALL_COL_COMMENTS
USER_COL_COMMENTS
ALL_TAB_COMMENTS
USER_TAB_COMMENTS
SQL> SELECT * مثال: بعد إدراج التعليق السابق نجد
FROM user_tab_comments ;
Constraints-القيود
ما هي القيود What Are Constraints ?
- تقوم القيود بفرض القوانين على مستوى الجدول . - Constraints enforce rules at the table level.
- Constraints prevent the deletion of a table if there are dependencies.
- القيود تمنع الحذف من الجدول إذا كان هناك تبعيات.
يبين الجدول التالي أنواع القيود المتاحة في أواكل The following constraint types are valid in Oracle
Constraint القيد الوصفDe************ion
NOT NULL Specifies that this column may not contain a null values
لا يمكن أن يحوي العمود المقيد بهذا القيد قيم فارغة
UNIQUE المفتاح الفريد Specifies a column or combination of columns whose values must be unique for all rows in the table
هو عبارة عن تركيب من عمود أو مجموعة أعمدة التي تكون قيمها وحيدة من أجل جميع الصفوف في الجدول
PRIMARY KEY
المفتاح الأساسي Uniquely identifies each row of the table
يعرف بشكل فريد كل صف من الجدول وهو أحد المفاتيح الفريد لكنه أعطي بعض الميزات الخاصة
FOREIGN KEY
المفتاح الخارجي ( الغريب) Establishes and enforces a foreign key relationship between the column and a column of the referenced table
يؤسس و يؤكد على علاقة مفتاح ثانوي بين العمود الحالي وعمود من الجدول المرجع
CHECK
قيد الإختبار Specifies a condition that must be true
يوصّف الشرط بوجوب كونه صحيحاً
تعريف القيود Defining Constraints
الصيغة العامة: CREATE TABLE [schema.] table
(column datatype [DEFAULT expr]
[ column_constraint] , ….
[ table_constraint ][ ,….]) ;
schema تعبر عن نفس اسم المالك schema is the same as the owner's name
table تعبر عن اسم الجدول table is the name of the table
DEFAULT expr specifies a default value if a value is omitted in the INSERT statement
DEFAULT expr تخصيص قيمة افتراضية إذا كانت هذه القيمة قد حذفت من عبارة INSERT
column تعبر عن اسم العمود column is the name of the column
Datatype تحديد نوع البيانات وطولها الأعظمي datatype is the column's datatype and length
Column constraint is an integrity constraint as part of the column definition
column constraint قيد العمود يعبر عن كمال القيد كجزء من تعريف العمود .
Table constraint is an integrity constraint as part of the table definition
table constraint قيد الجدول يعبر عن كمال القيد كجزء من تعريف الجدول .
مثال : SQL> CREATE TABLE emp (
empno NUMBER(4),
ename VARCHAR2(10),
……….
deptno NUMBER(7 , 2) NOT NULL,
CONSTRAINT emp_empno_pk PRIMARY KEY (EMPNO) ) ;
• عادة نقوم بإنشاء القيود في نفس وقت إنشاء الجدول إلا أنه يمكننا إضافة القيود إلى الجدول بعد إنشائه .
• تنشأ القيود على مستويين مستوى العمود ومستوى الجدول :
Column [COMSTRAINT constraint_name] constraint_type على مستوى العمود: يكون الشكل العام
على مستوى الجدول : يكون الشكل العام Column , …..
[COMSTRAINT constraint_name] constraint_type
(column , …..) ,
القيد NOT NULL The NOT NULL Constraint
وهو يعرف على مستوى العمود Defined at the column level
مثال : SQL> CREATE TABLE emp (
empno NUMBER(4),
ename VARCHAR2(10) NOT NULL,
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7 , 2),
comm NUMBER(7 , 2),
deptno NUMBER(7 , 2) NOT NULL ) ;
كما يمكنك تخصيص اسم للقيد عند إنشاء القيد وذلك بتعديل التعليمة السابقة كما يلي :
……. deptno NUMBER(7 , 2)
CONSTRAINT emp_deptno_nn NOT NULL ….
يمكننا إعطاء القيود أسماء ويفضل أن يكون لها علاقة بالجدول وبالحقل كما في السابق وإذا لم نفعل فإن أوراكل يتولى هذه المهمة بتوليد أسماء خاصة .
قيد المفتاح الفريد The UNIQUE KEY Constraint
وهو يعرف على أيٍّ من مستوى العمود أو مستوى الجدول Defined at either the column level or the table level
و هو عبارة عن تركيب من عمود أو عدة أعمدة بحيث تكون قيمة هذا المفتاح وحيدو حسب كل سطر في الجدول وإذا كان القيد NOT NULL غير معرف على هذا العمود فإن العمود يمكن أن يحوي القيمة NULL الفارغة .
مثال : SQL> CREATE TABLE dept (
deotno NUMBER(2),
dname VARCHAR2(14) ,
loc VARCHAR2(13),
CONSTRAINT dept_dname_uk UNIQUE (dname) ) ;
Note : The Oracle Server enforces the UNIQUE KEY constraint by implicitly creating a unique index on the unique key.
ملاحظة : ينفذ مزود أوراكل قيد المفتاح الوحيد بإنشاء فهرس وحيد ضمنياً على المفتاح الفريد.
قيد المفتاح الأساسي The PRIMARY KEY Constraint
وهو يعرف على أيٍّ من مستوى العمود أو مستوى الجدول Defined at either the column level or the table level
و هو عبارة عن أحد المفاتيح الفريدة و لكننا قمنا بإعطائه بعض الميزات الخاصة ويمكن تعريف مفتاح أساسي واحد في الجدول و لا يمكنه احتواء القيمة NULL .
يمكننا تعريف المفتاح كمفتاح أساسي أو فريد إذا كان مكوناً من عمود واحد بواسطة قيد على عمود بدلاً من قيد على جدول .
مثال : SQL> CREATE TABLE dept (
deotno NUMBER(2),
dname VARCHAR2(14) ,
loc VARCHAR2(13),
CONSTRAINT dept_dname_uk UNIQUE (dname)
CONSTRAINT dept_deptno_pk PRIMARY KEY (deptno) ) ;
ينشأ فهرس وحيد بشكل تلقائي من أجل عمود المفتاح الأساسي
قيد المفتاح الخارجي ( الغريب ) The FRREIGN KEY Constraint
وهو يعرف على أيٍّ من مستوى العمود أو مستوى الجدول Defined at either the column level or the table level
و هو عبارة عن تركيب من مجموعة أعمدة قيمها موجودة في المفتاح الأساسي لجدول آخر .
مثال : SQL> CREATE TABLE emp (
empno NUMBER(4),
ename VARCHAR2(10) NOT NULL,
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7 , 2),
comm NUMBER(7 , 2),
deptno NUMBER(7 , 2) NOT NULL,
CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) REFERENCES dept (deptno) ) ;
يمكن الرجوع للمفتاح الأساسي في نفس الجدول أو في جدول آخر باستخدام تعليمة المراجع REFERENCES كما في المثال السابق حيث أن الحقل deptno والذي هو عبارة عن مفتاح خارجي في الجدول emp يرجع إلى العمود deptno والذي هو عبارة عن مفتاح أساسي في الجدول dept وبالتالي عندما تريد حذف أسطر من الجدول الأب فإنه من الضروري حذف الأسطر المرتبطة به من الجدول الأب وذلك باستخدام التعليمة ON DELETE CASCADE والتي تضاف إلى تعليمة REFERENCESوالتي تجبر أوراكل على حذف الأسطر المرتبطة من الجدول الابن عندما تحذف أسطر من الجدول الأب ( الأساسي ).
FOREIGN KEY Constraint Keywords
REFERENCES Identifies the table and column in the parent table
تحدد الجدول والعمود المرجع من الجدول الأب
ON DELETE CASCADE Allows deletion in the parent table and deletion of the dependent rows in the child table
تقوم بحذف الصفوف من الجدول الابن والمرتبطة مع الصفوف المحذوفة من الجدول الأب
قيد الاختبار The CHECK Constraint
وهو يحدد الشرط الذي يجب أن تحققه كافة الصفوف Defines a condition that each row must satisfy
التعابير الغير مسموح بها : Expressions that are not allowed:
لا يمكنك استخدام هذه القيود على الأعمدة الغير حقيقية مثل :
• References to CURRVAL, NEXTVAL, LEVEL, and ROWNUM pseudo columns
• Calls to SYSDATE, UID, USER, and USERENV functions.استدعاء التوابع التالية :
• Queries that refer to other values in other rows. الاستفسارات التي تشير إلى قيم أخرى في صفوف أخرى
مثال : SQL> CREATE TABLE dept (
deotno NUMBER(2),
dname VARCHAR2(14) ,
loc VARCHAR2(13),
CONSTRAINT emp_dname_ck CHECK (deptno BETWEEN 10 and 99) ) ;
إضافة قيد Adding a Constraint
- يمكن إضافة أو حذف قيد ولكن لا يمكن التعديل - Add or drop, but not modify a constraint
- تمكين أو إلغاء تمكين القيود - Enable or disable constraints
- Add a NOT NULL constraint by using the MODIFY clause.
- يمكن إضافة القيد NOT NULL باستخدام عبارة MODIFY
الصيغة العامة ALTER TABLE table
ADD [CONSTRAINT constraint ] type (column) ;
table تعبر عن اسم الجدول table is the name of the table
constraint تعبر عن اسم القيد constraint is the name of the constraint
type تعبر عن نوع القيد type is the constraint type
column تعبر عن اسم العمود المتأثر بالقيد column is the name of the column
مثال : SQL> ALTER TABLE emp
ADD CONSTRAINT emp_mgr_fk
FOREIGN KEY (mgr) REFERENCES emp (empno);
إسقاط (إنهاء) قيد Dropping a Constraint
- حذف قيد عمود المدراء من جدول EMP - Remove the manager constraint from the EMP table
مثال : SQL> ALTER TABLE emp
DROP CONSTRAINT emp_mgr_fk ;
- حذف قيد المفتاح الأساسي من جدول Dept وإسقاط قيد المفتاح الخارجي المرتبط به من جدول EMP وهو العمود Deptno باستخدام التعليمة CASCADE و التي تقوم بإسقاط القيود من الجداول الأبناء والمرتبطة مع القيد المحذوف من الجدول الأب كما في المثال التالي :
مثال : SQL> ALTER TABLE dept
DROP PRIMARY KEY CASCADE ;
إلغاء تمكين القيود Disabling Constraints
- Execute the DISABLE clause of the ALTER TABLE statement to deactivate an integrity constraint.
يتم تنفيذ عبارة DISABLE مع عبارة ALTER TABLE لتبطل عمل القيد.
- Apply the CASCADE option to disable dependent integrity constraints.
يتم تفعيل خيار CASCADE لتبطل عمل القيود المرتبطة مع قيد الجدول الأب.
الصيغة العامة ALTER TABLE table
DISABLE CONSTRAINT constraint [CASCADE] ;
table تعبر عن اسم الجدول table is the name of the table
constraint تعبر عن اسم القيد constraint is the name of the constraint
مثال : SQL> ALTER TABLE emp
DISABLE CONSTRAINT emp_empno_pk CASCADE ;
تمكين القيود Enabling Constraints
- Execute the ENABLE clause of the ALTER TABLE statement to activate an integrity constraint.
يتم تنفيذ عبارة ENABLE مع عبارة ALTER TABLE لتفعيل عمل القيد.
- A UNIQUE or PRIMARY KEY index is automatically created if you enable a UNIQUE KEY or PRIMARY KEY constraint .
يتم إنشاء فهرس المفتاح الرئيسي والمفتاح الفريد تلقائياً عند تفعيل أي من هذين القيدين.
الصيغة العامة ALTER TABLE table
ENABLE CONSTRAINT constraint ;
table تعبر عن اسم الجدول table is the name of the table
constraint تعبر عن اسم القيد constraint is the name of the constraint
مثال : SQL> ALTER TABLE emp
ENABLE CONSTRAINT emp_empno_pk ;
عرض القيود Viewing Constraints
Query the USER_CONSTRAINTS table to view all constraint definitions and names.
لإظهار كافة أسماء و تعاريف القيود يجب إجراء استفسار على جدول القيود USER_CONSTRAINTS كما في المثال التالي:
مثال : SQL> SELECT con