자격증

[SQLD] 1. SQL 기본

Rosie_dev 2021. 11. 18. 21:06

SQL의 명령어

데이터 조작어(DML, Data Manipulation Language): SELETE, INSERT, UPDATE, DELETE

데이터 정의어(DDL, Data Definition Language): CREATE, ALTER, DROP, RENAME

데이터 제어어(DCL, Data Control Language): GRANT, REVOKE

트랜잭션 제어어(TCL, Transaction Control Language): COMMIT, ROLLBACK

 

제약조건의 종류

PRIMARY KEY 기본키 >> 테이블 당 1개, 중복값과 NULL 허용하지 않는다.

FOREIGN KEY 외래키

UNIQUE KEY 고유키 >> 테이블 내에서 중복되는 값이 없다.

NOT NULL

CHECK

 

ALTER TABLE 테이블명 ADD CONSTRAINT STU_PK PRIMARY KEY(STU_NO);

ALTER TABLE 테이블명 DROP COLUMN 컬럼명;

RENAME TABLE 테이블명 TO 변경할 테이블명;

 

참조무결성 규정

Parent Table 변경시, Child Table 값이 어떻게 변경될지를 정의하는 규정이다.

Delete/Modify Action: Cascade, Set Null, Set Default, Restrict

>> Cascade: Parent Table의 값 삭제시에 Child Table의 값도 삭제한다.

>> Restrict: Child Table의 PK 값이 없는 경우에만 Parent Table 삭제/수정을 허용한다.

>> No Action: 참조무결성을 위반하는 삭제/수정을 허용하지 않는다.

 

Parent Table의 PK 값의 여부에 따라 Child Table의 값을 변화시키는 규정이다.

Insert Action: Automatic, Set Null, Set Default, Dependent, No Action

>> Automatic: Parent Table의 PK 값을 생성 후 Child Table의 입력을 허용한다.

>> Dependent: Parent 테이블에 PK 값이 존재할 때에만 Child Table의 입력을 허용한다.

>> No Action: 참조무결성을 위반하는 입력을 허용하지 않는다.

 

SELETE [ALL/DISTINCT] 컬럼명 FROM 테이블명;

DISTINCT >> 중복된 데이터가 있는 경우 1건으로 처리해서 출력

 

__________ TABLE 테이블명; >> 테이블 삭제시 명령어

TRUNCATE

DDL, Auto Commit

테이블 데이터를 삭제하고 공간을 반납한다. 테이블 자체는 삭제되지 않으며, 인덱스도 함께 TRUNCATE 된다. 로그가 남지 않는 삭제법.

UNDO를 위한 데이터를 생성하지 않기 때문에 동일 데이터량 삭제시 DELETE 보다 빠르다.

 

DELETE

DML, 사용자 Commit

테이블 전체가 삭제되며, 인덱스 역시 삭제된다. 디스크 상의 공간은 그대로 가져간다.

 

DROP

DDL, Auto Commit

테이블 전체가 삭제되며, 인덱스 역시 삭제된다. 오라클 10g 부터는 테이블이 삭제되는 것이 아니라 BIN$이름으로 변경되어 임시 삭제 된다. 로그가 남지 않는 삭제법. 디스크 상의 공간까지 모두 반납!

 

트랜잭션의 특징

원자성 Atomicity

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

 

일관성 Consistency

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

 

고립성 Isolation

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

 

지속성 Durability

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

 

Oracle과 SQL Server의 차이

Oracle

DDL 수행 후 자동으로 COMMIT을 수행한다.

''로 Insert 된 값을 찾을 때, IS NULL 조건으로 찾을 수 있다.

 

SQL Server

DDL 수행 후 자동으로 COMMIT을 수행하지 않는다.

''로 Insert 된 값을 찾을 때, IS NULL 조건으로 찾을 수 있다.

 

Dirty Read

다른 트랜잭션에 의해 수정되었지만 아직 커밋되지 않은 데이터를 읽는 것을 말한다.

 

Null

NVL(표현식1, 표현식2), ISNULL(표현식1, 표현식2)

표현식1의 값이 NULL 일 때, 표현식2를 출력한다.

 

NULLIF(표현식1, 표현식2)

표현식1의 값이 표현식2의 값과 같지 않으면 표현식1을 출력한다. 같으면 NULL 출력.

 

COALESCE(표현식1, 표현식2, ...)

( ) 내의 표현식이 모두 NULL 일 때만 NULL을 출력한다. NULL 이 아니라면, 아닌 표현식의 값을 출력한다.

 

SUM, AVG는 NULL 값을 제외하고 합, 평균을 출력한다.

COUNT(*)는 NULL 값도 포함하여 출력한다.

COUNT(표현식) 표현식이 NULL인 것을 제외하고 출력한다.

 

 

 

 

 


알라딘: SQL 자격검정 실전문제

 

SQL 자격검정 실전문제

SQL 자격검정 실전문제는 국가공인 SQL 전문가 및 국가공인 SQL 개발자 자격시험 대비 수험서로 SQL 전문가 가이드에서 다루고 있는 데이터 모델링의 이해, SQL기본 및 활용, SQL 고급 활용 및 튜닝 등

www.aladin.co.kr

 

댓글