அட்டவணையைப் புதுப்பித்தல்
அட்டவணையில் உள்ள ஏற்கனவே உள்ள பதிவுகளை "UPDATE" அறிக்கையைப் பயன்படுத்தி புதுப்பிக்கலாம்:
எடுத்துக்காட்டு
"Valley 345" இலிருந்து "Canyon 123" க்கு முகவரி நெடுவரிசையை மேலெழுதவும்:
let mysql = require('mysql');
let con = mysql.createConnection({
host: "localhost",
user: "yourusername",
password: "yourpassword",
database: "mydb"
});
con.connect(function(err) {
if (err) throw err;
let sql = "UPDATE customers SET address = 'Canyon 123' WHERE address = 'Valley 345'";
con.query(sql, function (err, result) {
if (err) throw err;
console.log(result.affectedRows + " record(s) updated");
});
});
UPDATE தொடரியலில் WHERE கூற்றைக் கவனிக்கவும்: எந்த பதிவு அல்லது பதிவுகள் புதுப்பிக்கப்பட வேண்டும் என்பதை WHERE கூற்று குறிப்பிடுகிறது. நீங்கள் WHERE கூற்றைத் தவிர்த்தால், அனைத்து பதிவுகளும் புதுப்பிக்கப்படும்!
மேலே உள்ள குறியீட்டை "demo_db_update.js" என்ற கோப்பில் சேமித்து கோப்பை இயக்கவும்:
C:\Users\Your Name>node demo_db_update.js
இது உங்களுக்கு இந்த முடிவைக் கொடுக்கும்:
1 record(s) updated
முக்கியமான எச்சரிக்கை:
- WHERE கூற்று: எப்போதும் WHERE கூற்றைப் பயன்படுத்தவும்
- அனைத்து பதிவுகளும்: WHERE இல்லாமல் UPDATE அனைத்து பதிவுகளையும் புதுப்பிக்கும்
- தரவு இழப்பு: தவறான UPDATE தரவு இழப்பை ஏற்படுத்தும்
- பாதுகாப்பு நகல்: முக்கியமான தரவைப் புதுப்பிப்பதற்கு முன் பாதுகாப்பு நகல் எடுக்கவும்
முடிவு பொருள்
ஒரு வினாவை இயக்கும் போது, ஒரு முடிவு பொருள் திருப்பி அனுப்பப்படும்.
முடிவு பொருள் வினா அட்டவணையை எவ்வாறு பாதித்தது என்பதைப் பற்றிய தகவல்களைக் கொண்டுள்ளது.
மேலே உள்ள எடுத்துக்காட்டிலிருந்து திருப்பி அனுப்பப்பட்ட முடிவு பொருள் இப்படித் தெரிகிறது:
{
fieldCount: 0,
affectedRows: 1,
insertId: 0,
serverStatus: 34,
warningCount: 0,
message: '(Rows matched: 1 Changed: 1 Warnings: 0',
protocol41: true,
changedRows: 1
}
பண்புகளின் மதிப்புகளை இப்படி காட்டலாம்:
எடுத்துக்காட்டு
பாதிக்கப்பட்ட வரிசைகளின் எண்ணிக்கையைத் திருப்பி அனுப்பவும்:
console.log(result.affectedRows)
இது இந்த முடிவை உருவாக்கும்:
1
| பண்பு | விளக்கம் | UPDATE க்கான முக்கியத்துவம் |
|---|---|---|
| affectedRows | பொருந்திய வரிசைகளின் எண்ணிக்கை | WHERE நிபந்தனையுடன் பொருந்திய மொத்த வரிசைகள் |
| changedRows | மாற்றப்பட்ட வரிசைகளின் எண்ணிக்கை | மதிப்புகள் உண்மையில் மாற்றப்பட்ட வரிசைகள் |
| message | விரிவான செய்தி | பொருந்தியவை, மாற்றப்பட்டவை மற்றும் எச்சரிக்கைகள் பற்றிய தகவல் |
| warningCount | எச்சரிக்கைகளின் எண்ணிக்கை | UPDATE போது ஏற்பட்ட எச்சரிக்கைகள் |
வெவ்வேறு நிபந்தனைகளுடன் UPDATE
ஒற்றை பதிவைப் புதுப்பித்தல்
// Update single record by ID
let id = 5;
let newAddress = 'New Address 123';
let sql = "UPDATE customers SET address = ? WHERE id = ?";
con.query(sql, [newAddress, id], function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
console.log("Records changed: " + result.changedRows);
});
பல பதிவுகளைப் புதுப்பித்தல்
// Update multiple records
let oldCity = 'Old City';
let newCity = 'New City';
let sql = "UPDATE customers SET city = ? WHERE city = ?";
con.query(sql, [newCity, oldCity], function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
// Update with IN operator
let ids = [1, 3, 7];
let status = 'active';
let sql = "UPDATE customers SET status = ? WHERE id IN (?)";
con.query(sql, [status, ids], function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
பல நெடுவரிசைகளைப் புதுப்பித்தல்
// Update multiple columns
let id = 5;
let newName = 'John Updated';
let newAddress = 'Updated Address 456';
let newEmail = 'john.updated@email.com';
let sql = "UPDATE customers SET name = ?, address = ?, email = ? WHERE id = ?";
con.query(sql, [newName, newAddress, newEmail, id], function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
மேம்பட்ட UPDATE நுட்பங்கள்
மதிப்புகளைக் கணக்கிடுதல்
// Update with calculated values
let sql = "UPDATE products SET price = price * 1.1 WHERE category = 'electronics'";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
// Update with expressions
let sql = "UPDATE orders SET total_amount = quantity * unit_price WHERE status = 'pending'";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
துணை வினாவுடன் UPDATE
// Update using subquery
let sql = `
UPDATE customers
SET premium = 1
WHERE id IN (
SELECT customer_id
FROM orders
WHERE total_amount > 1000
)
`;
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
CASE அறிக்கையுடன் UPDATE
// Update with CASE statement
let sql = `
UPDATE products
SET discount =
CASE
WHEN price > 100 THEN 0.2
WHEN price > 50 THEN 0.1
ELSE 0
END
`;
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
பாதுகாப்பான UPDATE நடைமுறைகள்
SELECT முதலில் சரிபார்க்கவும்
// First check what will be updated
let id = 5;
con.query("SELECT * FROM customers WHERE id = ?", [id], function (err, result) {
if (err) throw err;
if (result.length > 0) {
console.log("Will update:", result[0]);
// Then proceed with update
let newAddress = 'Updated Address';
con.query("UPDATE customers SET address = ? WHERE id = ?", [newAddress, id], function (err, updateResult) {
if (err) throw err;
console.log("Records updated: " + updateResult.affectedRows);
});
} else {
console.log("No records found to update");
}
});
பரிவர்த்தனைகளைப் பயன்படுத்துதல்
// Using transactions for safe update
con.beginTransaction(function(err) {
if (err) throw err;
let sql = "UPDATE customers SET address = ? WHERE id = ?";
con.query(sql, ['New Address', 5], function (err, result) {
if (err) {
return con.rollback(function() {
throw err;
});
}
console.log("Records updated: " + result.affectedRows);
// Commit the transaction
con.commit(function(err) {
if (err) {
return con.rollback(function() {
throw err;
});
}
console.log("Transaction completed successfully");
});
});
});
LIMIT உடன் UPDATE
// Update with LIMIT for safety
let sql = "UPDATE customers SET status = 'inactive' WHERE last_login < '2023-01-01' LIMIT 10";
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Records updated: " + result.affectedRows);
});
UPDATE சிறந்த நடைமுறைகள்
பாதுகாப்பு
- எப்போதும் WHERE கூற்றைப் பயன்படுத்தவும்
- SQL injection தடுக்க இடம் கொள்ளும் பயன்படுத்தவும்
- முக்கியமான தரவைப் புதுப்பிப்பதற்கு முன் பாதுகாப்பு நகல் எடுக்கவும்
- உற்பத்தி தரவுத்தளங்களில் நேரடி UPDATE தவிர்க்கவும்
செயல்திறன்
- குறியீட்டு நெடுவரிசைகளைப் பயன்படுத்தி UPDATE செய்யவும்
- பெரிய UPDATE க்கு LIMIT ஐப் பயன்படுத்தவும்
- தேவையற்ற நெடுவரிசைகளைப் புதுப்பிப்பதைத் தவிர்க்கவும்
- மாறாத நெடுவரிசைகளைப் புதுப்பிப்பதைத் தவிர்க்கவும்
குறியீடு தரம்
- புதுப்பிப்பதற்கு முன் SELECT மூலம் சரிபார்க்கவும்
- சரியான பிழை கையாளுதலையும் கண்காணிப்பையும் பயன்படுத்தவும்
- பரிவர்த்தனைகளைப் பயன்படுத்தி அண்மைத்தன்மையை உறுதிப்படுத்தவும்
- வாசிப்புக்காக வினாக்களை வடிவமைக்கவும்
முழுமையான எடுத்துக்காட்டு
அனைத்து UPDATE நுட்பங்களையும் உள்ளடக்கிய முழுமையான எடுத்துக்காட்டு:
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 UPDATE with WHERE
console.log('\n1. Basic UPDATE with WHERE:');
const oldAddress = 'Valley 345';
const newAddress = 'Canyon 123';
con.query("UPDATE customers SET address = ? WHERE address = ?", [newAddress, oldAddress], (err, result) => {
if (err) {
console.error('Error in update 1:', err.message);
return;
}
console.log(`Records affected: ${result.affectedRows}`);
console.log(`Records changed: ${result.changedRows}`);
console.log('Full result:', result);
});
// Example 2: UPDATE multiple columns
console.log('\n2. UPDATE multiple columns:');
const customerId = 5;
const updates = {
name: 'John Smith Updated',
email: 'john.updated@email.com',
phone: '+1234567890'
};
con.query(
"UPDATE customers SET name = ?, email = ?, phone = ? WHERE id = ?",
[updates.name, updates.email, updates.phone, customerId],
(err, result) => {
if (err) {
console.error('Error in update 2:', err.message);
return;
}
console.log(`Records affected: ${result.affectedRows}`);
}
);
// Example 3: Safe UPDATE with transaction
console.log('\n3. Safe UPDATE with transaction:');
con.beginTransaction((err) => {
if (err) {
console.error('Error starting transaction:', err.message);
return;
}
// First check what we're updating
const updateId = 3;
con.query("SELECT * FROM customers WHERE id = ?", [updateId], (err, selectResult) => {
if (err) {
return con.rollback(() => {
console.error('Error in select:', err.message);
});
}
if (selectResult.length > 0) {
console.log('Will update customer:', selectResult[0]);
// Perform update
const newStatus = 'premium';
con.query("UPDATE customers SET status = ? WHERE id = ?", [newStatus, updateId], (err, updateResult) => {
if (err) {
return con.rollback(() => {
console.error('Error in update:', err.message);
});
}
console.log(`Transaction - Records affected: ${updateResult.affectedRows}`);
// Commit transaction
con.commit((err) => {
if (err) {
return con.rollback(() => {
console.error('Error committing transaction:', err.message);
});
}
console.log('Transaction committed successfully');
// Close connection
setTimeout(() => {
con.end((err) => {
if (err) {
console.error('Error closing connection:', err.message);
return;
}
console.log('\nConnection closed');
});
}, 1000);
});
});
} else {
console.log('No customer found with ID:', updateId);
con.rollback(() => {
console.log('Transaction rolled back');
});
}
});
});
});