এসকিউএল আমাদের সবকিছু

আপনি সম্ভবত ইতিমধ্যে অনুমান করেছেন যে, SQL সার্ভারে সমস্ত কমান্ড SQL কোয়েরির মাধ্যমে দেওয়া যেতে পারে। সবকিছু।

এই দলগুলি আনুষ্ঠানিকভাবে 4 টি গ্রুপে বিভক্ত:

  • ডেটা সংজ্ঞা বিবৃতি (ডেটা সংজ্ঞা ভাষা, DDL ):

    • CREATE একটি ডাটাবেস অবজেক্ট তৈরি করে (ডাটাবেস নিজেই, টেবিল, ভিউ, ব্যবহারকারী ইত্যাদি)
    • ALTER একটি বস্তু পরিবর্তন করে
    • DROP একটি বস্তু সরিয়ে দেয়
  • ডেটা ম্যানিপুলেশন অপারেটর (ডেটা ম্যানিপুলেশন ল্যাঙ্গুয়েজ, ডিএমএল ):

    • SELECT ডেটা নির্বাচন করে যা প্রদত্ত শর্তগুলিকে সন্তুষ্ট করে
    • INSERT নতুন ডেটা যোগ করে
    • আপডেট বিদ্যমান ডেটা পরিবর্তন করে
    • DELETE ডেটা সরিয়ে দেয়
  • ডেটা অ্যাক্সেস ডেফিনিশন অপারেটর (ডেটা কন্ট্রোল ল্যাঙ্গুয়েজ, ডিসিএল ):

    • GRANT একটি বস্তুর উপর নির্দিষ্ট ক্রিয়াকলাপ সম্পাদন করার জন্য একটি ব্যবহারকারীকে (গ্রুপ) অনুমতি দেয়
    • REVOKE পূর্বে জারি করা অনুমতি প্রত্যাহার করে
    • DENY একটি নিষেধাজ্ঞা সেট করে যা একটি পারমিটের চেয়ে অগ্রাধিকার নেয়
  • লেনদেন নিয়ন্ত্রণ ভাষা ( টিসিএল ) বিবৃতি :

    • COMMIT একটি লেনদেন প্রয়োগ করে
    • ROLLBACK বর্তমান লেনদেনের পরিপ্রেক্ষিতে করা সমস্ত পরিবর্তনকে রোলব্যাক করে
    • SAVEPOINT একটি লেনদেনকে ছোট অংশে ভাগ করে

এবং প্রথম দুটি স্তরে, আমরা শুধুমাত্র SELECT স্টেটমেন্টের বিভিন্ন ধরণের অধ্যয়ন করেছি। কল্পনা করুন যে ভবিষ্যতে আমাদের জন্য কত আকর্ষণীয় জিনিস অপেক্ষা করছে।

কিন্তু আমরা এখানে প্রাথমিকভাবে জাভা প্রোগ্রামারদের সম্পর্কে প্রস্তুতি নিচ্ছি, তাই আমরা সেই পরিস্থিতিগুলি অধ্যয়ন করব যা আপনি অবশ্যই কর্মক্ষেত্রে সম্মুখীন হবেন।

প্রকল্পের সিস্টেম অ্যাডমিনিস্ট্রেটর সম্ভবত সমস্ত ডেটাবেস তৈরি করবে, তবে আপনাকে অবশ্যই অনেকবার ডেটা থেকে একটি নির্বাচন করতে হবে।

তাছাড়া, কখনও কখনও আপনার কোডটি ডাটাবেসে সমস্ত ডেটা লিখবে না বা এটি ভুল উপায়ে লিখবে না, তাই আপনাকে প্রায়শই কলম দিয়ে এতে আরোহণ করতে হবে এবং দেখতে হবে সেখানে আসলে কী সংরক্ষিত আছে।

আগের বক্তৃতাগুলিতে আমরা যে বিষয়গুলি স্পর্শ করেছি সেগুলির উপর আবার যাওয়া যাক৷

একটি ডাটাবেসে একটি স্কিমা তৈরি করা

ডিবিএমএসে একটি নতুন স্কিমা তৈরি করতে, আপনাকে কমান্ডটি চালাতে হবে:

CREATE SCHEMA Name;

এটি সবচেয়ে সহজ বিকল্প। এছাড়াও, একটি নতুন স্কিমা তৈরি করার সময়, আপনি ডেটা এনকোডিং বিন্যাস এবং অন্যান্য পরামিতিগুলি নির্দিষ্ট করতে পারেন।

আপনি যদি স্কিমাটি মুছে ফেলতে চান তবে আপনি নিশ্চিত নন যে এটি বিদ্যমান কিনা, তাহলে আপনাকে কমান্ডটি চালাতে হবে:

DROP SCHEMA IF EXIST Name;

আপনি প্রায়শই এই কমান্ডগুলি বিভিন্ন ডাটাবেসের ব্যাকআপ সহ ফাইলগুলিতে দেখতে পাবেন, তাই আমি সেগুলি এখানে নিয়ে এসেছি।

বর্তমান স্কিম নির্বাচন করা হচ্ছে

আপনার ডিবিএমএসে যদি অনেকগুলি স্কিমা থাকে, তবে এটি সহজেই ঘটতে পারে যে বিভিন্ন স্কিমাগুলির একই টেবিল রয়েছে৷ বিভ্রান্তি এড়াতে, আপনি দুটি জিনিস করতে পারেন:

  • সর্বদা টেবিলের নামের আগে স্কিমার নাম রাখুন
  • ডিফল্ট স্কিমা নির্দিষ্ট করুন

আসুন একটি প্রশ্ন লিখি যা ব্যবহারকারী টেবিল থেকে ডেটা নির্বাচন করবে , যা পরীক্ষার স্কিমাতে রয়েছে । এটি এই মত কিছু দেখাবে:

SELECT * FROM test.user;

আপনি যদি একটি প্রশ্নে বিভিন্ন স্কিমা থেকে একাধিক টেবিলে যোগদান (যোগদান) করতে চান তবে এটি কেবল অপরিহার্য।

যাইহোক, জাভা ভাষায় আমরা প্রায়শই একই রকম কিছু করি: যদি কোডে আমাদের বিভিন্ন প্যাকেজ থেকে একই নামের ক্লাস ব্যবহার করতে হয়, আমরা ক্লাসের নামের আগে প্যাকেজের নাম যোগ করি।

দ্বিতীয় উপায় হল ডিফল্ট স্কিমা নির্দিষ্ট করা । যদি ক্যোয়ারী একটি টেবিলের নাম উল্লেখ করে কিন্তু কোনো স্কিমা না থাকে, তাহলে ডিফল্ট স্কিমা ব্যবহার করা হয়। এটি করতে, USE বিবৃতি ব্যবহার করুন :

USE name - schemes;

ইউএসই স্টেটমেন্ট ব্যবহার করে আগের প্রশ্নটি আবার লিখি:

USE test;
SELECT * FROM user;

একটি ভিউ তৈরি করা হচ্ছে

বাস্তব ডেটা সহ টেবিল ছাড়াও, এসকিউএল আপনাকে ভার্চুয়াল টেবিলের মতো কিছু সঞ্চয় করার অনুমতি দেয়, যেখানে বাস্তব টেবিল থেকে ডেটা টানা হয়। এই ধরনের ভার্চুয়াল টেবিলকে VIEW বলা হয়।

এই ধরনের একটি টেবিল বাস্তব তথ্য সঞ্চয় করতে পারে না, এবং প্রতিবার এটি অ্যাক্সেস করা হয়, এটি বাস্তব টেবিল থেকে ডেটা টেনে আনে। এই ধরনের একটি ভিউ এর বিষয়বস্তু একটি SQL ক্যোয়ারী ব্যবহার করে নির্দিষ্ট করা হয়।

আপনি যেকোন সিলেক্ট কোয়েরি থেকে একটি ভিউ তৈরি করতে পারেন যেমন একটি কমান্ড সহ:

CREATE VIEW Name AS
SELECT-request;
আসুন একটি প্রশ্ন লিখি যা কর্মচারী টেবিলের উপর ভিত্তি করে একটি public_employee ভার্চুয়াল টেবিল তৈরি করবে, যেখানে কর্মচারী বেতনের তথ্য লুকানো থাকবে:
CREATE VIEW public_employee AS
SELECT id, name FROM employee

উপরের উদাহরণে, আমাদের টেবিলে (VIEW) public_employee শুধুমাত্র কর্মচারী আইডি এবং তাদের নাম থাকবে, কিন্তু তাদের বেতন সম্পর্কে তথ্য থাকবে না। আপনি বাস্তব টেবিলের মতো একই জায়গায় এই ধরনের ভিউ ব্যবহার করতে পারেন।

কেন ভিউ প্রয়োজন? তাদের বেশ কয়েকটি সুবিধা রয়েছে:

তথ্য অ্যাক্সেসের নমনীয় নিয়ন্ত্রণ । আপনি নির্দিষ্ট ব্যবহারকারীদের শুধুমাত্র ভিউ-এ অ্যাক্সেস দিতে পারেন, কিন্তু টেবিলে অ্যাক্সেস দিতে পারবেন না। এবং ভিউতে, টেবিল থেকে শুধুমাত্র সর্বজনীন তথ্য বের করুন। এছাড়াও, ভবিষ্যতে যদি গুরুত্বপূর্ণ তথ্য সহ নতুন কলামগুলি টেবিলে যুক্ত করা হয়, তবে এটি দুর্ঘটনাক্রমে ভিউতে প্রবেশ করবে না।

ডেটা ডিনরমালাইজেশন । স্টোরেজের সুবিধার জন্য, ডেটা প্রায়শই শত শত এবং হাজার হাজার টেবিলে বিভক্ত করা হয়, তবে একজন সাধারণ ব্যক্তির পক্ষে এই ধরনের ডেটা নিয়ে কাজ করা খুব সুবিধাজনক নয় - আপনাকে খুব জটিল প্রশ্ন লিখতে হবে। ভিউ দিয়ে, আপনি ভার্চুয়াল টেবিল তৈরি করতে পারেন যা একক টেবিলে ডজন ডজন বিভিন্ন টেবিল থেকে ডেটা প্রদর্শন করে।

পলিমরফিজম এবং এনক্যাপসুলেশন । আপনি আপনার ডাটাবেসের কাঠামো পরিবর্তন করতে পারেন। একই সময়ে, প্রোগ্রামের ব্যবহারকারীরা যারা আপনার ভিউ নিয়ে কাজ করেন তারা অনুমান করবেন না যে কিছু পরিবর্তন হয়েছে। এবং ভিউতে অ্যাক্সেস আছে এমন প্রোগ্রামগুলির কোডগুলি পুনরায় লেখার প্রয়োজন হবে না। আপনাকে শুধু এসকিউএল স্ক্রিপ্টটি টুইক করতে হবে যা ভিউ এর সাথে সম্পর্কিত।

শুধু পড়ুন । ভিউ শুধুমাত্র একটি SELECT ক্যোয়ারী দিয়ে সেট করা যেতে পারে, তাই ভিউ এর সাথে কাজ করা কোনোভাবেই বাস্তব সারণীতে ডেটা পরিবর্তন করতে পারে না। যাইহোক, এটি ক্যোয়ারী ক্যাশিংয়ের পক্ষে আরেকটি প্লাস। কিন্তু পরের বার যে আরো.