본문 바로가기

데이터/SQL

[혼공]3-1 select문 기본(1)

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 '__핑크';

- 한 글자와 매치하기 위해서는 언더바(_) 사용