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
두개는 서브쿼리로도 사용가능함.