멈추지 않는 기록

[혼자공부하는SQL] 6강 본문

웹 개발/MySQL

[혼자공부하는SQL] 6강

pangil_kim 2025. 2. 13. 04:00
728x90

03-1. 기본 중에 기본 SELECT ~ FROM ~ WEHERE

0. 시작하기 전에

  • SELECT문은 구축이 완료된 테이블에서 데이터를 추출하는 기능을 한다.
  • 기본 형식
SELECT (열 이름) 
FROM (테이블 이름) 
WHERE (조건식)

: 기존에 있는 데이터를 가져와서 볼 뿐이지, 변경을 하는 것은 아니다.

1. 실습용 데이터베이스 구축

1) 실습용 데이터베이스 개요

2) 데이터 추가하기

(1) File → ‘Open SQL Script’를 누른다.

(2) 파일을 선택한 후, 번개 모양 아이콘을 눌러 파일을 실행한다.

3) 명령문 분석하기

DROP DATABASE IF EXISTS market_db; -- 만약 market_db가 존재하면 우선 삭제한다.
CREATE DATABASE market_db;

USE market_db;

CREATE TABLE 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), -- 연락처의 국번(02, 031, 055 등)
  phone2        CHAR(8), -- 연락처의 나머지 전화번호(하이픈제외)
  height        SMALLINT,  -- 평균 키
  debut_date    DATE  -- 데뷔 일자
);
CREATE TABLE buy -- 구매 테이블
(  num         INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -- 순번(PK)
   mem_id      CHAR(8) NOT NULL, -- 아이디(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 INTO member VALUES('TWC', '트와이스', 9, '서울', '02', '11111111', 167, '2015.10.19');
INSERT INTO member VALUES('BLK', '블랙핑크', 4, '경남', '055', '22222222', 163, '2016.08.08');
INSERT INTO member VALUES('WMN', '여자친구', 6, '경기', '031', '33333333', 166, '2015.01.15');
INSERT INTO member VALUES('OMY', '오마이걸', 7, '서울', NULL, NULL, 160, '2015.04.21');
INSERT INTO member VALUES('GRL', '소녀시대', 8, '서울', '02', '44444444', 168, '2007.08.02');
INSERT INTO member VALUES('ITZ', '잇지', 5, '경남', NULL, NULL, 167, '2019.02.12');
INSERT INTO member VALUES('RED', '레드벨벳', 4, '경북', '054', '55555555', 161, '2014.08.01');
INSERT INTO member VALUES('APN', '에이핑크', 6, '경기', '031', '77777777', 164, '2011.02.10');
INSERT INTO member VALUES('SPC', '우주소녀', 13, '서울', '02', '88888888', 162, '2016.02.25');
INSERT INTO member VALUES('MMU', '마마무', 4, '전남', '061', '99999999', 165, '2014.06.19');

INSERT INTO buy VALUES(NULL, 'BLK', '지갑', NULL, 30, 2);
INSERT INTO buy VALUES(NULL, 'BLK', '맥북프로', '디지털', 1000, 1);
INSERT INTO buy VALUES(NULL, 'APN', '아이폰', '디지털', 200, 1);
INSERT INTO buy VALUES(NULL, 'MMU', '아이폰', '디지털', 200, 5);
INSERT INTO buy VALUES(NULL, 'BLK', '청바지', '패션', 50, 3);
INSERT INTO buy VALUES(NULL, 'MMU', '에어팟', '디지털', 80, 10);
INSERT INTO buy VALUES(NULL, 'GRL', '혼공SQL', '서적', 15, 5);
INSERT INTO buy VALUES(NULL, 'APN', '혼공SQL', '서적', 15, 2);
INSERT INTO buy VALUES(NULL, 'APN', '청바지', '패션', 50, 1);
INSERT INTO buy VALUES(NULL, 'MMU', '지갑', NULL, 30, 1);
INSERT INTO buy VALUES(NULL, 'APN', '혼공SQL', '서적', 15, 1);
INSERT INTO buy VALUES(NULL, 'MMU', '지갑', NULL, 30, 4);

SELECT * FROM member;
SELECT * FROM buy;

4) USE문

(1) SELECT문을 실행하려면, 먼저 사용할 데이터베이스를 지정해야 한다.

USE 데이터베이스_이름;

 

(2) 현재 사용중인 데이터베이스 확인 명령문

SELECT DATABASE();

 

(3) 프로그램을 종료하고 다시 실행하면 USE를 다시 실행해야 한다.

 

5) SELECT문

(1) 모든 테이블 행 검색하기

select * from member;
  • 알파벳 순으로 정렬된다.

(2) 명령문은 세미콜론(;)이 나오기 전까지는 한 문장으로 된다.

SELECT * 
FROM member 
WHERE mem_name = '블랙핑크' ;

 

(3) 다른 DB의 테이블을 사용할 경우에는 점(.)을 사용한다.

USE sys; 

SELECT * 
FROM market_db.member -- 이와 같이 사용해야 한다. 
WHERE mem_name = '블랙핑크';

 

(4) 특정 열만 검색하고 싶을 경우, SELECT 구문 뒤에 원하는 열 이름을 콤마(,)을 사용하여 연결한다.

USE market_db; 

SELECT addr, height, debut_date 
FROM member 
WHERE mem_name = '블랙핑크';

 

(5) 열 이름에 별칭을 줄 경우, 열 이름 뒤에 별칭을 작성한다.

USE market_db; SELECT addr 지역, height 키, debut_date '데뷔 일자' 
FROM member 
WHERE mem_name = '블랙핑크';

 

(6) 여러 개의 조건을 주고 싶은 경우 WHERE 구문을 사용한다.

-- 문자열 
SELECT * FROM member WHERE mem_name = '블랙핑크'; 

-- 숫자 
SELECT * FROM member WHERE mem_number = 4; 

-- 부등호 
SELECT mem_id, mem_name FROM member WHERE height <= 162; 

-- AND 조건 
SELECT mem_id, mem_name FROM member WHERE height >= 165 AND mem_number > 6; 

-- OR 조건 
SELECT mem_id, mem_name FROM member WHERE height >= 165 OR mem_number > 6; 

-- 사이 조건 (ex. 숫자의 범위) -> BETWEEN A AND B; 
SELECT mem_name, height FROM member WHERE height >= 163 AND height <= 165; 
SELECT mem_name, height FROM member WHERE height BETWEEN 163 AND 165; 

-- 선택 조건 (ex. 문자열, 카테고리) -> IN (A, B, C); 
SELECT mem_name, addr FROM member WHERE addr = '경기' OR addr = '전남' OR addr = '경남'; 
SELECT mem_name, addr FROM member WHERE addr IN('경기', '전남', '경남'); 

-- 문자열 비교 -> 언더바(_)는 한 글자, 퍼센트(%)는 여러 글자 
SELECT * FROM member WHERE mem_name LIKE '우%'; -- (ex. '우'로 시작하는 경우) 
SELECT * FROM member WHERE mem_name LIKE '%이%'; -- (ex. '이'가 들어가는 경우) 
SELECT * FROM member WHERE mem_name LIKE '__핑크'; -- (ex. 4글자이고, 핑크로 끝나는 경우)
728x90

'웹 개발 > MySQL' 카테고리의 다른 글

[혼자공부하는SQL] 8강  (0) 2025.02.13
[혼자공부하는SQL] 7강  (0) 2025.02.13
[혼자공부하는SQL] 5강  (0) 2025.02.13
[혼자공부하는SQL] 4강  (0) 2025.02.13
[혼자공부하는SQL] 3강  (0) 2025.02.13