📢 공지합니다
이 게시글은 메인 페이지에 항상 고정되어 표시됩니다.
개요: 마지막 정리 게시물이다.
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이란 특정 권한들을 하나의 세트처럼 묶는 것이다.
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 |