- sql 문장은 대,소문자를 구별하지 않는다.
- 숫자는 오른쪽 정렬되고, 문자는 왼쪽 정렬된다.
- Null값과 0값은 다르다,
1️⃣ sql 문장의 작성
select 의 가장 기본이 되는 틀은 아래와 같다.
--모든 열 선택
select * from 테이블 이름;
--특정 열 선택
select 원하는 열 이름 from 테이블 이름;
2️⃣ 열 별칭 alias
--열의 이름을 지정하여 변경해줄 수 있다.
select first_name as 이름 from employees;
3️⃣ 리터럴(literal) 문자 스트링과 연결 연산자
--||을 이용하여 각 열의 값을 연결해 줄 수 있다. ' ' 로 원하는 구문을 추가해 줄 수도 있다.
select '이름은' || first_name || ' ' || last_name || '입니다'
4️⃣ distinct 키워드
--중복 되는 행을 전부 제거하여 보여준다.
select distinct department_id from employees;
5️⃣ ROWID와 ROWNUM
- rowid는 행의 주소를 반환해주고
- rownum은 행의 번호를 출력해준다.

데이터 제한(연산)
1️⃣ 선택된 행 제한 where
where절은 from다음에 위치하고, 조건을 주어 조건에 만족하는 행들만 출력하도록해주는 역할을 한다.
아래와 같이 where절에 job_id가 IT_PROG인 애들만 출력하도록 하게 한것이다.

2️⃣ 비교 연산자
sql 구문에서도 비교연산자의 사용이 가능하다. 조건을 줄 때 사용한다.

3️⃣ Between 연산자
where 뒤에 위치하며 where에서 지정한 열을 [between 하한값 and 상한값] 으로 조건을 준다.

4️⃣ in 연산자 ⭐중요⭐
in() 안에 있는 값들만 보여주는 역할을 한다.


5️⃣ like 연산자⭐더 중요⭐
where절 뒤에 붙여서 like '키워드' 키워드가 포함된 열을 모두 보여준다.
%와 _기호를 사용하여 키워드에 조건을 줄 수 있다. %A는 A로 끝나는 것, A% A로 시작하는 것 _는 자리수를 의미한다. __A% 세번쨰 자리에 A가 오는 경우를 의미한다.


6️⃣ is NULL 연산자
NULL값이 있는 정보들만 보여준다.
is not NULL로 NULL값이 없는 정보만 가져올 수도 있다.
7️⃣ 논리연산자
AND / OR / NOR이 있다.
AND가 OR보다 우선시 된다. OR을 먼저 실행하고 싶다면 ()로 묶어준다.
데이터 정렬
1️⃣ order by
select sql문의 가장 뒤에 위치한다. ASC을 사용하여 오름차순으로 정렬 DESC을 사용하여 내림차순으로 정렬할 수 있다.
연습문제
--연습문제
select * from employees;
--1. 모든 사원의 사원번호, 이름, 입사일, 급여를 출력하세요.
select employee_id as 사원번호,
first_name as 이름,
hire_date as 입사일,
salary as 급여
from employees;
--2. 모든 사원의 이름과 성을 붙여 출력하세요. 열 별칭은 name으로 하세요.
select first_name || ' ' || last_name as name from employees;
--3. 50번 부서 사원의 모든 정보를 출력하세요.
select * from employees where department_id = 50;
--4. 50번 부서 사원의 이름, 부서번호, 직무아이디를 출력하세요.
select first_name, department_id, job_id from employees where department_id = 50;
--5. 모든 사원의 이름, 급여 그리고 300달러 인상된 급여를 출력하세요.
select first_name as 이름, salary as 급여, salary+300 as 인상급여 from employees;
--6. 급여가 10000보다 큰 사원의 이름과 급여를 출력하세요.
select first_name as 이름, salary from employees where salary > 10000;
--7. 보너스를 받는 사원의 이름과 직무, 보너스율을 출력하세요.
select first_name as 이름, job_id as 직무, commission_pct as 보너스율 from employees where commission_pct is not NULL;
--8. 2003년도 입사한 사원의 이름과 입사일 그리고 급여를 출력하세요.(BETWEEN 연산자 사용)
select first_name as 이름, hire_date as 입사일, salary as 급여 from employees where hire_date between '03/01/01' and '03/12/31';
--9. 2003년도 입사한 사원의 이름과 입사일 그리고 급여를 출력하세요.(LIKE 연산자 사용)
select first_name as 이름, hire_date as 입사일, salary as 급여 from employees where hire_date like '03%';
--10. 모든 사원의 이름과 급여를 급여가 많은 사원부터 적은 사원순서로 출력하세요.
select first_name as 이름, salary as 급여 from employees order by 급여 desc;
--11. 위 질의를 60번 부서의 사원에 대해서만 질의하세요. (컬럼: department_id)
select first_name as 이름, salary as 급여, department_id as 부서번호 from employees where department_id = 60 order by 급여 desc;
--12. 직무아이디가 IT_PROG 이거나, SA_MAN인 사원의 이름과 직무아이디를 출력하세요.
select first_name as 이름, job_id as 직무아이디 from employees where job_id = 'IT_PROG' or job_id = 'SA_MAN';
--13. Steven King 사원의 정보를 “Steven King 사원의 급여는 24000달러 입니다” 형식으로 출력하세요.
select first_name || ' ' || last_name || ' 사원의 급여는 ' || salary || '달러 입니다' from employees where first_name = 'Steven' and last_name = 'King';
--14. 매니저(MAN) 직무에 해당하는 사원의 이름과 직무아이디를 출력하세요. (컬럼:job_id)
select first_name as 이름, job_id as 직무아이디 from employees where job_id like '%MAN';
--15. 매니저(MAN) 직무에 해당하는 사원의 이름과 직무아이디를 직무아이디 순서대로 출력하세요.
select first_name as 이름, job_id as 직무아이디 from employees where job_id like '%MAN' order by job_id asc;