JavaRush /בלוג Java /Random-HE /חלק 1: מבוא ל-SQL
Marat Sadykov
רָמָה

חלק 1: מבוא ל-SQL

פורסם בקבוצה

JDBC. חיבור מסד נתונים ויצירת יישום קונסולת Java ב- IntelliJ IDEA

מבוא

מאמר זה פותח סדרה קצרה המוקדשת ליסודות האינטראקציה עם מסדי נתונים ב-Java ומבוא ל-SQL . תוכנות רבות עסוקות בעיבוד ושינוי מידע ובשמירה עליו עדכני. מכיוון שהנתונים הם חלק חשוב מאוד בלוגיקת התוכנית, לרוב מוקצה להם אחסון נפרד. המידע בו מובנה וכפוף לכללים מיוחדים להבטחת עיבוד ואחסון נכונים. ניתן לגשת לנתונים ולשנות אותם באמצעות שפת שאילתה מיוחדת - SQL (Structured Query Language).
חלק 1. מבוא ל-SQL - 1
מערכת ניהול מסדי נתונים היא תוכנה המבטיחה אינטראקציה של תוכנות חיצוניות שונות עם נתונים ושירותים נוספים (רישום, שחזור, גיבוי וכו'), לרבות באמצעות SQL. כלומר, שכבת תוכנה בין הנתונים לתוכנות חיצוניות שעובדות איתה. בחלק זה, נענה על השאלות לגבי מה זה SQL, מהו שרת SQL, וניצור את התוכנה הראשונה לאינטראקציה עם ה-DBMS.

סוגי DBMS

ישנם מספר סוגים של DBMS המבוססים על האופן שבו הם מארגנים את אחסון הנתונים:
  • היררכי. הנתונים מאורגנים במבנה עץ. דוגמה לכך היא מערכת קבצים שמתחילה משורש הדיסק ולאחר מכן צומחת עם ענפים של קבצים מסוגים שונים ותיקיות בדרגות קינון שונות.
  • רֶשֶׁת. שינוי של היררכי, לכל צומת יכול להיות יותר מהורה אחד.
  • מונחה עצמים. הנתונים מאורגנים בצורה של מחלקות/אובייקטים עם תכונותיהם ועקרונות האינטראקציה שלהם לפי OOP.
  • יחסי. הנתונים של DBMS מסוג זה מאורגנים בטבלאות. ניתן לקשר טבלאות זו לזו, המידע בהן מובנה.
בסדרת מאמרים זו, נסתכל על DBMSs יחסי (כאלה הנפוצים ביותר) המשתמשים ב-H2 כדוגמה וניצור אפליקציה מאפס שמחקה משהו הדומה לאופן שבו פועלת Exchange. שאלה: למה לא PostgreSQL, MySQL, MSSQL או Oracle? תשובה: כדי לא להיות מוסחת על ידי בעיות של התקנת סט נפרד של תוכניות. תצורה נוספת, יצירת מסד נתונים, המורכבויות של עבודה במערכת הפעלה שונות, גרסאות. כדי לעבוד עם H2, עליך לבצע מינימום פעולות. אבל שום דבר לא מונע ממך לשנות את ה-H2 JDBC הנוכחי ל-DBMS יחסי מיצרן אחר (רק שורת כתובת השרת ושם מחלקת מנהל ההתקן משתנים).

SQL

תוכניות חיצוניות מייצרות שאילתות ל-DBMS בשפת ניהול הנתונים Structured Query Language. מהו SQL וכיצד הוא שונה משפות תכנות קונבנציונליות? אחת התכונות של SQL היא הצהרות. כלומר, SQL היא שפה הצהרתית . המשמעות היא שכאשר מכניסים פקודות, כלומר יוצרים שאילתות לשרת ה-SQL, אנו מתארים מה בדיוק אנחנו רוצים לקבל, ולא באיזה אופן. על ידי שליחת בקשה לשרת SELECT * FROM CUSTOMER(תרגום משוער מ-SQL לרוסית: "עשה בחירה מטבלת COSTUMER, הבחירה מורכבת מכל השורות בטבלה" ), נקבל נתונים עבור כל המשתמשים. זה בכלל לא משנה איך ומאיפה השרת מוריד ומייצר את הנתונים שאנחנו מעוניינים בהם. העיקר לנסח את הבקשה בצורה נכונה.
  • מהו SQL Server וכיצד הוא עובד? אינטראקציה עם ה-DBMS מתרחשת על פי עקרון שרת-לקוח. תוכנה חיצונית כלשהי שולחת בקשה בצורה של אופרטורים ופקודות בשפת SQL, ה-DBMS מעבד אותה ושולח תגובה. לשם הפשטות, נניח ש-SQL Server = DBMS.
אם אתה יכול לנהוג במותג אחד של מכוניות, סביר להניח שתוכל לנהוג באחרים ללא בעיות. יסודות הנהיגה זהים בכל מקום, למעט פרטים קטנים. הדבר נכון גם לגבי שרתי SQL מיצרנים שונים – לכל אחד מהם יש גרסה משלו ל-SQL, אך הוא עומד בסטנדרטים שצוינו (SQL92, SQL2003...). נשתמש באופרטורים ובפקודות במסגרת SQL92. הצהרות SQL בסיסיות מחולקות לקבוצות הבאות:
  • Data Definition Language ( DDL ) – הגדרות נתונים. יצירת מבנה מסד הנתונים והאובייקטים שלו;
  • שפת מניפולציה של נתונים ( DML ) - אינטראקציה בפועל עם נתונים: הכנסה, מחיקה, שינוי וקריאה;
  • שפת בקרת עסקאות ( TCL ) - ניהול עסקאות;
  • Data Control Language ( DCL ) - ניהול זכויות גישה לנתונים ומבני מסד נתונים.
בסדרת מאמרים נבחן את שלוש הקבוצות הראשונות, תוך שימת לב מיוחדת ל-DML.

JDBC

בשנות ה-80 של המאה הקודמת, מחשבים אישיים מסוג PC XT/AT כבשו את השוק. זה היה בעיקר בשל המודולריות של העיצוב שלהם. המשמעות היא שהמשתמש יכול בקלות לשנות רכיב כזה או אחר של המחשב שלו (מעבד, כרטיס מסך, דיסקים וכו'). הנכס הנפלא הזה נשמר עד היום: אנחנו מחליפים את כרטיס המסך ומעדכנים את הדרייבר (לפעמים הוא אפילו מעדכן את עצמו, אוטומטית). לרוב, שום דבר רע לא קורה עם מניפולציות כאלה, ותוכניות קיימות ימשיכו לעבוד עם המערכת המעודכנת ללא התקנה מחדש. אותו הדבר חל על עבודה ב-Java עם DBMS. לסטנדרטיזציה של עבודה עם שרתי SQL, ניתן לבצע אינטראקציה איתו דרך נקודה אחת - JDBC (קישוריות Java DataBase). זהו יישום של חבילת java.sql לעבודה עם DBMS. יצרנים של כל שרתי SQL הפופולריים משחררים עבורם מנהלי התקנים של JDBC. שקול את התרשים שלהלן. היישום משתמש במופעים של מחלקות מ- java.sql . לאחר מכן אנו מעבירים את הפקודות הדרושות כדי לאחזר/לשנות את הנתונים. לאחר מכן, java.sql מקיים אינטראקציה עם ה-DBMS דרך מנהל ההתקן jdbc ומחזיר לנו את התוצאה המוגמרת. חלק 1. מבוא ל-SQL - 2 כדי לעבור ל-DBMS מיצרן אחר, לעתים קרובות מספיק לשנות JDBC ולבצע הגדרות בסיסיות. שאר חלקי התוכנית אינם משתנים.

תוכנית ראשונה

נעבור לחלק המעשי. בואו ניצור פרויקט Java באמצעות JetBrains IntelliJ IDEA IDE . שימו לב שהמהדורה האולטימטיבית מכילה כלי נפלא לעבודה עם SQL ומסדי נתונים - Data Grip . עם זאת, זה בתשלום עבור רוב המשתמשים. אז למטרות חינוכיות נוכל להשתמש רק במהדורת הקהילה של IntelliJ IDEA הזמינה לציבור . כך:
  1. הפעל את ה-IDE וצור פרויקט חדש:
    חלק 1. מבוא ל-SQL - 3

  2. בחר פרויקט Java, ציין את גרסת ה-SDK (בדוגמה JDK8, אבל זה לא קריטי):
    חלק 1. מבוא ל-SQL - 4

  3. בשלב הבא, בחר את אפליקציית המסוף כסוג :
    חלק 1. מבוא ל-SQL - 5

  4. אנו מציינים את שם הפרויקט , החבילה והמיקום שלו בדיסק (יצרתי ספרייה נפרדת במיוחד עבור זה):
    חלק 1. מבוא ל-SQL - 6

  5. בואו נשים את ה-IDE בצד לדקה ונוריד מ- www.h2database.com את קובץ ה-JDBC הדרוש לעבודה עם H2 DBMS (הורדת פלטפורמה עצמאית ZIP):
    חלק 1. מבוא ל-SQL - 7

  6. אנחנו נכנסים לקובץ שהורד (אנחנו מעוניינים בקובץ jar לאורך הנתיב h2\bin , שנצטרך בהמשך, העתק אותו):
    חלק 1. מבוא ל-SQL - 8

  7. אנו חוזרים ל-IDE ויוצרים ספריות בשורש הפרוייקט: db , שם ימוקמו קבצים עם נתוני DBMS; lib - הנה ספריית JDBC JAR:
    חלק 1. מבוא ל-SQL - 9

  8. העבר את קובץ ה-jar משלב 6 לספריית lib והוסף אותו לפרוייקט כספרייה:
    חלק 1: מבוא ל-SQL - 10

  9. בואו נשנה את שם קובץ ה-Java ל- src/sql/demo ל- StockExchange.java (במקרה ששכחתם, אנחנו הולכים לחקות "החלפה") פשוטה), נשנה את תוכנו ונפעיל:
    חלק 1: מבוא ל-SQL - 11
כעת אנו יכולים להתחבר ל-DBMS ולהתנתק ממנו. כל שלב בא לידי ביטוי בקונסולה. כאשר אתה מתחבר לראשונה ל-DBMS, נוצר קובץ מסד נתונים stockExchange.mv.db .

ניתוח קוד

הקוד בפועל:
package sql.demo;

import java.sql.*;

public class StockExchangeDB {
    // Блок объявления констант
    public static final String DB_URL = "jdbc:h2:/c:/JavaPrj/SQLDemo/db/stockExchange";
    public static final String DB_Driver = "org.h2.Driver";

    public static void main(String[] args) {
        try {
            Class.forName(DB_Driver); //Проверяем наличие JDBC драйвера для работы с БД
            Connection connection = DriverManager.getConnection(DB_URL);//соединениесБД
            System.out.println("Соединение с СУБД выполнено.");
            connection.close();       // отключение от БД
            System.out.println("Отключение от СУБД выполнено.");
        } catch (ClassNotFoundException e) {
            e.printStackTrace(); // обработка ошибки  Class.forName
            System.out.println("JDBC драйвер для СУБД не найден!");
        } catch (SQLException e) {
            e.printStackTrace(); // обработка ошибок  DriverManager.getConnection
            System.out.println("Ошибка SQL !");
        }
    }
}

חסימה קבועה:

  1. DB_Driver : כאן הגדרנו את שם הדרייבר, אותו ניתן למצוא, למשל, על ידי לחיצה על הספרייה המחוברת והרחבת המבנה שלה בספריית lib של הפרויקט הנוכחי.
  2. DB_URL : כתובת מסד הנתונים שלנו. מורכב מנתונים מופרדים בנקודתיים:
  3. פרוטוקול=jdbc
  4. ספק (יצרן/שם) DBMS=h2
  5. המיקום של ה-DBMS, במקרה שלנו הנתיב לקובץ (c:/JavaPrj/SQLDemo/db/stockExchange). עבור DBMSs רשת, השמות או כתובות ה-IP של שרתים מרוחקים, מספרי יציאות TCP/UDP וכן הלאה מצוינים כאן בנוסף.

עיבוד שגיאות:

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

היגיון הפעולה:

  1. Class.forName (DB_Driver) – אנו מוודאים שמנהל ההתקן של JDBC המתאים זמין (שהורדנו והתקנו בעבר).
  2. DriverManager.getConnection (DB_URL) – צור חיבור DBMS. באמצעות הכתובת שעברה, JDBC בעצמה תקבע את הסוג והמיקום של ה-DBMS שלנו ותחזיר חיבור, שבו נוכל להשתמש כדי לתקשר עם מסד הנתונים.
  3. connection.close() – סגור את החיבור ל-DBMS וסיים לעבוד עם התוכנית.
בחלק הבא של הסדרה נערוך היכרות עם אופרטורים של DDL וסוגי נתונים של SQL, וגם ניצור את המבנה הראשוני של בסיס הנתונים שלנו ונמלא אותו בטבלאות. חלק שני חלק שלישי
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION