성장일지
sqld 공부 본문
데이터 제어어(DCL: Data Control Language)는 데이터베이스에 접근하고 객체들을 사용할 수 있도록 권한을 부여하거나 회수하는 명령어로 GRANT, REVOKE가 있다.
데이터의 구조를 정의하는 명령어는 DDL(데이터 정의어)에 해당하며 DDL문으로는 CREATE, ALTER, DROP, RENAME 이 있다.
Transaction를 제어하는 명령어는 TCL(Transaction Control Language) 이다.COMMIT, ROLLBACK, SAVEPOINT 등이 여기에 해당
데이터베이스를 정의하고 접근하기 위해서는 데이터베이스 관리시스템과의 통신수단이 필요한데 이를
데이터 언어(Data Language)라고 하며, 그 기능과 사용 목적에 따라 데이터 정의어(DDL), 데이터 조작어(DML), 데이터 제어어(DCL)로 구분된다.
DDL(Data Definition Language) : CREATE, DROP , ALTER, RENAME, TRUNCATE
DML(Data Modification Language) SELECT, INSERT, UPDATE, DELETE
DCL(Data Control Language): GRANT, REVOKE
TCL(Transaction Control Language) : COMMIT, ROLLBACK
1) CASCADE : 부모 삭제 시 자식 삭제
2) Set Null : 부모 삭제 시 자식 필드 널
3) Set Default : 부모 삭제 시 자식 필드 디폴트 값
4) Restrict : 자식 테이블에 PK값이 없는 경우만 부모 삭제 허용
5) No Action : 참조 무결성을 위반하는 삭제/수정 액션을 취하지 않음
데이터베이스 트랜잭션의 4가지 특성
① 원자성(atomicity) : 트랜잭션에서 정의된 연산들은 모두 성공적으로 성공적 으로 실행되던지 아니면 전혀 실행되지 않은 상태로 남아 있어야 한다
② 지속성(durability): 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다.
③ 고립성(isolation) : 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다.
④일관성(consistency) : 트랜잭션이 실행 되기 전의 데이터베이스 내용이 잘못 되어 있지 않다면 트랜잭션이 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다.
NULL값이 포함된 사칙연산의 결과는 NULL이다.
"||" 연산자를 이용하여 문자열을 연결할 수 있다.
NULL은 공백 문자(Empty String) 혹은 숫자 0과 동일하지 않다.
외래키 값은 참조 무결성 제약을 받을 수 있다.
RENAME ㅁㅁㅁ TO ㅇㅇㅇ;
CASCADE : Master 삭제 시 Child 같이 삭제
RESTRICT : Child 테이블에 PK 값이 없는 경우만 Master 삭제 허용
AUTOMATIC : Master 테이블에 PK가 없는 경우 Master PK를 생성 후 Child 입력
DEPENDENT : Master 테이블에 PK가 존재 할 때 만 Child 입력 허용
REFERENCES 고객_22 (고객ID) ON DELETE SET NULL;
TRUNCATE TABLE과 DROP TABLE은 로그를 남기지 않는다.
특정 테이블의 모든 데이터를 삭제하고, 디스크 사용량을 초기화 하기위해서는 TRUNCATE TABLE 명령을 사용하여야 한다.
DELETE TABLE은 테이블의 데이터를 모두 삭제하지만 디스크 사용량을 초기화 하지는 않는다.
DROP TABLE은 테이블의 데이터를 모두 삭제하고 디스크 사용량도 없앨(초기화)수 있지만, 테이블의 스키마 정의도 함께 삭제된다.
DROP : DDL, 롤백 불가능, AUTO COMMIT, 저장소 초기화, 테이블 정의 자체를 완전 삭제
TRUNCATE : DDL, 롤백 불가능, AUTO COMMIT, 최초 테이블 생성시만 남기고 저장소 초기화, 테이블을 최초 생성된 상태로 만듦
DELETE : DML, 롤백 가능, 사용자 COMMIT, 저장소초기화안됨, 데이터만 삭제
논리 연산자의 우선순위는 NOT > AND > OR 순이다.
NULL 값을 조건절에서 사용하는 경우 IS NULL, IS NOT NULL이란 키워드를 사용해야 한다.
널값 조회 시
오라클은 IS NULL
SQL SERVER는 = ''
㉠:NVL
㉡:NULLIF
㉢:COALESCE
㉠ (표현식 1, 표현식 2): 표현식1 의 결과값이 NULL이면 표현식 2의 값을 출력한다.
㉡ (표현식 1, 표현식 2): 표현식1이 표현식2와 같으면 NULL을, 같지 않으면 표현식 1을 리턴 한다.
㉢ (표현식 1, 표현식 2): 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다.
AVG 널은 연산대상에서 제외됨
중첩된 그룹 함수의 경우 최종 결과값은 1건이 될 수밖에 없기에 GROUP BY절에 기술된 메뉴ID와 사용유형코드는 SELECT절에 기술될 수 없다.
GROUP BY를 사용할 경우 GROUP BY 표현식이 아닌 값은 ORDER BY에 기술될수 없다.
GROUP BY 절을 사용하는 경우 ORDER BY 절에 집계 함수를 사용할 수 도 있다.
ORDER BY 절에 칼럼 명 대신 Alias 명이나 칼럼 순서를 나타내는 정수를 혼용하여 사용할 수 있다.
SELECT 문장의 실행 순서는 FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY이다.
SQL Server의 TOP N 질의문에서 N에 해당하는 값이 동일한 경우 함께 출력되도록 하는 WITH TIES
옵션을 ORDER BY 절과 함께 사용하여야 한다.
여러 테이블 로부터 원하는 데이터를 조회하기 위해서는 전체 테이블 개수에서 최소 N-1개 만큼의 JOIN 조건이 필요하다.
조인시 동일한 컬림 없을 시 alias 명 기재 안해도 된다.