본문 바로가기
공부

[Oracle_SQL] SQL 기본 문법

by KAI_RO 2024. 8. 19.

1. SQL 기본 문법
select * | 컬럼명 | 표현식      // 5. 출력 대상(열, column) 지정
from 테이블명                       // 1. 데이터 조회 테이블 지정
where 조건                            // 2. 조회하려는 데이터 조건 지정
group by 대상                        // 3. 조회 데이터 분류
having 조건                           // 4. group으로 분류된 데이터에 대한 추가 조건 지정
order by  ;                              // 6. 데이터 정렬 기준

1) SELECT 
- SQL 쿼리의 가장 첫번째 절. 허나 실제 구동 순서는 order by절을 제외하고 가장 마지막.
- 테이블의 출력단 컬럼(column)을 지정한다.
- select  *  은 해당 테이블의 모든 내용을 출력하라는 의미.

2) FROM
- SQL 쿼리의 두번째 절. 실제 쿼리 구동 순서에서는 가장 첫번째.
- 조회하려는 데이터가 저장되어있는 테이블을 지정한다.

3) WHERE
- SQL 쿼리의 세번째 절. 실제 쿼리 구동 순서에서는 FROM 절 뒤의 두번째.
- 특정 조건을 만족하는 데이터 추출을 위해 사용.

예시) student 테이블의 모든 데이터를 조회 
SELECT *            
   FROM STUDENT;         
  
예시) student 테이블에서 이름,학년,키,무게를 조회. 3학년 이상만.
SELECT NAME, GRADE, HEIGHT, WEIGHT      -- 조회하려는 컬럼 지정.
   FROM  STUDENT                                              -- 데이터가 저장된 테이블 지정.
 WHERE GRADE >= 3;                                         -- 데이터 추출 조건 지정
 
   
4) GROUP BY
- SQL 쿼리의 네번째 절. 실제 쿼리 구동 순서에서는 WHERE 절 뒤의 세번째.
- 조회된 데이터를 '그룹'으로 분류하기 위해 사용한다.  ex) 성별, 학년 등
- 그룹별 통계(합, 평균, 최고점, 최저점 등)를 조회하는 용도.
;
SELECT GRADE,
               COUNT(HEIGHT),                        -- Count 함수, 값의 개수
               SUM(HEIGHT),                              -- Sum 함수, 값의 합       
               MAX(HEIGHT),                              -- Max 함수, 최대값   
               AVG(HEIGHT)                                -- Avg 함수, 평균값   
  FROM  STUDENT
 group by GRADE;  
 
 
5) HAVING
- SQL 쿼리의 네번째 절. 실제 쿼리 구동 순서에서는 GROUP BY 절 뒤의 네번째.
- GROUP BY절에 의해 통계조회된 데이터에서 조건을 만족하는 데이터를 추출하기 위한 용도.
- WHERE절과 비슷하지만 적용 시점이 다르다. WHERE절에 의한 분류는 GROUP BY 절이 적용되기 전의
  데이터에 적용되기 때문에 적용 후의 데이터를 조건분류하려면 HAVING을 사용한다.
 (기본데이터 -> WHERE절 적용(조건추출) -> GROUP BY절 적용(통계) -> HAVING(조건추출))
 
      SELECT   GRADE,
                       MAX(HEIGHT)
         FROM    STUDENT

 GROUP BY  GRADE
      HAVING   MAX(HEIGHT) > 180; 
 
6) ORDER BY
- SQL 쿼리의 마지막 절. 실제 쿼리 구동 순서 역시 마지막.
- 앞선 쿼리에 의해 추출된 데이터를 정렬하는 용도.

2. SQL 연산자

1) 논리 연산자

[1] AND 연산자
  - 교집합 출력(모든 조건이 만족할 때만 참)
  
[2] OR 연산자
  - 합집합 출력(한 조건만이라도 만족하면 참)
  
[3] NOT 연산자
  - 여집합 출력, 부정연산자(조건을 만족하는 집합을 제외)
  
[4] 연결 연산자 (||)
  - 분리된 두 개 이상의 문자열을 결합하는 용도

--예제) emp 테이블에서 직군이 CLERK 또는 SALESMAN중에서 급여가 1300 이상인 직원 정보 출력


  select   * 
    from   emp
 where   (job = 'CLERK'
        or   job = 'SALESMAN')
     and   sal >= 1300;
   
--예제) emp 테이블의 EMPNO, ENAME, SAL 을 한 컬럼에서 출력.


select   empno||ename||sal,
             empno||'-'||ename||'-'||sal
  from    emp;
  
논리연산자 연산 순서 : not > and > or
  
2) 기타 연산자

[1] between a and b
 - a 이상 b 이하
 - a와 b를 포함한 출력결과 리턴
 
[2] in 연산자(포함연산자)
 - 여러 대상을 동시에 출력 시 사용
 - where 대상 in(값1, 값2, ...)
 
[3] like 연산자
 - 패턴 검색을 위한 연산자
 - not like를 사용한 여집합 출력 가능
 
 --예제) 이름이 A로 시작하는 사람 출력
 select   *
   from   emp
 where   ename like 'A%';

--예제) emp에서 smith와 allen을 제외한 모든 직원의 이름, 급여 출력
 select    ename, sal
    from    emp
 where    ename not in ('SMITH', 'ALLEN');
 
 --예제) emp2 테이블에서 사원번호가 19900000에서 20000000 사이에 해당하는 직원의 이름, 사원번호 출력
select    * 
   from   emp2
 where   EMPNO between 19900000 and 20000000;

'공부' 카테고리의 다른 글

[Linux] Red Hat Enterprise Linux 설치  (0) 2024.08.27
[Oracle_SQL] 함수  (0) 2024.08.19
[파이썬 기초] 파이썬 설치  (0) 2024.04.01