Your SlideShare is downloading. ×
SQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתונים
SQL - שפת הגדרת הנתונים
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

SQL - שפת הגדרת הנתונים

990

Published on

סיכום בנושא שפת הגדרת הנתונים, כולל דוגמאות, מונחים והגדרות

סיכום בנושא שפת הגדרת הנתונים, כולל דוגמאות, מונחים והגדרות

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
990
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. DDL – Data Definition Language : ‫יצירת טבלה חדשה‬CREATE TABLE table_name ( Column_name Datatype Optional Constraints, Optional Table Constrants); :‫דוגמה‬ CREATE TABLE ListOfArtists( ArtistID INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (ArtistID), UNIQUE KEY ArtistAK1 (LastName, FirstName)); ‫מפתח ייחודי, כלומר לא יופיעו‬ A B)A,B( ‫בטבלה שני צירופים זהים‬ ON UPDATE / ON DELETE ‫התנהגות בעדכון או מחיקה של ערכים בטבלה‬ CASCADE ‫עדכון / מחיקה בטבלת ההורה יחלחל גם עבור טבלאות הילד‬ NO ACTION / RESTRICT ‫חסימת האפשרות לעדכן / למחוק מטבלת ההורה‬ SET NULL ‫עדכון / מחיקה בטבלת ההורה יניב איפוס הערכים התואמים בטבלאות הילד‬ . The CHECK Constraint :‫אילוצים‬ .‫הגדרת התחום עבור ערכים בטבלה‬ .‫רצוי לתת שם לכל אילוץ ע"מ שניתן יהיה לגשת אליו לצרכי עדכון והסרה‬ :‫דוגמאות‬CONSTRAINT cons_Name1 PRIMARY KEY (ArtistID),CONSTRAINT cons_Name2 UNIQUE KEY (Last Name, First Name),CONSTRAINT cons_Name3 CHECK (status IN (Single, Married, …)),CONSTRAINT cons_Name4 CHECK (Date of Birth< DateDeceased),CONSTRAINT cons_Name5 CHECK (Date of Birth LIKE [1-2][0-9][0-9][0-9])
  • 2. : ‫הוספת שורה חדשה לסוף הטבלה‬ INSERT INTO table_name (col1,col2…colN) Values (col1_val, col2_val,… colN_val) :‫אם מזינים ערכים של כל העמודות לפי הסדר, אז ניתן להשמיט את שמות העמודות, כך‬INSERT INTO table_name Values (col1_val, col2_val,… colN_val) : ‫שכפול של טבלה‬1) CREATE TABLE table_copy (SELECT * FROM table)2) CREATE TABLE table_copy LIKE table; INSERT INTO table_copy(SELECT * FROM table); : ‫מחיקת שורה מטבלה‬DELETE FROM table_name WHERE column=value : ‫עדכון ערכים בטבלה‬UPDATE table_name SET column=value WHERE condition .‫ – שינויים מבניים‬ALTER ‫הוספת אילוץ‬ : ‫לדוגמה‬ALTER TABLE table1 ADD CONSTRAINT cons_nameFOREIGN KEY (column1) REFERENCES table2 (column1)ON DELETE NO ACTIONON UPDATE NO ACTION :‫הוספת עמודה‬ALTER TABLE table1 ADD COLUMN column1 DataType(Size) {NULL/NOT NULL} :‫הסרת עמודה‬ALTER TABLE table_name DROP COLUMN column_name )‫יצירת תצוגה (טבלה וירטואלית‬CREATE VIEW view_name AS SELECT… .‫לאחר יצירת התצוגה , ניתן לגשת לעמודות התצוגה באותו האופן בו היינו ניגשים לטבלה רגילה‬ :‫לדוגמה‬SELECT * FROM view_name WHERE condition .‫ – הסרה‬Drop DROP TABLE table_name DROP TRIGGER trigger_name DROP VIEW view_name
  • 3. .‫ – צירוף של עמודות ממספר טבלאות‬Joins Inner join :‫לדוגמה‬SELECT lastname, title FROM listofartists, workWHERE listofartists.artistid = work.artistid :‫ובאופן שקול‬SELECT lastname, title FROM listofartistsJOIN work ON Listofartists.artistid = work.artistID :‫ במידת הצורך‬Joins ‫ניתן לשרשר יותר‬SELECT C.Lastname, A.LastnameFROM customer AS C JOIN customer_artist_int AS C1ON C.customerID = C1.customerIDJOIN listofartist AS AON C1.artistID = A.artistID :‫ובאותו אופן שקול‬SELECT C.lastname, A.lastnameFROM customer AS C, customer_artist_int AS C1, listofartists AS AWHERE C.customerID=C1.CustomerID AND C1.artistID=A.artistID . Outer Join .‫ – כל השורות בטבלה הראשונה שמוצגת בהוראה תהיינה מוכלות בתוצאה‬Left join .‫ – כל השורות בטבלה השניה שמוצגת בהוראה תהיינה מוכלות בתוצאה‬Right Join ‫נבחין שלא נדרשת התאמה בין המבנים של הטבלאות ועל כן, ייתכנו בקלות מצבים בהם נקבל שעבור ישות מסוימת‬ .‫ בשדות עבורם אין מידע‬NULL ‫אין נתונים מסוימים. במקרה זה, יופיע ערך‬ :‫דוגמה‬SELECT C.lastname, C.firstname, T.transactionID, T.salespriceFROM Customer AS C LEFT JOIN trans AS T ONC.customerID=T.customerID ORDER BY T.transactionID; .‫ בשדות עבורם אין נתונים‬NULL‫כך שיופיעו כל הלקוחות, גם אלו שלא ביצעו טרנזקציות..., כאמור יופיע‬ .‫, אנו נקבל רק את אלו שיש עבורם טרנזקציה‬RIGHT JOIN‫ ב‬LEFT JOIN ‫* במקרה שכזה, אם נחליף את‬
  • 4. . Triggers .‫טריגר משויך לטבלאות ומופעל בעת שינוי של הנתונים בטבלה מסוימת‬ .‫ניתן לקבוע האם הטריגר יבצע הכנסה, מחיקה או עדכון של רכיב בטבלה‬ .$$ ‫ ונועל של הטריגר יהיה‬delimiter $$ ‫פתיח של טריגר הוא הביטוי‬delimiter $$CREATE TRIGGER trigger_name{AFTER, BEFORE} {INSERT, UPDATE, DELETE} ON tablename FOR EACH rowBEGIN...END $$ :‫בגוף הטריגר יכולות להופיע הגדרות כגון‬ :‫ – להגדרת עמודה חדשה, מתבצע באופן הבא‬Declare - DECLARE ArtistNationality CHAR(30); ‫, רק הפוך, בוחרים את המקור ממנו יילקחו הנתונים‬SELECT… FROM ‫ – בדומה ל‬SELECT… INTO - :‫לעמודת היעד‬ SELECT Nationality INTO ArtistNationality FROM… :‫ - הכנסת שורה חדשה לטבלה קיימת‬INSERT INTO… - INSERT INTO table_name (SELECT *…) :IF... THEN ... ‫- התניות‬ IF (ArtistNationalit = Mexican) THEN IF (New. Salesprice < New.AskingPrice) THEN UPDATE trans SET… END IF; END IF ‫ לא ניתן לעדכן את הטבלה עליה מורץ טריגר ועל כן, יש לעבוד עם‬MySQL – ‫יש לקחת בחשבון שב‬  .‫ במקביל‬dummy ‫טבלת‬ .‫ זוהי השורה החדשה שהוכנסה‬NEW  :‫ביטול‬  DROP TRIGGER trigger_name DROP TABLE table_name DELETE FROM table WHERE column =value :TRIGGER ‫ באמצעות‬CHECK ‫מימוש של‬  CREATE TRIGGER trigger_name BEFORE UPDATE ON table_name FOR EACH ROW BEGIN IF NEW.Column NOT BETWEEN 0 AND 100 THEN SET NEW.column = 1/0; END IF; END;

×