혼자 공부하는 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 문법까지 입문자의 눈높이에 맞춰 구성했습니다. 지루한 설명 대신 도식화된 이미지와 예제를 통한 실습으로 책의 마지막까지 흥미롭게 학습할 수 있습니다. 프로그
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 프로그래밍 활용 (0) | 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 |