P.195 4번
문제
SELECT DISTINCT M.mem_id, B.prod_name, M.mem_name, M.addr
FROM memeber M
LEFT OUTER JOIN buy B
ON M.mem_id = B.mem_id
[ ]
ORDER BY M.mem_id
정답 4번 WHERE B.prod_name IS NULL
p.184 손코딩 실행하고 결과 캡처
데이터형식
정수형 : 소수점이 없는 숫자 / 연산에 의미가 있고 순서에 의미가 있을때 사용
TINYINT | SMALLINT | INT | BIGINT | |
---|---|---|---|---|
바이트수 | 1 | 2 | 4 | 8 |
표현할수 있는 숫자 | 127 | 32767 | 21억 | 900경 |
UNSIGNED : 1바이트 크기를 표시함 (0~255)
문자형
CHAR(숫자) | VARCHAR(숫자) | |
---|---|---|
바이트수 | 1~255 | 1~16383 |
고정 길이 문자형 | 가변 길이 문자형 | |
내부적으로 성능이 좋음 | 공간을 효율적으로 사용 가능 | |
예시 | CHAR(6) 가나다OOO | VARCHAR(6)가나다 |
실수형
소수점이 있는 숫자 저장할때 사용
FLOAT | DOUBLE | |
---|---|---|
바이트수 | 4(소수점아래 7자리) | 8(소수점아래 15자리) |
날짜형
날짜와 시간을 입력할때는 작은따음표를 묶어서 써줘야함
DATE | TIME | DATETIME | |
---|---|---|---|
바이트수 | 3 | 3 | 3 |
날짜만 저장 | 시간만 저장 | 날짜, 시간저장 | |
형식 | YYYY-MM-DD | HH:MM:SS | YYYY-MM-DD HH:MM:SS |
대량데이터 형식
TEXT형식 | TEXT | LONGTEXT | |
---|---|---|---|
바이트수 | 1~65535 | 1~4294967295 | 소설, 영화 대본 저장 |
BLOB형식 | BLOB | LONGBLOB | |
---|---|---|---|
바이트수 | 1~65535 | 1~4294967295 | 이미지, 동영상 저장 |
변수의 사용
변수는 워크벤치를 종료하면 없어는 임시
변수선언 방법
SET @변수이름 = 변수값 -- 변수선언 및 값 넣기
SELECT @변수이름 -- 변수 값 출력
LIMIT에 변수사용하지 못함 -> PREPARE, EXECUTE를 사용함
데이터 형 변환
형변환은 문자형→정수형 또는 정수형→문자형 바꾸는것
명시적 변환 | 암시적변환 |
---|---|
함수를 이용해서 변환 | 자연스럽게 변환 |
명시적 변환
CAST 또는 CONVERT 사용
함수에 쓸수있는 데이터형식: CHAR, SIGNED(부호있는 정수), UNSIGNEDSIGNED(부호없는 정수), DATE, TIME, DATETIME
> CAST (값 AS 데이터 형식 [길이])
CONVERT(값, 데이터 형식[길이])
날짜형으로 병경하기
결과를 원하는 형태로 변경하기
암시적 변환
문자+문자 = 숫자
CONCAT(문자,문자) = 문자문자
CONCAT(숫자, 문자) = 문자문자
숫자+문자 = 숫자
SELECT 열
FROM 첫번째 테이블
INNER JOIN 두번째 테이블
ON 조인할 조건 -- 두개 테이블에 같은 이름의 열이 있으면 <테이블이름.열이름>으로 표기해야함
[WHERE 검색조건]
외부조인: 한쪽 테이블에만 데이터가 있어도 결과가 나오는 조인
SELECT 열
FROM 첫번째 테이블(LEFT 테이블)
LEFT|RIGHT|FULL OUTER JOIN 두번째테이블(RIGHT 테이블)
ON 조인될 조건
[WHERE 검색 조건]
LEFT OUTER JOIN : 왼쪽테이블의 내용을 모두 출력해라
FULL OUTER JOIN : 왼쪽 외부조인, 오른쪽 외부조인을 합친것. 자주사용하지 않음
하나의 테이블을 각각 별칭을 지정해서 조인함SELECT 열 목록
FROM 테이블 별칭A
INNER JOIN 테이블 별칭B
ON 조인조건
[WHERE 검색조건]
DELIMITER $$
CREATE PROCEDURE 스토어드 프로시저 이름()
BEGIN SQL프로그래밍 코딩
END $$ -- 스토어드 프로시저 종료
DELIMITER;
CALL 스토어드 프로시저 이름() -- 스토어드 프로시저 실행
IF문
IF ~ ELSE문
조건이 참일때와 참이 아닐때 실행하는 문장이 다름
SELECT ~ INTO : 결과를 변수에 저장할때 사용
CASE문
다중 분기에 사용함
CASE
WHEN 조건1 THEN SQL문장1
WHEN 조건2 THEN SQL문장2
WHEN 조건3 THEN SQL문장3
ELSE SQL문장4
END CASE;
CASE-END와 INNER JOIN같이 써서 등급을 구함
WHILE문
조건문이 참인동안 <SQL문>을 반복한다
WHILE 조건식 DO
<SQL문>
END WHILE ;
ITERATE[레이블] : 지정한 레이블의 계속진행함 /CONTINUE와 비슷
LEAVE[레이블] : 지정한 레이블을 종료함 /BREAK와 비슷
동적SQL
내용변경이 필요할때 동적SQL문을 사용해서 변경함
PREPARE : SQL문을 미리 준비합(실행X)
EXECUTE : SQL문을 실해함
DEALLOCATE PREPARE: SQL문을 해제 함
기본형태
현재시간 이용해서 출입기록 SQL문 만들기