Back/JSP

7장 MySQL

2023. 4. 11. 12:35
목차
  1. 데이터베이스란?
  2. 데이터베이스
  3. DBMS
  4. MySQL
  5. SQL : Structured Query Language
  6. use
  7. 인덱스
  8. 데이터 검색 방법
  9. 데이터 타입
  10. 참조 값 변경에 대한 조건 (FOREIGN KEY Constraints)
  11. DML : insert , delete , select update
  12. MySQL과 Oracle의 차이점
  13. 데이터 형태
  14. 합집합
  15. 교집합
  16. 차집합

데이터베이스란?

데이터베이스

  • 여러 살마에 의해 특정 분야에서 사용될 목적으로 통합하여 관리되는 데이터의 집합체
  • 다수의 사용자가 사용하는 데이터들의 공유와 운영을 위해 저장해 놓은 공간으로 자료항목의 중복성을 없애 줌
  • 자료를 구조화하여 저장함으로써 데이터 검색과 업데이트의 효율성을 높여 줌

DBMS

  • 데이터베이스 관리 시스템(DBMS)이란 데이터베이스를 직접 응용 프로그램들이 조작하는 것이 아니라
  • 데이터베이스를 조작하는 별도의 소프트웨어를 의미하며 앞으로 사용하게 될 MySQL 또한 DBMS의 한 종류임

MySQL

  • RDBMS 중 하나로 오픈 소스 라이브러리 정책에 따라 배포됨
  • 영리목적일 경우 라이선스 구매 필요
  • MySQL은 오픈 소스이며 다중 사용자와 다중 스레드를 제공하며 다음과 같은 장점을 제공
    • MySQL 응용 프로그램을 개발자의 용도에 맞게 수정이 용이
    • 다양한 운영체제에서 사용할 수 있으며 여러 종류의 프로그래밍 언어 지원
    • 표준 SQL 형식을 지원

외래키는 1쪽에 있는걸 N 쪽에 넣어줘야 함

SQL : Structured Query Language

  • 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
  • SQL 쿼리문은 데이터베이스에 저장된 값을 불러내기 위한 명령문
  • 데이터베이스 관련 명령어와 테이블 관련 명령어로 구분되어 수행
  • 일부 명령어를 제외하고 나머지 명령어에 대한 알파벳 대/소문자를 특별히 구분하지 않음.

use

  • 생성되어 있는 데이터베이스를 선택할 때 사용
use 데이터베이스명;

인덱스

  • 데이터를 빠르게 찾기 위해 만듬
  • 내가 검색하고자 하는 것이 많지 않을 때만 효율이 좋다. 찾을게 많다면 목차를 볼 필요 없이 전체 데이터를 읽어내는 것이 더 빠를 수 있다.
  • 이를 결정하기 위해서는 데이터의 분포도를 확인하여 결정해야 한다.
  • 데이터 분포도가 작으면서 WHERE 조건절에 많이 언급되는 column들에 index를 넣어주는 것이 좋다.
create index idx_test on product(id,prices);
  • 위 코드와 같이 2개 이상의 column에 대한 결합 인덱스도 존재한다.
  • 유지관리에 추가적인 비용이 발생한다.

데이터 검색 방법

  1. 선형 탐색
  2. Binary Tree
  3. B-tree : 자식 노드를 binary가 아니라 balance 하게 여러 노드를 가질 수 있게 하는 트리구조(가장 많이 쓰이는 index 자료구조)
    • b+ tree : b-tree보다 갱신에 대해 더 효율적인 방식

데이터 타입

  • 실제 데이터를 저장하기 위해 행과 열로 구분된 테이블을 생성할 때는 열에 해당하는 필드의 데이터 타입을 설정
  • 필드의 데이터 타입을 문자열 또는 정수형 등으로 지정하여 데이터 타입을 명확하게 지정

y

참조 값 변경에 대한 조건 (FOREIGN KEY Constraints)

  1. 변경 제한
  2. 연쇄 cascade
  3. null 세팅
  4. default세팅
  • 4가지 중 하나를 설정값으로 선택 가능하다.
[CONSTRAINT [symbol]] FOREIGN KEY
    [index_name] (col_name, ...)
    REFERENCES tbl_name (col_name,...)
    [ON DELETE reference_option]
    [ON UPDATE reference_option]

reference_option:
    RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT

DML : insert , delete , select update

  • 오라클 database의 명령어와 거의 유사하기 때문에 스킵합니다.

MySQL과 Oracle의 차이점

  • 집합 연산 중에서 union 연산만 제공한다.
  • 교집합과 차집합은 JOIN과 서브쿼리로 직접 만들어야 한다.

데이터 형태

합집합

  • UNION : 중복 없이 가져오기
select emp_no from titles where title = 'Senior Staff'
union
select emp_no from titles where title = 'Staff'
order by emp_no;
  • UNION ALL : 중복을 허용해서 가져오기
select emp_no from titles where title = 'Senior Staff'
union all
select emp_no from titles where title = 'Staff'
order by emp_no;

교집합

  • Join으로 만든다
  • A그룹(Staff) 에도 속하고 , B그룹(Senior Staff)에도 속하는 사원번호 가져오기
-- 따로 함수가 제공되지 않으므로 join 연산을 통해 만들어야 한다
select t1.emp_no
from titles t1 , titles t2
where t1.emp_no = t2.emp_no
	and t1.title = 'Senior Staff'
	and t2.title = 'Staff'
order by t1_emp_no;

차집합

  • 서브쿼리로 만든다.
  • A그룹(Staff) 에도 속하고 , B그룹(Senior Staff)에는 속하지 않는 사원번호 가져오기
-- 따로 함수가 제공되지 않으므로 서브 쿼리문을 통해 만들어야 한다.
select emp_no
from titles
where title = 'staff' and
        enp_no not in(
            select emp_no
            from titles
            where title = 'Senior Staff'
            )
order by emp_no asc;

'Back > JSP' 카테고리의 다른 글

8장 JDBC  (0) 2023.04.11
6장 액션 태그  (0) 2023.04.10
5장 쿠키  (0) 2023.04.10
4장 세션  (1) 2023.04.10
3장 유효성 검사  (0) 2023.04.09
  1. 데이터베이스란?
  2. 데이터베이스
  3. DBMS
  4. MySQL
  5. SQL : Structured Query Language
  6. use
  7. 인덱스
  8. 데이터 검색 방법
  9. 데이터 타입
  10. 참조 값 변경에 대한 조건 (FOREIGN KEY Constraints)
  11. DML : insert , delete , select update
  12. MySQL과 Oracle의 차이점
  13. 데이터 형태
  14. 합집합
  15. 교집합
  16. 차집합
'Back/JSP' 카테고리의 다른 글
  • 8장 JDBC
  • 6장 액션 태그
  • 5장 쿠키
  • 4장 세션
잘잔디
잘잔디
4학년이 되고 취업 준비를 위해 2023-01-01부터 공부한 내용을 정리한 블로그입니다.
잘잔디
MBCS 공부일지
잘잔디
전체
오늘
어제
  • 분류 전체보기 (217)
    • 파이썬 (28)
      • 파이썬 이론 (8)
      • NumPy (3)
      • Pandas (6)
      • 파이썬 시각화 (8)
      • 응용 (2)
    • Java (3)
    • Back (38)
      • DataBase이론 (12)
      • MySQL (2)
      • JSP (8)
      • JSTL (2)
      • Spring (0)
      • Django (8)
      • MongoDB (6)
      • FastAPI (0)
    • Front (8)
      • HTML (3)
      • CSS (2)
      • JS (1)
    • 회고록 (10)
    • 알고리즘 문제 풀이 (95)
      • 알고리즘 이론 공부 (14)
      • 프로그래머스 (69)
      • 백준 (12)
    • 머신러닝 (0)
    • 딥러닝 (0)
    • Git (3)
    • R 프로그래밍 (3)
    • 빅데이터 관리 (16)
      • 리눅스 (4)
      • Hadoop (12)
    • AWS (2)
    • 일상 (10)
      • 책 리뷰 (5)
      • TOEIC (2)
      • 자잘하게 공부한 것들 (2)
    • 사이버보안 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • git
  • JavaScript
  • 이중우선순위 큐
  • Database
  • playdata
  • JS
  • 객체지향
  • 골드
  • CSS
  • 백준
  • 즐거웠다
  • 독산역
  • OOP
  • Java
  • web
  • HTML
  • backend
  • db
  • Encore

최근 댓글

최근 글

hELLO · Designed By 정상우.
잘잔디
7장 MySQL
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.