SQL

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

SQL (קיצור של Structured Query Language) היא שפת מחשב הצהרתית לטיפול ועיבוד מידע בבסיסי נתונים יחסיים, שפותחה על ידי IBM, והתבססה במקור על אלגברה רלציונית. השפה מאפשרת תשאול נתונים ועדכונם ויצירת סכימה ושינויה.

SQL הייתה אחת השפות הראשונות המיועדת למסד נתונים יחסי שתיאר אדגר קוד במאמרו החלוצי "A Relational Model of Data for Large Shared Data Banks"‏ והיא השפה הנפוצה ביותר לתשאול בסיסי נתונים יחסיים.

היסטוריה[עריכת קוד מקור | עריכה]

בתחילת שנות השבעים פותחה ב-IBM בהובלתם של דונלד צ'מברלין וריימונד בויס שפת SEQUEL. שפה זו יועדה לתשאול ולמניפולציה על נתונים במסד הנתונים היחסי המקורי של IBM, ‏System R. מאוחר יותר הוחלף שמה של השפה ל-SQL מאחר ש-SEQUEL היה רשום כבר כשם מסחרי על ידי הוקר סידלי, חברת ייצור מטוסים בריטית.

מסד הנתונים היחסי הראשון פותח ב-MIT בתחילת שנות השבעים, וב-1974 פותח Ingres באוניברסיטת קליפורניה בברקלי. Ingres מימש שפת QUEL, אשר הוחלפה בהמשך על ידי SQL.

בסוף שנות השבעים חברת Relational Software (כיום אורקל) ראתה את הפוטנציאל הגלום ברעיונות שתיארו אדגר קוד, דונלד צ'מברלין וריימונד בויס ופיתחה מערכת בסיס נתונים יחסי מבוססת SQL, בשאיפה למכור אותה לסוכנויות ממשלתיות כדוגמת הצי האמריקאי וה-CIA. בקיץ 1979 השיקה Relational Software את המימוש המסחרי הראשון ל-SQL, אורקל V2 למחשבי VAX. זמן קצר אחרי כן הוציאה IBM לשוק את בסיס הנתונים היחסי שלה, System/38.

ב-1986 אומץ SQL כסטנדרט על ידי מכון התקנים האמריקני (ANSI) וב-1987 על ידי ארגון התקינה הבינלאומי (ISO). ומאז גופי תקינה נוספים אימצו את ה-SQL ביניהם FIPS, OSF, X/Open ו-SQL Access Group.

השפה[עריכת קוד מקור | עריכה]

סכימה המציגה אלמנטים מהשפה

שמה של שפת SQL מתפרש, מילולית, כ"שפת שאילתות מובנית" (Structured Query Language), משום שתפקידה הראשוני של השפה היה לאחזר נתונים בתשובה לשאילתות. עם הזמן הורחב תפקידה להרבה יותר מכך, ולכן מקובל כיום לכנות את הוראות השפה כ"משפטים" (SQL Statements) ולא "שאילתות" (SQL Queries) כבעבר.

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

שפת SQL פותחה במקורה על ידי IBM, אך מאז הועתקה על ידי חברות רבות, ואף אומצה על ידי מכון התקנים האמריקאי (ANSI) ב-1986 ועל ידי ארגון התקינה הבינלאומי (ISO) ב-1987. מערכות עיקריות לניהול בסיסי נתונים בשפה הן DB2, Firebird, HSQL, Informix, Interbase, MariaDB, Microsoft SQL Server, MySQL, Oracle, PostgreSQL, PervasiveSQL, SQLite, Sybase ASE.

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

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

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

איפיוני השפה[עריכת קוד מקור | עריכה]

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

השפה איננה שפת תכנות מלאה, כיוון שחסרים בה פקודות לוגיות ומשפטי בקרה, ולכן יש בה קשיחות שלרוב צריכה להיפתר על ידי אירוחה בשפת תכנות עילית. בשפה קיימות מילים שמורות (שאין להשתמש בהן בשמות טבלאות/שדות/אינדקסים), טיפוסי קבועים, משתנים, אופרטורים ופונקציות מובנות. צורת הכתיבה גמישה מאוד. השפה איננה רגישה לגודל אות (Case Insensitivity). אף שמקובל לרשום את הפקודות באותיות גדולות, ונהוג לפצל פסוקיות באותה פקודה לשורות נפרדות, הדבר איננו הכרחי ומדובר בנורמה שנעשית לשם הקריאות. ניתן לכתוב פקודה בכל גודל אות, וניתן לכתוב פקודה בשורה אחת, או במספר שורות לפי רצון המשתמש, כל עוד נשמר הסדר של פסוקיות הפקודה. צורתן של פסוקיות השפה הינן אחידות, דבר המקל על השימוש בה (למשל גם פקודת הקריאה וגם פקודת המחיקה של רשומות דומה מאוד).

כל משפט SQL מתחלק למספר פסוקיות וצריך להסתיים בנקודה פסיק ";". כל פסוקית מתחילה במילת מפתח, ולכל סוג של פסוקית מבנה מוגדר. לייצוג של טבלה ושדה וקבועים אלפא נומריים בפסוקיות המתאימות קיימים כללים בשפה. כך למשל קבוע אלפא נומרי צריך להופיע בין גרש (') משני צדדיו.

בניגוד לשפות תכנות עיליות סדר הביצוע של משפט SQL איננו מתבצע לפי סדר הכתיבה. בדרך כלל פסוקית SELECT תתבצע לקראת הסוף, כאשר הפסוקית הראשונה שתתבצע תהיה פסוקית FROM. כל שלב בעיבוד מייצר טבלה וירטואלית זמנית אשר מהווה את הקלט לשלב הבא. בשאילתת SELECT מורכבת במיוחד (שיש בה צירוף בין טבלאות, תנאי סינון, הקבצה, מניעת כפילויות וצמצום מספר הרשומות למספר מסוים) מספר הטבלאות הווירטואליות עשוי להגיע אף לעשר.

שימושים[עריכת קוד מקור | עריכה]

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

עם התפתחותה של רשת האינטרנט, אתרי אינטרנט דינמיים ומערכות ניהול תוכן, משתמשים במסדי נתונים בשביל לשמור את תוכן האתר עצמו, ומחוללים את הדפים באמצעות שליפה של תוכן מבסיס הנתונים. כך יוצא ששפות שעושות שימוש בטכנולוגיית צד שרת כמו PHP, ASP ו-JSP משתמשות שימוש רב בשאילתות, כדי ליצור דפי אינטרנט, כאשר התוכנה המפעילה אותן היא בעצם דפדפן אינטרנט כלשהו.

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

תחביר[עריכת קוד מקור | עריכה]

חלוקה מקובלת של תחומי השפה. (ישנן חלוקות נוספות שמאחדות קטגוריות)

הוראות שפת SQL מתחלקות למספר תחומים עיקריים:

  • DRL - שפת אחזור נתונים (Data Retrieval Language)
    • משפט SELECT, מאחזר נתונים מתוך טבלה (או מספר טבלאות), אבל לא מבצע בהם שינויים קבועים.
  • DML - שפת מניפולציה בנתונים (Data Manipulation Language) - שפה המשמשת לטיפול בנתונים עצמם.
    • משפט INSERT מוסיף שורות חדשות לטבלה.
    • משפט UPDATE מעדכן נתונים בשורות הקיימות בטבלה.
    • משפט DELETE מוחק שורות נתונים מטבלה.
    • משפט MERGE משמש למזג נתונים של מספר טבלאות (תוקנן ב-SQL:2003).
  • DDL - שפת הגדרת נתונים (Data Definition Language) - שפה המשמשת לטיפול במבנה הנתונים (הוספת ומחיקת טבלאות, עמודות ואינדקסים).
    • משפט CREATE יוצר פריט מבנה חדש - טבלה, טבלה מדומה (View), עמודה וכדומה.
    • משפט ALTER משנה את תכונותיו של פריט קיים.
    • משפט DROP מוחק פריט קיים.
    • משפט TRUNCATE TABLE מוחק נתוני טבלה תוך עקיפה של אימותי נתונים (תוקנן ב-SQL:2008)
  • DCL - שפת בקרת נתונים (Data Control Language) - שפה המשמשת לקביעת הרשאות גישה לרכיבי בסיס הנתונים
    • משפט GRANT מעניק זכות גישה למשתמש או לקבוצת משתמשים.
    • משפט REVOKE מונע זכות גישה ממשתמש או מקבוצה.
הערה: יש הרואים ב-DCL - שפת בקרת נתונים חלק משפת הגדרת נתונים Data Definition Language .

טיפוסים[עריכת קוד מקור | עריכה]

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

טיפוס תיאור הערה
(CHARACTER(n תוי מחרוזת (גודל קבוע)
(VARCHAR(n תוי מחרוזת (גודל משתנה, כאשר n הוא אורך מרבי)
(BINARY(n מחרוזת בינארית (גודל קבוע) אובייקט בינארי. מיועד להכיל אובייקט כמו תמונה
BOOLEAN מאחסן ערכי אמת ושקר (TRUE , FALSE)
(VARBINARY(n מחרוזת בינארית (גודל משתנה) אובייקט בינארי. מיועד להכיל אובייקט גדול כמו תמונה
(INTEGER(p מספר שלם. דיוק p
SMALLINT מספר שלם. דיוק 5 חצי בית
INTEGER מספר שלם. דיוק 10 גודל בית
BIGINT מספר שלם. דיוק 19
(DECIMAL(p,s מספרי מדויק
(NUMERIC(p,s מספרי מדויק
(FLOAT(p נקודה צפה
REAL נקודה צפה, דיוק השבר 7
FLOAT נקודה צפה, דיוק השבר 16
DOUBLE PRECISION נקודה צפה, דיוק השבר 16
DATE תאריך קלנדרי תומך במספר פורמטים תאריכיים
TIME שעה מבנה HH:MM:SS
TIMESTAMP חותמת זמן מאחסן תאריך ושעה
INTERVAL הרכבת מספר שדות שלמים, המייצגים את תקופת הזמן
ARRAY סט של אוסף אלמנטים
MULTISET אוסף אלמנטים לא מסודר
XML מאחסן תוכן XML

אופרטורים[עריכת קוד מקור | עריכה]

אופרטור תיאור דוגמה
= שווה ל Author = 'Alcott'‎
<> שונה מ (רוב בסיסי הנתונים תומכים ב != במקום) Dept <> 'Sales'‎
> גדול מ Hire_Date > '2012-01-31'‎
< קטן מ Bonus < 50000.00
>= גדול מ או שווה Dependents >= 2
<= קטן מ או שווה Rate <= 0.05
BETWEEN בין טווח הכולל Cost BETWEEN 100.00 AND 500.00
LIKE מתאים לתבנית תווים First_Name LIKE 'Will%'‎
IN שווה למספר אחד מתוך ערכים אפשריים Dept IN (101, 103, 209)‎
IS או IS NOT השוואה ל-NULL Address IS NOT NULL

שאילתה בחירה - שליפת נתונים[עריכת קוד מקור | עריכה]

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

שאילתות מאפשרות למשתמש לתאר את הנתונים רצויים, כאשר מערכת ניהול מסדי נתונים (DBMS) אחראית על תכנון, ביצוע אופטימיזציה ,וביצוע הפעולות הפיזיות הדרושות כדי לייצר את התוצאה הרצויה.

  • את המשפט פותחת הפסוקית SELECT שמגדירה את העמודות שהתוכנה תקרא ותציג. כוכבית ("*") משמשת לקבוע שהשאילתה תחזיר את כל העמודות בטבלה. בפקודה זו ייתן ליצור שדה מחושב מדומה, המכיל תוכן שדה או שדות שעברו מניפולציה מתמטית. או להפעיל פונקציה על שדה, או לכנות שם שדה בשם אחר. SELECT הוא ההצהרה המורכבת ביותר ב-SQL, עם מילות מפתח אופציונליות כמו DISTINCT (הסרת כפולים) ו-TOP (אחוז או מספר רשומות שיוצגו).
  • פסוקית FROM מציין את הטבלה/הטבלאות שממנו/מהם יאוחזרו הנתונים. משפט FROM יכול לכלול סעיפי משנה לצירוף אופציונליים כדי לציין את הכללים לצירוף טבלאות (JOIN). אין הגבלה למספר הטבלאות. קיימים סוגי צירוף שונים בין טבלאות שיתנו תוצאות שונות, עד למכפלה קרטזית שתכפיל את כל השורות של הטבלאות המצורפות.
  • פסוקית WHERE כולל נשוא השוואה ומאפשר הגדרת תנאי לוגי, המגביל את השורות המוחזרות על ידי השאילתה. משפט WHERE מבטל את כל השורות מהתוצאה להגדיר עבורו את נשוא ההשוואה ללא הערכה נכונה. ניתן להשתמש ברוב האופרטורים של השפה בתנאי של משפט זה החל מאופרטורים השוואתיים וכלה בבדיקות מחרוזתיות. ניתן לבצע בדיקת ערך מול קבוצת ערכים המוחזרת מתת שאילתה.
  • פסוקית GROUP BY משמש לקבץ שורות של ערכים זהים לקבוצה קטנה יותר של שורות. GROUP BY משמש לעתים קרובות בשילוב עם פונקציות הצבירה של SQL או לבטל שורות כפולות בתוצאות. משפט WHERE מיושם לפני משפט GROUP BY.
  • פסוקית HAVING כולל נשוא המשמש לסינון שורות הנובעות ממשפט GROUP BY בלבד. משום שהיא פועלת על תוצאות משפט GROUP BY, לכן בפונקציות צבירה ניתן להשתמש בנשוא הסעיף הקיים.
  • פסוקית ORDER BY מגדירה את העמודה או העמודות שלפיהן ימויינו הנתונים המתקבלים, וקובעת את סדר המיון (עולה או יורד). ללא משפט ORDER BY סדר השורות המוחזרות על ידי שאילתת ה-SQL איננו מוגדר.

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

דוגמאות[עריכת קוד מקור | עריכה]

הדוגמה הבאה ממחישה את הפקודה החוקית הקצרה ביותר במשפט SELECT. פקודה זו תאחזר את כל טבלת Book.

  SELECT * FROM Book;

להלן דוגמה של שאילתה בחירה שמחזירה רשימה של ספרים יקרים. השאילתה מאחזרת את כל השורות מטבלת הספר (Book) שבעמודת המחיר (שדה price) מכיל הערך גדול מ 250.00. התוצאה היא מסודרת בסדר עולה לפי כותרת (שדה title). הכוכבית (*)ברשימה הנבחרת מצביעה על כך שכל העמודות של טבלת הספר צריכים להיות כלולות בנתוני התוצאות.

   SELECT *
   FROM Book
   WHERE price > 250.00
   ORDER BY title;

המשפט הבא מדגים כיצד אפשר לבצע שאילתא על טבלאות מרובות, קיבוץ נתונים, באמצעות החזרת רשימת ספרים ומספר המחברים שלהם משתי טבלאות Book ו-Authors כאשר שדה הקשר הוא isbn:

   SELECT Book.title,
        COUNT(*) AS Authors
   FROM  Book JOIN Book_author
       ON Book.isbn = Book_author.isbn
   GROUP BY Book.title;

התוצאה של השאילתא תהיה שדה של כותרים ושדה של מספר המחברים לכותר:

Title                   Authors
----------------------  -------
SQL Examples and Guide     4
The Joy of SQL             1
An Introduction to SQL     2
Pitfalls of SQL            1

תת-שאילתות[עריכת קוד מקור | עריכה]

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

בדוגמה הבאה, פונקציית צבירת AVG מקבלת כקלט את התוצאה של שאילתת משנה, כלומר יוצגו רק רשומות שקטנות מהממוצע של שדה price בטבלה:

  SELECT isbn, title, price
  FROM Book
  WHERE price < (SELECT AVG(price) FROM Book)
  ORDER BY title;

מניפולציה על נתונים[עריכת קוד מקור | עריכה]

  • INSERT מוסיף שורות לטבלה קיימת, לדוגמה:
INSERT INTO example
 (field1, field2, field3)
 VALUES
 ('test', 'N', NULL);


  • UPDATE מעדכן סט של שורות קיימות בטבלה, למשל:
UPDATE example
 SET field1 = 'updated value'
 WHERE field2 = 'N';


  • DELETE מוחק שורות קיימות מהטבלה, לדוגמה:
DELETE FROM example
 WHERE field2 = 'N';


  • MERGE משמש למזג נתונים של מספר רב של טבלאות. הוא משלב INSERT ו-UPDATE. (מוגדר כסטנדרט של SQL 2003 והורחב ב-SQL:2008; קודם לכן, כמה מסדי נתונים סיפקו פונקציונליות דומה באמצעות תחביר שונה, שכונה לעתים "upsert")
 MERGE INTO TABLE_NAME USING table_reference ON (condition)
 WHEN MATCHED THEN
 UPDATE SET column1 = value1 [, column2 = value2 ...]
 WHEN NOT MATCHED THEN
 INSERT (column1 [, column2 ...]) VALUES (value1 [, value2 ...


הגדרת נתונים[עריכת קוד מקור | עריכה]

  • משפט CREATE יוצר אובייקט (למשל טבלה) בבסיס הנתונים. לדוגמה:
CREATE TABLE example(
 field1 INTEGER,
 field2 VARCHAR(50),
 field3 DATE NOT NULL,
 PRIMARY KEY (field1, field2)
);


  • משפט ALTER מבצע שינוי של אובייקט קיים בבסיס הנתונים, כמו הוספת שדה או שינוי הגדרתו. לדוגמה:
ALTER TABLE example ADD field4 NUMBER(3) NOT NULL;
  • משפט Drop מוחק אובייקט בבסיס הנתונים. בדרך כלל פעולה בלתי הפיכה, כלומר, לא ניתן לגלגלה לאחור, לדוגמה:
DROP TABLE example;
  • משפט CREATE VIEW יוצר טבלה מדומה (שניתן לתשאל אותה כמו טבלה רגילה) בבסיס הנתונים
 CREATE VIEW vTableY AS 
 SELECT quantity, price, quantity*price AS amount
 FROM tableX;

בקרת נתונים[עריכת קוד מקור | עריכה]

  • משפט GRANT מעניק למשתמש אחד או יותר הרשאה לביצוע פעולה או קבוצה של פעולות על אובייקט.
GRANT SELECT, UPDATE
 ON example
 TO some_user, another_user;
  • משפט REVOKE מבטל הרשאה, אשר עשויה להיות הרשאת ברירת המחדל
REVOKE SELECT, UPDATE
 ON example
 FROM some_user, another_user;

תקינה[עריכת קוד מקור | עריכה]

היסטוריה של התפתחות התקינה בשפה:

שנה שם כינוי הערות
1986 SQL-86 SQL-87 גרסה ראשונה של ANSI.
1989 SQL-89 FIPS 127-1 שינויים קלים בלבד. העיקרי שבהם אילוצי שלמות.
1992 SQL-92 SQL2, FIPS 127-2 התקן הגדיר שתי רמות של תאימות, וכן נושאי אמינות ושלמות המערכת.
1999 SQL:1999 SQL3 הוספו התאמה לפי ביטוי רגולרי, שאילתות היררכיות ורקורסיביות ב-SQL, טריגרים, תמיכה בפקודות פרוצדורליות ושליטת זרימת פקודות, תמיכה בטיפוסים שאינם סקלרים, ותמיכה חלקית בתכנות מונחה עצמים (לדוגמה טיפוסי מבנה - structured types). תמיכה בהטמעת SQL בג'אווה (SQL/OLB) ולהיפך (SQL/JRT).
2003 SQL:2003 SQL 2003 הוספה תמיכה ב-XML טיפוס מסוג XML ופונקציונליות הקשורה לו (SQL/XML). הוספו פונקציה טבלאית, הרחבה של DML (פקודת MERGE, השמה מרובה בפקודות עדכון), פונקציות חלון, תיקנון רצפים, ועמודות עם ערכים מחוללים אוטומטית.
2006 SQL:2006 SQL 2006 הרחבת התמיכה ב XML ושילוב XML בבסיסי נתונים יחסיים (מגדירה דרכים ליבוא ואחסון נתוני XML במסד נתונים, מניפולציה שלהם בתוך המסד, ופרסום של נתוני ה-XML והנתונים הרגילים בטופס XML). בנוסף, היא מאפשרת ליישומים לשלב בקוד ה-SQL שלהם שימוש בשפת XQuery.
2008 SQL:2008 SQL 2008 הרחבות בנושא Triggers (פקודת INSTEAD OF) ונושאים נוספים (למשל פקודת TRUNCATE).

כלי כתיבה ויזואליים[עריכת קוד מקור | עריכה]

עורך של MySQL

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

כך למשל לשם יצירת שאילתות אחזור, קיים ברוב בסיס הנתונים כלי נפוץ מאוד הנקרא QBE - Query By Example.(=שאילתות לפי דוגמה). כלי זה מכיל טופס שבו אפשר לבחור טבלאות ועמודות מתיבות רשימות קיימות, וכן מאפשר גרירת סמלי אובייקטים והשלכתם על סמלי אובייקטים אחרים, כדי ליצור קשרים בין טבלאות (JOIN) או לבחור עמודות. מילוי של קריטריוני שליפה (WHERE) וסדר מיון של שאילתא (ORDER BY) ברשת טבלאית באמצעות תיבות טקסט ותיבות משולבות, וקביעת מאפייני שאילתא כלליים באמצעות טופס שמכיל תיבות טקסט. בכלי זה יש משוכללים יותר ופחות. המשוכללים יותר מראים ייצוג גרפי של פעולות ליד שם העמודה ברשימה, ואף מאפשרים לראות במקביל את שלושת המבטים של המחולל: המבט הגרפי, הטקסט של הפסוקית והתוצאה של השורות המאוחזרות.

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

בכלי זה התכנות הוויזואלי והטקסטואלי מקיימים קשר הידודי, וכל שינוי בכלי אחד משתקף מיד בכלי האחר.

ראו גם[עריכת קוד מקור | עריכה]

לקריאה נוספת[עריכת קוד מקור | עריכה]

  • רז הייפרמן, בסיס נתונים טבלאיים ושפת SQL, הוצאת הד עמי, 2000
  • סטפנס ופלו, SQL, הוצאת פוקוס, 1999

קישורים חיצוניים[עריכת קוד מקור | עריכה]