/ USE문
USE 데이터베이스 이름;
USE market_db;
한번 실행하면 사용할 데이터베이스 지정하고 입력하는 SQL문 여기서 지정한 데이터베이스 사용한다
/ SELECT 문의 기본형식
SELECT select_expr
[FROM table_references]
[WHERE where_condision]
[GROUP BY {col_name | expr | position}]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}]
[LIMIT {[offset,] row_count | row_count OFFSET offset}];
( 마지막에 ; )
> 대괄호 묶인 부분 생략가능
> 생략은 가능하지만 작성순서를 지켜야한다!
> 아래부터 기본형식에 대한 설명
/ SELECT ~ FROM
SELECT 열_이름 FROM 테이블_이름;
> 열_이름 : 테이블의 컬럼 이름이다
> 테이블_이름 : 데이터를 가져올 테이블을 지정
> 테이블의 모든 열의 내용을 가져오려면 -> 열_이름에 "*" 사용
SELECT*FROM 테이블_이름
> 여러개의 열을 가져올때 콤마로 구분한다
SELECT 열_이름1,열_이름2,열_이름3 FROM 테이블_이름
> 열 이름 별칭 기능 : 테이블 출력시 열이름을 지정할 수 있다
SELECT 열_이름 변경할_열_이름 FROM 테이블_이름
*DISTINCT : 조회된 결과를 출력시 중복값 하나만 남긴다
SELECT DISTNCT addr ( 주소중 중복값 날리고 하나만 남김)
FROM member;
/ SELECT ~ FROM ~ WHERE
WHERE절 : SELECT 열_이름 FROM 테이블_이름 WHERE 조건식;
> 조건식 : 컬럼에 대한 조건식
- 관계연산자: > < >= <= =
- 논리연산자: AND OR
쓰인다
/ BETWEEN ~ AND
숫자의 범위를 조건식에서 표현할때 용이함
SELECT 열_이름
FROM 테이블_이름
WHERE 열_이름 BETWEEN 조건식1 AND 조건식2
=> 조건식1 이상 , 조건식2 이하
/ IN()
문자로 표현되는 조건식 조합할때 용이함
SELECT 열_이름
FROM 테이블_이름
WHERE 열_이름 IN('조건식1','조건식2',..);
/ LIKE
문자열의 일부글자로 검색할때 사용한다
USE market_db;
SELECT *
from member
WHERE mem_name LIKE '우%'; ( '우'로 시작하는 문자열 검색 )
> % : AB%(AB로 시작하는 문자) / %AB(AB로 끝나는 문자) 검색
> _ : __핑크(_하나에 한글자 매칭) -> 블랙핑크, 에이핑크 검색됨
/ 서브쿼리
SELECT문 안의 SELECT문
> 이름(mem_name)이 ‘에이핑크’인 회원의 평균 키(height) 보다 큰 모든 회원을 검색
SELECT mem_name, height
FROM member
WHERE height > (SELECT height FROM member WHERE mem_name = '에이핑크');
>SELECT문을 조건식으로 사용한것!
/ ORDER BY
결과의 값, 개수에 영향없지만
결과가 출력되는 순서를 결정한다
* 기본 오름차순( ASC(ascending) 생략가능함)
>데뷔일자 빠른순서로 출력하겟다 , 오름차순(기본)
SELECT *
FROM member
ORDER BY debut_date;
>데뷔일자 늦은순서로 출력하겟다 , 내림차순(DESC)
SELECT *
FROM member
ORDER BY debut_date DESC;
> 여러 열의 순서를 지정할 수 있다 ( 우선순위 앞->뒤 )
키가 큰순으로 정렬하고 -> 데뷔일자 빠른순으로 정렬
SELECT *
from member
ORDER BY height DESC ,debut_date ASC;
/ LIMIT
출력하는 개수를 제한한다
* 형식
LIMIT 시작, 개수
( LIMIT 3 == LIMIT 0, 3 == LIMIT 3 OFFSET 0 ) 모두같다
/ GROUP BY
출력결과를 그룹으로 묶어준다
주로 집계함수와 같이 사용된다
* 집계함수 :
SUM() 합계 / AVG() 평균 / MIN() 최소값 / MAX() 쵀대값
/ COUNT() 행의개수 / COUNT(DISTINCT) 행의개수(중복제거)
> 구매내역을 모두 출력
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 함수에는 집계함수 사용할 수 없다
그래서 WHERE 대신 HAVING 사용한다.
> HAVING절은 집계함수 다음에 나와서 조건을 제한한다
> HAVING절은 반드시 GROUP BY 절 다음에 나와야 한다
SELECT mem_id, SUM(amount*price)
from buy
group by mem_id
having SUM(amount*price) >1000;