Post

MySQL : 정보 시스템과 SQL SELECT의 활용

정보 시스템 요약

1. 정보 시스템

  • 데이터 수집, 저장, 처리하여 의사결정에 유용한 정보를 생성하고 분배하는 수단

2. 자료와 정보

1) 자료(Data)

  • 현실 세계로부터 관찰이나 측정을 통해 수집된 사실이나 값
  • 양적 데이터: 숫자로 표현 (예: 2015493 -> 사원번호)
  • 질적 데이터: 속성으로 표현 (예: 크다 -> 000의 키) 2) 정보(Information)
  • 자료를 처리하여 얻은 결과로, 의사결정에 사용되는 값
  • 예: 기온 8도, 습도 75% -> 지난 10년간 비 올 확률 68%, 우산 필요 3) 데이터 마이닝(Data Mining)
  • 유의미하고 가치 있는 데이터를 추출하는 기술 4) 정보의 가치 높이는 방법
  • 목적에 맞게 데이터를 분류하고 의미 부여

3. Database 개념

1) 정의

  • 조직 내 데이터의 체계적 집합 2) 등장 배경
  • 데이터 공유 필요, 구조 변경 시 응용 프로그램 수정 번거로움 해결 3) Database 특징
  • 통합 데이터, 공용 데이터, 운영 데이터, 저장된 데이터 4) Database 구성의 장점
  • 데이터 중복 최소화, 공유, 일관성, 무결성, 최신 정보 이용 가능, 처리 속도 증가

4. DBMS(Database Management System) 기능

1) 정의 기능

  • 데이터 형, 구조, 제약 조건 명시 2) 제어 기능
  • 무결성 유지, 보안 검사, 병행수행 제어 3) 조작 기능
  • 데이터 검색, 삽입, 삭제, 갱신 인터페이스 제공

5. Schema

1) 정의

  • 데이터 객체, 성질, 관계, 제약조건 정의 2) Schema 3계층
  • 외부 Schema: 특정 응용 한정 데이터 구조
  • 개념 Schema: 전체적인 논리적 설계
  • 내부 Schema: 실제 저장 방법 설명

6. DBA(Database Administrator) 기능

1) Database 설계와 운영

  • Schema 정의, 보안 및 무결성 검사, Backup & Recovery 정의, 접근 권한 전략 2) 행정 및 불편 해결
  • 사용자 요구 및 불평 해결 3) 시스템 감시 및 성능 분석
  • 시스템 이상 현상 감지, 성능 향상 감시

7. SQL(Structured Query Language)

1) 기능

  • 데이터 입력, 수정, 삭제, 조회
  • 표준화 작업: SQL-86, SQL-89, SQL-92, SQL-1999, SQL-2003, SQL-2008, SQL-2011, SQL-2016, SQL-2019 2) 명령어 종류
  • DML: SELECT, INSERT, UPDATE, DELETE
  • DDL: CREATE, ALTER, DROP
  • DCL: GRANT, REVOKE, COMMIT, ROLLBACK, SAVEPOINT

실습 테이블 소개

1) dept: 부서 정보 저장, Primary Key: deptno 2) emp: 사원 정보 저장, Primary Key: empno, Foreign Key: deptno 3) salgrade: 급여 등급 정보 저장

SQL 예제

1) 사원 봉급

1
   SELECT concat(ename, '의 봉급은', sal, '입니다') FROM emp;

2) 부서 번호

1
   SELECT distinct deptno FROM emp;

3) 특정 사원 정보

1
   SELECT ename, sal, comm, sal + IFNULL(comm, 0) FROM emp WHERE ename = 'SMITH';

4) 전체 사원 정보

1
   SELECT * FROM emp;

5) 연봉 계산

1
   SELECT empno AS 사원번호, ename AS 이름, (sal + IFNULL(comm, 0)) * 12 AS "Annual Salary" FROM emp;

SQL SELECT 기능 요약

1. SELECT의 기능

  1. Selection: 조건 검색, Row에 대한 필터링
  2. Projection: column에 대한 필터링
  3. Join: 여러 테이블에서의 검색

2. SELECT Syntax

1
2
3
4
SELECT [DISTINCT | ALL] {* | column1, column2 [AS [alias]] | expr}
FROM table_name
WHERE condition
ORDER BY column [ASC | DESC];
  • SELECT 절: 질의할 칼럼 나열, 구분은 쉼표(,)
  • FROM 절: 조회할 테이블 이름
  • *: 모든 칼럼 조회
  • ALL: 모든 결과 ROW 표시 (기본값)
  • DISTINCT: 중복된 ROW 제외
  • expr: SQL 함수나 수학 연산 포함 표현식
  • alias: 칼럼에 대한 별칭 사용
  • Default Column Heading: column 명이 대문자로 표시
  • Default Data Justification: Number 값은 오른쪽 정렬, Character와 Date 값은 왼쪽 정렬

3. 특정 열 선택 예제

1
2
SELECT empno, ename, sal FROM emp;
SELECT empno, ename, job, mgr FROM emp;

4. 산술 연산자

  • +, -, *, / 등 수학 연산 표현식
  • 우선순위 있음: */+-보다 우선

5. NULL 값

  • NULL: 특정 행/열에 값이 없는 상태
  • 특징: 연산에 포함되지 않으며, NULL 값을 포함한 산술 연산 결과는 NULL

6. IFNULL 함수

  • NULL 값을 특정 값으로 치환
  • 예제:
    1
    2
    
    SELECT IFNULL(comm, 0) FROM emp;
    SELECT empno, ename, sal, sal * 12 + IFNULL(comm, 0) FROM emp;
    

7. Alias 별칭

  • 칼럼 header에 별칭 부여
  • 예제:
    1
    
    SELECT ename "Name", sal AS "Salary" FROM emp;
    

8. 문자열 연결 연산자

  • MySQL: CONCAT() 사용
  • 예제:
    1
    
    SELECT CONCAT(ename, ' is working as a ', job) FROM emp;
    

9. Literals (상수)

  • Character literal: 작은 따옴표로 묶음
  • Number literal: 따옴표 없이 표현

10. Duplicate Values (중복 행 제거)

  • DISTINCT 사용

11. WHERE 절

  • 특정 조건의 row만 선택
  • 비교 연산자: <, >, <=, >=, =, !=, <>
  • 예제:
    1
    2
    
    SELECT ename, job, deptno FROM emp WHERE job = 'CLERK';
    SELECT empno, ename, hiredate FROM emp WHERE hiredate >= '1983-01-01';
    

12. 논리 연산자

  • AND, OR, NOT 사용
  • 예제:
    1
    
    SELECT empno, ename, sal, deptno FROM emp WHERE sal >= 1000 AND deptno = 30;
    

13. SQL 연산자

  • BETWEEN A AND B
    1
    
    SELECT ename, job, sal FROM emp WHERE sal BETWEEN 1300 AND 1500;
    
  • IN(list)
    1
    
    SELECT ename, job FROM emp WHERE job IN ('CLERK', 'MANAGER', 'ANALYST');
    
  • LIKE(%, _)
    1
    
    SELECT ename FROM emp WHERE ename LIKE 'A%';
    
  • IS NULL / IS NOT NULL
    1
    
    SELECT ename FROM emp WHERE comm IS NULL;
    

14. ORDER BY

  • 데이터 정렬
  • 기본적으로 오름차순 정렬 (ASC)
  • 내림차순 정렬시 DESC 사용
  • 예제:
    1
    2
    
    SELECT empno, ename, hiredate FROM emp ORDER BY hiredate DESC;
    SELECT empno, ename, sal, comm, sal * 12 + IFNULL(comm, 0) AS "Annual" FROM emp WHERE deptno = 20 ORDER BY "Annual" ASC;
    

Java JDBC 예제

  • MySQL Driver 로딩 및 Connection, Statement, ResultSet 사용 예제 포함
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.sql.*;

public class JDBCDemo {
    public static void main(String[] args) {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mycompany", "root", "root1234");
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT now(), version()");
            while (rs.next()) {
                System.out.println(rs.getString(1) + ", " + rs.getString(2));
            }
            rs.close();
            stmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
This post is licensed under CC BY 4.0 by the author.

© sseung. Some rights reserved.