Node.js MySQL Where

Node.js MySQL WHERE

ফিল্টার সহ নির্বাচন

একটি টেবিল থেকে রেকর্ড নির্বাচন করার সময়, আপনি "WHERE" ধারাটি ব্যবহার করে নির্বাচনটি ফিল্টার করতে পারেন:

উদাহরণ

"পার্ক লেন 38" ঠিকানা সহ রেকর্ড(গুলি) নির্বাচন করুন:

let mysql = require('mysql');

let con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT * FROM customers WHERE address = 'Park Lane 38'", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

উপরের কোডটি "demo_db_where.js" ফাইলে সংরক্ষণ করুন এবং ফাইলটি চালান:

C:\Users\Your Name>node demo_db_where.js

এটি আপনাকে এই ফলাফল দেবে:

[
  { id: 11, name: 'Ben', address: 'Park Lane 38'}
]

💡WHERE ক্লজের মূল পয়েন্ট:

  • সমতা পরীক্ষা:সঠিক মিলের জন্য = অপারেটর ব্যবহার করা হয়
  • স্ট্রিং মান:স্ট্রিং মান একক উদ্ধৃতি মধ্যে আবদ্ধ করা আবশ্যক
  • একক ফলাফল:একটি WHERE বিবৃতি এক বা একাধিক রেকর্ড প্রদান করে
  • ডেটা প্রকার:সংখ্যা উদ্ধৃতি ছাড়া ব্যবহার করা যেতে পারে

ওয়াইল্ডকার্ড অক্ষর

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

শূন্য, এক বা একাধিক অক্ষর নির্দেশ করতে '%' ওয়াইল্ডকার্ড ব্যবহার করুন:

উদাহরণ

'S' অক্ষর দিয়ে শুরু হওয়া ঠিকানা সহ রেকর্ড নির্বাচন করুন:

let mysql = require('mysql');

let con = mysql.createConnection({
  host: "localhost",
  user: "yourusername",
  password: "yourpassword",
  database: "mydb"
});

con.connect(function(err) {
  if (err) throw err;
  con.query("SELECT * FROM customers WHERE address LIKE 'S%'", function (err, result) {
    if (err) throw err;
    console.log(result);
  });
});

উপরের কোডটি "demo_db_where_s.js" ফাইলে সংরক্ষণ করুন এবং ফাইলটি চালান:

C:\Users\Your Name>node demo_db_where_s.js

এটি আপনাকে এই ফলাফল দেবে:

[
  { id: 8, name: 'Richard', address: 'Sky st 331'},
  { id: 14, name: 'Viola', address: 'Sideway 1633'}
]

শুরু করা

'S%'- 'S' দিয়ে শুরু হওয়া মান

শেষ

'%S'- 'S' দিয়ে শেষ হওয়া মান

বিষয়বস্তু

'%S%'- যে কোনো জায়গায় 'S' ধারণকারী মান

অতিরিক্ত LIKE অপারেটরের উদাহরণ

// Address contains 'way'
con.query("SELECT * FROM customers WHERE address LIKE '%way%'", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// Name ends with 'y'
con.query("SELECT * FROM customers WHERE name LIKE '%y'", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// Name has exactly 3 characters
con.query("SELECT * FROM customers WHERE name LIKE '___'", function (err, result) {
  if (err) throw err;
  console.log(result);
});

ক্যোয়ারী মান এস্কেপিং

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

এটি SQL ইনজেকশন প্রতিরোধ করার জন্য, একটি সাধারণ ওয়েব হ্যাকিং কৌশল যা আপনার ডাটাবেস ধ্বংস বা অপব্যবহার করতে ব্যবহৃত হয়।

MySQL মডিউলে ক্যোয়ারী ভ্যালু এস্কেপ করার পদ্ধতি রয়েছে:

উদাহরণ

mysql.escape() :

let adr = 'Mountain 21';
let sql = 'SELECT * FROM customers WHERE address = ' + mysql.escape(adr);
con.query(sql, function (err, result) {
  if (err) throw err;
  console.log(result);
});

আপনি পালাতে চান মানগুলির জন্য স্থানধারক হিসাবে? ব্যবহার করা যেতে পারে।

এই ক্ষেত্রে, ভেরিয়েবলটি query() পদ্ধতিতে দ্বিতীয় প্যারামিটার হিসাবে পাস করা হয়:

উদাহরণ

স্থান নেবে? পদ্ধতিটি ব্যবহার করে এস্কেপ কোয়েরি মান:

let adr = 'Mountain 21';
let sql = 'SELECT * FROM customers WHERE address = ?';
con.query(sql, [adr], function (err, result) {
  if (err) throw err;
  console.log(result);
});

যদি আপনার একাধিক মান থাকে, তাহলে অ্যারেতে একাধিক মান রয়েছে, সেই ক্রমে:

উদাহরণ

একাধিক অবস্থান:

let name = 'Amy';
let adr = 'Mountain 21';
let sql = 'SELECT * FROM customers WHERE name = ? OR address = ?';
con.query(sql, [name, adr], function (err, result) {
  if (err) throw err;
  console.log(result);
});

⚠️নিরাপত্তা সতর্কতা:

  • SQL Injection:সর্বদা ব্যবহারকারীর ইনপুট এড়িয়ে যান
  • উদ্ধৃতি: mysql.escape()
  • দখল করা:একাধিক মানের জন্য প্রস্তাবিত পদ্ধতি
  • ডেটা ক্লিনিং:সর্বদা ব্যবহারকারীর ইনপুট যাচাই করুন

অতিরিক্ত WHERE অপারেটর

তুলনা অপারেটর

// Greater than
con.query("SELECT * FROM customers WHERE id > 5", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// Less than or equal
con.query("SELECT * FROM customers WHERE id <= 10", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// Not equal
con.query("SELECT * FROM customers WHERE name != 'John'", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// Between
con.query("SELECT * FROM customers WHERE id BETWEEN 5 AND 10", function (err, result) {
  if (err) throw err;
  console.log(result);
});

লজিক্যাল অপারেটর

// AND operator
con.query("SELECT * FROM customers WHERE name = 'John' AND address = 'Highway 71'", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// OR operator
con.query("SELECT * FROM customers WHERE name = 'John' OR name = 'Amy'", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// NOT operator
con.query("SELECT * FROM customers WHERE NOT name = 'John'", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// Combined conditions
con.query("SELECT * FROM customers WHERE (name = 'John' OR name = 'Amy') AND id > 5", function (err, result) {
  if (err) throw err;
  console.log(result);
});

IN অপারেটর

// IN operator with multiple values
con.query("SELECT * FROM customers WHERE name IN ('John', 'Amy', 'Hannah')", function (err, result) {
  if (err) throw err;
  console.log(result);
});

// NOT IN operator
con.query("SELECT * FROM customers WHERE name NOT IN ('John', 'Amy')", function (err, result) {
  if (err) throw err;
  console.log(result);
});

WHERE বিবৃতির জন্য সর্বোত্তম অনুশীলন

নিরাপত্তা

  • SQL ইনজেকশন প্রতিরোধ করার জন্য সর্বদা স্থান ব্যবহার করুন
  • সর্বদা ব্যবহারকারীর ইনপুট যাচাই এবং পরিমার্জন করুন
  • সরাসরি স্ট্রিং সংযোগ এড়িয়ে চলুন
  • স্পষ্টভাবে ত্রুটি বার্তা প্রদর্শন করবেন না

কর্মক্ষমতা

  • শুধুমাত্র প্রয়োজনীয় কলাম নির্বাচন করুন
  • দক্ষতার জন্য সূচক কলাম ব্যবহার করুন
  • জটিল প্রশ্নের জন্য WHERE বিবৃতি সরলীকরণ করুন
  • LIKE কোয়েরির শুরুতে ওয়াইল্ডকার্ড এড়িয়ে চলুন

কোড গুণমান

  • পুনঃব্যবহারের জন্য WHERE বিবৃতি সংরক্ষণ করুন
  • সঠিক ত্রুটি হ্যান্ডলিং এবং ট্র্যাকিং ব্যবহার করুন
  • পড়ার জন্য প্রশ্ন তৈরি করুন
  • স্ট্যান্ডার্ড কোডিং নিয়মাবলী অনুসরণ করুন

সম্পূর্ণ উদাহরণ

একটি সম্পূর্ণ উদাহরণ যেখানে সমস্ত WHERE বিবৃতি কৌশল অন্তর্ভুক্ত রয়েছে:

const mysql = require('mysql');

// Create connection
const con = mysql.createConnection({
  host: "localhost",
  user: "root",
  password: "password",
  database: "company_db"
});

// Connect to MySQL
con.connect((err) => {
  if (err) {
    console.error('Error connecting to MySQL:', err.message);
    return;
  }
  
  console.log('Connected to MySQL database');
  
  // Example 1: Basic WHERE with exact match
  console.log('\n1. Customers with specific address:');
  const address = 'Park Lane 38';
  con.query("SELECT * FROM customers WHERE address = ?", [address], (err, result) => {
    if (err) {
      console.error('Error in query 1:', err.message);
      return;
    }
    console.log(result);
  });
  
  // Example 2: WHERE with LIKE and wildcard
  console.log('\n2. Customers with address starting with S:');
  con.query("SELECT * FROM customers WHERE address LIKE 'S%'", (err, result) => {
    if (err) {
      console.error('Error in query 2:', err.message);
      return;
    }
    console.log(result);
  });
  
  // Example 3: WHERE with multiple conditions
  console.log('\n3. Customers with complex conditions:');
  const minId = 5;
  const maxId = 10;
  const namePattern = '%y%';
  
  con.query(
    "SELECT * FROM customers WHERE id BETWEEN ? AND ? AND name LIKE ?",
    [minId, maxId, namePattern],
    (err, result) => {
      if (err) {
        console.error('Error in query 3:', err.message);
        return;
      }
      console.log(result);
    }
  );
  
  // Example 4: WHERE with IN operator
  console.log('\n4. Customers with specific names:');
  const names = ['John', 'Amy', 'Hannah'];
  con.query("SELECT * FROM customers WHERE name IN (?, ?, ?)", names, (err, result) => {
    if (err) {
      console.error('Error in query 4:', err.message);
      return;
    }
    console.log(result);
    
    // Close connection after all queries
    setTimeout(() => {
      con.end((err) => {
        if (err) {
          console.error('Error closing connection:', err.message);
          return;
        }
        console.log('\nConnection closed');
      });
    }, 1000);
  });
});

অনুশীলন করুন

MySQL ক্যোয়ারীতে রেকর্ড ফিল্টার করতে ব্যবহৃত সঠিক SQL স্টেটমেন্ট নির্বাচন করুন।

FILTER BY
✗ ভুল! "ফিল্টার বাই" মাইএসকিউএল-এ একটি বৈধ SQL বিবৃতি নয়
CONDITION
✗ ভুল! "কন্ডিশন" MySQL-এ একটি বৈধ SQL বিবৃতি নয়
WHERE
✓ ঠিক আছে! "WHERE" হল একটি বৈধ SQL স্টেটমেন্ট যা একটি MySQL ক্যোয়ারীতে রেকর্ড ফিল্টার করতে ব্যবহৃত হয়
IF
✗ ভুল! "IF" MySQL-এ একটি বৈধ SQL বিবৃতি নয়