Professional Documents
Culture Documents
1
الصيغة العامة لجملة SELECT
SELECT *
استرجاع البيانات لسترجاع جميع الحقول من الجدول
Columns Alias
اسم الحقل أو الحقول المراد استرجاعها من الجدول السماء المستعارة للحقول
;
للعلن عن نهاية المر
إظهار البناء الداخلي للجدول باستخدام المر (DESCRIBE (DESC استخدام عبارة DISTINCTلمنع تكرار السجلت
;SQL>DESC emp ;SQL>SELECT DISTINCT deptno FROM emp
2
WHERE جملة الشرط
لحصر الصفوف علي أساس شرط معين
تعبيرات حسابية قيم ثابتة سواء كانت عددية أو نصية معاملت مقارنة أسماء حقول
Comparison Operators Columns
ACCESS ( التصميم
WHERE hiredate استعلم ــ عرض
= '01-JAN-99' ; ) عند استخدام Column hiredate #1/1/1999#
WHERE sal >=1500 ; Column sal >=1500
WHERE ename = 'JAMAL' ; Column ename "JAMAL"
WHERE sal <= comm ; Column sal <=[comm]
WHERE sal BETWEEN 1500 AND 3000 ; Column sal between 1500 and 3000
WHERE mgr IN (101,102,105) ; Column mgr in (101;102;105)
WHERE ename LIKE 'J%' ; Column ename like "J*"
WHERE hiredate LIKE '%99' ; Column hiredate like "*1999" or "*99"
WHERE ename LIKE '_A%' ; Column ename like '?A*' ;
WHERE mgr IS NULL ; Column mgr is null
WHERE sal >=1500 AND job = 'CLERK' ; Column sal >=1500 AND Column job "CLERK"
WHERE sal >1500 AND comm < 1000 Column sal >1500 AND Column comm<1000
WHERE sal >1500 OR job = 'CLERK' ; Column sal >1500 OR Column job "CLERK"
WHERE sal NOT BETWEEN 1500 AND 3000 ; Column sal not between 1500 and 3000
WHERE job NOT IN ('CLERK', 'MANAGER') ; Column job not in ("CLERK";"MANAGER")
WHERE ename NOT LIKE '%J%' ; Column ename not like "*J*"
WHERE comm IS NOT NULL ; Column comm is not null
ORDER BY sal DESC 3
SQL FUNCTIONS
أنواع الدوال ) عند استخدام جملة (select
COUNT
عدد القيم أو عدد الصفوف مع تجاهل القيم الفارغة NULL
STDDEV
النحراف المعياري لمجموعة من القيم
VARIANCE
مقدار التباين )التشتت( لمجموعة من القيم
4
Character Functions
دوال حرفية
تتعامل مع البيانات الحرفية وتكون نتيجتها إما حروفا أو أرقاما ويمكن استخدمها في أي جزء من جملة selectما عدا الجزء form
Access
)'LOWER ('column' \ 'expression )(Lcase تستخدم لتحويل جميع الحروف )عمود أو سلسلة( إلي حروف صغيره
)'UPPER ('column' \ 'expression )(ucase تستخدم لتحويل جميع الحروف )عمود أو سلسلة( إلي حروف كبيرة
)'INITCAP ('column' \ 'expression تستخدم لتحويل الحرف الول فقط من )عمود أو سلسلة( إلى حرف كبير
وباقي الحروف تحول إلى حروف صغيرة
CONCAT ('column1' \ 'expression1' , تستخدم لربط عمودين أو سلسلتين معا وهي مثل أداة الربط ) || (
(''column2' \ 'expression2 ) لوضع فاصل بين العمدة نكتب ||' ' || (
)SUBSTR ('column' \ 'expression1',m,n) (mid تستخدم لقطع جزء من عمود أو سلسلة بداية من الحرف رقم m
وعدد الحروف المقطوعة هي n
)LENGTH ('column' \ 'expression') (len تستخدم ليجاد عدد حروف السلسة أو العمود
('INSTR ('column' \ 'expression1','m تستخدم لتحديد مكان حرف معين داخل سلسلة أو عمود والحرف m
يعبر عن الحرف المراد تحديد مكانه
('LPAD ('column' \ 'expression1',n,'string تستخدم لضبط بيانات عمود أو سلسة لناحية اليمين وذلك بملء حرف
معين من اليسار والحرف nلتحديد الطول بعد الضبط
('RPAD ('column' \ 'expression',n,'string تستخدم لضبط بيانات عمود أو سلسلة لناحية اليسار وذلك بملء حرف
معين من اليمين والحرف nلتحديد الطول بعد الضبط
('TRIM ('character' FROM 'column' \ 'expression تستخدم لقطع حرف معين من بداية أو نهاية الكلمة فقط
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
`
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
)SQL>SELECT LOWER(ename) , UPPER(job) , INITCAP(job) , CONCAT(ename , job
FROM emp
; WHERE sal=3000
) 'SQL>SELECT ename , SUBSTR(ename,2,3) , LENGTH(ename) , INSTR( ename ,'J
FROM emp
; 'WHERE LOWER(job)='manager
Number
SQL>SELECT ename , TRIM('J' FROM )enameFunctions
)', LPAD(ename,10,'*') , RPAD(ename , 10 ,'#
FROM emp
; WHERE sal=3000 دوال رقمية
دالة تستخدم لقص عدد معين من الجزء العشري مع تقريب العداد إلي أقرب عدد عشري أو إلي عدد صحيح والحرف nيبين عدد الرقام بعد
العلمة العشرية ،وتوجد حالت للحرف n
إذا كان ) (n=0فإن التقريب يكون إلي أقرب عدد صحيح .1
إذا كان ) (n>0أي عدد موجب فإن التقريب يكون في الجزء بعد العلمة العشرية )الجزء العشري( .2
إذا كان ) (n<0أي عدد سالب فإن التقريب يكون في الجزء قبل العلمة العشرية )الجزء الصحيح( .3
; SQL>select round(45.923,0) , round(45.923.2) , round(45.923,-1) , round(45.923,-2) from dual
46 45.92 50 0
دالة تستخدم لقص عدد معين من الجزء العشري بدون تقريب ،وتوجد حالت للحرف n
إذا كان ) (n=0فأنة يتم قص الجزء العشري كله ويكون الناتج عدد صحيح .1
إذا كان ) (n>0أي عدد موجب فإن القص يكون في الجزء بعد العلمة العشرية )الجزء العشري( .2
إذا كان ) (n<0أي عدد سالب فإن القص يكون في الجزء قبل العلمة العشرية )الجزء الصحيح( .3
; SQL>select trunc(45.923,0) , trunc(45.923.2) , trunc(45.923,-1) , trunc(45.923,-2) from dual
45 45.92 40 0
452
(MOD (m ,n
Date Functions
دوال التاريخ
JAN_FEB_MAR_APR_MAY_JUN_JUL_AUG_SEP_OCT_NOV_DEC
SYSDATE دالة تستخدم لعرض تاريخ النظام الموجود بجهاز الحاسب اللي )تاريخ اليوم الحالي(
)ADD_MONTHS (date,n دالة لضافة عدد معين من الشهر علي تاريخ معطي
)'NEXT_DAY (date,'day دالة ليجاد تاريخ يوم معين بعد تاريخ معطي
453
MONTHS_BETWEEN ('01-JAN-95','11-JAN-94')
ADD_MONTHS ('11-JAN-94',6)
NEXT_DAY ('01-SEP-95','FRIDAY')
LAST_DAY ('01-SEP-95')
ROUND ('25-JUL-95','MONTH')
ROUND ('25-JUL-95','YEAR')
TRUNC ('25-JUL-95','MONTH')
TRUNC ('25-JUL-95','YEAR')
SQL>SELECT SYSDATE FROM dual ;
454
Conversion Functions
دوال التحويل
TO_DATE لظهار السنة كاملة كتابة ) ( TOW THOUSSAND FOURوحالة أحرف الكتابة تتوقف علي)'(CHAR ,'fmt
YEAR
YEARالحرفية إلي بيانات من نوع التاريخ بشكل معين ) ( FORMATحسب الطلب frm
كلمةالبيانات أحرف
لتحويل حالة
تستخدم
SQL>SELECT
MM TO_DATE ('FEBRUARY 22,1981','MONTH DD,YYYY') 01 FROM dual
شكل رقمين لظهار الشهر ;في
22-FEB-1981
MONTH لظهار الشهر كتابة ) ( JANURY
HH12:MI:SS AM لظهار الوقت بنظام 12ساعة وهل هو صباحا أم مساء ) ( PM 04:30:50
455
MULTIPLE - ROW FUNCTION
الدوال التجميعية
قيمة واحدة عدة صفوف
GROUP FUNCTIONS
الدوال التجميعية لكثر من صف
SUM MAX
مجموع عدد من القيم أكبر قيمة من بين مجموعة من القيم
; SQL>SELECT SUM (sal) FROM emp
AVG
المتوسط الحسابي لمجموعة من القيم
MIN
أقل قيمة من بين مجموعة من القيم STDDEV DEVIATION
النحراف المعياري لمجموعة من القيم
COUNT VARIANCE
عدد القيم أو عدد الصفوف مع تجاهل القيم الفارغة NULL مقدار التباين )التشتت( لمجموعة من القيم
GROUP BY
لتقسيم البيانات إلي مجموعات علي حسب عمود معين أو أكثر
456
DISPLAYING DATA FROM MULTIPLE TABLES
عرض البيانات من أكثر من جدول
Types of Joins
أنواع الربط
457
SUBQUERIES
الستعلمات الفرعية
الستعلمات الفرعية الحادية الصف وتكون نتيجتها صف واحد فقط Single-Row Subqueries
SQL>SELECT ename , sal , deptno FROM emp
; ) 'WHERE deptno =( SELECT deptno FROM emp WHERE ename ='jamal
; ) SQL>SELECT ename , job , sal FROM emp WHERE sal =( select MIN(sal) from emp
SOL>SELECT deptno , MIN(sal) FROM emp GROUP BY deptno
; ) HAVING MIN(sal) > ( select MIN(sal) from emp where deptno =20
) SQL>SELECT ename,job FROM emp WHERE job =( select job from emp where empno = 2
; ) AND sal > ( select sal from emp where empno = 4
مقارنة قيمة بكل ما هو موجود داخل قائمة ALL المساواة بأي قيمة داخل قائمة IN
معناها أقل من أقل قيمة داخل قائمة >ALL مقارنة قيمة بأي قيم داخل قائمة ANY
معناها أكبر من أعلي قيمة داخل قائمة <ALL معناها أقل من أكبر قيمة داخل قائمة >ANY
معناها أكبر من أقل قيمة داخل قائمة <ANY
458
MULTIPLE – COLUMN SUBQUERIES
الستعلم الفرعي المتعدد العمدة
عندما تكون نتيجة الستعلم الفرعي NULLأي إنه ل توجد نتيجة للستعلم الفرعي في هذه الحالة ل يكون للستعلم الرئيسي أي نتيجة
ويعطي الرسالة التالية ) (no rows selectedوتعني أنه ل يوجد أي صفوف مطابقة للشرط في جملة whereالموجودة داخل الستعلم
الرئيسي
SQL>SELECT order_id , product_id , quantity FROM item WHERE ( product_id , quantity) IN
; ( select product_id , quantity from item where order_id = 700 ) AND order_id <> 700
حيث رقم الطلب 700غير مسجل داخل الجدول
التعديل في بيانات سجل أو سجلت معينة داخل جدول عن طريق استخدام جملة التعديل )(UPDATE
الصيغة العامة لتعديل البيانات داخل الجدول
جدول SQL>UPDATE
.....عامود = 1قيمة , 1عامود = 2قيمة SET 2
شرط ; هذا الشرط لختيار سجلت )صفوف( معينة للتعديل فيها وبدون هذا الشرط سوف يتم التعديل في جميع السجلت WHERE
القواعد التي يجب التقيد بها عند التعديل
يجب أن يكون نوع البيانات الجديدة من نفس نوع بيانات العمدة المطلوب التعديل فيها .1
عند تعديل قيم التاريخ أو النصوص يجب وضع القيم الجديدة بين علمتي التنصيص الفردية )' '( .2
تعديل أسم الدارة رقم )(30
; SQL>UPDATE dept SET dname ='education' WHERE deptno =30
التعديل في أكثر من عامود
) 'SQL>UPDATE emp SET ( job , deptno ) = ( select job , deptno from emp where ename = 'ward
; 'WHERE ename ='blake
حذف سجل أو سجلت معينة داخل جدول عن طريق استخدام جملة الحذف )(DELETE FROM
الصيغة العامة لحذف البيانات من الجدول
جدول SQL>DELETE FROM
بدون هذا الشرط سوف يتم حذف جميع السجلت ) الصفوف WHERE ) شرط ;
حذف الدارة رقم ) (40من جدول الدارات
; SQL>DELETE FROM dept WHERE deptno = 40
حذف جميع الموظفين من جدول الموظفين ) يمكن استرجاع البيانات المحذوفة عن طريق المر ( ROLLBACK
; SQL>DELETE FROM emp
حذف جميع الموظفين المسجلين في الدارة التي لها اسم ) ( sales
; )'SQL>DELETE FROM emp WHERE deptno = (select deptno from dept where dname ='sales
عند حذف الدارة رقم ) (10من جدول الدارات
; SQL>DELETE FROM dept WHERE deptno = 10
ERROR at line 1ORA-02292:integrity constraint(USR.EMP_DEPTNO_FK)Vaiolated-child record found
ل يمكن هنا حذف الدارة رقم ) (10لوجود موظفين مسجلون في هذه الدارة داخل جدول )(emp
ملحظة access :قام بحذف الدارة رغم وجود موظفين مسجلين فيها
461
أنواع الجداول في بيئة قواعد البيانات أوراكل
.1جداول تنشأ عن طريق المستخدمين USER TABLESوهي مجموعة من الجداول ينشئها المستخدم ويتم التعامل معها من
خلله
.2جداول يتم إنشاؤها عن طريق خادم أوراكل ORACLE SERVERوهي مجموعة من الجداول تسمي DATA
DICTIONARYحيث يتم إنشاؤها بواسطة أوراكل وهي تحتوي علي معلومات عن قاعدة البيانات
وتنقسم إلي عدة فئات هي
.1الفئة ) : (_USERوتحتوي علي معلومات حول الكائنات الخاصة بالمستخدمين مثل الجداول
.2الفئة ) : (_ALLوتحتوي علي معلومات عن كل الجداول والعلقات التي يمكن للمستخدمين الدخول عليها
.3الفئة ) : (_DBAوتحتوي علي معلومات خاصة بمدير قواعد البيانات ) (DBAول يمكن لحد الدخول عليها
واستخدامها
عرض معلومات حول الجداول التي يملكها المستخدمون باستخدام ) (DATA DICTIONARY
; SQL>SELECT * FROM user_table
عرض اسم ونوع الكائنات التي يمتلكها المستخدمون
; SQL>SELECT object_name , object_type FROM user_objects
عرض أسماء ونوع الجداول والكائنات التي أنشأها المستخدم
CONSTRAINTS
القيود علي الجداول
أنواع القيود
: NOT NULLيمنع هذا القيد ترك عامود معين فارغ ) لبد أن يتم إدخال قيمة للعمود( ،حيث يطبق علي مستوي العمود فقط
: UNIQUEيمنع هذا القيد تكرار القيم داخل العامود ،حيث يطبق علي مستوي العمود أو الجدول
: PRIMARY KEYيستخدم لعمل مفتاح أساسي داخل الجدول ،والمفتاح الساسي يتميز بعدم تكرار القيم ،وعدم ترك القيم فارغة
حيث يطبق علي مستوي العمود أو الجدول
: FOREIGN KEYيستخدم لعمل مفتاح ربط بين جدولين ،حيث يطبق علي مستوي العمود أو الجدول
: CHECKيستخدم لختبار قيمة عمود بحيث ل يقبل هذا العمود إل قيم حسب شرط معين ،حيث يطبق علي مستوي العمود أو الجدول
إنشاء القيود Create a Constraint
عمل القيود أثناء إنشاء الجدول .1
عمل القيود بعد إنشاء الجدول .2
إنشاء القيود أثناء إنشاء جدول الدارات وتطبيقها علي مستوي العمدة
)SQL>CREATE TABLE dept (deptno NUMBER(2 PRIMARY KEY ,
dname VARCHAR2(14) NOT NULL ,
loc )VARCHAR2(13 ;)
إنشاء القيود أثناء إنشاء جدول الدارات وتطبيقها علي مستوي الجدول
SQL>CREATE TABLE dept (deptno NUMBER(2) ,
dname VARCHAR2(14) NOT NULL ,
loc VARCHAR2(13) ,
)CONSTRAINT dept_deptno_pk PRIMARY KEY (deptno ;)
الفرق بين الطريقتين هو أننا نستطيع حذف القيد إذا كان علي مستوي الجدول حيث تم تسمية القيد هنا باسم ) ( dept_deptno_pk
إنشاء القيد ) (UNIQUEأثناء إنشاء جدول الدارات وتطبيقية علي مستوي الجدول
)SQL>CREATE TABLE dept (deptno NUMBER(2 ,
dname VARCHAR2(14) ,
loc VARCHAR2(13) ,
; ) )CONSTRAINT dept_deptno_uk UNIQUE (dname
462
( في جدول الموظفين وتطبيقه علي مستوي العمودdeptno) ( علي العمودforeign key) إنشاء القيد
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(2) REFERENCES dept(deptno) ;
( في جدول الموظفين وتطبيقه علي مستوي الجدولdeptno) ( علي العمودforeign key) إنشاء القيد
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(2) ,
CONSTRAINT emp_deptno_fk FOREIGN KEY (deptno) REFERENCES dept(deptno) ;
( 10 - 99 ( في جدول الدارات وتطبيقة علي مستوي الجدول )هنا تم حصر القيم بينdeptno) ( علي العمودCHECK) إنشاء القيد
SQL>CREATE TABLE dept (deptno NUMBER(2) ,
dname VARCHAR2(14) ,
loc VARCHAR2(13) ,
CONSTRAINT dept_deptno_ck CHECK (deptno BETWEEN 10 AND 99 ) ) ;
463
استعراض القيود المطبقة علي جدول معين
ومنData Dictionary إن نظام أوراكل يقوم بإنشاء جداول لتسجيل التغييرات التي تتم في قاعدة البيانات وهذه الجداول تسمي
خللها يمكن عرض القيود المطبقة علي جدول معين
عرض القيود المختلفة المطبقة علي جدول الموظفين
SQL>SELECT constraint_name , constraint_type
FROM user_constraints
WHERE table_name = 'EMP' ;
CONSTRAINT_NAME C
SYS_C00674 C
SYS_C00675 C
EMP_EMPNO_PK P
FK_DEPTNO R
( عبارة عن حرف واحد يدل علي نوع القيد ومعني هذه الحروف كما يليconstraint_type) إن ناتج عامود أنواع القيود
CHECK يعني أن نوع القيد هوC الحرف .1
Primary key يعني أن نوع القيد هوP الحرف .2
Foreign key يعني أن نوع القيد هوR الحرف .3
Unique يعني أن نوع القيد هوU الحرف .4
CHECK فيظهر مثل القيدNOT NULL أما نوع القيد .5
عرض أسماء العمدة وأسماء القيود المطبقة عليها
SQL>SELECT constraint_name , column_name
FROM user_cons_column
WHERE table_name = 'EMP' ;
Data Definition
Create table Add a new table to the database
Drop table Removes a table from the database
Alter table Changes the structure of an existing table
Create view Add a new view to the database
Drop view Removes a view from the database
Create index Builds an index for a column
Drop index Removes the index for a column
Create schema Add a new schema to the database
Drop schema Removes a schema from the database
Create domain Add a new data value domain
Alter domain Changes a domain definition
Drop domain Removes a domain from the database
Programmatic SQL
Declare Defines a cursor for a query
Explain Describes the data access plan for a query
Open Opens a cursor to retrieve query results
Fetch Retrieves a row of query results
Close Closes a cursor
Prepare Prepares a SQL statement for dynamic execution
Execute Executes a SQL statement dynamically
Describe Describes a prepared query
464
465