본문 바로가기
SQL, Database

(SQL) DDL: CREATE / SHOW, DESC / ALTER, RENAME / DROP

by yj-data 2025. 8. 12.

목차


    CREATE

    --데이터베이스 생성
    CREATE DATABASE database_name;
    -- CREATE
    CREATE TABLE table_name (
    	uid INT PRIMARY KEY AUTO_INCREMENT
        , name VARCHAR(50) NOT NULL
        , email VARCHAR(50) NOT NULL UNIQUE
        , age INT DEFAULT 20 CHECK(age >= 20)
        , rdate TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
    
    -- 테이블 생성시에, db선택을 해줘야 생성가능함. 테이블 생성하고, insert해서 값 넣으면 됨.
    -- 다른 db에서 내용 가져와서 넣기 예시
    INSERT INTO country_upper(code, name, population)
    SELECT code, name, population
    FROM country
    WHERE population >= 10000 * 10000;

     

    테이블생성시 필요한 속성  , 데이터타입 , 제약조건

    -- 테이블 생성시 필요한 속성 : 컬럼이름, 데이터타입, 제약조건
    -- 데이터타입 : 저장공간을 효율적으로 사용하기 위해
    -- 제약조건 : 데이터의 무결성(원하지 않는 데이터는 저장 X)을 지키기 위해 사용 

    -- 데이터타입 : 저장공간을 효율적으로 사용하기 위해
    -- - 숫자 : INT, FLOAT, DOUBLE
    -- - 문자 : CHAR(고정길이), VARCHAR(가변길이), TEXT(긴길이)
    -- - 날짜 : DATETIME(직접입력된시간), TIMESTAMP(현재시간)

    -- 제약조건 : 데이터의 무결성(원하지 않는 데이터는 저장 X)을 지키기 위해 사용
    -- - NOT NULL(결측 데이터 X)

    -- - UNIQUE(중복 데이터 X)
    -- - PRIMARY KEY(결측, 중복 데이터 X : ROW를 구별하는 식별자)
    -- - AUTO_INCREMENT(자동으로 1씩 증가)
    -- - DEFAULT(저장하려는 데이터가 없는 경우에 저장되는 데이터 설정)
    -- - CURRENT_TIMESTAMP(현재시간저장)
    -- - CHECK(조건에 맞는 데이터만 저장: 8.0.16 버전 이상 사용가능)


    SHOW / DESC

    -- 테이블 목록 출력
    SHOW TABLES;
    
    -- 데이터베이스 보이기
    SHOW DATABASES;
    
    --table 상세 내용 보기
    DESC database_name.table_name;

    ALTER / RENAME

    --열 추가
    ALTER TABLE table_name ADD (COLUMN) col_name VARCHAR(1000);
    --열 설정 변경(데이터 타입 및 사이즈 변경)
    ALTER TABLE table_name MODIFY COLUMN col_name VARCHAR(100) DEFAULT 'No Data';
    --열 이름 변경
    ALTER TABLE table_name CHANGE COLUMN col_name_now col_name_to_be VARCHAR(1000);
    --열 삭제
    ALTER TABLE table_name DROP (COLUMN) col_name;
    --table이름 바꾸기
    ALTER TABLE table_name_now RENAME table_name_new;

    DROP / TRUNCATE (/DELETE)

    DROP TABLE table_name;
    DROP DATABASE database_name;

    TRUNCATE

    • 데이터만 삭제하는 명령어
    • ROLLBACK 불가하므로 신중하게 사용해야 함
    • 통째로 삭제할때 사용함, 대용량 데이터 삭제 시 빠르게 삭제하는 방법(특정 행 삭제 기능X)
    • DELETE는 롤백이 가능하지만, 삭제 속도가 느림
    • DELETE는 데이터를 삭제하지만 테이블 속성이 그대로 남아있음 / BUT TRUNCATE는 공장 초기화와 같은 기능을 함.

    DROP

    • 테이블과 데이터 모두 깔끔히 삭제
    • 롤백 불가하므로 신중히 사용

    'SQL, Database' 카테고리의 다른 글

    프로그래밍 언어의 종류  (0) 2025.08.13
    DML: INSERT INTO / UPDATE , SET / DELETE FROM  (1) 2025.08.12
    SQL: DDL/DML/DCL 비교  (1) 2025.08.12
    SQL 함수(FUNCTION)  (2) 2025.08.08
    SQL: FK설정하기 / FK 세팅  (3) 2025.08.08