https://www.hanbit.co.kr/store/books/look.php?p_code=B6846155853
혼자 공부하는 SQL
데이터베이스 개념부터 SQL 문법까지 입문자의 눈높이에 맞춰 구성했습니다. 지루한 설명 대신 도식화된 이미지와 예제를 통한 실습으로 책의 마지막까지 흥미롭게 학습할 수 있습니다. 프로그
www.hanbit.co.kr
위 내용은 <혼자 공부하는 SQL>을 기반으로 공부하여 작성 내용입니다.
3-1 기본 중에 기본 SELECT ~ FROM ~ WHERE
- SELECT 문은 구축이 완료된 테이블에서 데이터를 추출하는 기능, 기존의 데이터 변경 X
- 가장 기본적인 형식 : SELECT ~ FROM ~ WHERE
- SELECT 다음에 열 이름
- FROM 다음에 테이블 이름
- WHERE 다음에 조건
데이터베이스 만들기
DROP DATABASE IF EXISTS market_db; -- 만약 market_db가 존재하면 우선 삭제한다.
CREATE DATABASE market_db;
- DROP DATABASE는 market_db를 삭제하는 문장
- 처음 실행할 때는 필요 x
- CREATE DATABASE market_db : 데이터 베이스 새로 만듦
회원 테이블(member) 만들기
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 -- 데뷔 일자
);
- USE : marke_db 데이터베이스 선택
- CREATE TABLE ~ : member 테이블을 만드는 과정
- -- : 주석
구매 테이블(buy) 만들기
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)
);
- CREATE TABEL buy : 구매 테이블(buy) 생성
- AUTO_INCREMENT : 자동으로 숫자 입력, 1,2,3, .. 방식으로 자동 증가
데이터 입력하기
INSERT INTO member VALUES('TWC', '트와이스', 9, '서울', '02', '11111111', 167, '2015.10.19');
INSERT INTO buy VALUES(NULL, 'BLK', '지갑', NULL, 30, 2);
- 첫번째 줄 : 회원 테이블(member)에 값 입력, CHAR, VARCHAR, DATE형은 작은따옴표로 값을 묶어줌, INT형은 작은따옴표 없이 그냥 넣어줌
- 두번째 줄 : 구매 테이블(buy)의 첫 번재 열인 순번(num)은 자동으로 입력되므로 그 자리에는 NULL 쓰면 됨
데이터 조회하기
SELECT * FROM member;
SELECT * FROM buy;
기본 조회하기 : SELECGT ~ FROM
USE 문
- SELECT 문을 실행하려면 먼저 사용할 데이터베이스 지정해야함
- 현재 사용하는 데이터베이스를 지정 또는 변경하는 형식
- MySQL은 워크벤지를 재시작하거나 쿼리 창을 새로 열면 다시 USE를 실행해야 함
# USE 데이터베이스_이름;
USE market_db;
SELECT 문의 기본 형식
SELECT select_expr
[FROM table_references]
[WHERE wher_condition]
[GROUP BY {col_name | expr | position}]
[HAVING wher_condition]
[ORDER BY {col_name | expr | position}]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
# 대괄호([])로 묶인 부분은 생략 가능
SELECT 열 이름
FROM 테이블_이름
WHERE 조건식
GROUP BY 열_이름
HAVING 조건식
ORDER BY 열_이름
LIMIT 숫자
SELECT와 FROM
USE market_db;
SELECT * FROM member;
# 원칙적으로 SELECT * FROM market_db.member; 으로 사용해야 함
- SELECT : 테이블에서 데이터를 가져올 때 사용하는 예약어
- * : 일반적으로 '모든 것' 의미 -> 열 이름이 나올 곳에 사용됐으므로 여기서는 '모든 열' 의미
- FROM : FROM 뒤에 나오는 테이블 명을 가진 테이블에서 내용을 가져온다는 의미
- member : 조회할 테이블 이름
SELECT mem_name FROM member; # 회원 테이블의 이름 열만 가져옴
SELECT addr, debut_date, mem_name FROM member;
Output 패널 의미
- 초록색 체크 표시 : 정상 실행
- 빨간색 X 표시 : 오류 발생
- # : 실행한 SQL 순번
- Time : SQL 실행 시각 표시
- Action : 실행된 SQL 표시
- Message : SELECT 문이 조회된 행의 개수 나옴, 오류 발생 시 오류 번호 및 오류 메시지 표시
- Duration/Fetch : Duration은 SQL이 실행되는 데 걸린 시간(초), Fetch는 데이터베이스에서 가져온 시간(초)
특정한 조건만 조회하기 : SELECT ~ FROM ~ WHERE
WHERE 없이 조회하기
- WHERE 없이 SELECT ~ FROM만으로 테이블을 조회하면 테이블의 모든 행 출력
- 데이터 건수가 많은 경우 처리하는 데 오랜 시간이 걸리거나 컴퓨터에 부담이 됨
기본적인 WHERE 절
SELECT 열_이름 FROM 테이블_이름 WHERE 조건식;
or
SELECT 열_이름
FROM 테이블_이름
WHERE 조건식;
# 세미콜론(;)이 나오기 전까지는 한 줄로 쓰든, 여러 줄로 쓰든 동일
SELECT * FROM member WHERE mem_name = '블랙핑크';
- 인원(mem_number)처럼 숫자형 열을 조회할 때는 작은 따옴표 필요 없음
SELECT * FROM member WHERE mem_number = 4;
관계 연산자, 논리 연산자의 사용
- 숫자로 표현된 데이터는 범위 지정 가능 -> 관계 연산자 사용
SELECT mem_id, mem_name
FROM member
WHERE height <= 162;
- 2가지 이상의 조건 AND 이용해서 조회 가능
SELECT mem_id, mem_name
FROM member
WHERE height >= 162 AND mem_number > 6;
- 2가지 조건 중 하나만 만족 OR 이용해서 조회 가능
SELECT mem_id, mem_name
FROM member
WHERE height >= 165 OR mem_number > 6;
BETWEEN ~ AND
- 범위에 있는 값을 구햐는 경우
SELECT mem_id, mem_name
FROM member
WHERE height >= 163 AND height <= 165;
SELECT mem_id, mem_name
FROM member
WHERE height BETWEEN 163 AND 165;
# 동일한 결과 출력
IN()
- 평균 키(height)와 같이 숫자로 구성된 데이터는 크다/작다의 범위 지정 가능
- 문자로 표현되는 데이터는 OR로 일일이 짜야됨
- IN()을 사용하면 코드를 훨씬 간결하게 작성 가능
SELECT mem_name, addr
FROM member
WHERE addr = '경기' OR addr = '전남' OR addr = '경남';
SELECT mem_name, addr
FROM member
WHERE addr IN('경기', '전남', '경남');
# 동일한 결과 출력
LIKE
- 문자열의 일부 글자를 검색할 때 사용
- 예를 들어 '우'로 시작하는 회원 검색은 '우%'로 사용
SELECT mem_name, addr
FROM member
WHERE mem_name LIKE '우%';
언더바(_)
- 한 글자와 매치하기 위해 사용
SELECT *
FROM member
WHERE mem_name LIKE '__핑크';
서브 쿼리
- SELECT 안에 또 다른 SELECT가 들어갈 수 있음 -> 서브 쿼리(subquery) 또는 하위 쿼리
에이핑크 회원의 평균 키보다 큰 회원 검색
SELECT height FROM member WHERE mem_name = '에이핑크';
# 에이핑크의 평균 키 알아냄
SELECT mem_name, height FROM member WHERE height > 164;
# 164보다 평균 키가 큰 회원 조회
SQL문 2개를 사용해서 결과를 얻음 -> 하나로 만들 수 있음
SELECt mem_name, height FROM member
WHERE height > (SELECT height FROM member WHERE mem_name = '에이핑크');
'SQL' 카테고리의 다른 글
[혼자 공부하는 SQL] chapter 4. SQL 고급 문법(4-2) (1) | 2023.05.08 |
---|---|
[혼자 공부하는 SQL] chapter 4. SQL 고급 문법(4-1) (0) | 2023.05.08 |
[혼자 공부하는 SQL] chapter 3. SQL 기본 문법(3-3) (0) | 2023.05.04 |
[혼자 공부하는 SQL] chapter 3. SQL 기본 문법(3-2) (0) | 2023.05.03 |
[혼자 공부하는 SQL] chapter 2. 실전용 SQL 미리 맛보기 (0) | 2023.05.01 |