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 |