[sqld] 3. SQL 기본

주·2022년 4월 3일

SQL개발자자격증

목록 보기
3/4

DML(Data Manipulation Language) 데이터 조작어

INSERT
데이터베이스 객체에 데이터를 입력

DELETE
데이터베이스 객체에 데이터를 삭제

UPDATE
기존에 존재하는 데이터베이스 객체 안의 데이터 수정

SELECT
데이터베이스 객체로부터 데이터를 검색

​

DDL (Data Definition Language) 데이터 정의어

CREATE
데이터베이스 및 객체 생성

DROP
데이터베이스 및 객체 삭제

ALTER
기존에 존재하는 데이터베이스 객체를 변경

​

DCL(Data Control Language) 데이터 제어어

GRANT
데이터베이스 객체에 권한 부여

REVOKE
이미 부여된 데이터베이스 객체의 권한 취소

​

TCL(Transaction Control Language) 트랜잭션 제어어

COMMIT
DML 수행 후 Buffer에 저장 / DDL 수행 후 DB에 저장

ROLLBACK
백업명령어

​

​

​

테이블 칼럼에 대한 정의 변경 (Oracle - SQL Server)

  • Oracle

ALTER TABLE 테이블명
MODIFY ( 칼럼명1 데이터유형 [DEFAULT 식][NOT NULL],
칼럼명2 데이터 유형 ............. );

  • SQL Server

ALTER TABLE 테이블명
ALTER ( 칼럼명1 데이터유형 [DEFAULT 식][NOT NULL],
칼럼명2 데이터 유형 ............. );
💡 SQL Server에서는 여러 개의 컬럼을 동시에 수정할 수 없다. 오라클은 가능

( 세미콜론(;)으로 한 컬럼의 수정 끝내고 다시 수정 구문 작성해야 함)

​

💡 SQL Server에서 괄호를 사용하지 않는다. 오라클은 사용

​

ex)

ALTER TABLE 기관분류 ALTER COLUMN 분류명 VARCHAR(30) NOT NULL;

ALTER TABLE 기관분류 ALTER COLUMN 등록일자 DATE NOT NULL;

​

​


데이터 삭제 /수정 무결성 제약 조건 Action

​

CASCADE : 부모 테이블의 데이터 삭제 시 참조하고 있는 테이블의 컬럼 값이 존재하던 행 전체 삭제

SET NULL : 부모 테이블의 데이터 삭제 시 참조하고 있는 테이블의 컬럼 값이 NULL로 변경 됨

SET DEFAULT : 부모 테이블 데이터 삭제 시 참조하고 있는 테이블의 컬럼 값 DEFAULT값으로 변경 됨

RESTRICT : 자식 테이블에 PK 값이 없는 경우만 부모 테이블 삭제 허용

NO ACTION : 참조무결성을 위반하는 삭제/수정 액션을 취하지 않음

​

​

데이터 입력 무결성 제약 조건 Action

​

AUTOMATIC : 부모 테이블에 PK 값이 없는 경우는 PK를 생성 후 입력

SET NULL : 부모 테이블에 PK 값이 없는 경우는 자식의 외부키를 NULL값으로 처리

SET DEFAULT : 부모 테이블에 PK 값이 없는 경우는 자식의 외부키를 지정된 기본 값으로 입력

DEPENDENT : 부모 테이블에 PK가 존재할 때만 자식 입력 허용

NO ACTION : 참조무결성을 위반하는 입력 액션을 취하지 않음

​


트랜잭션의 특성

​

원자성 (atomicity)

트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다. (all or nothing)

​

일관성 (consistency)

트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용이 잘못이 있으면 안 된다.

​

고립성 (isolation)

트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안 된다.

​

지속성 (durability)

트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.

​

​


BEGIN / SAVE TRANSACTION

​

BEGIN TRANSACTION (=BEGIN TRAN) 으로 트랜잭션을 시작하고, COMMIT TRANSACTION (TRANSACTION은 생략 가능) 또는 ROLLBACK TRANSACTION으로 트랜잭션을 종료한다.

ROLLBACK 구문을 만나면 최초의 BEGIN TRANSACTION 시점까지 모두 ROLLBACK이 수행된다.

​

SAVEPOINT를 정의하면 롤백할 때 트랜잭션에 포함된 전체 작업을 롤백하는 것이 아니라 현 시점에서 SAVEPOINT까지 트랜잭션의 일부만 롤백할 수 있다.

​

[Oracle]
SAVEPOINT SVPT1;
...
ROLLBACK TO SVPT1;

[SQL Server]
SAVE TRANSACTION
SVTR1;
....
ROLLBACK
TRANSACTION
SVTR1;


날짜형 함수

​


NULL 관련 함수

​

NVL or ISNULL (표현식1, 표현식2) 👉🏼 Oracle 함수

: 표현식1의 결과값이 NULL이면 표현식2의 값을 출력한다.

​

NULLIF (표현식1, 표현식2) 👉🏼 SQL Server 함수

: 표현식1이 표현식2와 같으면 NULL을, 같지 않으면 표현식 1을 리턴한다.

​

COALESCE (표현식1, 표현식2, ...) 👉🏼 SQL Server 함수

: 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다.

​

​


ORDER BY 절 특징

​

  1. 기본적인 정렬 순서는 오름차순(ASC)이다.

​

  1. 숫자형 데이터 타입은 오름차순으로 정렬했을 경우에 가장 작은 값부터 출력된다.

​

  1. 날짜형 데이터 타입은 오름차순으로 정렬했을 경우 날짜 값이 가장 빠른 값이 먼저 출력된다.

ex) 2012-01-01 은 2012-12-01보다 먼저 출력된다.

​

  1. Oracle에서는 NULL값을 가장 큰 값으로 간주하여 오름차순으로 정렬했을 경우에는 가장 마지막에, 내림차순으로 정렬했을 경우에는 가장 먼저 위치한다.

​

  1. SQL Server에서는 NULL값을 가장 작은 값으로 간주하여 오름차순으로 정렬했을 경우에는 가장 먼저, 내림차순으로 정렿했을 경우에는 가장 마지막에 위치한다.

​

​

​


SELECT 문장 실행 순서

​

  1. FROM ( 발췌 대상 테이블 참조 )

  2. WHERE ( 발췌 대상 데이터가 아닌 것은 제거 )

  3. GROUP BY ( 행들을 소그룹화 )

  4. HAVING ( 그룹핑된 값의 조건에 맞는 것만 출력 )

  5. SELECT ( 데이터 값을 출력 / 계산 )

  6. ORDER BY ( 데이터 정렬 )

0개의 댓글