상세 컨텐츠

본문 제목

[Data Base] 2019.06.19. 기록

1 a n G u a g e /DB

by 동혼 2019. 8. 21. 21:19

본문

run sql command line
DBA권한
시스템사용하게 설정

hr : pw 조절

table
행과 열로 구성되어있는 데이터로 저장하는 것
oracle은 관계형 데이터베이스 & 테이블로 저장
각 열의 이름 == column
콜론이 행단위로 저장됨 / 행 == row == record

desc 
디스파이브(?)
테이블 구조를 확인 할 수 있는 명령어

column 칼럼이름
칼럼이름의 출력값의 포맷팅을 바꿔서 출력할 수 있는 것
 
세미콜론
sql 문장 종료 종결자

실행 명령어
대문자ㅡ 소문자 구분안한다

ed 
editor

__________________________2교시

select
테이블 조정
column 는 룰 전체
보고자하는 column 이름 적음 /column_use
각각 절들이 무슨 관계인지 알고 있기

from
칼럼을 소유한 table_namve
결과로 보고자하는 데이터 컬럼 

column - parse 
1,  검증
2. execute_plan /최상의 버전 가져다 씀 
3. execute

비졀차적인 언어
절차가 전부 삭제묌
0으로 실행시 실행된다.


select에서는 산술연산이 가능하다

- column +상수  > 연산가능
- column + column > 연산가능
- 상수 + 상수  > 연산가능

- 숫자값에서만 연산가능하다 / 문자열에서는 안 한다 (ex 이름)
- 날자값은 더하기 빼기만 가능 cuz 오라클은 날자값 포맷으로 저장이 아니라 
 시간 등 숫자 개념으로 저장되기에 
-null값은 연산후에도 null

nvl 함수
nwl(commission_pct,1)
commission_pct 의 컬럼이 null일경우 1 로 대체 해주는 함수


select last_name, 12*salary + (12*salary*nvl(commission_pct,0))


column 헤딩 변화 못 시킴
column 이름 바꾸는 명령어도 존재하지 않음
column 이름 바꾼다 는 말은 == 


select 에는 단순히 데이터를 검색하는거라 테이블에 영향을 미치지않는다

annasal
-컬럼 다음에 다른 문자가 나타나면 다른 문자로 인지하고 뭐 한다음에 annasal  함
as를 사용하면 바로 annasal로 인지함 
- "" 사용

리터럴 문자열 - 중요
- 숫자아닌거에 '' 사용

distinct
-중복제거
-select 문장 다음에 단 한 번만 사용한다 > distinct 사용 한 번이면 전체에 영향 준다 


order by
- 정렬
- 사용시 멀티풀중복제거 //중요 n-1 조건 주기 
- 중복제거하기위해선 같은값 묶어서 
- 멀티풀 중복제거 시
-첫번재 컬럼으로 그루핑현상이 일어나고 두번재현상부터 다시 그루핑? 현상이 일어남






>>>>>>>정리
select distinct * cloumn alias
from table_name;


select 

결과를 보고자 하는 것을 제일 나와야함

distinct
한번만 사용가능
select 후에 사용

select 후 

*
전체 
특정것 보고싶으면 이름 적기


column 



alias

""

from table_name;



where 절
= 조건식
- column 조건식 연산잔 value
- 컬럼이름
- 행을 제한하는 절이다 > 중요 
- 문자와 날짜일경우 ''사용하기 
- 대소문자 구분한다
- 제일 먼저 실행되는 구절


t1 연봉이 120,000이상인 사원의 이름과 연봉을 출력하시오
단 연봉은 annsal 로 출력하시오 
>
 연봉이 120,000이상인/ 사원의 이름과 /연봉을 출력하시오
단 연봉은 annsal 로 출력하시오 
>
select last_name, salary*12 as"AnnSal"
from employees
where 

t2
select last_name, salary*12 as"AnnSal"
from employees
where department_id>=8000

>>>>>>>>>false
cuz where 가 먼저 실행되지만, annsal 은 나중에 실행되서 
where 이 



between a and b
a = 하한값 / 이상
b = 상한 값 / 이하


t3
select last_name, salary*12 as"AnnSal"
from employees
where last_name between 'A' and 'Z'
>>>>>>> between a and b 
아스키 코드에 관해 나오는 것
문자열에 해도 나오지만 상관은 없다


select employee_id, last_name, salary, manager_id
from employees
where manager_id IN (100, 101, 201);
100, 101, 201 에게 보고한 사람들 찾기



LIKE
문자의 패턴 검사
%
ex %s > s로 끝나는 거 찾아라
s% > s로 시작하는거 찾아라
%s% > s가 들어간 거 찾아라
-대,소문자 구분하기
_
문자하나

\ 특수문자

세가지 사용

%A% or %a% == % A % a %

t4
-1 2005년에 입사한 사원의 이름과 입사일 출력 tip like
-2 2005년 이후에 입사한 사원의 이름과 입사일을 출력 tip 단일비교연산자 (크다)

-1
select last_name, hire_date
from employees
where hire_date like '05%'
/

-2 
select last_name, hire_date
from employees
where hire_date > '05/01/01'
/


>>>>>>> where 값이 테이블에 있는 값을 써야한다는 것은 아니다


t5
20번 부서에 근무하는 사원중에서 연봉이 150000 이상인 사원의 이름과 연봉, 부서번호를 출력



select last_name, salary
from employees
where salary*12 >= 150000
and 
/


>>>>>>>>정리

select distinct * column 

'1 a n G u a g e > DB' 카테고리의 다른 글

[Data Base] 2019.06.24. 기록  (0) 2019.08.24
[Data Base] 2019.06.22. 기록. 실습내용  (0) 2019.08.23
[Data Base] 2019.06.21. 기록  (0) 2019.08.22
[Data Base] 2019.06.20. 기록  (0) 2019.08.22
[Data Base] 2019.06.18. 기록  (0) 2019.08.20

관련글 더보기

댓글 영역