-
[데이터베이스] Oracle의 특징과 데이터베이스 명령어의 종류º Database º/Oracle 2023. 4. 18. 23:53
프로그램 실행결과를 화면에 출력하면 그것은 프로그램을 종료하거나 컴퓨터 끄면 사라지게 되는 "휘발성"입니다.
만약에 프로그램을 실행결과를 "영구적"으로 보관하려고 한다면 "파일"을 이용할 수 있겠죠?
그러나 파일을 그 데이터에 대하여 이해관계에 있는 사람들이 동시에 최신의 정보를 공유하기에는 어려움이 있어요.
이해관계에 있는 여러사람이 동시에 최신의 자료를 공유하기 위해서 "데이터베이스"를 이용합니다.Data :자료 / Base : 쌓아놓은 더미 = DataBase : 자료 더미^^
* 데이터베이스 관리 시스템(Database management System)
- 데이터 베이스 관리 시스템은 종류가 다양합니다.
Mysql, Oracle... 등이 있습니다.
* SQL (Structured Query Language)
- SQL 이란 구조화된 질의 언어로 데이터베이스를 사용하기 위한 명령어 입니다.
* JDBC (Java DataBase Connection)
- JDBC란 자바에서 데이터베이스에 연결하는 프로그램을 말합니다. (수정 추가 삭제 등등..)
* Oracle 사용법
1. 사용자 만들기
- 기본 명령어 : create user 사용자 이름 indentified by 암호;
예시 ) sist/sist를 아이디 비번으로 넣는다면? -> create user c##sist identified by *****;
사용자 이름에는 차별성을 주기 위해 c##을 추가해줍니다.
2. 권한부여
- 기본 명령어 : grant 권한명1, 권한명2...to사용자이름
예시 ) grant connect, resource, dba to c##sist;
3. cmb 명령 프롬프트에서 사용자 만들어 권한 부여하기
C:\Users\user>sqlplus system/manager
> Oracle이 잘 설치 되었는지 확인합니다.
다음에 접속됨:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0SQL> create user c##sist identified by *****;
> 사용자가 생성되었습니다.
SQL> grant connect, resource, dba to c##sist;
> 권한이 부여되었습니다.
SQL> exit
> Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0에서 분리되었습니다.C:\Users\user>sqlplus c##sist/*****
> 다음에 접속됨:
Oracle Database 21c Express Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.04. 테이블 만들기
create table 테이블이름(칼럼명1, 자료형1, 칼럼명2, 자료형2,...);
예시) create table student(name varchar2(20), kor number, eng number, math number);
* 데이터베이스 명령어
1. DDL(Data Definition Language)
- 데이터 정의어 : 데이터 베이스를 생성, 삭제, 수정하는 명령어들을 말합니다.
2. DCL(Data Control Language)
- 데이터 제어어 : 데이터 베이스 권한을 부여하거나 권한을 제거하는 명령어들을 말합니다.
3. DML(Data Manipulation Language)
- 데이터 조작어 : 자료를 추가하거나 수정, 삭제, 조회, 검색하는 명령어를 말합니다.---> 개발자들은 주로 DML을 수행하게 됩니다.
1) 데이터의 조회(검색)
select 컬럼명1, 컬럼명2,... from 테이블명 [where 조건식];
연습) 김연아 고객의 전화번호를 검색.
select phone from customer where name ='김연아';
연습) 도서의 이름과 가격을 출력.
select bookname, price from book;
연습) 고객이름과 주소를 출력
select name, address from customer;
연습) '2023/04/01'에 주문된 도서번호, 고객번호, 주문가격을 출력
select bookied, custid, saleprice from orders where orderdate='2023/04/01';
연습) 도서번호 9번의 도서명과 출판사를 출력
select bookname, publisher from book where bookied=9;
-> 내가 실행한 sql을 기준으로 index 순서를 따져야한다.* 중복 데이터 제거 : distinct
- 출력하고자 하는 테이블에 중복값이 없이 출력하고자 할 때에는 'distinct'를 사용하여 제거해줍니다.
연습) book 테이블에 있는 모든 출판사 중복 데이터를 제거하여 출력
select distinct publisher from book;
* 조건에 맞는 검색
- 조건식에 다양한 산술, 비교, 논리연산자를 사용할 수 있어요.
+, -, *, /
>, >=, <, <=, =, [!=, <>(같지않음)]
and, orselect ~~ from ~~ where 조건식;
연습) 가격이 10000원 미만인 도서 정보 출력
select * from book where price < 10000;
연습) 가격이 10000~ 20000 사이 모든 도서 출력
select * from book where price >= 10000 and price <= 20000;* between A and B
- 어떤 범위에 있는 연산자를 사용하려면 between을 사용하면 됩니다.
연습) 10000원~20000원 사이의 도서를 출력
select * from book where price between 10000 and 20000;
* in (값1, 값2,...)
연습) 출판사가 굿스포츠이거나 대한미디어인 도서의 정보를 출력
select * from book where publisher in ('굿스포츠', '대한미디어');
* not in(값1, 값2...)
연습) 출판사가 '굿스포츠'도 아니고 '대한미디어'도 아닌 출판사의 모든 도서목록을 출력
select * from book where publisher not in ('굿스포츠','대한미디어');
* like 연산자
- 문자열의 패턴을 검색하고자 할 때 사용하는 연산자입니다.
% : 모르는 아무글자(글자수상관없음)
_ : 모르는 한글자(한글자)연습) 대한민국에 거주하는 고객의 정보를 검색하고자 한다.
select * from customer where address like '대한민국%'; (대한민국으로 시작하는 아무글자나 와라)
연습) 도서명의 축구를 포함하는 모든 도서의 정보를 출력합니다.
select * from book where bookname like '%축구%';
연습) 도서명의 두번째 글자가 '구'인 모든 도서명과 출판사명의 정보를 출력해봅니다.
select bookname, publisher from book where bookname like'_구%';* 복합 조건
- 조건식에 2개이상의 조건을 판별해야 할 때 and, or를 사용합니다.
연습) 축구와 관련한 도서 중 가격이 2만원 이상인 도서에 정보를 출력하세요.
select * from book where bookname like '축구%' and price>=20000;* order by
- 자료를 특정 컬럼의 값의 순서대로 정렬하여 출력하고자 할 때 사용합니다.
정렬 : 오름차순 정렬 (값이 작은 순서대로 출력) : asc(기본)
내림차순 정렬 (값이 큰 순서대로 출력) : desc연습) 가격 순으로 정렬하여 모든 도서의 정보를 출력
오름차순 : select * from book order by price;
내림차순 : select * from book order by price desc;* 1순위, 2순위 정렬
연습) 출판사명에 '미디어'를 포함하는 출판사의 모든 도서정보를 출력합니다. 가격이 높은 순으로 출력하고 가격이 동일할 때에는 도서번호 순으로 출력합니다.
select * from book where publisher like '%미디어%' order by price desc, bookied;연습) 굿스포츠나 대한미디어나 이상미디어에서 출판하는 도서중에 가격이 7000원 이상인 도서를 출력
단, 출판사 순으로 출력하고 동일할 때에는 가격순으로 출력합니다.
select * from book where publisher in ('굿스포츠', '대한미디어', '이상미디어') and price>=7000 order by publisher, price;* 집계 함수
- 레코드의 수, 총합, 평균, 최대값, 최소값을 위한 함수들
- count, sum , avg, max, min레코드의 수 : select count(price) from book;
레코드의 총합 : select sum(price) from book;
레코드의 평균 : select avg(price) from book;
레코드의 최대값 : select max(price) from book;
레코드의 최소값 : select min(price) from book;
- 집계함수는 숫자에다가만 써야하는데 숫자 아닌 문자의 경우는 count만 사용가능하다. *개수를 구해줌연습) 축구관련 도서는 모두 몇권인가요?
select count(*) from book where bookname like '%축구%';
연습) 20000원 이상인 도서는 모두 몇권인가요?
select count(*) from book where price>=20000;
연습) 1번 고객이 주문한 건수는 모두 몇권인가요?
select count(*) from orders where custid=1;
연습) 1번 고객의 총 주문금액을 출력합니다.
select sum(saleprice) from orders where custid=1;
연습) 굿스포츠의 평균 도서가격을 출력합니다.
select avg(price) from book where publisher='굿스포츠';+ 집계함수의 결과는 1건입니다.
그래서 다른 컬럼과 같이 사용할 수 없어요!!!
그러나 ~별로(group by) 나타낼 때에는 여러 컬럼을 사용할 수 있습니다.* group by
- 특정 칼럼의 값의 종류별로 집계함수를 나타내고자 할 때 사용합니다.
예시) select publisher, avg(price) from book group by publisher;
- publisher의 값의 종류만큼 평균값이 나옵니다.
연습) 고객번호 별로 주문건수와 총주문금액, 평균주문금액을 출력
select custid, count(*), sum(saleprice), avg(saleprice) from orders group by custid;'º Database º > Oracle' 카테고리의 다른 글
[ORACLE] 오라클 테이블 컬럼 추가/수정/삭제 (ALTER) (0) 2023.07.15 [데이터베이스] 서브쿼리 (중첩질의), 셀프조인, left(right) outer join 정리노트 (0) 2023.05.15 [데이터베이스] Oracle 서점관리시스템 만들기 연습하기 (0) 2023.04.22 [데이터베이스] Oracle DML 자료의 추가, 조회, 수정, 삭제 (0) 2023.04.22