באפשרותך ליצור ולשנות טבלאות, אילוצים, אינדקסים ו קשרי גומלין ב- Access על-ידי כתיבת שאילתות הגדרת נתונים בתצוגת SQL. מאמר זה מסביר שאילתות הגדרת נתונים וכיצד להשתמש בהן כדי ליצור טבלאות, אילוצים, אינדקסים ו קשרי גומלין. מאמר זה יכול גם לעזור לך להחליט מתי להשתמש בשאילתת הגדרת נתונים.
במאמר זה
סקירה כללית
בשונה מהשאילתות האחרות של Access, שאילתת הגדרת נתונים אינה מאחזרת נתונים. במקום זאת, שאילתת הגדרת נתונים משתמשת בשפת הגדרת הנתונים כדי ליצור, לשנות או למחוק אובייקטי מסד נתונים.
הערה: שפת הגדרת נתונים (DDL) מהווה חלק בשפת שאילתות מובנית (SQL).
שאילתות הגדרת נתונים יכולות להיות נוחות מאוד. באפשרותך למחוק וליצור מחדש באופן קבוע חלקים מסכימת מסד הנתונים רק על-ידי הפעלת שאילתות מסוימות. שקול להשתמש בשאילתת הגדרת נתונים אם אתה מכיר משפטי SQL ובכוונתך למחוק וליצור מחדש טבלאות, אילוצים, אינדקסים או קשרי גומלין מסוימים.
אזהרה: השימוש בשאילתות הגדרת נתונים לשינוי אובייקטי מסד נתונים עלול להיות מסוכן, מכיוון שהפעולות אינן מלווה בתיבות דו-שיח לאישור. אם טעית, אתה עלול לאבד נתונים או לשנות בטעות את העיצוב של טבלה. היזהר בעת שימוש בשאילתת הגדרת נתונים כדי לשנות אובייקטים במסד הנתונים שלך. אם אינך אחראי לשמירה על מסד הנתונים שבו אתה משתמש, עליך להתייעץ עם מנהל המערכת של מסד הנתונים לפני הפעלת שאילתת הגדרת נתונים.
חשוב: יצירת עותק גיבוי של כל הטבלאות המעורבות לפני הפעלת שאילתת הגדרת נתונים.
מילות מפתח של DDL
מילת מפתח |
שימוש |
CREATE |
צור אינדקס או טבלה שאינם קיימים כבר. |
ALTER |
שנה טבלה או עמודה קיימת. |
DROP |
מחק טבלה, עמודה או אילוץ קיימים. |
ADD |
הוסף עמודה או אילוץ לטבלה. |
COLUMN |
שימוש עם ADD, ALTER או DROP |
CONSTRAINT |
שימוש עם ADD, ALTER או DROP |
INDEX |
השתמש עם CREATE |
TABLE |
שימוש עם ALTER, CREATE או DROP |
יצירה או שינוי של טבלה
כדי ליצור טבלה, השתמש בפקודה CREATE TABLE. הפקודה CREATE TABLE מכילה את התחביר הבא:
CREATE TABLE table_name
(field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...][, CONSTRAINT constraint1 [, ...]])
הרכיבים הדרושים היחידים של הפקודה CREATE TABLE הם הפקודה CREATE TABLE עצמה ואת שם הטבלה, אך בדרך כלל תרצה להגדיר שדות מסוימים או היבטים אחרים של הטבלה. שקול דוגמה פשוטה זו.
נניח שברצונך ליצור טבלה לאחסון השם, השנה ומחיר המכוניות המשמשות שאתה שוקל לרכוש. ברצונך לאפשר עד 30 תווים עבור השם, ו- 4 תווים עבור השנה. כדי להשתמש בשאילתת הגדרת נתונים כדי ליצור את הטבלה, בצע את הפעולות הבאות:
הערה: ייתכן שיהיה עליך להפוך תחילה את התוכן של מסד הנתונים לזמין כדי שהשאילתה של הגדרת הנתונים תפעל:
-
בסרגל ההודעות, לחץ על הפוך תוכן לזמין.
יצירת טבלה
-
בכרטיסיה יצירה , בקבוצה פקודות מאקרו & קוד , לחץ על עיצוב שאילתה.
-
בכרטיסיה עיצוב , בקבוצה סוג שאילתה , לחץ על הגדרת נתונים.
רשת העיצוב מוסתרת, וכרטיסית האובייקטים של תצוגת SQL מוצגת.
-
הקלד את משפט ה- SQL הבא:
CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)
-
בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.
שינוי טבלה
כדי לשנות טבלה, השתמש בפקודה ALTER TABLE. באפשרותך להשתמש בפקודה ALTER TABLE כדי להוסיף, לשנות או לבטל (להסיר) עמודות או אילוצים. הפקודה ALTER TABLE מכילה את התחביר הבא:
ALTER TABLE table_name predicate
כאשר Predicate יכול להיות כל אחת מהאפשרויות הבאות:
ADD COLUMN field type[(size)] [NOT NULL] [CONSTRAINT constraint]
ADD CONSTRAINT multifield_constraint
ALTER COLUMN field type[(size)]
DROP COLUMN field
DROP CONSTRAINT constraint
נניח שברצונך להוסיף שדה טקסט של 10 תווים כדי לאחסן מידע אודות התנאי של כל מכונית. תוכל לבצע את הפעולות הבאות:
-
בכרטיסיה יצירה , בקבוצה פקודות מאקרו & קוד , לחץ על עיצוב שאילתה.
-
בכרטיסיה עיצוב , בקבוצה סוג שאילתה , לחץ על הגדרת נתונים.
רשת העיצוב מוסתרת, וכרטיסית האובייקטים של תצוגת SQL מוצגת.
-
הקלד את משפט ה- SQL הבא:
ALTER TABLE Cars ADD COLUMN Condition TEXT(10)
-
בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.
יצירת אינדקס
כדי ליצור אינדקס בטבלה קיימת, השתמש בפקודה CREATE INDEX. הפקודה CREATE INDEX מכילה את התחביר הבא:
CREATE [UNIQUE] INDEX index_name
ON table (field1 [DESC][, field2 [DESC], ...]) [WITH {PRIMARY | DISALLOW NULL | IGNORE NULL}]
הרכיבים הדרושים היחידים הם הפקודה CREATE INDEX, שם האינדקס, הארגומנט ON, שם הטבלה המכילה את השדות שברצונך ליצור עבורם אינדקס ורשימת השדות שיש לכלול באינדקס.
-
הארגומנט DESC גורם לאינדקס להיווצר בסדר יורד, דבר שעשוי להיות שימושי אם אתה מפעיל לעתים קרובות שאילתות שמחפשות ערכים עליים עבור השדה שנכלל באינדקס, או שממייןות את השדה סדור באינדקס בסדר יורד. כברירת מחדל, אינדקס נוצר בסדר עולה.
-
הארגומנט WITH PRIMARY יוצר את השדה או השדות סדורים באינדקס מפתח ראשי של הטבלה.
-
הארגומנט WITH DISALLOW NULL גורם לאינדקס לדרוש הזנה של ערך עבור השדה הכלול באינדקס - לדוגמה, ערכי Null אינם מותרים.
נניח שיש לך טבלה בשם Cars עם שדות המאחסנים את השם, השנה, המחיר ו התנאי של מכוניות בשימוש שאתה שוקל לרכוש. נניח גם שהטבלה הפכה גדולה ושתכלול לעתים קרובות את שדה השנה בשאילתות. באפשרותך ליצור אינדקס בשדה שנה כדי לסייע לשאילתות להחזיר תוצאות במהירות רבה יותר באמצעות ההליך הבא:
-
בכרטיסיה יצירה , בקבוצה פקודות מאקרו & קוד , לחץ על עיצוב שאילתה.
-
בכרטיסיה עיצוב , בקבוצה סוג שאילתה , לחץ על הגדרת נתונים.
רשת העיצוב מוסתרת, וכרטיסית האובייקטים של תצוגת SQL מוצגת.
-
הקלד את משפט ה- SQL הבא:
CREATE INDEX YearIndex ON Cars (Year)
-
בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.
יצירת אילוץ או קשר גומלין
אילוץ יוצר תנאי לוגי ששדות או שילוב של שדות חייבים לעמוד בו בעת הוספת ערכים. לדוגמה, אילוץ UNIQUE מונע מהשדות המוגבלות לקבל ערך שישכפל ערך קיים עבור השדה.
קשר גומלין הוא סוג של אילוץ המפנה לערכים של שדה או לשילוב של שדות בטבלה אחרת כדי לקבוע אם ניתן להוסיף ערך בשדה המוגבלת או בשילוב השדות. אין להשתמש במילת מפתח מיוחדת כדי לציין כי אילוץ הוא קשר גומלין.
כדי ליצור אילוץ, השתמש במשפט CONSTRAINT בפקודה CREATE TABLE או ALTER TABLE. קיימים שני סוגים של פסוקיות CONSTRAINT: אחד ליצירת אילוץ בשדה יחיד, ופסוקית אחרת ליצירת אילוץ על שדות מרובים.
אילוצים של שדה יחיד
משפט CONSTRAINT בעל שדה יחיד עוקב מיד אחר הגדרת השדה שהוא מגביל, והוא כולל את התחביר הבא:
CONSTRAINT constraint_name {PRIMARY KEY | UNIQUE | NOT NULL |
REFERENCES foreign_table [(foreign_field)] [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}
נניח שיש לך טבלה בשם Cars עם שדות המאחסנים את השם, השנה, המחיר ו התנאי של מכוניות בשימוש שאתה שוקל לרכוש. נניח גם שאתה שוכח לעתים קרובות להזין ערך עבור מצב הרכב, ושברצונך תמיד להקליט מידע זה. באפשרותך ליצור אילוץ בשדה תנאי שמונע ממך השארת השדה ריק, באמצעות ההליך הבא:
-
בכרטיסיה יצירה , בקבוצה פקודות מאקרו & קוד , לחץ על עיצוב שאילתה.
-
בכרטיסיה עיצוב , בקבוצה סוג שאילתה , לחץ על הגדרת נתונים.
רשת העיצוב מוסתרת, וכרטיסית האובייקטים של תצוגת SQL מוצגת.
-
הקלד את משפט ה- SQL הבא:
ALTER TABLE Cars ALTER COLUMN Condition TEXT CONSTRAINT ConditionRequired NOT NULL
-
בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.
כעת נניח שלאחר זמן מה, אתה מבחין שקיימים ערכים דומים רבים בשדה תנאי שאמורים להיות זהים. לדוגמה, לחלק מהמכוניות יש ערך תנאי של ' לקוי' ולאחרים יש ערך רע.
הערה: אם ברצונך לעקוב אחר ההליכים הנותרים, הוסף לטבלה Cars נתונים מזויפים שיצרת בשלבים הקודמים.
לאחר ניקוי הערכים כך שהם יהיו עקביים יותר, תוכל ליצור טבלה בשם CarCondition, עם שדה אחד בשם תנאי, המכיל את כל הערכים שבהם ברצונך להשתמש עבור התנאי של מכוניות:
-
בכרטיסיה יצירה , בקבוצה פקודות מאקרו & קוד , לחץ על עיצוב שאילתה.
-
בכרטיסיה עיצוב , בקבוצה סוג שאילתה , לחץ על הגדרת נתונים.
רשת העיצוב מוסתרת, וכרטיסית האובייקטים של תצוגת SQL מוצגת.
-
הקלד את משפט ה- SQL הבא:
CREATE TABLE CarCondition (Condition TEXT(10))
-
בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.
-
צור מפתח ראשי עבור הטבלה באמצעות משפט ALTER TABLE:
ALTER TABLE CarCondition ALTER COLUMN Condition TEXT CONSTRAINT CarConditionPK PRIMARY KEY
-
כדי להוסיף את הערכים מהשדות תנאי של הטבלה Cars לטבלה החדשה CarCondition, הקלד את ה- SQL הבא בכרטיסית האובייקטים של תצוגת SQL:
INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;
הערה: משפט ה- SQL בשלב זה הוא שאילתת צירוף. בשונה מהשאילתה של הגדרת נתונים, שאילתת הוספה מסתיימת בנקודה-פסיק.
-
בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.
יצירת קשר גומלין באמצעות אילוץ
כדי לדרוש שערך חדש שנוסף בשדה תנאי של הטבלה Cars תואם לערך של השדה תנאי בטבלה CarCondition, באפשרותך ליצור לאחר מכן קשר גומלין בין CarCondition ל- Cars בשדה בשם Condition, באמצעות ההליך הבא:
-
בכרטיסיה יצירה , בקבוצה פקודות מאקרו & קוד , לחץ על עיצוב שאילתה.
-
בכרטיסיה עיצוב , בקבוצה סוג שאילתה , לחץ על הגדרת נתונים.
רשת העיצוב מוסתרת, וכרטיסית האובייקטים של תצוגת SQL מוצגת.
-
הקלד את משפט ה- SQL הבא:
ALTER TABLE Cars ALTER COLUMN CONDITION TEXT CONSTRAINT FKeyCondition REFERENCES CarCondition (תנאי)
-
בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.
אילוצים מרובי שדות
ניתן להשתמש במשפט CONSTRAINT מרובה שדות רק מחוץ לפסוקית הגדרת שדה, והוא כולל את התחביר הבא:
CONSTRAINT constraint_name
{PRIMARY KEY (pk_field1[, pk_field2[, ...]]) | UNIQUE (unique1[, unique2[, ...]]) | NOT NULL (notnull1[, notnull2[, ...]]) | FOREIGN KEY [NO INDEX] (ref_field1[, ref_field2[, ...]]) REFERENCES foreign_table [(fk_field1[, fk_field2[, ...]])] | [ON UPDATE {CASCADE | SET NULL}] [ON DELETE {CASCADE | SET NULL}]}
שקול דוגמה נוספת המשתמשת בטבלה Cars. נניח שברצונך לוודא שאין לשתי רשומות בטבלה Cars קבוצת ערכים זהה עבור 'שם', 'שנה', 'תנאי' ו'מחיר'. באפשרותך ליצור אילוץ UNIQUE שחל על שדות אלה, באמצעות ההליך הבא:
-
בכרטיסיה יצירה , בקבוצה פקודות מאקרו & קוד , לחץ על עיצוב שאילתה.
-
בכרטיסיה עיצוב , בקבוצה סוג שאילתה , לחץ על הגדרת נתונים.
רשת העיצוב מוסתרת, וכרטיסית האובייקטים של תצוגת SQL מוצגת.
-
הקלד את משפט ה- SQL הבא:
ALTER TABLE Cars ADD CONSTRAINT NoDupes UNIQUE (name, year, condition, price)
-
בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.