Showing posts with label Sql. Show all posts
Showing posts with label Sql. Show all posts

Monday, December 31, 2018

পার্ট ৬ - Check constraint in SQL Server

কোন একটি Database table এ কোন column এর value কত থেকে কত range এর মধ্যে হতে পারবে, সেটি define করে দেয়ার জন্য CHECK constraint বাবহার করা হয়ে থাকে।

ধরা যাক, একটি Database table এ AGE নামের একটা integer column আছে। আমরা জানি এই AGE সাধারণত 0 এর থেকে কম বা 150 এর থেকে বেশি হতে পারে না। কিন্তু AGE একটি integer column হয়াতে এটি negative value বা 150 এর থেকে বেশি value ও নিতে পারবে।

তাই এই value insertion কে একটা limit এর মধ্যে রাখার জন্য আমরা CHECK constraint ব্যাবহার করতে পারি। SQL Server এ CHECK constraint দুইভাবে তৈরি করা যায় ১) graphically ২) using a query

নিচের CHECK constraint, AGE column এর value কে [0,150] এই range এর মধ্যে limit করে ফেলতে পারে : 
ALTER TABLE tblPerson
ADD CONSTRAINT CK_tblPerson_Age CHECK (Age > 0 AND Age < 150)

SQL Server এ CHECK constraint add করার সাধারন formula :
ALTER TABLE { TABLE_NAME }
ADD CONSTRAINT { CONSTRAINT_NAME } CHECK ( BOOLEAN_EXPRESSION )


যদি BOOLEAN_EXPRESSION টি true return করে তাহলে CHECK constraint ঐ value কে Database table এ entrance permission দেবে, তাছাড়া দেবে না। পুরো একটা row insert এর সময় AGE column এ NULL value pass করানো সম্ভব, কারন যখন NULL value pass করানো হয় তখন boolean expression টি UNKNOWN evaluate করে এবং ঐ value কে allow করে।

CHECK constraint কে drop করতে হলে :
ALTER TABLE tblPerson
DROP CONSTRAINT CK_tblPerson_Age


উপরের explanations আরও ভালভাবে বুঝতে এই video টি একবার দেখে আসুন। ধন্যবাদ।।


Saturday, November 3, 2018

পার্ট 5 - Cascading referential integrity constraint

এই টিউটোরিয়াল সিরিজের পার্ট-3 তে আমরা দেখেছি কিভাবে টেবিল create করতে হয় (tblPerson এবং tblGender) এবং primary ও foreign key constraints সংযুক্ত করা যায়। পার্ট-4 এ আমরা Default constraint সম্বন্ধে জেনেছি, এই আর্টিকেলটি পড়ার আগে পার্ট-3, পার্ট-4 তে একবার চোখ বুলিয়ে আসুন তাহলে বুঝতে সুবিধা হবে। এই আর্টিকেলে আমরা Cascading referential integrity constraint কি তা শেখার চেষ্টা করব
Cascading referential integrity constraint allows defining the actions Microsoft SQL Server should take when a user attempts to delete or update a key to which an existing foreign keys points.

কিছু বোঝা না গেলে কোন সমস্যা নাই নিচের উদাহরণ এ খেয়াল করুন-

নিচের ২ টা টেবিলের কথা চিন্তা করুন, যদি আপনি tblGender টেবিলে থেকে ID = 1, row টি delete করে দেন তাহলে tblPerson টেবিলের ID = 3 নং row এর record টি একটা orphan record এ পরিনত হবে, কারন তখন আপনি ঐ record টির Gender কিহবে তা define করতে পারছেন না। এই সমস্ত পরিস্থিতিতে Microsoft SQL Server এর কি ধরনের action নেয়া উচিত তা define করে দিতে Cascading referential integrity constraint ব্যবহৃত হয়। By default আপনি একটা error পাবেন এবং DELETE/ UPDATE statement টি rolled back হয়ে যাবে।.





আপনি Cascading referential integrity constraint Specify করার ক্ষেত্রে নিচের option গুলো পাবেন-

1. No Action: এটি আসলে default behavior। যদি এরকম কোন attemt নেয়া হয় যে আমরা এমন একটি record row কে delete/update করতে চাচ্ছি যার key টা অন্য আরেকটা টেবিলের foreign key হিসেবে define করা আছে, তাহলে যে error raised হয় এবং delete/update operation টি rolled back হয়, এই কাজটাই No Action operation টা বলে দেয় বা specify করে থাকে।


2. Cascade: এই ক্ষেত্রে কোন record row কে delete/update করতে গেলে তার যে সমস্তু referenced record আছে ঐ গুলোও delete/update হয়ে যাবে।


3. Set NULL: এই ক্ষেত্রে কোন record row কে delete/update করতে গেলে তার যে সমস্তু referenced record আছে ঐ গুলোতে NULL ভ্যালু set হয়ে যাবে।


4. Set Default: এই ক্ষেত্রে কোন record row কে delete/update করতে গেলে তার যে সমস্তু referenced record আছে ঐ গুলোতে ঐ টেবিলের Default constraint অনুসারে default value সেট হয়ে যাবে।




উপরের explanations আরও ভালভাবে বুঝতে এই video টি একবার দেখে আসুন। ধন্যবাদ।।





পার্ট 4 - sql server এ Default constraint

এই টিউটোরিয়াল সিরিজের পার্ট-3 তে আমরা দেখেছি কিভাবে টেবিল create করতে হয় (tblPerson এবং tblGender) এবং primary ও foreign key constraints সংযুক্ত করা যায়। এই আর্টিকেলটি পড়ার আগে পার্ট-3 তে একবার চোখ বুলিয়ে আসুন তাহলে বুঝতে সুবিধা হবে।


এই আর্টিকেলে আমরা একটা Default Constraint এড করা শিখব। একটা column এর default value কি হবে তা Default constraint এর মাধ্যমে specify করা যায়, মানে Default constraint সাধারণত ব্যবহৃত একটা কলামে by default ভ্যালু insert করার কাজে। কোন table এ value insert করতে গেলে নতুন সমস্ত record গুলোতে Default constraint অনুসারে ভ্যালু insert হয়ে যাবে (হতে পারে সেটি NULL অথবা অন্য যেকোনো value) যদি ঔ কলামের againest এ কোন value ইনপুট দেয়া না হয়।




একটা existing column এ default constraint ভ্যালু অ্যাড করে altering করতে চাইলে:
ALTER TABLE { TABLE_NAME }
ADD CONSTRAINT { CONSTRAINT_NAME }
DEFAULT { DEFAULT_VALUE } FOR { EXISTING_COLUMN_NAME }


একটা existing table এ default value সহ একটা নতুন column অ্যাড করতে চাইলে:
ALTER TABLE { TABLE_NAME }
ADD { COLUMN_NAME } { DATA_TYPE } { NULL | NOT NULL }
CONSTRAINT { CONSTRAINT_NAME } DEFAULT { DEFAULT_VALUE }



নিচের command টি tblPerson টেবিলে একটা default constraint অ্যাড করবে যেটার নাম হবে DF_tblPerson_GenderId:
ALTER TABLE tblPerson
ADD CONSTRAINT DF_tblPerson_GenderId
DEFAULT 1 FOR GenderId



নিচের এই insert statement টি GenderId column এ কোন value provide করে না, default value হিসেবে record টিতে 1 inserted হবে
Insert into tblPerson(ID,Name,Email) values(5,'Sam','s@s.com')


আবার, নিচের এই insert statement টি default value insert করার পরিবর্তে NULL insert করবে
Insert into tblPerson(ID,Name,Email,GenderId) values (6,'Dan','d@d.com',NULL)



একটা constraint কে drop করতে হলে:
ALTER TABLE { TABLE_NAME }
DROP CONSTRAINT { CONSTRAINT_NAME }


এর পরবর্তী আর্টিকেলে আমরা cascading referential integrity সম্বন্ধে জানবো



উপরের explanations আরও ভালভাবে বুঝতে এই video টি একবার দেখে আসুন। ধন্যবাদ।।



Friday, November 2, 2018

পার্ট 3 - tables create করা এবং tables নিয়ে কাজ করা

আমরা এই আর্টিকেল এ tblPerson এবং tblGender নামের দুইটা database tables তৈরি করব, primary key এবং foreign key constraints establish করব। SQL Server এ, tables গুলো graphically SQL Server Management Studio (SSMS) এর মাধ্যমে অথবা query লিখে তৈরি করা যায়।




Graphically tblPerson টেবিল SSMS এর মাধ্যমে তৈরি করতে হলে- 
1. Object Explorer window তে Tables folder এ Right click করুন
2. সিলেক্ট New Table
3. নিচে যেভাবে দেখানো হয়েছে ঠিক সেইভাবে Column Name, Data Type এবং Allow Nulls এর field গুলো fill করুন, এবং tblPerson নাম দিয়ে table টা save করুন।



নিচের statement টি ID এবং Gender columns বিশিষ্ট tblGender টেবিল তৈরি করবে। ID column টি primary key column। এই primary key কোন table এর প্রতিটি row কে uniquely identify করতে পারে। Primary key কখনো null value allow করে না।

Create Table tblGender 
(ID int Not Null Primary Key,
Gender nvarchar(50))


tblPerson টেবিলে, GenderID হল foreign key, যেটা tblGender টেবিলের ID column কে reference করছে। Foreign key references গুলো query লিখে অথবা SSMS এর মাধ্যমে graphically তৈরি করা যায়।


Graphically একটা foreign key reference তৈরি করতে হলে- 
1. tblPerson টেবিলে Right-click করুন এবং Design সিলেক্ট করুন
2. table design window তে, GenderId column এর উপরে right ক্লিক করুন এবং Relationships option সিলেক্ট করুন
3. Foreign Key Relationships window তে, Add বাটন এ ক্লিক করুন
4. এখন Table And Columns Specification row এর '>' সাইন এ ক্লিক করে expand করুন
5. elipses বাটন('...') এ ক্লিক করুন, যেটা Tables and Columns Specification সারিতে আছে
6. Primary Key টেবিলের drop-down লিস্ট থেকে tblGender টেবিল সিলেক্ট করুন
7. tblGender টেবিল সিলেক্ট করা হয়ে গেলে তার নিচে আরেকটা drop-down লিস্ট row আছে, সেখান থেকে ID কলামটা সিলেক্ট করুন
8. ID কলামটা সিলেক্ট হয়ে গেলে ঠিক তার ডানে আরেকটা column এর drop-down লিস্ট থেকে     GenderId সিলেক্ট করুন
9. ক্লিক OK এবং তারপরে ক্লিক close.
10. সবশেষে save the table.


query লিখে একটা foreign key reference তৈরি করতে হলে
Alter table tblPerson 
add constraint tblPerson_GenderId_FK FOREIGN KEY (GenderId) references 
tblGender(ID)


General formula টা এইরকম
Alter table ForeignKeyTable add constraint 
ForeignKeyTable_ForiegnKeyColumn_FK 
FOREIGN KEY (ForiegnKeyColumn) references PrimaryKeyTable
(PrimaryKeyColumn)


Foreign keys গুলো database এর integrity বৈশিষ্ট্যকে enforce করে। layman's এর মতে
A foreign key in one table points to a primary key in another table. The foreign key constraint prevents invalid data from being inserted into the foreign key column. The values that you enter into the foreign key column, has to be one of the values contained in the table it points to

উপরের explanations আরও ভালভাবে বুঝতে এই video টি একবার দেখে আসুন। ধন্যবাদ।।


.

পার্ট 2 - Creating, altering এবং dropping a database


SQL Server এর পার্ট-1 এ আমরা দেখেছি কিভাবে SSMS(Sql Server Management Studio) দিয়ে SQL Server এ connect হওয়া যায়। এই পার্ট এ আমরা দেখবো কিভাবে একটি database create, alter এবং dropp করা যায়।


 একটি SQL Server database create, alter এবং drop করার ২ টা way আছে- 
 1. Graphically SQL Server Management Studio (SSMS) ব্যবহার করে।
 2. Query লিখে।



 Graphically একটি database create করতে হলে- 
 1. Object Explorer এর যে Databases folder টি আছে তার উপরে Right ক্লিক করুন ।
 2. সিলেক্ট New Database 3. New Database dialog box এ আপনার পছন্দের Database name টি বসিয়ে দিয়ে OK ক্লিক করুন।


Query লিখে database create করতে চাইলে :
 Create database DatabaseName 


আপনি যে ভাবেই database তৈরি করেন না কেন নিচের ২ টা file তৈরি হবে-
 .MDF file - Data File (Contains actual data)
.LDF file - Transaction Log file (Used to recover the database)


create করা হয়ে গেছে এরকম একটা database কে alter করতে হলে :
 Alter database DatabaseName Modify Name = NewDatabaseName


আপনি Stored Procedure[SP] লিখেও এই কাজ টি করতে পারেন :
 Execute sp_renameDB 'OldDatabaseName','NewDatabaseName'


একটি database কে Delete/Drop করতে হলে :
 Drop Database DatabaseThatYouWantToDrop 

অথবা LDF এবং MDF file দুইটা delete করে দীন। 



আপনি একটি database যদি database টি currently used অবস্থাতে থাকে, আপনি একটা error পাবেন -
Cannot drop database "NewDatabaseName" because it is currently in use
আপনাকে তখন database টা single user mode এ এনে তারপর drop করতে হবে -
Alter Database DatabaseName Set SINGLE_USER With Rollback Immediate 



এই Rollback Immediate option এর মাধ্যমে সব incomplete transactions গুলো rollback হবে এবং database এর সাথে connection close হয়ে যাবে।

 Note: System databases কখনো dropp করা যায় না।




উপরের explanations আরও ভালভাবে বুঝতে এই video টি একবার দেখে আসুন। ধন্যবাদ।।


পার্ট 1 - SSMS (Sql Server Management System Studio) দিয়ে Sql Server এর সাথে Connection

SQL Server Management Studio (SSMS), হল একটি  client tool যেটা দিয়ে আমরা SQL queries লিখা এবং SQL queries execute এর কাজটা করতে পারি. SQL Server Management Studio (SSMS) এর সাথে connect করতে হলে -
1. আপনার  Windows এর start বাটন এ ক্লিক করুন 
2. সিলেক্ট  All Programs 
3. সিলেক্ট  Microsoft SQL Server 2005, 2008, 2012 or 2017 (আপনার কম্পিউটার এ যে version install করা  আছে)
4. সিলেক্ট  SQL Server Management Studio 

আপনি এখন দেখতে পাবেন, Connect to Server window.

1. Server Type থেকে Database Engine কে সিলেক্ট  করুন। Server Type drop-down list এ আপনি অন্য যে অপশন গুলো দেখতে পাবেন সেগুলো হল Analysis Services(SSAS), Reporting Services (SSRS) এবং Integration Services(SSIS)।
Server type = Database Engine



2. এর পর আপনাকে Server Name specify করে দিতে হবে। এখানে আমরা server name অথবা IP Address এর যে কোন দিতে পারব।যদি আপনার local machine এ SQL Server installed থাকে তাহলে আপনি (local) অথবা শুধু "." অথবা 127.0.0.1 লিখে দিতে পারবেন।
Server name = (local)


3. এখন Authentication সিলেক্ট করতে হবে। এখানে যে option গুলো দেখাবে সেটি নির্ভর করছে আপনি কিভাবে SQL Server ইন্সটল করেছেন তার উপরে। যদি installation এর সময় আপনি mixed mode authentication সিলেক্ট করে থাকেন তাহলে,আপনাকে Windows Authentication এবং SQL Server Authentication দুইটা option ই দেখাবে, তাছাড়া আপনি শুধু windows authentication সিলেক্ট করে দিলেই হবে।



4.যদি আপনি Windows Authentication সিলেক্ট করেন, তাহলে আপনার user name এবং password লাগবে না, তাছাড়া আপনার user name এবং password দিয়ে connect বাটন ক্লিক করুন। এখন আপনি SQL Server এর সাথে connected। SSMS এ উপরে, হাতে বাম দিকে থাকা New Query option টিতে click করলে আপনি একটা new query editor window পাবেন যেখানে আপনি sql queries গুলো লিখা এবং execute এর কাজ টি করতে পারবেন।




SSMS একটি client tool, এটি কিন্তু নিজে Server না। সাধারণত database server (SQL Server)থাকে একটা dedicated machine এ, এবং developers রা তাঁদের respective local (development) computers থেকে SSMS দিয়ে database server (SQL Server) এর সাথে সংযুক্ত হয়।


1,2,3 এবং 4 নম্বর Developer Machines গুলো SSMS দিয়ে database server এর সাথে connected হয়ে আছে।



           Database Server to Developer Machines connection