
SELECT * FROM 테이블이름
데이터베이스에 저장이 되어있는 데이터를 가져오기 위해서는 몇까지 DML이 있다.
오늘은 몇 가지 DML 복습을 해보겠다.
*표 표시를 하고 FROM 다음 테이블 이름을 검색을 하면 해당 테이블의 데이터를 다 가져와서 보여준다.
예를 들어서 해당 테이블에 이런 테이블 필드가 있다고 생각해보자

select created_at, course_title, payment_method, email from orders
만약 위의 테이블에서 위와 같이 선택을 하면 각 컬럼의 필드 이름에 해당하는 각 컬럼의 데이터베이스를 가져온다.
다음은 WHERE 절에 대해서 알아 보도록 하겠다.

WHERE 절은 프로그래밍에서 IF 문을 생각하면 쉽다. 해당 데이터베이스에서 조건을 주고 가져온다고 생각하면 편하다.
select * from orders
where payment_method = "kakaopay";
이와 같이 ORDERS라는 테이블에서 payment_method가 "kakaopay"인 데이터를 다가져와서 보여주는 것이다.
조건을 주는 것도 프로그래밍 랭귀지와 많이 유사하다 && 기호가 생각이 나는가? 데이터베이스에서 Mysql에서는 and 라고 조건을 주고 dml을 작성을 할 수 있다.
select * from orders
where course_title = "앱개발 종합반" and payment_method = "kakaopay";
이런 식으로 orders라는 테이블 안에서 course_title이 앱개발 종합반 이고 payment_method 가 카카오페이인 컬럼인 녀석들을 다 가져 오는 것이다. * 때문에
추가적인 where문 예시
select * from point_users
where point > 20000
point가 2000이상인 컬럼을 point_users라는 테이블에서 가져오는 것이다
select * from users
where name = "황**"
이름이 황으로 시작하는 것들을 users테이블에서 가져오는 것이다.
select * from orders
where course_title != "수학"
이런 식으로도 수학이 아닌 것을 가져 올 수 있다.
where 절에서는 사이 값을 찾는 것도 가능하다.
select * from orders
where day between "2020-07-13" and "2020-07-15"
예를 들면 오더테이블에서 데이라는 컬럼에 2020 7 13일 부터 15일 까지의 컬럼의 사이 값을 찾아 올 수 있다.
사이 값을 찾는 구문이 between인 것이 한번 씩 생각이 잘 나지 않는데 한번기억을 잘 해두는 것이 좋겠다.
select * from checkins
where week in (1, 3)
checkins 테이블에서 week가 1, 3인 것들만 가져오는 구문이다.
select * from users
where email like '%daum.net'
users테이블에 email 컬럼 이름에 daum.net으로 끝나는 데이터를 불러온다.
like는 이렇게 뭔가로 끝나는 것 들로 조건을 줄 수 있다.
내가 보고 싶은 컬럼만 정리 하주길 바란다면
select distinct(payment_method) from orders

과목별 신청자 수
select count(*) from orders
where course_title = "앱개발 종합반"
course_title에 앱개발 종합반이라는컬럼을 가진 친구들이 count에 의해서 몇개인지 찍히게 된다.
select name, count(*) from users
group by name

select name, count(*) from users
group by name
users라는 테이블에 name이라는 컬럼이름에 name 묶어서 어떤 이름들이 있는지 갯수를 세어준다.

최소 값을 찾을 때 쿼리
select week, min(likes) from checkins
group by week
select 범주가 담긴 필드명, min(최솟값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명
최대를 찾고 싶으면 반대로 min 대신 max로 고쳐주면 된다. 간단하다.
평균을 찾을 때 쿼리
select week, avg(likes) from checkins
group by week
select 범주가 담긴 필드명, avg(평균값을 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명
합계를 구하고자 할 때
select week, sum(likes) from checkins
group by week
select 범주가 담긴 필드명, sum(합계를 알고 싶은 필드명) from 테이블명
group by 범주가 담긴 필드명
정렬을 하고자 할 때
select name, count(*) from users
group by name
order by count(*)

결과 count 오름 차순으로 1 2 3 .. 이렇게 커지고 나중에 ASC DESC도 알아 보자
내림차순 desc 이고 asc는 오름차순 정리
select name, count(*) from users
group by name
order by count(*) desc
select * from 테이블명
order by 정렬의 기준이 될 필드명;

특정 Gmail을 사용하는 성씨별 회원수를 세어보자
select name, count(*) from users
where email like '%gmail.com'
group by name

만약 데이터베이스에 네이버 이메일을 사용하면서 앱개발 종합반을 신청결제한 주문의
결제수단별 주문건수를 세어본다면.....
select payment_method, count(*) from orders
where email like '%naver.com' and course_title = '앱개발 종합반'
group by payment_method
이렇게 나타 낼 수 있다. 이전에 학교에서 oracle로 데이터베이스를 실습하고 수강을 했었는데 이와 마찬가지로 공통점이 많았고 2주차까지는 어렵지 않게 지식을 습득을 했다. 이번에 스터디 팀장을 하게 되었는데 다른 팀원들이 스터디를 잘 따라오도록 노력해야겠다.