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`;