[혼공S] 2주차_SELECT문과 WHERE절 활용

2025. 1. 18. 00:47·SQL/혼자 공부하는 SQL

 

 


 

 

혼자 공부하는 SQL

✔️ SELECT문

✔️ SELECT + WHERE문

✔️ ORDER BY(정렬) - 2주차(2) 블로그 참조

✔️ GROUP BY(그룹핑) - 2주차(2) 블로그 참조

✔️ 데이터 변경 위한 쿼리 작성 - 2주차(3) 블로그 글 참조

 

 


 

 

✔️ SELECT문

구축 완료된 테이블에서 데이터 추출하는 기능

(기존의 데이터가 변경 X)

-- SELECT ~ FROM ~ WHERE 기본형식으로 이루어짐
-- 조건에 맞는 데이터를 테이블에서 조회

select 
	*
from 테이블명
where 조건식;

 

 

 

# 데이터 조회에 사용할 새로운 DB 구현

 

가상의 인터넷 마켓 운영 DB

가수 그룹의 리더는 물건 사기 위한 회원가입 진행 -> 회원 테이블에 기록됨(간단한 정보만)

물건을 구입 -> 구매 테이블에 기록됨

(회원 테이블과 물건 테이블의 기본키는 회원 아이디)

 

한빛출판사 혼자 공부하는 SQL 예제소스 다운로드

 

혼자 공부하는 SQL

데이터베이스 개념부터 SQL 문법까지 입문자의 눈높이에 맞춰 구성했습니다. 지루한 설명 대신 도식화된 이미지와 예제를 통한 실습으로 책의 마지막까지 흥미롭게 학습할 수 있습니다. 프로그

www.hanbit.co.kr

(해당 홈페이지에 들어가서 예제소스 파일 다운로드 받아서 사용하면 됩니다)

 

 

# market_db 생성

 

다운로드 받은 예제소스 파일에서 market_db.sql을 MySQL 워크벤치에서 실행

 

 

 

데이터베이스(DB) 생성

drop database if exists market_db; -- 만약 market_db 존재한다면 삭제 진행
create database market_db; -- market_db DB 생성

 

 

회원 테이블(member) 생성

use market_db;
create table member (
	mem_id		char(8) not null, -- 사용자ID
    mem_name 	varchar(10) not null, -- 그룹이름
    mem_number	int not null, -- 멤버수
    addr		char(2) not null, -- 지역(2글자로만 작성)
    phone1		char(3), -- 연락처의 국번
    phone2		char(8), -- 연락처 나머지(-제외)
    height		smallint, -- 평균 키
    debut_date	date, -- 데뷔 날짜
	primary key (mem_id)
);

 

 

구매 테이블(buy) 생성

create table buy (
	num			int auto_increment not null, -- 자동으로 순번 숫자 입력됨
    mem_id		char(8) not null, -- 사용자ID(FK)
    prod_name	char(6) not null, -- 제품 이름
    group_name	char(4), -- 분류 이름
    price		int not null, -- 단가
    amount		smallint not null, -- 수량
    foreign key (mem_id) references member(mem_id) 
);

 

 

각 테이블에 데이터 입력

-- 데이터 입력하는 insert문 구조 
-- 각 컬럼에 맞게 데이터가 들어가야 함

insert into 테이블명 values('컬럼1에 맞는 데이터값', '컬럼2에 맞는 데이터값', ...)

 

+

 

 구매 테이블의 경우, 자동으로 순번이 들어가기 때문에 '컬럼1에 맞는 데이터값'은 항상 NULL 입력됨

SCHEMAS에서 market_db와 buy, member 테이블이 생성되었는지 확인

 

 

-- 맴버 테이블 확인
select * from member;

 

 

-- 구매 테이블 확인
select * from buy;

 

 


 

 

# SELECT문

 

 

USE문

select문 실행 전에 현재 사용하는 데이터베이스 지정/변경 진행

use market_db;

 

 

select문의 기본 구조

 

1. 테이블의 모든 열을 가져오는 selec문

select -- 테이블에서 데이터 가지고 올때 사용하는 예약어
	* -- 태이블의 모든 열 불러오는 것 의미
from -- 테이블명에 따른 테이블에서 가져온다는 의미
테이블 이름; -- 조회할 테이블 이름

+

테이블 이름에서 만약 use문을 사용하지 않았다면 데이터베이스명.테이블명 사용

예) market_db.member

 

 

2. 테이블의 특정열을 가져오는 select문

select 
	mem_name
from member;

 

 

여러 열을 가지고 오고 싶다면 ,(콤마)로 열을 구분하여 조회

select
	addr,
    debut_date,
    mem_name
from member;

 

 

별칭을 지정하여 결과에 나오는 열 이름 변경 가능

select 
	addr as 주소, -- as는 생략 가능
    debut_date as 대뷔일자, -- 만약 대뷔 일자로 나타내고 싶으면 '대뷔 일자'로 설정
    mem_name as '그룹 이름'
from member;

 

 

 

✔️ SELECT + WHERE문 

특정 조건만 조회하는 SELECT문

 

실제 인터넷 쇼핑몰의 DB에서 모든 데이터를 다 확인할 수 없음

더 세부적인 데이터를 확인하기 위해서 select문에 where절 적용하여 활용

 

 

# where절

조회하는 결과에 특정한 조건을 추가

-- 기본적 where절 적용

select 
	열이름
from 테이블 이름
where 조건식;

 

 

mem_name이 블랙핑크인 데이터의 전체 열을 조회

select 
	*
from member
where mem_name = '블랙핑크'; -- 멤버 이름은 문자형이므로 ''로 묶어서 확인

 

 

mem_number가 4명인 데이터의 전체 열을 확인

select 
	*
from member
where mem_number = 4; -- 숫자형은 ''필요하지 X

 

 

where절에 관계연산자 / 논리연산자의 사용

관계연산자 : 숫자 데이터의 경우, 데이터의 범위를 지정하는 경우 활용

논리연산자 : AND(두 조건 모두 만족), OR(두 조건 중 하나만 만족해도 됨)

select 
    mem_name,
    height,
    mem_number
from member
where height <= 162
and mem_number > 6;

 

 

 

select 
    mem_name,
    height,
    mem_number
from member
where height <= 162
or mem_number > 6;

 

 

범위에 있는 값을 구하는 경우 BETWEEN~AND 사용하는 것이 용이

select
	mem_name,
    height
from member
where height >= 163 and height <=165;

-- between ~ and 사용하면 동일한 결과가 나옴

select 
	mem_name,
    height
from member
where height between 163 and 165;

 

 

IN()

숫자로 수성된 데이터는 크다/작다의 범위를 지정할 수 있어 범위 사이의 값을 가져올 수 있지만,

문자형 데이터는 범위에 들어있다고 하여 표현할 수 없음

문자형 데이터를 조회하기 위해서는 OR를 반복해서 사용해야했음

 

IN(찾을 값1, 찾을 값2, 찾을 값3,...)

select 
	mem_name,
    addr
from member
where addr = '경기' 
or addr = '전남'
or addr = '경남';

-- in()을 사용하여 간결하게 코드 작성 가능

select 
	mem_name,
    addr
from member
where addr  in ('경기', '전남', '경남');

 

 

LIKE

문자열의 일부 글자를 검색하기 위해 사용

 

 

'우'로 끝나는 문자 찾기

-- 우로 시작하는 문자를 찾기
-- 우라는 글자 뒤에는 어떤 문자가 와도 된다는 의미 
select
	*
from member
where mem_name like '우%';

 

 

'핑크'로 끝나는 문자 찾기

-- 핑크로 끝나는 문자 찾기
-- 핑크 앞에는 어떤 문자가 와도 된다는 의미
select
	*
from member
where mem_name like '%핑크';

 

 

'시대'를 포함하는 문자 찾음

-- '시대'를 포함하는 문자 찾기
-- 문자열에 %%사이에 들어있는 문자가 포함되어 있다면 모두 조회
select
	*
from member
where mem_name like '%시대%';

 

+

 

서브 쿼리(하위 쿼리)

SELECT문 안에 또 다른 SELECT문이 들어갈 수 있다

에이핑크의 평균키보다 키가 큰 회원을 찾고 싶다

-- 우선 에이핑크의 평균키를 확인
-- 164로 확인

select 
	height
from member
where mem_name = '에이핑크';

-- 조건에 164 이상의 회원을 찾을 수도 있지만
-- 위 쿼리를 서브 쿼리로 사용하여 where절에 넣어 조회

select 
	mam_name,
    height
from member
where height > (select height from member where mem_name = '에이핑크');

 

 


 

 

SELECT문의 기본과 WHERE절의 활용까지 알아보았고 

다음 글에서 SELECT문의 ORDER BY절과 GROUP BY절의 활용에 대해 알아보겠습니다

https://everyonelove.tistory.com/42

 

[혼공S] 2주차 _SELECT문의 ORDER BY와 GROUP BY 활용

혼자 공부하는 SQL✔️ SELECT문✔️ SELECT + WHERE문✔️ ORDER BY(정렬) - 2주차(2) 블로그 참조✔️ GROUP BY(그룹핑) - 2주차(2) 블로그 참조✔️ 데이터 변경 위한 쿼리 작성 - 2주차(3) 블로그 글 참조   

everyonelove.tistory.com

 

 

반응형

'SQL > 혼자 공부하는 SQL' 카테고리의 다른 글

[혼공S] 4주차_제약조건을 활용한 테이블 및 가상 테이블(VIEW) 생성 및 활용  (0) 2025.02.03
[혼공S] 3주차_MySQL 데이터 형식과 JOIN(조인), SQL 프로그래밍 활용  (1) 2025.01.23
[혼공S] 2주차 _SELECT문의 ORDER BY와 GROUP BY 활용  (0) 2025.01.18
[혼공S] 2주차_테이블의 데이터 입력, 수정, 삭제까지  (0) 2025.01.18
[혼공S] 1주차_DB부터 MySQL 활용까지  (0) 2025.01.09
'SQL/혼자 공부하는 SQL' 카테고리의 다른 글
  • [혼공S] 4주차_제약조건을 활용한 테이블 및 가상 테이블(VIEW) 생성 및 활용
  • [혼공S] 3주차_MySQL 데이터 형식과 JOIN(조인), SQL 프로그래밍 활용
  • [혼공S] 2주차 _SELECT문의 ORDER BY와 GROUP BY 활용
  • [혼공S] 2주차_테이블의 데이터 입력, 수정, 삭제까지
DAILYSEEKER
DAILYSEEKER
데이터 분석 공부 열심히 하는 중😁
  • DAILYSEEKER
    ECODATALIST
    DAILYSEEKER
  • 전체
    오늘
    어제
  • 글쓰기 관리자
    • DATA (224)
      • SQL (18)
        • SQLD (3)
        • 데이터 분석을 위한 MySQL (5)
        • 혼자 공부하는 SQL (10)
      • Python (39)
        • 데이터 분석을 위한 Python (32)
        • 데이터 분석을 위한 데이터 스크래핑 (4)
        • 데이터 분석 프로젝트 (3)
      • 기획 (3)
        • 서비스 기획 (1)
        • 기업 분석 (2)
      • Frontend(프론트엔드) (22)
        • 데이터 분석을 위한 웹 개발 언어 (9)
        • 자바스크립트 (13)
        • 타입스크립트 (0)
      • 코딩 테스트 (86)
        • 프로그래머스_MySQL (86)
      • Data Driven (12)
        • 코드 없이 배우는 데이터 분석 (6)
        • Excel (5)
      • UI & UX (24)
        • 피그마(Figma) (24)
      • BDA 학회 (20)
        • BDA학회_8기 (4)
        • BDA학회_9기 (16)
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
DAILYSEEKER
[혼공S] 2주차_SELECT문과 WHERE절 활용
상단으로

티스토리툴바