- 프로그램 실행 결과를 출력
- 컴퓨터 화면 : 휘발성
- 파일 : 영구저장, 동시에 최신의 정보 공유 X
- 데이터 베이스 : 영구 저장, 동시에 최신의 정보 공유 O
- 데이터베이스 관리 시스템 ( DBMS ,DataBase Management System)
- 데이터 베이스 관리 시스템을 통하여 데이터베이스를 사용한다.
- 종류 : Oracle, Mysql, MsSql, mariaDB,...
- 데이터 베이스 종류
- 관계형 데이터 베이스
- 대체적으로 관계형 데이터 베이스를 많이 사용한다.
- 우리가 학습하는 오라클은 "관계형 데이터 베이스"에 해당한다.
- 관계형 데이터베이스는 기업의 정보구조를 여러 개의 테이블로 나타낸다.
- 각 테이블은 행과 열로 구성되어 각각의 테이블은 서로 관계가 있도록 만들어진다
- 관계가 있다라는 말은 두개의 테이블에 공통으로 들어가는 Column(속성) 이 있는 것이다.
- 예를 들어 부서관ㄹ히 시스템에서 부서의 정보를 저장하기 위한 부서 테이블의 속성으로는 부서번호, 부서명, 부서위치가 있다고 한다.
- 부서
부서번호 부서명 부서위치
10 기획팀 판교
20 개발팀 광화문
30 총무팀 광화문 - 이 부서에 소속된 사원의 테이블 속성으로는 사원번호, 사원명, 급여 그리고 어느 부서에 속해있는지 부서 번호가 있어야 한다.
- 사원
사원번호 사원명 급여 부서번호
1000 변시우 500 20
1001 임유나 500 10 - 이와 같이 2개의 테이블에 부서 번호라는 속성이 공통으로 들어가 있다. 이것을 우리는 관계에 있다라고 말한다.
- 이론적으로 관계의 종류도 많이 있지만 우리가 학습할 관계는 "주종관계(부모자식관계)" 이다.
- 2개의 테이블에 데이터가 먼저 들어가야 하는 것을 부모로 본다.
- 객체 데이터 베이스
- 관계형 데이터 베이스
- 데이터베이스 명령어의 종류
- 데이터 정의어(DDL, Data Definition Language)
- 테이블이나 개체를 생성, 수정, 삭제하는 명령
- (테이블 구조를 변경하는 수정 및 테이블 자체 삭제 등)
- 데이터 제어어(DCL, Data Control Language)
- 사용자를 생성, 삭제, 권한을 부여, 권한 취소
- 데이터 조작어(DML, Data Manipulation Language)
- 레코드를 추가, 수정, 삭제, 조회하는 명령
- 여태까지 했던 executeUpdate, executeQuery 등의 명령어가 여기에 속한다.
- 데이터 정의어(DDL, Data Definition Language)
- 식별자(primary key)를 테이블에 정해놓아야한다. 식별자를 설정해야 관계를 설정할 수 있다
- 주 식별자 : 다른 record 와 구분이 되도록하는 항목
- 없어도 테이블 자체는 만들어진다.
- 부모의 pk가 자식에 관계가 있도록 설정해야 한다. \
- 참조키 : 반드시 자식은 부모에 있는 주 식별자를 참조해야한다.
- 서점 관리 시스템을 위한 3개의 테이블 만들기 예시
- 도서(도서번호, 도서명, 가격, 출판사)
- book(bookid*, bookname, price, publisher)
- 고객(고객번호, 고객명, 주소, 전화)
- customer(custid*, name, address, phone)
- 주문(주문번호, 고객번호, 도서번호, 주문가격, 주문일)
- order(orderid*, custid+, bookid+, saleprice, orderdate)
- 여기서 * 항목은 식별자(pk)를 표시한 것이다.
- 여기서 +항목은 참조키를 표시한 것이다.
- book 테이블은 book을 주식별자(primary key)로 설정하여 다른 레코드와 구별하도록 한다.
- customer 테이블은 custid 를 주식별자(primary key)로 설정하여 다른 레코드와 구별하도록 한다.
- orders 테이블은 orderid를 주식별자(primary key)로 설정하여 다른 레코드와 구별하도록 한다.
- orders 테이블에 custid 는 반드시 customer 테이블에 존재하는 custid 가 되도록 설정한다.(참조키 설정 - foreign key)
- 또, orders 테이블의 bookid는 반드시 book 테이블에 존재하는 bookid 가 되도록 설정한다.(참조키 설정 - foreign key)
- primary key : 테이블을 만들 때 다른 레코드와 구별할 수 있는 속성이 필요한데, 이것을 "주식별자"라고 하며 주 식별자를 설정하기 위하여 primary key 로 한다.
- foreign key : 두 개의 테이블을 관계로 설정할 떄 자식 테이블의 어떤 속성을 부모의 주식별자를 참조하도록 하기 위하여 사용한다.
- 제약 사항을 건다.
- 도서(도서번호, 도서명, 가격, 출판사)
예시 코드
- 테이블 생성
create table customer(
custid number primary key,
name varchar2(20),
address varchar2(20),
phone varchar2(20)
);
create table book(
bookid number primary key,
bookname varchar2(50),
price number,
publisher varchar2(50)
);
create table orders(
orderid number primary key,
custid number references customer(custid),
bookid number references book(bookid),
saleprice number,
orderdate date
);
- book에 record 추가
- 위에서 pk가 아닌 것을 괄호안에 넣으면 에러가 뜬다.
insert into book(bookid, bookname, publisher, price) values(3, '축구의 이해', '대한미디어', 13000);
insert into book(bookid, bookname, publisher, price) values(4, '골프 바이블', '대한미디어', 35000);
insert into book(bookid, bookname, publisher, price) values(5, '피겨 교본', '굿스포츠', 8000);
insert into book(bookid, bookname, publisher, price) values(6, '역도 단계별 기술', '굿스포츠', 6000);
insert into book(bookid, bookname, publisher, price) values(7, '야구의 추억', '이상미디어', 20000);
insert into book(bookid, bookname, publisher, price) values(8, '야구를 부탁해', '이상미디어', 13000);
insert into book(bookid, bookname, publisher, price) values(9, '올림픽 이야기', '삼성당', 7500);
insert into book(bookid, bookname, publisher, price) values(10, 'Olympic Champion', 'Pearson', 13000);
- 표 보이는 포맷 설정
- select * from book 하면 column 이 넓어져서 위와같이 나오므로 format을 지정해준다.
column bookid format 9999;
//4자리를 본다는 뜻
column bookname format a20;
//20자
column price format 999,999;
//가격 쉼표 표시
column publisher format a20;
//20자
- 이 구문은 끄면 다시 쳐야 하므로 명령어를 파일에 저장 후 실행한다.
SQL > ed ff
//해당 파일에 아래 입력 후 저장
column bookid format 9999;
column bookname format a20;
column price format 999,999;
column publisher format a20;
//위 파일 실행
SQL > @ff
- customer record 추가
insert into customer values(1, '박지성', '영국 맨체스터', '000-4040-1000');
insert into customer values(2, '김연아', '대한민국 서울', '201-4040-1000');
insert into customer values(3, '장미란', '대한민국 강원도', '101-4040-1000');
insert into customer values(4, '추신수', '미국 클리블랜드', '000-4040-1000');
insert into customer values(5, '박세리', '대한민국 대전', '000-4040-1000');
- 컬럼 자료형 변경
- 한글은 한 글자 표현하기 위해서 varchar2(3) 필요하다.
- 입력하려는 대한민국 강원도는 varchar2(20)으로는 부족하다는 오류가 뜬다
- 30칸으로 column의 자료형을 수정하는 법
- 여기서 충돌난 행만 다시 써줘야 한다.(충돌 안들어간건 잘 들어감)
alter table customer modify address varchar2(30)
- orders 테이블 record 추가
- 박지성이 축구의 역사를 6000원에 오늘 날짜에 주문
- 주문 번호는 1
- 박지성이라는 이름 대신 bookid를 넣어야 한다.
- 축구의 역사라는 이름 대신 bookid 를 넣어야 한다.
- 관계에 있는 주 식별자 값이 record에 들어간다.
- 박지성이 축구의 역사를 6000원에 오늘 날짜에 주문
insert into orders values(1, 1, 1, 6000, '2024/05/10');
insert into orders values(2, 1, 3, 21000, '2024/05/03');
insert into orders values(3, 2, 5, 8000, '2024/06/03');
insert into orders values(4, 3, 6, 6000, '2024/06/04');
insert into orders values(5, 4, 7, 20000, '2024/06/05');
insert into orders values(6, 1, 2, 12000, '2024/06/07');
insert into orders values(7, 4, 8, 13000, '2024/06/07');
insert into orders values(8, 3, 10, 12000, '2024/06/08');
insert into orders values(9, 2, 10, 7000, '2024/06/08');
insert into orders values(10, 3, 8, 13000, '2024/06/10');
- 데이터베이스 명령어는 중 DML 을 SQL(Structured Query Language-구조적 질의 언어)를 부른다. 특히 조회하는 명령어에 한정해서 말하기도 한다. 시퀄이라고 줄여 말하기도 한다.
- DML(데이터 조작어)
- insert : 레코드 추가
- update : 레코드 수정
- delete : 레코드 삭제
- select : 레코드 조회(가장 많이 보게 될 명령어)
- 관계형 데이터 베이스 자체를 SQL 이라고도 한다.
- 관계형 데이터 베이스 자체만으로는 빅데이터를 표현하기 어렵다는 얘기가 있다(정형화된 포맷) 그래서 SQL 만으로 안된다는 개념으로 no-sql 이 생겼다.(시간 되면 no-sql도 수업)
- 단, sql 은 기본으로 해야 한다.(익숙하고 잘 알때만
'Kosta DevOps 과정 280기 > Java' 카테고리의 다른 글
DB- 데이터 조회하기 -2 (0) | 2024.06.11 |
---|---|
DB- 데이터 조회하기 (0) | 2024.06.10 |
데이터베이스 프로그램-3 (0) | 2024.06.07 |
데이터 베이스 프로그램-2 (0) | 2024.06.05 |
데이터 베이스 프로그램 (0) | 2024.06.04 |