Download presentation
Presentation is loading. Please wait.
Published byNaomi Washington Modified over 9 years ago
1
1 SQL/DDL
2
2 רשימת הנושאים מבוא ל SQL CREATE VIEWS ASSERTIONS GRANT/REVOKE Triggers INDEX
3
3 SQL: תעודת זהות Structure Query Language שפת נתונים המאפשרת גישה וטיפול בנתונים DDL: Data Definition Language DML:Data Manipulation Language האבא IBM, 1970 תקן ANSI: SQL86 (SQL1) SQL-92 SQL-99
4
4 CREATE דוגמא Data Types DOMAIN צורה כללית לפקודת CREATE Attribute Constraints Table Constraints Referential Triggered Action
5
5 דוגמא
6
6 הגדרת טבלת CUSTOMER CREATE TABLE CUSTOMER ) CUS_NUM INTEGER NOT NULL, CUS_LNAME VARCHAR(15) NOT NULL, CUS_FNAME VARCHAR(15) NOT NULL, CUS_INITIAL CHAR(3), CUS_AREACODE CHAR(5), CUS_ PHONE) PHONE, CUS_BALANCE MONEY DEFAULT 0, PRIMARY KEY (CUS_NUM ) )
7
7 הגדרת טבלת INVOICE CREATE TABLE INVOICE ) INV_NUMBER INTEGER NOT NULL, CUS_NUM INTEGER NOT NULL, INV_DATE DATE NOT NULL, PRIMARY KEY (INV_NUMBER), FOREIGN KEY (CUS_NUM) REFERENCES CUSTOMER ON DELETE RESTRICT )
8
8 הגדרת טבלת LINE CREATE TABLE LINE ) INV_NUMBER INTEGER NOT NULL, LINE_NUMBER SMALLINT NOT NULL, P_CODE INT NOT NULL, LINE_UNITS SMALLINT CHECK(LINE_UNITS>=1), LINE_PRICE MONEY NOT NULL, PRIMARY KEY (INV_NUMBER,LINE_NUMBER), FOREIGN KEY (INV_NUMBER) REFERENCES INVOICE ON DELETE CASCADE FOREIGN KEY (P_CODE) REFERENCES PRODUCT ON DELETE SET NULL )
9
9 Data Types INTEGER, INT, SMALLINT,TINYINT FLOAT, REAL, DOUBLE PRECISION DECIMAL, DEC, NUMERIC(I, J) CHAR(n) or CHARACTER(n) VARCHAR(n), CHAR VARYING(n), CHARACTER VARYING(n) Boolean DATE: YYYY-MM-DD TIME: HH:MM:SS TIMESTAMP: YYYY-MM-DD HH:MM:SS BIT(len), BIT VARYING (len) Image
10
10 הגדרת DOMAIN מאפשר הגדרת סוג משתנה על ידי המשתמש משמש ליצירת אחידות לכל הטבלאות ב DB מאפשר עדכון ההגדרה במקום אחד בלבד הצורה הכללית : CREATE DOMAIN domain-name AS type [CHECK(condition)]
11
11 דוגמאות להגדרת DOMAIN CREATE DOMAIN PHONE CHAR(10) CREAT DOMAIN MONEY DECIMAL (11,2) CREATE DOMAIN WEEK_DAY AS CHAR(2) CHECK(VALUE IN (“SA”,”SU”,”MO”,”TU”, “WE”,”TH”, “FR”) ) CREATE DOMAIN MONTH AS TINYINT CHECK ( MONTH BETWEEN 1 AND 12 )
12
12 צורה כללית לפקודת CREATE CREATE TABLE table_name ( Attribute name Attribute type Attribute Constraints,. Table Constraints )
13
13 Attribute Constraints NOT NULL/NULL DEFAULT CHECK (conditional expression) UNIQUE
14
14 דוגמא ל UNIQUE CREATE TABLE EMPLOYEE ( EMP_NUM INT NOT NULL, EMP_LNAME VARCHAR(20), EMP_FNAME VARCHAR(20), EMP_PASSPORT CHAR(10) UNIQUE EMP_BIRTHDATE DATE, EMP_HIREDATE DATE, PRIMARY KEY(EMP_NUM) )
15
15 Table Constraints PRIMARY KEY ( ) FOREIGN KEY REFERENCES UNIQUE CHECK ( condition)
16
16 דוגמא ל CHECK CREATE TABLE EMPLOYEE ( EMP_NUM INT NOT NULL, EMP_LNAME VARCHAR(20), EMP_FNAME VARCHAR(20), EMP_PASSPORT CHAR(10) UNIQUE EMP_BIRTHDATE DATE, EMP_HIREDATE DATE, PRIMARY KEY(EMP_NUM), CHECK(EMP_HIREDATE > EMP_BIRTHDATE))
17
17 Referential Triggered Action FOREIGN KEY REFERENCES ON DELETE CASCADE/SET NULL/ RESTRICT/ SET DEFAULT/NOACTION ON UPDATE CASCADE/SET NULL/ RESTRICT/ SET DEFAULT/NOACTION
18
18 טבלאות מדומות : VIEWS טבלה מדומה הינה טבלה, שאינה קיימת באופן ממשי בבסיס הנתונים. הטבלה נוצרת רק בזמן הפניה אליה ומורכבת מנתונים הנגזרים מטבלה בסיסית אחת או יותר למעשה בבסיס הנתונים מאחסנים רק את ההגדרה של הטבלה המדומה ולא את הטבלה עצמה הטבלה המדומה מאפשרת ליצור נקודת מבט מותאמת לתוכנית יישום או למשתמש. המשתמש לא מכיר את המבנה האמיתי של של בסיס הנתונים ומקבל תחושה שקיימת טבלה המתאימה בדיוק לצרכיו באמצעות מנגנון זה ניתן לאכוף בקרת גישה ובטיחות
19
19 מבנה הפקודה CREATE VIEW AS SELECT FROM WHERE
20
20 ASSERTIONS מאפשר הגדרת אילוצים על טבלה בודדת או מספר טבלאות בכל פעם שמתבצע שינוי כלשהו על אחת הטבלאות המעורבות מתבצעת בדיקת האילוץ היתרון : לא חשוב מהו מספר התוכניות שנוגעות בטבלאות, הבדיקה תתבצע תמיד החסרון תקורה משמעותית של זמן הבדיקה
21
21 ASSERTION דוגמא ל
22
22 ASSERTION דוגמא ל
23
23 GRANT/REVOKE מאפשר מתן / ביטול הרשאות גישה לאובייקט ההרשאות הן ברמה של טבלה ההרשאות מתייחסות בעיקר לפעולות : שליפה, עדכון, ביטול, הוספה יש הרשאות מיוחדות למתן אפשרות לבנות אינדקס וכן העברת חלק מהזכויות לאחרים הצורה הכללית למתן זכויות : GRANT רשימת פעולות ON רשימת טבלות TO רשימת בעלי זכות הצורה הכללית לביטול זכויות REVOKE / רשימת פעולות ALL ON רשימת טבלות TO רשימת בעלי זכות
24
24 GRANT דוגמאות הענקת זכות לשליפת נתונים מטבלה GRANT SELECT ON CUSTOMERS TO ADAM הענקת זכות לשליפה ועדכון טבלה למספר משתמשים GRANT SELECT, UPDATE ON CUSTOMERS TO ADAM, SHANI, PAZ הענקת זכות גישה לטבלה לכל המשתמשים GRANT SELECT ON CUSTOMERS TO PUBLIC הענקת כל הזכויות GRANT ALL ON CUSTOMERS TO YEVGENI הענקת זכויות למספר טבלאות : GRANT SELECT, UPDATE ON STUDENTS,COURSES TO LIOR, ALON,NATI,RAVIV,ISRAEL,ILAN
25
25 דוגמאות REVOKE REVOKE SELECT ON CUSTOMERS FROM ADAM REVOKE SELECT, UPDATE ON CUSTOMERS FROM ADAM, SHANI, PAZ REVOKE SELECT, UPDATE ON STUDENTS,COURSES FROM LIOR,ALON,NATI,RAVIV,ISRAEL,ILAN
26
26 TRIGGERS לכל אירוע שגורם לשינוי בטבלה, המשתמש יכול להגדיר פעולה רצויה שתתבצע האירועים שיכולים להפעיל את ההדק : INSERT, DELETE, UPDATE בעת הגדרת הדק יש לציין מתי תופעל הפעולה המבוקשת : אחרי ביצוע הפקודה שגרמה להתעוררות ההדק או לפניה הטיפול בהדק נתון עלול לגרום לתגובת שרשת של מספר רב של הדקים הטיפול בהדקים נותן כלי חזק מאד לשמירת ה Referential Integrity כיון ש SQL2 לא הגדיר תחביר תקני להדקים, המצב כיום הוא שהתחביר לניהול הדקים שונה מיצרן ליצרן, עד שכולם יאמצו את SQL3
27
27 דוגמא ל TRIGGER Increments the number of employees each time a new person is hired; that is, each time a new row is inserted into the EMPLOYEE table : CREATE TRIGGER NEW_HIRED AFTER INSERT ON EMPLOYEE FOR EACH ROW UPDATE COMPANY_STATS SET NBEMP = NBEMP + 1
28
28 דוגמא ל TRIGGER Create a trigger that will cause an error when an update occurs that would result in a salary increase greater than ten percent of the current salary. CREATE TRIGGER RAISE_LIMIT AFTER UPDATE OF SALARY ON EMPLOYEE REFERENCING NEW AS N OLD AS O FOR EACH ROW WHEN (N.SALARY > 1.1 * O.SALARY) SIGNAL SQLSTATE '75000' ('Salary increase>10%')
29
29 דוגמא ל TRIGGER If the on-hand quantity is less than 10% of the maximum stocked quantity, then issue a shipping request ordering the number of items for the affected part to be equal to the maximum stocked quantity minus the on-hand quantity CREATE TRIGGER REORDER AFTER UPDATE OF ON_HAND, MAX_STOCKED ON PARTS REFERENCING NEW AS N FOR EACH ROW WHEN (N.ON_HAND < 0.10 * N.MAX_STOCKED) BEGIN VALUES(ISSUE_SHIP_REQUEST(N.MAX_STOCKED – N.ON_HAND, N.PARTNO)); END
30
30 INDEX האמצעי העיקרי לגישה מהירה לשורות בטבלה במודל הטבלאי המערכת בוחרת באופן אוטומטי אם להשתמש באינדקס ובאיזה אינדקס מאלה שהוגדרו מנהל הנתונים יכול להוסיף או לבטל אינדקס בכל נקודת זמן (DROP) הוספת אינדקס מגדילה את נפח האחסון הדרוש ל DB הוספת אינדקס מגדילה את הזמן הנדרש לביצוע הוספה / עדכון קיום האינדקס שקוף למשתמש
31
31 INDEX דוגמאות בנה אינדקס למספר מחלקה בטבלת קורסים CREATE INDEX DEPART_COURSE_IDX ON COURSES (DEPARTMENT_ID) ביטול האינדקס DROP DEPART_COURSE_IDX
32
32 INDEX דוגמאות בנה אינדקס למיקוד בטבלת לקוחות CREATE INDEX AREA_CODE_IDX ON CUSTOMER (CUS_AREACODE )
33
33 Questions ? P2080
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.