테이블 다루기 1

순동·2022년 4월 7일
0

📌 DESCRIBE

컬럼 구조, 각 컬럼의 데이터 타입 및 속성을 수정하는 방법에 대해 알아보자.

DESCRIBE문은 테이블의 컬럼 정보를 한 눈에 볼 수 있다.

DESCRIBE 테이블명;
DESC 테이블명;

DESCRIBE student;
DESC student;

  • Field : 컬럼의 이름
  • Type : 컬럼의 데이터 타입
  • Null : Null 속성 유무
  • Key : Primary Key, Unique 속성 여부
  • Defalt : 컬럼의 기본값
  • Extra : AUTO_INCREMENT 등의 기타 속성
  • DESCRIBE를 줄여서 DESC라고 사용해도 된다.

📌 컬럼 추가와 컬럼의 이름 변경

테이블의 컬럼 구조를 바꾸는 방법에 대해 알아보자.

✅ 학생의 성별을 구별하는 gender 컬럼 추가

ALTER TABLE student ADD gender CHAR(1) NULL;
  • ALTER TABLE student : student 테이블을 변경
  • ADD gender : gender 라는 이름의 컬럼을 추가

✅ student_number 컬럼을 registration_number로 이름 변경

ALTER TABLE student
	RENAME COLUMN student_number TO registraion_number;
  • ALTER TABLE student : student 테이블을 변경
  • RENAME COLUMN student_number : student_number 컬럼 이름 변경
  • TO registration_number : registration_number로 변경


📌 컬럼 삭제와 데이터 타입 변경

✅ admission_date 컬럼 삭제

ALTER TABLE student DROP COLUMN admission_date;
  • ALTER TABLE student : student 테이블을 변경
  • DROP COLUMN admission_date : admission_date 컬럼 삭제

✅ major 컬럼의 데이터 타입 변경

현재 major 컬럼의 데이터 타입은 VARCHAR(15)이다.
전공 코드 번호를 담을 수 있도록 INT로 변경하자.

  • 컴퓨터공학과 : 10
  • 멀티미디어학과 : 12
  • 법학과 :
ALTER TABLE student MODIFY major INT;

정수가 아닌 값이 있다는 오류가 발생한다. major 컬럼의 원래 값이 문자열이기 때문이다. 따라서 정수로 바꿔준 후 데이터 타입을 변경해줘야 한다.

SET SQL_SAFE_UPDATES = 0;
UPDATE student SET major = 10 WHERE major = '컴퓨터공학과';
UPDATE student SET major = 12 WHERE major = '멀티미디어학과';
UPDATE student SET major = 7 WHERE major = '법학과';
SET SQL_SAFE_UPDATES = 1;
ALTER TABLE student MODIFY major INT;


📝 UPDATE가 안 될 경우

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.

‘safe update 모드를 사용 중일 때는, KEY column을 사용해서 테이블을 갱신해야 한다.'는 뜻이다. 여기서 KEY column이란 Primary Key를 의미한다.

safe update 모드란, 말 그대로 안전한 갱신을 보장하기 위한 모드로

UPDATE student SET major = 10; 

처럼 모든 row의 특정 컬럼을 갱신해버리는 SQL 문이나,

UPDATE student SET major = 10 WHERE major = ‘컴퓨터공학과’;

처럼 WHERE 절에 Primary Key가 사용되지 않은 UPDATE 문이 실행되지 않도록 한다.

✅ 안전모드 끄기

SET SQL_SAFE_UPDATES = 0;

✅ 안전모드 켜기

SET SQL_SAFE_UPDATES = 1;

✅ 과제 : 컬럼 구조 변경

신발을 관리하기 위해 shoes라는 테이블을 사용하고 있다.

  • a 작업 : name 컬럼의 이름을 model로 수정
  • b 작업 : size 컬럼의 데이터 타입을 INT에서 DOUBLE로 수정
  • c 작업 : brand 컬럼을 삭제
  • d 작업 : stock 컬럼(데이터 타입이 INT이고, NOT NULL 속성을 가진 컬럼) 추가

DESCRIBE 문으로 현재 각 컬럼의 데이터 타입과 속성을 확인하고, 그 다음 위의 4가지 작업을 순서대로 수행하라. 이때 작업 내용에 없는 컬럼의 기존 속성들은 그대로 유지하라.

💻 풀이

ALTER TABLE shoes RENAME COLUMN name TO model;
ALTER TABLE shoes MODIFY size DOUBLE NOT NULL;
ALTER TABLE shoes DROP COLUMN brand;
ALTER TABLE shoes ADD stock INT NOT NULL;

DESCRIBE shoes;

👉 결과


0개의 댓글