22-08-24
cmd -> sqlplus 입력
로그인 hr hr
(sqlplus는 ;로 끝나지 않는다. 그런 언어는 sqlplus언어)
기본 셀렉트문
select * from departments;
-대소문자 구분하지 않는다.
(소문자로 작성해도 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
이 같이 출력됨.
오라클을 설치하면 자동으로 설치된다.
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;
(틀렸기때문에 다시 확인할 것 : 결과 출력 안됨)
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 복붙 허용을 해주면 매우 편해진다. (찡긋)