1. 데이터베이스
- 더 효율적인 데이터 관리 뿐 아니라, 예기치 못한 사건으로 인한 데이터 손상을 피하고, 필요한 데이터를 복구하기 위한 강력한 기능을 지원하는 시스템을 DBMS(Database Management System)라고 한다.
- 데이터베이스의 발전
1960년대 | 플로우차트 중심의 개발 방법을 사용, 파일 구조로 데이터를 저장 및 관리했다. |
1970년대 | 계층형 데이터베이스, 망형 데이터베이스 같은 제품들이 상용화되기 시작함 |
1980년대 | 현재 대부분 기업에서 사용하는 Oracle, Sybase, DB2와 같은 제품이 사용됐다. |
1990년대 | Oracle, Sybase, DB2, Informix, Teradata, SQL Server 외 다양한 제품이 더 향상된 기능으로 발전함. 인터넷 환경의 급속한 발전에 맞춰 객체지향 정보를 지원하기 위해 객체 관계형 데이터베이스로 발전했다. |
- 관계형 데이터베이스
- 1970년 Codd 박사가 처음으로 관계형 데이터베이스(Relational Database)를 소개.
- 관계형 데이터베이스는 정규화를통한 '합리적인 테이블 모델링'을 통해 이상(anomaly) 현상을 제거하고 데이터 중복을 피할 수 있으며, 동시성 관리와 병행 제어를 통해 더 많은 사용자가 동시에 데이터를 공유 및 조작할 수 있는 기능을 제공한다.
- 여기에 DBMS는 보안 기능, 무결성 보장, 회복 및 복구 기능을 제공한다.
2. SQL
- SQL(Structured Query Language): 관계형 데이터베이스에서 데이터 정의, 조작, 제어하기 위해 사용하는 언어.
- SQL은 1986년부터 ANSI/ISO를 통해 표준화하고 정의됨
아래는 SQL 문장의 종류이다.
명령어의 종류 | 명령어 | 설명 |
데이터 조작어, DML | SELECT | 데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어 |
INSERT UPDATE DELETE |
데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류의 명령어 | |
데이터 정의어, DDL | CREATE ALTER DROP RENAME |
테이블과 같은 데이터 구조를 정의하는 데 사용되는 명령어로, 구조를 생성, 변경, 삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령어 |
데이터 제어어, DCL | GRANT REVOKE |
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어 |
트랜잭션 제어어, TCL | COMMIT ROLLBACK |
논리적인 작업 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션)별로 제어하는 명령어 |
3. STANDARD SQL 개요
1970년 | Dr. E.F.Codd 관계형 DBMS(Relational DB) 논문 발표 |
1974년 | IBM SQL 개발 |
1979년 | Oracle 상용 DBMS 발표 |
1980년 | Sybase SQL Server 발표, 이후 Sybase ASE로 개명 |
1983년 | IBM DB2 발표 |
1986년 | ANSI/ISO SQL 표준 최초 제정(SQL-86 = SQL1) |
1992년 | ANSI/ISO SQL 표준 개정(SQL-92 = SQL1) |
1993년 | MS SQL Server 발표(Windows OS, Sybasde Code 활용) |
1999년 | ANSI/ISO SQL 표준 개정(SQL-99 = SQL3) |
2003년 | ANSI/ISO SQL 표준 개정(SQL:2003) - 현재 사용되는 데이터베이스의 표준 |
2006년 | ANSI/ISO SQL 표준 개정(SQL:2006) |
2008년 | ANSI/ISO SQL 표준 개정(SQL:2008) |
2011년 | ANSI/ISO SQL 표준 개정(SQL:2011) |
2016년 | ANSI/ISO SQL 표준 개정(SQL:2016) |
- 현재 기업형 DBMS는 순수 관계형 데이터베이스가 아닌, 객체 지원 기능이 포함된 객체관계형(Object Relational) 데이터베이스가 대부분이다.
- 대표적인 ANSI/ISO 표준 SQL의 기능은 다음 내용을 포함한다.
1. STANDARD JOIN 기능 추가(CROSS, OUTER JOIN 등 새로운 FROM 절 JOIN 기능들)
2. SCALAR SUBQUERY, TOP-N QUERY 등의 새로운 SUBQUERY 기능들
3. ROLLUP, CUBE, GROUPING SETS 등의 새로운 리포팅 기능
4. WINDOW FUNCTION 같은 새로운 개념의 분석 기능들
가. 일반 집합 연산자
- E.F.CODD 일반 집합 연산자: UNION(합집합), INTERSECTION(교집합), EXCEPT(차집합), CROSS JOIN(Cartesian Product)
나. 순수 관계 연산자
- 관계형 데이터베이스를 구현하기 위해서 새롭게 만들어진 연산자
1. SELECT 연산 - WHERE 절
2. PROJECT 연산(선택) - SELECT 절
3. (NATURAL) JOIN 연산 - 다양한 JOIN 기능으로 구현됨
4. DIVIDE 연산은 ... 현재 사용되지 않는다.
UNION 연산 | UNION |
INTERSECTION 연산 | INTERSECT |
DIFFERENCE 연산 | EXCEPT(Oracle = MINUS) |
PRODUCT 연산 | CROSS JOIN |
SELECT 연산 | WHERE 절 |
PROJECT 연산 | SELECT 절 |
(NATURAL) JOIN 연산 | 다양함 |
DIVIDE 연산 | 사용되지 않음 |
4. 테이블
- 테이블(TABLE): 관계형 데이터베이스의 기본 단위로, 데이터를 저장하는 객체(Object)로 칼럼-행이라는 2차원 구조로 나타낸다.
- 칼럼: 세로 방향으로 이루어진 하나 하나의 특정 속성
- 행: 가로 방향으로 연결된 데이터
- 정규화: 테이블을 분할해 데이터의 정합성을 확보하고, 불필요한 중복을 줄이는 프로세스
- 기본키: 테이블에 존재하는 각 행을 한 가지 의미로 특정할 수 있는 한 개 이상의 칼럼
- 외부키: 다른 테이블의 기본키로 사용되고 있는 관계를 연결하는 칼럼
5. ERD
- ERD(Entity-Relationship-Diagram): 테이블 간 서로의 상관관계를 그림으로 도식화한 것
- IE 표기법과 바커 표기법에서 차이가 난다.
6. 데이터 유형
데이터 유형 | 설명 |
CHARACTER(n) | - 고정 길이 문자열 정보로, Oracle, SQL Server 모두 CHAR라고 표현한다. - n은 기본 길이 1바이트 - n 만큼 최대 길이 및 고정 길이를 가지고 있으므로 할당된 변수 값의 길이가 n보다 작을 경우, 그 차이 길이만큼 '공간'으로 채워진다. |
VARCHAR(n) | - 가변 길이 문자열 정보로 Oracle은 VARCHAR2로, SQL Server는 VARCHAR로 표현 - s 만큼 최대 길이를 가지지만 가변 길이로 조정이 되기 때문에 할당된 변수값의 바이트만 적용된다. |
NUMERIC | - 정수, 실수 등 숫자 정보로, 오라클은 NUMBER로 고정되있으나 SQL Server는 다양한 숫자 타입이 존재 - 오라클은 처음에 전체 자리 수를 지정하고, 그 다음 소수 부분 자리 수를 지정한다(NUMBER(8,2)) |
DATETIME | - 날씨와 시각 정보로 오라클은 DATE, SQL SERVER는 DATETIME으로 표현 - 오라클은 1초 단위, SQL SERVER는 3.33ms 단위 |
'SQLD' 카테고리의 다른 글
2-1-3. 함수 (0) | 2022.09.20 |
---|---|
2-1-2. SELECT 문 (0) | 2022.09.20 |
1-2-5. 본질식별자 VS 인조식별자 (0) | 2022.09.19 |
1-2-4. NULL 속성의 이해 (0) | 2022.09.19 |
1-2-3. 모델이 표현하는 트랜잭션의 이해 (0) | 2022.09.19 |