1장
- DB : DataBase
- DBMS : DataBase Management System -> 데이터 베이스를 다루는 기능 제공
- RDBMS : Relational DataBase Management System (SQL을 다루는 데베)
- SQL : RDBMS를 조작하는 언어
- DML : Data Manipulate Language -> 데이터 추가.삭제.갱신 등
- DDL : Data Definition Language -> 데이터 객체 정의
- DCL : Data Control Language -> 트랜젝션 제어
데이터베이스의 종류
-
계층형 데이터베이스
: 폴더와 파일의 계층구조로 저장하는 오래된 방식의 DB
ex) HDD,DVD 파일시스템 ...
-
관계형 데이터베이스
: 관계대수에서 착안한 행과 열을 가지는 표 형식 데이터
-
객체지향 데이터베이스
: 객체 그대로를 데이터로 저장하는 것
-
XML 데이터베이스
: XML형식의 데이터를 저장, SQL 대신 XQuery 사용
XML이란?
태그를 이용해 마크업 문서를 작성할 수 있도록 한 자료형식
-
KVS
: 키-벨류 스토어, 키와 값의 형태로 데이터를 저장 -> 열 지향 DB
데이터베이스 서버
많은 RDBMS가 클라이언트/서버 모델을 채택해 가동하고있다.
클라이언트는 서버에 접속요청,SQL명령 실행 요청을 보내고 서버는 이를 처리하여 응답한다.
- 웹 시스템에서의 클라이언트/서버
: 클라이언트는 브라우저에서 웹서버 요청을 보냄 -> Request
웹서버는 요청을 받아 HTML로 된 데이터로 처리 -> Response
- RDBMS의 클라이언트/서버
: 클라이언트의 사용자인증 이 필요하다
웹 애플리케이션의 구조
웹 서버에서 동적으로 HTML을 생성하기 위해선 제어용 프로그램이 필요하다.
-> CGI 확장방식 사용을 통해 프로그램과 웹 서버 간을 연동,통신하여 처리한다
- 클라이언트 브라우저 -> 웹 서버에 요청
- 서버에서 CGI로 프로그램 실행 -> 프로그램이 동적으로 HTML 생성
실제로 DB에 접속하는 것은 CGI프로그램이다.
웹 서버의 CGI프로그램이 DB의 클라이언트가 된다.(DB에게 요청을 하므로)
2장
SELECT
- select * from [table명];
- 애스터리스크(*) 는 모든 열을 의미한다
- 예약어와 데이터베이스 객체명은 대소문자를 구별하지 X
- 테이블은 행과 열로 구성된 표 형식의 데이터다
- 열은 하나의 자료형(문자형,수치형 등)만 가질 수 있다
NULL
- 값이 없는 데이터로 아무것도 저장되어있지 않은 상태를 의미한다
DESC
- desc [테이블명];
- 해당 테이블에 어떤 열이 정의되어 있는지 알 수 있다

- NULL은 널값을 허용할 것인지의 여부
자료형
- INTEGER형
: 정수값의 자료형
- CHAR 형
: 문자열 자료형. CHAR(10)으로 지정했을 경우 최대 10문자의 문자열을 저장할 수 있다. 또한 길이가 고정되기때문에 최대 길이보다 작을 경우 공백 문자로 나머지를 채운 후 저장.
- VARCHAR 형
: 문자열 자료형. CHAR과 달리 데이터 크기에 맞춰 저장공간의 크기도 변경된다. 가변 길이 문자열 자료형
- DATE 형
: 날짜값을 저장할 수 있는 자료형
- TIME 형
: 시간 자료형
검색 조건 지정
- select 열1,열2 from 테이블명 where 조건식;
: 열을 한정하는 방법. 여러개를 지정할 수 있다.
조건식) no = 2; -> no열의 값이 2와 동일한 경우의 행만 반환함
조건식) no <> 2; -> no열의 값이 2가 아닌 행만 반환
조건식) name = '김선미'; -> name 열 값이 '김선미'인 행만 반환
문자열 리터럴은 싱글쿼트로 감싸 표현해줘야함
조건식) 열 IS NuLL -> 열의 값이 Null인 행만 추출
no = null 검색은 불가
조건 조합
- 조건식1 AND 조건식2
: 2개의 조건식을 만족해야함
- 조건식1 OR 조건식2
: 조건식1 또는 2를 만족하면 됨
주의
where no=1 OR 2; -> 두번째 조건식 2는 상수 논리연산으로 항상 참이됨
whre no=1 OR no=2; -> 올바른 조건식
우선순위
AND가 OR보다 우선순위가 높음
-> 괄호로 묶어 조건 설정을 잘 해두자
NOT 조합
- select * from sample where NOT(a<>0 OR b<>0);
: 조건식인 행을 제외한 나머지 행을 검색후 반환
LIKE로 패턴 매칭
- select * from sample where text LIKE 'SQL%';
: text 열이 SQL을 포함하는 행을 검색
LIKE 에서는 메타문자 %(임의의 문자열)와 _를 사용할 수 있다
메타문자를 검색시에는 \를 통해 이스케이프 필요
문자열 상수 '의 이스케이프
'를 이스케이프 하기 위해선 -> '' 와 같이 두개를 연속해 기술하면 됨