학원 - Oracle
1. Database(DB)
- DBMS : Database Management System(데이터 관리 시스템)
- 효율적인 데이터 관리를 위한 조건
* 데이터를 통합하여 관리
* 일관된 방법으로 관리
* 데이터 누락 및 중복 제거
* 여러 사용자(응용 프로그램 포함)가 공동으로 실시간 사용 가능
- 여러 응용 프로그램이 사용할 데이터를 한곳에서 관리하기 위해 데이터베이스를 활용함
- 보통 DB와 DBMS를 따로 구별하지 않고 DB 또는 데이터베이스로 칭함
- 관계형 데이터베이스(Relational Database)
* 관계형 데이터 모델 개념을 바탕으로 데이터를 저장 및 관리하는 데이터베이스
* 1980년대 후반부터 가장 많이 사용되고 있는 데이터베이스의 한 종류
* MS-SQL, MySQL, MariaDB, Oracle 등 다양한 데이터베이스 관리 시스템이 있음
- SQL : Structured Query Language
* 관계형 데이터베이스(RDBMS)에서 데이터를 다루고 관리하는 데 사용하는 데이터베이스 질의 언어
* RDBMS에게 데이터에 관해 물어보고 결과를 얻음
* SQL을 사용하여 데이터베이스에서 여러 데이터 관련 작업을 수행할 수 있음
2. Oracle - 데이터 입력 후 조회 실습
- SQL에서 주석은 -- 뒤에 작성(단축키 : ctrl + /
)
- select ~ from (~where)
문으로 원하는 데이터를 필터링하여 조회 가능
* select : column 추리기
* from : 데이터가 있는 곳(테이블)
* where : row 추리기. 특정 조건의 데이터만 조회할 때 선택적으로 사용
- distinct()
: 중복 제거 함수
-- 우리 회사에 어떤 부서가 있을까?
-- 부서 table: dept / 부서명 column: dname
select deptno, dname
from dept; -- select에서 선택된 모든 데이터 조회
-- 사원들이 근무하는 부서 조회
select distinct (deptno) --중복되는 부서 제외하여 조회
from emp;
- 연결 연산자 : ||
select ename || '의 직급은 ' || job || '입니다.'
from emp;
- 동등 연산자 : =
- 문자열은 '문자열'의 형태로 작성(홑따옴표 사용)
select ename, sal
from emp
where ename = '김사랑' or ename = '조인성';
- as
(alis)
* 별칭. 다른 이름으로 데이터명을 사용할 수 있음.
* 설정을 따로 하지 않으면 select에서 사용한 명칭으로 데이터가 조회됨
* as를 생략하고 사용 가능하며 공백을 포함하려면 "" 안에 작성
- nvl
(null value) : null 처리 함수. 값이 null인 데이터인 경우 어떻게 처리할지 설정
Javascript의 undefined 개념으로 이해하는 것이 좋음
select ename, sal as 월급, sal + 100 인상급여, sal * 12 + nvl(comm, 0) "연 봉", comm
from emp;
- between A and B
: A와 B 사이(A와 B를 포함)
- not
: 부정. Java에서 !의 의미
-- 급여가 400 ~ 500인 사원
select ename, sal
from emp
where sal between 400 and 500;
-- where 400 <= sal and sal <= 500;와 같은 의미
-- 급여가 400 ~ 500이 아닌 사원
select ename, sal
from emp
where sal not between 400 and 500;
-- where sal < 400 or sal > 500;
-- where not (400 <= sal and sal <= 500);
- in
: or
의 조건이 여러개 있을 때 사용 가능
-- 커미션이 80이거나 100이거나 200인 사원 조회
select ename, comm
from emp
where comm in (80, 100, 200);
--where comm = 80 or comm = 100 or comm = 200;
3. 간단한 문제 풀기
-- Q1. 급여가 300 이하인 사원의 사원번호, 사원명, 급여 조회
select ename, deptno, sal
from emp
where sal <= 300;
-- Q2. 이름이 오지호인 사원의 사원번호, 사원명, 급여 조회
select ename, deptno, sal
from emp
where ename = '오지호';
-- Q3. 급여가 250이거나 300이거나 500인 사원들의 사원번호, 사원명, 급여 조회
select ename, deptno, sal
from emp
where sal in (250, 300, 500);
-- Q4. 급여가 250도, 300도, 500도 아닌 사원의 사원번호, 사원명, 급여 조회
select ename, deptno, sal
from emp
where sal not in (250, 300, 500);
개인 학습 - Thread
1. Thread
- 스레드의 우선순위
* setPriority(int newPriority)
: 스레드의 우선순위를 지정한 값으로 변경
* getPriority()
: 스레드의 우선순위를 반환
* 우선순위의 값에 따라 스레드가 얻는 실행시간이 달라짐(달라질 것이라 기대)
* 시각적인 부분이나 사용자에게 빠르게 반응해야 하는 작업을 하는 스레드의 우선순위는
다른 작업을 수행하는 스레드에 비해 높아야 함
ex) 메신저 우선순위: 채팅 내용 전송 > 파일 다운로드 처리
- 데몬 스레드
* 다른 일반 스레드의 작업을 돕는 보조적인 역할을 수행하는 스레드
ex) 가비지 컬렉터, 워드프로세서 자동저장 등
* 일반 스레드가 모두 종료되면 데몬 스레드는 강제 자동 종료
* 일반 스레드의 작성 방법, 실행방법과 동일
* 스레드 생성 후 실행 전(start()
호출 전)에 setDaemon(true)
을 호출하여 사용
* 데몬 스레드가 생성한 스레드는 자동으로 데몬 스레드가 됨
* isDaemon()
: 데몬 스레드인지 확인. 데몬 스레드면 true 반환
- 스레드의 상태
* NEW : 스레드는 생성되었으나 start()가 호출되지 않음
* RUNNABLE : 실행 중 또는 실행 가능 상태
* BLOCKED : 동기화블럭에 의해 일시정지됨
* WAITING, TIMED_WAITING : 스레드 작업이 종료되지는 않았으나 실행 가능하지 않은 일시정지 상태
TIMED_WAITING은 일시정지 시간이 지정된 경우
* TERMINATED : 스레드 작업 종료 상태