
SQL : 관계형 DB에서 데이터 정의, 조작, 제어를 위
해 사용하는 언어
DML : SELECT, INSERT, UPDATE, DELETE 등 데
이터 조작어
DDL : CREATE, ALTER, DROP, RENAME 등 데이
터 정의어
DCL : GRANT, REVOKE 등 데이터 제어어
TCL : COMMIT, ROLLBACK 등 트랜잭션 제어어
DML - table에 CRUD 하는 조작어
DDL(definition) - table에 어떤 column이 들어가는지 정의할때, 수정,삭제할 때 쓰는 정의어
DCL - DBMS의 root계정 말고 다른 계정을 만들어서 공용으로 쓰고자 했을 때 grant를 찾아봤던 기억이 난다. revoke는 권한을 취소시킬 때 쓰는 것이라 한다.
권한을 control한다고 해서 dcl인듯 하다.
테이블 : 데이터를 저장하는 객체, 로우(가로, 행)와
칼럼(세로, 열)으로 구성
정규화 : 데이터의 정합성 확보와 데이터 입력/수정/
삭제시 발생할 수 있는 이상현상을 방지하기 위함
기본키 : 테이블에 존재하는 각 행을 한 가지 의미로
특정할 수 있는 한 개 이상의 칼럼
외부키 : 다른 테이블의 기본키로 사용되고 있는 관계
를 연결하는 칼럼
CHAR(s) : 고정 길이 문자열 정보
VARCHAR(s) : 가변 길이 문자열 정보
NUMERIC : 정수, 실수 등 숫자 정보
DATE : 날짜와 시각 정보
테이블 명은 다른 테이블의 이름과 중복되면 안 된다.
테이블 내의 칼럼명은 중복될 수 없다. 각 칼럼들은 , 로 구분되고 ; 로 끝난다.
칼럼 뒤에 데이터 유형은 꼭 지정되어야 한다. 테이블명과 칼럼명은 반드시 문자로 시작해야한다.
A-Z,a-z,0-9,_,$,#만 사용 가능
DATETIME 데이터 유형에는 별도로 크기를 지정x
CREATE TABLE testTable (
member_name VARCHAR(20),
age int,
CONSTRAINT testTable CHECK (age > 19)
);
ALTER TABLE testTable DROP ck1;
ALTER TABLE testTable ADD CONTRAINT ck1 CHECK(age > 19)
);
ALTER MODIFY (칼럼명 데이터유형 DEFAULT식 NOT
NULL); -> 칼럼 데이터 유형, 조건 등 변경 Oracle
alter table 테이블이름A modify 컬럼이름X 데이터타입;
RENAME COLUMN 변경전칼럼명 TO 뉴칼럼명; Ora
sp_rename 변경전칼럼명, 뉴칼럼명, ‘COLUMN’;
SQDROP CONSTRAINT 조건명; 제약조건 삭제
RENAME 변경전테이블명 TO 변경후테이블명; Ora
sp_rename ‘db0.TEAM’,‘TEAM_BACKUP’; SQL
DROP TABLE 테이블명 [CASCADE CONSTRAINT]
CASCADE CONSTRAINT : 참조되는 제약조건 삭제
TRUNCATE TABLE 테이블명: 행 제거, 저장공간 재
사용
DDL 명령어의 경우 실행시 AUTO COMMIT 하지만
DML의 경우 COMMIT을 입력해야 한다. SQL Server의 경우 DML도 AUTO COMMIT
INSERT INTO PLAYER (PLAYER) VALUES (‘PJS’);
UPDATE PLAYER SET BACK_NO = 60;
DELETE FROM PLAYER;
SELECT PLAYER_ID FROM PLAYER;
SELECT DISTINCT POSITION 시 구분값만 출력
ex)GK, FW, DF, MF
SELECT PLAYER AS “선수명” FROM PLAYER;
와일드카드
트랜잭션 : 밀접히 관련되어 분리될 수 없는 1개 이상
의 DB 조작
COMMIT : 올바르게 반영된 데이터를 DB에 반영
ROLLBACK : 트랜잭션 시작 이전의 상태로 되돌림
SAVEPOINT : 저장 지점
👉 원자성(Atomicity)
원자성은 트랜잭션이 데이터베이스에 모두 반영되던가, 아니면 전혀 반영되지 않아야 한다는 것이다. 트랜잭션은 사람이 설계한 논리적인 작업 단위로서, 일처리는 트랜잭션의 작업이 부분적으로 실행되다가 중단되 않고 작업단위 별로 이루어져야 사람이 다루는데 무리가 없다.
사
👉 일관성(Consistency)
일관성은 트랜잭션의 작업 처리 결과가 항상 일관성이 있어야 한다는 것이다. 즉, 데이터 타입이 반환 후와 전이 항상 동일해야 한다. 예시) 갑자기 데이터 타입이 정수형에서 문자열로 변화하면 안됨
👉 독립성(Isolation)
독립성은 하나의 트랜잭션은 다른 트랜잭션에 끼어들 수 없고 마찬가지로 독립적임을 의미한다. 트랜잭션 실행 도중 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다. 다른 트랜잭션이 특정 트랜잭션의 결과를 참조할 수 없다.
👉 지속성(Dutability)
지속성은 트랜잭션이 성공적으로 완료되었을 경우, 결과는 영구적으로 반영되어야 한다는 점이다. 보통 Commit이 완료되면 지속성은 자연스럽게 충족되는 특징이다.
BETWEEN a AND b : a와 b 값 사이에 있으면 됨
IN (list) : 리스트에 있는 값중 어느 하나라도 일치
LIKE ‘비교문자열’ : 비교문자열과 형태가 일치
IS NULL : NULL 값인 경우
NOT IN (list) : list의 값과 일치하지 않는다
IS NOT NULL : NULL 값을 갖지 않는다.
연산자 우선순위 : ()->NOT->비교연산자->AND->OR
SELECT PLAYER_NAME 선수명 FROM PLAYER
WHERE TEAM_ID = ‘K2’;
-> 팀ID가 K2인 사람WHERE TEAM_ID IN (‘K2’,‘K7’);
-> K2,K7인 사람WHERE HEIGHT BETWEEN 170 AND 180;
-> 키가 170 ~ 180인 사람
WHERE POSITION IS NULL;
-> 포지션 없는 사람NULL 값과의 수치연산은 NULL 값을 리턴한다.
NULL 값과의 비교연산은 거짓(FALSE)를 리턴한다.
ROWNUM : 원하는 만큼의 행을 가져올 때 사용(Or)
TOP : (SQL Server)
WHERE ROWNUM =1;
SELECT TOP(1) PLAYER_NAME FROM PLAYER;
훌륭한 글 감사드립니다.