DB 데이터 조회해보기

allnight5·2023년 1월 9일
0

select * from [table명]

member라는 테이블이 있을때

select * from member

member라는 테이블에 컬럼명이 price와 amount만을 가져오고 싶을때

select price, amount from member

출력시 별칭기능으로 볼수도있다.
select addr 주소, debut_data '나온 일자' from member

평균 키(height)가 162 이하의 회원을 검색
SELECT mem_id, mem_name FROM member WHERE height <= 162;

member테이블에서 키가 163이상 170미만인
컬럼 addr, debut_date, mem_name만 보여줘
select addr 주소, debut_date 데뷔일자, mem_name from member
where height>= 163 And height<170;

평균 키(height)가 165 이상이면서 인원(mem_number)가 6명 초과인 회원만 보여줘
SELECT mem_name, height, mem_number
FROM member
WHERE height >= 165 AND mem_number > 6;

AND만 사용한게 아닌 BETWEEN을 넣음으로 인하여 같은 컬럼의 AND를 사용시
컬럼명을 한번만 사용할수도 있다.
SELECT * FROM member
WHERE height BETWEEN 163 AND 165;

경기나 전남, 경남이 주소에 있다면 보여줘
SELECT mem_name, addr
FROM member
WHERE addr = '경기' OR addr = '전남' OR addr ='경남';

경기나 전남, 경남이 주소에 있다면 보여줘
SELECT mem_name, addr
FROM member WHERE addr IN ('경기', '전남', '경남');

LIKE

  • % : 무엇이든 허용
  • 언더바(_): 한글자 매치
    이름(mem_name)이 ‘우’ 로 시작하는 회원 검색
    SELECT * FROM member WHERE mem_name LIKE '우%';

이름이 ‘XX핑크’ 인 회원 검색
SELECT * FROM member WHERE mem_name LIKE '__핑크';

서브쿼리

이름(mem_name)이 ‘에이핑크’인 회원의 평균 키(height) 보다 큰 모든 회원을 검색
SELECT mem_name, height FROM member
WHERE height > (SELECT height FROM member WHERE mem_name = '에이핑크');

ORDER BY 정렬순서 변경(보여주는 순서변경)

ORDER BY 절은 결과의 값이나 개수에 대해서는 영향을 미치지 않지만, 결과가 출력되는 순서를 조절합니다.

SELECT mem_id, mem_name, debut_date FROM member ORDER BY debut_date;

SELECT mem_id, mem_name, debut_date FROM member ORDER BY debut_date DESC;

ORDER BY의 기본값은 ASC(ascending) 오름차순 입니다.
ASC나 DESC를 생략하면 기본적으로 ASC로 동작합니다.

여러개로 정렬순서를 정해줄수있는데 앞에가 우선정렬이며 뒤에 오는것은 앞에 정렬과 같을때 비교한다.
SELECT mem_id, mem_name, debut_date, height
FROM member
WHERE height >= 164
ORDER BY height DESC, debut_date ASC;

LIMIT

출력 개수를 제한한다.

SELECT * FROM member LIMIT 3;

DISTINCT(중복데이터-> 고유데이터)

중복되어도 하나의 데이터만 출력되거나 가져오게 한다.

SELECT DISTINCT addr FROM member;

GROUP BY

출력 결과를 그룹으로 묶어줍니다. 주로 다음의 집계함수와 함께 사용됩니다. 다른테이블과 가티 출력할때

구매내역을 모두 출력하면
SELECT mem_id, amount FROM buy ORDER BY mem_id;

각 회원의 구매한 개수(amount) 를 합쳐서 출력 하려면
SELECT mem_id, SUM(amount) FROM buy GROUP BY mem_id;

각 회원이 구매한 금액의 총합 (price amount)을 출력 하려면
SELECT mem_id, SUM(price
amount) FROM buy GROUP BY mem_id;

HAVING 절

불행하게도 집계 함수는 WHERE 절에 사용할 수 없습니다.
그때 필요한게 HAVING절을 사용한다.
위의 결과 중에 총 구매액이 1000 이상인 회원을 찾는다면?
SELECT mem_id, SUM(priceamount) FROM buy
GROUP BY mem_id HAVING SUM(price
amount) > 1000;

profile
공부기록하기

0개의 댓글