ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [데이터베이스] 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.0

    SQL> 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.0

     

     

    4. 테이블 만들기

     

    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, or

    select ~~ 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;

     

     

Coder yein