Practice Lab-2 : SQL Statement Practice amongh two tables



Step 3: Create Table & Alter Table
 
Step 4: Create Integrity Constraint

Step 5: Insert values

Step 6: See the inserted values

Step 7: Delete values

Step 8: A Sample Join

Practice Lab-1 : Table and Data Type

1. Create User : নতুন ইউজার তৈরি করা

কেবলমাত্র ডাটাবেজ প্রশাসক (system user) কোন নতুন ইউজার তৈরি করতে পারে । ওরাকল ইনস্টল করার সময় স্বয়ংক্রিয়ভাবে system নামে একটি প্রশাসক ইউজার তৈরি হয় ।  এজন্য নতুন ইউজার তৈরি করার সময় system ইউজার হিসাবে ডেটাবেজে কানেক্ট থাকতে হবে । ওরাকল 10g এর পূর্বের ভার্সনগুলোতে system এর পাসওয়ার্ড হচ্ছে manager । পরবর্তী ভার্সনগুলোতে যেমন: 10g, 11i  ইত্যাদিতে কম্পিউটারে ওরাকল সফট্‌ওয়্যার ইনস্টল করার সময়ই system ইউজার এর পাসওয়ার্ড দিতে হয় এবং পরবর্তীতে এই পাসওয়ার্ড পরিবর্তন করা যায় । আমরা ধরে নেই যে একটি ইউজার তৈরি করব তার নাম হবে  arif এবং পাসওয়ার্ড হবে ahsan । নিন্মোক্ত কমান্ড এর মাধ্যমে আমরা এটিকে কার্যকর করতে পারবো ।

SQL > CREATE USER arif IDENTIFIED BY ahsan ;

এখানে মনে রাখতে হবে যে, প্রতিটি এসকিউএল কমান্ড কার্যকর করার জন্য সবশেষে সেমিকোলন ( ; ) দিতে হবে। সেমিকোলন পেলেই ওরাকল ধরে নেয় যে বর্তমান কমান্ডটি শেষ হয়েছে ।

1.1. Drop User:  ইউজার অপসারন করা

User Drop কমান্ড প্রয়োগ করে ডেটাবেজ থেকে কোন ব্যবহারকারীকে ( User ) অপসারন করা যায় । এই প্রক্রিয়ায় ডাটাবেজ থেকে ব্যাবহারকারীকে অপসারন করার সাথে সাথে ইউজার স্কীম থেকে তার নামের/অধীনের সকল অবজেক্ট গুলোকেও অপসারন করে । একজন ব্যাবহারকারীর অবজেক্ট সাধারনতো তার টেবিল, ভিউ ইত্যাদি হয়ে থাকে । মনে রাখতে হবে ইউজার ড্রোপ বা মুছে ফেলতে চাইলে আমাদেরকে অবশ্যই ডাটাবেজ প্রসাশক ( System বা আপনার তৈরীকৃত অন্যকোন প্রসাশক )  হিসাবে কানেক্ট থাকতে হবে । নিন্মে এসকিউএল কমান্ডটি তুলে ধরা হলো ।

SOL > DROP USER arif ;

আমাদের ডাটাবেজে বর্তমানে কতগুলো ইউজার/ব্যাবহারকারী আছে এবং তাদের নাম আমরা সহজেই দেখতে পারি । ওরাকল ডাটাবেজে এই কাজের জন্য একটি টেবিল তৈরী করা থাকে । টেবিলটির নাম all_users । কিন্তু আমরা অন্যকোন ইউজার এর পাসওয়ার্ড এখান থেকে দেখতে পারবো না । কমান্ডটি নিন্মরুপ:

SQL > SELECT * FROM all_users ;
 

2. Grant User :  ইউজারের প্রিভিলেজ অনুমোদন


ডেটাবেজের একজন ইউজার ( User ) কতটুকু ক্ষমতা ( Power ) ভোগ করতে পারবে অর্থাৎ কি কি কাজ করতে পারবে তা সংঞ্জায়িত ( Define ) করে নিতে হয়ে । এই কাজ করার ক্ষমতাকে প্রিভিলেজ বলে এবং কাজ গুলোকে রোল ( Role ) বলে । কোন ইউজারকে এই রোল বরাদ্দ করে কাজ করার সুযোগ করে দেওয়াকে প্রিভিলেজ বলে ।  আমরা এক কথায় বলতে পারি ডেটাবেজে কোন ব্যাবহারকারী কি পরিমাণ এবং কোথায় এ্যাকসেস (Access / Visit) করতে পারবে তাকে প্রিভিলেজ বলা হয় । যেমন, ধরা যাক, কোন ব্যাবহারকারী কেবল মাত্র একটি টেবিলের ডাটা পড়তে পারবে অর্থাৎ উক্ত টেবিলে কেবল মাত্র সিলেক্ট ( Select ) কমান্ড প্রয়োগ করতে পারবে । ইহা হচ্ছে উক্ত ব্যাবহারকারীর জন্য নির্ধারিত করা প্রিভিলেজ ।  আবার ধরা যাক, অন্য আর একটি ব্যাবহারকারীর প্রিভিলেজ হচ্ছে ডেটাবেজের একটি বা একাধিক টেবিলকে পড়া, পরিবর্তন করা, স্ট্রাকচার সংশোধন করা ইত্যাদি ।  প্রিভিলেজকে সাধারনত দুই ভাগে ভাগ করা যায় । যেমন:

২.১. সিস্টেম প্রিভিলেজ : কোন বিশেষ ধরনের ডেটাবেজ অবজেক্ট, ডেটাবেজ এ্যাকশন সম্পাদন করাকে সিস্টেম প্রিভিলেজ বলে । ডেটাবেজ এ্যাকশন সম্পর্কীত প্রায় ৭০ প্রকারের সিস্টেম প্রিভিলেজ রয়েছে ।
২.২. অবজেক্ট প্রিভিলেজ : কোন অবজেক্ট এর উপর কতিপয় বিশেষ ধরনের ক্ষমতা প্রয়োগ করাকে অবজেক্ট প্রিভিলেজ বলে । যেমন, কোন টেবিলের স্ট্রাকচার পরিবর্তন করতে পারা । ডেটাবেজ ডিজাইন করার অনেক পরে যদি এমন একটি চাহিদা আসে যে একটি টেবিলের একটি ফিল্ড (Field / Column) সংযোজন করতে হবে তখন যে ব্যাবহারকারী এই কাজটি করতে পারবে তার অবশ্যই উক্ত অবজেক্ট/টেবিল এর উপরে প্রিভিলেজ থাকতে হবে ।  
আমরা পরবর্তীতে রোলস অনুযায়ী অনুমোদন দেওয়া দেখবো । এটি ডেটাবেজ প্রোগ্রামিং এবং ব্যাবস্থাপনার একটি গুরুত্বপূর্ন অংশ । এখন আমাদের কাজের সার্থে কিভাবে সবগুলো ক্ষমতা নিয়ে ডেটাবেজে প্রবেশ করা যায় এবং সব ধরনের কাজ করা যায় তা আমাদের নিন্মোক্ত এসকিউএল কমান্ড এর মাধ্যমে লক্ষ্য করবো ।

SQL > GRANT CONNECT, RESOURCE, DBA TO arif ;

এই কমান্ডটি প্রয়োগ করলে একজন ব্যাবহারকারী প্রায় মালিকানা / প্রসাশক পর্যায়ের ক্ষমতা লাভ করে । মনে রাখতে হবে যে, কোন ইউজার কে Grant করাতে হলে System ইউজার হিসাবে বা অন্যকোন নামের (তৈরিকৃত) DBA ইউজার হিসাবে সংযুক্ত/কানেক্ট থাকতে হবে ।
একজন ইউজার তার ক্ষমতার ধরন অনুযায়ী ডেটাবেজ তৈরি করে কাজ করতে পারে । কিন্তু আমরা তা পরে বিস্তারিত ভাবে শিখবো । আমরা সহজ পদ্ধতিতেই প্রাথমিক ভাবে ইন্সটলকৃত ডেটাবেজেই নিজ নিজ ইউজার এর অধিনে টেবিল তৈরি করে হাতে খরি নেবো ।

2.3. Connecting by Granted User: তৈরিকৃত ইউজার হিসাবে ডেটাবেজে সংযোগ স্থাপন

উপরের উদাহরনে এবং বর্ননায় আমরা arif নামের একটি ইউজার তৈরি করেছি এবং বিভিন্ন কাজ করবার এমনকি ডেটাবেজে কানেক্ট করবারও অনুমতি দিয়েছি । আমরা এখন কিভাবে এসকিউএল কনসোল থেকেই নিজের ইউজারে প্রবেশ করা যায় তা নিন্মের উদাহরনের মাধ্যমে দেখবো ।

SQL > CONNECT arif / ahsan@orcl ;

উপরোক্ত কমান্ড এর মাধ্যমে arif ইউজার এর ডাটাবেজ এর সাথ সংযোগ স্থাপন হলো । উপরের কমান্ডে "/ " চিহ্নটির পরে যে শব্দটি থাকবে, ডেটাবেজ তাকে পাসওয়ার্ড হিসাবে মূল্যায়ন করবে  । অনুরুপ "@" চিহ্নের পরে যে শব্দটি থাকবে ডেটাবেজ তাকে ডেটাবেজের নাম অথবা ডেটাবেজ সার্ভিস হিসাবে মূল্যায়ন করবে । তবে ক্লাইন্ট-সার্ভার ইনভায়রনমেন্ট ব্যাতিত এবং একাধিক সার্ভিস সম্বলিত কম্পিউটার ব্যাতিত কানেক্ট কমান্ডের এই অংশটি (@) লিখার প্রোয়জন নেই । যেমন:

SQL > CONNECT arif / ahsan ;

ধরে নিচ্ছি যে, আমরা সবাই নিজ নিজ ইউজার এ কানেক্ট অবস্থায় আছি । এখন আমরা প্রথমেই একটি টেবিল তৈরি করে এসকিউএল কমান্ড অনুশীলন করবো ।
   
3. Create Table Command and Data Type

টেবিল হচ্ছে একটি ডেটা স্ট্রাকচার যা  row এবং column এর সমন্বয়ে গঠিত হয় । টেবিল ডেটাবেজের সকল তথ্য সমূহ ধারন করে । একটি টেবিলে এক বা একাধিক কলাম থাকতে পারে । যেমন, প্রথম কলামে কর্মচারিদের আই.ডি. নাম্বার এবং দ্বিতীয় কলামে হয়তো কর্মচারিদের নাম থাকতে পারে । সবচেয়ে গুরুত্বপূর্ন বিষয় হচ্ছে প্রতিটি কলামের যেমন নাম থাকবে তেমনি প্রতিটি টেবিলেরও নাম করন করতে হয় ।

ডেটাবেজে কোন নতুন টেবিল তৈরি করার জন্য Create Table  কমান্ডটি ব্যাবহার করা হয় ।

( The CREATE TABLE statement is used to create a table in a database. Tables are organized into rows and columns; and each table must have a name. )

SQL CREATE TABLE Syntax

CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);
উপরোক্ত সিন্ট্যাক্স এ table_name এর স্থলে আমার টেবিলের নামটি উল্লেখ করবো যা আমরা দিতে চাই । উল্লেখ্য যে, একটি ইউজার এর অধিনে, একের অধিক একই নামের টেবিল ওরাকল সমর্থন করবে না । column_name1 এর স্থলে আমরা কলামের নাম উল্লেখ করবো । এখানে প্রতিটি কলামের জন্য আলাদা আলাদা নাম লিখতে হবে। এ নাম সর্বচ্চ ৩০ ক্যারেক্টার পর্যন্ত হতে পারে এবং নামের মাঝে কোন ফাঁকা জায়গা রাখা যাবে না । উল্লেখ্য যে, একটি টেবিলে সর্বচ্চ ২৫৪ টি কলাম তৈরি করা যায় ।

প্রতিটি কলামের ডেটা টাইপ কি হবে তা কলামের নামের পাশে উল্লেখ করা হয় যা উপরোক্ত সিন্ট্যাক্স এ পরিলক্ষিত হচ্ছে । ডাটাটাইপ উল্লেখ করার সাথে সাথে প্রতিটি কলামের আকার কতটুকু হবে অর্থাৎ একেকটি কলামে কি পরিমান তথ্য ধারন করানো যাবে তার বাইট সংখ্যা উল্লেখ করতে হবে । এটি ডাটাটাইপ এর সাথে সাথেই প্রথম বন্ধনীর মধ্যে উল্লেখ করা হয় ।

(The column_name parameters specify the names of the columns of the table. The data_type parameter specifies what type of data the column can hold (e.g. varchar, integer, decimal, date, etc.).
The size parameter specifies the maximum length of the column of the table.)

3.1. Create a Table

আমরা create table কমান্ডটি অনুশীলন করার জন্য student নামের একটি টেবিল তৈরি করবো এবং টেবিলটিতে id, name এবং date_of_birth নামের তিনটি কলাম থাকবে । কলামগুলোর ডাটা টাইপ সহ দেখতে হবে নিন্মরুপ ।

নাম ডেটা টাইপ    প্রশস্ততা 
idnumber12
namevarchar20
date_of_birth       date   

উপরোক্ত উদাহরনটিকে আমরা এখন এসকিউএল এর মাধ্যমে ওরাকল এর এসকিউএল কনসোল এ যেয়ে লিখবো ।


SQL> CREATE TABLE student
(
id number(12),
name varchar(20),
date_of_birth  date
);

উপরোক্ত এসকিউএল কোড এর মাধ্যমে  student নামের একটি টেবিল তৈরি করা হলো । আমরা একটি ব্যাতিক্রম দেখতে পাচ্ছি date_of_birth কলামে, সেখানে ডাটা টাইপ হচ্ছে date কিন্তু কোন length নেই । date একটি ওরাকল ডেটাবেজের ডাটা টাইপ যার length দিতে হয় না । এটি ডেটাবেজ সিস্টেম থেমে অটোমেটিক সিলেক্ট হয়ে থাকে । একটি বিষয় মনে রাখতে হবে যে date ডাটা টাইপ বিশিষ্ট কলামে শুধুমাত্র ওরাকল ডেটাবেজ সিস্টেম এর মনোনিত গঠন প্রনালী অনুযায়ী তরিখ insert/এন্ট্রি করা যায় । যেমন: "01-JAN-79"

ওরাকল ডেটাবেজ সিস্টেমে আমরা আমাদের তৈরীকৃত টেবিলগুলো পরবর্তীতে সহজেই দেখতে পাবো । ওরাকল ডেটাবেজ সিস্টেমে tabs নামক একটি টেবিলের table_name কলামে টেবিলের নাম গুলো সংরক্ষিত থাকে ।  সুতরাং আমাদের উপরোক্ত টেবিলটিকেও সেখানে পাওয়া যাবে । যেমন:

SQL > SELECT table_name FROM tabs;


The table owner and the database owner automatically gain the following privileges on the table and are able to grant these privileges to other users:
  • INSERT
  • SELECT
  • REFERENCES
  • TRIGGER
  • UPDATE
These privileges cannot be revoked from the table and database owners.
Example Practice: Create Table, Create Table from Another Table, Drop Table, Alter Table

 The Column must have data type. The following data type are available in Oracle:

 1.1. Number Type
 1.2. Varchar2/Varchar
 1.3. Char Type
 1.4. Date Type
 1.5. Raw Type
 1.6. Longraw Type
 1.7. Rowid Type
 1.8. Long Type

View the example of Oracle supported Data Types from the Website of Oracle Corporation


4. Integrity Constraint of Table and Columns.

Oracle Database uses integrity constraints to prevent invalid data entry into the base tables of the database. You can define integrity constraints to enforce the business rules you want to associate with the information in a database. If any of the results of a DML statement execution violate an integrity constraint, Oracle Database rolls back the statement and returns an error.

There are two level of Constraint Implementation.

i) Column Level Constraint
ii) Table Level Constraint


  4.1. Primary Key (Primary Key)

  4.2. Foreign Key ( Foreign Key)

  4.3. Unique Key (Unique Key )

  4.4. Not Null (Not Null)

  4.5. Check(Check )

Example from Oracle Corporation


Popular Posts