JavaRush /جاوا بلاگ /Random-UR /حصہ 1: SQL کا تعارف

حصہ 1: SQL کا تعارف

گروپ میں شائع ہوا۔

جے ڈی بی سی۔ ڈیٹا بیس کو جوڑنا اور IntelliJ IDEA میں جاوا کنسول ایپلی کیشن بنانا

تعارف

یہ مضمون جاوا میں ڈیٹا بیس کے ساتھ تعامل کی بنیادی باتوں اور SQL کے تعارف کے لیے وقف ایک مختصر سلسلہ کھولتا ہے ۔ بہت سے پروگرام معلومات کی پروسیسنگ اور اس میں ترمیم کرنے اور اسے تازہ ترین رکھنے میں مصروف ہیں۔ چونکہ ڈیٹا پروگرام منطق کا ایک بہت اہم حصہ ہے، اس لیے اکثر اس کے لیے الگ اسٹوریج مختص کیا جاتا ہے۔ اس میں موجود معلومات کو صحیح پروسیسنگ اور اسٹوریج کو یقینی بنانے کے لیے خصوصی اصولوں کے تحت ترتیب دیا گیا ہے۔ ڈیٹا تک رسائی حاصل کی جاتی ہے اور ایک خاص استفسار کی زبان - ایس کیو ایل (سٹرکچرڈ کوئوری لینگویج) کا استعمال کرتے ہوئے اس میں ترمیم کی جاتی ہے۔
حصہ 1۔ SQL کا تعارف - 1
ڈیٹا بیس مینجمنٹ سسٹم ایک ایسا سافٹ ویئر ہے جو ڈیٹا اور اضافی خدمات (لاگنگ، ریکوری، بیک اپ وغیرہ) کے ساتھ مختلف بیرونی پروگراموں کے تعامل کو یقینی بناتا ہے، بشمول SQL کے ذریعے۔ یعنی ڈیٹا اور اس کے ساتھ کام کرنے والے بیرونی پروگراموں کے درمیان ایک سافٹ ویئر کی تہہ۔ اس حصے میں، ہم ان سوالوں کے جواب دیں گے کہ SQL کیا ہے، SQL سرور کیا ہے، اور DBMS کے ساتھ تعامل کرنے کے لیے پہلا پروگرام بنائیں گے۔

DBMS کی اقسام

ڈی بی ایم ایس کی کئی اقسام ہیں جس کی بنیاد پر وہ ڈیٹا اسٹوریج کو منظم کرتے ہیں:
  • درجہ بندی۔ ڈیٹا کو درخت کے ڈھانچے میں ترتیب دیا گیا ہے۔ ایک مثال ایک فائل سسٹم ہے جو ڈسک کی جڑ سے شروع ہوتا ہے اور پھر مختلف اقسام کی فائلوں کی شاخوں اور گھوںسلا کی مختلف ڈگریوں کے فولڈرز کے ساتھ بڑھتا ہے۔
  • نیٹ ورک درجہ بندی کی ایک ترمیم، ہر نوڈ میں ایک سے زیادہ والدین ہوسکتے ہیں۔
  • مقصد کا تعین کرنا. OOP کے مطابق ڈیٹا کو کلاسز/آجیکٹس کی شکل میں ان کی صفات اور تعامل کے اصولوں کے ساتھ ترتیب دیا جاتا ہے۔
  • رشتہ دار۔ اس قسم کے ڈی بی ایم ایس کا ڈیٹا ٹیبل میں ترتیب دیا گیا ہے۔ ٹیبلز کو ایک دوسرے سے منسلک کیا جا سکتا ہے، ان میں موجود معلومات کو ترتیب دیا گیا ہے۔
مضامین کی اس سیریز میں، ہم مثال کے طور پر H2 کا استعمال کرتے ہوئے متعلقہ DBMSs (سب سے زیادہ عام) کو دیکھیں گے اور شروع سے ایک ایسی ایپلی کیشن بنائیں گے جو ایکسچینج کے کام کرنے کے طریقے سے ملتی جلتی ہو۔ سوال: PostgreSQL، MySQL، MSSQL یا اوریکل کیوں نہیں؟ جواب: پروگراموں کا الگ سیٹ انسٹال کرنے کے مسائل سے پریشان نہ ہوں۔ مزید ترتیب، ڈیٹا بیس بنانا، مختلف OS میں کام کرنے کی پیچیدگیاں، ورژن۔ H2 کے ساتھ کام کرنے کے لیے، آپ کو کم از کم اعمال انجام دینے کی ضرورت ہے۔ لیکن کوئی بھی چیز آپ کو موجودہ H2 JDBC کو کسی دوسرے مینوفیکچرر سے رشتہ دار DBMS میں تبدیل کرنے سے نہیں روکتی ہے (صرف سرور ایڈریس لائن اور ڈرائیور کلاس کے نام کی تبدیلی)۔

ایس کیو ایل

بیرونی پروگرام ڈیٹا مینجمنٹ لینگویج سٹرکچرڈ کوئری لینگویج میں ڈی بی ایم ایس کے لیے سوالات پیدا کرتے ہیں۔ ایس کیو ایل کیا ہے اور یہ روایتی پروگرامنگ زبانوں سے کیسے مختلف ہے؟ ایس کیو ایل کی خصوصیات میں سے ایک اعلانیہ ہے۔ یعنی، SQL ایک اعلانیہ زبان ہے ۔ اس کا مطلب یہ ہے کہ جب کمانڈز داخل کرتے ہیں، یعنی ایس کیو ایل سرور پر سوالات پیدا کرتے ہیں، ہم یہ بیان کرتے ہیں کہ ہم بالکل کیا حاصل کرنا چاہتے ہیں، اور کس طریقے سے نہیں۔ سرور کو درخواست بھیج کر SELECT * FROM CUSTOMER(SQL سے روسی میں تخمینی ترجمہ: "COSTUMER ٹیبل سے انتخاب کریں، انتخاب ٹیبل کی تمام قطاروں پر مشتمل ہے" )، ہم تمام صارفین کے لیے ڈیٹا وصول کریں گے۔ اس سے کوئی فرق نہیں پڑتا ہے کہ سرور کس طرح اور کہاں سے ڈیٹا ڈاؤن لوڈ اور تخلیق کرتا ہے جس میں ہماری دلچسپی ہے۔ اہم بات یہ ہے کہ درخواست کو صحیح طریقے سے تیار کیا جائے۔
  • ایس کیو ایل سرور کیا ہے اور یہ کیسے کام کرتا ہے؟ DBMS کے ساتھ تعامل کلائنٹ سرور کے اصول پر ہوتا ہے۔ کچھ بیرونی پروگرام SQL زبان میں آپریٹرز اور کمانڈز کی شکل میں درخواست بھیجتا ہے، DBMS اس پر کارروائی کرتا ہے اور جواب بھیجتا ہے۔ سادگی کے لیے، فرض کریں کہ SQL Server = DBMS۔
اگر آپ ایک برانڈ کی کار چلا سکتے ہیں، تو آپ زیادہ تر ممکنہ طور پر بغیر کسی پریشانی کے دوسروں کو چلا سکیں گے۔ چھوٹی تفصیلات کے علاوہ ڈرائیونگ کی بنیادی باتیں ہر جگہ ایک جیسی ہیں۔ مختلف مینوفیکچررز کے ایس کیو ایل سرورز کے لیے بھی ایسا ہی ہے - ان میں سے ہر ایک کا SQL کا اپنا ورژن ہے، لیکن یہ مخصوص معیارات (SQL92, SQL2003...) پر پورا اترتا ہے۔ ہم آپریٹرز اور کمانڈز کو SQL92 فریم ورک کے اندر استعمال کریں گے۔ بنیادی SQL بیانات کو درج ذیل گروپوں میں تقسیم کیا گیا ہے۔
  • ڈیٹا ڈیفینیشن لینگویج ( DDL ) - ڈیٹا کی تعریفیں۔ ڈیٹا بیس کی ساخت اور اس کی اشیاء کی تخلیق؛
  • ڈیٹا مینیپولیشن لینگویج ( DML ) - ڈیٹا کے ساتھ اصل تعامل: اندراج، حذف، ترمیم اور پڑھنا؛
  • ٹرانزیکشن کنٹرول لینگویج ( TCL ) - لین دین کا انتظام؛
  • ڈیٹا کنٹرول لینگویج ( DCL ) - ڈیٹا اور ڈیٹا بیس ڈھانچے تک رسائی کے حقوق کا انتظام۔
مضامین کی ایک سیریز میں ہم ڈی ایم ایل پر خصوصی توجہ دیتے ہوئے پہلے تین گروہوں کو دیکھیں گے۔

جے ڈی بی سی

پچھلی صدی کے 80 کی دہائی میں، PC XT/AT قسم کے پرسنل کمپیوٹرز نے مارکیٹ کو فتح کر لیا۔ یہ زیادہ تر ان کے ڈیزائن کی ماڈیولرٹی کی وجہ سے تھا۔ اس کا مطلب یہ ہے کہ صارف اپنے کمپیوٹر کے ایک یا دوسرے جزو (پروسیسر، ویڈیو کارڈ، ڈسک وغیرہ) کو آسانی سے تبدیل کر سکتا ہے۔ یہ حیرت انگیز جائیداد آج تک محفوظ ہے: ہم ویڈیو کارڈ کو تبدیل کرتے ہیں اور ڈرائیور کو اپ ڈیٹ کرتے ہیں (بعض اوقات یہ خود بخود خود بخود بھی اپ ڈیٹ ہوجاتا ہے)۔ اکثر، ایسی ہیرا پھیری کے ساتھ کچھ بھی برا نہیں ہوتا ہے، اور موجودہ پروگرام دوبارہ انسٹال کیے بغیر اپ ڈیٹ شدہ سسٹم کے ساتھ کام کرتے رہیں گے۔ ڈی بی ایم ایس کے ساتھ جاوا میں کام کرنے پر بھی یہی لاگو ہوتا ہے۔ ایس کیو ایل سرورز کے ساتھ کام کو معیاری بنانے کے لیے، اس کے ساتھ تعامل ایک ہی پوائنٹ - JDBC (جاوا ڈیٹا بیس کنیکٹیویٹی) کے ذریعے کیا جا سکتا ہے۔ یہ DBMS کے ساتھ کام کرنے کے لیے java.sql پیکیج کا نفاذ ہے ۔ تمام مقبول SQL سرورز کے مینوفیکچررز ان کے لیے JDBC ڈرائیور جاری کرتے ہیں۔ نیچے دیے گئے خاکے پر غور کریں۔ ایپلیکیشن java.sql سے کلاسز کی مثالیں استعمال کرتی ہے ۔ پھر ہم ڈیٹا کو بازیافت/تبدیل کرنے کے لیے ضروری کمانڈز پاس کرتے ہیں۔ اس کے بعد، java.sql jdbc ڈرائیور کے ذریعے DBMS کے ساتھ بات چیت کرتا ہے اور تیار شدہ نتیجہ ہمیں واپس کرتا ہے۔ حصہ 1۔ SQL کا تعارف - 2 کسی دوسرے مینوفیکچرر سے ڈی بی ایم ایس پر سوئچ کرنے کے لیے، اکثر JDBC کو تبدیل کرنا اور بنیادی ترتیبات کو انجام دینا کافی ہوتا ہے۔ پروگرام کے باقی حصے تبدیل نہیں ہوتے ہیں۔

پہلا پروگرام

آئیے عملی حصے کی طرف چلتے ہیں۔ آئیے JetBrains IntelliJ IDEA IDE کا استعمال کرتے ہوئے جاوا پروجیکٹ بنائیں ۔ نوٹ کریں کہ الٹیمیٹ ایڈیشن ایس کیو ایل اور ڈیٹا بیس کے ساتھ کام کرنے کے لیے ایک شاندار ٹول پر مشتمل ہے - ڈیٹا گرفت ۔ تاہم، یہ زیادہ تر صارفین کے لیے ادا کیا جاتا ہے۔ لہذا تعلیمی مقاصد کے لیے ہم صرف عوامی طور پر دستیاب IntelliJ IDEA کمیونٹی ایڈیشن استعمال کر سکتے ہیں ۔ تو:
  1. IDE شروع کریں اور ایک نیا پروجیکٹ بنائیں:
    حصہ 1۔ SQL کا تعارف - 3

  2. جاوا پروجیکٹ منتخب کریں، SDK ورژن کی نشاندہی کریں (مثال کے طور پر JDK8، لیکن یہ اہم نہیں ہے):
    حصہ 1۔ SQL کا تعارف - 4

  3. اگلے مرحلے میں، کنسول ایپلیکیشن کو بطور قسم منتخب کریں :
    حصہ 1۔ SQL کا تعارف - 5

  4. ہم پروجیکٹ کا نام ، پیکیج اور ڈسک پر اس کے مقام کی نشاندہی کرتے ہیں (میں نے خاص طور پر اس کے لیے ایک علیحدہ ڈائریکٹری بنائی ہے):
    حصہ 1۔ SQL کا تعارف - 6

  5. آئیے IDE کو ایک منٹ کے لیے ایک طرف رکھیں اور H2 DBMS کے ساتھ کام کرنے کے لیے ضروری JDBC فائل www.h2database.com سے ڈاؤن لوڈ کریں (پلیٹ فارم آزاد زپ ڈاؤن لوڈ کریں):
    حصہ 1۔ SQL کا تعارف - 7

  6. ہم ڈاؤن لوڈ کی گئی فائل کے اندر جاتے ہیں (ہم راستے میں جار فائل میں دلچسپی رکھتے ہیں h2\bin ، جس کی ہمیں بعد میں ضرورت ہوگی، اسے کاپی کریں):
    حصہ 1۔ SQL کا تعارف - 8

  7. ہم IDE پر واپس آتے ہیں اور پروجیکٹ کی جڑ میں ڈائریکٹریز بناتے ہیں: db ، جہاں DBMS ڈیٹا والی فائلیں موجود ہوں گی۔ lib - یہاں JDBC JAR لائبریری ہے:
    حصہ 1۔ SQL کا تعارف - 9

  8. جار فائل کو مرحلہ 6 سے lib ڈائریکٹری میں منتقل کریں اور اسے لائبریری کے طور پر پروجیکٹ میں شامل کریں:
    حصہ 1: SQL کا تعارف - 10

  9. آئیے جاوا فائل کا نام بدل کر 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