본문 바로가기

SQL관련

회원 가입에 대한 입력/수정에 대해 물어보았다.

질문 : 회원 가입하는 insert문이랑 프로시저를 만들어줘

 

답변 : 

CREATE TABLE member (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50),
    email VARCHAR(50) UNIQUE,
    password VARCHAR(100)
);

INSERT INTO member (name, email, password)
VALUES ('홍길동', 'honggildong@gmail.com', '1234');

 

위 INSERT 문은 이름, 이메일, 비밀번호를 입력하는 예시입니다. 이메일은 UNIQUE 제약 조건을 가지도록 설정했습니다.

다음으로, 위 INSERT 문을 프로시저로 변환해보겠습니다. 이를 위해서는 MySQL에서 프로시저를 작성할 수 있는 권한이 필요합니다. 프로시저를 작성하기 위해선 CREATE ROUTINE 권한이 필요합니다.

 

GRANT CREATE ROUTINE ON [DB명].* TO '[사용자명]'@'[호스트명]';

-- 예시
GRANT CREATE ROUTINE ON mydb.* TO 'myuser'@'localhost';

 

위 권한을 획득한 후, 아래와 같이 프로시저를 작성할 수 있습니다.

 
CREATE PROCEDURE insert_member (
    IN name VARCHAR(50),
    IN email VARCHAR(50),
    IN password VARCHAR(100)
)
BEGIN
    INSERT INTO member (name, email, password) VALUES (name, email, password);
END;
 
 

위 프로시저는 이름, 이메일, 비밀번호를 입력받아 member 테이블에 INSERT하는 예시입니다. IN 키워드를 사용하여 파라미터를 정의하고, BEGIN과 END 사이에서 SQL 문을 작성합니다.

이제 회원 가입을 위한 INSERT 문과 프로시저가 생성되었습니다.

 

회원정보를 수정하는 UPDATE 문과 프로시저를 만들어 보겠습니다.

UPDATE 문:

 

UPDATE members
SET name = '수정된 이름', email = 'modified@email.com'
WHERE id = 1;

 

위의 UPDATE 문은 id가 1인 회원의 이름과 이메일을 수정하는 쿼리입니다. 수정할 필드와 값을 SET 절에 나열하고, 수정할 대상을 WHERE 절에 지정합니다.

프로시저:

 

CREATE PROCEDURE update_member(
    IN p_id INT,
    IN p_name VARCHAR(50),
    IN p_email VARCHAR(50)
)
BEGIN
    UPDATE members
    SET name = p_name, email = p_email
    WHERE id = p_id;
END

 

위의 프로시저는 ID, 이름, 이메일 값을 입력 받아 회원 정보를 수정하는 프로시저입니다. IN 키워드로 매개변수를 선언하고, UPDATE 문을 사용하여 회원 정보를 수정합니다. 이제 이 프로시저를 호출하여 회원 정보를 수정할 수 있습니다.

예를 들어, ID가 1인 회원의 이름을 '홍길동'으로, 이메일을 'modified@email.com'으로 변경하고자 할 경우 아래와 같이 프로시저를 호출할 수 있습니다.

 

CALL update_member(1, '홍길동', 'modified@email.com');

 

위와 같이 호출하면, ID가 1인 회원의 이름과 이메일이 변경됩니다.