SQL 기초 (1) - 테이블 생성, 입력, 조회 및 정렬

Ek_5.4·2020년 7월 8일
2

SQL 실습

목록 보기
1/8

실습환경
: Windows 10 Pro, Oracle DB 11g Express Edition , Oracle SQL Developer,
예제 예시: 홍형경 저 - 누구나 쉽게 SQL

1. 테이블 생성(CREATE TABLE) 및 데이터 입력(INSERT)

CREATE TABLE emp_table
(   emp_id      NUMBER           NOT NULL,
    emp_name    VARCHAR2(100)    NOT NULL,
    gender      VARCHAR2(10)         NULL,
    age         NUMBER               NULL,
    hire_date   DATE                 NULL,
    etc         VARCHAR2(300)        NULL,
    PRIMARY KEY (emp_id)                  );

INSERT INTO 테이블 명
VALUES (값1, 값2, ...);

INSERT INTO 	emp_table (emp_id, emp_name, gender, age, hire_date)
     VALUES 	(1, '홍길동', '남성', 33, '2018-01-01');
INSERT INTO 	emp_table (emp_id, emp_name, gender, age, hire_date)
     VALUES 	(2, '김유신', '남성', 44, '2018-02-01');
INSERT INTO 	emp_table (emp_id, emp_name, gender, age, hire_date)
     VALUES 	(3, '강감찬', '남성', 55, '2018-03-01');
INSERT INTO 	emp_table (emp_id, emp_name, gender, age, hire_date)
     VALUES 	(4, '신사임당', '여성', 66, '2018-04-01');
COMMIT;

2. 데이터 조회 (SELECT)

SELECT 컬럼1, 컬럼2, ...
FROM 테이블명
WHERE 조건
ORDER BY 정렬순서(ASC(기본 오름차순), DESC);

SELECT *  -- 테이블 확인
  FROM emp_table;

3. 조건에 맞는 데이터 조회하기 (WHERE, LIKE, IN, BETWEEN)

  • 조건 연산자
    - =, !=, >, <, >=, <= (문자형-문자형, 숫자형-숫자형과 같은 형끼리만 연산 가능)
    - AND, OR

    예시: 잠실역에서 7시나 9시에 승하차한 건을 조회
    SELECT *
      FROM 	subway_statistics
     WHERE 	station_name = '잠실(216)'
       AND	(boarding_time = 7 OR boarding_time = 9);

  • LIKE 연산자
    : '~와 같다' 라는 의미가 있음, 특정 단어를 포함한 컬럼값을 조회할 때 사용.
     SELECT *
       FROM subway_statistics
      WHERE station_name LIKE '잠실%'; -- '잠실'로 시작하는 단어를 조회
    
      SELECT *
        FROM subway_statistics
       WHERE station_name LIKE '잠실(%'; -- 정확히 '잠실'만 찾음

  • IN 연산자
    : OR와 같은 기능을 함.
    SELECT *
      FROM 	subway_statistics
     WHERE 	station_name = '잠실(216)'
       AND	boarding_time IN (7, 9); 
                         -- IN연산자는 검색할 값을 괄호로 묶어 콤마로 구분한다.

  • BETWEEN 연산자
    : 이상과 이하의 값을 조회할 때 사용(단, 초과 미만은 <, > 사용)
    SELECT *
      FROM 	subway_statistics
     WHERE 	station_name LIKE '잠실%'
       AND	passanger_number BETWEEN 500 AND 1000;

4. 데이터 정렬하기 (ORDER BY)

: 오름차순(ASC, 생략가능), 내림차순(DESC)

  SELECT    *
    FROM    subway_statistics
ORDER BY    station_name; -- 가나다 순 정렬 됨.
  SELECT    *
    FROM    subway_statistics
   WHERE    station_name LIKE '잠실%'
ORDER BY    1, 2, 3, 4, 5, 6; -- 1번 컬럼, 즉 seq_id 오름차순 정렬.
                                 가장 먼저 명시한 컬럼 우선순위.
                                 여기서 첫번째 컬럼이 키값이 아니고
                                 중복 값이 존재한다면 ORDER BY 절에
                                 두번째로 명시한 2번 컬럼 기준으로 정렬됨.
                                 여기선 사실 ORDER BY 1로 명시해도
                                 같은 결과를 얻을 수 있음.
profile
Data analysis beginner

1개의 댓글

comment-user-thumbnail
2021년 4월 4일

내용이 보기 편합니다. 감사해요!!

답글 달기