Data Handling/MySQL

7장 SQL 고급(1장 , 2장)

아네스 2022. 2. 23. 12:50
반응형

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(숫자)

65반환 , 'B' 반환

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