오늘부터 데이터베이스에 대해 약 2.5일 정도 배우고, 다음 실시간 강의를 듣는다.
오늘 배울건 SQL을 사용해보기! 저번에 국비지원으로 들었던 그 수업!!
재밌게 했었는데 또 들으니까 또 재밌다!! 그때는 정리를 그냥 복붙으로 해가지고;; 다시 잘 정리 해보려고 한다.
select * from 테이블명
*자리에 필드명이 들어가도 된다!
select 필드명1, 필드명2 from 테이블명
select를 사용한 후 조건을 추가하는 것!
select * from 테이블명
where 필드명 ='찾을 데이터' <- 문자라면 '' 을 숫자라면 그냥 써도 된다.
만약 users 테이블 name필드에 '홍길동'이라는 사람을 찾으려면
select * from users
where name = '홍길동'
!=
같지 않은 것을 찾을 때. 이름이 홍길동과 같지 않은걸 찾아주세요~ 하면
select * from users
where name != '홍길동'
between
범위를 조건으로 데이터를 찾을때! 숫자, 시간에 따라 조금 다름
select * from 데이터
where 필드명 between 28 and 30
// 28~30 사이의 데이터를 찾는 것이다. 28살과 30살 사이의 모든 유저를 찾을 수 있겠다!
select * from 데이터
where 필드명 between '2022-05-21' and '2022-05-23'
// 22년 5월 21일부터 22년 5월 22일까지의 데이터를 찾을 수 있다!
여기서 중요한 점은 날짜는 ''로 감싸져 있다는 것과 23일까지라고 했는데 22일까지의 데이터가 나온다는 점이다. 23일이라고 쓰면 23일 00시를 말하는 것이므로 22일 23시 59분 59초까지의 데이터를 받아오는 것 같다.
또, 날짜는 '22.05.21' 이런 형태로 저장되어 있을 수도 있으니 각자 데이터베이스에 맞게 검색하자!
in()
()안에 조건을 포함하고 있는 데이터를 조회할 때 사용
select * from 테이블명
where 필드명 in(조건1,조건2,...)
조건1,조건2에 해당하는 데이터를 조회할 수 있다.
like
문자열 데이터를 검색할 때 사용하는 것 같고 주로 %와 함께 쓰이는 듯 하다.
select * from 테이블명
where 필드명 like '조건'
여기서는 조건에 %를 사용할 수 있다.
1. '조건%' = 조건으로 시작 ex) 'a%' a로 시작하는 단어
2. '%조건' = ~로 시작해서 조건으로 끝남 ex)'%a' ~a 로 끝나는 단어
3. '%조건%' = ~조건~ 인 단어. ex)'%a%' ~a~ 로 a가 포함되어 있는 단어.
limit
가져오는 데이터 양에 제한을 걸 수 있다
select * from 테이블명
where 필드명
limit 10
이렇게 하면 위에 조건에 만족하는 데이터를 10개까지 가져온다는 말이다.
distinct
중복데이터를 제외한다.
select distinct(*) from 테이블명
중복을 제외하기 때문에 *자리에 필드명을 넣어주면 더 좋을 것이다.
select distinct(필드명) from 테이블명
count
검색되는 자료의 갯수를 알 수 있다. row를 세주는 것 같다.
select count(필드명) from 테이블명
distint와 같이 사용도 가능하다.
select count(distinct(필드명)) from 테이블명
동일한 범주의 데이터를 묶어준다
select * from 테이블명
group by 필드명
쿼리의 적용 순서는
from - group by - select
select 필드명, count(*) from 테이블명
group by 필드명
// 필드명으로 그룹을 만들고 그 그룹의 갯수를 구할 때 사용
select 필드명, min(필드명2) from 테이블명
group by 필드명
select 필드명, max(필드명2) from 테이블명
group by 필드명
select 필드명, avg(필드명2) from 테이블명
group by 필드명
최소, 최대, 평균값을 구할때 필드명2라고 되어 있는 것은 구하고자 하는 최소,최대,평균값의 내용이 다른 필드에 있을 수 있기 때문이다.
만약 user테이블에 name으로 그룹을 묶고 age로 최소,최대,평균을 구하고 싶다면
select name, min(age) from user
group by name
select name, max(age) from user
group by name
select name, avg(age) from user
group by name
이렇게 작성 할 수 있겠다.
데이터를 정렬할 때 사용한다.
기본적으로 오름차순 정렬이 적용되고 내림차순으로 정렬하고 싶다면
desc를 적어주면 된다!
select * from 테이블명
order by 필드명
select * from 테이블명
order by 필드명 desc
group by 이후에도 쓸 수 있고 위 쿼리 처럼 단독으로 사용할 수도 있다.
group by 와 함께 사용한다면 아래 코드처럼 작성 가능 하다.
select 필드명,count(*) 테이블명
group by 필드명
order by count(*)
여기서의 쿼리 적용 순서는
from - group by - select - order by
쿼리 적용 순서는 다음과 같다
from - where -group by - select - order by