- Python
- study
- C
- Operating_System
- 2023_1st_Semester
- programmers
- Android
- Baekjoon
- Linux
- Java
- Univ._Study
- pytorch
- Personal_Study
- SingleProject
- Unix_System
- codingTest
- app
- cloud_computing
- Image_classification
- 오블완
- Algorithm
- Artificial_Intelligence
- Database_Design
- 자격증
- tensorflow
- 리눅스마스터2급
- datastructure
- Kubernetes
- 티스토리챌린지
- c++
코딩 기록 저장소
[23-01/데이터베이스 설계] 쿼리 본문
1. 쿼리
Query
- DB에 저장된 데이터를 조회 또는 수정하기 위한 질의문
- SQL(Structured Query Language), QBE(Query By Example)
- MS Access의 쿼리 구조
쿼리의 유형
■ 선택(조회) 쿼리
- 단순 조회 쿼리 (Select)
- 요약 조회 쿼리 ( 집계 함수 사용(Group By) )
■ 실행 쿼리 (수정 or 갱신) 쿼리
- 스키마 변경 ( Create Table, Drop Table, Alter Table)
- Insert, Update, Delete
2. 쿼리 디자인
정렬, 표시
- 도서 정보를 발행일 내림차순, 도서코드 오름차순 정렬 후, 도서명, 저자, 페이지, 소비자 가격을 출력
조건, 또는
- Q) 도서명, 저자, 페이지, 발행일, 소비자가격 정보를 도서명 오름차순으로 출력하되, 다음의 조건을 만족하는 도서만 선택하여 출력하시오.
- 페이지 > 100 AND 15,000 < 소비자가격 < 30,000 OR 발행일 > 2007-02-01
3. 식 작성기
식 작성기 (등락폭)
- 기존 칼럼을 이용하여 새로운 칼럼(= Derived Attribute)을 생성함
- 시세관리 테이블의 [당일종가]와 [전일종가]를 사용하여 새로운 칼럼인 등락폭을 생성함
식 작성기 (등락률)
- 등락률 = 100 *(등락폭 / 전일종가)
- 반올림을 위해 "Round()" 함수 사용
- 값의 연결을 위해 "&" 연산자 사용
4. 조건 함수
IIF() 함수
IIF(조건식, True값, False값)
- 조건 식의 참/거짓에 따라 출력 값이 정해짐
- ex: IIF( [등락폭] > 0, "상승", "하락" )
- [등락] 칼럼을 추가하여, 등락폭이 양수이면 "상승", 음수이면 "하락", 0이면 "유지"를 출력
- IIF함수 내에 IIF함수 사용 가능함
Switch() 함수
Switch( 조건1, 결과1, 조건2, 결과2, ...)
5. 문자열 추출 함수
부분 문자열 추출
Mid( 대상 문자열, 시작위치, 반환 문자 개수 )
- [매물코드]로부터 [거래구분] 값 찾아내기
- [매물코드] 필드의 두 번째 자리가 [거래구분]을 가리킴 ( "B" : 매매, "R" : 전세 )
6. 문자열 비교 연산자
Like 연산자
- 특정 문자열을 포함하고 있는 문자열 검색에 사용
- 와일드카드 (*, ?, []) 활용
- * : 임의의 개수의 임의의 문자 ( ex : Like "*tion" → partion, mention, ... )
- ? : 임의의 문자 한 개 ( ex : Like "?en*" → center, send, ... )
- [] : 특정 범위를 만족하는 문자 한 개 ( ex : Like "[a-c]an" → ban, can, ... )
■ 저자명이 "이○○"이거나 도서명이 "다"로 끝나는 도서 출력하기
7. 논리 연산자
논리 연산자 ( OR, IN, NOT )
- OR 연산자 : "전기" OR "전산"
- IN 연산자 : IN ("RED", "GREEN", "BLUE")
- "RED" OR "GREEN" OR "BLUE"
- NOT 연산자 : NOT "전기"
■ 학과명에 "공학"이 포함된 학생 중 학사상태가 "재학"이 아닌 학생들 출력하기
8. 날짜 추출 함수
날짜 추출 함수 ( Year, Month, Day )
- 특정 날짜에서 연, 월, 일 추출
- Year / Month / Day ("2010-02-01")
- 날짜 필드에서 연, 월, 일 추출
- Year / Month / Day ([생년월일])
■ "1985"년에 태어난 학생들의 생일을 "○월 ○일" 형식으로 출력하기
9. 매개변수 쿼리
매개변수 쿼리
- 사용자가 입력한 값을 조건 식 작성에 활용하는 쿼리
- 일반 쿼리 : 학번이 "05367"인 학생의 정보를 조회
- 매개변수 쿼리 : 학번을 입력받아, 해당하는 학생의 정보를 조회
■ 학번을 입력받아 정보를 조회하기
■ 키워드를 입력받아 제목에 해당 키워드가 포함된 도서의 정보를 출력하기
10. 쿼리의 유형
선택(조회) 쿼리
- 단순 조회 쿼리
- Select
- 요약 조회 쿼리
- 집계 함수 사용 (Group By)
실행 쿼리(수정 or 갱신) 쿼리
- 스키마 변경
- Create Table
- Drop Table, Alter Table(다루지 않음)
- 인스턴스 변경
- Insert, Update, Delete
11. 테이블 생성
테이블 생성
- 테이블 명은 전체 DB에서 유일해야 함
- 일반적으로 테이블은 [만들기] -> [테이블] 에서 생성 가능
- 기존 테이블을 활용하여 새로운 테이블을 생성하는 경우 -> 쿼리 사용
■ [회비관리] 테이블로부터 [미납자명단] 테이블 생성
12. 레코드
레코드 추가
- 기존의 테이블에 새로운 레코드를 추가(삽입)
- 기본키가 중복되는 레코드는 추가 불가
■ 기준 날짜와 같거나 그 이후인 학생만 테이블에 추가하기
- 기준 날짜는 매개변수로 입력받음
■ 사용자 입력 + 기존 테이블 값의 추가
- 사용자 일부 값을 입력하고, 이 값에 대응되는 다른 정보를 기존 테이블로부터 가져옴
(공부중)
레코드 업데이트
- 존재하는 데이터의 값을 변경함
- 조건을 주지 않으면 전체 레코드가 영향을 받음
■ 장르가 "호러" 또는 "스릴러"인 비디오의 등급을 "18세"로 변경하기
레코드 삭제
- 테이블에 존재하는 레코드를 삭제함
- 조건을 설정하지 않으면 전체 레코드가 삭제됨
■ [도서목록관리] 테이블에서 소비자 가격이 10,000원 미만인 모든 도서를 삭제함
13. 요약 쿼리
요약 쿼리
- 합계, 평균, 최대, 최소, 개수 등의 통계치 생성
- SQL의 GROUP BY 명령어에 해당
■ [학생신상], [성적관리] 학과별, 학사상태별 중간고사 평균 조회하기
14. Sub-Query
Sub-Query
- 다른 쿼리의 내부에 포함된 쿼리
- 두번의 쿼리를 수행할 수도 있고 Sub-Query를 이용해 하나의 쿼리로 구성할 수도 있음
- Sub-Query를 먼저 생성한 후, 이를 포함하여 Main Query를 생성함
- ex : 학번이 "05454"인 학생보다 이후에 태어난 학생의 학번, 이름, 생일을 출력하시오.
- 학번이 "05454"인 학생의 생년월일은? -> "1986-02-01"
- "1986-02-01" 이후에 태어난 학생의 학번, 이름, 생일은?
'학교 공부 > 데이터베이스 설계' 카테고리의 다른 글
[23-01/데이터베이스 설계] 테이블 (0) | 2023.05.03 |
---|---|
[23-01/데이터베이스 설계] 논리적 모델링 (1) | 2023.04.27 |
[23-01/데이터베이스 설계] DB 개요 및 개념적 모델링 (1) | 2023.04.27 |