33
1 SQL/DDL

1 SQL/DDL. 2 רשימת הנושאים מבוא ל SQL CREATE VIEWS ASSERTIONS GRANT/REVOKE Triggers INDEX

Embed Size (px)

Citation preview

Page 1: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

1

SQL/DDL

Page 2: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

2

רשימת הנושאים

מבוא לSQL

CREATE

VIEWS

ASSERTIONS

GRANT/REVOKE

Triggers

INDEX

Page 3: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

3

SQL תעודת זהות :Structure Query Languageשפת נתונים המאפשרת גישה וטיפול בנתוניםDDL: Data Definition LanguageDML:Data Manipulation Language האבאIBM , 1970 תקןANSI: SQL86 (SQL1)SQL-92SQL-99

Page 4: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

4

CREATE

דוגמאData TypesDOMAIN צורה כללית לפקודתCREATE Attribute ConstraintsTable ConstraintsReferential Triggered Action

Page 5: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

5

דוגמא

Page 6: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

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 ) )

Page 7: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

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 )

Page 8: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

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 )

Page 9: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

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

Page 10: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

10

DOMAINהגדרת מאפשר הגדרת סוג משתנה על ידי המשתמש משמש ליצירת אחידות לכל הטבלאות בDBמאפשר עדכון ההגדרה במקום אחד בלבד:הצורה הכללית

CREATE DOMAIN domain-name AS

type [CHECK(condition)]

Page 11: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

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)

Page 12: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

12

CREATEצורה כללית לפקודת CREATE TABLE table_name

( Attribute name Attribute type Attribute Constraints,

.

.

.

Table Constraints )

Page 13: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

13

Attribute Constraints

NOT NULL/NULL DEFAULT <value> CHECK (conditional expression) UNIQUE

Page 14: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

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) )

Page 15: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

15

Table Constraints

PRIMARY KEY (<attribute(s)>) FOREIGN KEY <attribute> REFERENCES

<table(attribute)> UNIQUE <attribute(s)> CHECK ( condition)

Page 16: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

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))

Page 17: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

17

Referential Triggered Action

FOREIGN KEY <attribute> REFERENCES <table(attribute)>

ON DELETE CASCADE/SET NULL/

RESTRICT/

SET DEFAULT/NOACTION

ON UPDATE CASCADE/SET NULL/

RESTRICT/

SET DEFAULT/NOACTION

Page 18: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

18

VIEWSטבלאות מדומות: טבלה מדומה הינה טבלה, שאינה קיימת באופן ממשי בבסיס

הנתונים. הטבלה נוצרת רק בזמן הפניה אליה ומורכבת מנתונים הנגזרים

מטבלה בסיסית אחת או יותר למעשה בבסיס הנתונים מאחסנים רק את ההגדרה של הטבלה

המדומה ולא את הטבלה עצמה הטבלה המדומה מאפשרת ליצור נקודת מבט מותאמת לתוכנית

יישום או למשתמש. המשתמש לא מכיר את המבנה האמיתי של של בסיס הנתונים

ומקבל תחושה שקיימת טבלה המתאימה בדיוק לצרכיובאמצעות מנגנון זה ניתן לאכוף בקרת גישה ובטיחות

Page 19: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

19

מבנה הפקודהCREATE VIEW <name>

AS SELECT <attribute list>

FROM <table(s)>

WHERE <condition(s)>

Page 20: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

20

ASSERTIONSמאפשר הגדרת אילוצים על טבלה בודדת או מספר טבלאות בכל פעם שמתבצע שינוי כלשהו על אחת הטבלאות המעורבות

מתבצעת בדיקת האילוץ , היתרון : לא חשוב מהו מספר התוכניות שנוגעות בטבלאות

הבדיקה תתבצע תמיד החסרון תקורה משמעותית של זמן הבדיקה

Page 21: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

21

ASSERTIONדוגמא ל

Page 22: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

22

ASSERTIONדוגמא ל

Page 23: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

23

GRANT/REVOKEמאפשר מתן /ביטול הרשאות גישה לאובייקטההרשאות הן ברמה של טבלהההרשאות מתייחסות בעיקר לפעולות: שליפה,עדכון, ביטול,הוספה יש הרשאות מיוחדות למתן אפשרות לבנות אינדקס וכן העברת חלק מהזכויות

לאחרים:הצורה הכללית למתן זכויות

GRANT רשימת פעולות ON רשימת טבלות

TO רשימת בעלי זכות הצורה הכללית לביטול זכויות

REVOKE /רשימת פעולותALL ON רשימת טבלות

TO רשימת בעלי זכות

Page 24: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

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

Page 25: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

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

Page 26: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

26

TRIGGERSהמשתמש יכול להגדיר פעולה רצויה ,לכל אירוע שגורם לשינוי בטבלה

שתתבצע :האירועים שיכולים להפעיל את ההדקINSERT, DELETE,

UPDATE בעת הגדרת הדק יש לציין מתי תופעל הפעולה המבוקשת: אחרי

ביצוע הפקודה שגרמה להתעוררות ההדק או לפניה הטיפול בהדק נתון עלול לגרום לתגובת שרשת של מספר רב של

הדקים הטיפול בהדקים נותן כלי חזק מאד לשמירת הReferential Integrity כיון שSQL2 לא הגדיר תחביר תקני להדקים , המצב כיום הוא

שהתחביר לניהול הדקים שונה מיצרן ליצרן, עד שכולם יאמצו את SQL3

Page 27: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

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

Page 28: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

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%')

Page 29: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

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

Page 30: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

30

INDEX

האמצעי העיקרי לגישה מהירה לשורות בטבלה במודל הטבלאי המערכת בוחרת באופן אוטומטי אם להשתמש באינדקס ובאיזה

אינדקס מאלה שהוגדרו מנהל הנתונים יכול להוסיף או לבטל אינדקס בכל נקודת

)DROPזמן(הוספת אינדקס מגדילה את נפח האחסון הדרוש לDBהוספת אינדקס מגדילה את הזמן הנדרש לביצוע הוספה/עדכוןקיום האינדקס שקוף למשתמש

Page 31: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

31

INDEX דוגמאות

בנה אינדקס למספר מחלקה בטבלת קורסים CREATE INDEX DEPART_COURSE_IDX

ON COURSES

(DEPARTMENT_ID)

ביטול האינדקס DROP DEPART_COURSE_IDX

Page 32: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

32

INDEX דוגמאות

בנה אינדקס למיקוד בטבלת לקוחות CREATE INDEX AREA_CODE_IDX

ON CUSTOMER

(CUS_AREACODE )

Page 33: 1 SQL/DDL. 2 רשימת הנושאים  מבוא ל SQL  CREATE  VIEWS  ASSERTIONS  GRANT/REVOKE  Triggers  INDEX

33

Questions ?P2080