[DB] ch5 SQL I

박소미·2023년 10월 13일
0

DB

목록 보기
5/14

5.1 SQL 언어 개요

  • 데이터 정의어(DDL : Data Definition Language)
    데이터베이스의 구조를 정의하는 데 사용된다.

    CREATE: DB 및 DB 내의 개체(테이블, 뷰, 인덱스)를 정의한다.
    ALTER: DB 및 DB 내의 개체의 정의를 변경한다.
    DROP: DB 및 DB 내의 개체를 삭제한다.

  • 데이터 조작어(DML : Data Manipulation Language)
    테이블에 데이터를 입력, 수정, 삭제, 조회할 때 사용한다.

    INSERT : 테이블에 새로운 데이터(튜플)를 추가한다.
    UPDATE : 테이블에 저장된 데이터를 수정한다.
    DELETE : 테이블에 저장된 데이터(튜플)를 삭제한다.
    SELETE : 테이블에 저장된 데이터를 조건에 맞게 조회한다.

  • 데이터 제어어(DCL : Data Control Language)
    보안을 위해 데이터베이스에 대한 접근 권한 및 사용 권한을 사용자에게 부여하거나 회수할 때 사용한다.

    GRANT : 접근/사용 권한을 부여한다.
    REVOKE : 접근/사용 권한을 회수한다.

5.2 SELECT 문

(1) SELECT 문의 구조

  SELECT 컬럼명 1, 컬럼명 2 . . .
  FROM 테이블명
  [WHERE 검색조건];

Ch4의 관계 대수에서 셀렉트와 푸로젝트 연산이 SELECT로 표현된 것이다.

<SELECT 문 작성하는 순서>

  1. 질의를 해결하기 위해 어떤 테이블을 검색해야 하는가?  -> FROM 테이블명
  2. 질의에서 요구되는 정보는 어느 칼럼에 있는가?   -> SELECT 컬럼명
  3. 데이터를 검색하기 위한 조건은 무엇인가? -> WHERE 검색조건
  • DISTINCT는 질의 결과에서 중복을 제거 하고 * 는 테이블의 모든 컬럼을 의미한다.

(2) WHERE 절에서 검색 조건의 작성

<WHERE 절에서 조건 지정 시 사용할 수 있는 키워드>

비교 연산자 : <> 같지 않다 , = 같다 , >= 이후, < 이전
논리 연산자 : AND , OR, NOT

SELECT 문에서 WHERE 절이 생략되면 모든 튜플을 선택한다는 것을 의미한다.

(3) 널(NULL) 값의 비교

널 값은 테이블에 데이터를 입력하는 시점에서 어떤 값을 넣어야 할지 알 수 없거나 넣을 값이 존재하지 않을 때 입력하는 특별한 값, 공백이나 0과는 다른 특수한 값

어떤 컬럼의 값이 NULL인지 여부를 알아보려면 IS NULL 또는 IS NOT NULL 사용

비교연산 수행 시 NULL값은 아예 비교 대상에서 제외된다.

(4) 숫자, 문자, 날짜의 비교

WHERE 절에서 값을 비교할 때 칼럼의 자료형이 숫자인 경우는 1234와 같이 쓰면 되고, 문자나 날짜의 경우는 작은따옴표로 묶어서 표현한다.

(5) WHERE 절에서 다수의 값 비교

BETWEEN . . AND : 비교하는 값이 지정 범위 안에 있는지 비교
NOT BETWEEN . . AND : 비교하는 값이 지정 범위 밖에 있는지 비교
IN ( . . . ) : 비교하는 값이 지정 범위 안에 있는지 비교
NOT IN ( . . .) : 비교하는 값이 지정 범위 밖에 있는지 비교

           select ename, job, sal
		   from emp
           where job in ('ANALYST', 'CLERK', 'MANAGER') ;
		   // where 쓸 때 순서 주의 + 괄호 필수
           

조건을 지정할 때 여러 개의 값 중 하나와의 일치 여부를 표현할 때 조건을 AND나 OR로 여러 개 연결하는 것보다 IN을 사용하는 것이 편리

(6) 문자 컬럼의 부분 비교

<WHERE 절에서 문자 컬럼의 값과 부분 비교 시 사용할 수 있는 키워드>

           LIKE :문자 속성의 컬럼에 대해 지정한 문자열을 포함하는지 비교
           % : LIKE과 함께 사용되며 임의의 개수의 문자를 표현
           _ : LIKE과 함께 사용되며 하나의 문자를 표현
           

			select ename, job
			from emp
			where job like '_A%';
			// where 쓸 때 순서 주의

5.3 내장 함수의 사용

<SELECT 문 안에서 사용할 수 있는 내장 함수>

           COUNT ( ) : 튜플의 개수 반환
           MAX ( ) : 최댓값 반환
           MIN ( ) : 최솟값 반환
           AVG ( ) : 평균값 반환
           SUM ( ) : 합계값 반환

(1) 튜플의 개수 카운트 : COUNT( )

COUNT(*)를 하면 결과 칼럼 이름이 함수 이름인 COUNT(**)으로 표시 되는데 AS를 사용하면 원하는 이름으로 표시할 수 있음

SELECT COUNT(*) AS cnt_salesman
FROM emp
WHERE job = 'SALESMAN';

(2) 칼럼의 최댓값 : MAX ( )

SELECT MAX(sal)
FROM emp;

(3) 칼럼의 최솟값 : MIN ( )

SELECT MIN(sal)
FROM emp;

(4) 칼럼의 평균 : AVG ( )

SELECT AVG(sal)
FROM emp;

(5) 칼럼의 합계 : SUM ( )

SELECT SUM(sal)
FROM emp;

5.5 정렬, 그룹

(1) 정렬: ORDER BY

WHERE 절 다음에 서술하며 오름차순(ASC) 과 내림차순(DESC)이 있다.

정렬 조건이 두 개이면 앞쪽에 있는 튜플을 1차 정렬 후 2차 정렬한다.

(2) 그룹: GROUP BY

❗ GROUP BY를 사용할 때 SELECT 다음에 오는 컬럼에 주의
1) GROUP BY에 사용한 컬럼이 올 수 있다.
2) COUNT( ) , MAX( ) 와 같은 집계 함수를 적용한 컬럼이 올 수 있다.

이 두 경우를 제외한 컬럼을 SELECT에 사용하면 오류 발생

SELECT deptno, ename, AVG(sal) AS avg_sal
FROM emp
GROUP BY deptno ;  
//에러 발생 ( ename 칼럼이 GROUP BY와 함께 쓸 수 없는 컬럼임)
  • GROUP BY 결과에 조건을 지정
    GROUP BY 를 적용한 질의 결과에 대해 어떤 조건을 지정하여 결과를 필터링 하려면 HAVING 키워드를 이용한다.


    ✅ 테이블의 전체 튜플에 적용되는 검색 조건은 WHERE 뒤에 작성, GROUP BY에 의해 만들어진 결과에 적용할 검색 조건은 HAVING 다음에 작성


📌연습문제

  • 다음의 설명에 해당하는 SQL 명령어를 제시하시오 (1~5번)
  1. 데이터베이스 및 데이터베이스 내의 개체(테이블, 뷰, 인덱스 등)를 정의한다.
    -CREATE

  2. 테이블에 저장된 데이터를 조건에 맞게 조회한다.
    -SELECT

  3. 테이블에 새로운 데이터(튜플)를 추가한다.
    -INSERT

  4. 테이블에 저장된 데이터(튜플)를 삭제한다.
    -DELETE

  5. 사용자에게 접근/사용 권한을 부여한다.
    -GRANT

0개의 댓글