שפת שאילתות מובנית (SQL) הוא תקן המאחד את כל ניהול של מסדי נתונים. זה יכול להיחשב גם כשאתה יודע שאתה יודע את השפה הזאת לתמרן כל הנתונים, אחד זה יכול לקבל בשם Oracle, SQL Server, MySQL, DB2 ו Ingress.
המושג יחסי שולט ללא עוררין מסדי נתונים בעולם (על יש דבר כזה בעולם) ויישומים בתחום זה. יוזם הפרויקט הזה היה EF Codd, חוקר ב-IBM, אשר ב 70 המוקדמות הראשון הגדיר את האלמנטים אלגברה יחסיים, אלמנטים אשר מאוחר יותר את הבסיס ברמה של SQL.
שפת שאילתות מובנית היא שפה המאפשרת לכל פעולות על מסדי נתונים כגון יצירת ושינוי של טבלאות, להגדיר מדדים, בחירה ושינוי של נתונים, וכו '. הדבר החשוב ביותר לציין על SQL היא כי מדובר בשפה תקנית של היוקרתי American National Standards Institute (ANSI). לכן ניתן להסיק כי כאשר אתה יודע SQL, תוכל לתמרן נתוני מערכת יחסיים. אתה עדיין צריך להזכיר כי יש הבדלים בין יצרנים שונים של מערכות ניהול מסדי נתונים יחסיים, אבל דברים חיוניים ישתנו אם מדברים אורקל או SQL Server או DB2.
במאמר זה אנו מתכוונים לעשות מסד נתונים בשפה, הבאה אלמנטים תיאורטיים אבל במיוחד לשים דגש על ההיבטים המעשיים. ניצור שני מאגרים וננסה לפתור את המרכיבים העיקריים של SQL. תמיכה עבור דוגמאות שלנו נשתמש בסביבת MySQL, אשר משתמשת ביותר "מערכת אופנתי" יחסיים, משמש בעיקר ליצירת אתרי אינטרנט אינטראקטיביים ההתקנה של MySQL - שרת מסד הנתונים, PHP - תסריט התוכנית Apache - שרת אינטרנט. בסביבה זו יש שני יתרונות מרכזיים: הראשון להיות שזה בחינם (אתה יכול לקבל את www.mysql.com האתר) והשני הוא כי הדרך היחידה של אינטראקציה עם מסדי נתונים היא הקדמה של פקדים SQL הפקודה (ככה אתה לא תהיה "מתפתה" לפי שיטות חזותיים אחרים כדי ליצור טבלאות הישגים שאילתות, אשר מוצעים שפע של מערכות יחסים אחרות - כגון Access).
אם כל הפרטים הללו לא יגרום לך ללמוד SQL כדי ליצור שאילתות חזותית היו מרוצים בתחומים אחרים, צוין גם כי במקרה שברצונך ליצור אתרי אינטרנט אינטראקטיביים באמצעות PHP או סקריפטים ASP.NET, אתה צריך לשקול לבצע פעולות עם מסדי נתונים של SQL.
אלמנטים של אלגברה יחסיים
אנחנו רוצים לפתור, לראשונה, כמה אלמנטים חיוניים של מושג יחסי.
מידע כמו הגורם העיקרי מאוחסן במסד נתונים. מסד הנתונים מכיל אחת או יותר טבלאות. כל טבלה מציגה מספר שדות או תכונות, וגם כל שדה עולה, בתורו, מספר תכונות על סוג אורכו (כמו התכונה שם הוא הטקסט, ולשלם התכונה מספריים). על כל שולחן כולל מספר הקלטות, שהיא בעצם המידע המאוחסן הטבלה (מספר זה הוא מוגבל קיבולת מערכות מודרניות לניהול מסדי נתונים אחסון בלבד). בכל טבלה שדה מפתח ראשי מוגדר, זה מזהה ייחודי - למעשה כפילויות אסור באתר (למשל, תכונת המפתח הראשי של המינוח המותג האישי). כמו כן, ניתן להגדיר כל שולחן מפתח משני, שבו הוא המפתח הראשי בטבלה אחרת יש מזהה ייחודי (סימן התכונה נרשם תשלומים השולחן לעובדים).
מתאם בין השולחנות מבוססים, אשר, על פי התפיסה ההתייחסותית יכול להיות משלושה סוגים: 1-1 מתאמים (המתאם של תיעוד פשוט של שולחן תואם רשומה אחת בטבלה 2), מתאמים 1-n (אחד רשומות בטבלה המתאימה רשומה אחת או יותר בטבלה 2) ו מתאמים in-One (אחד או יותר רשומות בטבלת אחד מתאים שיא אחד בטבלה 2).
מתאמים nn סוג (מספר רשומות מטבלה אחת להתאים ערכי מספר לוח 2) אינם אפשריים מסדי נתונים יחסיים, במקרה זה יש צורך להציג ישות ביניים המתאם nn שבירת שני מתאמים: אחד
n-1 וכי n הפוך-1.
מסדי נתונים יצירת טבלאות
בהנחה שיש לך MySQL התקנת לינוקס או Windows, ההיגיון יכול להמשיך.
כך, התחלנו לבנות מסד נתונים פשוט בשם החיות. מסד הנתונים כולל שני שולחנות המאוחסנים מידע על בעלי חיים בגן חיות וירטואלי. יש לנו שני שולחנות, החיות רשמה הראשון בגן באירועי השיא השני מתרחש על בעלי חיים בנפרד (לידה, מחלה וכו ') .. שתי הטבלאות המקושרות באמצעות קוד השדה, המהווה את שדה המפתח הראשי בטבלה ב חיות מחמד השולחן ואירועים המפתח המשני (במקרה זה מוגדר המתאם של n סוג-1). באיור 1 מוצג במבנה מסד הנתונים.
הוראות MySQL הפקודה להיכנס לתוכנית (הוראת יכול להמשיך על שורות מרובות) להזכיר את העובדה שזה נגמר עם פסיק. שפה MySQL אינו תלוי רישיות, לכן ההוראות ניתן למקם את כל האותיות או קטן או גדול.
צור פקודות מאגר משמשים, מאגרי להראות - מסדי נתונים להציג ולהשתמש - כדי לפתוח מסד נתונים.
סוג נתונים, MySQL מציעה מגוון של פתרונות, כולל: סוג נתונים מספריים (מספרים שלמים, מרחף, פעמיים, נדל"ן, עשרוני), סוג של תאריך בלוח השנה (תאריכים זה, datetime, זמן, שנה) ועל סוג הנתונים טקסט ( char, varchar, טקסט, LongText, Enum).
בהתחשב בכך מידע והסברים לעיל מספיקים להבנת מערכת MySQL, עדיין להציג את התחביר הכללי של הפקודה יצירת טבלה:
CREATE [TEMPORARY] [לוח אם קיים לא nume_tabela]
[Nume_camp tip_camp NOT NULL | NULL] [ברירת מחדל default_value] AUTO_INCREMENT]
[מפתח ראשי] [] reference_definition
עבור כל שם שדה סוג מוגדר (אחד הסוגים המפורטים לעיל), אפשר למנות גם שורה של פרמטרים אופציונליים (ערכי null מתקבלים או לא, הגדרת ערך ברירת מחדל, שדה או להיות autoincrementat ייווצר גם המפתח הראשי).
יצירת טבלה חיות מחמד באתר שלנו רשומים ההוראה:
ליצור חיים השולחן (שלם auto_increment קוד NULL לא, varchar שם (20) NULL לא, מינים varchar (20) NULL לא, varchar השוער (20) NULL לא,
char סקס (1) NULL לא, הנתונים data_nast data_dec נתונים, מפתח ראשי (קוד));
כמו כן תוכלו ליצור טבלה אירועים, המבנה שלו מוצג באיור.
כדי לשנות את המבנה של טבלאות באמצעות הפקודה ALTER TABLE:
ALTER TABLE ADD | DROP | שנה (מפרט בטור שונה, או שנוצר);
כדי לאכלס את הטבלאות אנו משתמשים ההוראה הכנס, אשר מציגה את התחביר הכללי הבאים:
INSERT INTO [()]
VALUES ();
אם למשל ההוראה שלנו באתר הפופולרי צריך את המבנה הבא:
INSERT חיות לתוך ערכים
(Last_insert_id (), "BumboÕ," ElefantÕ, ÕCosticaÕ, ÕfÕ, Õ1997-01-01Õ, Null)
הוראה זו עשויה להתקבל כנימוק את רשימת הערכים, במקום משפט SELECT, ובכך שיש את האפשרות popularii שולחנות עם רשומות בטבלאות אחרות במסד הנתונים.
בנוסף, MySQL מציעה את האפשרות לייבא רשומות קבצי טקסט, כל שורה מייצגת רשומה, נתונים המופרדים מזהים הכרטיסייה. כדי להשיג את הפעולה להשתמש ההוראות:
לטעון נתונים LOCAL INFILE לטבלה
כדי למחוק טבלה באתר להשתמש בהוראות זרוק טבלה, אשר כוללת את הטיעון שם הטבלה.
בחירה ושינוי של נתונים
האמירה החשובה ביותר היא SQL SELECT, אשר עשוי להיות מושגת על ידי בחירה, קיבוץ והזמנת נתונים
SELECT [DISTINCT]
FROM
[שם]
קבוצתי [לפי]
[HAVING]
ORDER [ידי [ASC | DESC]];
הדרכה המורכב ביותר של אלה השתמשו עד כה חומר זה בחר. דרך הבחירה שלו נעשית על סמך קריטריונים שנקבעו על ידי במשפט WHERE, קישור נתונים מטבלאות מרובות, קיבוץ והזמנת צבירת נתונים בשדות מסוימים.
בחודש הבא אנו מציגים כמה אפשרויות להשתמש ההוראות הרשומות שאילתת בחירה מתוך שתי טבלאות שנוצרו.
דרך ההוראה "SELECT * FROM חיות" תקבלו רשימה של כל השדות רשומות מהטבלה.
כדי לגלות את החיות של פיל בגן החיות תיצור את ההצהרה הבאה:
SELECT * FROM חיות איפה מינים = "הפיל"
בעלי חיים שנולדו אחרי שרשרת תאריך מסוים מתקבלים ההוראה:
חיות SELECT * FROM data_nast איפה> "15/01/1998"
התנאים שהוטלו על סעיף עשוי להיות מקושרים על ידי אופרטורים לוגיים, לפרש בדרך משלהם (ואם מפעיל את כל התנאים חייב להיות נכון, אם המפעיל זה מספיק כי אחד התנאים כדי להיות אמיתי).
בנוסף הוא כיבד כללי הפרשנות (בדקה הראשונה את התנאים בסוגריים), כפי שאנו גם רואים את הדוגמה הבאה:
איפה SELECT * חיות (מין = "פיל" ומין = "f") או (מין = "שימפנזה" ומגדר מ '=')
נתוני הזמנת נעשה בצו על ידי המפעיל, ברירת המחדל היא בסדר עולה (יורד בחירת סעיף מנת להשתמש להוריד):
שם בחר, מינים של בעלי חיים לפי סדר data_nast להורדה
MySQL מציעה שפע של תכונות מעניינות אשר ניתן להבחין בקלות: פונקציות מתמטיות, סטטיסטיות, תאריכי העבודה עבור מחרוזות. פונקציות אלה יכולות לשמש על נתונים מטבלאות או קבוע באמצעות המפעיל הנבחר ואחריו הפונקציה משפט. נניח שאנו רוצים רשימה המכילה חיות מבסיס הנתונים שלנו מיון בסדר יורד של גיל יהיה להשתמש בפונקציות: to_days () כדי להמיר את התאריך שהיא מקבלת כארגומנט במספר ימים חלפו מאז לידתו של ישו ( 1 שנה) וכי הפונקציה NOW () אשר מחזירה את המחשב התאריך הנוכחי. אז אנחנו עושים את השאילתה הבאה:
בחר שם, מין (to_days (NOW ()), to_days (data_nast)) / 365 כמו זקנה מן החיות סדר בסדר יורד
אנחנו יכולים להשתמש בפונקציות שנה, חודש, dayofmonth למשל ניתן לבצע את השאילתה הבאה:
שם בחר, מינים של בעלי חיים חודש amoniacal (data_nast) = 6
הפונקציה Date_add מוסיף את טווח התאריכים שצוין. את השאילתה הבאה נקבל את כל החיות נולד בחודש שלאחר התאריך הנוכחי:
שם בחר, מינים של בעלי חיים איפה בחודש data_nast (data_nast) בחודש = (date_
להוסיף (NOW (), תוך שבוע))
מפעיל מעניין השתמשו בשאילתה נתונים כמו זה הכרחי במיוחד עבור שדות מוצפנים או טקסט.
באמצעות מפעיל זה יכול וכך לקבל רשימה מלאה של בעלי חיים ששמותיהם מתחילים באות א ':
בחר שם, איפה מיני שמות כמו "% O
תו החלפת "%" יחליף את כל הדמויות מחרוזת תווים "_" יחליף תו בודד.
כדי להשיג את הקבוצות להשתמש בפסוקית GROUP BY. הרצון לקבל את מספר בעלי החיים בגן החיות לפתח זנים ההוראה הבאה באמצעות הפונקציה ספירה לקבץ את הנתונים לפי מינים:
מינים בחר, לספור (*) קבוצת מינים לפי מבעלי חיים
אם אנו מעוניינים במספר מינים ומין ולכן אנו משתמשים קבוצה של מינים ועל ידי המין:
מינים בחר, סקס, לספור (*) מבעלי חיים קבוצתי לפי מינים, סקס
מסבכים דברים קצת בזמן שאנחנו הולכים לעבודה שתי טבלאות קשורות. כדי לבסס את הקשר לכלול את התנאי פסוקית WHERE של שוויון בין תכונות הקישור שני שולחנות.
לדוגמה, אם אנחנו רוצים למצוא את האירועים שהתרחשו חיות בהשגחת מטפלת בשם, ליצור הוראה:
animale.nume evenimete.tip_eveniment לבחור, evenimete.data_eveniment, evenimente.observatii מבעלי חיים, אירועים
איפה animale.cod = evenimente.cod ו animale.ingrijitor = "עלות"
זה יכול להתבצע בקלות את המפרטים נעשה על ידי כולל שדות שם הטבלה, זה מצב של כתובת נדרשת במקרה יש שדות שם זהה בשתי הטבלאות. אבל זה מתאים להשתמש בסימון של קוד מוחשיות, במיוחד במצבים בהם השאילתה כוללת מתאמים ו לחלץ נתונים מטבלאות רבות.
נניח שאנחנו רוצים כל הלידות שהתרחשו בגן, כמו גם גיל גור בן יומו:
a.nume בחר, b.data_eveniment, b.observatii (to_days (NOW ()), to_days (a.data_nast)) /
אני בגיל מבעלי חיים, אירועים 365
בעלי חיים כמו האירועים, כפי b
איפה a.cod = b.cod ו b.tip_eveniment = "לידה"
כדי להקטין את הקוד בהצהרה זו השתמשנו באתר כינוי.
המתאם ניתן לעשות עם שולחן אחר, אבל יכול לעשות שאילתה לטבלה עם עצמו. זה אולי נראה מגוחך במבט ראשון, אך לעיתים הוא הופך להיות הכרחי, כדי לראות מה התוצאה של החקירה הבאים:
a.nume בחר, a.sex, b.nume, b.sex, a.specie איפה היו בעלי חיים, בעלי חיים כמו ב
איפה = b.specie ו a.specie a.sex = "מ" ומין = "f"
שאילתה זו דוגמה מעניינת השולחן קורלציה עם עצמו (ראי), דרך החיזור שלה חיה קבלת מינים ספציפיים.
הוראות אחרות משמשות SQL Update ו-Delete. עדכון משמש כדי לשנות נתונים בטבלה:
UPDATE
SET =
[שם];
כדי למחוק נתונים מטבלאות להשתמש את ההצהרה הבאה
DELETE מאיפה;













