본문 바로가기
개발자로 가는 길(국비지원과정)/2. Oracle

[210517월] 오라클 데이터베이스의 특징, SELECT 조회명령문,

by 레아Leah 2021. 5. 17.
반응형

hr 계정 만료되면 cmd에서 다시 설정해주기, 지난 금요일 수업 자료 확인

: alter user hr identified by hr account unlock; 

 

 

[Data와 Information의 차이]

▶ Data: 무작위로 수집된 값들(원석) 

▶ Information : 데이터를 정제해서 의사결정할 수 있는 형태로 만든 것(보석)

 

 

[데이터베이스의 특징]

- 데이터 무결성(Ingegrity)

: 결점이 없는 데이터(데이터를 100%로 신뢰), 데이터의 중복성을 감소, 무결성 유지를 위해 데이터를 쪼갠다(정규화). 

- 독립성(Indepedency) 유지 

- 중복성 감소 

- 보안성 

- 공유성

- 일치성 

 

 

▶저장은? 

1) File :

- HDD 공유하기가 어렵고 파일을 저장한 사람만이 파일에 접근할 수 있다. 

- 단점: 특정 어플리케이션에 종속적이다.  

 

2) DBMS

- RDBMS(관계), 오라클 등등 

 

▶ SQL(Structured Query Language)

: 즉각적으로 명령의 값을 보여준다. 

: SQL/PL-SQL 절차(Procedure)를 넣은 것 

 

- DDL(create, alter, drop) : Object 객체를 정의 

  Object(table, user, index, view, synonym(동의어), sequence)

 

- DML(insert, update, delete, select) : 테이블 안의 값을 조작! 

 

1) select 컬럼명... from 테이블명

특정 컬럼명을 모를 경우 *을 사용, select *... from 테이블명; 

 

- DCL(grant, revoke)

 

- TCL(commint, rollback,savepoint)

  savepoint : rollback하는 위치를 설정 

  commint, rollback을 어느 시점에 할 것이냐가 중요하다

  원자성(ALL or Null) : 다 되던지, 다 안되던지

 

- SQL에서는 대소문자 모두 사용가능하다. 

 

[주석 처리]

▶ 한 줄 주석 처리: --

▶  여러 줄의 주석 처리 : /**/

 

 

hr계정에 기본으로 제공되는 7가지

: COUNTRIES, DEPARTMENTS, EMPLOYEES, JOB_HISTORY, JOBS, LOCATIONS, REGIONS

 

[region]

 

[select 조회명령문] 

오라클 실행: 초록색 버튼 or Ctrl + Enter

 

[locations]

Location_ID = Primary Key(PK)

Country_ID = Foreign Key(FK) 

 

 

[countries]

컬럼명을 보고 부모테이블이 어느 것인지 알 수 있어야 한다. 

 

[departments]

null은 정보가 없다. 

Primary Key항상 NN(Not Null) + Unique 해야한다.

Foreign KeyNN도 허용가능

 

PK : Not Null, Unique

FK : Null, Duplicate

 

▶ 오라클의 한 줄 주석 처리 : --

 

[employees]

▶ 데이터 타입의 종류

- char(크기) : 고정길이 문자열 

 ex) char(10) : 'abc' -> 'abc' 

 

- varchar2(크기byte) : 가변길이 문자열 VARiable

ex) VARCHAR2(20) : 'abc'의 데이터를 입력하면 17자리의 Byte가 남는 것, 숫자 20이 의미하는 것은 최대로 들어갈 수 있는 길이이며, 그 숫자에 따라 입력되어질 수 있는 데이터가 달라진다. 

 

- number(3) : 정수 3자리 999까지 허용한다.  1000는 불가능, 자리수의 크기를 지정

- number(3, 2) : 소수점 상위 자리는 3자리까지, 소수점 하위 자리는 2자리까지 999.99

- number : 자바에서의 Integer  

- date '1919/01/01' 1919년 1월 1일, sysdate(시스템에 있는 날짜를 그대로 사용하겠다) 

- timestamp (많이 사용하지 않는다.)

JOB_ID는 employees 테이블의 Foreign Key

 

[jobs]

[employees table]

( , 2): 소수점 이하 2자리까지 표시 

이름은 VARCHAR2(바차2 : 문자열 20byte를 저장)

데이터타입으로 boolean이 들어갈 수 없어 VARCHAR와 CHAR 

 

[desc (sqlplus 명령)] : 해당 테이블 설명 

: desc  테이블명

 

[select 조회문 만들어 보기]

 

[중복된 데이터를 제거하고 싶다면 DISINCT]

SELECT DISTINCT 컬럼명 FROM 테이블명

 

[부서명을 내림차순으로 정렬]

 

[사번, 이름, 부서번호, 급여 직급]

 

 

[특정 칼럼으로 내림차순 or  오름차순 정렬할 때]

SELECT 컬럼명 FROM 테이블명

ORDER BY  해당 컬럼명 DESC/ ASC

 

내림차순을 뜻하는 DESC이 없으면 오름차순(ASC)을 뜻한다. 

 

 

[조건을 주어서 조회하고 싶을 때(WHERE 조건식)]

- 조건식에는 비교연산자를 사용할 수 있다. 

- 비교연산자 : =, !=, >, <, >=, <=

ORDER BY는 가장 하단에 있다. 

더보기

SELECT 컬럼명 FROM 테이블명 
WHERE 조건식 
ORDER BY 컬럼명 DESC/ASC; 

 

[조건식 : 급여가 10000이상인 사람의 이름, 급여, 부서]

[조건식 : 급여가 1000이상인 사람의 이름, 급여, 부서번호 급여별로 내림차순 정렬]

 

[조건식 : 100번 부서에 소속된 사람들의 이름, 급여를 이름순으로 오름차순 정렬하여 조회]

WHERE DEPARTMENT_ID = 100 

ORDER BY FIRST_NAME (ASC); 

 

 

[조건식: 조건식 : 100번 부서에 소속된 사람들의 이름, 입사일, 급여를 이름순으로 오름차순 정렬하여 조회]

 

[조건식: 전체 직원들을 대상으로 이름, 입사일, 급여]

 

 

[HIRE_DATE를 가지고 날짜 타입의 리터럴을 어떻게 표시하는지]

값(Literal)의 표시
문자열 : ' '(자바처럼 " "는 리터럴로 사용되지 않는다.) 

숫자: 24, 42.195

날짜: '01/01/09'

 

▶ 데이터 타입의 종류 

- char(크기) : 고정길이 문자열 

 ex) char(10) : 'abc' -> 'abc' 

 

- varchar2(크기byte) : 가변길이 문자열 VARiable

ex) VARCHAR2(20) : 'abc' 17자리의 Byte가 남는 것, 20는 최대로 들어갈 수 있는 길이 

 

- number(3) : 정수 3자리 999까지 허용한다.  1000는 불가능, 자리수의 크기를 지정

- number(3, 2) : 소수점 상위 자리는 3자리까지, 소수점 하위 자리는 2자리까지 999.99

- number : 자바에서의 Integer  

- date '1919/01/01' 1919년 1월 1일, sysdate(시스템에 있는 날짜를 그대로 사용하겠다) 

- timestamp (많이 사용하지 않는다.)

 

 

[sysdate][systimestamp]

 

select sysdate from dual;

sysdate에 해당하는 테이블이 존재하지 않는다. 

가상의 테이블 DUAL을 사용하여라! 

 

 

 

 

select sysdate, systimestamp from dual;

systimestamp 시간까지 나타냄! 

 

 

 

 

as 키워드: 별칭

as + 별칭 

"별칭"을 사용하는 경우는 하나의 단어라는 것을 알려주는 용도 혹은 특수문자가 들어갈 경우이다. 

 

[조건식: 조건문을 날짜를 기준으로 하고 싶을 때]

다이아나가 입사하기 전, 들어온 사원

 

[조건식: 입사일이 '07/02/07' 이후에 입사한 사람을 날짜별로 오름차순 조회]

이것도 다시 해보기 

 

 

정렬을 두 가지 기준으로 [조건식: 이름, 입사일, 급여를 조회, 부서번호별 오름차순, 이름순 오름차순]

부서가 같은 경우 이름순으로 

 

[조건식: 이름, 입사일, 급여, 커미션 정보 조회]

 

[조건식: 커미션 정보와 값이 NULL이 아닌 데이터를 조건으로 사용할 때]

where commission_pct is not null; 

 

[조건식: 커미션 안받는 사람 = COMMISSION_PCT IS NULL;]

 

[조건식: 매니저가 없는 사람의 이름, 성씨, 직급을 조회]

[DUAL : 가상의 테이블]

: DUAL 테이블은 오라클의 최고 권한 관리자인 SYS 소유의 테이블로 SCOTT 계정도 사용할 수 있는 더미 테이블이다. 임시 연산이나 함수의 결과 값 확인 용도로 사용되고, 특정 연산 또는 단일 결과만을 확인할 때 사용한다. 

 

 SELECT '당신의 이름은 'Willam입니다.' FROM DUAL; 

'당신의 이름은 Willam입니다.' FIRST_NAME 안에 들어 있음 

SQL에서 문자열은 ' '로 나타낸다. " " 아니니까 주의 바람! 

값으로 쓸 때는 ' ' 

AS를 사용할 때는 "특수문자 or 하나의 단어"임을 알리기 위해

 

★[문자열 결합 연산자 : || ]

SELECT '당신의 이름은 '  || FIRST_NAME || '입니다. ' AS "이름" 

FROM EMPLOYEES; 

반응형