DATA BASE 명령어 모음

김용진·2023년 7월 18일
0

오늘 배운걸 기준으로 작성(23-07-18)

-- 한줄 주석
/*
* 여러줄 주석
*/
  • 데이터 조작어

SELECT : 테이블에 원하는 COLUM값을 가져올때 사용

select에서 '*'는 전체를 의미

FROM : 테이블 이름

WHERE : 조건

ORDER BY : 정렬구문 오름차순일 경우 ORDER BY (컬럼) ASC
내림차순일 경우 ASC 대신 DESC를 넣어주면 된다.
아무것도 적혀있지 않을 경우 자동 오름차순으로 명령이 실행된다.

DISTINCT : 중복 제거

<,>,<=,>= : 여러 부등식, A에서 B까지 를 나타낼때 부등식을 여러번 사용 할 필요 없이
'A BETWEEN B'를 이용하여 A와 B사이를 나타낼 수 있다.

!=,<>=,NOT : 같지 않다 부등식, 명령문

OR, IN() : ...또는 이라는 구문으로 같은 열에 값을 여러개 받아오려 할때 IN(값1, 값2) 로 대체 가능하다.

LIKE : 특정 문자, 숫자로 시작하는 값을 찾으려 할때 사용하는 명령문
%문구 -> ...문구로 끝나는 값 찾기
문구% -> 문구...로 끝나는 값 찾기
_문구% -> N( )번째 에 문구...로 끝나는 값 찾기

IS NULL : 값이 없다해서 그 공간은 없는것이 아닌, 아직 배정받지 못한 값으로 표현 되기에 A = NULL이 아닌 A IS NULL 이런식으로 정의한다.
반대로 NULL 값이 아니라면 IS NOT NULL구문을 사용하면 된다.

SUM(), AVG() : 다들 알다 시피 합계, 평균을 나타낼때 사용한다.

COUNT() : ()안의 열을 카운트하여 결과를 보여준다 단, 중복된 값도 카운트 하기 때문에 DISTINCT를 사용하면 중복된 값을 제외하고 카운트 시킬 수 있다.

MAX(), MIN() : 최대값, 최소값을 찾을 때 사용한다.

DUAL TABLE을 이용한 간단한 연산
이때 FROM은 DUAL로 TABLE을 선언하여 가지고 온다.

ABS(파라미터1) : 파라미터 1의 절대값을 가져온다.
TRUNC(파라미터1, 파라미터2) : 파라미터 1의 절대 값을 파라미터 2 만큼 가져온다.
1235.12314, 2 일경우 소수점 2번째 까지가져온다.
결과값 1235.12
파라미터2가 -1일경우 결과값은 1230

DATA BASE 실전

EX)
SELECT 	EMPLOYEE_ID ,FIRST_NAME ,LAST_NAME ,HIRE_DATE  -- 원하는걸 선택하여 불러온다.
FROM 	EMPLOYEES e 
WHERE 	FIRST_NAME = 'Steven'
AND 	LAST_NAME = 'King'
;

EMPLOYEES에서 Steven King이라는 사람의 ID, FIRST, LAST, 고용날짜를 불러오는 구문

1번. employees 테이블에서 department_id가 100이고
job_id가 FI_MGR인 사람의 모든 데이터 조회

SELECT * FROM EMPLOYEES e 
WHERE DEPARTMENT_ID = 100
AND JOB_ID = 'FI_MGR'
;

2번.employees 테이블에서 first_name이 Guy인 사람의 employee_id, first_name,
last_name, job_id 조회

SELECT EMPLOYEE_ID ,FIRST_NAME ,LAST_NAME ,JOB_ID 
FROM EMPLOYEES e 
WHERE FIRST_NAME  = 'Guy'
;

3번. employees 테이블에서 department_id가 50이고 managet_id가 121인 사람의
employee_id, first_name, last_name, job_id 조회\

SELECT EMPLOYEE_ID ,FIRST_NAME ,LAST_NAME ,JOB_ID 
FROM EMPLOYEES e 
WHERE DEPARTMENT_ID = 50
AND MANAGER_ID =121
;
  • 별칭, 알리아스(AS) 알리아스는 생략가능 테이블 가져오는 from명령어에 e는 이미 알리아스가 들어간취급
SELECT EMPLOYEE_ID AS "ID"
	,	SALARY "SAL" 
FROM EMPLOYEES e 
;
  • distinct : 중복제거
SELECT DISTINCT  JOB_ID  
FROM EMPLOYEES e 
;

SELECT  *
FROM EMPLOYEES e 
WHERE DEPARTMENT_ID IS NULL 
;
  • <,>,=<,=>
SELECT *
FROM EMPLOYEES e 
WHERE SALARY >= 5000
;

급여가 5000인 이상을 찾는 구문

  • or
 부서가 50번이거나, 매니저 번호가 100번인 사람
SELECT FIRST_NAME ,LAST_NAME ,MANAGER_ID ,DEPARTMENT_ID 
FROM EMPLOYEES e 
WHERE DEPARTMENT_ID=50 OR MANAGER_ID =100;
  • not -> <> -> !=
 50번 부서가 아닌사람
SELECT * FROM EMPLOYEES e 
WHERE NOT DEPARTMENT_ID = 50;

SELECT * FROM EMPLOYEES e 
WHERE DEPARTMENT_ID <> 50;

SELECT * FROM EMPLOYEES e 
WHERE  DEPARTMENT_ID != 50;

위의 모두 결과는 같다

  • 급여가 4000 이상, 8000이하까지인 사람 -> BETWEEN A AND B
아래 모두 결과는 같다
SELECT *
FROM EMPLOYEES e 
WHERE SALARY >= 4000 AND SALARY <= 8000
;

SELECT *
FROM EMPLOYEES e 
WHERE SALARY BETWEEN 4000 AND 8000
;
  • 급여가 6500, 7700, 13000인 사람 -> IN()
아래 두개의 경우 결과는 같다.
SELECT *
FROM EMPLOYEES e 
WHERE SALARY = 6500 
OR SALARY = 7700 
OR SALARY = 13000 
; 

SELECT *
FROM EMPLOYEES e 
WHERE SALARY IN (6500,7700,13000) 
; 

문1.
employees 테이블에서 employee_id, first_name, last_anem, job_id를 출력하는데,
job_id가 ST_MAN이고, manager_id가 100이고, salary가 5000이상인 사람.

풀이

SELECT EMPLOYEE_ID ,FIRST_NAME ,LAST_NAME ,JOB_ID 
FROM EMPLOYEES e 
WHERE JOB_ID = 'ST_MAN'
AND MANAGER_ID  = 100 
AND SALARY >= 5000
; 

문2.
EMPLOYEES 테이블에서 EMPLOYEE_ID, first_name, last_name, JOB_ID
MANAGER_ID, SALARY 를 조회
DEPARTMENT_ID가 10 또는 30 또는 100 또는 90에 속하고,
급여(SALARY)가 5000에서 10000사이 이고
매니저(MANAGER_ID)가 100이 아닌 사람을 조회

풀이

SELECT EMPLOYEE_ID ,FIRST_NAME ,LAST_NAME ,JOB_ID,MANAGER_ID,SALARY  
FROM EMPLOYEES e 
WHERE DEPARTMENT_ID IN(10,30,90,100)
AND SALARY BETWEEN 5000 AND 10000 
AND MANAGER_ID  != 100 
; 
  • LIKE : D로 시작하는 사람
SELECT FIRST_NAME , LAST_NAME 
FROM EMPLOYEES e 
WHERE FIRST_NAME LIKE 'D%';
  • %d로 끝나는 사람
SELECT FIRST_NAME , LAST_NAME 
FROM EMPLOYEES e 
WHERE FIRST_NAME LIKE '%d';
  • __a% 세번째 자리에 a가 오는 사람찾는 구문
SELECT FIRST_NAME , LAST_NAME 
FROM EMPLOYEES e 
WHERE FIRST_NAME LIKE '__a%';
  • is NULL
SELECT FIRST_NAME , LAST_NAME , COMMISSION_PCT 
	, DEPARTMENT_ID , JOB_ID 
FROM EMPLOYEES e 
WHERE COMMISSION_PCT IS NULL;
  • in NOT NULL
SELECT FIRST_NAME , LAST_NAME , COMMISSION_PCT ,DEPARTMENT_ID ,JOB_ID
FROM EMP_DETAILS_VIEW edv 
WHERE COMMISSION_PCT IS NOT NULL;

정렬

  • 오름차순, order by 컬럼 ASC (ASC는 생략 가능하다.)
SELECT  *
FROM EMPLOYEES e 
ORDER BY SALARY ASC;
  • 내림차순, order by 컬럼 DESC
SELECT *
FROM EMPLOYEES e 
ORDER BY SALARY DESC;
  • 합계 : sum()
SELECT sum(SALARY)
FROM EMPLOYEES e ;
  • count(컬럼)
SELECT COUNT(*) 
FROM EMPLOYEES e ;

SELECT * FROM EMPLOYEES e ;

- 뒤에 코멘트를 붙여서 이름을 수정시킨다 (AS) 생략한다고 생각
SELECT COUNT(COMMISSION_PCT) commition
FROM EMPLOYEES e ;

- EMPLOYEES 테이블에서 FIRST_NAME 중복을 제외한 숫자값을 출력

SELECT COUNT(DISTINCT FIRST_NAME) FIRST_NAME 
FROM EMPLOYEES e; 
  • 평균 : avg
SELECT AVG(SALARY) 
FROM EMPLOYEES e ;

ex) 80번 부서의 급여의 평균

SELECT AVG(SALARY)
FROM EMPLOYEES e
WHERE DEPARTMENT_ID = 80
;
  • 최대값, MAX
SELECT MAX(SALARY) 
FROM EMPLOYEES e ;

SELECT MAX(HIRE_DATE) 
FROM EMPLOYEES e ;
  • 최솟값, MIN
SELECT MIN(SALARY)
FROM EMPLOYEES e ;

SELECT MIN(HIRE_DATE)
FROM EMPLOYEES e ;

dual

  • avs() : 절대값
SELECT ABS(-234)
FROM dual;
  • 반올림 : round()
SELECT ROUND(0.123), ROUND(0.543) 
FROM dual;
  • 절사 : TRUNCATE
SELECT TRUNC(1234.56789)
FROM dual;

SELECT TRUNC(1234.56789, 2)
FROM dual;

(파라미터1, 파라미터2) 이때 파라미터 1은 값, 2는 몇번째 자리까지 나타낼지를 의미한다.

profile
메모리폼

3개의 댓글

comment-user-thumbnail
2023년 7월 18일

많은 도움이 되었습니다, 감사합니다.

1개의 답글
comment-user-thumbnail
2023년 7월 18일

항상 좋은 글 감사합니다.

답글 달기