a battle with myself

[ANSI SQL] 1. SQL의 이해 본문

sql

[ANSI SQL] 1. SQL의 이해

열공_중 2016. 8. 2. 08:21

[1] SQL의 이해

SQL(S-Q-L로 각 문자를 따로 발음하거나 붙여서 sequel - 즉 시퀄 이라고 발음함)

Structured Query Language(구조적 쿼리 언어) 의 약자이다. SQL 은  데이터베이스와의 통신을 위해 특별히 고안된 언어이다.

 

SQL의 목적 - DATABASE의 제어

- 데이터베이스에서 데이터를 읽고 데이터베이스를 쓰기 위한 용도로 만들어진 언어

SQL 확장

-표준 SQL은 ANSI 표준 위원회에서 관리하고 있기 때문에 ANSI SQL 이라  부른다. 모든 주요 DBMS는 각자 확장 기능이 있지만 이 ANSI SQL을 충실하게 지원하며, PL-SQL, Transact-SQL 등과 같이 자신들의 SQL에 이름을 붙여 표현한다.

- 많은 DBMS 회사에서 SQL 을 지원하지만 자신들만의 고유한 문을 추가하는 경우가 많다. 이러한 확장은 추가 기능을 지원하거나 특정한 작업을 보다 간단하게 수행하기 위한것이며, 실제로 일부 추가 기능은 매우 유용하다. 각 확장 내용은 DBMS에 따라 다르고, 동일한 기능이 여러 회사의 DBMS에서 지원되는 경우는 드물다.

 

 

DATABASE : 구조적인 방식으로 저장된 데이터의 모음 (또는 컨테이너/ 대개 파일이나 파일 모음)

*  오해: 데이터베이스가 DBMS, 즉 데이터베이스 소프트웨어를 의미하는것으로 오인하는 경우가 있는데 잘못된 생각이며 혼란의 근원이다.

데이터베이스 소프트웨어는 DBMS,즉 데이터베이스 관리 시스템이며 데이터베이스는 DBMS를 사용해서 만들어지고 제어되는 컨테이너를 의미한다. 데이터베이스는 하드 드라이브에 저장된 파일일 수도 있으나 이는 별 의미가 없다. 대부분의 경우 데이터베이스 파일에 우리가 직접 액세스할 이유는 없고, DBMS를 거쳐서 사용하기 때문이다.

 

표(table) : 특정한 방식으로 data를 저장할 수 있는 구조적 목록으로 묶은것

          ex) 고객목록, 제목 ,카탈로그와 같은 특정한 주제에 관련된 정보를 담는 그릇

데이터베이스의 각 table에는 이름이 있다. 이 이름은 언제나 고유해야 하며 데이터베이스의 다른 table과 같은 이름을 사용해서는안된다.

*  참고: table 이름

- table 이름을 고유하게 만드는 것에는 데이터베이스 이름과 table 이름을 포함하여 여러 요소가 있다.

- 다른  database 에서의  같은 table 이름 지정 가능

- 여러 DBMS 마다 틀리겠지만 검색 시 유일성을 가지기 위해 서로 다른 이름을 가져야 한다.

 

더보기

표(table)-네이버 지식백과

(1) 사람은 여러 가지 「표」와 「일람표」를 보면서 일을 진행해간다. 컴퓨터의 경우는 이러한 「표」를 기억 장치 상에 미리 저장해놓고 필요에 따라서 참조(refer)할 수 있도록 계획해 둔다. 서로 관련 있는 데이터를 규정된 규칙에 따라서 기억 장치 상에 전개한 것을 「표」라고 한다. 배열(array)과 같은 뜻으로도 사용된다.
(2) 「표」 속에서 목적 데이터를 찾아내는 것을 테이블 색인(table look-up) 또는 색인(table search)이라고 한다. 「표」의 형식, 항목이 나열되어 있는 순서 등에 의하여 「찾아내는 데 필요한 시간」을 줄이기 위해서 여러 가지 수법이 고안되어 사용되고 있다.
(3) 관계 데이터 베이스(RDB)의 구성 단위가 되는 「표」 RDB에서는 데이터를 간단한 표(관계;릴레이션) 형식으로 표현하고, 이 표를 자유로이 종횡의 항() 지정으로 액세스할 수 있다. CODASYL데이터베이스에서의 각종 데이터 사이를 관계시킨 「포인터」에 대신하는 것.
[주] 데이터의 배열이며, 그 각 항목이 한 개 이상인 수(독립된 수)에 의하여 애매함 없이 식별할 수 있는 것.

[네이버 지식백과] [table] (컴퓨터인터넷IT용어대사전, 2011. 1. 20., 일진사)

 

 

스키마(schema):데이터베이스, 테이블 레이아웃 및 속성에 대한 정보

더보기

스키마(schema)-네이버 지식백과

(1) CODASYL이 제안한 DBMS(DBTGCOBOL)에서의 용어. 물리적인 장치로부터 논리적데이터 베이스 레코드(data base record)를 매핑(mapping)하는 데 사용되는 정의 정보를 말한다. 데이터 베이스논리 구조에는 데이터 베이스「전체 논리 구조」와 사용자 응용마다의「개별 논리 구조」두 가지 레벨이 있다. 이들의 구조로 내장되는「데이터의 정의」에는「전체 논리 구조 기술」과「개별 논리 구조 기술」이 있고, 전자를 스키마, 후자를 서브스키마라고 한다. 데이터 정의 기술에는 데이터 정의 언어(DDL)를 사용한다.
(2) 데이터 베이스의 기본 개념으로서 데이터 베이스가 대상으로 하는 실세계를 논의 영역(universe of discourse), 논의 영역에서 데이터 베이스에 필요한 정보를 추상화하는 모델을 데이터 모델(data model), 추상한 결과를 기술한 것을 개념 스키마(conceptual schema)라고 한다. 개념 스키마를 컴퓨터의 세계로 매핑한 것을 내부 스키마(internal schema)라 하고, 각 이용자 자신의 데이터 베이스를 구축하는 데는 개념 스키마를 어떻게 구성하는가가 더욱 중요한 점이다. 이용자의 데이터 시점에서 공통 항목을 추출해서 개념 스키마에 반영시키는 것이 필요하다.

[네이버 지식백과] 스키마 [schema] (컴퓨터인터넷IT용어대사전, 2011. 1. 20., 일진사)

 

열과 데이터 형식

table은 열로 만들어진다. 열은 table 내에서 특정한 정보 조각을 담는 역할을 한다.

 

열(column) : 테이블 내의 각  필드. 모든 테이블은 하나 이상의 열로 구성된다.

- 데이터 베이스의 각 열에는 데이터 형식이 지정된다.

데이터형식 : 허용되는 데이터의 종류

- 각 테이블 열에는 데이터 형식이 지정되어 그열에 저장할 수있는 데이터의 종류를 제한하게 된다.

- 데이터 형식은 데이터의 올바른 정렬에도 도움이 되며, 디스크 사용방식을 최적화 하는 데에도 중요한 역할을 한다.

 

* 데이터 형식 호환성

 데이터 형식과 그이름의 다양성은 SQL이 서로 호환되지 않도록 하는주요한 원인이다.물론 기본적인 데이터 형식은 대부분 지원 되지만,고급 데이터 형식 중에는 그렇지 않은 것도 많다. 특히 같은 데이터 형식을 DBMS마다 다른 이름으로 사용하는 경우도 있어 문제가 된다. 이 문제를 우리가 해결할 방법은 없지만 테이블 스키마를 만들 때 이 부분을 염두에 두기 바란다.

 

행(record) : 테이블 데이터는 행에 저장된다. 저장되는 각 레코드는 각자의 행에 담기게 된다.

*  참고: 레코드? 행?

행을 이야기할 때 데이터베이스 레코드 라고 하느 경우도 있다. 사실 두용어는 같은 의미로 보아도 좋다. 하지만 기술적으로 얘기하면 행이 보다 정확한 용어이다.

더보기

행(record)-네이버 지식백과

 

(1) 파일을 액세스할 때 실제로 읽고 쓰는 단위로서 사용되는 데이터 단위. 레코드라는 단어를 이 의미로 사용할 때 물리 레코드(physical record)라고 하여 다음 1의 의미와 구별한다. 하드웨어의 관련 문서에서는 주로 이 의미로 사용된다. 1의 관련된 항목(특정한 한 종류의 데이터를 포함하기 위해 사용되는 기억 구역)의 모임으로 프로그램에서 데이터를 다룰 때의 단위.

(2) (1)의 의미와 구별할 때는 논리 레코드(logical record)라고 한다. 논리 레코드는 그대로 물리 레코드가 되는 경우도 있지만 보통은 몇 조인가 묶어서 물리 레코드가 된다. COBOL 등에서는 물리 레코드는 블록이라고 일컫는다.

(3) 하나의 단위로 다루어지는 관련된 데이터 또는 단어의 집합. 예를 들면 재고 관리에서는 각각의 송장()이 하나의 레코드가 된다.

(4) 프로그램 언어에서 데이터 대상물로 이루어지는 집합체이며, 이들의 데이터 대상물은 각각 다른 속성을 가질 수 있고, 보통 식별자가 붙어 있다.

 

파일, 레코드, 필드의 관계

[주] 어떤 프로그램 언어에서는 레코드를 구조체라 불리는 경우가 있다.

[네이버 지식백과] 레코드 [record] (컴퓨터인터넷IT용어대사전, 2011. 1. 20., 일진사)