JavaRush /בלוג Java /Random-HE /אנו מנתחים מסדי נתונים ושפת SQL. (חלק 2) - "פרויקט ג'אווה...
Roman Beekeeper
רָמָה

אנו מנתחים מסדי נתונים ושפת SQL. (חלק 2) - "פרויקט ג'אווה מא' עד ת'"

פורסם בקבוצה
מאמר מסדרה על יצירת פרויקט ג'אווה (קישורים לחומרים אחרים נמצאים בסוף). המטרה שלו היא לנתח טכנולוגיות מפתח, התוצאה היא כתיבת בוט טלגרם. "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 1בריאות טובה, קוראים יקרים. היום נדבר קצת ונכתוב יותר, כי הידיים שלנו זוכרות הרבה יותר טוב מהעיניים שלנו. אתה אולי תוהה: למה אנחנו משתמשים ב-MySQL? יש, למשל, את אותם PostgreSQL ופתרונות אחרים. הכל פשוט כאן. קודם כל, זה בחינם. שנית, יש לו ממשק UI נוח (נדבר על זה במאמר נפרד). שלישית, היא מוכרת ונעימה לי. בנוסף לכל האמור לעיל, MySQL הוא גם נפוץ מאוד.

בודק שיעורי בית

בפעם האחרונה שנתתי משימה - התקן את MySQL במחשב שלי והיכנס אליו. דרך הקונסולה, או בדרך אחרת. האם הכל נעשה? "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 2כל הכבוד למי שעשה את זה! זה לא משנה באיזו רמה אתה ב-JavaRush, חשוב להיות מסוגל להתקין ולהגדיר את הכלים הדרושים לעבודה לפי המדריכים. ואני מבטיח לכם שיהיו רבים מהם. מי שניסה, אך לא הצליח, גם לא מפחד. זה לא תמיד קורה בפעם הראשונה: לפעמים אתה צריך לקחת הפסקה ולנסות שוב עם כוחות רעננים. מי התקין MySQL בעצמך - כתוב "+" בתגובות כדי שאדע שמישהו עושה את זה. גם אני אעשה את זה בעצמי. מכיוון שכבר אין לי מחשב נייד של Windows, אראה אותו ב-MacBook. אני לא חושב שתהליך ההתקנה יהיה שונה בהרבה. למי שרוצה להתקין אותו בעצמו באמצעות המדריך האנגלי, אנא לחץ כאן .

התקנת MySQL ב-MacOS

קודם כל, עבור לקישור הבא , בחר את מערכת ההפעלה, בין אם זה Windows, Ubuntu או MacOS, כפי שמוצג להלן: "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 3הורד והפעל. עם זאת, הכל לא הלך לי מיד. התברר שאפל לא מאפשרת התקנה של הגרסה העדכנית ביותר: "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 4אתה כמובן יכול לבטל את זה, אבל ה-MacBook עובד, ואני לא אתעסק עם ההגדרות שלו. לכן, דרך ניסוי וטעייה, מצאתי גרסה שניתן להתקין - זו 5.7.21 . כדי למצוא גרסאות אחרות, עבור ללשונית ארכיון ובחר את הגרסה הרצויה: "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 5לאחר מכן, הפעל את הקובץ שהורד. לחץ על הבא, הבא, הבא, אבל בסוף, היזהר! יהיו שם משתמש וסיסמה לכניסה למסד הנתונים. אצלי זה נראה כך: "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 6כתוב פה שיהיה משתמש עם השם root והסיסמה Vac/zto=.24q . זה משלים את ההתקנה.

היכנס לשורת הפקודה של MySQL

כדי להיכנס, עליך לוודא ששרת MySQL מופעל. לשם כך, עבור אל System Preferences , מצא שם את סמל MySQL: "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 7עבור אליו וראה שקודם כל יש להפעיל את השרת. כדי לעשות זאת, פשוט לחץ על התחל MySQL Server וזהו. כן, אתה יכול גם לסמן את התיבה כך שהשרת יופעל ברקע בכל פעם שהמכונה מופעלת. "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 8חשוב לציין שאתחיל את כל הבקשות בטרמינל בסמל $ כדי להבהיר. לאחר מכן, עליך להתחבר ישירות לשרת MySQL באמצעות שורת הפקודה. כדי לעשות זאת, פתח את הטרמינל וכתוב: $ mysql ויש שתי אפשרויות:
  1. אם התגובה היא "ERROR 1045 (28000): גישה נדחתה למשתמש 'roman_beskrovnyi'@'localhost' (באמצעות סיסמה: NO" , אז זה אומר שהשרת מותקן ונחזר. אתה רק צריך להעביר את הפקודה הנכונה אליו.
  2. אם התשובה היא הפקודה לא נמצאה: mysql , זה בסדר - פשוט אין קישור לשרת. כדי לעשות זאת, תצטרך ליצור כינוי עם המשתנה mysql, אז נכתוב את השורה הבאה:

    $ כינוי mysql=/usr/local/mysql/bin/mysql

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

  3. MySQL לא מותקן, אל תטעה את המחשב שלך.
לאחר מכן, אנו משתמשים בשם ובסיסמה שסופקו במהלך ההתקנה ונכתוב: $ mysql --user=root -p"פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 9 שם נכתוב את הסיסמה, ונשמח בטופס הזה: "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 10רק השורה האחרונה אומרת שאנחנו מחוברים ל-MySQL שרת מסוף. אבל הסיסמה הזו ל-root התבררה כסיסמה חד פעמית, וצריך לשנות אותה לשנייה. מטעמי ביטחון כמובן. אם לא נשנה זאת וננסה ליצור מסד נתונים חדש בשרת, נקבל את התגובה הבאה: ERROR 1820 (HY000): עליך לאפס את הסיסמה שלך באמצעות משפט ALTER USER לפני ביצוע הצהרה זו . "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 11הם נאלצים, כביכול. טוב, בסדר, קשה לנו? בואו נהפוך את הסיסמה לפשוטה יותר (זה רק לעבודה מקומית; לעבודה אמיתית, הסיסמה חייבת להיות מורכבת, כמובן). נניח root∫ , כמו שם המשתמש. כדי לשנות את הסיסמה, עליך להזין את השורה: ALTER USER 'root'@'localhost' מזוהה על ידי 'root'; והתשובה תהיה כך: "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 12כדי לוודא שהכל עובד כמו שצריך, בואו ננסה ליצור מסד נתונים חדש באמצעות התחביר הבא : $ CREATE DATABASE test_db; כדי לוודא שנוצר מסד נתונים כזה בשרת, כתוב את הפקודה: $ SHOW DATABASES; וכתוצאה מכך אנחנו מקבלים את הדברים הבאים: "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 13זה הכל :) אי אפשר להגיד שזה היה פשוט ומהיר. לכן, מי שעשה זאת בעצמו - כבוד מיוחד. למי שלא עשה זאת, אל דאגה, יש מדריכים לכל סוגי ההתקנה: הכל מתואר שם בצורה שפויה למדי. הדבר היחיד הוא שהכל באנגלית. כעת אנו כותבים את השורות הראשונות שלנו ב-SQL.

כתיבת השורות הראשונות שלנו ב-SQL

כפי שאולי שמתם לב לעיל, אנו מכירים שתי פקודות:
  1. CREATE DATABASE - יוצר מסד נתונים בשרת;
  2. הצג מסדי נתונים - מציג את כל מסדי הנתונים שנוצרו והזמינים בשרת.
אני מציין שלא אכפת ל-SQL איך אנחנו כותבים את הפקודות שלהם - או הכל באותיות גדולות או לא. עם זאת, זה נחשב לנימוסים טובים לכתוב פקודות באותיות גדולות. לאחר מכן, כדי למחוק מסד נתונים, עליך לכתוב את הפקודה DROP DATABASE database_name ; כאשר database_name הוא השם של מסד הנתונים שאנו רוצים למחוק. כבר יצרנו מסד נתונים של בדיקות בשם test_db , אז בואו נמחק אותו. לשם כך אנו כותבים: $ DROP DATABASE test; ראוי לציין שתגובת השאילתה אישור, 0 שורות מושפעות (0.02 שניות) חשובה מאוד, מכיוון שהיא מאשרת שהשאילתה הצליחה. בנוסף, הוא אומר לך כמה שורות בטבלאות השתנתה השאילתה הזו ובאיזה זמן. "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 15באופן כללי, המילה DROP אחראית להסרת משהו. במקרה זה, מחקנו את מסד הנתונים. אבל זה יכול לשמש גם למטרות אחרות (למשל, הורדת שולחן). ועכשיו, כדי לסמוך עליי , בדוק את התוצאה, בוא נראה כמה מסדי נתונים נשארו: $ SHOW DATABASES; "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 16כפי שאנו יכולים לראות, אין מסד נתונים בשם test_db. CHTD :D

צור מסד נתונים וטבלה משלך

צור מסד נתונים של ערים: $ CREATE DATABASE ערים; כדי לעבוד במסד נתונים ספציפי, עליך להיכנס אליו. לשם כך, השתמש בפקודה USE database_name , שלאחריה כל הפקודות לעבודה עם טבלאות יבוצעו במסד נתונים זה. $ USE ערים; כפי שניתן לראות מהתגובה - מסד נתונים השתנה , המעבר למסד נתונים זה הצליח. "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 17השלב הבא הוא יצירת טבלה. איזה? ובכן, ראשית, בואו ניצור טבלה עם מדינות. למה? כי ערים צריכות מפתח זר למדינה בה היא נמצאת. וניתן להשיגו לאחר שמדינות אלו בדרך כלל מתחילות להיות במאגר (להלן - בקיצור מהמאגר). כזכור מהמאמר הקודם , בטבלה שבה מתוארות מדינות, יש לנו שני שדות - מזהה ושם, כאשר מזהה הוא מזהה ייחודי, והשם הוא שם המדינה. לכן, יצירת מסד נתונים כזה היא קלה כמו הפגזת אגסים. אנו כותבים: $ CREATE TABLE מדינה (מזהה INT, שם VARCHAR(30)); "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 18כפי שאתה יכול לראות, הכל הלך טוב. באנלוגיה ל-SHOW DATABASES, אנו יכולים להסתכל על רשימת הטבלאות: $ SHOW TABLES; "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 19הנה הוא, השולחן שלנו. כעת נלמד כיצד למחוק טבלאות. לשם כך אנו כותבים: $ DROP TABLE country; "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 20חשוב לציין שברגע שטבלה או מסד נתונים נמחקים, לא ניתן לשחזר אותם!

עבודה עם השולחן

בואו נשחזר את הטבלה שיצרנו. כדי לעשות זאת, אתה רק צריך לחזור על מה שכבר עשית. כדי להסתכל על מבנה הטבלה, עליך להשתמש בפקודה הבאה - DESC table_name : $ DESC country; "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 21כפי שניתן לראות, כל המידע על הטבלה נרשם כאן. כדי להוסיף משהו לטבלה, עליך להשתמש בפקודה INSERT INTO table_name VALUES() . בואו נוסיף שלושה ערכים עבור שלוש מדינות: $ INSERT INTO country VALUES (1, 'אוקראינה'); $ INSERT INTO country VALUEs (2, 'רוסיה'); $ INSERT INTO country VALUES(3, 'ביילורוס'); "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 22כדי להסתכל על מה שמאוחסן במסד הנתונים, נשתמש בבקשה פשוטה לקבלת נתונים. לשם כך, אנו רוצים לקבל את הנתונים של כל השדות מטבלת המדינה. זכור היטב את המשפט הקודם כי שאילתת ה-sql תהיה כך: $ SELECT * FROM country; כאשר * פירושו שאתה צריך לקחת את כל השדות. "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 23ככה יצא לנו יפה. אם אנחנו רוצים לקבל רק שדה ספציפי, זו לא בעיה: במקום כוכב, אנחנו כותבים את שמות השדות שאמורים להיות מופרדים בפסיקים. נסה את זה בעצמך ;) כבר יצרנו טבלה, אבל איכשהו אין לנו מספיק מידע עליה. גודל האוכלוסייה בהחלט לא יזיק, נכון? ואיך עושים את זה?
  1. הוסף שדה חדש לסכימת הטבלה - אוכלוסיה.
  2. עדכן ערכים קיימים.
עבור הראשון, נשתמש בפקודה ALTER TABLE table_name ADD COLUMN . באופן כללי, ALTER TABLE הוא קבוצה של פקודות לפעולות DDL (זוכרים מה זה? זה היה במאמר הקודם). אגב, SELECT מתייחס לפעולת DML. בוא נכתוב את הדברים הבאים: $ ALTER TABLE מדינה ADD COLUMN population INT; $ DESC מדינה; "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 24כפי שניתן לראות מהאיור, הוספנו בהצלחה שדה חדש לטבלה ובדקנו בפקודה השנייה שהשדה נמצא בסכימה. השלב השני הוא עדכון הערכים בטבלה והקצאת ערכים. בוא ניקח את המספר מויקיפדיה. לא שאני סומך עליהם, אבל בכל זאת, זו הדרך המהירה והקלה ביותר. לשם כך, השתמש בפקודת DML אחרת. אבל קודם כל, בואו נגיד מה אנחנו רוצים לעשות: אנחנו רוצים לעדכן את טבלת המדינה, להפוך את שדה האוכלוסיה שווה ל-41806221 ברשומה שבה id = 1. וכך נראית הבנייה הזו: UPDATE table_name SET table_row1 = value WHERE table_row2 = value2; בהתבסס על זה, אנו כותבים: $ UPDATE country SET population = 41806221 WHERE id = 1; "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 25כאן השתמשנו בפעם הראשונה במילת המפתח WHERE . יש צורך להוסיף ערכים לסינון. לדוגמה, הפעם אמרנו שיש צורך לעדכן רק עבור השדה (שדות) שה-id שלו שווה ל-1 (עד שאמרנו ל-sql שזה המפתח הראשי - יכול להיות שיש כמה כאלה). נוכל גם לציין תנאי כמו WHERE id > 2. אם לא היינו מציינים סינון כלל, הערך הזה היה נכתב לכל רשומות הטבלה. עבור רוסיה, בלארוס ומדינות אחרות, עדכנו את עצמכם ;) כעת ננסה לקבל נתונים מהטבלה עבור שדות השם והאוכלוסיה, בתנאי שה-id גדול מ-1. $ SELECT name, population FROM country WHERE id >1; "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 26כך קיבלנו רק את השדות שרצינו בעצמנו. באמצעות INSERT INTO נוכל לציין אילו שדות נרצה להוסיף ואילו נרצה להשאיר ריקים. לשם כך, אנו כותבים: $ INSERT INTO country (שם, אוכלוסייה) VALUES('Georgia', 1234566); כדי לבדוק מה קרה, בואו נסתכל על רשימת כל השדות: $ SELECT * FROM country; "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 27בלי מזהה הערך גרוע, והאוכלוסייה כמובן נלקחה מהראש, אז צריך למחוק אותו. השתמש בפקודה DELETE FROM table_name : $ DELETE FROM country WHERE name = 'Georgia'; "פרויקט ג'אווה מא' עד ת': אנו מנתחים מסדי נתונים ושפת SQL.  חלק 2 - 28כך למדנו כיצד למחוק שדה מהטבלה.

שיעורי בית

שיעורי הבית יהיו כדלקמן:
  1. עליך להוסיף מפתח ראשי (PRIMARY KEY) משדה המזהה לסכימת טבלת המדינה.
  2. הוסף עוד מדינה לטבלת המדינות - מולדובה.
  3. על פי התוכנית של המאמר הקודם, צור עיר טבלה, שתכיל את כל השדות המתוארים. שמות השדות יהיו כדלקמן: id, name, country_id, population.
  4. הוסף מפתח ראשי לטבלת העיר.
  5. הוסף מפתח זר לטבלת העיר.
המשימה מעניינת, למי שמבין היא תהיה מהירה ולא מסובכת. למי שלא, זה ישמש חיזוק מצוין לחומר מהמאמר הזה.

בואו נסכם את זה

עשינו הרבה דברים במאמר הזה. ראשית, התקנו והפעלנו את שרת מסד הנתונים של MySQL. שנית, למדנו רשימה שלמה של מילות מפתח ושאילתות, בעזרתן נוכל ליצור/למחוק מסדי נתונים וטבלאות. למדנו כיצד להוסיף נתונים לטבלאות, לעדכן ולמחוק אותם. להלן כל הפקודות בהן השתמשנו, יחד עם התיאורים שלהן:
  • CREATE DATABASE database_name; - צור מסד נתונים חדש
  • הצג מסדי נתונים; - הצג את רשימת מסדי הנתונים
  • DROP DATABASE database_name; - מחיקת מסד נתונים
  • USE database_name; - עבודה במסד הנתונים
  • CREATE TABLE table_name (מזהה INT, ....); - ליצור טבלה
  • הצג טבלאות; - הצג את רשימת הטבלאות
  • DESC TABLE table_name; - עיין בתרשים הטבלה
  • DROP TABLE table_name; - מחק טבלה
  • INSERT INTO table_name VALUES (); - הוסף שדה לטבלה
  • SELECT * FROM table_name WHERE table_row = ערך; - קבל שדות בטבלה בתנאי שאחרי WHERE
  • SELECT * FROM table_name; - קבל את כל השדות בטבלה
  • ALTER TABLE table_name ADD COLUMN column_name COLUMN_TYPE; - הוסף שדה שדה חדש לסכימת הטבלה
  • עדכון talbe_name SET talbe_row1 = value1 WHERE table_row2 = value2; - עדכון רשומות בטבלה: הגדר את הערכים של שדה אחד בכפוף לתנאי עבור שדה אחר
  • DELETE FROM table_name WHERE table_row1 = value1; - הסר שדה (או שדות) מטבלה בתנאי מסוים.
אני חושב שעשינו עבודה מצוינת איתך. אני מזמין את כל מי שאוהב את העבודה שלי להירשם לחשבון GitHub שלי , שם אני מפרסם פרויקטים ופיתוחים מעניינים שקורים בקריירה שלי. אני מזמין את כל מי שמעוניין לעבוד בקוד פתוח להשתתף בפרויקטים שלי (מאגרים). תודה לכולכם על תשומת הלב. הישארו מעודכנים למאמר הבא בנושא מאגרי מידע שיגיע בקרוב.

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

הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION