[SQLD] #6. SQL 기본 - 관계형 데이터베이스 개요/DDL/DML/TCL

김정인·2021년 1월 21일
2

SQLD

목록 보기
6/16

관계형 데이터베이스 개요

💡 데이터베이스

    특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장해 놓은 것

💡 관계형 데이터베이스

1) 정규화를 통해 이상현상 및 중복 데이터 제거
2) 동시성 관리와 병행 제어를 통해 데이터 동시 조작 가능

💡 DBMS(Database Management System)

    효율적인 데이터 관리 뿐만 아니라 예기치 못한 사건으로 인한 데이터의 손상을 피하고, 필요시 필요한 데이터를 복구하기 위한 강력한 기능의 시스템

💡 SQL(Structured Query Language)

    관계형 데이터베이스에서 데이터 정의, 조작, 제어를 위해 사용하는 언어

종류설명명령어
DML (Data Manipulation Language)데이터 조작어SELECT, INSERT, UPDATE, DELETE
DDL (Data Definition Language)데이터 정의어CREATE, ALTER, DROP, RENAME
DCL (Data Control Language)데이터 제어어GRANT, REVOKE
TCL (Transaction Control Language)트랜잭션 제어어COMMIT, ROLLBACK

DDL (Data Definition Language)

💡 데이터 유형

데이터 유형설명기타
CHAR(s)고정 길이 문자열 정보‘AA’ = ‘AA  ’
VARCHAR(s)가변 길이 문자열 정보‘AA’ != ‘AA  ’
NUMERIC정수, 실수 등 숫자 정보
DATETIME날짜와 시각 정보

💡 CREATE TABLE

CREATE TABLE 테이블이름 (
칼럼명1 DATATYPE [DEFAULT 형식],
칼럼명2 DATATYPE [DEFAULT 형식],
칼럼명2 DATATYPE [DEFAULT 형식]
) ;
  • 테이블 명은 다른 테이블의 이름과 중복 x
  • 테이블 내의 칼럼명은 중복 x
  • 각 칼럼들은 , 로 구분 ; 로 끝
  • 칼럼 뒤에 데이터 유형은 반드시 지정
  • 테이블명과 칼럼명은 반드시 문자로 시작
  • A-Z,a-z,0-9,_,$,#만 사용 가능
  • DATETIME 데이터 유형에는 별도로 크기를 지정x

💡 CREATE TABLE - 제약조건

구분설명
PRIMARY KEY- 기본키
- 하나의 테이블에 한 개만 지정 가능. 자동으로 UNIQUE 인덱스 생성
- NULL값 입력 불가 ( 기본키 제약 = 고유키 & NOT NULL 제약 )
UNIQUE KEY- 행을 고유하게 식별하기 위한 고유키
- NULL 가능
NOT NULLNULL 값 입력 금지.
CHECK- 입력할 수 있는 값의 범위 등을 제한
- TRUE or FALSE 논리식을 지정
FOREIGN KEY- 외래키
- 참조 무결성 옵션 선택 가능

💡 ALTER TABLE

  • ADD COLUMN 기존 테이블에 칼럼 추가
ALTER TABLE 테이블명
ADD 추가할 칼럼명 데이터 유형;
  • DROP COLUMN 테이블에서 필요 없는 칼럼을 삭제
       데이터가 있거나없거나 모두 삭제 가능하다. 한 번에 하나의 칼럼만 삭제 가능하며, 칼럼 삭제 후 최소 하나 이상의 칼럼이 테이블에 존재해야 한다. 주의할 부분은 한 번 삭제된 칼럼은 복구가 불가능하다.
ALTER TABLE 테이블명
DROP COLUMN 삭제할 칼럼명;
  • MODIFY COLUMN 칼럼의 데이터 유형, 디폴트 값, NOT NULL
    제약조건에 대한 변경
ALTER TABLE 테이블명
MODIFY (칼럼명1 데이터 유형 [DEFAULT 식] [NOT NULL],
칼럼명2 데이터 유형 …);
  • ADD CONSTRAINT 테이블 생성 이후에 제약조건 추가
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 제약조건 (칼럼명);

💡 RENAME TABLE

ALTER TABLE 테이블명
RENAME COLUMN 변경해야할 컬럼명 TO 새로운 컬럼명;

💡 DROP TABLE

    테이블의 모든 데이터 및 구조 삭제. CASCADE CONSTRAIN 옵션은 해당 테이블과 관계가 있었던 참조되는 제약조건에 대해서도 삭제한다는 뜻, 복구X

ALTER TABLE 테이블명 DROP COLUMN 삭제할 컬럼명;

💡 TRUNCATE TABLE

    테이블 자체가 삭제되는 것이 아니고, 해당테이블에 들어있던 모든 행들이 제거되는 것(데이터만 제거). 기존에 사용하던 테이블의 모든 로우를 제거하기 위한 명령어

TRUNCATE TABLE 테이블명 DROP COLUMN 삭제할 컬럼명;

DML (Data Manipulation Language)

    DDL 명령어의 경우 실행시 AUTO COMMIT 하지만 DML의 경우 COMMIT을 입력해야 한다. 단, SQL Server의 경우 DML도 AUTO COMMIT

💡 INSERT

INSERT INTO 테이블명 (COLUMN_LIST)
VALUES (COLUMN_LIST에 넣을 VALUE_LIST);
INSERT INTO 테이블명
VALUES (전체 COLUMN에 넣을 VALUE_LIST);

💡 UPDATE

UPDATE 테이블명
SET 수정되어야 할 칼럼명 = 수정되기를 원하는 새로운 값;

💡 DELETE

    WHERE 절을 사용하지 않는다면 테이블의 전체 데이터가 삭제

DELETE [FROM] 삭제를 원하는 정보가 들어있는 테이블명;

💡 SELECT

SELECT [ALL/DISTINCT] 보고 싶은 칼럼명, 보고 싶은 칼럼명, ...
FROM 해당 칼럼들이 있는 테이블명;

- ALL : Default 옵션이므로 별도로 표시하지 않아도 된다. 중복된 데이터가 있어도 모두
출력한다.
- DISTINCT : 중복된 데이터가 있는 경우 1건으로 처리해서 출력한다.
- ALIAS 부여 : 조회된 결과에 별명(ALIAS, ALIASES)을 부여하여 칼럼 레이블은 변경 가능. 칼럼명 바로 뒤에 온다. 칼럼명과 ALIAS 사이에 AS 키워드 사용 가능 (선택)

TCL (Transaction Control Language)

💡 트랜잭션

    DB의 논리적 연산 단위, 하나 이상의 SQL문을 포함

  • 원자성(Atomicity): 전부 실행되거나 전혀 실행되지 않음 (All or Nothing)
  • 일관성(Consistency): 트랜잭션으로 인한 DB 상태의 모순이 없음
  • 고립성(Isolation): 부분적인 실행 결과에 다른 트랜잭션이 접근할 수 없음, LOCKING으로 고립성 보장
  • 영속성(Durability): 트랜잭션의 결과는 영구적으로 저장됨

💡 COMMIT

    올바르게 반영된 데이터를 데이터베이스에 반영시키는 것

  • 데이터에 대한 변경 사항이 데이터베이스에 반영된다.
  • 이전 데이터는 영원히 잃어버리게 된다.
  • 모든 사용자는 결과를 볼 수 있다.
  • 관련된 행에 대한 잠금(LOCKING)이 풀리고, 다른 사용자들이 행을 조작할 수 있게 된다.

💡 ROLLBACK

    트랜잭션 시작 이전의 상태로 되돌리는 것

  • 데이터에 대한 변경 사항은 취소된다.
  • 이전 데이터는 다시 재저장된다.
  • 관련된 행에 대한 잠금(LOCKING)이 풀리고, 다른 사용자들이 행을 조작할 수 있게 된다.

💡 SAVEPOINT

    저장점(SAVEPOINT)을 정의하면 롤백(ROLLBACK)할 때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백

SAVEPOINT SVPT1;
저장점이 생성되었다.

INSERT INTO PLAYER
(PLAYER_ID, TEAM_ID, PLAYER_NAME, POSITION, HEIGHT, WEIGHT, BACK_NO)
VALUES ('1999035', 'K02', '이운재', 'GK', 182, 82, 1);
1개의 행이 만들어졌다.

ROLLBACK TO SVPT1;
롤백이 완료되었다.

데이터 전문가 지식포털 참고

0개의 댓글