آموزش وارد کردن داده ها در جدول MySQL

علی حسین شهابی

1395/8/14

نظر0

با سلام خدمت شما دوستان گرامی

در این آموزش قرار است شما یاد بگیرید که چگونه از دستور MySQL INSERT برای وارد کردن اطلاعات در داخل جدول های دیتابیس استفاده کنیم.

INSERT INTO table(column1,column2...)
VALUES (value1,value2,...);

در ابتدا شما می بایست نام جدول و یک لیست از ستون های جدا شده با کاما را در داخل پرانتز بعد از عبارت INSERT INTO مشخص کنید.

سپس مقادیر جداشده با کاما را از ستون های یکسان بعد از کلمه کلیدی  VALUES در داخل پرانتز قرار می دهید.

مثال : یک جدول جدید با نام tasks برای تمرین کردن دستور INSERT ایجاد می کنیم :

CREATE TABLE IF NOT EXISTS tasks (
    task_id INT(11) AUTO_INCREMENT,
    subject VARCHAR(45) DEFAULT NULL,
    start_date DATE DEFAULT NULL,
    end_date DATE DEFAULT NULL,
    description VARCHAR(200) DEFAULT NULL,
    PRIMARY KEY (task_id)
);

برای مثال اگر شما قصد دارید که یک task جدیدی را در جدول tasks وارد کنید باید از دستور insert طبق زیر استفاده کنید :

INSERT INTO tasks(subject,start_date,end_date,description)
VALUES('Learn MySQL INSERT','2010-01-01','2010-01-02','Start learning..');

بعد از اجرای دستور بالا , MySQL پیامی را به شما برمی گرداند که تعداد ردیف های ایجاد شده را  را نشان می دهد. که در این مثال یک سطر ایجاد شده است .

SELECT 
    *
FROM
    tasks;

 آموزش وارد کردن داده ها در جدول MySQL

آموزش وارد کردن داده ها در جدول MySQL

اضافه کردن چندین رکورد همزمان در MySQL 

به منظور وارد کردن چندین سطر در یک جدول از دستور insert مانند ترکیب زیر استفاده می کنیم :

INSERT INTO table(column1,column2...)
VALUES (value1,value2,...),
       (value1,value2,...),
...;

در این نوع دستور , لیست مقدار هر سطر توسط یک کاما جدا شده است. برای مثال برای وارد کردن رکوردهای مختلف در داخل جدول tasks می بایست از دستور زیر استفاده کنید :

INSERT INTO tasks(subject,start_date,end_date,description)
VALUES ('Task 1','2010-01-01','2010-01-02','Description 1'),
       ('Task 2','2010-01-01','2010-01-02','Description 2'),
       ('Task 3','2010-01-01','2010-01-02','Description 3');

خروجی :

آموزش وارد کردن داده ها در جدول MySQL

آموزش وارد کردن داده ها در جدول MySQL

اگر شما برای  تمام فیلدها مقدار متناظری را وارد کنید می توانید از نوشتن نام ستون ها چشم پوشی کنید و آنها را برای راحتی بیشتر و خلاصه شدن , ننویسید  :

INSERT INTO table
VALUES (value1,value2,...);

و یا به صورت اضافه کردن چند رکورد همزمان

INSERT INTO table
VALUES (value1,value2,...),
       (value1,value2,...),
...;

توجه داشته باشید برای ستون هایی که از نوع  auto-increment هسنتد (برای مثال ستون taskid )مجبور نیستید  مقداری را مشخص کنید . زیرا MySQL مقدار (value) را برای ستون auto-increment به طور خودکار ایجاد می نماید.

 

MySQL INSERT with SELECT clause

در MySQL شما می توانید مقداری را برای دستور INSERT از دستور SELECT تعیین نمایید. این ویژگی خیلی مفید است زیرا شما می توانید به راحتی یک جدول را به صورت کامل یا حتی  بخشی از آن را  با استفاده از  دستور INSERT و SELECT در جدول دیگر , مانند زیر کپی نمایید :

INSERT INTO table_1
SELECT c1, c2, FROM table_2;

برای مثال جدول tasks را داخل جدول task_1 کپی می کنیم . برای این کار در ابتدا جدول جدیدی با نام tasks_1 با کپی از ساختار جدول tasks مانند زیر ایجاد می کنیم :

CREATE TABLE tasks_1 LIKE tasks;

در مرحله بعد اطلاعات را از جدول tasks داخل جدول tasks_1 با استفاده از دستور INSERT زیر وارد می کنیم :

INSERT INTO tasks_1
SELECT * FROM tasks;

و در مرحله ی آخر جدول tasks_1 را با دقت بررسی کنید که آیا به طور صحیح کپی کرده ایم یا خیر.

SELECT 
    *
FROM
    tasks_1;

 آموزش وارد کردن داده ها در جدول MySQL

آموزش وارد کردن داده ها در جدول MySQL

 

MySQL INSERT with ON DUPLICATE KEY UPDATE

اگر افزودن سطر جدید, PRIMARY KEY یا قید   UNIQUE را نادیده بگیرد MySQL یک خطا برمی گرداند . یه این معنی که سطر جدیدی که می خواهید اضافی کنید دارای کلید اصلی تکراری می باشد :

برای مثال :

INSERT INTO tasks(task_id,subject,start_date,end_date,description)
VALUES (4,'Test ON DUPLICATE KEY UPDATE','2010-01-01','2010-01-02','Next Priority');

که در نتیحه MySQL پیغام خطای زیر را بر می گرداند :

Error Code: 1062. Duplicate entry '4' for key 'PRIMARY' 0.016 sec

سطر با کلید اصلی 4 قبلا در جدول  tasks بوده است و به همین دلیل , این دستور , محدودیت  primary key  را نادیده نقض می کند و پیغام خطا صادر می شود .

حالا چنانچه در دستور INSERT آپشن ON DUPLICATE KEY UPDATE را اضافه کنیم MySQL یا رکورد جدیدی را اضافه می کند یا اگر همچین رکوردی قبلا موجود باشد , آن را آپدیت می کند .

برای مثال دستور زیر , رکوردی که آیدی آن 4 بوده و قبلن وارد کرده ایم را آپدیت می نمایید و فیلدهای task_id و subject آن را با مقادیر جدید ویرایش می کند  :

INSERT INTO tasks(task_id,subject,start_date,end_date,description)
VALUES (4,'Test ON DUPLICATE KEY UPDATE','2010-01-01','2010-01-02','Next Priority')
ON DUPLICATE KEY UPDATE 
   task_id = task_id + 1, 
   subject = 'Test ON DUPLICATE KEY UPDATE';

حالا اگر جدول tasks را دوباره بررسی کنیم :

SELECT 
    *
FROM
    tasks;

خروجی :

آموزش وارد کردن داده ها در جدول MySQL

آموزش وارد کردن داده ها در جدول MySQL

مشاهده می کنید که در اینجا سطر جدید وارد نشده است اما سطر کنونی با  task_id آن برابر با 4 است , آپدیت شده است.

دستور INSERT ON DUPLICATE KEY UPDATE در بالا مشابه دستور  update زیر می باشد :

UPDATE tasks 
SET 
    task_id = task_id + 1,
    subject = 'Test ON DUPLICATE KEY UPDATE'
WHERE
    task_id = 4;

در این آموزش نشان دادیم که چگونه می توان با استفاده از روش های  مختلف دستور INSERT , برای وارد کردن اطلاعات  به داخل یک جدول استفاده کنیم.

خب مقاله امروز هم به پایان رسید.خوشحال میشم مثل همیشه نظراتتون رو اعلام کنید. 

(مترجم : افسانه عابدینی)

 

اینستاگرام علی حسین شهابی لینکدین علی حسین شهابی

0 نظر

ارسال نظر جدید

 
Not signed in

کلیه حقوق مادی و معنوی , متعلق به سایت (Alihossein.ir)می باشد ,انتشار مطالب بدون ذکر منبع از نظر اخلاقی و شرعی صحیح نمی باشد.