[신세계I&C KDT][MySQL] #1 SELECT 절 (0328)

박현아·2024년 3월 28일
0

신세계아이앤씨 KDT

목록 보기
16/56

1. 환경설정

1) MySQL8 다운 및 설치

2) 접속툴

  • 자체적으로 설치
    : workbench (GUI)
    command line client (CMD)
  • 다운로드 설치
    : DBeaver.zip (http://dbeaver.io/download)
    Toad

3) 프로그램 언어 (자바)

  • JDBC (Java Database Connectivity) 기술 이용
  • JDBC 특징
    : DB 종류와 무관하게 연동 가능
    : Java SE 및 Java EE(웹) 무관하게 사용 가능
    : 단점 - SQLException이 발생됨 (무조건 try~catch 필요)

4) Database 생성 및 테이블 생성

Database 명 : testdb
테이블:

  • 수업 때 사용
    scott_mysql.sql 이용
    dept 테이블
    emp 테이블
    salgrade 테이블
  • 워크샵 때 사용
    MySQL용_SQL워크샵스크립트.txt
    tb_class
    tb_class_professor
    tb_department
    tb_grade
    tb_professor
    tb_student

2. 데이터베이스 (DB) vs 데이터베이스 관리 시스템 (DBMS)

1) 데이터베이스 (DataBase : DB)

: 개인, 회사, 관공서 등에서 업무적으로 필요한 데이터

2) 데이터베이스 관리 시스템 (DataBase Management System : DBMS)

: 데이터베이스를 전문적으로 관리해주는 S/W

(1) 관리 방법

  • 보안
  • CRUD
    Create : 데이터 생성
    Read : 데이터 조회
    Update : 데이터 수정
    Delete : 데이터 삭제
  • 사용자 생성
  • Role (권한)

(2) 데이터 저장 방법

  • 계층형 데이터베이스
  • 망형 데이터베이스
  • 객체지향 데이터베이스
  • 관계형 데이터베이스 : 행과 열로 구성된 2차원 테이블 형식으로 관리

3) 관계형 데이터베이스 (Relational DataBase : RDB)

<-> NoSQL (Not only SQL) : {key : value} : MongoDB, Casandra,...
: 행과 열로 구성된 2차원 테이블 형식으로 관리
(1) 종류

  • Oracle
  • MySQL (MariaDB는 MySQL과 문법이 거의 비슷)
  • MSSQL
  • DB2

3. SQL (Structured Query Language)

: RDB에서 사용하는 프로그램 언어

1) 특징

  • 대소문자 구별 X (식별자)
  • 연산자, 조건문, 함수 (자바의 메서드 역할)

2) 종류

(1) ANSI SQL

: 표준화된 SQL

  • DBMS에 독립적 -> 모든 DBMS에서 사용 가능 (Oracle, MySQL,...)

(2) 비 ANSI SQL

: 표준화되지 않은 SQL -> MySQL에서만 사용가능한 문법이 있다는 의미

3) 역할

(1) 조회 -> query

  • select문 이용

(2) 레코드 -> DML (Data Manipulation Language)

  • 레코드 생성 : insert 문
  • 레코드 수정 : update 문
  • 레코드 삭제 : delete 문

(3) 테이블 - DDL (Data Definition Language)

테이블 (객체 : 인덱스, 뷰, 프로시저, 사용자)

  • 테이블 생성 : create 문
  • 테이블 수정 : alter 문
  • 테이블 삭제 : drop 문

(4) 트랜잭션 명령어 - TCL (Transaction Control Languate)

  • DML과 매우 밀접한 관련이 있음
  • commit 문
  • rollback 문

(5) etc

  • 사용자 생성, 권한 부여, 권한 취소 등

4. select 문

1) 기능

  • selection : 행 선택
  • projection : 열 선택
  • join ★ : 2개 이상의 테이블 연결해서 selection, projection 처리

2) 문법

SELECT 절
FROM 절;
(mysql 생략 O, oracle 생략 X)

(1) select 절

  • * (모든컬럼,all)
    컬럼명,컬럼명2,...
    컬럼명+10 ==> 연산가능
    컬럼명 as 별칭 ==> 가독성
    리터럴(값)
    함수명(컬럼명) ==> 함수가능
    distinct 컬럼명 ==> 중복 제거

(2) from 절;

  • 테이블명

3) "" 와 '' 사용 (ANSI)

  • "" 는 별칭에서만 사용
  • '' 는 문자(열)값, 날짜값 : 리터럴(literal)
    예> 'hello', 'a'
    '2024-03-28'

4) null 값

: 테이블의 컬럼에 값이 없는 것
: select시 비워져서 보임

(1) 특징

  • 테이블의 모든 컬럼은 null 값을 가질 수 있다
  • 강제적으로 null이 아닌 값을 갖게 할 수 있음 (not null 제약조건)
  • null 값 조회 : IS NULL (부정은 IS NOT NULL)
  • null의 연산 결과는 null이다
  • null인 경우 연산 가능하도록 null의 값을 변경하는 함수 필요
    - ifnull(컬럼명, 기본값)
    예> (sal*12) + ifnull(comm, 0)
    cf) Oracle에서는 NVL(컬럼명, 기본값)

5. select 문 + 조건 지정

1) 문법

SELECT 절
FROM 절
WHERE 절;

2) 조건식에 사용되는 연산자

https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/non-typed-operators.html

(1) 비교연산자 1

= : 같냐?
!- : 같지 않냐?
> : 크냐?
>= 크거나 같냐?
< : 작냐?
<= : 작거나 같냐?

  • 수치, 날짜, 문자도 사용 가능

(2) BETWEEN A AND B

  • 범위로 조회
  • BETWEEN A AND B : A 부터 B까지 포함된 레코드 반환 (A, B 포함)
  • 수치, 날짜, 문자 사용 가능

(3) IN (값, 값2, 값3)

  • 한 번에 여러 개 지정 가능
  • IN (값, 값2, 값3) : 값 또는 값2 또는 값3 중에 있냐
  • 수치, 날짜, 문자 사용 가능

(4) like 연산자

: 패턴으로 조회 가능
: 2개의 와일드카드 문자와 같이 사용

  • % : 없거나 여러 문자 치환
  • _ : 반드시 하나의 문자와 치환
  • %와 _ 혼합 사용 가능
  • %나 _가 들어간 이름 찾는 방법
    예>
ename
--------
AAA_BBB
AAA%BBB
_XXXYYY

ename LIKE '%\_%'; 
// \뒤에 오는 와일드카드 문자를 그냥 일반 문자로 처리함 (oracle 불가)
ename LIKE '%$_%' ESCAPE '$'; 
// 임의의 문자 지정해서 뒤에 오는 와일드카드 문자를 그냥 일반문자로 처리함 (oracle 가능)

(5) NULL 조회

  • IS NULL

(6) 정렬

  • 정렬 방법
    오름차순 (기본) : ASC
    내림차순 : DESC

  • 문법
    SELECT 컬럼명1 as A, 컬럼명2 as B
    FROM 테이블명
    WHERE 조건식/연산자
    ORDER BY 표현식/컬럼명/별칭/select절에서의 위치 ASC/DESC;

  • 다중 정렬
    order by 표현식, 표현식2;
    예> ORDER BY SAL DESC, EMPNO;
    ORDER BY 별칭, 별칭;
    ORDER BY 1 DESC, 3 DESC;

0개의 댓글