📌 고정 게시글

📢 공지합니다

이 게시글은 메인 페이지에 항상 고정되어 표시됩니다.

최코딩의 개발

CH4 관리구문 본문

자격증/sqld

CH4 관리구문

seung_ho_choi.s 2023. 8. 28. 10:24
728x90

개요: 마지막 정리 게시물이다.
 
DML
- 이것은 Data Manipulation Language란 의미로 DDL에서 정의한 대로 데이터를 입력하고
입력된 데이터를 수정, 삭제, 조회하는 명령어이다. 
 - 사용자가 무슨 데이터를 원하는지

- 호스트 프로그램 속에 삽입되어 사용되는 DML 명령어들을 데이터 부속어라고 한다. 
INSERT
INSERT INTO 테이블명 VALUES (전체 컬럼에 입력될 데이터 리스트);
- 테이블에 데이터를 입력하는 명령어이다. 
- 이때 명시되지 않은 컬럼에는 NULL 값이 입력되나 PK나 NOT NULL 제약조건이 걸린 컬럼에는 NULL 값 입력 안됨
- 전체 컬럼에 대한 데이터가 테이블의 순서대로 빠짐없이 나열되어야 하는데 순서가 뒤바뀌거나
데이터 유형이 안맞는 경우 에러 발생한다.
 - 오라클에서는 공백문자로 입력하면 NULL이 된다. / SQL은 반대! 


UPDATE 
UPDATE 테이블명 SET 컬럼명 = 새로운 데이터 WHERE 컬럼명 = "값"(수정할 데이터에 대한 조건);
- 이미 저장된 데이터를 수정하고 싶을 때 사용하는 명령어이다. 
- 수정하고 싶은 컬럼이 많다면 SET 절에 , 로 이어서 명시해 줄 수 있다. 
- WHERE 절이 없으면 테이블의 모든 Row가 변경되니 주의해야 함 
 
DELETE
DELETE FROM 테이블명 WHERE 컬럼명="값" (수정할 데이터에 대한 조건)
- 이미 저장된 데이터를 삭제하고 싶을 때 사용하는 명령어이다. 
- WHERE 절이 없으면 테이블의 모든 Row가 변경되니 주의해야 함 
- 이것은 ROLLBACK이 가능하나 미련남기기 싫으면 TRUNCATE 명령어를 사용한다. 
 
MERGE
테이블에 새로운 데이터를 입력하거나 이미 저장되어 있는 데이터에 대한 변경 작업을 한 번에 할 수 있도록 하는 명령어

주의깊게 잘 읽어보자 
 
TCL
- 이것은 Transaction Control Language라는 의미로 트랜잭션을 제어하는 명령어이다. 
- 쪼개질 수 없는 업무처러의 단위인데 쉽게 말해 죽어도 한 세트로 묶일 수밖에 없는 논리적인 업무 단위이다. 
 
특징
원자성: 트랜잭션으로 묶인 이련의 동작들은 모두 성공하거나 모두 실패해야 한다. 
일관성: 트랜잭션이 완료된 후에도 DB가 가진 데이터에 일관성이 있어야 한다. 
고립성: 하나의 트랜잭션은 고립되어 수행되어야 한다. 즉 비동기적으로 수행되어야 한다. 
지속성: 트랜잭션이 성공적으로 수행되었을 경우 트랜잭션이 변경한 데이터가 영구적으로 저장되어야 함을 의미한다. 
 
COMMIT 
- INSERT, DELETE, UPDATE 후 변경된 내용을 확정, 반영하는 명령어이다. 
- 이것을 실행하지 않으면 메모리까지 반영되는데 이것은 휘발성이기 때문에 언제든 사라질 수 있다. 
- UPDATE 한 뒤 오랜 시간 동안 COMMIT이나 ROLLBACK을 하지 않았을 경우 Lock에 걸려서 
다른 사용자가 변경할 수 없는 상황이 발생할 수 있으니 주의!
 
ROLLBACK 
- INSERT, DELETE, UPDATE 후 변경된 내용을 취소하는 명령어이다. 
- 이것을 하면 변경하기 이전 값을 복구 된다. 
- UPDATE 한 뒤 오랜 시간 동안 COMMIT이나 ROLLBACK을 하지 않았을 경우 Lock에 걸려서
다른 사용자가 변경할 수 없는 상황이 발생할 수 있으니 주의!
- SQL 에서는 ROLLBACK TRAHSATCTION  


SAVEPOINT
- ROLLBACK을 수행할 때 전체 작업을 되돌리지 않고 일부만 되돌릴 수 있게 하는 기능을 가진 명령어이다. 
- ROLLBACK 뒤에 특정 SAVEPOINT를 지정해주면 그 지점까지만 데이터가 복구 된다. 

- SQL에서는 SAVE TRANSACTION

 

BEGIN TRANSACTION

- 트랜잭션으로 시작하고 COMMIT, ROLLBACK을 만날때 트랜잭션을 종료한다. 

- 이때 롤백을 만나면 최초의 저거 시작점까지 간다. 근데 커밋되어 있으면 저장된거니깐 상관  ㄴㄴ (노랭이 55P 31번)
 
DDL
- Data Definition Language란 의미로 데이터를 정의하는 명령어이다.
- 쉽게 풀어서 CREATE 쿼리를 수행할 때 테이블을 생성하면서 그 안에 담게 될 데이터에 대한 데이터 유형을 정해주도록 되어 있다. 
- 오라클의 경우 DDL 수행 시 묵시적으로 COMMIT이 수행된다. (SQL 제외)
 
CREATE
CREATE TABLE 테이블명(
  컬러명1 데이터 타입(DEFAULT/ NULL 여부)
);

 

CREATE index [인덱스이름] on [테이블이름] (컬럼명);


- 테이블을 생성하기 위한 명령어이다. 
- 새로 생성이 아닌 기존에 존재하던 테이블을 복사해서 생성하고 싶은 경우
CTAS(CREATE TABLE ~ AS SELECT) 활용이 가능하다.
(하지만 NOT NULL만 복사가 가능하고 제약조건들은 초기화 된다.) 
- 제약 조건(CONSTRAINT)도 함께 정의해줄 수 있다. (초기에 정의해주는것이 바람직하다.)  
 
제약 조건의 종류
PRIMARY KEY(기본키) 
- 테이블에 저장된 각각의 Row에 대한 고유성을 보장한다.
- 한 테이블에 하나씩만 정의할 수 있지만 생성하지 않을 수 있다. 
- PK로 지정된 컬럼에는 NULL 값이 입력딜 수 없고 자동으로 UNIQUE 인덱스로 생성된다. 
 
UNIQUE KEY(고유키)
- PRIMARY KEY와 유사하게 테이블에 저장된 각각의 Row에 대한 고유성을 보장한다. 
- NULL 값이 허용된다. 
 
NOT NULL
해당 컬럼에는 NULL 값을 허용하지 않는다. 
 
CHECK
- 컬럼에 저장될 수 있는 값의 범위를 제한한다. 
- 데이터베이스에서 데이터의 무결성을 유지하기 위하여 테이블의 특정 컬럼에 설정하는 제약이다. 


FOREIGN KEY(외래키)
- 하나의 테이블이 다른 테이블을 참조할 때 쓰는 것이다. 

- 참조 무결성 제약을 받을 수 있다. 
 
ALTER
보통 한 번 생성된 테이블의 구조는 변경하지 않는 것이 일반적이지만 어쩔 수 없는 경우 변경해야 한다. 
 
ADD COLUMN
ALTER TABLE 테이블명 ADD 컬럼명 데이터 유형;
새로운 컬럼을 추가할 때 쓰는 명령어이다. 
 
DROP COLUMN 
ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
기존에 있던 컬럼이 필요 없어졌을 때 삭제하는 명령어이다. 
 
MODIFY COLUMN/ ALTER COLUMN(SQL)
ALTER TABLE 테이블명 MODIFY(컬럼명1 데이터 유형[DEFAULT 값] [NOT NULL], 컬럼명2 데이터 유형...)

- 추가로 SQL 서버는 동시에 지원 안되서 따로 써야함(노랭이 43P 7번)
- 기존에 있던 컬럼을 변경하고 싶을 때 쓰는 명령어이다. (제약조건에 대한 변경이 가능함)
- 컬럼에 저장된 데이터가 없는 경우에만 데이터 유형을 변경할 수 있다. 
 
RENAME COLUMN
ALTER TABLE 테이블명 RENAME COLUMN 변경할 컬럼명 TO 변경할 이름 
기존에 있던 컬럼의 이름을 변경하고 싶을 때 쓰는 명령어 
 
ADD CONSTARAINT
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건(컬럼명)
제약조건을 추가하고 싶을 때 쓰는 명령어
 
DROP TABLE
DROP TABLE 테이블명 [CASCADE CONSTRAINT];
테이블을 삭제하는 명령어이다. 
 
TRUNCATE TABLE
- 테이블에 저장되어 있는 데이터를 모두 제거하는 명령어이다. 
- 테이블은 삭제하지 않는다
 
DCL
Data Control Language란 의미로 USER를 생성하고,
USER에게 데이터를 컨트롤 할 수 있는 권한을 부여하거나 회수하는 명령어이다.  
 
USER 관련 명령어 
CREATE USER 
CREATE USER 사용자명 IDENTIFIED BY 패스워드; 
사용자를 생성하는 명령어이다. 
 
ALTER USER 
ALTER USER 사용자명 IDENTIFIED BY 패스워드; 
사용자를 변경하는 명령어이다. 
 
DROP USER
DROP USER 사용자명; 
사용자를 삭제하는 명령어이다. 
 
권한 관련 명령어 
GRANT 
GRANT 권한 TO 사용자명; 
사용자에게 권한을 부여하는 명령어이다. 
 
REVOKE
REVOKE 권한 FROM 사용자명;
사용자에게 권한을 회수하는 명령어이다. 
 
ROLE 관련 명령어 
ROLE이란 특정 권한들을 하나의 세트처럼 묶는 것이다. 

728x90

'자격증 > sqld' 카테고리의 다른 글

CH5 그 외 것들  (0) 2023.09.05
CH3 SQL 활용(2)  (0) 2023.08.22
CH3 SQL활용  (0) 2023.08.21
CH2 SQL 기본(2)  (0) 2023.08.15
CH2 SQL 기본  (0) 2023.08.15