멋쟁이v의 개발일지

[DB] 데이터 언어(DDL, DML, DCL) + TCL 본문

0년차/DB

[DB] 데이터 언어(DDL, DML, DCL) + TCL

멋쟁이v 2023. 4. 13. 21:27
728x90
320x100

[목차]


01. 데이터 정의어(DDL)

💡
데이터베이스를 구축하거나 수정할 목적으로 사용하는 언어입니다.

명령어를 입력하는 순간 작업이 즉시 반영(Auto Commit) 되므로 사용시 주의

  • 명령어

    ➡️ CREATE : 데이터베이스 객체(스키마, 테이블, 뷰 등) 생성

    -- 데이터베이스 생성
    CREATE DATEBASE ‘DB명’;
    
    -- 테이블 생성
    CREATE TABLE ‘테이블명’ (
         ’속성명’ 타입,
         …
    )

    ➡️ ALTER : 테이블 구조 변경

    • 종류 : ADD, ALTER, RENAME. MODIFY, DROP
    -- 컬럼 추가
    ALTER TABLE ‘테이블명’ ADD COLUMN ‘컬럼명’ ‘속성값’;
    
    -- 컬럼 삭제
    ALTER TABLE ‘테이블명’ DROP COLUMN ‘컬럼명’;
    
    -- 컬럼 이름 변경
    ALTER TABLE ‘테이블명’ CHANGE COLUMN ‘컬럼명’ ‘새로운 컬럼명’ 속성값;
    
    -- 테이블 이름 변경
    ALTER TABLE ‘테이블명’ RENAME ‘새로운 테이블명’;

    ➡️ DROP : 데이터베이스 객체 삭제

    • 종류 : CASCADE, RESTRICT
    -- 데이터베이스 삭제
    DROP DATABASE ‘데이터베이스 명’;
    
    -- 테이블 삭제
    DROP TABLE ‘테이블명’;

    ➡️ SHOW : 데이터베이스 또는 테이블 목록을 조회

    -- 데이터베이스 목록 조회
    SHOW DATABASES;
    
    -- 테이블 목록 조회
    SHOW TABLES;

    ➡️ USE : 데이터베이스 중 특정 데이터베이스를 사용하고 싶을 때

    USE (데이터베이스 명);

02. 데이터 조작어(DML)

💡
데이터베이스 사용자가 저장된 데이터를 관리하는데 사용하는 언어입니다.
  • 명령어

    ➡️ SELECT : 테이블에서 데이터 검색

    • 종류 : LIKE, ORDER BY
    -- SELECT 선택한 컬럼 출력
    -- FROM 검색할 테이블 지정
    SELECT (컬럼명)  -- 컬럼명에 *을 작성하면 모든 컬럼 출력
    FROM (테이블명);
    
    
    -- DISTINCT 컬럼의 중복 제거
    SELECT DISTINCT (중복 제거할 컬럼명)
    FROM (테이블명);
    
    
    -- GROUP BY ~ HAVING 데이터를 그룹화
    -- 내장 함수를 이용한 GROUP BY 사용
    -- 특정 컬럼 COL에 대해 데이터의 개수 출력
    SELECT COL, COUNT(*) FROM myData GROUP BY COL;
    -- 특정 컬럼 COL1에 대해 COL2의 합계 출력
    SELECT COL1, SUM(COL2) FROM myData GROUP BY COL1;
    -- 특정 컬럼 COL1에 대해 COL2의 평균 출력
    SELECT COL1, AVG(COL2) FROM myData GROUP BY COL1;
    -- 특정 컬럼 COL1에 대해 COL2의 최대값 출력
    SELECT COL1, MAX(COL2) FROM myData GROUP BY COL1;
    -- 특정 컬럼 COL1에 대해 COL2의 최소값 출력
    SELECT COL1, MIN(COL2) FROM myData GROUP BY COL1;
    
    
    --WHERE 조건 설정
    SELECT (컬럼명) FROM (테이블명)
    WHERE (조건);
    
    
    -- 데이터 그룹에 조건 적용
    -- 특정 컬럼 COL에 대해 데이터 개수를 기준으로 그룹화를 하되, 개수가 1보다 큰 경우만 출력
    SELECT COL, COUNT(*) FROM myData
    GROUP BY COL HAVING COUNT(COL) > 1;
    
    
    -- LIKE는 주로 WHERE과 함께 사용되며, 아래 예시와 같이 사용되는 퍼센트 기호(%)는 '와일드 카드'라고 부른다.
    SELECT (컬럼명)
    FROM (테이블명)
    WHERE (컬럼명) LIKE (찾으려는 레코드의 일부 또는 전체);
    -- 와일드 카드(%) 이용 예시 
    WHERE (컬럼명) LIKE '%(문자열)';  -- 작성한 문자열로 끝나는 레코드 검색
    WHERE (컬럼명) LIKE '(문자열)%';  -- 작성한 문자열로 시작하는 레코드 검색
    WHERE (컬럼명) LIKE '%(문자열)%';  -- 작성한 문자열을 포함하는 레코드 검색
    
    
    -- ORDER BY는 데이터를 검색할 때, 정렬된 결과로 출력하는 명령어이다. 아래와 같이 사용된다.
    SELECT (컬럼명)
    FROM (테이블명)
    ORDER BY (컬럼명) ASC/DESC;  -- 오름차순(작은 값부터)/내림차순(큰 값부터). 생략하면 오름차순이 디폴트

    ➡️ INSERT : 테이블에 새로운 데이터 삽입

    INSERT INTO (테이블명)(COL1, COL2, COL3)  -- 테이블의 각 컬럼명. 컬럼 개수와 값 개수는 같아야 한다.
    VALUES(VAL1, VAL2, VAL3);
    -- 앞에 적은 컬럼 순서에 맞게 추가할 값을 작성.
    -- 앞에 컬럼을 명시하지 않으면 VALUES에서 작성한 값 순서대로 각 컬럼에 삽입

    ➡️ UPDATE : 테이블에 존재하는 데이터 내용 수정

    UPDATE (테이블명)
    SET (컬럼명) = '대체/수정된 값'
    WHERE (조건);

    ➡️ DELETE : 테이블에 존재하는 데이터 삭제

    DELETE
    FROM (테이블명)
    WHERE (조건);  -- WHERE 조건이 없는 경우는 해당 테이블의 모든 데이터 삭제

03. 데이터 제어어(DCL)

💡
데이터 관리 목적으로 데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는데 사용하는 언어입니다.

데이터베이스 관리자(DBA)가 사용한다.

  • 명령어

    ➡️ GRANT : 사용자에게 사용 권한 부여

    • 종류 : ALL, SELECT, INSERT, DELETE, UPDATE 등
    -- 권한부여
    GRANT [권한] ON [DB].[TABLE] TO [유저_ID]@[호스트];
    
    -- 사용자 등록 및 권한부여
    GRANT [권한] ON [DB].[TABLE] TO [유저_ID]@[호스트] IDENTIFIED BY '비밀번호';
    
    -- 권한 확인
    SHOW GRANTS FOR [유저_ID]@[호스트];
    
    -- 테이블의 모든 권한 부여
    GRANT ALL PRIVILEGES ON (table 명)  TO 사용자명;

    ➡️ REVOKE : 사용자의 사용 권한 취소

    -- 권한취소
    REVOKE [권한] ON [DB].[TABLE] FROM [유저_ID]@[호스트]

04. 트랜잭션 제어어(TCL)

💡
트랙잭션(논리적 작업 단위)을 제어하는데 사용하는 언어입니다.

DML에 의해 조작된 결과를 트랙잭션이 별도 제어한다.

DCL의 일부로 분류하기도 한다.

  • 명령어

    ➡️ COMMIT : 트랙잭션 처리가 정상적으로 완료된 후 결과를 데이터베이스에 반영

    ➡️ ROLLBACK : 트랙잭션 처리 과정에서 변경 되었으나 아직 COMMIT 되지 않은 모든 내용을 취소

    ➡️ SAVEPOINT : 트랙잭션 내에 ROLLBACK할 위치를 지정

    SAVEPOINT T1; // 포인트 지점 설정
    INSERT INTO play (ID, NAME, NO) VALUES ( 1, '가', 1000);
    SAVEPOINT T2; // 포인트 지점 설정
    INSERT INTO play (ID, NAME, NO) VALUES ( 2, '나', 2000);
    ROLLBACK TO T2; // 2번 포인트 지점의 작업을 취소
    COMMIT; // 작업 완료(저장)
    SELECT * from PLAY; // 결과 T1 지점 데이터만 출력


tag : #언어 #DDL #DML #DCL #TCL


Uploaded by N2T

728x90
320x100
Comments