-
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 tableDML
Data Mauipulation Language
데이터 조작 언어
insert / update / deleteDQL
Data Query Language
데이터 조회 언어
selectDCL
Data Control Language
데이터 제어 언어
테이블 조회/생성 권한 부여/회수
root는 가능하다.
GRANT / REVOKETCL
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 정복
'스타터스 백엔드 3기' 카테고리의 다른 글
221226. DB 3. DML, 제약조건, ALTER TABLE (0) 2022.12.26 유데미 스타터스 취업 부트캠프 3기 - 백엔드 5주차 (0) 2022.12.23 221221 자바15. 파일 (0) 2022.12.21 221221 자바 14. 입출력 (0) 2022.12.21 221220 자바 13 (스레드, 람다) : 람다식이 뭘까요? (0) 2022.12.20