ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 221223. DB 2. RDBMS, select
    스타터스 백엔드 3기 2022. 12. 23. 13:32

    하루입니다.

     


     

    개념

    • 데이터는 의미있는 정보이다.
    • 데이터베이스는 연관된 데이터를 모은 것이다.
    • 데이터는 재료이고, 재료 자체로는 유용하지 않다. 자료를 활용하기 위해 정보로 가공해야 한다. 이것이 데이터베이스라는 기술이다.
    • 학생정보 = 학번, 학생이름
    • 학생정보 = 학번, 학생이름, 사번
    • 마리아 DB => 모델링 => sql
    • 대용량, 효율성, 무결성, 활용성, 공유성, 보안성을 갖추어야 한다.

     

     

    DBMS

    • Database Management System
    • 정보의 저장과 관리를 전담하는 특수한 소프트웨어이다.
    • 데이터의 입출력을 담당한다.
    • DBMS를 사용하면 프로그램과 데이터가 분리되고 종속성이 제거된다. 유연해진다.

     

    데이터베이스 표현방법

    계층형 : 수직적인 트리 형태로 저장

    네트워크형 : 정보끼리 망을 이루는 형태로 저장

    관계형 : 모든 데이터를 표 형태로 저장, 성능보다 유연성에 집중, 자원 소모 많음

    객체지향형 : OOP를 DBMS에 적용 ... 

    빅데이터 : 일관성을 약간 희생하고 성능과 용량을 극적으로 향상

     

     

     

    관계형 데이터베이스 RDBMS

    • 관계형 : 모든 데이터 관계를 행과 열의 데이터 구조로 만든다.
    • 객체관계형 : 애매
    • Oracle, ms sql server, mysql, maria db
    • RDBMS
    • 사용자 : emp@'%'/emp
    • 수강신청 하려면 학생, 강사 등 연관 테이블 여러개가 필요하다.
    • 연관 테이블을 모든 것을 스키마라고 하고, 데이터베이스라고 한다.
    • 이걸 사용하는 사람이 사용자이다.
    • 이게 모인 게 RDBMS이다.

     

     

     

    쿼리란? QUERY

    • DBMS에 요청한다는 뜻, 한국어로 '질의'
    • 질문 뿐 아니라 관리까지 담당한다. 
    • 쿼리 명령을 구조적으로 정리한 것이 SQL이다.

     

     

    SQL의 특징

    • 대화식 언어이다.
    • EX) 가장 많은 월급은? 5300000이다.
    • 선언적 언어이다.
    • 절차에 신경쓸 필요 없이 원하는 정보를 명확히 말하자.
    • Select Query Language

     

     

     

    DB의 특징

    테이블
    - 현실 세계에 존재하는 사물의 특성을 저장한다.
    - 테이블이 표현하는 대상을 엔티티라고 한다. 
    - 저장된 엔티티 하나(가로)를 레코드라고 한다.
    - 레코드의 세부 속성(세로)를 필드라고 한다. 

    DB 오브젝트
    - 데이터베이스에 저장되는 모든 것을 통칭하여 DB 오브젝트라고 한다. 
    - 간단하게 개체라고 한다!

    명칭 규칙
    - 이름 중복 X
    - 대소문자 상관 없으나 일관성 지키기
    - 예약어는 사용 불가하다. CREATE, SELECT 등.
    - 한글 사용 가능하나 영어 권장
    - _ 외에는 자제하자
    - 테이블은 t, 인덱스는 idx, 뷰는 v 등으로 시작하는 것도 권장.

    데이터 타입
    - 정보의 크기나 형태를 규정하는 것이다.
    - 저장할 정보의 성질에 따라 적합한 데이터 타입을 지정하자. 최소한의 메모리로 최대한의 효율!

     

     

     

    JDBC란?

    • 자바의 데이터베이스 접속 인터페이스이다. 
    • DB작업의 개발 편의성과 생산성을 높이기 위해 마이바티스, 하이퍼네이트같은 프레임워크도 존재한다.

     

     

     

    데이터베이스 언어

    • SQL : Structured Query Language
    • 구조화된 질의 언어
    • 점점 Oracle - mysql - maris DB로 넘어가고 있다. (비용땜에)

     

     

     

     

    mariaDB에 접근하는 방법

    1. 도스 mysql -u 계정 -p 암호

    2. heidisql + 다른 툴

     

     

     

    sql 문법

    DDL
    Data Definition Language

    데이터 구조 정의 언어
    테이블 생성 : create table ...
    학생 테이블 : 학번 이름 성적
    student name char(40) ...
    사용자 생성 : create user
    데이터베이스 생성 : create database ...
    테이블 변경 : alter table
    테이블 drop table

    DML
    Data Mauipulation Language

    데이터 조작 언어
    insert / update / delete
    DQL
    Data Query Language

    데이터 조회 언어
    select

    DCL
    Data Control Language

    데이터 제어 언어
    테이블 조회/생성 권한 부여/회수
    root는 가능하다.
    GRANT / REVOKE

    TCL
    Transaction Control Language

    트랜잭션
    commit / rollback

     

     


     

     

    교재 4장. SELECT

    오늘은 이런 걸 배워용

    • SELECT
    • FROM
    • WHERE 
    • GROUP BY
    • HAVING
    • ORDER BY

    실행 순서 : from - where - group by - having - select - order by

     

     

    연산자

     

     

    • 조건문을 사용할 때 비교 대상끼리 타입이 호환되어야 한다. 
    • 필드 안에 저장된 값은 대소문자를 구분한다. 
    • NULL은 값이 입력되지 않은 특수한 상태이다. 0도 아니고 빈 문자열도 아닌 값을 알 수 없거나 아직 결과를 알 수 없다는 뜻이다. 
    • 무슨 값인지도 모르는 상태이기에 비교가 불가하고, 전용 연산자인 IS (NOT)  NULL을 사용한다.

     

     


     

     

    select 실습 시작

    1. employees 테이블 데이터 조회

     

     

    2. 연봉 구하기 (데이터 계산), Alias (별칭)

     

     

    3. 중복 제외 : distinct 

     

     

    4. 문자열과 행 합치기 : concat

     

     

    5. 범위연산자 : between

     

     

    6. 목록연산자 : in(  ,  ,  )

    • WHERE employee_id = 10 OR employee_id = 30 ... 과 같은 뜻이다.

     

     

    7. 유사패턴처리연산자 : like % ___

    • L로 시작하는 경우 : LIKE 'L%';
    • L로 끝나는 경우 : LIKE '%L';
    • L이 들어가는 경우 : LIKE '%L%';
    • L이 세번째부터 있는 경우 : LIKE '__L'%;
    • L이 세번째에 있으면서도 마지막 L인 경우 : LIKE '___L':
    • 만약 %를 문자열로 사용하고 싶다면 #%로 사용하자. #은 이스케이프 문자이다. 

     

     

    8. null 연산자

    • IS NULL, IS NOT NULL
    • WHERE commission_pct == null;
    • 위의 코드는 commission_pct의 문자열이 NULL인 것을 뜻한다. 

     

     

     

    9. 인덱스 자르기 : LIMIT

    • 100, 101, 102, 103이 출력된다.

     

     

    10. ORDER BY

     

    오름차순

    • 숫자 < 숫자
    • 문자 : 사전 앞 < 뒤
    • 날짜 : 오래됨 < 최근

     

     


     

     

    5장 데이터집계

    함수(집계함수 = 그룹함수)

     

    • NULL의 처리에 대해 신경을 써야 한다. NULL은 0이 아니다.
    • HAVING은 GROUP BY의 조건절이다. 효율적이다.

     

     

    1. 갯수 / 총합 / 평균 / 최대 / 최소

     

     

    1-1. 날짜의 최대 최소

     

     

    2. 각 부서별 사원의 급여총합 조회, 부서코드 없는 사람 제외, 급여총합 10만 이상만 포함

    • is not null, group by, HAVING
    • group by에 조건을 주고 싶다면 HAVING에 줘야 한다.

     

     


     

     

    이건 정말

     

    어이 없어 

     

    하긴 독일에서 온 애한테 함초롱바탕을 어떻게 바라니

     

     

     

     

     

    출처

    선생님의 수업

    김상형의 SQL 정복

     

     

Designed by Tistory.