SQL Topics


SQL Queries With PhpMyAdmin
-------------------------------	
	
|| (like) operator actually search করার জন্য ব্যবহৃত হয়।
 
|| an (index) can be created in a table to find data more quickly 
   and efficiently
 
|| Relationships & Foreign Keys
    ২টা টেবিলের মধ্যে আপনি কিভাবে রিলেশন করবেন। রিলেশন করার জন্যে 
    একটা টেবিলের একট key কে primary key করতে হবে এবং আরেকটা টেবিলে  
    ঐটার Foreign Key করতে হবে
     
    SQL query:
    CREATE TABLE orders(
        id INT NOT NULL AUTO INCREMENT,
        orderNumber VARCHAR(255),
        productId INT,
        customerId INT,
        orderData DATETIME default CURRENT_TIMESTAMP,
        PRIMARY KEY(id),
        FOREIGN KEY(productId) REFERENCES products(id),
        FOREIGN KEY(customerId) REFERENCES customers(id)
    );
     
     
|| Inner Join
	"SELECT tbl_post.*, tbl_category.name
	FROM tbl_post
	INNER JOIN tbl_category
	ON tbl_post.cat = tbl_category.id
	";
 
     
|| Union Operator
    ২টা টেবিলের সিটি কলাম থেকে সমজাতীয় ডাটা একটা করে নিয়ে আসে
 
    SELECT city FROM customers
    UNION
    SELECT city FROM suppliers
    ORDER BY city;
     
|| Union All   
    ২টা টেবিলের সিটি কলাম থেকে সমজাতীয় সবগুলো ডাটা নিয়ে আসে।
    অর্থাৎ ঢাকা যদি ২ টেবিলে ৫ বার থাকে তাহলে ৫টাই নিয়ে আসবে।
 
 
|| Subquery IN SELECT
    SELECT * FROM customers 
        WHERE id IN(SELECT id FROM customers
                     WHERE age > 30
                    );
 
                     
|| Subquery with INSERT    
    একটা  টেবিলের হুবহু ডাটা অন্য একটা টেবিলে নিয়ে আসা
     
    INSERT INTO customers_bup
        SELECT * FROM customers
        WHERE id IN(
            SELECT id FROM customers
        );
 
|| TRUNCATE TABLE
    টেবিল ডিলিট হবে না শুধু টেবিলের ডাটা ডিলিট হবে।
     
    TRUNCATE TABLE suppliers;
 
     
|| Wildcard Operators
    % Matches one or more characters
    _ Matches one character
 
    200%    finds any values that start with 200
    %200%   finds any values that have 200 in any position
    _00%    finds any values that have 00 in the second and third positions
    2_%_%   finds any values that start with 2 and are at least 3 characters in length
    %2      finds any values that end with 2

     
|| Aliases for Column
    Aliases can be useful when:
        You rename a table or a column name.
        There are more than one table involved in a query.
        Functions are used in the query.
        Column names are big or not very readable.
        Two or more columns are combined together.
         
    "SELECT p.*, c.name
	FROM tbl_post AS p, tbl_category AS c
	WHERE p.cat = c.id";
 
 
|| CREATE VIEW
    sql query চালিয়ে একটা টেবিল থেকে কিছু ডাটা এনে আরেকটা virtual table 
    তৈরি করা
     
    CREATE VIEW customers_view AS
        SELECT id, firstName,lastName
            FROM customers;
 
|| UCASE & LCASE Functions
    SELECT UCASE(firstName), LCASE(lastName), address FROM customers;
		

Advertisements

OOP Topics

|| Preventing from Extending & Overriding by final keyword
	আপনি অনেকগুলো ক্লাস অথবা মেথড নিয়ে কাজ করছেন। আপনি চাচ্ছেন
    স্পেসিফিক কিছু ক্লাসের সাবক্লাস তৈরী করবেন না অথবা মেথডকে আরেকটা 
    ক্লাসে ওভারাইট করতে দিবেন না। 
    তখন আপনি final keyword ব্যবহার করতে পারেন।

|| Polymorphism
	একটা ক্লাস থেকে আরেকট ক্লাস অথবা মালটিপাল ক্লাস তৈরী করা এবং
    সুপার ক্লাসের মেথডকে সাবক্লাসে ওভারাইট করা।

|| Constructor and  destructor
	constructor magic method auto loaded and execute at first
	destructor magic method auto loaded and execute at the end

|| Interface
	Interface actually empty class যার ভিতরে মেথড ডিকলারেশন থাকে এর 
    কোন বডি পার্ট থাকে না। Interface কে আরেকটা ক্লাসে implements করে 
    কাজ করতে হয়।

|| Abstract
	Abstract ও  Interface ক্লাস এর ক্ষেত্রে সরাসরি object তৈরী করা যায় না
    Interface এর ক্ষেত্রে আমরা  multiple Interface কে একটা ক্লাস এ 
    implements করে কাজ করতে পারি। যেখানে Abstract কে একটি ক্লাসে 
    extentd করে কাজ করতে হয়। 

|| magic methods
	__get($property) when access undefined property then get mathod 
    automatically work
	
	__set($property, $value)  when a value asign inside the undefined 
    property then set mathod work

	__call($method, $arg_array) when access undefined method then call 
    mathod work

|| Method Chaining    
	একটা অবজেক্টের মালটিপাল মেথডে access করা
	$ned->framework()->cms()->calculate(4,5);

|| type hinting 
	একটা ক্লাস এর মেথডে আপনি বলে দিতে পারবেন আপনি কি টাইপের ডাটা 
    নিয়ে কাজ করছেন। সেটা হতে পারে আ্যারে টাইপের ডাটা বা অবজেক্ট টাইপের ডাটা	

||	__CLASS__ magic constant class যেই ক্লাস এর মধ্যে থাকবে সে ওই 
    ক্লাসটাকেই রির্টান করবে। get_class() magic constant method যেই ক্লাস 
    এর অবজেক্ট তৈরি করা হবে ঠিক ওই ক্লাসটাকেই রির্টান করবে।

|| Object Cloning
	আপনি যখন অবজেক্টকে কপি করবেন তখন প্রকৃতভাবে তার রেফারেন্সটা 
    কপি হয়। তো আপনি চাচ্ছেন মেমোরির নতুন একটি জায়গায় নতুন কোন 
    ভ্যালু সেট করতে যেটি আগের ভ্যালুটিকে রিপলেস করবে না তখন এই 
    কোলনিং ব্যবহার করতে হয় 
	
|| Namespaces
	Namespaces হল virtual directory মত যেখানে একই নামের মালটিপাল 
    ক্লাস,মেথড,কন্সটেন্ট naming conflict এড়িয়ে কাজ করতে পারেন 

|| Strategy Design Pattern
	school management software যেমন স্কুল থেকে গার্ডিয়ানদের কাছে  
    বিভিন্ন সিস্টেমে notification পাঠানো যাবে তো এই ক্ষেত্রে Strategy 
    ছিল email,fax,sms. 

|| Factory Design Pattern
	ক্লাইন্ট বলল একটা সিস্টেম তৈরি করতে যেটা যখন ইচ্ছা তখন আপনি 
    বিভিন্ন ডাটাবেজ ড্রাইবার সাপোর্ট দিতে পারবেন।  

|| Iterator Design Pattern
	একটা ব্লগে অনেকগুলো পোস্ট থাকে এবং পোস্টের অধীনে অনেকগুলো 
    কমেন্ট থাকে। তো এ ক্ষেত্রে পোস্টের জন্য একবার আইটেরেটর আবার ওই 
    পোস্টের কমেন্টের জন্য আইটেরেটর চালাতে হয়। 
	
|| Observer Design Pattern:
	একটা সিস্টেমের কথা চিন্তা করুন যেখানে যখনি কোন ইভেন্ট সংঘটিত 
    হবে ঠিক তখনি আপনাকে একটা নটিফিকেসন দিবে। এই ধরনের প্রোব্লেম 
    যদি সলভ করতে চান তখন আপনাকে Observer Design Pattern follow 
    করতে হবে।
	
|| Decorator Design Pattern
	ধরুন ২টা class আছে post class and comment class নামে।
    এই দুইটা class এর মধ্যে same method আছে get_content নামে । 
    আপনি চাচ্ছেন এই মেথডে কোন প্রকার touch ছাড়াই additional কিছু ফাংশন 
    add করবেন। 
	
|| Facade Design Pattern
	অনেকগুলা object এর একটা common interface দেয়। 
    ধরুন তিনটা অবজেক্ট আছে এবং তিনটা অবজেক্ট তিন রকমের কাজ 
    করছে যা একটা interface থেকে control হচ্ছে ।