TIL #22-2

DuBu·2023년 7월 7일
0

일본IT JAVA 연수과정

목록 보기
38/61
post-thumbnail

mac에서 oracle setting

  • Docker 설치
  • terminal에 명령어 입력
$ docker run --name oracle11g -d -p 1521:1521 jaspeen/oracle-xe-11g
  • SQL Developer download 및 install (Oracle 계정 필요)
  • SCOTT.sql 생성 및 저장

일대일 채팅 구현(쓰레드 + Socket + IOStream)

import java.io.*;
import java.net.*;

public class OneToOneChatServer {
    private ServerSocket serverSocket;
    private Socket clientSocket;
    private BufferedReader in;
    private PrintWriter out;

    public void start(int port) {
        try {
            serverSocket = new ServerSocket(port);
            System.out.println("채팅 서버가 시작되었습니다. 포트 번호: " + port);

            clientSocket = serverSocket.accept();
            System.out.println("클라이언트가 접속했습니다.");

            in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            out = new PrintWriter(clientSocket.getOutputStream(), true);

            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                System.out.println("클라이언트: " + inputLine);
                out.println("서버 응답: " + inputLine);

                if (inputLine.equals("종료"))
                    break;
            }

            in.close();
            out.close();
            clientSocket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        OneToOneChatServer server = new OneToOneChatServer();
        server.start(1234);
    }
}
import java.io.*;
import java.net.*;

public class OneToOneChatClient {
    private Socket clientSocket;
    private BufferedReader in;
    private PrintWriter out;
    private BufferedReader stdIn;

    public void start(String serverName, int port) {
        try {
            clientSocket = new Socket(serverName, port);
            System.out.println("채팅 서버에 연결되었습니다.");

            in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            out = new PrintWriter(clientSocket.getOutputStream(), true);
            stdIn = new BufferedReader(new InputStreamReader(System.in));

            String inputLine;
            while ((inputLine = stdIn.readLine()) != null) {
                out.println(inputLine);
                System.out.println("서버 응답: " + in.readLine());

                if (inputLine.equals("종료"))
                    break;
            }

            in.close();
            out.close();
            stdIn.close();
            clientSocket.close();
        } catch (UnknownHostException e) {
            System.err.println("호스트를 찾을 수 없습니다: " + serverName);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        OneToOneChatClient client = new OneToOneChatClient();
        client.start("localhost", 1234);
    }
}

DB란?

DB는 데이터베이스(Database)의 약어로, 체계적으로 구성된 데이터의 모음을 의미합니다. 데이터베이스는 컴퓨터 시스템에 저장, 관리, 검색, 업데이트되는 정보의 집합입니다. 데이터베이스는 일반적으로 구조화된 형식으로 저장되며, 여러 사용자가 동시에 접근할 수 있습니다.

DBMS 란?

DBMS는 데이터베이스 관리 시스템(Database Management System)의 약어입니다. DBMS는 데이터베이스를 생성, 수정, 관리, 제어하는 소프트웨어 시스템입니다. DBMS는 데이터베이스의 구조를 정의하고 데이터에 대한 조작을 수행하며, 데이터의 보안, 무결성, 일관성을 유지합니다. 사용자와 데이터베이스 간의 인터페이스 역할을 수행하여 데이터베이스의 효율적인 사용을 가능하게 합니다.

DBMS 종류는?

  • 관계형 데이터베이스 관리 시스템 (RDBMS): 가장 널리 사용되는 DBMS 유형으로, 데이터를 테이블의 형태로 구성하고 관계를 통해 데이터를 연결합니다. 대표적으로 Oracle, MySQL, PostgreSQL, Microsoft SQL Server 등이 있습니다.
  • 객체 지향 데이터베이스 관리 시스템 (OODBMS): 객체 지향 프로그래밍의 개념을 데이터베이스에 적용한 DBMS입니다. 객체의 상속, 다형성 등을 지원하며, 자바와 유사한 객체 쿼리 언어를 사용합니다. 대표적으로 MongoDB, Redis 등이 있습니다.
  • 계층형 데이터베이스 관리 시스템 (HDBMS): 데이터를 트리 형태로 구성하는 DBMS입니다. 데이터의 구조가 트리 구조로 제한되는 단점이 있지만, 일부 응용 프로그램에 적합합니다. 대표적으로 IBM의 IMS가 있습니다.
  • 네트워크형 데이터베이스 관리 시스템 (NDBMS): 데이터를 그래프 형태로 구성하는 DBMS입니다. 다양한 관계를 표현할 수 있으며, 데이터베이스 간의 연결을 통해 데이터를 검색할 수 있습니다. 대표적으로 Integrated Data Store (IDS)가 있습니다.
  • 객체 관계형 데이터베이스 관리 시스템 (ORDBMS): 관계형 데이터베이스와 객체 지향 데이터베이스의 기능을 결합한 DBMS입니다. 관계형 데이터베이스의 장점과 객체 지향 모델의 장점을 모두 활용할 수 있습니다. 대표적으로 Oracle, PostgreSQL 등에서 객체 지향 기능을 지원합니다.

아래의 쿼리를 완성하시오.

-부서 번호(DEPTNO)가 20인 사원에 관한 정보만 출력

select * from emp where deptno = 20;

-1982년 1월 1일 이후에 입사한 사원을 출력하는 쿼리문

select * from emp where hiredate >= '1982/01/01';

-커미션(COMM)이 300 혹은 500 혹은 1400이 아닌 사원

select * from emp where comm not in (300,500,1400);

-커미션(COMM)이 300 혹은 500 혹은 1400인 사원 검색

select * from emp where comm in (300,500,1400);
  • 급여가 2000 미만이거나 3000 초과인 사원을 검색하는 쿼리문
select * from emp where sal not between 2000 and 3000;
  • 급여가 2000~3000 사이의 사원을 검색하는 쿼리문
select * from emp where sal between 2000 and 3000;

desc 명령어에 대하여 설명하시오.

DESC 명령어는 테이블의 구조를 역순으로 출력하는 명령어입니다. 특히 DESC는 "describe"의 약자로, 데이터베이스 객체(테이블, 뷰, 인덱스 등)의 구조 및 속성 정보를 출력하는데 사용됩니다. DESC 명령어를 사용하면 해당 객체의 컬럼 이름, 데이터 타입, 크기, 제약 조건 등의 정보를 확인할 수 있습니다.

0개의 댓글