SQL

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
עורך ה-QBE של ה-VB.NET

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). היסטוריה של התפתחות הסטנדרט:

  • 1986 - SQL86 גרסה ראשונה של ANSI.
  • 1989 - SQL89 שינויים קלים בלבד.
  • 1992 - SQL92 שינויים והרחבות מהותיים.
  • 1999 - SQL99 תמיכה ב Triggers ותמיכה חלקית ב Object Oriented.
  • 2003 - SQL2003 תמיכה ב XML.
  • 2006 - SQL2006 הרחבת התמיכה ב XML ושילוב XML בבסיסי נתונים יחסיים ובכלל זה תמיכה בשפת XQuery.
  • 2008 - SQL2008 הרחבות בנושא Triggers ונושאים נוספים.

[עריכה] השפה

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

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

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

שפת SQL פותחה במקורה על ידי IBM, אך מאז הועתקה על ידי חברות רבות, ואף אומצה על ידי מכון התקנים האמריקאי (ANSI) ב-1986 ועל ידי ארגון התקינה הבינלאומי (ISO) ב-1987.
השפה מתאימה לעבודה בעיקר עם בסיסי נתונים יחסיים, למרות שגם חלק מיצרני בסיסי נתונים מסוגים אחרים התאימו את השפה לשימוש עם בסיסי הנתונים שלהם. ניתן להשתמש במשפטי SQL בתוך קוד הכתוב בשפות תכנות אחרות. אופן עבודה נפוץ זה נקרא Embedded SQL ונתמך במרבית שפות התכנות הנפוצות. באופן עבודה זה משפטי ה SQL מבצעים פעולות מול בסיס הנתונים, והפקודות בשפה האחרת מבצעות פעולות של לוגיקה עסקית וממשק משתמש.

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

[עריכה] שימושים

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

[עריכה] תחביר

הוראות שפת SQL מתחלקות לשני תחומים עיקריים, המוגדרים לעתים כשתי שפות-משנה שלה:

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

שליפת נתונים:

הפסוקית הבאה תשלוף את כל השדות בטבלת Book, אשר השדה price גדול מ-100 ותמיין אותם על פי שדה title:

SELECT *
    FROM Book
    WHERE price > 100.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


[עריכה] כלי כתיבה ויזואליים

עורך של MySQL

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

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

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

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

[עריכה] ראו גם

[עריכה] קישורים חיצוניים

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