minlog
article thumbnail
Published 2023. 2. 22. 14:38
[ DB /Oracle ] DML | SELECT BackEnd/DataBase

 

SQL ( Structured Query Language )

  • 대소문자를 구분하지 않는다.
  • ' ; '  모든 마지막은 세미콜롬으로 끝나게 된다.
  • * '  전체를 의미한다.
  • ' -- ' 하이픈 두개는 주석이다.

 

 

DML ( Data Manipulation Language )

  • 데이터 조작어로 검색 및 수정하기 위한 수단제공
  • SELECT / INSERT / UPDATE / DELETE

 

 

 

SELECT  테이블

 

1. SELECT 절

select 절 (보고자 하는 컬럼명 나열)  form 절 (보고자 하는 테이블명 나열)

 

1)  테이블의 모든 컬럼

select * from employees;

 

2) 컬럼 여러개 선택

원하는 컬럼명 선택, 해당 컬럼만 나열가능

SELECT e.EMPLOYEE_ID , e.FIRST_NAME ,e.EMAIL 
FROM EMPLOYEES e;

 

3) 컬럼 별명 사용하기

  • 컬럼 이름을 변경하여 출력 (원 컬럼이름은 변경되지 않으며 임시로 보여주는 형태)
  • 컬럼명 뒤에 공백을 주고 별명을 쓰는 방식à대문자로 표기됨
  • 컬럼명 뒤에 as 키워드 사용 후 별명을 쓰는 방식 à대문자로 표기됨
  • 별명에 대소문자 구분, 공백, 특수문자 등이 필요한 경우 “ “(쌍 따옴표)로 감싸줌
select employee_id as empNO,
	   first_name "E-name", 
	   salary "연 봉"
from employees;

 

4) 연결 연산자(Concatenation)로 컬럼들 붙이기

|| 를 사용하여 컬럼명을 연결 할 수 있다. 

select first_name || last_name
from employees;

 

''(작은따옴표)를 사용하여 문자열을 추가하여 출력할 수 있다.

select first_name || ' hire date is ' || hire_date
from employees;

 

5) 산술연산자 사용하기

+, -, *, / 을 사용할 수 있음

select first_name, salary, salary*12, (salary+300)*12
from employees;

 

6) nvl (값이 null일때 바꿔줄 값)

nvl2 (e,null이아닐때, null일때)

SELECT e.FIRST_NAME,
		e.SALARY,
		nvl(e.COMMISSION_PCT,0)
FROM EMPLOYEES e
WHERE e.SALARY < 14000 AND e.SALARY > 10000
ORDER BY e.SALARY DESC;

 

 

2. WHERE 절

select 절 (컬럼명 나열)  form 절 (테이블명 나열) WHERE 절 (비교 하려는 내용)

 

1) 비교 연산자

  • =, !=, >, <, >=, <= 연산자 사용

( EX : ID가 10인 사람의 성 )

select first_name
from employees
where department_id = 10;

 

2) 조건이 2개 이상일때 한번에 조회

select first_name
from employees
where salary >= 14000 
and salary <= 17000;

 

3) BETWEEN 연산자로 특정구간 값 출력하기

  • 작은 값을 앞에, 큰 값을 뒤에
  • 두 값을 모두 포함하는 결과를 출력(경계 값을 포함하지 않는 경우 사용하면 안됨)
  • 느린 연산자에 속함
SELECT  e.FIRST_NAME "이름",
	e.HIRE_DATE  "입사일"
FROM EMPLOYEES e
WHERE e.HIRE_DATE BETWEEN '04/01/01' and  '05/12/31';

 

4) IN 연산자로 여러 조건을 검사하기

select first_name, last_name, salary
from employees
where first_name in ('Neena', 'Lex', 'John');

 

5) Like 연산자로 비슷한 것들 모두 찾기

  • % : 임의의 길이의 문자열(공백 문자 가능)
  • _ : 한글자 길이
SELECT  e.FIRST_NAME "이름",
	e.SALARY  "급여"
FROM EMPLOYEES e
WHERE e.FIRST_NAME LIKE '%am%'; --문자열이 어디에 들어 있을지 모르기 때문에 앞뒤로 붙힘

 

6) IS (포함하는것)

 

※  NULL
아무런 값도 정해지지 않았음을 의미 (0이 아님)
어떠한 데이터타입에도 사용가능 not null 이나 primary key (중복되지 X , NULL X ) 속성에는 사용할 수 없음
null을 포함한 산술식은 반드시 null 이 되기 때문에 체크가 필요함. (IS)

select first_name, salary, commission_pct, salary*commission_pct
from employees
where COMMISSION_PCT IS NULL;

 

7) IS NOT (포함하지 않는것)

select first_name, salary, commission_pct, salary*commission_pct
from employees
where COMMISSION_PCT IS NOT NULL;

 

 

3. ORDER BY 절

select 절 (컬럼명 나열)  form 절 (테이블명 나열) ORDER BY절 (정렬하려는 기준) (정렬 순서)

  • 정렬을 정해주는 절
  • 오름차순 → ASC (안적어도 default값 )
  • 내림차순 →DESC
select first_name, salary
from employees
order by salary asc;

1) 정렬 필터 선택 

(EX :  2번째 SALARY를 기준으로 오름차순 정렬 )

SELECT e.FIRST_NAME ,e.SALARY
FROM EMPLOYEES e
ORDER BY 2; // 첫번째 필터인지 두번째 필터인지.

2) 정렬을 2번 

( MANAGER_ID 로 먼저 오름차순 정렬하고 그 후 SALARY를 내림차순)

SELECT e.MANAGER_ID, e.SALARY 
FROM EMPLOYEES e
ORDER BY MANAGER_ID ASC, SALARY DESC;

 

 

 

 

 

 

 

 

profile

minlog

@jimin-log

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!