일상적인 정보들을 모아 놓은 것 자체를 의미한다.
일반적으로 DB라고 말할 때는 특정 기업이나 조직 또는 개인이 필요한 데이터를 일정한 형태로 저장해 놓을 것을 의미한다.
사용자들은 보다 효율적인 데이터 관리뿐만 아니라 예기치 못한 사건으로 인한 데이터의 손상을 피하고 필요할 때 데이터를 복구하기 위한 강력한 기능의 소프트웨어를 필요로 하는데 이러한 기본적인 요구사항을 만족시켜주는 시스템을 의미한다.
관계형 데이터베이스(RDB) 는 정규화 이론에 근거한 합리적인 데이터 모델링을 통해 데이터 이상 현상 및 불필요한 데이터 중복 현상을 피할 수 있다. 이러한 RDB를 관리하는 시스템 소프트웨어를 관계형 데이터베이스 관리 시스템 (RDBMS) 이라고 한다.
관계형 데이터베이스에서 데이터 정의, 데이터 조작, 데이터 제어를 하기 위해 사용하는 언어이다.
: Data Manipulation Language
명령어 | 설명 |
---|---|
SELECT | 데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어 |
INSERT UPDATE DELETE | 데이터베이스에 들어있는 데이터에 변형을 가하는데 사용하는 명령어 |
: Data Definition Language
명령어 | 설명 |
---|---|
CREATE ALTER DROP RENAME | 테이블/인덱스 등과 같은 데이터베이스 객체의 구조를 정의하는데 사용하는 명령어 |
: Data Control Language
명령어 | 설명 |
---|---|
GRANT REVOKE | 데이터베이스에 접근하고 객체들을 사용하도록 권한을 부여하고 회수하는 명령어 |
: Transaction Control Language
명령어 | 설명 |
---|---|
COMMIT ROLLBACK | 논리적인 작업 단위를 묶어서 DML에 의해 조작된 결과를 작업단위별로 적용 및 취소하는 명령어 |
: 데이터를 저장하는 객체로서 RDB의 기본 단위를 의미한다.
종류 | 설명 |
---|---|
테이블 | 칼럼과 행의 2차원 구조(면적)를 가진 데이터이 저장소 |
칼럼 | 테이블에서 세로 방향으로 이루어진 하나하나의 속성 (더 이상 나눌 수 없는 것) |
행 | 테이블에서 가로 방향으로 이루어진 데이터 |
정규화 | 테이블을 분할하여 데이터의 정합성을 확보하고 불필요한 중복을 줄이는 프로세스 |
기본키 | 테이블에 존재하는 각 행을 한 가지 의미로 특정할 수 있는 1개 이상의 칼럼 ex) 주문 테이블의 기본키는 주문번호 / 고객 테이블의 기본키는 고객번호 |
외래키 | 다른 테이블의 기본키로 사용되고 있는 관계를 연결하는 칼럼 ex) 주문 테이블의 고객번호 칼럼은 주문 테이블이 가지고 있는 FK / 고객번호 칼럼은 고객 테이블의 기본키 |
: 테이블 간 서로의 상관 관계를 그림으로 도식화한 것
DB를 구성하고 있는 다양한 객체(사용자, 테이블, 인덱스, 뷰, 트리거, 프로시저, 사용자 정의 함수 등)를 정의/변경.제거하는데 사용한다.
- 물리적 DB객체의 구조를 정의하는데 사용된다.
테이블 생성 시 테이블 내에 사용될 칼럼을 정의한다.
선언한 유형이 아닌 다른 종류의 데이터가 들어오려고 하면 DBMS는 에러를 발생시킨다.
: 신규 테이블을 생성하는 SQL문
: 데이터의 무결성을 유지하기 위한 DBMS의 보편적인 방법으로 테이블의 특정 칼럼(하나 혹은 그 이상)에 설정하는 제약을 말한다.
: 칼럼 및 제약조건을 추가/수정/제거하는데 이용하는 SQL문
: 칼럼을 추가할 수 있다.
ALTER TABLE 테이블명 ADD 칼럼명
:외래키를 생성활 수 있다.
ALTER TABLE 테이블명 ADD CONSTRAINT 외래키명 FOREIGN KEY(제약조건)REFERENCES
: 칼럼을 제거할 수 있다.
ALTER TABLE 테이블명 DROP 칼럼명
:외래키를 제거할 수 있다.
ALTER TABLE 테이블명 DROP CONSTRAINT 외래키명
: 칼럼의 데이터형 및 제약조건을 변경할 수 있다.
ALTER TABLE 테이블명 MODIFY 칼럼명(제약조건)
: 칼럼명을 변경할 수 있다.
ALTER TABLE 테이블명 RENAME 원하는칼럼명 TO 이전 칼럼명
: 테이블에 저장된 데이터를 제거할 수 있다.
TRUNCATE 테이블명
: 테이블 객체를 제거할 수 있다.
DROP TABLE 테이블명
테이블의 데이터를 입력 / 수정 / 삭제 / 조회하는 역할을 한다.
- 4가지의 종류가 있으며 해당 SQL문을 실행 후 영구적으로 저장(COMMIT)하거나 SQL문의 수행을 취소(ROLLBACK)할 수 있다.
: 테이블에 데이터를 신규로 입력할 때 사용된다.
INSERT INTO 테이블명 (데이터를 넣고 싶은 칼럼명) VALUES (데이터값);
: 테이블 내 행의 칼럼값을 수정할 때 사용된다.
UPDATE 테이블명 SET 수정값 WHERE 수정하고 싶은 칼럼명;
: 테이블 내의 행을 삭제할 때 사용된다.
DELETE FROM 테이블명 WHERE 원하는 행의 조건;
: 테이블에서 데이터를 조회하는데 사용된다.
SELECT 조회하고 싶은 칼럼들 FROM 테이블명 WHERE 조회 칼럼 조건;
: FRO절 내 테이블(들)이 가지고 있는 모든 칼럼을 출력한다.
SELECT * FROM 테이블명
: SELECT절에서 여러 개의 칼럼을 출력하는 경우 합성 연산자 ("||") 로 연결하면 결과 값이 하나의 칼럼으로 출력된다.
SELECT 칼럼명1 || 칼럼명2 FROM 테이블명
: 오라클 DB를 설치하면 기본적으로 DUAL 테이블이 존재한다.
SELECT 원하는 연산 FROM DUAL;
데이터의 입력 / 수정 / 삭제 후 커밋 혹은 롤백을 하는데 사용하는 SQL문이다.
- DML문의 입력, 수정, 삭제를 실행하면 DB에 곧바로 적용되지 않고 커밋 명령을 실행해야만 DB에 최종 적용된다.
- 데이터를 변경한 후, 커밋 명령을 실행하지 않은 상태라면 롤백명령으로 데이터의 변경을 취소할 수 있다.
: DB의 논리적 연산 단위로 1개의 트랜잭션에는 1개 이상의 SQL문이 포함된다.
특성 | 설명 |
---|---|
원자성(Atomicity) | 트랜잭션에서 정의된 연산들은 모두 성공적으로 끝나거나 모두 실패해야 한다. (ALL OR NOTHING) |
일관성(Consistency) | 트랜잭션이 실행되기 전, 데이터베이스의 내용이 잘못되어 있지 않다면 실행된 이후에도 데이터베이스의 내용에 잘못이 있으면 안된다. |
고립성(Isolation)) | 트랜잭션이 실행되는 도중에 다른 트랜잭션의 영향을 받아 잘못된 결과를 만들어서는 안된다. |
지속성(Durability) | 트랜잭션이 성공적으로 수행되면 그 트랜잭션이 갱신한 데이터베이스의 내용은 영구적으로 저장된다. |
: 입력 / 수정 / 삭제한 자료에 대해서 문제가 전혀 없다고 판단되었을 경우 트랜잭션을 완료한다.
COMMIT이후의 상태
- 데이터의 입력 / 수정 / 삭제 내역이 DB에 완전히 반영된다.
- 변경 사용자 및 변경 사용자가 아닌 다른 모든 사용자는 SELECT문으로 입력 / 수정 / 삭제 결과를 볼 수 있다.
- 관련된 행에 대한 락이 풀리고 모든 사용자들이 행을 조작할 수 있게 된다.
: 입력 / 수정 / 삭제한 자료에 대해서 문제가 있다고 판단되었을 경우 트랜잭션을 취소한다.
: 롤백 시 트랜잭션에 포함된 모든 입력 / 수정 / 삭제를 취소하는 것이 아니라 현 시점에서 SAVEPOINT 지점까지의 데이터 변경만 취소할 수 있다.
: 필요한 데이터만을 조회, 추출하기 위해 추출되는 행을 제한한다.
: 숫자 값 혹은 문자 값의 크기를 비교하는데 사용한다.
연산자 | 의미 |
---|---|
= | ~와 같다. |
> | ~보다 크다. |
>= | ~보다 크거나 같아. |
< | ~보다 작다. |
<= | ~보다 작거나 같다. |
: SQL문에서 사용하도록 기본적으로 예약되어 있는 연산자이다.
연산자 | 의미 |
---|---|
BETWEEN A AND B | A와 B 사이에 있으면 된다. |
IN(리스트) | 리스트에 있는 값 중 하나라도 있으면 된다. |
LIKE '비교문자열' | 비교문자열의 형태와 일치하면 된다.(와일드카드 사용↓) |
IS NULL | 값이 NULL이면 된다. |
IS NOT NULL | 값이 NULL이 아니면 된다.(NULL에 대한 부정 비교 시 사용) |
와일드카드
- % : 0개 이상의 어떤 문자를 의미한다.
- _ : 1개의 단일 문자를 의미한다.
: 비교 연산자 혹은 SQL 연산자로 이루어진 여러 개의 조건들을 논리적으로 조합하기 위해서 사용하는 연산자
연산자 | 의미 |
---|---|
AND | 앞 조건과 뒤 조건이 모두 참이어야 한다. |
OR | 앞 조건과 뒤 조건 중 하나라도 참이어야 한다. |
NOT | 조건이 거짓이면 된다. |
: 비교 연산자의 부정표현을 '부정 비교 연산자' 로 할 수 있고, SQL연산자의 부정표현을 '부정 SQL 연산자' 로 할 수 있다.
[부정 비교 연산자]
연산자 | 의미 |
---|---|
!= | 같지 않다. |
<> | 같지 않다. |
^= | 같지 않다. |
NOT 칼럼명 = | ~칼럼의 값이 ~와 같지 않다. |
NOT 칼럼명 > | ~칼럼의 값이 ~보다 크지 않다. |
NOT 칼럼명 < | ~칼럼의 값이 ~보다 작지 않다. |
[부정 SQL 연산자]
연산자 | 의미 |
---|---|
NOT BETWEEN A AND B | A와 B의 값 사이에 있지 않다. |
NOT IN(리스트) | 같지 않다. |
IS NOT NULL | NULL값이 아니다. |
: 특정 테이블에서 데이터가 조회될 때 출력되는 행의 순번을 의미하는 Pseudo칼럼이다.
SELECT 원하는 칼럼들 FROM 테이블명 WHERE ROWNUM 제한조건;
: 내장 함수 중 입력값에 대해서 단 하나의 출력값을 리턴하는 함수를 말한다.
: 문자를 입력하면 문자나 숫자 값을 반환한다.
LOWER, UPPER, SUBSTR, LENGTH, LTRIM, RTRIM, TRIM, ASCII
SQL | 설명 |
---|---|
LOWER | 소문자로 변환한다. |
UPPER | 대문자로 변환한다. |
SUBSTR | 문자열의 원하는 문자의 처음과 끝을 지정하여 출력한다. |
LENGTH | 문자열의 길이를 구한다. |
CONCAT | 원하는 문자열들을 합친다. |
RTRIM | 오른쪽에 있는 공백을 제거한다. |
LTRIM | 왼쪽에 있는 공백을 제거한다. |
ASCII | 알파벳에 해당하는 아스키 코드값을 반환한다. |
CHR | 아스키 코드에 해당하는 문자값을 반환한다. |
: 숫자를 입력하면 숫자 값을 반환한다.
ABS, MOD, ROUND, TRUNC, SIGN, CHR, CEIL, FLOOR, EXP, LOG, LN, POWER, SIN, COS, TAN
SQL | 설명 |
---|---|
ABS | 절대 값을 반환한다. |
SIGN | 입력값이 양수면 1, 음수면 -1, 0이면 0을 리턴한다. |
MOD | 나머지 값을 반환한다. |
CEIL | 무조건 올림한다. |
FLOOR | 무조건 내림한다. |
ROUND | 소수점 n번째 자리에서 반올림한다. ex)ROUND(숫자,원하는 소수점 자리) |
: DATE 타입의 값을 연산한다.
SYSDATE, EXTRACT, TO_NUMBER
SQL | 설명 |
---|---|
SYSDATE | 현재 년월일시분초를 출력한다. |
SYSDATE -(1/24) | 현재에서 1시간 빼기 |
SYSDATE -(1/24/60) | 현재에서 1분 빼기 |
EXTRACT | 년 ,월 ,일 택하여 출력한다. ex) EXTRACT(YEAR FROM SYSDATE),EXTRACT(MONTH FROM SYSDATE) |
TO_NUMBER | 년, 월, 일, 시, 분, 초 택하여 출력한다. ex) TO_NUMBER(TO_CHAR(SYSDATE, 'YYYY')) |
TO_CHAR | 년, 월, 일, 시, 분, 초 택하여 문자열로 출력한다. ex) TO_CHAR(SYSDATE, 'YYYY') |
: 문자, 숫자, 날짜형의 데이터형을 다른 데이터형으로 형변환한다.
TO_NUMBER, TO_CHAR, TO_DATE, CONVERT
: NULL을 처리하기 위한 함수이다.
NVL, NULLIF, COALESCE
SQL | 설명 |
---|---|
NULLIF('문자열','문자열' | 두 문자열이 다르면 첫 번째 문자열을 출력한다. |
NVL(NULLIF('문자열','문자열'),'같음') | 두 문자열이 같아 NULL을 출ㄹ력하고 NVL함수로 NULL이면 '같음'으로 출력한다. |
COALESCE(NULL, NULL, '문자열') | NULL이 아닌 첫 번째 인자를 출력한다. |
모든 데이터는 자신만의 데이터형(데이터 타입)을 가지고 있다.
데이터형을 변환하는 것을 데이터 형변환 이라고 한다.
: 데이터 형변환 함수로 데이터형을 변환하도록 명시해 주는 경우이다.
SQL | 설명 |
---|---|
TO_CHAR(SYSDATE, 'YYYY/MM/DD' | 날짜형을 문자형으로 변환한다. |
TO_CHAR(10.25, '$999.999.999') | 숫자형을 문자형으로 변환한다. |
TO_NUMBER('100')+TO_NUMBER('100') | 문자형을 숫자형으로 변환한다. |
TO_DATE(TO_CHAR(SYSDATE,'YYYYMMDD'),'YYYYMMDD') | 날짜형을 문자형으로 변환 후 문자형을 다시 날짜형으로 변환한다. |
: DBMS가 자동으로 데이터형을 변환하는 경우이다.
CASE 표현
: 특정 값에 대해서 조건에 따라 각기 다른 값을 리턴하도록 하는 것
종류 | 설명 |
---|---|
CASE WHEN 조건 THEN 값 혹은 SQL문 ELSE 값 혹은 SQL문 END | 조건이 맞으면 THEN절을 수행하고 그렇지 않으면 ELSE절을 수행한다. |
DECODE(조건1, 값1, 조건2, 값2, 디폴트 값) | 조건1이 TRUE면 값1을 가져오고 그렇지 않고 조건2가 TRUE이면 값2를 가져오고 그렇지 않으면 디폴트 값을 가져온다. |
: 각각의 그룹별로 단 하나의 행을 리턴해주는 함수를 말한다.
DEFAULT 옵션으로 생략이 가능하다.
유일한 값을 출력한다.
- 중복이 제거된 값만 출력한다.
항목 | 결과 |
---|---|
COUNT(*) | NULL값을 포함한 행의 수를 출력한다. |
COUNT(표현식) | 표현식의 값이 NULL이 아닌 행의 수를 출력한다. |
SUM(표현식) | 표현식이 NULL 값인 것을 제외한 합계를 출력한다. |
AVG(표현식) | 표현식이 NULL 값인 것을 제외한 평균을 출력한다. |
MAX(표현식) | 표현식이 NULL 값인 것을 제외한 최대값을 출력한다. |
MIN(표현식) | 표현식이 NULL 값인 것을 제외한 최소값을 출력한다. |
STDDEV(표현식) | 표현식이 NULL 값인 것을 제외한 표준편차를 출력한다. |
VARIAN(표현식) | 표현식이 NULL 값인 것을 제외한 분산을 출력한다. |
: WHERE절과 유사한 기능을 하지만 WHERE절이 테이블에서 추출할 행을 제한한다고 하면 HAVING절은 그룹핑한 결과집합에 대한 조건을 주어 추출할 집계 데이터를 제한하는 역할을 한다.
결과집합을 출력할 때 사용자가 원하는 조건에 따라 분기처리하여 결과집합을 출력할 수 있다.
: SELECT문에서 조회한 데이터 집합을 특정 칼럼 기준으로 정렬한 후 데이터를 출력하는 역할이다.
오라클은 ORDER BY절에 기재한 칼럼의 값이 NULL이면 가장 큰 값이라고 인식한다.
- ORDER BY 절에서 NULL값이 존재하는 칼럼을 기재하고 내림차순 정렬을 한다면 해당 행의 칼럼값이 NULL인 행이 결과집합의 맨 위로 올라오게 된다.
ORDER BY절을 사용할 떄 SELECT문에 GROUP BY절을 사용한 경우 반드시 SELECT절에 기재한 칼럼 혹은 표현식을 ORDER BY절에 기재해야 한다.
조회를 원하는 데이터 집합이 특정 칼럼의 정렬 기준에 따라 부분적으로 조회하고 조회 연산을 멈추게 하는 것을 말한다.
OREDR BY절
+ ROWNUM
조건을 결합
: 2개 이상의 테이블을 연결 또는 결합하여 데이터를 출력하는 것을 말한다.