CREATE TABLE member_table(
idx INT NOT NULL AUTO_INCREMENT,
아이디 VARCHAR(20) NOT NULL,
이름 VARCHAR(30) NOT NULL,
이메일 VARCHAR(30) NULL,
나이 INT NULL,
PRIMARY KEY(idx,아이디)
) CHARSET=UTF8;
-- 데이터베이스 생성
CREATE DATABASE alter_test;
-- 데이터베이스 사용
USE alter_test;
-- 테이블 생성
MariaDB [alter_test]> CREATE TABLE member_table(
-> idx INT NOT NULL AUTO_INCREMENT,
-> 아이디 VARCHAR(20) NOT NULL,
-> 이름 VARCHAR(30) NOT NULL,
-> 이메일 VARCHAR(30) NULL,
-> 나이 INT NULL,
-> PRIMARY KEY(idx,아이디)
-> ) CHARSET=UTF8;
Query OK, 0 rows affected (0.008 sec)
-- 테이블 생성 확인
MariaDB [alter_test]> SHOW TABLES;
+----------------------+
| Tables_in_alter_test |
+----------------------+
| member_table |
+----------------------+
1 row in set (0.000 sec)
-- 테이블 member_table 속성 확인
MariaDB [alter_test]> DESC member_table;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| idx | int(11) | NO | PRI | NULL | auto_increment |
| 아이디 | varchar(20) | NO | PRI | NULL | |
| 이름 | varchar(30) | NO | | NULL | |
| 이메일 | varchar(30) | YES | | NULL | |
| 나이 | int(11) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
5 rows in set (0.012 sec)
-- 테이블 이름 변경 member_table => member
MariaDB [alter_test]> ALTER TABLE member_table RENAME member;
Query OK, 0 rows affected (0.008 sec)
-- 테이블 이름 변경 확인
MariaDB [alter_test]> SHOW TABLES;
+----------------------+
| Tables_in_alter_test |
+----------------------+
| member |
+----------------------+
1 row in set (0.000 sec)
MariaDB [alter_test]> ALTER TABLE member
-> CHANGE COLUMN `아이디`
-> `userId` VARCHAR(20) NOT NULL;
Query OK, 0 rows affected (0.014 sec)
Records: 0 Duplicates: 0 Warnings: 0
MariaDB [alter_test]> DESC member;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| idx | int(11) | NO | PRI | NULL | auto_increment |
| userId | varchar(20) | NO | PRI | NULL | |
| 이름 | varchar(30) | NO | | NULL | |
| 이메일 | varchar(30) | YES | | NULL | |
| 나이 | int(11) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
5 rows in set (0.013 sec)
-- 문제] * 속성은 기존꺼 그대로 적어줘야한다.
-- 1. 컬럼 이름 (필드이름) 변경 => 이름 -> userName
-- 변경해라
-- 테이블은 멤버이다.
-- 필드 중 이름 필드를 변경하라.
-- userId로 변경하라.
ALTER TABLE member
CHANGE COLUMN `이름`
`userName` VARCHAR(30) NOT NULL;
-- 2. 컬럼 이름 (필드이름) 변경 이메일 -> userEmail
-- 변경해라
-- 테이블은 멤버이다.
-- 필드 중 이메일 필드를 변경하라.
-- userEmail 변경하라.
ALTER TABLE member
CHANGE COLUMN `이메일`
`userEmail` VARCHAR(30) NULL;
-- 3. 컬럼 이름 (필드이름) 변경 나이 -> userAge
-- 변경해라
-- 테이블은 멤버이다.
-- 필드 중 나이 필드를 변경하라.
-- userAge 변경하라.
ALTER TABLE member
CHANGE COLUMN `나이` -- 칸 이름과
`userAge` INT NULL; -- 속성을 변경해라.
-- 컬럼 바뀐 내용 확인하기 [결과확인]
MariaDB [alter_test]> DESC member;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| idx | int(11) | NO | PRI | NULL | auto_increment |
| userId | varchar(20) | NO | PRI | NULL | |
| userName | varchar(30) | NO | | NULL | |
| userEmail | varchar(30) | YES | | NULL | |
| userAge | int(11) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
5 rows in set (0.013 sec)
ALTER TABLE member
MODIFY COLUMN `userId` -- 속성만 변경 (Modify)
VARCHAR(16) NOT NULL;
-- userId 컬럼의 속성 varchar(16)으로 변경
MariaDB [alter_test]>ALTER TABLE member
->MODIFY COLUMN `userId`
->VARCHAR(16) NOT NULL;
Query OK, 0 rows affected (0.017 sec)
Records: 0 Duplicates: 0 Warnings: 0
-- 결과 확인
MariaDB [alter_test]> DESC member;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| idx | int(11) | NO | PRI | NULL | auto_increment |
| userId | varchar(16) | NO | PRI | NULL | |
| userName | varchar(30) | NO | | NULL | |
| userEmail | varchar(30) | YES | | NULL | |
| userAge | int(11) | YES | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
5 rows in set (0.012 sec)
-- 문제]
-- 1. userName : varchar(30) => varchar(10)
ALTER TABLE member
MODIFY COLUMN `userName`
VARCHAR(10) NOT NULL;
-- 2. userEmail : varchar(30) => varchar(100)
ALTER TABLE member
MODIFY COLUMN `userEmail`
VARCHAR(100) NULL;
-- 3. userAge : 빈값 허용 => 빈값 허용 안함
ALTER TABLE member
MODIFY COLUMN `userAge`
INT NOT NULL;
-- 결과 확인
MariaDB [alter_test]> DESC member;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| idx | int(11) | NO | PRI | NULL | auto_increment |
| userId | varchar(16) | NO | PRI | NULL | |
| userName | varchar(10) | NO | | NULL | |
| userEmail | varchar(100) | YES | | NULL | |
| userAge | int(11) | NO | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
5 rows in set (0.010 sec)
-- 주소 필드 추가
-- userAddr 가변문자열250자 빈값허용
-- userAddr VARCHAR(250) NULL
ALTER TABLE member
ADD COLUMN `userAddr`
VARCHAR(250) NULL;
MariaDB [alter_test]> ALTER TABLE member
-> ADD COLUMN `userAddr`
-> VARCHAR(250) NULL;
Query OK, 0 rows affected (0.009 sec)
Records: 0 Duplicates: 0 Warnings: 0
-- 테이블 구조 확인
MariaDB [alter_test]> DESC member;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| idx | int(11) | NO | PRI | NULL | auto_increment |
| userId | varchar(16) | NO | PRI | NULL | |
| userName | varchar(10) | NO | | NULL | |
| userEmail | varchar(100) | YES | | NULL | |
| userAge | int(11) | NO | | NULL | |
| userAddr | varchar(250) | YES | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
6 rows in set (0.011 sec)
-- 테이블 필드 맨위에 추가
-- userBunho 숫자 빈값허용안함
-- 맨 위에 추가하라
-- 변경
ALTER -- 변경해라.
TABLE member -- member 테이블을
ADD COLUMN -- 칸(컬럼)을 추가(ADD)해라.
`userBunho` INT NOT NULL -- 필드이름 userBunho 숫자 빈값허용안함
FIRST; -- 위치는 맨위에(FIRST)
MariaDB [alter_test]> ALTER TABLE member ADD COLUMN `userBunho` INT NOT NULL FIRST;
Query OK, 0 rows affected (0.011 sec)
Records: 0 Duplicates: 0 Warnings: 0
-- 테이블 구조 확인
MariaDB [alter_test]> DESC member;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| userBunho | int(11) | NO | | NULL | |
| idx | int(11) | NO | PRI | NULL | auto_increment |
| userId | varchar(16) | NO | PRI | NULL | |
| userName | varchar(10) | NO | | NULL | |
| userEmail | varchar(100) | YES | | NULL | |
| userAge | int(11) | NO | | NULL | |
| userAddr | varchar(250) | YES | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
7 rows in set (0.011 sec)
-- 지정필드 다음에 추가
-- userPw 가변문자열(16) 빈값허용안함
-- userId 와 userName 사이에 추가하라 ( userId 아래에)
-- 변경
ALTER -- 변경해라.
TABLE member -- member 테이블을
ADD COLUMN -- 칸(컬럼)을 추가(ADD)해라.
`userPw` VARCHAR(16) NOT NULL -- 필드이름 userPw 가변문자열(16) 빈값허용안함
AFTER `userId`; -- 위치는 userId 아래에 추가
ALTER TABLE member ADD COLUMN `userPw` VARCHAR(16) NOT NULL AFTER `userId`;
MariaDB [alter_test]> ALTER TABLE member ADD COLUMN `userPw` VARCHAR(16) NOT NULL AFTER `userId`;
Query OK, 0 rows affected (0.012 sec)
Records: 0 Duplicates: 0 Warnings: 0
-- 테이블 구조 결과 확인
MariaDB [alter_test]> DESC member;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| userBunho | int(11) | NO | | NULL | |
| idx | int(11) | NO | PRI | NULL | auto_increment |
| userId | varchar(16) | NO | PRI | NULL | |
| userPw | varchar(16) | NO | | NULL | |
| userName | varchar(10) | NO | | NULL | |
| userEmail | varchar(100) | YES | | NULL | |
| userAge | int(11) | NO | | NULL | |
| userAddr | varchar(250) | YES | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
8 rows in set (0.012 sec)
-- 맨위에 `userBunho` 컬럼(칸)을 삭제하라.
ALTER -- 변경해라.
TABLE member -- member 테이블을
DROP COLUMN -- 컬럼(칸)을 삭제해라.
`userBunho`; -- userBunho 을 삭제
ALTER TABLE member DROP COLUMN `userBunho`;
MariaDB [alter_test]> ALTER TABLE member DROP COLUMN `userBunho`;
Query OK, 0 rows affected (0.012 sec)
Records: 0 Duplicates: 0 Warnings: 0
-- 테이블 구조 결과 확인
MariaDB [alter_test]> DESC member;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| idx | int(11) | NO | PRI | NULL | auto_increment |
| userId | varchar(16) | NO | PRI | NULL | |
| userPw | varchar(16) | NO | | NULL | |
| userName | varchar(10) | NO | | NULL | |
| userEmail | varchar(100) | YES | | NULL | |
| userAge | int(11) | NO | | NULL | |
| userAddr | varchar(250) | YES | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
7 rows in set (0.010 sec)
번외+