Oracle SQL - Select 개발일지(1)

Nam-Soomin·2022년 8월 25일
0

Oracle SQL

목록 보기
1/7

22-08-24
cmd -> sqlplus 입력
로그인 hr hr
(sqlplus는 ;로 끝나지 않는다. 그런 언어는 sqlplus언어)

기본 셀렉트문
select * from departments;


SQL문 작성

-대소문자 구분하지 않는다.
(소문자로 작성해도 SQL은 대문자로 자동으로 받아들임)
-하나 이상의 줄에 입력할 수 있다. 끝이 세미콜론(;)이면 끝
-키워드는 약어로 쓰거나 여러 줄에 나눠 쓸수 없다.
-절은 일반적으로 서로 다른 줄에 작성한다.
-들여쓰기를 사용하면 SQL문을 좀더 읽기 쉽게 작성할 수 있다.


연산자 우선순위

select last_name, salary, 12*salary+100
은 연봉에 백을 추가한거다.

select lastname, salary, 12*(salary+100)
은 월급에 100을 더한것의 연봉이다.

22-08-25
query란 SQL로 문장을 작성하세요. 라는 뜻.


널 값 정의

오라클에서는 null을 조심해야한다.
오라클은 null을 만나면 바로 실행 멈춰버린다.
오라클은 널이라는 값을 넣고, 빼내어 쓸 때 잘못하면 stop해버리므로, 주의!
null은 알 수 없는 값, 사용할 수 없는 값, 적용할 수 없는 값.

> select last_name, job_id, salary, commission_pot
2.From employees

예를 들어, 일반사원은 커미션을 받지 않아 null


산술식의 널 값

커미션 값에 연봉을 곱셈하고 싶은데, 커미션을 받지 않는(0이자 NULL인)일반사원은 어떻게 되나? 아무결과 안나와.

NULL을 1이나 0으로 바꾼 값으로 사용해야 한다.

널을 유효값으로 바꾸는 방법도 있다.


열 별칭 정의


department_id 부분을 별명을 붙여서 출력되는 실제 열 이름과 다르게 별명을 출력하게 할 수 있다.

-공백 또는 특수 문자가 있거나 대소문자를 구분할 경우 큰 따옴표("")를 사용한다.
-AS키워드를 사용한다.

SELECT salary*12 as 연봉 from employees;

결과

salary*12 가 연봉 으로 바뀌어 출력되었다.

SQL>select salary * 12 "연 봉" from employees;

결과

공백을 넣고 싶을 때에도 쌍 따옴표 사이에 평범히 공백을 넣어주면 된다.


※만약 쿼리 입력중에 오타가 났다면, (길게 쳤는데 다시 처음부터 치려니 억울하니) SQL이 가지고 있는 에디터를 띄워서 고쳐라.

에디터를 띄우고 오타를 고치고(에디터는 'ed'로 실행)
고친후에는 / +엔터 하면 실행된다.


SQL> select last_name AS "이 름", commission_pct 커미션
2 from employees;

결과


연결 연산자

-||를 사용한다.

select last_name || salary from employees;

결과

이름이랑 월급이 붙어서 나온다.

리터럴 문자열

King의 월급은 24000입니다.

라고 출력하고 싶다면
오라클에서 문자열 처리는 앞뒤로 작은 따옴표이다.

Select last_name || '의 월급은' || salary || '입니다.' from employees;

결과

select last_name || '의 작업은 ' || job_id || '입니다' "사원 상세" from employees;

결과


정리
|| ->연결 연산자
"" ->열변칙
'' ->문자열 넣기



중복 행

사원 정보 탭에서 부서 정보만 표시하라.
조회 결과가 똑같던 어떻든 오라클은 관심이 없다.
즉, 중복 행을 포함한 모든 행을 표시한다.

중복 행 제거

모든 사원의 부소 번호를 찾아라. 똑같은 부서번호는 한번만 표시하라.

select distinct department_id from employees;

결과

두가지가 다른거 중복 제거 distinct
그러나 한 항목의 숫자가 같아도, 묶어서 distinct도 가능.

20 sam
20 man
이 같이 출력됨.


SQL*PLUS

오라클을 설치하면 자동으로 설치된다.

테이블 구조 표시

describe employees

연습문제) 다음 select문은 성공적으로 실행됩니까?

select last_name, job_id,salary AS Sal from employees;

정답은 true

연습문제) 다음 select문은 성공적으로 실행됩니까?

select * from job_grades;

정답은 false
이유는

ERROR at line 1:
ORA-00942: table or view does not exist

테이블이 존재하지 않는다 라는 에러

연습문제) 이 명령문에는 코딩 오류가 네 개 있습니다. 네 가지의 코딩오류는 무엇입니까?

select employees_id, last_name
sal x 12 ANNUAL SALARY
FROM employees;

라스트네임 다음에 쉼표가 빠졌음
x가 아니라 *로 고쳐야함
annual salary는 "annual salary"
sal이 아니라 SALARY

SELECT employee_id, last_name,salary*12 "annual salary" from employees;

결과

연습문제6)departments 테이블의 구조를 표시하고 테이블의 모든 데이터를 검색하십시오.

desc departments
select * from departments;

결과

연습문제7)

desc employees
select employee_id, last_name, job_id, hire_Date "시작일"
from employees;

열변칭 as는 작성해도 되고 안해도 상관없다.
결과

연습문제9)

select distinct job_id from employees;

결과

연습문제10)

select employee_id "사 번", last_name"이 름",job_id 업무코드, hire_date "입 사 일" from employees;

결과

연습문제11)

select job_id || ', '||last_name "사원과 업무" from employees;

결과

연습문제12)

select employee_id || ', '||first_name||', '||last_name||', '||email||', '||phone_number||', '||hire date||', '||job_id||', '||salary||', '||commission_pct||', '||manager_id||', '||department_id as "사 원 정 보" from employees;

(틀렸기때문에 다시 확인할 것 : 결과 출력 안됨)


2장 데이터 제한 및 정렬

WHERE 절 사용

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

결과


문자열 및 날짜

select last_name, job_id, department_id from employees where last_name = 'Whalen';

문자열이나 날짜를 쓸 때 앞뒤로 작은 따옴표를 붙인다.
오라클에는 기본적으로 연도는 두자리가 들어간다. y2k가 적용된 연도.

결과


비교 조건

= : 같음
<> : 같지 않음
!= 및 ^= 기호 역시 같지 않음 조건을 나타낸다.



p.s.: 명령 프롬프트에서 복사 붙여넣기 매번 shift + insert했었었는데,(양손 써야해서 굉장히 불편했었다...)

맨 마지막에 있는 ctrl 복붙 허용을 해주면 매우 편해진다. (찡긋)

profile
🇰🇷Dreaming Full-Stack WEB Developer

0개의 댓글

관련 채용 정보