블로그 이미지
귓가를 스치는 음악소리도 즐길 줄 알자 ^^ Tyamo

카테고리

♥Tyamo♥ (159)
MyLifeStyle (79)
TOEIC (25)
Qualification (17)
Robotics (10)
Programing (4)
Trevel (4)
My Diary (14)
Wish List (5)
Network (0)
Total91,896
Today14
Yesterday20
1장에서는 조건 없이 그냥 선택된 컬럼의 모든 것을 보여 주었다. 하지만 이

를 선택해서 보는 방법을 2장에서 배운다. 이미 학교에서 배운 것들이지만

워낙 재미 없었던 수업이라 기억이 안나는 것이 치명적 ㅡ,.ㅡ ;;;;
 



Limiting Rows Using a selection

select employee_id, last_name, job_id, department_id
from employees
where department_id = 90;

where절을 사용하여 department_id가 90인 사람만 뽑아 내는 SQL문장이다.
The default date dormat is DD-MON-RR(형식구별 필요)

Using the between condition

select last_name, salary
from employees
where salary between 2500 and 3500

2500과 3500사이의 값들이 검색이 된다. 주의 할것은 2500과 3500도 포함이 된다는것
또한 where last_name between 'king' and 'smith' 이것은 아스키 코드값으로 검색한다.

Using the IN condition

select employee_id, last_name, salary, manager_id
from employees
where manager_id in ( 100, 101, 201);

복수의 조건을 걸수 있는 in 조건이다. 100.101.201에 속하는 것들을 출력한다. 물론 문자도
같이 사용할수 있다.

Using the like condition
% denotes zero or many characters.
_ denotes noe character.

select first_name
from employees
where first_name like 'S%';

S로 시작하는 이름을 검색하겠다는 의미이다. 뒤의 문자는 어떤길이여도 상관없음
S_는 S로 시작하는 두글자로된 문자를 검색하는 의미가 된다.

Using the NULL conditions
select last_name, manager_id
from  employees
where manager_id is null

이것은 null인 것을 찾으라는 의미가 된다. 이렇게 사용하는 이유는 앞에서 설명했듯이 manager_id = NULL 이라는것 자체가 넌센스 이기 때문이다. 그래서 오라클에서 제공하는
is null을 이용해서 검색해야 한다.

Logical Conditions
AND - returns true if both component conditions are true
OR - returns true if either component condition is true
NOT - Returns true if the following condition is false

select employee_id, last_name, job_id, salary
from employees
where salary >= 10000 and job_id like '%MAN%';

단순명료하게 두가지 조건에 모두 부합되는 사람을 찾으라는 문장이 된다.
salary는 10000이 넘고 job_id는 MAN이 들어가는 사람을 찾는 문장
모든 논리 조건이 조심해야 되는 것은 NULL값과의 조우시다.
false and NULL 이면 NULL이 아니라 false 가 된다.
이것은 and가 둘중 어느 하나라도 false면 다른 것이 무엇이든 간에 false가 되는 것을 떠올려 보면 어려운 이야기가 아니다 OR도 마찬가지로 생각해 주면된다.

Using NOT Operator

select last_name, job_id
from employees
where job_id
          NOT IN ('IT_PROG', 'ST_CLERK', 'SA_REP')

NOT IN 에 들어가 있는 세가지 문자열을 빼고 검색하겠다는 조건이다 NOT은 반대라고 생각하면 되니 이것또한 별다르게 생각할것이 없다

Rules of Precedence
각각의 연산자에는 분명한 우선순위가 존재한다. 즉 여러 연산자를 함께 쓰게 되면 우선 연산 되어야 할 부분에는 괄호를 이용해 명시하는 방법을 사용하는 것이 현명하다.

Using the ORDER BY Clause
-ASC 오름 차순
-DESC 내림 차순

select last_name, job_id, department_id, hire_date
from employees
order by hire_date;

order by 절은 오름 차순과 내림차순으로 정렬해서 볼수 있게 하는 문장이다. 디폴트 값으로 오름 차순을 지원하고 있으며 내림차순으로 보고싶을 때에는 order by hire_date DESC
이렇게 표현하면 내림차순으로 출력해 준다. 이를 우리는 Sorting이라 한다.
또한 order by 절에는 select문에 포함되어 있는 않은 컬럼도 사용할수 있다.

Substitution Variables
치환변수는 where, order by, 컬럼 표현식, 테이블명, select 에 모두 사용할수 있다.

select employee_id, last_name, salary, department_id
from employees
where employee_id = &employee_num;

&를 사용하여 나타내 주게 되면 그 부분에 대한 값을 사용자가 직접 입력해주는 방식으로 사용할수가 있다. 즉 변수를  쿼리 문이 수행되는 도중에 입력해 줄수 있게 해주는 방식이다.

변수값이 문자이거나 날짜 일때에는 싱클 쿼테이션을 사용해 묶어 주어야 실행이 된다.
ex) where job_id = '&job_title'

&&를 사용하면 사용자에게 한번 물어보고 그 값을 저장해 두었다가 다음에 나왔을때 다시 물어보지 않고 전에 입력한 값을 넣어주는 방식이다.

select employee_id, last_name, job_id, &&column_name
from employees
order by &column_name;

이 SQL문장을 실행 시키면 처음에 컬럼의 이름을 물어보고 다음에 &column_name은 물어보지 않고 전에 저장했던 값을 대입해 결과값을 출력해 준다. 이렇게 저장된 값을 바꿔주어야 할때가 올수 있는데 그럴땐 UNDEFINE column_name 해주면 저장되어 있던 정보가 삭제되어 다음에는 다시 물어 보게 된다.

Using the iSQL *Plus DEFINE Command
변수값을 미리 저장해 놓고 나올때 마다 치환변수에 대입시켜주고 싶을때 사용한다.

define employee_num = 200
select employee_id, last_name, salary, department_id
from employees
where employee_id = &employee_num;
undefine employee_num

위의 define 사용예문에서 보면 알수 있듯이 미리 define 문으로 employee_num은 200이라 정의 하고 이를 환경변수에서 사용하는 모습을 볼수 있다. 마치 C언어의 #define 와 같은 기능이라 생각된다.

Using the VERIFY Command

SET VERIFY ON
select employee_id, last_name, salary, deprtment_id
from employees
where employee_id = &employee_num;

환경변수의 사용에 관하여 출력해 주는 명령어다 결과를 보면
old 3: where employee_id = &employee_num
new 3: where employee_id = 200
이렇게 나온다. 예전에는 old 였으며 바뀐뒤에는 new로 표현한다.


크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Tyamo
오라클 교육 1일차

이번 주는 SQL에 대해서 5일 간 배우게 된다.

기억을 되살리고 암기를 하기 위해 배운 것들을 요약 정리해 보려고 한다.

난 SQL에 취약하다.. ㅡ,.ㅡ;; 왠지 정감 안가는 문장...;;;



기본 적인 오라클에 대한 설명

9i 의 i는 internet의 약자로써 Java를 지원하며 메소드 제작기능을 추가하여 인터넷에서

사용을 지원한다는 것을 자랑하기 위해서 넣은 글자라고 한다.

10g의 g는 grid의 약자로써 한창 그리드 컴퓨팅이 뜰때 그리드 컴퓨팅 환경도 지원한다

는 것을 자랑 하기 위해서 넣었다고 한다.. ㅡ,.ㅡ 다 자랑 할라고 넣었단다..

뭐 이런 것들은 집어 치고 SQL요약에 들어가 보겠다.


 Retrieving Data using the SQL select Statement

Capabilities of SQL select statements
- Projection - 원하는 컬럼만 보는 것
- selection - 특정 row만 검색하는 것으로 where 조건절을 사용한다.
- join 테이블을 엮어 결과값을 도출 하는 것이다.

select *
from departments;

departments 테이블의 모든것을 보는 명령어가 된다.
대충 이렇게 이해 하려고 한다. select에는 결과값에 보고 싶은 속성을 써주면 되고
from은 말 그대로 보려고 하는 속성이 어느 테이블에 있는 지를 명시해 주면 된다. 그럼 해서기는 from에 먼저 접근하여 테이블을 확인하고 select의 속성들을 확인후 보여 주게 되는 것이다.

SQL문의 특성
- 대소문자를 구분 하지 않음
- 룰에 맞게 하는 것이 메모리를 정약하고 속도를 올리수 있다.
- select문을 잘쓰는 것이 DB 튜닝이다.
- 여러 SQL문을 사용할때는  ; 세미콜론으로 구분하여 쓴다.

Arithmetic Expressions
+, -, *, / 의 사칙연산을 SQL에 사용할수 있다.

select last_name, salary, 12*(salary+100)
from employees;

salary 값에 100을 더한후 12를 곱하여 연봉을 계산 하는 문장이 된다.

Defining a Null Value
SQL 문을 사용할때는 NULL값에 주의 해야 한다
NULL은 값이 아니다. 즉 계산이 될수 없으며 공백이나 0이라 생각하면 오산이다.
NULL과 계산된것을 알수 없는 것과 계산이 된것이므로 NULL값이 된다.
이 NULL값을 처리 하는 것은 뒤에 가다보면 나온다.

Defining a Column Alias
헤딩의 이름을 바꾸는 것이라 생각하면 된다. 계산에 유용하게 하용될수 있으며 AS라는 키워드를 사용하여 나타내 준다. 또한 쌍따옴표(double quotation)으로 나타내는 방법과 공백으로도 나타낼수 있다.

select last_name AS name, commmission_pct comm
from employees;

select last_name "Name" , salary*12 " Annual Salary"
from employees;

이 두분장의 차이점은 쌍다옴표로 묶은 것과 그냥 띄어 쓰기후 별명을 넣은 것이 무슨 차이가 있나가 궁금해 질수 있다. 간단하다 쌍따옴표로 묶는 것은 쓰여진 그대로 대소문자가 구분되서 나타나나 띄어 쓰기후 작성한 것은 모두 대문자로 표기되어 화면에 뿌려지게 된다.

Concatenation Operator
컬럼과 문자나 문자열 그리고 다른 컬럼을 연결시켜 주는 역할을 한다.
|| 로 표시하게 되며 결과 값도 컬럼이 합쳐져서 나타나게 되는 것이 특징

select last_name || job_id AS " Employees"
from employees;

last_name 컬럼의 결과갑과 job_id 컬럼의 값이 Employees헤딩으로 합쳐져서 결과값 출력

select last_name || ' is a ' || job_id AS " Employee Details"
from employees;

조금 복잡해 졌지만 보면 간단히 이해가 가능한 문장이다 is a 라는 문장을 결과 값에 반영하고 자 할때 사용하면 된다. 당연히 헤드는 Employee Details 가 된다.
King is a AD_PRES  이런 식으로 결과 값이 나오게 된다. (row)

Alternative Quote (q) Operator
문자열을 출력하는 다른 방법중 하나 이다.

select department_name || q'[, it's assigned manager Id: ]'
          || manager_id AS " Department and Manager"
from departments;

q(쿼트) 를 사용하여 ' ' 로 묶어 주면 되는데 그 영역을 정해 주는 delimiter는 마음대로 선택해도 된다 ([],{},(),or <>)이런 것들을 선택해서 영역을 정해 주면 된다.
당연히 결과값에(row) 문장이 첨가 되어 나타나므로 쉽게 이해할수 있는데 도움을 준다.

Duplicate Rows - 반복제거 키워드
select distinct department_id
from employees;

반복을 제거해 주려는 컬럼 앞에 distinct 를 써주게 되면 중복이 제거되어 결과값이 출력된다. 의외로 많이 사용하게 된다. 데이터는 같은 값이 여러곳에 걸쳐서 나타나는 경우가 많으므로 그냥 select문을 작성하게 되면 보기 힘들 경우가 종종 발생한다. 그때 사용해 준다

SQL PLUS는 단순한 어플리케이션 이며
iSQL PLUS는 브라우저에서 작동하는 차이점이 있다. 물론 혼자 동작할수 없으므로 SQL서버가 구동되어야 작동한다는 단점이 있으나 사용하기에는 더 편하다. 실무에서는 iSQL PLUS를 사용하기위해 일부러 SQL 서버를 구동시키지 않으니 SQL PLUS에 익숙해 지라고 하셨다.

다음에는 iSQL PLUS 사용법이 나오면서 1장이 끝난다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Tyamo