데이터베이스 개인공부

MySQL - (임시)심화 저장 프로그램, 함수들

여파고 2024. 1. 22. 11:36

Stored Procedure(저장 프로시저)

Srored Function(저장 함수)

Cursor(커서)

Trigger(트리거)

 

 

 

SQL 변수 사용SET @ 변수이름 = 값; -- 변수의 선언 및 값 대입
SELECT @변수이름

 

 

 

 

 

buit-in function

제어 흐름 함수 : 프로그램의 흐름 제어

 

1-1 : if (수식, 참, 거짓) -> 삼항연산자 스타일

-- 1-1. if(수식, 참, 거짓)
select if(100>200, '참', '거짓');

거짓 출력.

 

ifnull (수식1, 수식2) : 수식1이 null이 아니면 수식1이 반환, 수식1이 null이면  수식2가 반환

select ifnull(null, 'nul이구나!'), ifnull(100, 'null이 아니네');

결과 : null이구나!, 100

 

 nullif (수식1, 수식2) : 수식1과 수식2가 같으면 null 반환, 다르면 수식1 반환

select nullif(100, 100), nullif(200,100);

결과 : null, 200

 

 

2. case ~when ~else ~end : case 연산자 다중분기에서 사용되는 함수와 함께 사용한다.

select case 10
when 1 then '일'
when 5 then '오'
when 10 then '십'
else '에라모르겠다'
end as 'case 연습';

결과 : 십

 

 

문자열 ascii(아스키코드), char(숫자)

select ascii('A'), char(65);

결과 : 65, BLOB(--->A)

 

 

bit_length(문자열)->비트길이, char_length(문자열)->문자길이, length(문자열)->바이트길이

select bit_length('abc'), char_length('abc'), length('abc');
select bit_length('가나다'), char_length('가나다'), length('가나다');

결과 : 24, 3, 3

결과 : 72, 3, 9

 

아 으렵네

 

concat(문자열1, 문자열2, ...), con_cat_ws(구분자, 문자열1, 문자열2)

select concat_ws('*', '2024', '02', '21');

결과 : 2024*02*21

 

 

elt(위치, 문자열1, 문자열2,...)  -> 원하는 위치의 문자열 반환!

select elt(2, '하나', '둘', '셋');

결과 : 둘

 

 field('찾을 문자열', 문자열1, 문자열2)  -> 찾을 문자열의 위치인덱스를 반환

select field('둘', '하나', '셋', '둘');

결과 : 3

 

locate('둘', '하나둘셋') -> 얘도 위치 찾기

select locate('둘', '하나둘셋');

결과 : 3

 

instr('하나둘셋', '둘') -> 몇번째위치에서 문자가 시작되는지!

select instr('하나둘셋', '둘');

결과 : 3

 

 bin(숫자), hex(숫자), oct(숫자) 2진수, 16진수, 8진수

select bin(30), hex(30), oct(30);

결과 : 11110, 1E, 36

 

insert('문자열', n, s, '삽입값') --> n번째 숫자부터 s개 지우고, 삽입값 집어넣어라

select insert('abcdefghi', 3, 4, '!!!!');

결과 : ac!!!!ghi

 

left(), right() : 왼쪽, 오른쪽 문자열의 길이만큼 반환

select left('abcdefghi', 3), right('abcdefghi', 3);

결과 : abc , ghi

 

 

lpad, rpad ('문자열', 몇자를 만들겠다, x방향부터이걸로 채우겠다)-> 문자열 채우기. 

select lpad('자바 백엔드 개발자', 15, '##');
select rpad('자바 백엔드 개발자', 15, '##');

결과 : #####자바 백엔드 개발자

결과 : 자바 백엔드 개발자#####

 

ltrim, rtrim, trim() : 공백 제거

select ltrim('    SQL 프로그래밍'),rtrim('SQL 프로그래밍    ');

결과 : SQL 프로그래밍, SQL 프로그래밍

 

 

trim->좌우공백 제거. trim(both'제거할녀석' from '문자열') -> 좌우의 제거할녀석을 제거해준다)

select trim('      안  녕   '), trim(both '^' from '^^ 재미있네요.^^');

결과 : 안  녕, 재미있네요.

 

 

repeat(문자열, 반복횟수) -> 반복

select repeat('SQL', 10);

결과 : SQL SQL SQL SQL SQL SQL SQL SQL SQL SQL

 

 

replace(문자열, 원래문자열, 바꿀문자열) -> 문자열 바꾸기

select replace('MySQL 문법 배우기', '문법', '저장 프로그램');

결과 : MySQL 저장 프로그램 배우기

 

 

반응형