오라클을 설치하고 cmd에서 설정
💡 **접속 명령어**cmd → system → (암호) manager → (명령어)sql
연결할 수 있는 권한, 리소스를 만들 수 있는 권한, dba 권한을 부여 명령어
💡 grant connect, resource, dba to 사용자이름; grant connect, resource, dba to c##madang;Oracle Developer 다운
Oracle SQL Developer Downloads
여기에 접속해서 버전에 맞는 것을 다운받는다.
프로그램 실행한 결과를 화면에 출력하면 컴퓨터를 끄면 그 내용은 사라지게 됩니다. 실행 결과를 영구적으로 저장하려면 파일에 기록할 수 있다. 그러나 파일은 다음과 같은 단점이 있다. 그 파일에 대한 이해관계에 있는 사람이 다수일 때 최신의 정보를 공유하기 어렵다.
이해관계에 있는 사람들이 항상 최신의 정보를 공유하기 위해서는 데이터베이스
를 이용합니다.
문서기반 NoSQL : MongoDB
관계형 데이터 베이스는 기업의 정보구조를 여러개의 테이블로 나타냅니다. 각 테이블은 행과 열로 구성되며 각각의 테이블은 서로 관계가 있도록 만들어집니다. 관계가 있다는 말은 두개의 테이블에 공통으로 들어가는 컬럼(속성)이 있다는 것입니다.
💡 예를들어, 부서관리 시스템에서 부서의 정보를 저장하기 위하여 부서 테이블의 속성으로는 부서 번호, 부서명, 부서 위치 있다고 하면 —- **부서** 부서 번호 부서명 부서위치 1 기획팅 판교 …. —- 이 부서에 소속된 사원 테이블의 속성으로는 사원 번호, 사원명, 급여 그리고 어느 부서에 속해 있는지 부서 번호가 있어야 한다.—-
사원
사원 번호 사원명 급여 부서번호
1 임유나 500 1
—-
이와 같이 두 개의 테이블에 부서 번호라는 속성이 공통으로 들어가 있다. 이것을 관계
가 있다고 한다.
데이터 정의어(Data Definition Language) : DDL
💡 테이블이나 개체를 생성, 수정, 삭제하는 명령어데이터 제어어(Data Control Language) : DCL
💡 사용자를 생성, 삭제, 권한 부여, 권한 취소하는 명령어데이터 조작어(Data Manipulation Language) : DML
💡 레코드를 추가, 수정, 삭제, 조회하는 명령어테이블 만드는 명령어
create table 테이블 이름(속성명 자료형, 속성명 자료형 ...);
create table student(name varchar2(20), kor number, eng number, math number);
desc 테이블이름 : 내가 만든 테이블 구조를 보여준다.
테이블에 자료 추가하는 명령어
insert into 테이블명 values(값1, 값2, …);
insert into student values('홍길동', 100, 100, 70);
문자열 데이터는 훗따음표(’)로 묶어줘야 한다.
여기서 값을 넣은 것을 반영하려면 commit;
명령어를 해야한다!
테이블의 식별 값이고 중복이 안되는 값
select 속성1, 속성2, .. from student;
select 컬럼이름 from 테이블이름 [where 조건식];
select kor from student where name = ‘김민’;
// 중복제거하고 출력
select DISTINCT publisher from book;
update 테이블명 set 컬럼1=값1, 컬럼2=값2,… [where 조건식];
delete 테이블명 [where 조건식];
create table book(
bookId number PRIMARY KEY,
bookName varchar2(50),
price number,
publisher varchar2(50)
);
drop table book;
select * from book;
create table customer(
custId number PRIMARY KEY,
name varchar2(20),
address varchar2(100),
phone varchar2(100)
);
create table orders(
orderId number primary key,
custId number REFERENCES customer(custId),
bookId number REFERENCES book(bookId),
salePrice number,
orderDate DATE default sysdate
);
desc book;
desc orders;
drop table orders;
insert into book values(1, '축구의 역사', 7000, '굿스포츠');
commit;
insert into book(bookId, bookName, price, publisher)
values(2, '축구아는 여자', 9000, '나무수');
insert into book(bookId, bookName, price, publisher)
values(3, '축구의 이해', 22000, '대한미디어');
insert into book(bookId, bookName, price, publisher)
values(4, '골프 바이블', 13000, '대한미디어');
insert into book(bookId, bookName, price, publisher)
values(5, '피겨 교본', 8000, '굿스포츠');
insert into book(bookId, bookName, price, publisher)
values(6, '역도 단계별 기술', 6000, '굿스포츠');
insert into book(bookId, bookName, price, publisher)
values(7, '야구의 추억', 20000, '이상미디어');
insert into book(bookId, bookName, price, publisher)
values(8, '야구를 부탁해', 3000, '이상미디어');
insert into book(bookId, bookName, price, publisher)
values(9, '올림픽 이야기', 7500, '삼성당');
insert into book(bookId, bookName, price, publisher)
values(10, '올림픽 챔피언', 10000, 'Pearson');
commit;
// 보기 좋게 정렬
column bookId format 9999;
column bookName format a20;
column price format 999,999;
column publisher format a20;
select * from book;
// 한글은 한글자 표현하기 위해서 varchar2(3)
insert into customer values(1, '박지성', '영국 맨체스타','010-5000-0001');
insert into customer values(2, '김연아', '대한민국 서울','010-5000-0002');
insert into customer values(3, '장미란', '대한민국 강원도','010-5000-0003');
insert into customer values(4, '추신수', '미국 클리블랜드','010-5000-0004');
insert into customer values(5, '박세리', '대한민국 대전', null);
select * from customer;
// 테이블 수정
alter table customer modify address varchar2(99);
// 데이터 수정
update customer set phone = '010-5000-0005' where custId = 5;
select * from customer where custId = 5;
insert into orders (orderId, custId, bookId, saleprice) values(1, 2, 5, 8000);
select * from orders;
SELECT b.bookName, c.name
FROM book b
JOIN customer c ON b.bookId = 2 AND c.custId = 5;
insert into orders (orderId, custId, bookId, saleprice, orderDate)
values(2, 1, 3, 8000, '2024/06/07');
insert into orders (orderId, custId, bookId, saleprice, orderDate)
values(3, 2, 5, 6000, '2024/06/01');
insert into orders (orderId, custId, bookId, saleprice)
values(4, 3, 6, 20000);
insert into orders (orderId, custId, bookId, saleprice)
values(5, 4, 7, 12000);
insert into orders (orderId, custId, bookId, saleprice, orderDate)
values(6, 1, 2, 13000, '2024/06/05');
insert into orders (orderId, custId, bookId, saleprice, orderDate)
values(7, 4, 8, 12000, '2024/05/05');
insert into orders (orderId, custId, bookId, saleprice)
values(8, 3, 10, 7000);
insert into orders (orderId, custId, bookId, saleprice)
values(9, 2, 10, 13000);
insert into orders (orderId, custId, bookId, saleprice, orderDate)
values(10, 3, 8, 7000, '2024/06/06');
insert into orders (orderId, custId, bookId, saleprice, orderDate)
values(11, 3, 8, 9000, '2024/06/10');
select * from orders;
// 고객들의 주소
select address from customer;
// 김연아 고객의 주소
select address from customer where name = '김연아';
// 대한미디어에서 출간하는 도서의 도서명과 가격을 조회
select bookName, price from book where publisher = '대한미디어';
// 대한미디어에서 출간하는 모든 도서의 도서번호, 도서명, 가격, 출판사 조회
select * from book where publisher = '대한미디어';
// 모든 출판사 목록을 출력
select publisher from book;
// 중복제거하고 출력
select DISTINCT publisher from book;
// 연습
// 가격이 20000원 이상인 도서의 목록을 출력
select * from book where price >= 20000;
// 출판사가 굿스포츠가 아닌 모든 도서 목록을 출력
select * from book where publisher <> '국스포츠';
// 2024년 6월 10일 주문한 도서번호와 고객번호를 출력
select bookId, custId from orders where orderDate = '2024/06/10';
// 이상미디어에서 출간하는 도서중에 가격이 20000원 이상인 도서번호, 도서명 출력
select bookId, bookName from book where price >= 20000 and publisher = '이상미디어';
// 이상미디어나 대한미디어에서 출간하는 도서의 도서번호, 도서명, 출판사명을 출력
select bookId, bookName, publisher from book
where publisher = '이상미디어' or publisher = '대한미디어';
select bookId, bookName, publisher from book
where publisher in ('이상미디어', '대한미디어');
// 이상미디어도 아니고 대한미디어도 아닌 출판사의 도서번호, 도서명, 출판사명 출력
select bookId, bookName, publisher from book where publisher not in ('이상미디어', '대한미디어');
// 이상미디어나 대한미디어에서 출판하는 도서중 가격이 20000이상인 도서번호, 도서명, 출판사명 출력
select bookId, bookName, publisher from book
where publisher in ('이상미디어','대한미디어') and price >= 20000;
// 가격이 10000원 이상 20000원 이하인 도서의 도서번호, 출판사명, 가격을 출력
select bookId, publisher, price from book where price BETWEEN 10000 and 20000;
// 대한미디어나 이상미디어에서 출판하는 도서중 가격이 10000원 이상 30000원 이하인 도서 정보 출력
select * from book where (price BETWEEN 10000 and 30000) and publisher in('이상미디어','대한미디어');
// 전화번호가 null인고객의 이름, 주소를 출력
select name, address from customer where phone is null;
// 전화번호가 null이 아닌 고객 정보 출력
select * from customer where phone is not null;