880 likes | 1.35k Views
ORACLE & SQL. 2. 3. 4. 6. 5. 1. Database. EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ------------- ------------ --------------------- -------- ---------------- ----------- -------------- -----------
E N D
2 3 4 6 5 1 Database EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ------------- ------------ --------------------- -------- ---------------- ----------- -------------- ----------- 7839 ALI PRESIDENT 17-NOV-81 5000 10 7698 AHMAD MANAGER 7839 01-MAY-81 2850 30 7782 OMAR MANAGER 7839 09-JUN-81 2450 10 7566 SALM 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 30 7521 WALED SALESMAN 7698 22-FEB-81 1250 500 30
Database Electronic spreadsheet Filing cabinet Data Storage on Different Media SALGRADE GRADE LOSAL HISAL --------- --------- --------- 1 700 1200 2 1201 1400 3 1401 2000 4 2001 3000 5 3001 9999 DEPT DEPTNO DNAME LOC --------- -------------- ---------- 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
Table Name: EMP Table Name: DEPT EMPNO ENAME JOB DEPTNO 7839 ALI PRESIDENT 10 7698 AHMAD MANAGER 30 7782 OMAR MANAGER 10 7566 SALM MANAGER 20 DEPTNO DNAME LOC 10 COMPUTER MOSUL 20 PROGRAMING BAGDAD 30 LIPRARY BASRA 40 ARATHMITIC ANBAR Definition of a Relational Database قاعدة البيانات العلائقية :هي عبارة عن مجموعة من العلاقاتِ أَو الجداولِ الثنائية الأبعادِ ترتبط بحقل معين يعرف بالمفتاح الأساسي في الجدول الأول والمفتاح الخارجي في الجدول الثاني . Database
Primary key Foreign key Primary key Relating Multiple Tables • كل حقل من البيانات في الجدول يكون وحيد وبدون تكرار ممكن أن يكون primary key (PK) • بإمكانك أن تتعامل مع البيانات منطقيا من خلال استخدامك لعدة جداول وباستخدام المفتاح الثانوي أو الأجنبي foreign keys (FK) Table Name: EMP Table Name: DEPT EMPNO ENAME JOB DEPTNO 7839 KING PRESIDENT 10 7698 BLAKE MANAGER 30 7782 CLARK MANAGER 10 7566 JONES MANAGER 20 DEPTNO DNAME LOC 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON
SQL statementis entered Statement is sent to database SQL> SELECT loc 2 FROM dept; Database Data is displayed LOC ---------- MOSUL BAGDAD BASRA ANBAR Communicating with a RDBMS Using SQL للاتصال مع قواعد البيانات العلائقية نستخدم SQL
• بداية أوراكل كانت في عام 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 9 , Oracle 9i وأخيرا فقد تم إصدار Oracle 10g ليمثل ثورة حقيقية في أسلوب ربط السيرفرات والعمل في بيئة أكثر سهولة والذي يتضمن العديد من الميزات والتقنيات وأدوات إدارة قواعد البيانات والسماح لوجود حقول تتسع إلى حد 4GB للحقل الواحد كحد أقصى.
ما هى ألا وراكل ؟ • الاوراكل :أوراكل ليست لغة برمجية وإنما هي نظام لإدارة قواعد البيانات العلائقية (RDBMS)Relation Data Base Management system و إدارة معلومات العمل المطلوبة من خلال تحويلها إلى قاعدة بيانات عملية تفيد في اتخاذ القرارات ومراقبة أداء العمل وتحسين الإنتاجية والوصول إلى سرعة قصوى في إنجاز الأعمال .
على ماذا تعتمد أوراكل؟ • لغة (SQL)Structured Query Language • لغة PL/SQLفى كتابة البرامج والـ Functions الخاصة فهي تساعد في استدعاء الروتينيات Proceduresالمكتوبة بلغات أخرى مثل Java و C-language . • Oracle Developer
Structured Query Language(SQL)لغة الاستعلام المهيكلة • هي عبارة عن تعليمات برمجية تستخدم للتعامل مع قواعد البيانات وهذه اللغة تدعم مجموعة من اللغاتالبرمجية مثلC أو VB أو Java وغيرها ومن خلالها تستطيع الوصول إلى البيانات المخزنة وإجراء عدة عمليات عليها مثل( إضافة ، تعديل ، حذف ) في جداول تم تصميمها من خلال احد التطبيقات التي نستخدمها.
ايعازات لغة SQL • Data Definition Language (DDL) • Data Manipulation Language (DML) • Data Control Language (DCL)
(DDL) Data Definition language • القسم الأول: • لغة تعريف البيانات : و هي التي تتعامل مع الهيكل الأساسي للقاعدة وتستخدم لتثبيت وتغيير تركيبات أوبنية البيانات في الجدول بشكل عام وهذه الايعازاتلايمكن التراجع بعد تنفيذها. • ومن أهم ايعازاتهامايلي: • Createإنشاء جدول • Dropإلغاء جدول • Alter تعديل جدول
Data manipulation language(DML) • القسم الثاني : لغة معالجة البيانات : وهي اللغة التي تتعامل مع البيانات داخل الجدول ويمكن التراجع بعد تنفيذ تعليماتها لانهالاتتعامل مع الهيكل أهم ايعازاتهامايلي: • Insert لإضافة البيانات • Update تحديث بيانات • Delete حذف بيانات • Select استرجاع بيانات وعرضها.
Data Control language (DCL) • القسم الثالث : لغة التحكم في البيانات وهي التي تمنح الامتيازات والصلاحيات للمستخدمين أو تعمل على سحب الصلاحيات وإلغاءها أهم ايعازاتها: • Grantلمنح وإعطاء الصلاحيات للمستخدمين • و Revoke لسحب الصلاحيات وإلغاءها. • Drop لحذف اواسقاط جدول
Controlling User Access
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 USER user IDENTIFIED BY password; SQL> CREATE USER ALI 2 IDENTIFIED BY AAA; User created.
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 • بداية يجب أن يكون لديك امتياز إنشاء جدول ومساحة للتخزين ويجب أن تخصص اسم للجدول وأسماء الأعمدة وأنواع البيانات لكل منها وقياس كل عمود : الصيغة العامة: CREATE TABLE tablename ( 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 dept ( DEPTNO NUMBER(2 ) NOT NULL, DNAME VARCHAR2(14), LOC VARCHAR2(13) ); SQL> DESCRIBE dept Name Null? Type ---------- -------- --------- DEPTNO NOT NULL NUMBER(2) DNAME VARCHAR2(14) LOC 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 , ……..
إدخال قيم خاصة باستخدام التوابعInserting Special Value مثال : 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 ENAME JOB HIREDATE SAL COMM DEPTNO ------ ---------- --------- -------------- ---------- -------- ---------- 15 ali programmer 17/04/2013 2000 10
DEPTNO DNAME LOC --------- -------------- ---------- 10 COMPUTER MOSUL 20 PROGRAMMER BAGDAD 30 LIPRARY BASRA 40 ANLYSES ANBAR DEPT Tables Used EMP EMPNO ENAME JOB HIREDATE SAL COMM DEPTNO --------- ---------- --------- --------- --------- --------- --------- 15 ALI PRESIDENT 17-NOV-81 2000 10 7698 AHMAD MANAGER 01-MAY-81 2850 30 7782 OMAR MANAGER 09-JUN-81 2450 10 7566 SALM MANAGER 02-APR-81 2975 20 7654 MOHAMAD SALESMAN 28-SEP-81 1250 1400 30 7499 ADEL SALESMAN 20-FEB-81 1600 300 30 7844 JAMAL SALESMAN 08-SEP-81 1500 0 30 7900 JASIM CLERK 03-DEC-81 950 30 7521 WALED SALESMAN 22-FEB-81 1250 500 30
عبارة التحديث UPDATE SQL> UPDATEempSETdeptno = 15 WHEREdeptno = 16 ; SQL> COMMIT ;
عبارة الحذف DELETE SQL>DELETE FROM emp ; SQL>ROLLBACK ;
DROP عبارة لو كان الجدول مرتبط بعلاقات مع جدول آخر فقط نضيف CASCADE CONSTRAINTSDROP TABLE stud CASCADE CONSTRAINTS; الصيغة العامة: DROP TABLEtable_name; DROP TABLE employee;
ORDER BY عبارة الترتيب • SELECT ename, salFROM empORDER BY salASC ; • SELECT ename, sal FROM empORDER BY salDESC;
GroupBy عبارة SQL> SELECTdeptno , AVG ( sal ) From emp GROUP BY deptno ; DEPTNO AVG(SAL) ---------- -------------- 10 2916.66667 20 2175 30 1566.66667
What Are Group Functions? EMP Group functions operate on sets of rows to give one result per group. 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 MAX(SAL) --------- 5000 “maximum salary in the EMP table”
Types of Group Functions • AVG • COUNT • MAX • MIN • SUM
Using Group Functions SELECT [column,] group_function(column) FROM table [WHERE condition] [GROUP BY column] [ORDER BY column];
Using AVG and SUM Functions You can use AVG and SUM for numeric data. SQL> SELECT AVG(sal), MAX(sal), 2 MIN(sal), SUM(sal) 3 FROM emp 4 WHERE job LIKE ‘manager%'; AVG(SAL) MAX(SAL) MIN(SAL) SUM(SAL) -------- --------- --------- --------- 1400 1600 1250 5600
SQL> SELECT MIN(hiredate), MAX(hiredate) 2 FROM 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 COUNT(*) 2 FROM emp 3 WHERE deptno = 30; COUNT(*) --------- 6
Using the COUNT Function COUNT(expr) returns the number of nonnull rows. SQL> SELECT COUNT(comm) 2 FROM emp 3 WHERE deptno = 30; COUNT(COMM) ----------- 4
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 “averagesalary in EMPtable for each department” DEPTNO AVG(SAL) ------- --------- 10 2916.6667 20 2175 30 1566.6667 2175 معدل الراتب لكل قسم 1566.6667