혼자 공부하는 SQL
# | 진도 | 기본 숙제(필수) | 추가 숙제(선택) |
1주차 (7/1 ~ 7/7) |
Chapter 01 ~ 02 | p. 80의 shop_db의 회원 테이블(member)에서 아이유 회원에 대한 정보만 추출한 후 결과 화면 인증하기 | 데이터베이스 개체 3가지 설명하기 |
2주차 (7/8 ~ 7/14) |
Chapter 03 | p. 138의 확인 문제 2번 풀고 인증하기 | 데이터 입력, 삭제하는 기본 형식 작성하기 |
3주차 (7/15 ~ 7/21) |
Chapter 04 | p. 195의 확인 문제 4번 풀고 인증하기 | p. 183 [좀 더 알아보기] 손코딩 실행하고 결과화면 인증하기 |
4주차 (7/22 ~ 7/28) |
Chapter 05 | p. 226의 market_db의 회원 테이블(member) 생성하고, p. 229 데이터 입력한 후 인증하기 | p. 271 확인 문제 4번 풀고 인증하기 |
여름방학 (7/29 ~ 8/4) |
럭키비키 즐거운 여름방학이잔앙 | ||
5주차 (8/5 ~ 8/11) |
Chapter 06 | p. 310 인덱스 생성하고 key_name이 PRIMARY로 출력된 결과 화면 캡처하기 | 인덱스 생성, 제거하는 기본 형식 작성하기 |
6주차 (8/12 ~ 8/18) |
Chapter 07 ~ 08 | p. 363 market_db의 고객 테이블(member)에 입력된 회원의 정보가 변경될 때 변경한 사용자, 시간, 변경 전의 데이터 등을 기록하는 트리거 작성하고 인증하기 | p. 402 GUI 응용 프로그램 만들고 인증하기 |
p. 138 확인 문제 2번

Chapter 03. SQL 기본 문법
1. select문
*기능: 구축이 완료된 테이블에서 데이터를 추출하는 기능 (기존의 데이터 변경X)
*형식: select [열 이름] from [테이블 이름] where [조건식]
ㄴ select * from [테이블이름]; -> 테이블 전체 확인
*사용: use 문을 이용해 먼저 사용할 데이터베이스 지정 (use [테이블 이름])
*사용예:
select [열 이름]
from [테이블 이름]
where [조건식] -> 가져오고 싶은 조건 열 = '텍스트' 또는 숫자 (숫자는 작은따옴표 불필요)
group by [열 이름]
having [조건식]
order by [열 이름]
limit [숫자]
2. 관련 연산자
* (숫자) 작거나 같다 : <=
* (숫자) 논리연산자 : and / or / between and
* (텍스트) 지정 : in
* (텍스트) 일부 : like '...%' (%는 무엇이든 허용)
* (텍스트) 매치 : _
3. 서브 쿼리
* select 안에 또 다른 select
4. select 절의 형식
* order by : 결과 정렬 (desc : 내림차순 / 기본값 asc : 오름차순)
ㄴ where 절 다음으로 order by 절이 나와야 함 (순서 !)
* limit : 결과 개수 제한 (limit 시작, 개수)
ㄴ order by와 같이 사용 (정렬 후 시작번부터 몇 번째 개수 까지 보여줌)
ㄴ ex. limit 3, 2 (세번째 데이터 부터 2개까지 보여줌)
* distinct : 중복 데이터 제거
ㄴ 중복된 데이터를 1개만 남김
* group by : 지정한 열의 데이터들을 같은 데이터끼리 묶어서 결과 추출 + having
ㄴ 집계함수 (sum, avg, min, max, count, count(distinct))와 함께 사용
ㄴ select 그룹으로 묶는 열이름, 집계함수 from 테이블이름 group by 그룹으로 묶는 열이름
ㄴ having 함수는 집계함수의 조건을 제한함
ㄴ group by 절 다음으로 having 절, 그 다음 order by 나와야 함 (순서 !!)
5. 데이터 변경
* insert : 기존 테이블에 신규 데이터 입력
ㄴ insert into 테이블 [열1, 열2...] values [값1, 값2...] -> 다른 테이블의 데이터를 한 번에 입력
ㄴ auto_increment : 열 정의 시 1부터 증가하는 값을 입력해줌, primary key로 꼭 지정
ㄴ 100부터 증가하게 하고싶다면, alter table [테이블이름] auto_increment = 100;
ㄴ 1000부터 3씩 증가하게 하고싶다면, auto_increment=1000; set @@auto_increment_increment=3;
ㄴ @@ 시스템변수 -> sql에서 자체적으로 가지고 있는 설정값이 저장된 변수
ㄴ desc [테이블이름] -> 테이블 구조 확인
* update : 기존 테이블에 기존 데이터 변경
ㄴ update [테이블이름] set [열1=값1], [열2=값2] ... where 조건;
ㄴ 설정 바꿔줘야 함 [edit] - [preference] - [safe updates 체크해제]
ㄴ where 조건이 없으면 데이터 전체가 바뀜
* delete : 기존 테이블에 기존 데이터 삭제
ㄴ delete from [테이블이름] where [조건];
6. 대용량 테이블 삭제
* drop : 테이블 자체를 삭제
* delete / truncate : 빈테이블을 남김