ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [데이터베이스] Oracle 서점관리시스템 만들기 연습하기
    º Database º/Oracle 2023. 4. 22. 19:50

    * 서점관리에 필요한 테이블을 만들어 봅시다. 

     

    1. 서점 관리 테이블에서 인스턴스들을 체크합니다.

     

    - 고객 ( 고객번호, 고객이름 , 주소, 전화)

    - 도서 (도서번호, 도서명, 출판사, 가격)

    - 주문 (주문번호, 고객번호, 도서번호, 구매가격, 구매일)

     

    2. 사용자 계정만들기 (DDL) 

    SQL> create user c##madang identified by *****;

     

    3. 권한부여하기 (DCL)

    SQL> grant connect,resource,dba to c##madang;

     

    4. 새로운 사용자로 데이터베이스에 접속합니다.

     

    아이디는 c##madang, 비번은 *****으로 표시하겠습니다.

     

    + 시스템 재연결하는 방법 (2가지)

      1) 기존의 연결을 끊고 다시 재접속 

     SQL> exit
     C:\Users\user>sqlplus system/manager
     SQL>sqlplus  c##madang/*****


      2) 연결 끊지 않고 conn으로 연결

     SQL>conn  c##madang/*****

     

    5. 테이블 만들기

     

    - create table 테이블이름 (컬럼1 자료형1, 컬럼2 자료형2...)

    - primary key : 중복 안된다는 뜻
    - references 테이블명( ) : 자식테이블이 부모테이블에서 주식별자를 참조할 때 쓰는 명령어

    고객 (고객번호, 고객이름, 주소, 전화)
    create table customer(
    custid number primary key,
    name varchar2(20),
    address varchar2(50),
    phone varchar2(20));
    도서(도서번호, 도서명, 출판사, 가격)
    create table book(
    bookied number primary key,
    bookname varchar2(50),
    publisher varchar2(50),
    price number);
    주문(주문번호, 고객번호, 도서번호, 구매가격, 구매일)
    create table orders(
    orderid number primary key,
    custid number references customer(custid),
    bookied number references book(bookied),
    saleprice number,
    orderdate date);

      

    6. 테이블 구조확인

      

    -  desc 테이블이름;

     

    SQL> desc student;
     이름                                      널?      유형
     ----------------------------------------- -------- ----------------------------
     NAME                                               VARCHAR2(20)
     KOR                                                NUMBER
     ENG                                                NUMBER
     MATH                                               NUMBER

     

     

    7. 행 추가하기 

     

    - null : 빈칸출력

     

    insert into customer values(1, '박지성', '영국 맨체스타', '000-5000-0001');
    insert into customer values(2, '김연아', '대한민국 서울', '000-6000-0001');
    insert into book values(1, '축구의 역사', '굿스포츠',7000); i
    nsert into book values(2, '축구의 이해', '나무수',13000);
    insert into book values(3, '축구하는 사람', '대한미디어',22000);
    insert into orders values(1,1,1,7000,'2023/04/01');
    insert into orders values(2,2,2,13000,'2023/04/01');
    insert into orders values(3,3,3,22000,'2023/04/01');

     

    8. 커밋하기 ( 추가자료 반영) : commit;

        롤백하기 ( 추가자료 취소) : rollback;

     

    9. cmd에 보여지는 글자 정돈을 위해 포맷

     SQL> ed ff 

    > 위와 같이 작성후 엔터를 누르면 ff.sql 메모장이 나타나게 됩니다.

     

    custid format 9999; 
    column name format a10;
    column address format a20;
    column phone format a20;
    column bookied format 9999;
    column bookname format a20;
    column publisher format a10;
    column price format 999,999;
    column  ororderid format 9999;
    column saleprice format 999,999;
    column orderdate format a15;

    > 메모장에 작성 하고 저장합니다. 

     

     SQL>@ff 

    > cmd창에 @ ff 를 작성하면 바로 글자정돈 포맷이 진행됩니다.

     


    저장해 둔 데이터들을 자바에서 데이터베이스에 연결하여 사용 합니다.

     

     

    1.  jdbc 프로그래밍 설정하기 

     

    - jdbc 드라이버를 프로젝트에 설정한다.

     

    자바 프로젝트 이름 오른쪽 단추 -> Properties -> Java Build path -> Libraries -> Classpath 
    -> Add External JARS..-> C:\app\SIST\product\21c\dbhomeXE\jdbc\lib\ojdbc8.jar 선택

     

     

    2. jdbc 프로그래밍 절차

     

    1) jdbc 드라이버를 메모리로 로드한다.

    - Class.forName("드라이버 이름");

    Class.forName("oracle.jdbc.driver.OracleDriver");


    2)  db서버에 연결한다.


    - Connection conn = DriverManager.getConnection("서버의주소","유저명","암호");
    - 서버의 주소 : "jdbc:oracle:thin:@아이피주소:포트번호:서비스명"

    유저명  "c##madang"   |    암호  "*****"

    Connection conn = DriverManger.getConnection("jdbc:oracle:thin:@localhost:1521:XE","c##madang" ,"*****");


    3) sql명령을 실행하기 위한 Statement 객체를 생성한다.

    Statement stmt = conn.createStatment();


    4) sql 명령을 실행한다. (2가지 방법)


    [1] 데이터 베이스 변경이 있는 명령(추가, 수정, 삭제)
    -> int re = stmt.executeUpdate(sql); 
    (성공적으로 명령을 수행한 레코드 수로 반환)

    [2] 데이터 베이스를 조회
    -> ResultSet rs =  stmt.executeQuery(sql);
    (검색한 결과를 ResultSet으로 반환) 

    5) 사용했던 자원들을 닫아줍니다.
    stmt.close();
    conn.cloese();

     

     

    자바와 jdbc 데이터베이스 연결 하기 위하여 최종적으로 이렇게 작성하시면 됩니다.

     

    try {
    			String sql = "insert into student values('"+name+"',"+kor+","+eng+","+math+")";
    			System.out.println(sql);
    			
    			//1. jdbc 드라이버를 메모리로 로드한다.
    			Class.forName("oracle.jdbc.driver.OracleDriver");
    			//2. db서버에 연결한다. 
    			Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "c##sist", "sist");
    			//3. sql명령을 실행하기 위한 Statement 객체를 생성한다.
    			Statement stmt = conn.createStatement();
    			
    			//4.sql 명령을 실행한다.
    			int re = stmt.executeUpdate(sql);
    			
    			if(re ==1) {
    				System.out.println("레코드를 추가하였습니다");
    			}else {
    				System.out.println("실패");
    			}
    			//5. 사용했던 자원들을 닫아줍니다.
    			stmt.close();
    			conn.close();
    		} catch (Exception e) {
    			System.out.println("예외발생 : "+ e.getMessage());
    		}
Coder yein