본문 바로가기
프로그래밍/SQLD

[SQLD] SQL 기본 - 1

by kastori 2022. 3. 12.
반응형

 

SQL 기본

 
 

- 관계형 데이터베이스 개요
-DDL, DML, DCL, TCL

관계형 데이터베이스 개요

1. 데이터 베이스

 특정 기업이나 조직 또는 개인이 필요에 의해 공유하고 사용할 목적으로 통합 관리되는 데이터를 일정한 형태로 저장한 것

2. SQL

 관계형 데이터베이스 관리 시스템(DMBS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어

명령어의 종류 명령어 설명
데이터 조작어(DML) SELECT 데이테베이스에 들어 있는 데이터를 조회, 검색
INSERT
UPDATE
DELETE
데이터베이스의 테이블에 들어 있는 데이터를 변형을 가하는 종류의 명령어
데이터 정의어(DDL) CREATE
ALTER
DROP
RENAME
데이틀과 같은 데이터 구조를 정의하는데 사용되는 명령어
데이터 제어어(DCL) GRANT
REVOKE
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어
트랙잰션 제어어(TCL) COMMIT
ROLLBACK
논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를
작업단위(트랜잭션) 별로 제어하는 명령어

 

DDL

1. 데이터 유형

데이터 유형 설명
CHARACTER(s)
- 고정 길이 문자열 정보(Oracle, SQL Server 모두 CHAR로 표현)
- s는 기본 길이 1바이트, 최대 길이 Orcale 2,000바이트, SQL Server 8,000바이트
- s만큼 최대 길이르 ㄹ갖고 고정 길이를 가지고 있으므로  할당된 변수 값이 길이가 s보다 작을 경우에는
   그 차이 길이만큼 공간으로 채워진다

VARCHAR(s)
- CHARACTER VARYING의 약자로 가변 길이 문자열 정보(Oracle VARCHAR2, SQL Server VARCHER)
- s는 최소 길이 1바이트, 최대 길이 Oracle 4,000바이트, SQL Server 8,000바이트
- s만큼의 최대 길이를 갖지만 가변 길이로 조정이 되기 때문에 할당된 변수값의 바이트만 적용(Limit 개념)

NUMERIC
- 정수, 실수 등 숫자 정보(Oracle NUMBER, SQL Server는 10가지 이상의 숫자 타입 가지고 있음)
- Oracle은 처음에 전체 자리 수를 지정하고, 그다음 소수 부분의 자리 수를 지정
  예를들어, 정수 부분이 6자리고 소수점 부분이 2자리인 경우에는 'NUMBER(8,2)' 와 같이 된다.

DATETIME
- 날짜와 시각 정보(Oracle DATE, SQL Server DATETIME)
- Oracle은 1초 단위, SQL Server는 3.33ms 단위 관리

2. CREATE TABLE

CREATE TABLE 테이블 이름(
	칼럼명 DATATYPE [DEFAULT 형식],
 	칼럼명 DATATYPE [DEFAULT 형식],
	칼럼명 DATATYPE [DEFAULT 형식],
)

-- 예제
create table emp(
  empno    number,
  ename    varchar2(10),
  job      varchar2(9),
  mgr      number(4,0),
  hiredate date,
  sal      number(7,2),
  comm     number(7,2),
  deptno   number,
  constraint pk_emp primary key (empno),
  constraint fk_deptno foreign key (deptno) references dept (deptno)
);

- 제약 조건(CONSTRAINT)

  사용자가 원하는 조건의 데이터만 유지하기 위한 방법

종류 설명 예시
NOT NULL 해당 컬럼에 NULL값이 들어오지 못하게 함 컬럼명 데이터타입 NOT NULL
UNIQUE NULL은 허용
중복은 불가능
컬럼명 데이터타입 UNIQUE
CONSTRAINTS 제약조건명 UNIQUE(컬럼명, ...)
PRIMARY KEY 기본키
NULL, 중복 불가능(UNIQUE + NOT NULL)
테이블당 1개의 기본키만 생성
컬럼명 데이터타입 PRIMARY KEY
CONSTRAINTS 제약조건명 PRIMARY KEY(컬럼명,...)
FOREIGN KEY 테이블 간의 참조 데이터 무결성을 위한 제약 조건
NULL 가능, 타 테이블의 PRIMARY KEY여야하고,
해당 테이블의 컬럼에 삽입되지 않은 값은 사용 불가
CONSTRAINT 외래키명 FOREIGN KEY(컬럼명, ...)
REFERENCES 참조테이블(참조테이블 컬럼명, ...)
CHECK 특정 범위 혹은 특정 값만 들어올 수 있게 함 CONSTRAINT 체크명 CHECK(체크조건)
DEFAULT NULL 값이 들어올 시 지정된 값을 삽입함 컬럼명 데이터타입 DEFAULT 값

- SELECT 문장을 통한 테이블 생성

CREATE TABLE ~ AS SELECT ~

SELECT ~ INTO ~

- 기존테이블의 제약조건 중 NOT NULL만 새로운 복제테이블에 적용됨

3. ALTER TABLE

ALTER TABLE 테이블명 ADD 속성_이름 데이터타입 [DEFAULT];   //추가
ALTER TABLE 테이블명 ALTER 속성_이름[SET DEFAULT];      //속성명 변경
ALTER TABLE 테이블명 DROP 속성_이름[CASCADE | RESTRICT];//속성 삭제

- DROP CLUMN: 데이터가 있거나 없거나 모두 삭제 가능. 한번에 하나의 칼럼만 삭제 가능.
- MODIFY COLUMN, RENAME COLUMN
- DROP CONSTRAINT: 테이블 생성 시 부여했던 제약조건을 삭제하는 명령어
- ADD CONSTRAINT: 테이블 생성 이후에 필요에 의해서 제약조건을 추가

4. RENAME TABLE

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

5. DROP TABLE

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

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

6. TRUNCATE TABLE

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

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

 

DML

1. SELECT

SELECT 컬럼명 FROM 테이블명 WHERE 조건;

2. INSERT

INSERT INTO 테이블명(컬럼1, 컬럼2, ..) VALUES (값1, 값2, ..)
INSERT INTO 테이블명 VALUES(값1, 값2, 값3, ...)

 

3. UPDATE

UPDATE 테이블명 SET 컬럼명 = 변경할 값 WHERE 조건;

 

4. DELETE

DELETE FROM 테이블명 WHERE 조건;

 

 

TCL

1. 트랜잭션이란?

데이터베이스의 논리적 연산 단위

2. 트랜젝션 특성

특성 설명
원자성(atomicity) 트랜잭션에서 정의된 연산자들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야한다.(all or nothing)
일관성(consistency) 트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다.
고립성(isolation) 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
지속성(durability) 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

3. COMMIT

 - Oracle은 DML문장 수행 후 사용자가 임의로 COMMIT 또는 ROLLBACK 수행해줘야함
- SQL Server는 기본적으로 AUTO COMMIT

4. ROLLBACK

- 트랜젝션으로 인한 하나의 묶음 처리가 시작디기 이전의 상태로 되돌린다.
- 이전 COMMIT한 곳 까지만 복구

5. SAVEPOINT

- 현재의 트랜젝션을 작게 분할하는 명령어
- 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다.

SAVEPOINT 세이브포인트명;
ROLLBACK TO 세이브포인트명;

 

반응형

'프로그래밍 > SQLD' 카테고리의 다른 글

[SQLD][1과목] 데이터모델링의 이해  (0) 2022.03.07

댓글