[1. 오늘 배운 것]
1. SELECT문
- 테이블 내에서 검색할 때 쓰이는 명령어
- 기본 구조 : SELECT column_name FROM table_name
- *(전체)를 사용하는 경우, 데이터베이스 서버와 애플리케이션 사이의 트래픽이 증가하여 결과 검색이 느려짐
- *은 전체 테이블이 꼭 필요하지 않은 이상 사용하지 않는 것이 좋음
- SELECT * FROM actor : actor라는 테이블의 전체 컬럼을 조회한다
- SELECT first_name , last_name FROM actor : actor테이블에서 first_name , last_name 컬럼을 조회한다. 컬럼의 순서는 작성한대로 출력된다
- 굳이 대문자로 작성하지 않아도 되지만 표준화된 작성법이 대문자
2. SELECT 연습문제
- 이메일에 작성할 고객의 성과 이름 그리고 이메일 주소 검색하기 :SELECT first_name, last_name, email FROM customer
3. SELECT DISTINCT
- 테이블에 중복값이 있는 열이 포함되어 있으면 중복되지 않는 고유한 값만 출력되도록 하는 것
- 기본 구조 : SELECT DISTINCT column FROM table 또는 SELECT DISTINCT(column) FROM table
4. SELECT DISTINCT 연습문제
- 소지한 영화의 등급 종류를 알고 싶은 경우
- SELECT DISTINCT(rating) FROM film;
5. COUNT
- 특정 쿼리 조건에 맞는 행의 수를 반환
- 기본 구조 : SELECT COUNT(column) FROM table;
- ex 테이블의 행의 개수를 알고 싶은 경우 :=> SELECT COUNT(*) FROM table;
- 단순히 행의 개수를 반환하는 것으로, 다른 명령어와 함께 사용할 때 유용
- ex 테이블에 고유한 고객 이름은 몇 개인가 => SELECT COUNT(DISTINCT name) FROM customer;
6. SELECT WHERE
- 열에 조건을 지정하여 그에 맞는 행 반환
- 기본 구조 : SELECT column FROM table WHERE conditions;
- FROM절 바로 뒤에 오며 행을 조건에 맞게 걸러낼 때 사용
- ex 3보다 큰 수를 가지는 행을 반환 => SELECT * FROM table WHERE number>3;
- AND, OR, NOT 연산자와 섞어서 사용할 수 있음
- ex 이름이 David 이고 색상이 red인 행의 이름과 색상을 반환 => SELECT name, color FROM table WHERE name='David' AND color='red';
- 영화 테이블에서 rental_rate가 4보다 크고 repalcement_cost가 19.99이상이면서 rating이 R이상인 행의 title열 반환
7. SELECT WHERE 연습문제
- 이름이 Nancy Thomas라는 고객의 이메일 주소 찾기
- SELECT email FROM customer WHERE first_name='Nancy' AND last_name='Thomas';
- 영화 'Outlaw Hanky'의 내용 찾기
- SELECT description FROM film WHERE title = 'Outlaw Hanky';
8. ORDER BY
- 요청한 쿼리 결과를 정렬하는 명령어
- 오름차순 또는 내림차순으로 정렬
- ASC : 오름차순
- DESC : 내림차순
- 기본값 : 오름차순
- SELECT company, name, sales FROM table ORDER BY company, sales;
- 테이블에서 company, name, sales를 반환할 때 company순으로 정렬한 다음 sales순으로 정렬해서 반환하는 쿼리문
9. LIMIT
- 반환되는 행의 개수를 제한하는 쿼리문
- 상위 몇 개의 행만 표시하려 레이아웃 파악
- 쿼리 요청의 가장 아래 부분으로 내려가며 가장 마지막에 실행되는 명령어
- ORDER BY와 함께 사용하면 유용함
- LIMIT을 호출한 후 몇 개의 행을 호출할 것인지 작성 => LIMIT 5;
10. ORDER BY, LIMIT 연습문제
- 처음으로 결제한 열 명의 고객들의 id 찾기
- SELECT customer_id FROM payment ORDER BY LIMIT payment_date 10;
- 상영시간이 가장 짧은 영화 5개의 제목과 상영시간
- SELECT title, length FROM film ORDER BY length LIMIT 5;
- 상영시간이 50분 이하인 영화의 개수
- SELECT COUNT(title) FROM film WHERE length <= 50;
11. BETWEEN
- 낮은 값과 높은값이 모두 포함되면서 그 사이의 값
- 양쪽의 엔드포인트를 말하는 것
- 기본 구조 : value BTWEEN low AND high
- 8에서 9달러 사이에 계산된 횟수 => SELECT COUNT(*) FROM payment WHERE amount BETWEEN 8 AND 9;
- 2024년 1월 1일부터 2024년 1월 15일까지 계산한 횟수 => SELECT COUNT(*) FROM payment WHERE payment_date BETWEEN '2024-01-01' AND '2024-01-15';
12. IN
- 값이 어느 부분에 포함되는지 확인하는 명령어
- 기본 구조 : SELECT column FROM table WHERE column IN(value); value는 여러 값일 수 있다
- NOT IN : 그 반대의 효과를 가져옴
13. LIKE, ILIKE
- LIKE : 값이 같은 행을 반환하는 쿼리
- LIKE 'A%' : A로 시작하는 문자열 반환
- LIKE '%a' : a로 끝나는 문자열 반환
- ILIKE : LIKE와 달리 대소문자 구분 안함
- LIKE 'A_' : A로 시작하는 문자열 반환, 밑줄에 문자 하나만 들어갈 수 있음, 밑줄 여러 개 사용 가능
- LIKE '_her%' => Sherri, Cheryl, ...
- 기본 구조 : SELECT column FROM table WHERE column1 LIKE "value1%" AND column2 ILIKE 'value2%';
14. 도전과제
- 5달러 이상의 결제 거래가 이뤄진 횟수
- SELECT COUNT(amount) FROM payment WHERE amount >= 5;
- 이름이 P로 시작하는 배우는 몇명인가
- SELECT COUNT(first_name) FROM actor WHERE first_name LIKE 'P%';
- 고객 주소에서 중복되지 않는 고유한 지역은 몇 개인가?
- SELECT COUNT(DISTINCT district) FROM address;
- 영화등급이 R등급이고 가격이 5달러에서 15달러 사이인 영화의 수
- SELECT COUNT(*) FROM film WHERE rating='R' AND replacement_cost BETWEEN 5 AND 15;
- 영화 제목에 Truman이 포함된 개수
- SELECT COUNT(*) FROM film WHERE title LIKE '%Truman%';
15. 집계함수
- AVG() : 평균값 반환
- COUNT() : 개수를 반환
- MAX() : 최대값 반환
- MIN() : 최소값 반환
- SUM() : 총합 반환
- ROUND(value, 소수점 자리) : 반올림값 반환
16. GROUP BY
- 조건에 맞게 카테고리별로 구분
- 기본 구조 : SELECT column FROM table GROUP BY condition
- 날자별로 매출액 반환, 매출액을 오름차순으로 정렬
- SELECT DATE(payment_date), SUM(amount) FROM payment GROUP BY DATE(payment-date) ORDER BY SUM(amount);
17. 연습 문제
- 직원별로 결제한 건수를 반환
- SELECT staff_id, COUNT(amount) FROM payment GROUP BY staff_id;
- 영화 등급별 replacement_cost의 평균값 반환
- SELECT rating, AVG(replacement_cost) FROM film GROUP BY rating;
- 결제액이 가장 많은 상위 다섯명 반환
- SELECT customer_id, SUM(amount) FROM payment GROUP BY customer_id ORDER BY SUM(amount) DESC LIMIT 5;
[2. 오늘 잘한 점]
데이터베이스 같은 경우는 이미 자격증도 따뒀고 잘 아는 부분이라 잘 넘어간 것 같다. 남는 시간에 Spring 공부까지 했다! 시간을 알차게 쓰고있는 것 같아서 기분이 좋다. ㅎ ㅎ ㅎ
[3. 개선해야할 점]
잡생각이 너무 많았고 연휴가 끝난 첫 날이라서 그런지 좀 퍼지는 느낌이 들었다. 몽고DB공부해가야하는데 걱정이 앞선다.. 하지만 할 수 있다 난 노력하는걸 제일 잘하니까! 아자아자 화이팅이닷
'부트캠프' 카테고리의 다른 글
[TIL] 유데미X사람인 취업 부트캠프 15일차 / SQL 데이터베이스 생성, 관리 (1) | 2024.01.04 |
---|---|
[TIL] 유데미X사람인 취업 부트캠프 14일차 / SQL Group By~ Join (2) | 2024.01.03 |
[TIL] 유데미X사람인 취업 부트캠프 12일차 / react-상태 (1) | 2023.12.29 |
[TIL] 유데미X사람인 취업 부트캠프 11일차 / react (0) | 2023.12.28 |
[TIL] 유데미X사람인 취업 부트캠프 10일차 / javascript의 if~else문과 반복문 (1) | 2023.12.27 |