چگونه داده‌ها را در SQL اضافه کنیم؟

مقدمه (Introduction)

زبان Structured Query Language که بیشتر با نام SQL شناخته می‌شود، انعطاف‌پذیری بالایی در روش‌های درج داده در جدول‌ها فراهم می‌کند. برای مثال، می‌توانید با استفاده از کلمه کلیدی VALUES ردیف‌های داده را به‌صورت دستی وارد کنید، با استفاده از کوئری‌های SELECT مجموعه‌ای از داده‌ها را از جدول‌های دیگر کپی کنید، یا ستون‌هایی تعریف کنید که SQL به‌صورت خودکار داده‌ها را در آن‌ها درج کند.

در این راهنما، بررسی می‌کنیم که چگونه با استفاده از سینتکس INSERT INTO در SQL، داده‌ها را به روش‌های مختلف به جدول‌ها اضافه کنیم.


پیش‌نیازها (Prerequisites)

برای دنبال کردن این راهنما به موارد زیر نیاز دارید:

  • یک سیستم مدیریت پایگاه داده رابطه‌ای (RDBMS) که از SQL پشتیبانی کند

  • مثال‌ها و دستورات این آموزش در محیط زیر بررسی شده‌اند:

    • سروری با Ubuntu 20.04

    • یک کاربر non-root با دسترسی مدیریتی و فایروال فعال (UFW)

    • MySQL نصب و ایمن‌سازی‌شده روی سرور

    • یک کاربر non-root در MySQL

توجه: بسیاری از RDBMSها پیاده‌سازی مخصوص به خود از SQL را دارند. اگرچه دستورات این آموزش در اغلب سیستم‌ها کار می‌کنند، اما ممکن است سینتکس یا خروجی در دیتابیس‌هایی غیر از MySQL کمی متفاوت باشد.

همچنین به یک دیتابیس و جدول نمونه نیاز دارید تا بتوانید درج داده‌ها را تمرین کنید. اگر چنین ساختاری ندارید، می‌توانید بخش «اتصال به MySQL و ساخت دیتابیس نمونه» را دنبال کنید.


اتصال به MySQL و ساخت دیتابیس نمونه

اگر دیتابیس SQL شما روی یک سرور راه دور اجرا می‌شود، ابتدا از طریق SSH به سرور متصل شوید:

ssh sammy@your_server_ip

سپس وارد محیط MySQL شوید (به‌جای sammy نام کاربر MySQL خود را قرار دهید):

mysql -u sammy -p

ایجاد دیتابیس با نام insertDB:

CREATE DATABASE insertDB;

در صورت موفقیت، خروجی مشابه زیر دریافت می‌کنید:

Query OK, 1 row affected (0.01 sec)

انتخاب دیتابیس:

USE insertDB;

ساخت جدول نمونه

فرض کنید مالک یک کارخانه هستید و می‌خواهید اطلاعات کارکنان را ذخیره کنید. جدول موردنظر دارای ستون‌های زیر است:

  • name: نام کارمند (varchar با حداکثر ۳۰ کاراکتر)

  • position: عنوان شغلی (varchar با حداکثر ۳۰ کاراکتر)

  • department: بخش محل کار (varchar با حداکثر ۲۰ کاراکتر)

  • hourlyWage: دستمزد ساعتی (decimal با فرمت 4,2)

  • startDate: تاریخ شروع به کار (date با فرمت YYYY-MM-DD)

ساخت جدول:

CREATE TABLE factoryEmployees (
name varchar(30),
position varchar(30),
department varchar(20),
hourlyWage decimal(4,2),
startDate date
);

درج دستی داده‌ها (Inserting Data Manually)

سینتکس کلی درج داده در SQL به شکل زیر است:

INSERT INTO table_name
(column1, column2, ... columnN)
VALUES
(value1, value2, ... valueN);

مثال: درج یک ردیف داده در جدول factoryEmployees:

INSERT INTO factoryEmployees
(name, position, department, hourlyWage, startDate)
VALUES
('Agnes', 'thingamajig foreman', 'management', 26.50, '2017-05-01');

ترتیب ستون‌ها مهم نیست، اما ترتیب مقادیر باید دقیقاً با ترتیب ستون‌ها هماهنگ باشد. در غیر این صورت، داده‌ها اشتباه درج می‌شوند یا خطا رخ می‌دهد.

مثال درج با ترتیب متفاوت ستون‌ها:

INSERT INTO factoryEmployees
(department, hourlyWage, startDate, name, position)
VALUES
('production', 15.59, '2018-04-28', 'Jim', 'widget tightener');

اگر نوع داده‌ها با ستون‌ها سازگار نباشد، خطا دریافت خواهید کرد:

ERROR 1366 (HY000): Incorrect decimal value

درج ناقص ستون‌ها

لازم نیست برای همه ستون‌ها مقدار وارد کنید. اگر ستونی محدودیت NOT NULL نداشته باشد، مقدار آن به‌صورت NULL درج می‌شود:

INSERT INTO factoryEmployees
(name, position, hourlyWage)
VALUES
('Harry', 'whatzit engineer', 26.50);

اگر برای تمام ستون‌ها مقدار وارد می‌کنید، می‌توانید نام ستون‌ها را حذف کنید (به شرط رعایت ترتیب تعریف جدول):

INSERT INTO factoryEmployees
VALUES
('Marie', 'doodad welder', 'production', 27.88, '2018-03-29');

درج چند ردیف به‌صورت هم‌زمان

INSERT INTO factoryEmployees
VALUES
('Giles', 'gizmo inspector', 'quality assurance', 26.50, '2019-08-06'),
('Daphne', 'gizmo presser', 'production', 32.45, '2017-11-12'),
('Joan', 'whatzit analyst', 'quality assurance', 29.00, '2017-04-29');

کپی داده با SELECT

می‌توانید داده‌ها را از یک جدول به جدول دیگر با SELECT منتقل کنید:

INSERT INTO table_A (col_A1, col_A2)
SELECT col_B1, col_B2
FROM table_B;

مثال: ساخت جدول جدید showroomEmployees:

CREATE TABLE showroomEmployees (
name varchar(30),
hourlyWage decimal(4,2),
startDate date
);

کپی داده از جدول قبلی:

INSERT INTO showroomEmployees
SELECT name, hourlyWage, startDate
FROM factoryEmployees
WHERE name = 'Agnes';

هر بار اجرای این دستور، داده‌ها را دوباره درج می‌کند و ممکن است باعث ایجاد داده‌های تکراری شود.


درج خودکار داده‌ها (AUTO_INCREMENT و DEFAULT)

برخی ستون‌ها می‌توانند به‌صورت خودکار مقداردهی شوند:

CREATE TABLE interns (
internID int AUTO_INCREMENT PRIMARY KEY,
department varchar(20) DEFAULT 'production',
name varchar(30)
);

درج داده بدون مشخص‌کردن ستون‌های خودکار:

INSERT INTO interns (name)
VALUES ('Pierre'), ('Sheila'), ('Francois');

در این حالت، مقدار internID به‌صورت خودکار افزایش می‌یابد و مقدار department برابر مقدار پیش‌فرض قرار می‌گیرد.

استفاده از مقدار پیش‌فرض به‌صورت دستی:

INSERT INTO interns (name, department)
VALUES
('Jacques', 'management'),
('Max', 'quality assurance'),
('Edith', 'management'),
('Daniel', DEFAULT);

جمع‌بندی (Conclusion)

در این آموزش یاد گرفتید:

  • چگونه با VALUES داده‌ها را به‌صورت دستی درج کنید

  • چگونه با SELECT داده‌ها را از جدول‌های دیگر کپی کنید

  • چگونه از AUTO_INCREMENT و DEFAULT برای درج خودکار داده استفاده کنید

اگرچه این دستورات در اکثر دیتابیس‌ها کار می‌کنند، اما هر RDBMS پیاده‌سازی مخصوص خود را دارد. برای جزئیات بیشتر، همیشه به مستندات رسمی دیتابیس خود مراجعه کنید.

از همراهی شما با پارمین کلود متشکریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *