테이블 다루기 3

순동·2022년 4월 13일

📌 테이블 이름 변경, 복사본 만들기, 삭제

✅ student 테이블의 이름을 undergradyate로 변경

RENAME TABLE student TO undergraduate;

코드 실행 후 새로고침 버튼을 누르면 테이블 이름이 변경되어 있다.

✅ 테이블 복사본 만들기

CREATE TABLE copy_of_undergraduate AS SELECT * FROM undergraduate;
  • CREATE TABLE : 테이블을 생성하라
  • AS SELECT * FROM : 어떤 테이블에서 row들을 갖고 와서 테이블을 만들지 설정

undergraduate 테이블과 똑같은 테이블을 하나 더 만들겠다는 뜻이다.

✅ 복사본 테이블 삭제

DROP TABLE copy_of_undergraduate;
  • DROP TABLE : 테이블을 삭제하라

📌 테이블 컬럼 구조만 복사

row들을 제외한 컬럼 구조만 복사하여 새로운 테이블을 만들어보자.

✅ undergraduate 테이블의 컬럼 구조만 복사

CREATE TABLE copy_of_undergraduate LIKE undergraduate;

✅ 위 상태에서 undergraduate의 row들도 가져오기

INSERT INTO copy_of_undergraduate SELECT * FROM undergraduate;

모든 row들을 가져오게 된다.

이런 방식으로 row들을 추가할 경우엔 두 테이블의 컬럼 구조가 일치해야 한다. ❗

✅ 모든 row가 아닌 전공이 미지정인 row만 가져오기

INSERT INTO copy_of_undergraduate
	SELECT * FROM undergraduate WHERE major = 101;

major = 101 : 전공이 없는 학생들에게 기본값으로 101을 부여 했기 때문


📌 INSERT INTO 문과 서브쿼리

앞서 작성한 SQL문을 다시 보자.

INSERT INTO copy_of_undergraduate SELECT * FROM undergraduate;

SELECT * FROM undergraduate : 해당 SELECT문이 돌려주는 row들을 그대로 copy_of_undergraduate 테이블에 추가해주는 SQL문이다.

SQL문에서 하나의 부품처럼 사용되는 SELECT문을 서브쿼리(Subquery)라고 한다.

위처럼 INSERT INTO 문에서 서브쿼리를 사용하는 것도 가능하다.


📌 TRUNCATE로 데이터 날리기

기존 테이블을 전부 다 삭제하고, 같은 테이블에서 다시 시작하고 싶을 때가 있을 수도 있다.

  • DELETE
  • TRUNCATE

기말고사 성적을 나타내는 final_exam_result 테이블이 있다고 가정하자.

SELECT * FROM final_exam_result;

✅ 위 테이블의 모든 row들을 삭제

DELETE FROM final_exam_result;
TRUNCATE final_exam_result;


✅ 과제 : 기존 테이블로 새 테이블 만들기

모바일 앱 배타버전을 출시하여 사용자들의 리뷰를 beta_review 테이블에 저장했다.

이 중에서 특히 20세 이상 30세 미만의 회원들이 남긴 리뷰들만 따로 beta_review_20s라는 이름의 테이블로 저장해두려고 합니다.

이 테이블의 컬럼 구조와 똑같은 구조를 가진 테이블을 새로 만들고, 거기에 20대가 남긴 리뷰만 넣어라.

CREATE TABLE beta_review_20s LIKE beta_review;
INSERT INTO beta_review_20s
    SELECT * FROM beta_review WHERE age BETWEEN 20 AND 29;

SELECT * FROM beta_review_20s;

0개의 댓글