סיכום בנושא שפת הגדרת הנתונים, כולל דוגמאות, מונחים והגדרות
1 of 4
Downloaded 16 times
More Related Content
SQL - שפת הגדרת הנתונים
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_name
FOREIGN KEY (column1) REFERENCES table2 (column1)
ON DELETE NO ACTION
ON 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, work
WHERE listofartists.artistid = work.artistid
:ובאופן שקול
SELECT lastname, title FROM listofartists
JOIN work ON Listofartists.artistid = work.artistID
: במידת הצורךJoins ניתן לשרשר יותר
SELECT C.Lastname, A.Lastname
FROM customer AS C JOIN customer_artist_int AS C1
ON C.customerID = C1.customerID
JOIN listofartist AS A
ON C1.artistID = A.artistID
:ובאותו אופן שקול
SELECT C.lastname, A.lastname
FROM customer AS C, customer_artist_int AS C1, listofartists AS A
WHERE C.customerID=C1.CustomerID AND C1.artistID=A.artistID
. Outer Join
. – כל השורות בטבלה הראשונה שמוצגת בהוראה תהיינה מוכלות בתוצאהLeft join
. – כל השורות בטבלה השניה שמוצגת בהוראה תהיינה מוכלות בתוצאהRight Join
נבחין שלא נדרשת התאמה בין המבנים של הטבלאות ועל כן, ייתכנו בקלות מצבים בהם נקבל שעבור ישות מסוימת
. בשדות עבורם אין מידעNULL אין נתונים מסוימים. במקרה זה, יופיע ערך
:דוגמה
SELECT C.lastname, C.firstname, T.transactionID, T.salesprice
FROM Customer AS C LEFT JOIN trans AS T ON
C.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 row
BEGIN...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;