ㅇ 일 자 : 2026년 7월 9일(목)
ㅇ 내 용 : MySQL 예제 문제 실습
□ 회원 테이블 생성하기 CREATE TABLE member;

□ 구매 테이블 생성하기 CREATE TABLE buy;

□ 테이블 데이터 조회하기 naver_db.buy; naver_db. member;
☞ 데이터 베이스가 선택되지 않아 오류 발생시 다시 USE 로 데이터베이스 사용전환을 한 후 다시 실행

□ 멤버 데이터 조회하기

□ 멤버 데이터 중에서 id, name, addr 만 선택 조회하기

□ 생성된 뷰 모든 데이터 조회하기
- member 테이블에서 회원 아이디(mem_id), 이름(mem_name), 주소(addr)만 뽑아내어 v_member 라는 이름의 뷰를 생성하고, 뷰는 실제 데이터를 저장하지 않고, 원본 테이블의 데이터를 보여주는 '창문' 역할을 한다.
CREATE VIEW v_member AS SELECT mem_id, mem_name, addr FROM member;
- 생성된 뷰(v_member)의 모든 데이터를 조회합니다. 즉, 앞서 지정한 회원 아이디, 이름, 주소 전체를 출력
SELECT * FROM v_member;
- 뷰(v_member)에서 주소(addr)가 '서울' 또는 '경기'인 회원의 이름과 주소만 조회
SELECT mem_name, addr FROM v_member WHERE addr IN ('서울', '경기');

- JOIN 구문을 활용하여 데이터 통합 하기
SELECT B.mem_id, M.mem_name, B.prod_name, M.addr,
CONCAT(M.phone1, M.phone2) '연락처'
FROM buy B
INNER JOIN member M
ON B.mem_id = M.mem_id;
== <구분 설명 > ==
SELECT B.mem_id, // buy 테이블(B)에서 회원 ID를 가져오기
M.mem_name, // member 테이블(M)에서 회원 이름을 가져오기
B.prod_name, // buy 테이블(B)에서 구매한 상품명을 가져오기
M.addr, // member 테이블(M)에서 주소를 가져오기
CONCAT(M.phone1, M.phone2) '연락처'
// member 테이블(M)의 연락처 국번과 번호를 합쳐 '연락처'라는 별칭으로 가져오기
FROM buy B // [기준 테이블] 중심이 되는 구매(buy) 테이블을 가져오고, 별칭을 'B'로 지정
INNER JOIN member M // [조인 대상] 연결할 회원(member) 테이블을 가져오고, 별칭을 'M'으로 지정
// (INNER JOIN이므로 두 테이블 모두에 데이터가 존재하는 경우만 매칭된다)
ON B.mem_id = M.mem_id; //[조인 조건] buy 테이블의 회원 ID(B.mem_id)와
// member 테이블의 회원 ID(M.mem_id)일치 데이터만 연결하는 조건 지정
※ SQL문은 구매 테이블(buy)과 회원 테이블(member)을 회원 ID 기준으로 결합, 상품을 구매한 회원의 구매 기록, 주소, 합쳐진 전화번호를 조회하는 내부 조인(INNER JOIN) 구문이다.
- INNER JOIN member M: buy 테이블에 있는 데이터와 member 테이블에 있는 데이터를 서로 결합하겠다는 의미
- ON B.mem_id = M.mem_id: 결합할 때의 기준 키(Key). 구매한 사람의 ID(B.mem_id)가 회원 가입된 ID(M.mem_id)와 정확히 일치하는 데이터만 합쳐서 결과를 출력한다
- 회원 정보가 없는 유령 회원의 구매 기록이나, 구매 기록이 없는 회원의 정보는 출력되지 않는다.

□ name 조회하기 SELECT * FROM v_memberbuy WHERE mem_name = '블랙핑크';
SELECT B.mem_id 'Member ID', M.mem_name AS 'Member Name', B.prod_name "Product Name",
CONCAT(M.phone1, M.phone2) AS "Office Phone"
FROM buy B
INNER JOIN member M ON B.mem_id = M.mem_id;
- 테이블 합치기 : 구매 테이블(buy)과 회원 테이블(member)을 회원 아이디(mem_id) 기준으로 합쳐서 정보 가져오기
- 연락처 합치기 : CONCAT 함수를 사용해 나눠져 있던 전화번호(phone1, phone2)를 하나의 연락처 문자열로 연결
- 별칭 지정 : 결과 화면에 보일 열 이름을 영어(Member ID, Member Name 등)로 알아보기 쉽게 바꾸기

□ 기존 가상 테이블 뷰 조회 하기
SELECT DISTINCT `Member ID`, `Member Name` FROM v_viewtest1; // 백틱 사용
* DISTINCT를 사용했기 때문에, 한 사람이 물건을 여러 개 샀더라도 중복 없이 이름을 딱 한 번씩만 출력
□ 가상 테이블 수정, 뷰의 구조 변경하기
ALTER VIEW v_viewtest1 AS
SELECT B.mem_id '회원 아이디', M.mem_name AS '회원 이름', B.prod_name "제품 이름",
CONCAT(M.phone1, M.phone2) AS "연락처"
FROM buy B
INNER JOIN member M ON B.mem_id = M.mem_id;

`백틱`이 뭔데요?
백틱(``)은 프로그래밍에서 문자열을 감싸거나 코드 블록을 표시할 때 사용하는 특수 기호.
키보드의 1번 왼쪽(물결표 아래 ``)에 위치하며, 변수와 문자열을 쉽게 결합하고
여러 줄을 표현할 수 있어 JavaScript, SQL, Markdown 등에서 자주 쓰인다.
- 변수삽입(보간법) : 문자열 내에 $\{변수명\}을 넣어 + 기호 없이도 변수나 표현식을 문자열에 쉽게 포함
- 여러 줄 문자열 : 따옴표와 달리 줄 바꿈을 하더라도 에러가 나지 않아, 긴 문장이나 HTML 코드를 작성
- 코드블록 : 마크다운(Markdown), GitHub 등에서 백틱 세 개(```)를 사용해 코드를 강조하는 블록 생성

□ 파일 위치 지정하여 조회하기

□ 테이블 수정하기
ALTER 문은 이미 생성된 데이터베이스 객체(테이블 등)의 구조를 수정할 때 사용하는 DDL 명령어
기존 테이블을 삭제하고 다시 만들 필요 없이 컬럼 추가, 삭제, 자료형 변경, 제약조건 설정 등을 수행

끝.
'학습 로그 > c# c++' 카테고리의 다른 글
| D+66[C+MySQl] 회원가입/로그인을 MySQL서버와 연동하기 과제 (0) | 2026.07.12 |
|---|---|
| D+64[C+MySQL] Workbench (핵심 문법정리 & 예제 실습) (0) | 2026.07.08 |
| D+62[C+MySQL] Workbench 예제 실습을 통한 이해 (0) | 2026.07.06 |
| D+62[C+MySQL] DataBase, EED 에 대한 이해 (0) | 2026.07.06 |
| D+21 [C+Unix] 명령어 실습 및 예습 (0) | 2026.05.06 |