티스토리 뷰

728x90

 안녕하세요! 이번 포스팅에서는 혼공단 2주차겸 SQL 기본문법 SELECT에 대해서 다뤄보겠습니다. 시작하기에 앞서 본 포스팅은 혼자 공부하는 SQL 책의 내용을 바탕으로 구성되었습니다. 데이터베이스 또한 책의 자료를 사용했습니다.

 

https://www.hanbit.co.kr/support/supplement_survey.html?pcode=B6846155853 

 

한빛출판네트워크

더 넓은 세상, 더 나은 미래를 위한 아시아 출판 네트워크 :: 한빛미디어, 한빛아카데미, 한빛비즈, 한빛라이프, 한빛에듀

www.hanbit.co.kr

 이곳에서 예제 소스를 다운받아 market_db.sql 파일을 실행합니다.

 

 market_db이 제대로 생성된 것을 확인할 수 있습니다. 이때 sql 파일을 실행시키고 좌측에 있는 SCHEMA를 새로고침 해줘야합니다. 안그러면 실행했는데도 파일 구성이 안바뀐 것처럼 보입니다.

 

 다음은 혼자 공부하는 SQL 책에 나온 확인문제 답입니다!

3강_확인문제.zip
0.09MB


1. USE 문

 SELECT 문을 실행하기 전에 사용할 데이터베이스를 지정하는 문법입니다.

--USE 데이터베이스_이름;
USE market_db;

 

2. SELECT 기본형식

<메뉴얼>

SELECT select_expr
	[FROM table_references]
	[WHERE where_condition]
	[GROUP BY {col_name | expr | position}]
	[HAVING where_condition]
	[ORDER BY {col_name | expr | position}]
	[LIMIT {[offset,] row_count | row_count OFFSET offset}]

<간단 ver>

SELECT 열_이름
	FROM 테이블_이름
   	WHERE 조건식
    	GROUP BY 열_이름
    	HAVING 조건식
    	ORDER BY 열_이름
    	LIMIT 숫자

<Example>

USE market_db; --market_db 데이터베이스 선택
SELECT * FROM market_db.market --market_db의 market 테이블 선택
SELECT addr,debut_date,mem_name FROM member; -- member 테이블에서 addr,debut_date,mem_name 열 추출하기

 

 

3. WHERE 활용

WHERE은 조회하는 결과에 특정한 조건을 추가해서 원하는 데이터만 보고싶을때 사용

 

SELECT 열_이름 FROM 테이블_이름 WHERE 조건식;

<Example>

SELECT * FROM member WHERE mem_number=4; --mem_number가 4인 행을 member 테이블에서 찾아서 출력

SELECT mem_id, mem_name --mem_id,mem_name 출력
	FROM member --member 테이블에서
    	WHERE height<=162; --height가 162 이하일 경우
        
--BETWEEN ~AND : 범위 지정할때
SELECT mem_name, height
	FROM member
    	WHERE height BETWEEN 163 AND 165 --163과 165사이
        
--IN() : 문자로 표현된 데이터 검색할때
SELECT mem_name, height
	FROM member
    	WHERE addr IN('경기','전남','경남'); -- addr가 경기,전남,경남인 경우
        
--LIKE : 문자열의 일부 글자를 검색할때
SELECT mem_name, height
	FROM member
    	WHERE mem_name LIKE '우%' --mem_name 첫글자가 우로 시작하는 데이터
        WHERE mem_name LIKE '__핑크' -- 언더바(_)는 한글자와 매치

4. ORDER BY 절

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

* ORDER BY절은 WHERE절 다음에 나와야한다.

  • ASC : 오름차순(Ascending)
  • DESC : 내림차순(Descending)

<Example>

SELECT mem_id, mem_name, debut_date, height
	FROM member
    	WHERE height >= 164
        ORDER BY height DESC, debut_date ASC;

 

5. LIMIT

LIMIT : 출력하는 개수를 제한 

LIMIT 시작, 개수

SELECT mem_name, height
	FROM member
  	ORDER BY height DESC
    	LIMIT 3,2; --3번째부터 2건만
 
SELECT mem_name, height
	FROM member
    	ORDER BY height DESC
	LIMIT 4; --전체 중 앞에서 4건만

 

6. DISTINCT

DISTINCT : 조회된 결과에서 중복된 데이터를 1개만 남긴다.

SELECT DISTINCT addr FROM member;

 

7. GROUP BY 절

GROUP BY : 그룹을 묶어주는 역할

  • 집계함수(aggregate function) : GROUP BY 절과 함께 쓰이며 데이터를 그룹화(grouping)해주는 기능
함수명 설명
SUM() 합계를 구합니다.
AVG() 평균을 구합니다.
MIN() 최솟값을 구합니다.
MAX() 최댓값을 구합니다.
COUNT() 행의 개수를 셉니다.
COUNT(DISTINCT) 행의 개수를 셉니다(중복은 1개만 인정).

<Example>

SELECT mem_id, SUM(amount)
	FROM buy
    	GROUP BY mem_id;
        
--별칭 사용
SELECT mem_id "회원 아이디" , SUM(amount) "총 구매 개수"
	FROM buy
    	GROUP BY mem_id;
        
        
--총 구매 금액
SELECT mem_id "회원 아이디", SUM(amount*price) "총 구매 금액"
	FROM buy
    	GROUP BY mem_id;
        
--전체 회원이 구매한 물품 개수(amount)의 평균
SELECT mem_id, AVG(amount) "평균 구매 개수"
	FROM buy
    	GROUP BY mem_id;

 

8. HAVING 절

HAVING: 집계함수에서 조건을 제한할 때 사용하는 것

SELECT mem_id "회원 아이디", SUM(price*amount) "총 구매 금액"
	FROM buy
    	GROUP BY mem_id
        HAVING SUM(price*amount) > 1000; --1000원 이상 산 사용자만 집계
        ORDER BY SUM(price*amount) DESC --총 구매액이 큰 사용자 순으로 정렬

 다음은 데이터를 입력/수정/삭제하는 기능에 관련된 내용입니다!

 

9. INSERT

INSERT : 테이블에 행 데이터를 입력

  • 테이블 이름 다음에 나오는 열은 생략 가능
    • VALUES 다음에 나오는 값들의 순서 및 개수는 테이블을 정의할 때의 열 순서 및 개수와 동일해야함
  • 열 순서를 바꿔서 입력하고 싶을 때는 열 이름과 값을 원하는 순서에 맞춰서 써야함
--데이터 입력 기본 형식
INSERT INTO 테이블 [(열1,열2, ...)] VALUES (값1, 값2, ...)

--예제
USE market_db;
CREATE TABLE hongong1 (toy_id INT, toy_name CHAR(4), age INT);
INSERT INTO hongkong1 VALUES (1,'우디',25);

AUTO_INCREMENT

: 열을 정의할 때 1부터 증가하는 값을 입력

: 반드시 PRIMARY KEY 지정

CREATE TABLE hongong3 (
	toy_id INT AUTO_INCREMENT PRIMARY KEY, --AUTO_INCREMENT 사용
    	toy_name CHAR(4),
    	age INT);
ALTER TABLE hongong3 AUTO_INCREMENT=1000; --시작은 1000
SET @@auto_increment_increment=3; --증가값은 3으로 지정 (system variable)

INSERT INTO ~ SELECT

: 다른 테이블에 이미 입력된 데이터를 가져온다.

: SELECT 문의 열 개수는 INSERT할 테이블의 열 개수와 같아야한다.

INSERT INTO 테이블_이름 (열_이름1, 열_이름2, ...)
	SELECT 문;

 

10. UPDATE

: 기존에 입력되어 있는 값을 수정

: Workbench에서 사용할 경우 설정 변경 필요

: WHERE을 쓰지 않을경우 모든 행의 정보가 바뀐다.

UPDATE 테이블_이름
	SET 열1=값1, 열2=값2, ...
    	WHERE 조건;
        
--예제 1
UPDATE city_popul
	SET city_name='뉴욕', population=0
    	WHERE city_name = 'New York';
SELECT * FROM city_popul WHERE city_name='뉴욕';

--예제 2
UPDATE city_popul
	SET population = population / 10000;
SELECT * FROM city_popul LIMIT 5;

 

11. DELETE 

: 행 단위로 삭제

--데이터 삭제 기본 형식
DELETE FROM 테이블이름 WHERE 조건;

--예제
DELETE FROM city_popul
	WHERE city_name LIKE 'New%'
    	LIMIT 5

 이상으로 혼공단 2주차 공부 내용입니다!

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함