MySQL Workbench 사용

기여·2025년 1월 24일
0

예전에 HeidiSQL에서 사용했던 쿼리를 MySQL Workbench에 맞게 수정해 테이블 생성해본다.

의도:

  • 사용자 추가 시 UK를 U00001, U00002 식으로 문자열 혼합으로 자동증가 (아무래도 보안 때문에 랜덤 생성되도록 추후 고려해야겠지)
  • 비밀번호는 db에서 암호화

우선, HeidiSQL에서 쓰던 database 개념은 MySQL Workbench에서는 schema로 대체된다.

테이블/트리거 생성 전 어느 스키마에서 생성할지 미리 지정해야 한다.
Navigator > Schemas 선택 후, 해당 스키마 이름을 클릭...

혹은 아래 쿼리를 실행하면 된다.

USE test_schema;

1, table:

CREATE TABLE users (
    uSeq INT NOT NULL AUTO_INCREMENT,
    uCode VARCHAR(6) NOT NULL,
    uName VARCHAR(20) NOT NULL,
    uPw VARBINARY(255) NOT NULL,
    uDob DATE NOT NULL,
    uTel VARCHAR(11) NOT NULL,
    uMail VARCHAR(45),
    uAdd VARCHAR(45),
    uDtlAdd VARCHAR(45),
    agreeYn TINYINT NOT NULL,
    PRIMARY KEY (uSeq),
    UNIQUE KEY uCode (uCode)
);

2, trigger:

DELIMITER //

CREATE TRIGGER trg_before_insert_users
BEFORE INSERT ON test_schema.users
FOR EACH ROW
BEGIN
    DECLARE last_id INT;

    SELECT AUTO_INCREMENT
    INTO last_id
    FROM information_schema.TABLES
    WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'users';

    SET NEW.uCode = CONCAT('U', LPAD(last_id, 5, '0'));
END//

DELIMITER ;

*스키마 지정하지 않고 트리거 생성하면 아래 오류가 보인다.

Error Code: 1046. No database selected Select the default DB to be used by double-clicking its name in the SCHEMAS list in the sidebar.

마지막으로 레코드 생성 시 UK가 원하는 대로 생성되고 비밀번호가 잘 암호화되는지 확인을 위한 아래 쿼리 실행한다.

INSERT INTO users (uName, uPw, uDob, uTel, uMail, uAdd, uDtlAdd, agreeYn)
VALUES ('홍길동', AES_ENCRYPT('password123', 'encryption_key'), '1990-01-01', '01012345678', 'hong@example.com', '서울시 강남구', '역삼동', 1);

SELECT * FROM users;

이렇게도 컬럼 수정/추가/삭제 할 수 있어서 보기 참 직관적이다.

profile
기기 좋아하는 여자

0개의 댓글