#3 DBMS SELECT文1
oracleDB XE11g R2, DBeaver 21.2.3
wihdow10
1-1. SQL機能別
->create、alter、drop文など、テーブルまたは関係を作成する構造.
->テーブルでデータを検索、挿入、変更、削除し、select、insert、delete、update文を使用します.
->grant、revoke文などの
1-2. データオペレータ-検索
-- 기본적으로 쿼리문은 대소문자를 안 가리나 대문자를 기본으로 사용하며
-- 검색이나 조작등 특정한 키워드는 대소문자를 구분한다
-- 쿼리문은 세미콜론으로 구분을 하며 커서가 가리키고 있는 구문만 실행된다
-- 한줄 주석
/*
여러줄 주석
*/
SELECT 컬럼명1, 컬럼명2, .....
FROM 테이블명
WHERE 조건
OR 조건
AND 조건
;
-- EMPLOOYEES 테이블에서 EMPLOYEE_ID, LAST_NAME 출력
-- 조건추가 : LAST_NAME이 Smith인 사람
SELECT EMPLOYEE_ID, LAST_NAME
-- e는 자동완성시 붙는 키워드로 보통 첫글자가 소문자로 표현된다
FROM EMPLOOYEES e
;
SELECT EMPLOYEE_ID, LAST_NAME
FROM EMPLOOYEESe
WHERE LAST_NAME = 'ostin'
;
/*
as : 별칭, 알리아스
*/
SELECT EMPLOYEE_ID AS "ID" ,
LAST_NAME AS "LNAME"
--테이블은 알리아스를 쓰지않는다.
FROM EMPLOOYEES e
WHERE LAST_NAME = 'ostin'
;
-- 칼럼에 알리아스 키워드를 쓰지 않아도 된다
SELECT EMPLOYEE_ID "ID" ,
LAST_NAME "LNAME" ,
SALARY "SAL"
FROM EMPLOOYEESe
WHERE LAST_NAME = 'ostin'
;
-- *은 모든걸 의미하며 전체 범위를 불러온다
-- 셀렉트에 *을 주고 프롬에 테이블을 선언해주면 자동완성 기능을 사용할수 있다
SELECT *
FROM EMPLOOYEESe
;
-- DISTINCT : 중복제거
SELECT DISTINCT JOB_ID
FROM EMPLOOYEESe
;
-- 부서 중복 제거 조회
-- 부서에서 중복되는 값을 없애주어서 몇개의 부서가 있는지 확인할 수 있다
SELECT DISTINCT DEPARTMENT_ID
FROM EMPLOYEESe
;
-- <, >, <=, >=
-- EMPLOYEES 테이블에서 EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY 조회
-- SALARY 5000이상인 사람의 정보를 조회
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY
FROM EMPLOYEES e
WHERE SALARY >= 5000
;
-- 아래와 같은 방식으로 활용 가능
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY
FROM EMPLOYEES e
WHERE SALARY < 5000
;
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, SALARY
FROM EMPLOYEES e
WHERE SALARY = 5000
;
-- AND 모든 조건을 만족하는 값
-- EMPLOYEES 테이블에서 EMPLOYEE_ID, FIRST_NAME, LAST_NAME 조회
-- DEPARTMENT_ID = 50이고 JOB_ID = SH_CLERK 인 사람 조회
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME
FROM EMPLOYEES e
WHERE DEPARTMENT_ID =50 AND JOB_ID = 'SH_CLERK'
;
-- EMPLOYEES 테이블에서 EMPLOYEE_ID, FIRST_NAME, LAST_NAME 조회
-- JOB_ID = ST_MA이고 MANAGER_ID = 100이고 SALARY = 5000이상인 사람
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME
FROM EMPLOYEES e
WHERE JOB_ID = 'ST_MAN' AND MANAGER_ID = 100 AND SALARY >= 5000
;
-- OR 모든 조건중 하나라도 만족하는 값
-- EMPLOYEES 테이블에서 EMPLOYEE_ID, FIRST_NAME, LAST_NAME 조회
-- DEPARTMENT_ID = 50 또는 MANAGER_ID = 100인 사람
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME
FROM EMPLOYEES e
WHERE DEPARTMENT_ID = 50 OR MANAGER_ID = 100
;
-- NOT = <> !=의 개념
-- EMPLOYEES 테이블에서 EMPLOYEE_ID, FIRST_NAME, LAST_NAME 조회
-- DEPARTMENT_ID = 50이 아닌 사람
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME
FROM EMPLOYEES e
WHERE NOT (DEPARTMENT_ID = 50)
;
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME
FROM EMPLOYEES e
WHERE DEPARTMENT_ID <> 50
;
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME
FROM EMPLOYEES e
WHERE DEPARTMENT_ID <> 50
;
-- 여러 조작어들을 같이 사용할수있다.
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME
FROM EMPLOYEES e
WHERE SALARY >= 4000 AND SALARY <= 8000
AND DEPARTMENT_ID <> 50
;
-- BETWEEN A AND B A와 B 사이의 조건, AND를 간결하게 사용할 수 있다
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME
FROM EMPLOYEES e
WHERE SALARY BETWEEN 4000 AND 8000
AND DEPARTMENT_ID <> 50
;
-- EMPLOYEES 테이블에서 EMPLOYEE_ID, FIRST_NAME, LAST_NAME 조회
-- SALARY 6500 또는 7700 13000인 사람
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME
FROM EMPLOYEES e
WHERE SALARY = 6500 OR SALARY = 7700 OR SALARY = 13000
;
-- IN 여러 조건중 하나라도 만족하는 값, OR를 간결하게 사용할 수 있다
-- EMPLOYEES 테이블에서 EMPLOYEE_ID, FIRST_NAME, LAST_NAME 조회
-- SALARY 6500 또는 7700 13000인 사람
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME
FROM EMPLOYEES e
WHERE SALARY IN (6500, 7700, 13000)
;
-- EMPLOYEES 테이블에서 EMPLOYEE_ID, FIRST_NAME, LAST_NAME, JOB_ID,
-- MANAGER_ID,SALARY 조회
-- DEPARTMENT_ID가 10 또는 30 또는 100 또는 90에 속하고,
-- 급여가 5000에서 10000사이 이고 MANAGER_ID가 100이 아닌 사람을 조회
SELECT EMPLOYEE_ID, FIRST_NAME, LAST_NAME, JOB_ID, MANAGER_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%'
;
-- e로 끝나는 사람
SELECT FIRST_NAME, LAST_NAME
FROM EMPLOYEES e
WHERE FIRST_NAME LIKE '%e'
;
-- 중간에 e가 들어가는 사람
SELECT FIRST_NAME, LAST_NAME
FROM EMPLOYEES e
WHERE FIRST_NAME LIKE '%e%'
;
-- a앞에 두글자가 있는 사람
SELECT FIRST_NAME, LAST_NAME
FROM EMPLOYEES e
WHERE FIRST_NAME LIKE '__a%'
;
-- IS NULL 널값 찾기
SELECT FIRST_NAME, LAST_NAME, COMMISSION_PCT
FROM EMPLOYEES e
WHERE COMMISSION_PCT IS NULL
;
-- IS NOT NULL 널이 아닌 값 찾기
SELECT FIRST_NAME, LAST_NAME, COMMISSION_PCT
FROM EMPLOYEES e
WHERE COMMISSION_PCT IS NOT NULL
;
-- 오름차순 ASC : ORDER BY [칼럼명] ASC
-- ASC는 기본값, 생략가능
SELECT FIRST_NAME, LAST_NAME, COMMISSION_PCT
FROM EMPLOYEES e
WHERE COMMISSION_PCT IS NOT NULL
ORDER BY COMMISSION_PCT ASC
;
SELECT FIRST_NAME, LAST_NAME, COMMISSION_PCT
FROM EMPLOYEES e
WHERE COMMISSION_PCT IS NOT NULL
ORDER BY COMMISSION_PCT
;
-- 오름차순 조거을 두개를 걸면 첫번째 오름차순으로 우선 정렬을 하고 두번때 조건을 정렬한다
SELECT FIRST_NAME, LAST_NAME, COMMISSION_PCT
FROM EMPLOYEES e
WHERE COMMISSION_PCT IS NOT NULL
ORDER BY COMMISSION_PCT, FIRST_NAME
;
-- 내림차순 : DESC
SELECT FIRST_NAME, LAST_NAME, COMMISSION_PCT
FROM EMPLOYEES e
WHERE COMMISSION_PCT IS NOT NULL
ORDER BY COMMISSION_PCT ,FIRST_NAME DESC
;
Reference
この問題について(#3 DBMS SELECT文1), 我々は、より多くの情報をここで見つけました https://velog.io/@truelight92/3-DBMSテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol