Database

테이블

TaeYeong 2023. 2. 14. 16:39
  • 테이블 생성
CREATE TABLE `teams`
(
    `id`   BIGINT(20) AUTO_INCREMENT,
    `name` VARCHAR(50) NOT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY (`name`)
) ENGINE = InnoDB
  CHARSET = utf8mb4
  COLLATE = utf8mb4_unicode_ci;

CREATE TABLE `users`
(
    `id`       BIGINT(20) AUTO_INCREMENT,
    `name`     VARCHAR(20) NOT NULL,
    `email`    VARCHAR(50) NOT NULL,
    `nickname` VARCHAR(50) NOT NULL DEFAULT 'Anonymous',
    `password` VARCHAR(50) NOT NULL,
    PRIMARY KEY (`id`),
    CONSTRAINT `unq_email` UNIQUE KEY (`email`),
    CONSTRAINT `unq_nickname` UNIQUE KEY (`nickname`),
    INDEX `idx_name` (`name`)
) ENGINE = InnoDB
  CHARSET = utf8mb4
  COLLATE = utf8mb4_unicode_ci;

CREATE TABLE `members`
(
    `user_id` BIGINT(20) NOT NULL,
    `team_id` BIGINT(20) NOT NULL,
    PRIMARY KEY (`user_id`, `team_id`),
    FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
    FOREIGN KEY (`team_id`) REFERENCES `teams` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB
  CHARSET = utf8mb4
  COLLATE = utf8mb4_unicode_ci;

 

  • 컬럼 추가

1. 맨 뒤에 추가

ALTER TABLE `users` ADD `phone_number` VARCHAR(20) NOT NULL;

2. 맨 앞에 추가

ALTER TABLE `users` ADD `phone_number` VARCHAR(20) NOT NULL FIRST;

3. 지정 컬럼 다음에 추가

ALTER TABLE `users` ADD `phone_number` VARCHAR(20) NOT NULL AFTER `password`;

 

  • 컬럼 삭제
ALTER TABLE `users` DROP `phone_number`;

 

  • 컬럼 순서 바꾸기

`nickname` 컬럼을 `id` 컬럼 뒤로 이동

ALTER TABLE `users` MODIFY COLUMN `nickname` VARCHAR(50) NOT NULL AFTER `id`;

첫번째 위치로 이동

ALTER TABLE `users` MODIFY COLUMN `nickname` VARCHAR(50) NOT NULL FIRST;

 

  • 인덱스 생성
CREATE INDEX `idx_username` ON `users` (`username`);

 

  • 인덱스 조회
SHOW INDEX FROM `users`;

 

  • 인덱스 삭제
ALTER TABLE `users` DROP INDEX `idx_nickname`;