com

DB 핵심정리


by Kitle · 2020. 06. 16.



데이터 베이스 핵심 정리 노트입니다. DB 이론을 빠르게 복습하는데 도움이 됩니다.


테이블의 열과 행

테이블 열(세로): Column(컬럼)

테이블 행(가로): Record(레코드) >> RDBMS에서는 행단위로 데이터를 읽고 쓴다.

*행과열이 교차하는 명칭이 없음: 책에서는 Cell(셀) 로 명명, 하나의 셀은 하나의 데이터만 가능


데이터 관련 용어

DDL - CREATE / DROP / ALTER(변경)

DML(Manipulation) - SELECT / INSERT / DELETE - DML 이 90퍼센트를 차지함.

DCL - COMMIT / ROLLBACK / GRANT / REVOKE


키워드/테이블명/컬럼명 - SELECT, DROP 등 대소문자 구분 없음

규칙예) 키워드 대문자, 테이블명 첫글자만 대문자, 그외 소문자

*테이블에 등록된 데이터는 대소문자가 구별된다.


SQL 문자열: 'ABC', 날짜 '2010-01-26' -> 날짜도 다양한 방법이 있음

숫자: 1000

단어와 단어사이 공백 문자 또는 줄바꿈 문자로 구분

EX) CREATE TABLE Goods


DB 만들기

CREATE DATABASE shop;


TABLE 만들기

CREATE TABLE Goods

( goods_id CHAR(4) NOT NULL,

goods_name VARCHAR(100) NOT NULL,

...

sell_price INTEGER,

register_date DATE,

PRIMARY KEY (goods_id));


DB명, 테이블명, 컬럼명 규칙: 영문자 / 숫자 / _ 언더바만 가능, 첫글자는 영문자(숫자X)


데이터형

INTEGER형 : 정수형

CHAR형: CHAR(최대길이), 문자수 또는 Byte 길이

CHAR(8) 에 'abc'를넣은경우 'abc '로 저장됨. (공백 스페이스 5개)

VARCHAR형: 가변 문자열, 최대길이보다 작아도 공백 채우지 않음

*ORACLE : VARCHAR2 사용 - 최대 4000byte(한글2000,영문4000)


DB의 제약사항

NOT NULL - 데이터 반드시 있어야하는 항목

참고) NULL - Data가 없음을 의미


PRIMARY KEY

하나의 행을 특정지을수 있는 키, Unique, KEY

ex) 길이 100인 가변 문자열을 저장하는 goods_name_eng 열 추가

ALTER TABLE Goods ADD (goods_name_eng VARCHAR2(100));

*Table 정의를 변경한 후에는 원래대로 복구할 수 없음, ALTER TABLE은 신중히


테이블 수정

ALTER TABLE gods RENAME TO Goods;



INSERT

INSERT INTO Table명 (컬럼명, , ) VALUES ( '문자', 23, '2009-09-2')

1회 실행에 1회삽입이 원칙, 복수행 INSERT가 가능한 경우도 있으나, Oracle DB 불가

열리스트 생략,

INSERT INTO Table명 VALUES ( '문자', 23, '2009-09-2')

없는경우는 왼쪽부터 채워넣게 됨

NULL 삽입을 원하는 경우는 VALUE에 NULL 쓰기


DELETE

DELETE FROM 테이블명;

*주의: 테이블의 모든 데이터 삭제

특정데이터만 지우는 경우는 WHERE 절 활용할 것


UPDATE

UPDATE 테이블명 SET 열명=값;

UPDATE Goods SET register_date = '2009-10-10';

조건이 필요한경우 WHERE 추가


NULL로 UPDATE 경우 // 위의 register_date 를 널 클리어 하려는 경우

UPDATE Goods SET register_date = NULL

// NOT NULL 또는 주키제약이 없어야 한다.


복수열 갱신

SET 이후 구문에 , 콤마로 해준다. SET sell_price = sell_price * 10, buy_price = buy_price / 2


트랜랙션

세트로 실행해야 하는 하나이상의 갱신처리집함

ex) 주문 처리

상품 90개 -> 구매리스트에 1개 넣음 & 재고리스트에서 1개 뺌

oracle은 암묵적으로 트랜젝션이 시작되므로 게시문이 없음

COMMIT 처리 확정, ROLLBACK 취소

오라클을 제외하고는 자동커밋모드이므로, 항상 트랜젝션을 시작하는 명령을 쓰도록 하자

>> BEGIN TRANSACTION


VIEW

데이터 저장 없음, 속도

자주 사용하는 SELECT문은 VIEW로 저장해 사용하는 것이 도움이 됨

CREATE VIEW 뷰명 (열명,,) AS SELECT 문


산술함수

NUMERIC(전체자릿수, 소수자릿수) 로 크기지정

MOD(피제수, 제수)

반올림 ROUND


문자열 연결 || 활용

CURRENT_DATE , CURRENT TIMESTAMP // 실행한 날짜, 시간

오라클은 더미테이블을 활용해야함

SELECT CURRENT_DATE

FROM DUAL;


EXTRACT 추출하기 // 특정 일, 월 등

SELECT CURRENT_TIMESTAMP,

EXTRACT(MONTH FROM CURRENT)TIMESTAMP AS month

FROM DUAL;


LIKE

술어 >> 부분일치 검색

SELECT *

FROM SampleLike

WHERE strcol LIKE 'ddd%';


'%ddd%', '%ddd'

한글자씩만 원하는경우 _ 언더바 사용,, _ 한개에 한글자


WHERE sell_price BETWEEN 100 AND 1000;

WHERE ... IS NULL;

IS NOT NULL;

IN 술어(OR를 깔끔하게 쓰기)

WHERE Buy_price IN (320, 500, 5000);

// 구매가격이 320, 500, 5000원인것만

NOT IN

두개는 서브쿼리로도 사용가능함.