[8주차] MySQL심화

이맑음·2024년 1월 22일

Java 수업 필기

목록 보기
8/15

MySQL 데이터 형식

  1. 숫자(정수, 실수 등의 숫자를 표현)
    1. SMALLINT(2)
    2. INT/INTEGER(4)
    3. BIGINT(8)
    4. FLOAT(4) : 소수점아래 7자리까지 표현
    5. DOUBLE(8) : 15자리까지 표현
    6. DECIMAL(m, d) : m = 전체자리수, d = 소수점이하 자리수
  2. 문자
    1. CHAR(n), CHAR(1), CHARACTER : 고정길이
    2. VARCHAR(1~65535) : 가변길이
    3. TEXT 형식 : TEXT 데이터 값
      TINYTEXT (1~255)
      TEXT (1~65535)
      LONGTEXT (~4GB)
    4. ENUM() : 열거형 데이터 값
      ex) 월, 화, 수 ...
    5. BLOB 형식 : 사진, 동영상 파일, 대용량의 글자를 저장하기 위한 데이터 타입
    6. SET
  3. 날짜/시간
    1. DATE(3) : YYYY-MM-DD 형식
    2. DATETIME(8) : YYYY-MM-DD HH:MM:SS
  4. 지도/JSON
    1. GEOMETRY : 공간데이터 형식으로 선, 점, 다각형같은 공간개체를 저장, 조작
    2. JSON(JavaScriptObjectNotation) :
      ex) { id : 'John', name : 'John Kim'}

SQL 변수

-- 지역변수 같이 사용
SET @변수이름 =;
SELECT @변수;

prepare prepared_stmt
from 'insert into employee values(?,?,?)';
set @name = 'Ruby';
set @sal = 9000;
set @loc = 'jeju';
execute prepared_stmt using @name, @sal, @loc;

built-in function

  • 제어 흐름 함수 : 프로그램의 흐름 제어
  1. IF(수식, 참, 거짓)
    1. SELECT If(100>200, '참', '거짓');
    2. IFNULL(수식1, 수식2) : 수식1이 null이 아니면 수식1 반환, null이면 수식2 반환
    3. NULLIf(수식1, 수식2) : 수식1과 수식2가 같으면 null 반환, 다르면 수식1 반환
  2. CASE ~WHEN ~ELSE ~END : CASE 연산자 다중분기에서 사용되는 함수와 함께 사용
select case 10
when 1 then 'one'
when 10 then 'ten'
else 'case else' --> else 지정
end as 'case ex'; --> 컬럼명 지정
  1. 문자열 ASCII(아스키코드), CHAR(숫자)
select ASCII('A'), CHAR(65);
  1. BIT_LENGTH(문자열), CHAR_LENGTH(문자열), LENGTH(문자열)
  • MYSQL은 UTF-8 코드 이므로 영문자 1 = 1byte, 한글 1 = 3byte
  1. CONCAT(문자열1, 문자열2, ...), CONCAT_WS(구분자, 문자열1, 문자열2)
select concat_ws('/','2024','1','22'); --> 2024/1/22
  1. ELT(위치, 문자열1, 문자열2, ...)
select elt(2,'하나','둘','셋'); --> 둘
  1. FIELD('찾을 문자열',문자열1, 문자열2,...) : 찾는 문자열의 인덱스 반환
select field('two','one','three','two'); --> 3
  1. FIND_IN_SET('찾을 문자열', 문자열 리스트)
  2. INSTR(문자열 리스트, 찾을 문자열)
select instr('onetwothreee', 'two'); --> 4
  1. LOCATE(찾을 문자열, 문자열 리스트) = POSITION()
select instr('two', 'onetwothreee'); --> 4
  1. FORMAT(숫자, 소수점 자리수)
select format(12345.1234567, 4); --> 12345.1234
  1. BIN(숫자), HEX(숫자), OCT(숫자) : 2진수, 16진수, 8진수 반환
  2. INSERT(문자열, 삭제 시작할 인덱스, 지울 인덱스 개수, 삽입할 문자열)
select insert('abcdefghi',3,4,'!!!'); --> ab!!!ghi
  1. LEFT(문자열, 인덱스), RIGHT(문자열, 인덱스) : 왼쪽, 오른쪽 문자열의 길이만큼 반환
select left('abcdefghi',3), right('abcdefghi',3); --> abc, ghi
  1. UPPER(문자열), LOWER(문자열) : 모두 대문자로, 모두 소문자로 변환
  2. LPAD(), RPAD()
select lpad('java backend developer', 30, '#'); --> ########java backend developer
  1. LTRIM(), RTRIM(), TRIM() : 왼쪽 공백, 오른쪽 공백, 양쪽 공백을 제거
  • BOTH : 양쪽
  • LEADING : 앞
  • TRAILING : 뒤
select trim('    hi    '), trim(both '^' from '^^ happy.^^'); --> hi, happy.
  1. REPEAT(문자열, 횟수)
  2. REPLACE(문자열, 원래 문자열, 변경할 문자열)

0개의 댓글