[sqld] 3. SQL 기본

·2022년 4월 3일
0

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개의 댓글