본문 바로가기

SQL

#2. SQL 언어

1. SQL 언어

 

    1) 정의

         - 관계형 데이터베이스를 조작하기 위한 표준 언어이다.

         - 관계 대수와 관계 해석의 수학적인 이론을 기초로 개발되었다.

         - 데이터베이스의 구조를 정의하거나 데이터베이스에 저장된 데이터를 검색할 때 사용한다.

 

    2) 특징

         - 비절차적 언어

            * 기존 프로그래밍 언어 : 레코드 단위로 처리 조건에 따라 데이터에 대한 접근 경로가 달라짐
            * SQL 언어 : 조건을 만족하는 데이터를 집합 단위로 한꺼번에 처리
 

         - 대화식으로 사용되거나 응용 프로그램에 삽입하여 사용

 

 

2. SQL 명령문의 종류

 

    1) 질의어 (DQL : Data Query Language)

         : 데이터베이스에 저장된 데이터를 조회하는 명령어

          - SELECT

 

    2) 데이터 조작어 (DML : Data Manipulation Language)

        : 데이터베이스 응용 프로그램 개발을 위해 주로 사용되며 데이터를 입력, 수정 삭제하는 명령문
          - INSERT, UPDATE, DELETE

 

    3) 데이터 정의어 (DDL : Data Definition Language)

         : 데이터베이스 설계자가 데이터베이스의 구조를 정의하거나 수정하기 위한 목적으로 사용하며
           데이터베이스 객체를 생성, 수정, 삭제하는 명령문
           - CREATE, ALTER, DROP, RENAME, TRUNCATE 
 

    4) 트랜잭션 처리어 (TCL : Transaction Control Language)

        : 트랜잭션 관리를 위한 목적으로 사용

           - COMMIT, ROLLBACK, SAVEPOINT

 

    5) 데이터 제어어 (DCL : Data Control Language)

        : 데이터베이스 관리자가 데이터나 데이터베이스 객체에 대한 접근 권한 부여와 같은 데이터베이스 시스템을
          관리하기 위한 목적으로 사용
           - GRANT, REVOKE
 

3. 테이블 인스턴스

 

    1) 테이블 인스턴스(table instance)란

         - 데이터베이스 설계시에 테이블의 구조와 칼럼의 특성을 알기 쉽게 요약한 내용이다.

         - 테이블 인스턴스는 테이블의 칼럼 이름, 데이터 타입, 키 종류, NULL이나

                                          중복 값의 허용 여부, 외래 키 그리고 칼럼에 대한 설명으로 구성된다.

 

학생 테이블 인스턴스 및 예제 데이터

 

 

4.데이터 딕셔너리를 이용한 테이블 조회


    1) 데이터 딕셔너리 (Data dictionary)

        : 데이터베이스 객체에 대한 다양한 시스템 정보를 저장하고 있는 테이블의 집합

 

        - 테이블 이름 확인
          사용자 데이터베이스 계정에 생성된 테이블 이름을 확인하기 위하여 tab 이라는 데이터 딕셔너리 테이블을 조회
           => SELECT * FROM tab;

         

        - 테이블 구조 확인

           데이터베이스의 모든 데이터는 테이블이라는 논리적인 구조에 저장된다.
           사용자가 테이블의 데이터 조회시 칼럼 이름을 잘못 적을 경우, ‘ORA-000904 : invalid identifier’ 오류가 발생한다.
           테이블의 구조 정보를 조회하여 정확한 칼럼 이름 확인이 필요하다.
           이블의 칼럼 이름데이터 타입과 길이, NULL 허용 유무 등과 같은 테이블 구조 정보를 확인할 수 있다.

           => DESC student;     /*student 테이블 확인*/

            

5. SQL 명령문의 기초

 

    1) SELECT

       : 테이블에 저장된 데이터를 검색하기 위한 명령문, SQL 명령문 중에서 가장 자주 사용하는 명령문이다.

         - SELECT 명령문에서 SELECT절과 FROM절은 필수절이다.
         - SELECT …… FROM 테이블명
           FROM 절에서 지정한 테이블에서 SELECT 절에서 나열한 칼럼에 저장된 데이터를 검색하라는 의미이다.
           => SELECT studno,name FROM student;       
           => SELECT * FROM student;
 

    2) SQL 명령문의 표준 형식

       

         - 데이터 조회를 위해서는 SELECT 절과 FROM 절이 반드시 존재해야 한다.

         - WHERE, GROUP BY, HAVING, ORDER BY 절은 필요에 따라 선택적으로 사용 가능하다.

SQL 명령문의 표준형식


         - SQL 명령문 작성시 규칙

             • SQL 명령문에서 대소문자를 구분하지 않는다.

             • 키워드는 주로 대문자로 사용하고 테이블명, 칼럼 이름은 소문자로 작성하는 것을 권장한다.

             • 가능하면 절은 줄을 구분하여 작성하고, 들여쓰기를 사용하여 읽기 쉽게 작성할 것을 권장한다.

             • 테이블명, 칼럼 이름, 키워드(SELECT, FROM, WHERE )는 축약할 수 없다.
 

    3) 중복행 제거

 

         - SELECT 절에 DISTINCT 키워드를 사용하여 중복행을 제거할 수 있다.

 

         - 예) student 테이블에서 deptno 칼럼을 조회할 때

                 => SELECT deptno FROM student;  ------- 중복되는 행이 나온다.

                 => SELECT DISTINCT deptno FROM student; ------- 중복되는 행이 나오지 않는다.

 

    4) 칼럼에 별명 부여하기

          

         - 별명을 부여하는 일반적인 경우

             • 칼럼 이름이 너무 길어서 한 화면에 칼럼 이름 전체를 출력하기 어려운 경우

             • SQL 함수나 산술 연산에 의해 일시적으로 만들어지는 가상 칼럼이 생기는 경우

 

         - 별명 부여 방법

             • 칼럼 이름과 별명 사이에 공백을 추가하는 방법   

                =>  SELECT deptnoo'DP' FROM student;

 

             • 칼럼 이름과 별명 사이에 AS 키워드를 추가하는 방법 
                 => SELECT deptno AS 'DP' FROM student;
 

             • 큰따옴표 (“”)를 사용하는 방법   

                : 칼럼 이름과 별명 사이에 공백을 추가하고 큰따옴표를 사용한다.

                   (별명에 공백, 특수문자, 대소문자가 포함된 경우 주로 사용한다.)

                   =>  SELECT deptno "D P" FROM student;

 

 

    5) 합성 연산자

 

         - 합성(concatenation)연산자 (||)

 

             • 하나의 칼럼과 다른 칼럼, 산술 표현식 또는 상수 값과 연결하여 하나의 칼럼처럼 출력할 경우에 사용한다.        

             • 출력 형식은 합성 연산자를 기준으로 좌, 우로 연결된 칼럼의 데이터가 하나의 칼럼 데이터처럼 출력된다.

             • 합성연산자를 사용하여 리터럴(literal) 문자를 출력할 수 있다.

                  리터럴 문자를 칼럼 값처럼 출력할 경우, 리터럴 문자를 단일 인용부호(‘’) 사이에 포함하여 사용

 

             • 예) 전인하 학생의 키는 176(cm)이고, 몸무게는 72(kg)이다.

                      => SELECT name || ' 학생의 키는 ' || height || '(cm)이고, 몸무게는 ' || weight || '(kg)이다.'

                            FROM student;

 

    6) 산술 연산자

 

         - 산술 연산자(+,-, *, /)

 

             • 칼럼 값에 산술 연산자를 적용하여 계산된 결과를 출력할 수 있는 기능을 제공한다.

             • 산술연산은 숫자 또는 날짜 타입으로 지정된 칼럼에만 사용 가능하다.

             • 산술연산자의 우선순위는 수학에서의 산술 연산자의 우선순위와 동일하다.

                  괄호를 사용하여 우선순위를 변경할 수 있다.

 

             • 예) 학생의 몸무게를 pound로 환산하고 weight_pound 라는 별명으로 출력하기 (1kg = 2.2pound)

                     => SELECT name, weight, weight*2.2 AS weight_pound

                           FROM student;

 

 

 

'SQL' 카테고리의 다른 글

#5. 집합 연산자와 행의 정렬  (0) 2022.04.12
#4. 조건 검색  (0) 2022.04.12
#3. 데이터 타입(ORACLE)  (0) 2022.04.11
#1. 데이터베이스와 데이터베이스 관리 시스템  (0) 2022.04.10