본문 바로가기

Database/이론

[DB] 데이터베이스 용어

DB를 사용하기 위해서 cmd에서 접근할 수 있지만

SQL의 결과와 QUERY 검증 등을 위해서

보통의 개발자들은 개발자 툴이라는 것을 사용합니다.

DBeaver(디비버), MySQL - workBench, Oracle - SQL Developer 등이 있는데

저는 기존에 쓰던 Eclipse를 사용하려고 합니다.

주의할점은 sql파일을 실행할 때 파일을 하나만 남겨두고 사용해야합니다.

코드를 작성하고 여러 줄을 실행하고 싶다면 :

 그 줄들을 드래그해서 (덮어서)

alt + x

를 누르면 되고

이때는 실행할 모든 코드를 드래그 처리해야합니다.

또는 한줄만 실행하고 싶다면

해당 줄에 커서를 갖다 대고

als + s

를 누르면 됩니다.

 

create table person_puft(

p_name varchar2(10 char),

p_age number(3),

p_gender varchar2(2 char)

);

 

먼저 테이블을 하나 만들어보겠습니다.

테이블에 값은 insert를 사용해서 넣을 수 있습니다.

 

insert into person_puft values('홍길동', 10, '남');

insert into person_puft values('김길동', 20, '여');

insert into person_puft values('최길동', 30, '남');

 

넣은 것을 조회하기 위해서는

select문을 사용합니다.

 

select * from PERSON_PUFT;

 

 

Select문의 실행 결과를 조회해보면

데이터가 들어간 것을 확인할 수 있습니다.

 

용어는 모른 채 실습을 해봤는데요.

용어를 정리해보겠습니다.

테이블은 릴레이션이라고도 불리는데 데이터베이스에서

정보를 구분해서 저장하는 기본 단위입니다.

이는 행과 열로 이루어진 데이터의 집합입니다.

 

행(Row) : 테이블을 구성하는 데이터들 중 가로 부분 (→)에 해당합니다.

 

튜플(Tuple) 또는 레코드(Record) 라고도 불립니다.

 

열(Column) : 테이블을 구성하는 데이터들 중 세로 부분(↓)에 해당합니다.

 

필드(Field) 또는 속성(Atribute)이라고도 부릅니다.

 

스키마(Schema) : 테이블의 기본 구조를 정의한 것입니다. (위 테이블에선 테이블의 헤더 / 이름 , 나이, 성별)

속성과 자료타입을 갖고 있습니다.

 

인스턴스(Instance) : 테이블 결과 상 테이블에 저장되어 있는 데이터의 값을 의미합니다.

 

도메인(Domain) : 속성이 가질 수 있는 값의 집합입니다.

 

특정 속성에서 사용할 데이터의 범위는 사용자가 정의합니다.

예를 들어 선언문이

 

p_name varchar2(10 char) 면,

 

문자열을 최대 10글자까지 받겠다는 의미입니다.

그 이상 넘어가면 값이 받아지지 않게됩니다.

 

p_age number(3) 이면,

 

정수를 3자리까지만 받겠다는 의미입니다.

역시 넘어가면 값이 받아지지 않게됩니다.

 

insert into person_puft values('최길동', 1000, '남');

 

즉 이렇게 입력하면 오류가 나게 됩니다.

 

insert into person_puft values('홍길동', 10, '남');

insert into person_puft values('홍길동', 10, '남');

 

또 이렇게 중복을 입력할 수도 있는데

중복을 제거하려면

distinct라는 구문을 사용합니다.

 

select distinct * from PERSON_PUFT;

 

distinct는 select뒤에 붙여서 사용할 수 있습니다.

 

다음은 테이블의 특징에 대해서 알아보겠습니다.

 

테이블(릴레이션)의 특징

 

1. 속성은 단일 값만 가집니다. 

- 각 속성의 값은 도메인에 정의된 값만 가지며,

그 값은 모두 단일한 값이어야 합니다.

ex) p_age : 최대 3자리 정수로 된 값만 가지며,그 값은 여러개가 아닌 단 하나의 값이어야 합니다.

 

2. 속성은 서로 다른 이름을 가집니다.

각 속성마다 p_name, p_age, p_gender라는 이름을 가지고 있습니다.각 이름을 중복해서 만들면 안됩니다.

 

create table test(t_no number(3), t_no varchar2(10 char));

 

이런 식으로 column명이 죽복되면 오류가 뜨게 됩니다.

 

3. 한 속성의 값은 모두 같은 도메인 값을 가집니다.

- 1번이랑 같은 맥락으로 p_age : 최대 3자리 정수로 된 값을 가집니다.

 

4. 속성의 순서는 상관없습니다.

속성의 순서가 달라도 테이블의 스키마는 같기 때문입니다.

 

5. 테이블 내의 중복된 튜플은 허용되지 않습니다. (★)

똑같은 정보가 들어가게된다면 동일인물인지 다른인물인지 알수 없습니다.

즉, 모든 튜플에는 차별성이 있어야 합니다.

(생일을  축하하거나, 핸드폰 번호 추가 등등..)

 

SQL 명령문의 종류

1. 데이터 정의어 (DDL / Data Definition Language)

 

테이블이나 관계의 구조를 생성하는데 사용하며,

Create, Alter, Drop이 있습니다.

 

2. 데이터 조작어 (DML / Data Manipulation Language)

 

테이블에 데이터를 검색, 삽입, 수정, 삭제하는 용도로 사용하며,

Select, insert, Update, Delete(줄여서 CRUD)가 있습니다.

Select 문은 특별히 질의어(query)라고도 합니다.

 

3. 데이터 제어어 (DCL / Data Control Language)

 

데이터베이스에 접근하고 데이터들을 사용하도록

권한을 주고, 회수하는데 사용하며,

Grant, Revoke 등이 있습니다.

 

+  트랜잭션 처리어 (TCL / Transaction Control Language)

: DML에 의해서 조작된 결과를 '최소 작업 단위' (트랜잭션)

별로 제어하는 데 사용하며,

Commit, Rollback, SavePoint 등이 있습니다.

 

그래서 SQL이라는 언어로 DB를 제어해볼건데

DB메이커가 달라도 SQL은 거의 비슷합니다.

DB는 대소문자가 달라도 구별하지 않습니다.

낙타체는 통하지 않습니다.(dogAge) => DOGAGE

뱀체로 표현합니다. (DOG_AGE)

데이터는 대소문자를 구별합니다.

'Database > 이론' 카테고리의 다른 글

[DB] Oracle  (0) 2024.12.23
[DB] 데이터베이스  (0) 2024.12.23