코딩 기록 저장소

[23-01/데이터베이스 설계] 쿼리 본문

학교 공부/데이터베이스 설계

[23-01/데이터베이스 설계] 쿼리

KimNang 2023. 5. 10. 21:03

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" 이후에 태어난 학생의 학번, 이름, 생일은?