혼자 공부하는 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. 195 확인 문제 4번
Chapter 04. SQL 고급 문법
1. 데이터 형식
*정수형 : 소수점이 없는 숫자. 인원수/가격/수량
ㄴ TINYINT : -128 ~ +127
ㄴ SMALLINT : -32,768 ~ +32,767 (평균키)
ㄴ INT : -21억 ~ +21억 (인원수)
ㄴ BIGINT : -900경 ~ + 900경
ㄴ UNSIGNED : 값의 범위를 0부터 시작하게 하는 예약어
*문자형 : 글자
ㄴ CHAR : 1~255 (속도는 더 빠름)
ㄴ VARCHAR : 1~16383 (가변길이 문자형)
ㄴㄴ 제일 앞에 0이 붙어야 하는 숫자를 정수형으로 지정시, 0이 사라지므로 CHAR 지정
*실수형 : 소수점이 있는 숫자
ㄴ FLOAT : 소수점 아래 7자리까지
ㄴ DOUBLE : 소수점 아래 15자리까지
*날짜형 : 날짜, 시간 저장
ㄴ DATE : YYYY-MM-DD
ㄴ TIME : HH:MM:SS
ㄴ DATETIME : YYYY-MM-DD HH:MM:SS
2. 변수
set @변수이름 = 변수의 값;
select @변수이름;
임시 사용 (종료하면 없어짐)
select 문에서 행의 개수를 제한하는 LIMIT 변수 사용 시 오류 -> PREPARE EXECUTE 사용
3. 데이터 형 변환
문자형 <-> 정수형
1)명시적 변환 : 직접 함수 사용
ㄴ CAST( avg(price) as 데이터_형식 [길이] )
ㄴ CONVERT( avg(price), 데이터_형식[길이] )
ㄴ SIGNED : 부호가 있는 정수 / UNSIGNED : 부호가 없는 정수 (양수만 저장)
ㄴ CONCAT() : 문자를 이어주는 역할 CONCAT (100, '200') ; -> 100200
2)암시적 변환 : 자연스럽게 변환
4. 테이블 조인
*일대다 관계 : PK(기본키) - FK(외래키)
ㄴ PK는 고유값, FK는 여러개일 수 있음
*형식
select 열 목록
from 테이블이름1
join 테이블이름2
on 조인 조건 (PK열이름)
where 검색조건
여기서, 검색조건을 지정하지 않으면, 테이블 두개 조인한 전체결과
select *
from 테이블이름1
join 테이블이름2
on 조인 조건 (PK열이름)
*inner join은 두 테이블 모두에 값이 있을 때 사용
*중복된 결과값은 1개만 표시 : DISTINCT
*outer join은 한쪽 테이블에만 값이 있어도 결과가 나옴
*cross join은 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인 (랜덤)