특정 기업이나 조직 또는 개인이 필요에 의해 데이터를 일정한 형태로 저장해 놓은 것
DBMS = 데이터베이스 관리 소프트웨어
종류
구성요소
엔티티(Entity) : 테이블
<엔티티의 예시 >
고객, 사원정보, 부서, 제품
주문서, 성적표, 입고전표, 금전출납부
생산계획, 공정
관계(Relationship) : 테이블간의 관계
속성(Attribute) : 테이블의 컬럼들
CHAR(L)
VARCHAR2(L), VARCHAR(L)
NUMBER(L,D)
숫자형 (L은 전체 자리 수 D는 소수점 자리 수)
DATE, DATETIME
CREATE TABLE 테이블명(
칼럼명1 데이터타입 [Default형식],
칼럼명2 데이터타입 [Default형식] CONSTRAINT 제약조건,
...
)
테이블 및 칼럼 명명 규칙
_
, $
, #
사용가능제약조건 - 복제 테이블에는 기존테이블 제약조건 중 NOT NULL만 적용
PRIMARY KEY : 기본키(UNIQUE + NOT NULL)
UNIQUE KEY : Null 가능, 행 고유 식별 가능
NOT NULL : Null 불가
CHECK : 입력할 수 있는 범위 등을 제한
FOREIGN KEY : 외래키, 참조 무결성 옵션 선택가능
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 FOREIGN KEY (컬럼명) REFERENCES 참조테이블명(참조컬럼명)
테이블 구조 확인
DESCRIBE 테이블명;
CREATE 를 이용하여 테이블 만들기
CREATE TABLE 테이블명_TEMP AS
(SELECT * FROM 테이블명);
ALTER TABLE 테이블명 ADD 추가컬럼명 데이터유형;
ALTER TABLE 테이블명 DROP COLUMN 삭제할컬럼명;
ALTER TABLE 테이블명 MODIFY 컬럼명 데이터유형 DEFAULT NOT NULL;
ALTER TABLE 테이블명 RENAME COLUMN (구)컬럼명 TO (신)컬럼명;
ALTER TABLE (구)테이블명 RENAME TO (신)테이블명;
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;
테이블 컬럼 추가 : ADD
테이블 컬럼 삭제 : DROP COLUMN
테이블 컬럼 형식 변경 : MODIFY
컬럼의 데이터유형, 디폴트값, NOT NULL, 제약조건에 대한 변경을 포함
고려 사항
1) NULL만 있거나 2) 행이 없는 경우에만 칼럼의 크기 축소 가능
NULL만 있을 때는 데이터 유형도 변경 가능
NULL이 없으면 NOT NULL 제약조건 추가 가능
기본값 변경 작업 이후 발생하는 데이터에 대해서만 기본값이 변경됨
테이블 컬럼 이름 변경 : RENAME COLUMN
테이블 이름 변경하기 : RENAME TO
제약사항 제거 : DROP CONSTRAINT
DROP TABLE 테이블명 CASCADE CONSTRAINT;
TRUNCATE TABLE 테이블명;
테이블의 데이터와 구조삭제 : DROP TABLE
테이블 데이터 삭제 : TRUNCATE TABLE
로그를 기록하지 않기 떄문에 ROLLBACK 불가(Auto Commit)
DML 명령어의 DELETE 명령어와 기능상은 유사하나, 처리방식자체가 다름
INSERT INTO 테이블명 (컬럼명, ...) VALUES (필드값, ...);
UPDATE 테이블명 SET 컬럼명=필드값;
DELETE FROM 테이블명 WHERE 조건절;
DELETE FROM 테이블명;
SELECT 컬럼명 FROM 테이블명;
SELECT DISTINCT 컬렴명 FROM 테이블명;
SELECT * FROM 테이블명;
SELECT 컬럼명 AS '별명'
FROM 테이블명 별명
()
> *
> /
> +
> -
CONCAT ("문자", "연결하기") /* 문자연결하기 */
"문자" || "연결하기"
||
+
SELECT SYSDATE FROM DUAL;
트랜잭션
트랜잭션의 특정
TCL의 역할
데이터 무결성 보장을 모적으로 함
영구 변경 전 확인 + 연관 작업 동시처리 가능
ORACLE에서
SQL문을 실행하면 트랜잭션이 시작됨
TCL을 실행하면 트랜잭션이 종료됨
DDL을 실행하면 자동 commit( DML 이후 커밋없이 DDL을 실행해도 자동 commit)
DB를 정상적으로 종료하면 자동 커밋, 애플리케이션 드으이 이상으로 DB 접속이 단절되면 자동 롤백
트랜잭션 대상이 되는 SQL
COMMIT 과 ROLLBACK을 사용함으로써 얻을 수 있는 효과
SAVEPOINT 포인트이름;
ROLLBACK TO 포인트이름;
SELECT 컬럼명 FROM 테이블명 WHERE 조건절;
연산자의 종류
=
, >
, >=
, <
, <=
AND
, OR
, NOT
!=
, ^=
, <>
(전부 다 같지 않다는 의미)문자 유형 간의 비교 방법
부분 범위 처리
SELECT 칼럼명 FROM 테이블명 ROWNUM <= N;
SELECT TOP(N) 칼럼명 FROM 테이블명; ( SQL Server )
LOWER(문자열) / UPPER(문자열)
ASCII(문자)
CHR/CHAR(ASCII번호)
CONCAT(문자열1, 문자열2)
||
혹은 +
와 동일 기능)SUBSTR(문자열, m[, n]) / SUBSTRING(문자열, m[, n])
LENGTH/LEN(문자열)
LTRIM(문자열 [, 지정문자]) / RTRIM(문자열 [, 지정문자]) /TRIM([ leading, trailing, both] 지정문자 FROM 문자열)
문자열 앞쪽부터 확인해 지정문자가 처음 나타나는 동안 해당 문자를 제거(기본값 공백)
문자열 뒤쪽부터 확인해 지정문자가 처음 나타나는 동안 해당 문자를 제거(기본값 공백)
머리말, 꼬리말, 양쪽 지정 문자 제거 기본값 both
ABS(숫자)
: 절대값 반환
SIGN(숫자)
: 양수, 0 , 음수 판별 (1, 0, -1 중 출력)
MOD(숫자1, 숫자2)
: 숫자1을 숫자2로 나누어 나머지값을 반환( % )
CEIL/CEILING(숫자)
: 크거나 같은 최소 정수 반환( 정수 값으로 올림 )
FLOOR(숫자)
: 작거나 같은 최대 정수 반환(정수 값으로 버림)
ROUND(숫자[, m])
: 소수점 m자리에서 반올림(생략시 0)
TRUNC(숫자[, m])
: 소수점 m자리 뒤에서 잘라서 버림(생략시 0) - ORACLE ONLY
SIN, COS, TAN, ...
: 삼각함수 값 변환
EXP(), POWER(), SQRT(), LOG(), LN()
: 지수, 거듭제곱, 제곱근, 자연로그
SYSDATE
/GETDATE()
: 현재 시각 출력(년,월,일,시,분,초)
EXTRACT("YEAR" | "MONTH" | "DAY" from d)
: 년/월/일 데이터를 추출
DATEPART('YEAR'|'MONTH'|'DAY', d)
: 년/월/일 데이터를 추출 동일
TO_NUMBER(TO_CHAR(d, 'YYYY'))
: 날짜에서 문자로 변환후 숫자로 변환
YEAR(d)
: 년 추출
NEXT_DAY
: 지정된 요일 첫 날짜 출력
날짜 연산
명시적 형변환 : 변환형 함수를 이용하여 데이터 타입 변환
암시적 형변환 : DBMS가 자동으로 데이터 타입 변환
[ Oracle ]
[ SQL Server ]
CAST (expression AS data_type [(length)]) - expression을 목표 타입으로 변환
CONVERT (data_type [(length)] expression[, style]) - expression 목표 타입 변환
NVL(칼럼, 값)
: NULL 값 변환NVL2(칼럼, 값, 값)
: NULL값이면 앞의 값 / NULL이 아니면 뒤의 값 출력NULLIF(값, 값)
: 같으면 NULL 다르면 첫 값 출력COALESCE(값, 값, ...)
: NULL 이 아닌 첫 값 출력ISNULL(칼럼, 값)
: NULL 이면 값으로 대치 아니면 컬럼 값 출력/* CASE */
SELECT 칼럼명,
CASE
WHEN 조건절1 THEN 출력값1
...
ELSE 기본값
END AS 칼럼명
FROM 테이블명;
/* DECODE */
DECODE(표현식, 기준값1, 값1, 기준값2, 값2, ... , DEFAULT 값)
WHEN NULL
하면 조건이 없음으로 모든 행에 기본값 출력집계함수명( ALL | DISTINCT 칼럼/표현식 )
: default값은 allCOUNT(*)
: NULL값을 포함한 모든 행의 수 출력COUNT(표현식)
: NULL 값인 것을 제외한 행의 수 출력SUM([ALL | DISTINCT] 표현식)
: NULL 값을 제외한 합계 출력AVG([ALL | DISTINCT] 표현식)
: NULL 값을 제외한 평균 출력MAX([ALL | DISTINCT] 표현식)
: 최대값 출력( 문자, 날짜, 데이터 사용 가능)MIN([ALL | DISTINCT] 표현식)
: 최소값 출력( 문자, 날짜, 데이터 사용 가능)STDDEV([ALL | DISTINCT] 표현식)
: 표준 편차를 출력VARIAN([ALL | DISTINCT] 표현식)
: 분산을 출력역할
특징
SELECT 컬럼명 AS `ALIAS명`
FROM 테이블명
WHERE 조건식
GROUP BY 칼럼/표현식
HAVING 그룹조건식
ORDER BY 컬럼/표현식 [ASC/DESC];
기본적인 정렬 순서는 오름차순(ASC) 이다.
SELECT 문장의 실행순서
5. SELECT 칼럼명 ALIAS명
1. FROM 테이블명
2. WHERE 조건식
3. GROUP BY 칼럼/표현식
4. HAVING 그룹조건식
6. ORDER BY 칼럼/표현식;
1. 발췌 대상 테이블 참조 (FROM)
2. 발췌 대상 데이터가 아닌 것은 제거 (WHERE)
3. 행들을 소그룹화 (GROUP BY)
4. 그룹핑된 값의 조건에 맞는 것만을 출력 (HAVING)
5. 데이터 값을 출력/계산 (SELECT)
6. 데이터를 정렬 (ORDER BY)