ORACLE & SQL Database 2 EMPNO ENAME 3 JOB 4 MGR HIREDATE SAL COMM DEPTNO 6 ------------- ------------ --------------------- -------- ---------------- ----------- -------------- 1 7839 ALI PRESIDENT 7698 AHMAD MANAGER 7782 OMAR 7566 SALM ----------- 17-NOV-81 5000 10 7839 01-MAY-81 2850 30 MANAGER 7839 09-JUN-81 2450 10 MANAGER 7839 02-APR-81 2975 20 7654 MHAMAD SALESMAN 7698 28-SEP-81 1250 1400 30 7499 ADEL SALESMAN 7698 20-FEB-81 1600 300 30 7844 JAMAL SALESMAN 7698 08-SEP-81 1500 0 30 7900 JASIM CLERK 7698 03-DEC-81 950 7521 WALED SALESMAN 7698 22-FEB-81 1250 5 30 500 30 Data Storage on Different Media SALGRADE GRADE LOSAL HISAL --------- --------- --------DEPT 1 700 1200 DEPTNO DNAME LOC 2 1201 1400 --------- -------------- ---------3 1401 2000 10 ACCOUNTING NEW YORK 4 2001 3000 20 RESEARCH DALLAS 5 3001 9999 30 SALES CHICAGO 40 OPERATIONS BOSTON Database Electronic spreadsheet Filing cabinet Definition of a Relational Database ِ هي عبارة عن مجموعة من العالقا: قاعدة البيانات العالئقية الجداول ت أَو ِ الثنائية األبعا ِد ترتبط بحقل معين يعرف بالمفتاح األساسي في الجدول األول . والمفتاح الخارجي في الجدول الثاني Database Table Name: EMP EMPNO ENAME 7839 7698 7782 ALI AHMAD OMAR 7566 SALM JOB Table Name: DEPT DEPTNO DEPTNO DNAME LOC PRESIDENT MANAGER MANAGER 10 30 10 10 20 30 COMPUTER PROGRAMING LIPRARY MOSUL BAGDAD BASRA MANAGER 20 40 ARATHMITIC ANBAR Relating Multiple Tables كل حقل من البيانات في الجدول يكون وحيد وبدون تكرار ممكن primary key (PK) أن يكون بإمكانك أن تتعامل مع البيانات منطقيا من خالل استخدامك لعدة جداول foreign keys (FK) وباستخدام المفتاح الثانوي أو األجنبي Table Name: EMP EMPNO 7839 7698 7782 7566 ENAME KING BLAKE CLARK JONES Primary key Table Name: DEPT JOB PRESIDENT MANAGER MANAGER MANAGER DEPTNO 10 30 10 20 Foreign key DEPTNO 10 20 30 40 DNAME ACCOUNTING RESEARCH SALES OPERATIONS Primary key LOC NEW YORK DALLAS CHICAGO BOSTON Communicating with a RDBMS Using SQL SQL لالتصال مع قواعد البيانات العالئقية نستخدم SQL statement is entered SQL> SELECT loc 2 FROM dept; Statement is sent to database Database Data is displayed LOC ---------MOSUL BAGDAD BASRA ANBAR • بداية أوراكل كانت في عام 1977فقد قامت مؤسسة Relation Software Incorporatedببناء نظام إلدارة قواعد بيانات )( RDBMSوأسمته Oracleقامت هذه المؤسسة بتطوير النظام باستخدام واجهة Cو SQL ثم تم اإلعالن عن اإلصدار األول Version 1عام 1979 وبعد ذلك ظهر اإلصدار الثاني .ثم أعلن عن اإلصدار الثالث Version 3في عام 1983حيث أجريت عليه الكثير من التحسينات خاصة تلك المتعلقة بلغة االستفسارات المهيكلة ( )SQLوتعزيز ألداء البرنامج كما احتوى على تحسينات أخرى كان هذا اإلصدار على عكس اإلصدارات السابقة مكتوبا بلغة Cبشكل كامل • ثم ظهر اإلصدار الرابع من Oracleفي عام 1984 وبعدها بحوالي سنة من هذا اإلصدار تم ظهور اإلصدار الخامس وقد كان هذا اإلصدار أول برنامج يدخل مفهوم Client/Serverالبرمجي الى اللغات البرمجية باستخدام SQL . Netثم ظهر اإلصدار الثامن Oracle 8في عام 1997وقد أضاف إمكانيات جديدة إلى إدارة قواعد البيانات. وخالل فترة ليست بالبعيدة ظهرت نسخة Oracle 8i المحدثة وتلتها النسختين Oracle 9i , Oracle 9 وأخيرا فقد تم إصدار Oracle 10gليمثل ثورة حقيقية في أسلوب ربط السيرفرات والعمل في بيئة أكثر سهولة والذي يتضمن العديد من الميزات والتقنيات وأدوات إدارة قواعد البيانات والسماح لوجود حقول تتسع إلى حد 4GBللحقل الواحد كحد أقصى. ما هى أال وراكل ؟ • االوراكل :أوراكل ليست لغة برمجية وإنما هي نظام إلدارة قواعد (Relation Data Base )RDBMS البيانات العالئقية Management systemو إدارة معلومات العمل المطلوبة من خالل تحويلها إلى قاعدة بيانات عملية تفيد في اتخاذ القرارات ومراقبة أداء العمل وتحسين اإلنتاجية والوصول إلى سرعة قصوى في إنجاز األعمال . على ماذا تعتمد أوراكل ؟ • لغة (Structured Query Language )SQL • لغة PL/SQLفى كتابة البرامج والـ Functions الخاصة فهي تساعد في استدعاء الروتينيات Procedures المكتوبة بلغات أخرى مثل Javaو . C-language • Oracle Developer )Structured Query Language(SQL لغة االستعالم المهيكلة • هي عبارة عن تعليمات برمجية تستخدم للتعامل مع قواعد البيانات وهذه اللغة تدعم مجموعة من اللغات البرمجية مثل Cأو VBأو Javaوغيرها ومن خاللها تستطيع الوصول إلى البيانات المخزنة وإجراء عدة عمليات عليها مثل( إضافة ،تعديل ،حذف ) في جداول تم تصميمها من خالل احد التطبيقات التي نستخدمها. )Data Definition language (DDL • القسم األول: • لغة تعريف البيانات :و هي التي تتعامل مع الهيكل األساسي للقاعدة وتستخدم لتثبيت وتغيير تركيبات أوبنية البيانات في الجدول بشكل عام وهذه االيعازات اليمكن التراجع بعد تنفيذها. • ومن أهم ايعازاتها مايلي: • Createإنشاء جدول • Drop إلغاء جدول • Alterتعديل جدول )Data manipulation language(DML • القسم الثاني : لغة معالجة البيانات :وهي اللغة التي تتعامل مع البيانات داخل الجدول ويمكن التراجع بعد تنفيذ تعليماتها النها التتعامل مع الهيكل أهم ايعازاتها مايلي: • Insertإلضافة البيانات • Update تحديث بيانات • Deleteحذف بيانات • Selectاسترجاع بيانات وعرضها. )Data Control language (DCL • القسم الثالث : لغة التحكم في البيانات وهي التي تمنح االمتيازات والصالحيات للمستخدمين أو تعمل على سحب الصالحيات وإلغاءها أهم ايعازاتها : • Grant لمنح وإعطاء الصالحيات للمستخدمين • و Revokeلسحب الصالحيات وإلغاءها. • Drop لحذف او اسقاط جدول Controlling User Access Database administrator Username and password privileges Users Privileges •Database security – System security – Data security System Privileges • More than 80 privileges are available. • The DBA has high-level system privileges: – Create new users – Remove users – Create new tables – Remove tables – Back up tables Creating Users The DBA creates users by using the CREATE USER statement. CREATE IDENTIFIED USER user BY password; SQL> CREATE 2 IDENTIFIED User created. USER ALI BY AAA; User System Privileges • Once a user is created, the DBA can grant specific system privileges to a user. GRANT privilege [, privilege...] TO user [, user...]; • An application developer may have the following system privileges: – CREATE TABLE – CREATE SEQUENCE – CREATE VIEW – CREATE PROCEDURE Granting System Privileges The DBA can grant a user specific system privileges. SQL> GRANT create table, create sequence, create view 2 TO ALI; Grant succeeded. What Is a Role? Users Manager Privileges Allocating privileges without a role Allocating privileges with a role Creating and Granting Privileges to a Role SQL> CREATE ROLE manager; Role created. SQL> GRANT create table, create view 2 to manager; Grant succeeded. SQL> GRANT manager to ALI, AHMAD; Grant succeeded. Granting Object Privileges • Grant query privileges on the EMP table. SQL> GRANT select 2 ON emp 3 TO omar, ahmad; Grant succeeded. • Grant privileges to update specific columns to users and roles. SQL> GRANT update (dname, loc) 2 ON dept 3 TO ALI, Adel; Grant succeeded. Using WITH GRANT OPTION • Give a user authority to pass along the privileges. SQL> GRANT select, insert 2 ON dept 3 TO ALI 4 WITH GRANT OPTION; Grant succeeded. Revoking Object Privileges As user Alice, revoke the SELECT and INSERT privileges given to user ALI on the DEPT table. SQL> REVOKE select, insert 2 ON dept 3 FROM ALI; Revoke succeeded. عبارة التكوين CREATE TABLE • بداية يجب أن يكون لديك امتياز إنشاء جدول ومساحة للتخزين ويجب أن تخصص اسم للجدول وأسماء األعمدة وأنواع البيانات لكل منها وقياس كل عمود : الصيغة العامة: tablename CREATE TABLE ; ) ]( column datatype [DEFAULT expr لتكوين جدول الموظفين:مثال SQL>CREATE TABLE ( emp empno NUMBER(6), ename VARCHAR2(14), Jop VARCHAR2(14), Hiredate date, Sal NUMBER(10,3), Comm NUMBER(10,3), Deptno NUMBER(2) NOT NULL ); لتكوين جدول األقسام:مثال SQL>CREATE TABLE DEPTNO dept ( NUMBER(2 ) NOT NULL, DNAME VARCHAR2(14), LOC VARCHAR2(13) ); SQL> DESCRIBE dept Name ---------DEPTNO DNAME LOC Null? -------NOT NULL Type --------NUMBER(2) VARCHAR2(14) VARCHAR2(14) INSERT عبارة اإلدخال • الصيغة العامة SQL>INSERT INTO table [ (column1, column)] VALUES (value, value…(; :مثال SQL> INSERT INTO dept (deptno, dname, Loc) VALUES ( 10, ‘Computer' , ‘Mosul' ( ; SQL>COMMIT ; مالحظة: يمكن تخصيص قيمة افتراضية للعمود أثناء عملية اإلدخال كما في المثال التالي : Hiredate DATE DEFAULT SYSDATE , …….. إدخال قيم خاصة باستخدام التوابع Special Value Inserting : مثال SQL> INSERT INTO emp (empno, ename, job, hiredate, Sal, comm, deptno) VALUES ( 15, 'Ali' , 'programmer ' , SYSDATE, 2000, NULL, 10 ) ; في المثال السابق بإدراج قيمةSYSDATE يقوم التابع hiredate التاريخ الحالي ضمن الحقل : للتحقق نضع SQL> SELECT * FROM emp WHERE empno = 15 ; EMPNO -----15 ENAME ---------ali JOB HIREDATE SAL --------- -------------- ---------- 17/04/2013 2000 programmer COMM -------- DEPTNO ---------10 EMP EMPNO ENAME JOB HIREDATE SAL COMM DEPTNO --------- ---------- --------- --------- --------- --------- --------15 ALI PRESIDENT 17-NOV-81 2000 10 7698 AHMAD MANAGER 01-MAY-81 7782 OMAR MANAGER 09-JUN-81 7566 SALM MANAGER 02-APR-81 7654 MOHAMAD SALESMAN 28-SEP-81 7499 ADEL SALESMAN 20-FEB-81 7844 JAMAL SALESMAN 08-SEP-81 7900 JASIM CLERK 03-DEC-81 DEPTNO DNAME LOC WALED SALESMAN ---------7521 -----------------------22-FEB-81 10 COMPUTER MOSUL 20 PROGRAMMER BAGDAD 30 LIPRARY BASRA 40 ANLYSES ANBAR DEPT 2850 2450 2975 1250 1600 1500 950 1250 1400 300 0 500 30 10 20 30 30 30 30 30 SQL> UPDATE emp SET deptno = 15 WHERE deptno = 16 ; SQL> COMMIT ; SQL>DELETE FROM emp ; SQL>ROLLBACK ; :الصيغة العامة DROP TABLE table_name; DROP TABLE employee; لو كان الجدول مرتبط بعالقات مع جدول آخر فقط نضيف CASCADE CONSTRAINTS DROP TABLE stud CASCADE CONSTRAINTS; عبارة • SELECT ename, sal FROM emp ORDER BY sal ASC ; • SELECT ename, sal FROM emp ORDER BY sal DESC; Group Byعبارة SQL> SELECT From deptno , AVG ( sal ) emp GROUP BY deptno ; DEPTNO AVG(SAL) ---------- -------------- 10 2916.66667 20 2175 30 1566.66667 Aggregating Data Using Group Functions What Are Group Functions? Group functions operate on sets of rows to give one result per group. EMP DEPTNO SAL --------- --------10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250 “maximum salary in the EMP table” MAX(SAL) --------5000 Types of Group Functions • AVG • COUNT • MAX • MIN • SUM Using Group Functions SELECT FROM [WHERE [GROUP BY [ORDER BY [column,] group_function(column) table condition] column] column]; Using AVG and SUM Functions You can use AVG and SUM for numeric data. SQL> SELECT 2 3 FROM 4 WHERE AVG(sal), MAX(sal), MIN(sal), SUM(sal) emp job LIKE ‘manager%'; AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL) -------- --------- --------- --------1400 1600 1250 5600 SQL> SELECT 2 FROM MIN(hiredate), MAX(hiredate) emp; MIN(HIRED MAX(HIRED --------- --------17/3/2010 12/1/2013 Using the COUNT Function COUNT(*) returns the number of rows in a table. SQL> SELECT 2 FROM 3 WHERE COUNT(*) --------6 COUNT(*) emp deptno = 30; Using the COUNT Function COUNT(expr) returns the number of nonnull rows. SQL> SELECT 2 FROM 3 WHERE COUNT(COMM) ----------4 COUNT(comm) emp deptno = 30; Group Functions and Null Values Group functions ignore null values in the column. SQL> SELECT AVG(comm) 2 FROM emp; AVG(COMM) --------550 Creating Groups of Data EMP DEPTNO SAL --------- --------10 2450 10 5000 10 1300 20 800 20 1100 20 3000 20 3000 20 2975 30 1600 30 2850 30 1250 30 950 30 1500 30 1250 2916.6667 “average DEPTNO AVG(SAL) salary ------- --------in EMP 2175 10 2916.6667 table 20 2175 for each department” 30 1566.6667 1566.6667 معدل الراتب لكل قسم Using the GROUP BY Clause All columns in the SELECT list that are not in group functions must be in the GROUP BY clause. SQL> SELECT deptno, AVG(sal) 2 FROM emp 3 GROUP BY deptno; DEPTNO AVG(SAL) --------- --------10 2916.6667 20 2175 30 1566.6667 Using the GROUP BY Clause The GROUP BY column does not have to be in the SELECT list. SQL> SELECT AVG(sal) 2 FROM emp 3 GROUP BY deptno; AVG(SAL) --------2916.6667 2175 1566.6667 Grouping by More Than One Column EMP DEPTNO --------10 10 10 20 20 20 20 20 30 30 30 30 30 30 JOB SAL --------- --------MANAGER 2450 PRESIDENT 5000 CLERK 1300 CLERK 800 CLERK 1100 ANALYST 3000 ANALYST 3000 MANAGER 2975 SALESMAN 1600 MANAGER 2850 SALESMAN 1250 CLERK 950 SALESMAN 1500 SALESMAN 1250 “sum salaries in the EMP table for each job, grouped by department” DEPTNO -------10 10 10 20 20 20 30 30 30 JOB SUM(SAL) --------- --------CLERK 1300 MANAGER 2450 PRESIDENT 5000 ANALYST 6000 CLERK 1900 MANAGER 2975 CLERK 950 MANAGER 2850 SALESMAN 5600 معدل الراتب لكل وظيفة :مثال كون استعالم لعرض رقم المشروع و اسم المشروع و عدد العاملين في هذه المشاريع مرتبة على شكل مجاميع؟ SELECT PNUMBER , PNAME , COUNT FROM PROJECT GROUP BY ; PNUMBER , PNAME COUNT -------- PNAME ----------------- PNOUMBER -------------- 120 M11 12 150 k22 22 110 P88 23 PL/SQLلغة اإلجراءات • لغة PL/SQLهي امتداد للغة SQLوبمميزات لغات البرمجة .تعمل على معالجة البيانات وعبارات االستعالم وتتضمن وحدات برمجية وهي البروسيجر .وتعتبر اللغة البرمجية الخاصة بنظام أوراكل وهي أداة برمجية قوية جدا (Procedure وكلمة PL/SQLاختصارا لـ ) Language/ Structure Query Language وتستخدم هذه اللغة لتجهيز نظام Oracleفي أدوات التطوير المنتجة من قبل شركة Oracleوهي تعتبر أساس برنامج بناء النماذج Oracle Formsو Oracle Reportsوتستخدم هذه اللغة أيضا لتعريف نموذج ما والقيام ببعض الحسابات الخاصة في التقرير . PL/SQL Environment PL/SQL engine PL/SQL block PL/SQL block PL/SQL SQL Procedural Statement Executor SQL Statement Executor Oracle Server ORACLE DEVELOPER وهو برنامج تطبيقي منفصل عن أوراكل نستطيع أن نقول وجد لخدمة أوراكل ومهمته تطوير التطبيقات التي تتصل بقواعد بيانات أوراكل ومن أهم استخداماته هي مايلي: • يستخدم في عمل الواجهات والنماذج الـ Forms • يستخدم في تطوير التطبيقات الكبيرة الجيدة والقابلة للصيانة ويوفر تطبيقات كفوءة وقياسية. • يعرض التطبيقات على الشبكة العنكبوتية WWW واالنترنت. Developer Component مكونات ديفيلوبر يتكون الـ Developer 6iمن البرامج التالية: • برنامج لتصميم النماذج Form Builder • برنامج لبناء التقارير Report Builder • برنامج لبناء الرسومات Graphics Builder -1برنامج تصميم النماذج Form Builder يستخدم هذا البرنامج في بناء النماذج والواجهات ألي نظام بعد أن نكون قد كونا قاعدة بيانات وباستخدام لغة SQLوالمعلومات المخزونة في قاعدة البيانات ويستخدم في إدارة عمليات اإلضافة ،االسترجاع عن طريق النماذج والتحكم بالخصائص المختلفة للعناصر Itemsوبناء القادحة Triggerالخاصة بكل وحدة من هذه العناصر في مصمم النماذج .يقوم هذا البرنامج بإضافة الصور في النماذج واستدعاء التقارير أو بناء الواجهة المستقلة ويكون بثالثة أنواع : • Form Module • Menu Module • Library Module • Form Module نموذج الواجهة :هو النموذج الرئيسي ويتكون من مجموعة العناصر Itemsيتمكن المستخدم من خاللها االتصال والتعامل مع قاعدة البيانات والتي سبق وان كونها باستخدام الـ . SQL • :Menu Module نموذج القوائم :يحتوي على القائمة ورمز القائمة التي تتصل مع الواجهة .Form • :Library Module نموذج المكتبات Pl/SQL :وهو مجموعة من اإلجراءات والدوال ،الحزم التي يتم استدعائها من قبل نموذج في التطبيق. -2برنامج بناء التقارير Report Balder يكون بناء التقارير بعدة صيغ واشكال فقد يكون بصيغة جدولية او بشكل صفة رئيسية او فرعية او بشكل مصفوفة وغير ذلك. -3برنامج بناء الرسومات Graphic :Builder يعمل على عرض البيانات وتطوير التطبيقات الرسومية مثل المخططات الرسومية والتحليلية.