[SQLD] 핵심정리 (1) SQL 기본
- 개발자자격증
- 2019. 5. 18. 00:21
SQL 문장들의 종류
- SQL은 여러가지 종류의 키워드들이 있다.
- 데이터의 집을 짓는 것, 데이터를 조작하는 것, 조작한 데이터를 저장하거나 복구하는 것 등.
명령어의 종류 |
명령어 |
설명 |
데이터 조작어 (DML : Data Manipulation Language) |
SELECT |
데이터 베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어를 말하는 것으로 RETRIEVE라고도 한다. |
INSERT UPDATE DELETE |
데이터 베이스의 테이블에 들어있는 데이터에 변형을 가하는 종류의 명령어들을 말한다. 예를 들어 데이터를 테이블에 새로운 행으로 집어넣거나 원하지 않는 데이터를 삭제하거나 수정하는 것들의 명령어들을 DML 이라고 한다. |
|
데이터 정의어 (DDL : Data Definition Language) |
CREATE ALTER DROP RENAME |
테이블과 같은 구조를 정의하는데 사용되는 명령어들로 그러한 구조를 생성하거나 변경하거나 삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령어들을 DDL이라고 부른다. |
데이터 제어어 (DCL : Data Control Language) |
GRANT REVOKE |
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어를 DCL이라고 부른다. |
트랜잭션 제어어 (TCL : Transaction Control Language) |
COMMIT ROLLBACK |
논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어를 말한다. |
ALERT구문 예제
- 분류명 : VARCHAR(10) NOT NULL -> 분류명 : VARCHAR(30) NOT NULL
- 등록일자 : VARCHAR(10) NULL -> 등록일자 : DATE NOT NULL
위처럼 변경하고자 할때 사용할 수 있는 SQL 문장은??(DBMS : SQL SERVER)
>> ALTER TABLE 테이블명 ALTER COLUMN 분류명 VARCHAR2(30) NOT NULL; ALTER TABLE 테이블명 ALTER COLUMN 등록일자 DATE NOT NULL;
>> 위 두문장으로 따로따로 컬럼의 구조를 변경해야한다. 왜냐하면 ORACLE 과 달리 SQL SERVER는 복수개의 컬럼변경을 할 수 없다.
NULL 이란?
- 모르는 값을 의미함.
- 값의 부재를 의미함
- NULL과의 모든 비교(IS NULL 제외)는 알 수 없음(unknown)을 반환한다.
- ASCII 코드 00번으로 공백(ASCII : 32), 0(ASCII : 48) 와는 전혀 다른 값이다.
- 조건에 맞는 데이터가 없을 떄의 공집합과도 다르다.
제약조건
- PRIMARY KEY(기본키) : 주키로 테이블당 1개만 생성이 가능하다. 인덱스 포함.
- UNIQUE KEY(고유키) : 테이블 내에서 중복되는 값이 없으며, PK와 다른 점은 NULL을 허용한다는 점이다.
- NOT NULL : 해당 컬럼에 NULL값을 허용하지 않는다는 것이다. PK조건은 기본적으로 NOT NULL조건이 깔려 있다.
- CHECK : 데이터베이스에서 데이터의 무결성을 유지하기 위하여 테이블의 특정 컬럼에 설정하는 제약이다. 특정 값만 받을 때 사용.
- FOREIGN KEY(외래키) : 테이블간의 관계를 정의하기 위해 주로 기본키를 다른 테이블의 외래키가 참조하도록 설정한다.
RENAME 예제
- STADIUM 테이블의 이름을 STADIUM_JSC로 변경하는 SQL 작성하시오.
>> RENAME STADIUM to STADIUM_JSC
DELETE 시 컬럼에 걸린 제약조건들.
1) CASCADE : 부모테이블에 있는 컬럼 삭제시 자식테이블도 함께 삭제됨.
2) SET NULL : 부모테이블에 있는 컬럼 삭제시 자식테이블의 해당 컬럼은 NULL이 됨
3) SET DEFAULT : 부모테이블에 있는 컬럼 삭제시 자식테이블 해당 테이블의 값은 DEFAULT 값이 됨.
4) RESTRICT : 자식테이블에 PK값이 없는 경우만 부모테이블의 컬럼을 삭제할 수 있음.
5) NO ACTION : 참조무결성을 위반하는 삭제/수정행위를 일체 허용하지 않음.
INSERT시 컬럼에 걸리는 제약조건들
1) Automatic : 부모테이블에 PK가 없는 경우 부모테이블에 PK를 생성후 자식테이블에도 삽입
2) SET NULL : 부모테이블에 PK가 없는 경우 자식테이블의 외래키를 NULL값으로 처리
3) SET DEFAULT : 부모테이블에 PK가 없는 경우 자식테이블의 외래키를 지정된 DEFAULT 값으로 처리
4) DEPENDENT : 부모테이블에 PK가 존재할 때만 자식테이블에 INSERT를 할 수 있음.
5) NO ACTION : 참조무결성을 해치는 어떠한 삽입도 이뤄지지 않음.
DROP, TRUNCATE, DELETE의 차이점
- DROPT : 테이블의 구조 전체 및 존재 자체를 삭제, 따라서 로그가 남지 않음
- TRUNCATE : 테이블의 구조는 그대로 두고 차지하고 있던 데이터들을 초기화 하는 것. row 0으로 만드는 것. 로그가 남지 않음
- DELETE : 테이블의 데이터만 삭제하는 요소. 트리거를 사용하면 로그를 남길 수 있다.
- TRUNCATE 명령어는 UNDO를 위한 데이터를 생성하지 않기 때문에 동일한 데이터량 삭제시 DELETE 보다 빠르다.
- DROP, TRUNCATE은 Auto Commit이고, DELETE는 사용자 커밋으로 데이터를 복구할 수도 있다.
트랜잭션의 특성
특성 |
설명 |
원자성(Atomicity) |
트랜잭션에서 정의된 연산들은 모두 성공적으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아있어야 한다.(all or nothing) |
일관성(consistency) |
트랜잭션이 실행되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다. |
고립성(Isolation) |
트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다. |
지속성(durability) |
트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다. |
'개발자자격증' 카테고리의 다른 글
[SQLD] 제 33회 SQL 개발자 자격시험 합격 후기!! 및 공부방법! (2) | 2019.08.24 |
---|---|
[SQLD] 핵심정리 (2) - SQL 기본 (18) | 2019.05.18 |
[정보처리기사] 필기 준비방법 및 꿀팁!! 시험대비 시험 잘보는법! (0) | 2019.04.28 |
[SQLD] SQL Developer 자격증 도전기 (0) | 2019.04.28 |