MySQL의 여러 테이블에 삽입

Mehvish Ashiq 2024년2월16일
MySQL의 여러 테이블에 삽입

이 자습서에서는 MySQL의 여러 테이블에 삽입할 트랜잭션 및 저장 프로시저를 예시합니다.

MySQL의 여러 테이블에 삽입

단일 MySQL 명령을 여러 테이블에 삽입할 수 있는 방법은 없지만 MySQL 트랜잭션을 사용하여 프로젝트 요구 사항을 충족할 수 있습니다.

usersuser_profiles라는 두 개의 테이블을 생성해 보겠습니다. users 테이블에는 user_id, user_nameuser_password의 세 가지 속성이 있고 profiles 테이블에는 user_id, user_biohomepage가 속성으로 포함됩니다.

두 테이블을 만드는 데 사용하는 다음 명령을 참조하십시오.

예제 코드:

CREATE TABLE users(
    user_id INT NOT NULL AUTO_INCREMENT,
    user_name VARCHAR(45) NOT NULL,
    user_password VARCHAR(45) NOT NULL,
    PRIMARY KEY(user_id)
);

CREATE TABLE user_profiles(
    user_id VARCHAR(45) NOT NULL,
    user_bio VARCHAR(45) NOT NULL,
    homepage VARCHAR(50) NOT NULL
);

여기에서는 두 테이블을 모두 만들었습니다. 이제 다음과 같은 방법으로 두 테이블에 동시에 데이터를 삽입할 수 있습니다.

user_profiles.user_idusers.user_id의 값은 동일합니다.

예제 코드:

BEGIN;
    INSERT INTO users (user_id,user_name, user_password)
    VALUES (2,'username2', 'userpassword2');
    SELECT @UserID := MAX(user_id) FROM users;
    INSERT INTO user_profiles (user_id, user_bio, homepage)
    VALUES(@UserID,'this is bio for username2', 'http://www.username2.com');
COMMIT;

두 개의 레코드를 추가하고 SELECT 문을 사용하여 결과를 확인합니다.

출력(users 테이블의 경우):

+---------+-----------+---------------+
| user_id | user_name | user_password |
+---------+-----------+---------------+
|       1 | username1 | userpassword1 |
|       2 | username2 | userpassword2 |
+---------+-----------+---------------+
2 rows in set (0.03 sec)

출력(user_profiles용):

+---------+---------------------------+--------------------------+
| user_id | user_bio                  | homepage                 |
+---------+---------------------------+--------------------------+
| 1       | this is bio for username1 | http://www.username1.com |
| 2       | this is bio for username2 | http://www.username2.com |
+---------+---------------------------+--------------------------+
2 rows in set (0.00 sec)

또는 시간과 노력을 절약하기 위해 다음과 같이 저장 프로시저를 만들 수 있습니다.

예제 코드:

DELIMITER ;;

CREATE PROCEDURE InsertALL()
BEGIN
	INSERT INTO users (user_id,user_name, user_password)
    VALUES (3,'username3', 'userpassword3');
    SELECT @UserID := MAX(user_id) FROM users;
    INSERT INTO user_profiles (user_id, user_bio, homepage)
    VALUES(@UserID,'this is bio for username3', 'http://www.username3.com');
END ;;

DELIMITER ;
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

관련 문장 - MySQL Insert