13 פקודות SQL החשובות ביותר שכל מתכנת צריך להכיר

13 פקודות SQL החשובות ביותר שכל מתכנת צריך להכיר

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





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





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





הַקדָמָה

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

ה גבהים הטבלה מכילה את שמו וגובהו של כל אדם:



ה צוות הטבלה מכילה את השם והגיל של אנשי הצוות - זהים לחלוטין לטבלת הלקוחות:

הטבלה האחרונה נקראה אֲנָשִׁים מכיל את שם וגיל האנשים, בדיוק כמו טבלאות הלקוח והצוות:





1. בחר

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

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





SELECT * FROM table;

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

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

תוכל לציין במפורש אילו עמודות תרצה לאחזר, כך:

SELECT age, name FROM people;

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

אם אתה רוצה לבחור נתון נוסף, אך הוא אינו מאוחסן באחת הטבלאות שלך, תוכל לעשות זאת כך:

SELECT age, '1234' FROM people;

כל מחרוזת בתוך מרכאות בודדות תוחזר במקום להתאים לשם עמודה.

2. היכן

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

SELECT age, name FROM people WHERE age > 10;

שאילתה זו מוגבלת כעת לאנשים שגילם מעל 10 שנים. ניתן לשלב מספר תנאים באמצעות וגם מַפעִיל:

SELECT age, name FROM people WHERE age > 10 AND age <20;

ה וגם הפקודה פועלת בדיוק כמו שהיא פועלת בשפה האנגלית: היא מחילה תנאי אחר על ההצהרה. בדוגמה זו, הנתונים שיוחזרו יהיו כל רשומות עם גיל בין 10 ל 20. מכיוון שאין תוצאות תואמות, לא יוחזרו נתונים.

צפה בסרטים בחינם ללא הורדה

פקודה נוספת שניתן להשתמש בה יחד עם זה היא אוֹ . להלן דוגמא:

SELECT age, name FROM people WHERE age > 10 OR name = 'Joe';

שאילתה זו מחזירה רשומות בהן הגיל הוא יותר מ -10, או שהשם שווה ל'ג'ו '. שימו לב איך יש רק סימן שוויון אחד? רוב שפות התכנות משתמשות בשווים כפולים (==) כדי לבדוק אם יש שוויון. זה לא נחוץ עבור הרוב המכריע של מנועי מסדי הנתונים (אבל זה יכול מאוד לפי סביבה, אז בדוק שוב קודם).

3. הזמנה

ה להזמין הפקודה משמשת למיון התוצאות שהוחזרו. זה עוד קל לשימוש. כל שעליך לעשות הוא לצרף אותו לסוף ההצהרה שלך:

SELECT name, age FROM people ORDER BY age DESC;

עליך לציין את העמודה ואת הסדר, שיכול להיות ASC לעלייה או DESC לירידה. ניתן להזמין לפי מספר עמודות כך:

SELECT name, age FROM people ORDER BY name ASC, age DESC

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

4. הצטרף

ה לְהִצְטַרֵף הפקודה רגילה ל לְהִצְטַרֵף נתונים קשורים המאוחסנים בטבלה אחת או יותר. אתה לְהִצְטַרֵף הטבלה השנייה לטבלה הראשונה, וציין כיצד הנתונים מחוברים. להלן דוגמא בסיסית:

כיצד לתקן קבצי mp4 פגומים
SELECT age, name, height FROM people LEFT JOIN heights USING (name);

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

אל תדאג אם העמודות שלך כוללות שמות שונים בכל טבלה. אתה יכול להשתמש ב- 'ON' במקום 'USING':

SELECT age, name, height FROM people LEFT JOIN heights ON (namea = nameb);

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

  • (פנימי) הצטרף - מחזירה שורות עם התאמה בשתי הטבלאות.
  • הצטרף לשמאל (חיצוני) - מחזירה את כל השורות מהטבלה השמאלית, עם כל ההתאמות מהטבלה הימנית. אם אין התאמות, רשומות הטבלה השמאלית עדיין מוחזרות.
  • הצטרף ימינה (חיצונית) - זה ההפך מצירוף שמאלי: כל השורות מהטבלה הימנית מוחזרות, יחד עם כל ההתאמות בטבלה השמאלית.
  • הצטרף מלא (חיצוני) - מחזירה כל רשומות עם התאמה בכל אחת מהטבלאות.

התחביר 'INNER' או 'OUTER' הוא אופציונלי. זה יכול להקל על ההבנה, אך אינך צריך לציין זאת ברוב המכריע של הזמן.

5. כינויים

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

SELECT A.age FROM people A;

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

SELECT people.age FROM people;

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

SELECT staff.age, staff.name, customers.age, customers.name FROM staff, customers;

והנה אותה שאילתה עם כינויים:

SELECT A.age, A.name, B.age, B.name FROM staff A, customers B;

לשולחן הצוות ניתן הכינוי 'A', ולשולחן הלקוחות ניתן הכינוי 'B'. טבלאות כינוי באמת עוזרות להפוך את הקוד לקל יותר להבנה ומפחית את כמות ההקלדות שעליך לבצע.

תוכל גם לשנות את שם העמודה עם כינוי באמצעות הפקודה 'AS':

SELECT age AS person_age FROM people;

כאשר שאילתה זו מופעלת, העמודה תיקרא כעת 'person_age' במקום 'גיל'.

6. איחוד

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

SELECT age, name FROM customers
UNION
SELECT age, name FROM staff;

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

SELECT age, name FROM customers
UNION ALL
SELECT age, name FROM staff;

שימו לב כיצד משתנה סדר השורות? יוניון פועלת בצורה היעילה ביותר, כך שהנתונים המוחזרים יכולים להשתנות לפי הסדר.

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

7. הכנס

עכשיו אתה יודע הכל על אחזור נתונים ממאגר נתונים, אבל מה עם הכנסת אותם? כאן המקום לְהַכנִיס הפקודה נכנסת. הנה דוגמה:

INSERT INTO people(name, age) VALUES('Joe', 102);

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

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

8. עדכון

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

UPDATE people SET name = 'Joe', age = 101;

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

על מנת להיות ספציפיים יותר, תוכל להשתמש בסעיפי 'WHERE' בדיוק כמו בעת ביצוע בחירה:

UPDATE people SET name = 'Joe', age = 101 WHERE name = 'James';

אתה יכול אפילו לציין מספר תנאים באמצעות 'AND' ו- 'OR':

UPDATE people SET name = 'Joe', age = 101 WHERE (name = 'James' AND age = 100) OR name = 'Ryan';

שימו לב כיצד משתמשים בסוגריים כדי להגביל את התנאים.

כיצד להוסיף טקסט לטיקוק

9. מעלה

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

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

INSERT INTO people(name, age)
VALUES('Joe', 101)
ON DUPLICATE KEY UPDATE age = 101;

שים לב כיצד זהו בעצם עדכון והצהרת הוספה, שניתן לסכם אותם כ'עדכון אם ההוספה נכשלה '.

10. מחק

לִמְחוֹק משמש להסרת רשומות לחלוטין - זה עלול להזיק למדי אם מתעללים בו! התחביר הבסיסי קל מאוד לשימוש:

DELETE FROM people;

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

DELETE FROM people WHERE name = 'Joe';

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

11. צור טבלה

ה ליצור שולחן הפקודה משמשת ליצירת טבלאות. זה עוד אחד מאוד פשוט:

CREATE TABLE people (
name TEXT,
age, INTEGER,
PRIMARY KEY(name)
);

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

12. אלטר טבלה

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

ALTER TABLE people ADD height integer;

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

13. הטלת שולחן

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

DROP TABLE people;

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

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

למה שלא תשאיר תגובה למטה עם הטיפים והטריקים האהובים עליך ב- SQL?

זיכויים לתמונות: HYS_NP/Shutterstock

לַחֲלוֹק לַחֲלוֹק צִיוּץ אימייל האם כדאי לשדרג ל- Windows 11?

Windows עוצב מחדש. אבל האם זה מספיק כדי לשכנע אותך לעבור מ- Windows 10 ל- Windows 11?

קרא הבא
נושאים קשורים
  • תִכנוּת
  • תִכנוּת
  • SQL
על הסופר ג'ו קוברן(136 מאמרים פורסמו)

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

עוד מאת ג'ו קוברן

הירשם לניוזלטר שלנו

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

לחצו כאן להרשמה