7-1 데이터 형식, 변수
1. 숫자데이터 형식
2. 문자 데이터 형식
CHAR은 고정이라 CHAR(100)을 잡고 3글자를 기입하면 97바이트가 낭비됨.
VARCHAR는 100을 잡고 3글자 기입하면 3바이트만 사용.
공간은 효율적으로 운영할 수 있지만 CHAR 형식으로 지정하는 것이 INSERT/UPDATE시에 일반적으로 좋은성능
기본적으로 둘다 UTF-8로 설정되어있음.
LONGTEXT, LONGBLOB
: 소설책 / 동영상 등 저장
3. 날짜 시간 데이터 형식
시간,분,초가 필요하면 DATETIME 날짜까지만이라면 DATE까지.
형변환 예시.
4. 기타 데이터 형식
5. 변수의 사용
쿼리를 준비해놓고, ? 자리에 myVar를 대입해서 실행 시킬 수 있음.
7-2장 데이터형 변환, 내장 함수
1. CAST, CONVERT
아래와 같이 int형인 price, amount를 가져와서 CHAR로 변환 후 CONCAT 시켜서 표현 가능
- 암시적 형변환
: CAST, CONVERT는 명시적 형변환이고, 이를 사용하지 않고 형변환이 되는 것을 말함
문자열을 더했는데, 300값이 반환되고
정수와 문자열을 concat하면 알아서 문자열로 변환되서 처리.
**DBMS마다 암시적 형변환의 결과가 다를 수 있음.
2. 내장함수
2-1 IF(수식, 참, 거짓)
2-2 IFNULL(수식1, 수식2)
2-3 NULLIF(수식1,수식2) : 수식1==수식2이면 NULL 반환, 다르면 수식1반환.
2-4 CASE ~ WHEN ~ ELSE ~ END
C언어의 switch case문과 비슷하네.
2-5 ASCII(아스키 코드), CHAR(숫자)
2-6 BIT_LENGTH , CHAR_LENGTH, LENGTH
BIT_LENGTH : 할당된 bit수
LENGTH : 할당된 Byte수
CHAR_LENGTH : 문자의 개수
한글은 내부적으로 글자 하나당 3Bytes를 할당받는다.
2-7 CONCAT(문자열1, 문자열2, ...), CONCAT_WS(구분자, 문자열1,문자열2)
CONCAT은 문자열 그대로 연결해주고,
CONCAT_WS는 구분자가 문자열 사이마다 들어감.
2.8 문자열 찾기
ELT(위치, 문자열1, 문자열2 , ... ) : 위치에 해당하는 문자열 반환
FIELD(찾을 문자열, 문자열1, 문자열2, ...) : 찾을 문자열이 몇번째 있는가
FIND_IN_SET(찾을문자열, 문자열리스트) : 찾을 문자열을 문자열 리스트에서 찾아 위치 반환
INSTR(기준 문자열, 부분 문자열) : 기준 문자열에서 부분 문자열을 찾아서 그 시작 위치를 반환
LOCATE()는 INSTR()과 동일하나, 파라미터 순서가 반대.
2.9 FORMAT(숫자, 소숫점 자릿수) :1000단위 콤마(,)와 소숫점 아래 자릿수까지 표현.
2.10 BIN(숫자), HEX(숫자), OCT(숫자) : 2, 10, 8진수 표현
2.11 INSERT(기준 문자열, 위치, 길이, 삽입할 문자열
2.12 LEFT(문자열, 길이), RIGHT(문자열, 길이) : 문자열에서 길이만큼 반환해줌
2.13 UPPER(문자열), LOWER(문자열) : 대소문자 변경
2.14 LPAD(문자열, 길이, 채울 문자열), RPAD(문자열, 길이, 채울 문자열);
문자열을 길이만큼 늘리고, 채울 문자열로 채워줌.
2.15 LTRIM(문자열), RTRIM(문자열) : 좌 / 우 공백제거
2.16 TRIM(문자열) :양쪽 공백 제거, TRIM(방향 자를_문자열 FROM 문자열)
각각 '이것이' / '재밌어요.' 반환
2.17 REPEAT(문자열, 횟수) : 문자열을 횟수만큼 반복
2.18 REPLACE(문자열, 원래문자열, 바꿀 문자열) 문자열에서 원래문자열을 찾아서 바꿀 문자열로 치환함
2.19 REVERSE(문자열) : 문자열 거꾸로 반환
2.20 SPACE(길이) : 길이만큼 공백 반환
2.21 SUBSTRING(문자열, 시작위치, 길이) or SUBSTRING( 문자열 FROM 시작위치 FOR 길이 )
시작위치부터 길이만큼 문자를 반환함
2.20 SUBSTRING_INDEX(문자열, 구분자, 횟수) : 문자열에서 구분자를 횟수만큼 찾고, 그 이후는 버림
횟수를 음수로 주면 뒤에서부터 찾고, 왼쪽을 버림
+ 수학함수
날짜 및 시간 함수
2.21 ADDDATE(날짜, 차이), SUBDATE(날짜, 차이) 날짜를 기준으로 차이를 더하거나 뺀 날짜를 구함
2.22 ADDTIME, SUBTIME
2.23 CURDATE(), CURTIME(), NOW(), SYSDATE()
2.24 YEAR(날짜) , MONTH(날짜), DAY(날짜)
2.25 DATE(), TIME() : 연-월-일 / 시:분:초 추출
2.26 DATEDIFF(날짜1, 날짜2), TIMEDIFF(날짜1 또는 시간1, 날짜2 또는 시간2) : 일수 차이 / 시간차이
2.27. DAYOFWEEK(날짜), MONTHNAME(), DAYOFYEAR(날짜) : 요일, 월이름, 일년중 며칠이 지났는지
2.28. LAST_DAY(날짜) : 주어진 날짜의 마지막 날짜를 구한다.
2.29. MAKEDATE(연도, 정수) : 연도에서 정수만큼 지난 날짜를 구함
2.30 PERIOD_ADD(연월, 개월수), PERIOD_DIFF(연월1, 연월2): 연월에서 N개월이 지난 연월을 구함
2.31. QUARTER(날짜) : 날짜가 4분기중 몇분기인지 구함
2.32. TIME_TO_SEC(시간) : 시간을 초단위로 구함
시스템 정보함수
2.33. USER(), DATABASE(): 현재 사용자 및 현재 선택된 테이터베이스
2.34. FOUND_ROWS() : 직전에 사용한 SELECT문에서 조회된 행의 개수를 구함
2.35. ROW_COUNT() : 직전에 사용한 INSERT, UPDATE, DELETE문에서 입력/수정/삭제된 행의 개수를 구함
CREATE, DROP문은 0을 반환, SELECT문은 -1을 반환
2.36 SLEEP() : 쿼리를 잠시 멈춤.
너무 많다. 필요할 때 구글링을 하자. 있다는것만 알고 넘어가자.
'Data Handling > MySQL' 카테고리의 다른 글
6장(SQL기본) (0) | 2022.02.11 |
---|---|
3장 - 4,5교시 정리 (0) | 2021.06.12 |
03장- 1/2/3 교시 내용 정리 (0) | 2021.06.01 |