My SQL 1일차

5w31892p·2023년 1월 9일
0

My SQL

목록 보기
1/4

MySQL server Downloads
MySQL workbench Downloads


:: USE 문

  • 사용할 데이터베이스 지정
  • 시작 시 한번만 실행
  • USE문 바로 아래 SELECT 같이 써서 실행 가능

사용 순서 지켜서 사용해야 에러가 안난다.
SELECT -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY -> LIMIT

:: SELECT ~ FROM

SELECT 열_이름(컬럼명) FROM 테이블_이름;
  • 테이블의 모든 열 선택은 *
  • 두개 이상의 열 선택시 ,로 구분
  • 컬럼명 -> 별칭 가능
    • 예) mem_name 이름, addr 주소

:: WHERE 절

SELECT 열_이름 FROM 테이블_이름 WHERE 조건식;
  • 예를 들어 블랙핑크의 데이터만 가져오고 싶을 때
    SELECT * FROM member WHERE mem_name =  '블랙핑크';
  • >, <, >=, <=, =, !=
  • AND, OR

1. BETWEEN ~ AND

  • 숫자 범위 조건식에 사용할 때 편리
SELECT * FROM member 
WHERE height >= 163 AND height >= 165;

-- 위와 아래의 결과는 같음

SELECT * FROM member
WHERE height BETWEEN height 163 AND 165;

2. IN()

  • 문자로 표현되는 조건식 조합에 편리
SELECT mem_name, addr FROM member
WHERE addr = '경기' OR addr = '전남' OR addr ='경남';

-- 

SELECT mem_name, addr FROM member
WHERE addr IN('경기', '전남', '경남');

3. LIKE

  • % : (시작글자) % (끝글자)
SELECT * FROM member WHERE mem_name LIKE '%크';
  • 언더바( _ ) : 글자 매치
SELECT * FROM member WHERE mem_name LIKE '__핑크';

-- 언더바가 두개니까 앞에 두글자가 와야함

4. 서브쿼리

  • SELECT 안에 또 다른 SELECT
  • 이름이 에이핑크인 회원의 평균키보다 큰 회원을 찾으려면 아래와 같이 두번 검색해야 한다.
    1. 에이핑크 키를 찾은 후
    2. 그 찾은 키보다 큰 회원 검색
  • 서브쿼리를 사용하면 하나의 쿼리로 가능함
SELECT mem_name, height 
	FROM member
	WHERE height > (
					SELECT height 
                    	FROM member 
	                	WHERE mem_name = '에이핑크'
	                );

:: ORDER BY

  • 출력 순서 조절
  • defalut은 ASC : 순서대로
    • ASC는 따로 안적어도 됨
  • DESC : 역순
  • 여러개 열의 순서 지정 가능
SELECT mem_id, mem_name, debut_date, height
	FROM member
	WHERE height >= 164
	ORDER BY height DESC;

1. LIMIT

  • 출력 개수 제한
  • 시작할 곳 따로 지정하지 않으면 0부터 시작
LIMIT 시작, 개수

2. DISTINCT

  • 중복되는 데이터는 1개만 남긴다.
SELECT DISTINCT addr FROM member;

:: GROUP BY

  • 결과를 그룹으로 묶어줌
  • 집계 함수
    • 집계 함수는 GROUP BY와 사용하지 않으면 에러
    • WHERE절과 사용하지 못한다.
함수명설명
SUM()합계
AVG()평균
MIN()최소값
MAX()최대값
COUNT()행의 개수
COUNT(DISTINCT)행의 개수(중복 제거)
-- 구매 개수 총합
SELECT mem_id, SUM(amount) FROM buy GROUP BY mem_id;

-- 구매 금액 총합
SELECT mem_id, SUM(amount) FROM buy GROUP BY mem_id;

HAVING 절

  • 집계함수는 WHERE과 사용하지 못하기 때문에 WHERE 대신에 사용
  • 집계 함수에 대해 조건을 제한하는 것
-- 구매 금액 총합이 1000 넘는 멤버 아이디 출력

SELECT mem_id, SUM(price*amount) 
	FROM buy
	GROUP BY mem_id
	HAVING SUM(price*amount) > 1000;

0개의 댓글