1. 인터넷 마켓 DB 살펴 보기
1) 데이터베이스 만들기
DROP DATABASE IF EXISTS market_db; -- market_db를 삭제
CREATE DATABASE market_db; -- 데이터 베이스를 새로 만듬
2) 회원 테이블 만들기
USE market_db;
CREATE TABLE member -- 회원 테이블 (member)
( mem_id CHAR(8) NOT NULL PRIMARY KEY, -- 회원 아이디(PK)
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 -- 데뷔 일자
);
- use : market_db 데이터베이스를 선택하는 문장
3) 구매 테이블 만들기
CREATE TABLE buy -- 구매 테이블(buy)
( num INT AUTO_INCEREMENT NOT NULL PRIMARY KEY, --순번
mem_id CHAR(8) NOT NULL, -- 아이디
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)
);
- AUTO_INCREMENT : 자동으로 숫자를 입력
4) 데이터 입력하기
INSERT INTO member VALUES('TWC','트와이스',9,'서울','02','11111111',167,'2015.10.19');
INSERT INTO buy VALUES(NULL,'BLK','지갑',NULL,30,2);
- 구매 테이블의 첫 번째열인 순번(num)은 자동으로 입력되므로 NULL이라 씀
5) 데이터 조회하기
SELECT * FROM member;
SELECT * FROM buy;
2. 기본 조회 : SELECT ~ FROM
2.1 USE문
- SELECT문을 실행하려면 먼저 사용할 데이터베이스를 지정해야함
USE 데이터베이스_이름;
USE market_db;
2.2 SELECT문의 기본 형식
SELECT 열_이름
FROM 테이블_이름
WHERE 조건식
GROUP BY 열_이름
HAVING 조건식
ORDER BY 열_이름
LIMIT 숫자
2.3 SELECT와 FROM
1) 회원(member) 테이블에서 모든 열의 내용을 가져오기
USE market_db;
SELECT * FROM member;
- SELECT : 테이블에서 데이터를 가져올 때 사용하는 예약어
- * : 모든것, member 테이블의 열 모두
- FROM + 테이블 이름
2) 회원 테이블(member)의 이름(mem_name)열만 가져오기
SELECT mem_name FROM member;
3) 여러 열 가져오기
- 콤마로 구분
SELECT addr, debut_date, mem_name FROM member;
3. 특정 조건만 조회 : SELECT ~ FROM ~ WHERE
3.1 기본적인 WHERE절
- WHERE절 없이 SELETE문을 사용하면 모든 행이 출력
- WHERE절은 조회하는 결과에 특정한 조건을 추가해서 원하는 데이터만 보고 싶을 때 사용
- 기본 형식
SELECT 열_이름
FROM 테이블_이름
WHERE 조건식;
ex) 열 이름이 '블랙핑크'인 결과 출력
SELECT * FROM member WHERE mem_name = '블랙핑크';
3.1 관계 연산자, 논리 연산자 사용
1)관계 연산자 사용
- 데이터의 범위 지정
ex) 평균 키 (height)가 162 이하인 회원 검색
SELECT mem_id, mem_name
FROM member
WHERE height <= 162;
2)논리 연산자 사용
- 2가지 이상의 조건 만족하도록
- AND : 두 조건 모두 만족
- OR : 두 조건 중 하나만 만족
ex) 평균 키(height)가 165 이상이면서 인원(mem_number)도 6명 초과인 회원 검색
SELECT mem_name, height, mem_number
FROM member
WHERE height >= 165 AND mem_number > 6;
ex) 평균 키(height)가 165이상이거나 인원(mem_number)이 6명 초과인 회원 검색
SELECT mem_name, height, mem_number
FROM member
WHERE height >= 165 OR mem_number > 6;
3.2 BETWEEN ~ AND
- 범위에 있는 값 구할 때 사용
ex) 평균키(height)가 163 ~ 165인 회원 검색
SELECT mem_name, height
FROM member
WHERE height BETWEEN 163 AND 165;
3.3 IN()
- 조건식에서 여러 문자 중 하나에 포함되는지 비교할 때 사용
ex) 경기/전남/경남 중 한 곳에 사는 회원을 검색
SELECT mem_name, addr
FROM member
WHERE addr IN ('경기', '전남', '경남');
3.4 LIKE
- 문자열의 일부 글자를 검색
ex) 이름(mem_name)의 첫 글자가 '우'로 시작하는 회원 검색
SELECT *
FROM member
WHERE mem_name LIKE '우%';
- 앞글자가 '우'이고 그 뒤는 무엇이든(%)허용
ex) 이름(mem_name)의 뒤가 '핑크'인 회원 검색
SELECT *
FROM member
WHERE mem_name LIKE '__핑크';
- 한 글자와 매치하기 위해서는 언더바(_) 사용
'데이터 > SQL' 카테고리의 다른 글
[혼공] 4-3장 SQL 프로그래밍 (0) | 2023.08.12 |
---|---|
[혼공] 4-2장 두 테이블을 묶는 조인 (0) | 2023.08.08 |
[혼공] 4-1장 MySQL의 데이터 형식 (0) | 2023.08.07 |
[혼공] 3-3장 데이터 변경을 위한 SQL문 (0) | 2023.08.07 |
[혼공] 3-2장 Select문 기본(2) (0) | 2023.08.06 |