29일차 - SQL(7)

HA_·2025년 2월 13일
0

7장. 데이터 생성, 조작과 변환

7.1 문자열 데이터 처리

char

  • 고정 길이 문자열 자료형
  • 지정한 크기보다 문자열이 작으면 나머지 공간을 공백으로 채움
  • MySQL: 255글자

varchar

  • 가변 길이 문자열 자료형
  • 크기만큼 데이터가 들어오지 않으면 그 크기에 맞춰 공간 할당
  • 헤더에 길이 정보가 포함
  • MySQL 최대 65,536 글자 허용

text

  • 매우 큰 가변 길이 문자열 저장
  • MySQL: 최대 4 기가바이트 크기 문서 저장
  • clob: 오라클 데이터베이스

테이블 생성

문자열 데이터를 테이블에 추가

  • 문자열의 길이가 해당 열의 최대 크기를 초과하면 예외 발생

varchar 문자열 처리

  • update문으로 vchar_fld열 (varchar(30))에 설정 길이보다 더 긴 문자열 저장
  • MySQL 6.0 이전 버전: 문자열을 최대 크기로 자르고 경고 발생
  • MySQL 6.0 이후 기본 모드는 strict 모드로 예외 발생됨


작은 따옴표 포함

  • 문자열 내부에 작은 따옴표를 포함하는 경우 (I’m, doesn’t 등 )
  • escape 문자 추가 방법
    • 작은 따옴표를 하나 더 추가

    • 백슬래시(‘\’) 문자 추가

작은 따옴표 포함

  • quote() 내장 함수
  • 전체 문자열을 따옴표로 묶고, 문자열 내부의 작은 따옴표에 escape문자를 추가

7.1.2 문자열 조작

length() 함수: 문자열의 개수를 반환


• char열의 길이: 빈 공간을 공백으로 채우지만, 조회할 때 char데이터에서 공백 제거

position() 함수

locate(‘문자열’, 열이름, 시작위치) 함수

  • 시작 위치부터 문자열 검색: 처음 발견되는 인덱스 리턴

strcmp(‘문자열1’, ‘문자열2’) 함수: 문자열 비교

  • 대소문자 구분 안함
    • if 문자열1 < 문자열2, -1 반환: 정렬 순서에서 문자열1이 문자열2의 앞에 오는 경우
    • if 문자열1 == 문자열2, 0 반환: 문자열이 동일
    • if 문자열1 > 문자열2, 1 반환: 문자열1이 문자열2의 뒤에 오는 경우
  • stringtbl 삭제 후 새로운 데이터 추가
    ![](https://velog.velcdn.com/images/ha
    /post/1b5e3fb8-39ad-4a34-ab5b-6ebacace9f1c/image.png)

strcmp() 예제

  • 5개의 서로 다른 문자열 비교

SELECT 절에 LIKE 연산자나 REGEXP 연산자를 사용

• 0 또는 1의 값을 반환
-'y$' : name 칼럼의 값이 'y'로 끝나면 1을 반환

string_tbl 리셋

concat(): 문자열 추가 함수

  • concat() 함수를 사용하여 stringtbl의 text_fld열에 저장된 문자열 수정
    • 기존 text_fld의 문자열에 ', but now it is longer’ 문자열 추가
    ![](https://velog.velcdn.com/images/ha
    /post/15b4771e-7ca2-4fc1-a5c4-5f5dfc9dd14a/image.png)

concat() 함수 활용

  • 각 데이터 조각을 합쳐서 하나의 문자열 생성
    • concat() 함수 내부에서 date(createdate)를 문자열로 변환
    ![](https://velog.velcdn.com/images/ha
    /post/629f79c3-431d-4a83-ba5f-d31a1b04ebc8/image.png)

insert() 함수

  • 4개의 인수로 구성
  • insert(문자열, 시작위치, 길이, 새로운 문자열)
    • 세 번째 인수값(길이)=0: 새로운 문자열이 삽입

    • 세 번째 인수값 > 0: 해당 문자열로 교체

replace() 함수

  • replace(문자열, 기존문자열, 새로운 문자열)
  • 기존 문자열을 찾아서 새로운 문자열로 교체

substr() 또는 substring() 함수

  • substr(문자열, 시작위치, 개수)
  • 문자열에서 시작 위치에서 개수만큼 추출

7.2 숫자 데이터 처리

산술 함수

숫자 자릿수 관리

  • ceil() 함수: 가장 가까운 정수로 올림
    • ceil(72.445) = 73

  • floor() 함수: 가장 가까운 정수로 내림
    • floor(72.445) = 72

  • round() 함수: 반올림
    • 소수점 자리를 정할 수 있음
    • round(72.0909, 1) = 72.1
    • round(72.0909, 2) = 72.09

  • truncate(숫자, 자릿수) 함수: 자릿수 아래를 버림
    • truncate(72.0956, 1) = 72.0
    • truncate(72.0956, 2) = 72.09
    • truncate(72.0956, 3) = 72.095

sign()함수

  • 값이 음수이면 -1, 0이면 0, 양수이면 1을 반환

7.3 시간 데이터 처리

시간대(time zone)처리

  • 24개의 가상 영역으로 분할
  • 협정 세계표준시(UTC: Universal Time Coordinated) 사용
  • utc_timestamp() 함수 제공

시간 데이터 생성 방법

  • 기존 date, datetime 또는 time 열에서 데이터 복사
  • date, datetime 또는 time을 반환하는 내장 함수 실행
  • 서버에서 확인된 시간 데이터를 문자열로 표현

시간 데이터의 문자열 표시

  • datetime 기본 형식: YYYY-MM-DD HH:MI:SS
  • datetime 열을 2022년 8월 1일 오전 09:30 으로 표현
    • ‘2022-08-01 09:30:00’ 의 문자열로 구성
  • MySQL 서버의 시간 데이터 처리
    • datetime 형식으로 표현된 문자열에서 6개의 구성요소를 분리해서 문자열을 변환
  • cast() 함수
    - 지정한 값을 다른 데이터 타입으로 변환
    - cast() 함수를 이용해서 datetime값을 반환하는 쿼리 생성

cast() 함수

  • date 값과 time 값을 생성

MySQL의 문자열을 이용한 datetime 처리

  • MySQL은 날짜 구분 기호에 관대
    • 2019년 9월 17일 오후 3시 30분에 대한 유효한 표현 방식

날짜 생성 함수

  • strto_date(str, format)
    • 형식 문자열의 내용에 따라 datetime, date 또는 time값을 반환
    • cast() 함수를 사용하기에 적절한 형식이 아닌 경우 사용
    • ‘September 17, 2019’ 문자열을 date 형식으로 변환- str(문자열)의 형식에 맞춰 format을 설정
    ![](https://velog.velcdn.com/images/ha
    /post/e07c0865-0f75-4692-a719-69908276c30f/image.png)
  • %M: 월 이름 (January ~ December)
  • %d: 숫자로 나타낸 월(01 ~ 12)
  • %Y: 연도, 4자리 숫자

날짜 형식의 구성 요소: format

str_to_date(str, format) 예제

  • 날짜 정보가 슬래쉬(‘/’)로 구분되어 있음

  • 일, 월, 연도로 표시된 문자열을 날짜로 변환

  • 시간 문자열을 time값으로 변환

현재 날짜/시간 생성

  • 내장 함수가 시스템 시계를 확인해서 현재 날짜 및 시간을 문자열로 반환
  • CURRENTDATE(), CURRENT_TIME(), CURRENT_TIMESTAMP()
    ![](https://velog.velcdn.com/images/ha
    /post/f5e070f7-3c20-4bea-85ea-bf324ed24316/image.png)

날짜를 반환하는 시간 함수

  • dateadd()
    • 지정한 날짜에 일정 기간(일, 월, 년 등)을 더해서 다른 날짜를 생성
    ![](https://velog.velcdn.com/images/ha
    /post/80be3d3b-6215-4dce-b146-029d3220efd1/image.png)

기간 자료형

날짜를 반환하는 시간 함수

문자열을 반환하는 시간 함수

  • dayname(date) 함수
    • 해당 날짜의 영어 요일 이름을 반환

문자열을 반환하는 시간 함수

  • extract() 함수
    • date의 구성 요소 중 일부를 추출
    • 기간 자료형으로 원하는 날짜 요소를 정의

숫자를 반환하는 시간 함수

  • datediff(date1, date2) 함수
    • 두 날짜 사이의 기간(년, 주, 일)을 계산
    • 시간 정보는 무시

변환 함수

  • cast() 함수
    • 데이터를 한 유형에서 다른 유형으로 변환할 때 사용
    • cast(데이터 as 타입)

7.1

7.1

0개의 댓글