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

חל על
Access של Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

באפשרותך ליצור ולשנות טבלאות, אילוצים, אינדקסים וקשרי גומלין ב- 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 table_name 
 (field1 type [(size)] [NOT NULL] [index1]
 [, field2 type [(size)] [NOT NULL] [index2]
 [, ...][, CONSTRAINT constraint1 [, ...]])

הרכיבים הנדרשים היחידים של פקודת CREATE TABLE הם הפקודה CREATE TABLE עצמה ושם הטבלה, אך בדרך כלל תרצה להגדיר שדות מסוימים או היבטים אחרים של הטבלה. חשבו על הדוגמה הפשוטה הזו.

נניח שברצונך ליצור טבלה לאחסון השם, השנה והמחיר של מכוניות משומשות שאתה שוקל לרכוש. ברצונך לאפשר 30 תווים לכל היותר עבור השם ו- 4 תווים עבור השנה. כדי להשתמש בשאילתת הגדרת נתונים ליצירת הטבלה, בצע את הפעולות הבאות:

הערה

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

  • בסרגל ההודעות, לחץ על הפוך תוכן לזמין.

יצירת טבלה

  1. בכרטיסיה יצירה , בקבוצה פקודות מאקרו & קוד , לחץ על עיצוב שאילתה.
  2. בכרטיסיה עיצוב , בקבוצה סוג שאילתה , לחץ על הגדרת נתונים.
    רשת העיצוב מוסתרת, וכרטיסיית האובייקטים של תצוגת SQL מוצגת.
  3. הקלד את משפט ה- SQL הבא:
    CREATE TABLE Cars (Name TEXT(30), Year TEXT(4), Price CURRENCY)
  4. בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.

שינוי טבלה

כדי לשנות טבלה, השתמש בפקודה ALTER TABLE. באפשרותך להשתמש בפקודה ALTER TABLE כדי להוסיף, לשנות או לשחרר (להסיר) עמודות או אילוצים. הפקודה ALTER TABLE מבוססת על התחביר הבא:

ALTER TABLE table_name 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 תווים כדי לאחסן מידע אודות המצב של כל מכונית. תוכל לבצע את הפעולות הבאות:

  1. בכרטיסיה יצירה , בקבוצה פקודות מאקרו & קוד , לחץ על עיצוב שאילתה.
  2. בכרטיסיה עיצוב , בקבוצה סוג שאילתה , לחץ על הגדרת נתונים.
    רשת העיצוב מוסתרת, וכרטיסיית האובייקטים של תצוגת SQL מוצגת.
  3. הקלד את משפט ה- SQL הבא:
    ALTER TABLE Cars ADD COLUMN טקסט תנאי (10)
  4. בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.

לראש הדף

יצירת אינדקס

כדי ליצור אינדקס בטבלה קיימת, השתמש בפקודה 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 אינם מותרים.

נניח שיש לך טבלה בשם 'מכוניות' ובה שדות שמאחסנים את השם, השנה, המחיר והמצב של מכוניות משומשות שברצונך לרכוש. נניח גם שהטבלה הפכה לגדולה ושאתה כולל לעתים קרובות את שדה השנה בשאילתות. באפשרותך ליצור אינדקס בשדה 'שנה' כדי לסייע לשאילתות שלך להחזיר תוצאות במהירות רבה יותר באמצעות ההליך הבא:

  1. בכרטיסיה יצירה , בקבוצה פקודות מאקרו & קוד , לחץ על עיצוב שאילתה.
  2. בכרטיסיה עיצוב , בקבוצה סוג שאילתה , לחץ על הגדרת נתונים.
    רשת העיצוב מוסתרת, וכרטיסיית האובייקטים של תצוגת SQL מוצגת.
  3. הקלד את משפט ה- SQL הבא:
    צור אינדקס שנהאינדקס על מכוניות (שנה)
  4. בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.

לראש הדף

יצירת אילוץ או קשר גומלין

אילוץ יוצר תנאי לוגי ששדה או שילוב של שדות חייבים לעמוד בו בעת הוספת ערכים. לדוגמה, אילוץ ייחודי מונע מהשדה המוגבל לקבל ערך שישכפל ערך קיים עבור השדה.

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

כדי ליצור אילוץ, עליך להשתמש בפסוקית 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}]}

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

  1. בכרטיסיה יצירה , בקבוצה פקודות מאקרו & קוד , לחץ על עיצוב שאילתה.
  2. בכרטיסיה עיצוב , בקבוצה סוג שאילתה , לחץ על הגדרת נתונים.
    רשת העיצוב מוסתרת, וכרטיסיית האובייקטים של תצוגת SQL מוצגת.
  3. הקלד את משפט ה- SQL הבא:
    ALTER TABLE Cars ALTER COLUMN תנאי TEXT CONSTRAINT ConditionRequired NOT NULL
  4. בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.

כעת נניח שלאחר זמן מה תבחין שישנם ערכים דומים רבים בשדה 'תנאי' שאמורים להיות זהים. לדוגמה, לחלק מהמכוניות יש ערך מצב של גרוע ולאחרות יש ערך רע.

הערה

אם ברצונך לפעול בהתאם להליכים הנותרים, הוסף נתונים מזויפים לטבלה 'מכוניות' שיצרת בשלבים הקודמים.

לאחר ניקוי הערכים כדי שיהיו עקביים יותר, באפשרותך ליצור טבלה בשם CarCondition עם שדה אחד בשם Condition, שמכיל את כל הערכים שבהם ברצונך להשתמש עבור מצב הרכב:

  1. בכרטיסיה יצירה , בקבוצה פקודות מאקרו & קוד , לחץ על עיצוב שאילתה.

  2. בכרטיסיה עיצוב , בקבוצה סוג שאילתה , לחץ על הגדרת נתונים.
    רשת העיצוב מוסתרת, וכרטיסיית האובייקטים של תצוגת SQL מוצגת.

  3. הקלד את משפט ה- SQL הבא:
    CREATE TABLE CarCondition (Condition TEXT(10))

  4. בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.

  5. צור מפתח ראשי עבור הטבלה באמצעות משפט ALTER TABLE:
    ALTER TABLE CarCondition ALTER COLUMN תנאי טקסט אילוץ CarConditionPK מפתח ראשי

  6. כדי להוסיף את הערכים מהשדה Condition של הטבלה Cars לטבלה CarCondition החדשה, הקלד את ה- SQL הבא בכרטיסיית האובייקטים של תצוגת SQL:
    INSERT INTO CarCondition SELECT DISTINCT Condition FROM Cars;

    הערה

    משפט ה- SQL בשלב זה הוא שאילתת הוספה. שלא כמו שאילתת הגדרת נתונים, שאילתת הוספה מסתיימת בנקודה-פסיק.

  7. בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.

יצירת קשר גומלין באמצעות אילוץ

כדי לדרוש שכל ערך חדש שנוסף בשדה Condition של הטבלה Cars יתאים לערך של השדה Condition בטבלה CarCondition, לאחר מכן תוכל ליצור קשר גומלין בין CarCondition ו- Cars בשדה ששמו Condition, באמצעות ההליך הבא:

  1. בכרטיסיה יצירה , בקבוצה פקודות מאקרו & קוד , לחץ על עיצוב שאילתה.
  2. בכרטיסיה עיצוב , בקבוצה סוג שאילתה , לחץ על הגדרת נתונים.
    רשת העיצוב מוסתרת, וכרטיסיית האובייקטים של תצוגת SQL מוצגת.
  3. הקלד את משפט ה- SQL הבא:
    ALTER TABLE מכוניות תנאי ALTER עמודה TEXT CONSTRAINT הפניות FKeyCondition CarCondition (condition)
  4. בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.

אילוצים של שדות מרובים

ניתן להשתמש בפסוקית 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}]}

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

  1. בכרטיסיה יצירה , בקבוצה פקודות מאקרו & קוד , לחץ על עיצוב שאילתה.
  2. בכרטיסיה עיצוב , בקבוצה סוג שאילתה , לחץ על הגדרת נתונים.
    רשת העיצוב מוסתרת, וכרטיסיית האובייקטים של תצוגת SQL מוצגת.
  3. הקלד את משפט ה- SQL הבא:
    ALTER TABLE מכוניות ADD CONSTRAINT NoDupes UNIQUE (שם, שנה, מצב, מחיר)
  4. בכרטיסיה עיצוב, בקבוצה תוצאות, לחץ על הפעל.

לראש הדף