24.05.02 54일차
VIEW
일종의 가상테이블로 보안이나 복잡한 쿼리를 단순하게 사용하도록 설정 가능
생성 : CREATE [OR REPLACE] VIEW 뷰명 AS
SELECT ...
* OR REPLACE를 사용하면 기존 VIEW가 있더라도 REPLACE 시키기 때문에 주의해서 사용해야한다
삭제 : DROP VIEW 뷰명
customers 테이블과 orders 테이블을 가상의 테이블 customer_order로 생성

사원번호, 사원이름은 e1 테이블, 상사의사번, 상사이름은 e2테이블

숫자 관련 함수
| 함수명 | 설명 |
| abs (n) | n의 절대값 출력 |
| ceiling (n) or ceil (n) | n의 절상값 (크거나 같은 최대 점수) |
floor (n) |
n의 절삭값 (작거나 같은 최대 점수) |
| round (n,p) | p가 양수이면 소숫점이하, 음수이면 소수점 이상에서 반올림 |
| truncate (n,p) | p의 자리에서 버림 |
| pow (x,y) or power (x,y) | x의 y승 |
| mod (x,y) | x를 y로 나눈 나머지 |
| greatest (n1, n2, n3, ...) | 가장 큰수 |
| least (n1, n2, n3, ...) | 가장 작은수 |
- p가 3(양수)이기 때문에 소수점 뒤에서 3번째인 4에서 반올림 계산
- p가 -3(음수)이기 때문에 소수점 이상 3번째인 3에서 반올림 계산
- p가 0이기 때문에 소수점 제거


문자 관련 함수
| 함수명 | 설명 |
| ascII(str) | str의 아스키 코드값 |
| concat(str1, str2, str3, …) | 문자열 연결 |
| insert(str, start, length, newStr) | str문자열에서 start에서 length길이 만큼의 문자열을 new Str 로 바꿈. select insert ('abcdef ', 2, 1, '1234567' ); → a1234567cdef |
| replace(str, oldStr, newStr) | str에서 oldStr의 문자열을 newStr로 수정 select replace ('abcdef', 'bc', '123'); → a123def |
| instr(str, findStr) | str에서 findStr을 찾아 위치 반환 select instr ('abcdef', 'cd'); → 3 |
| left(str, length) | str에서 왼쪽부터 length 만큼 추출 select left ('abcdef', 3); → abc |
| right(str, length) | str에서 오른쪽부터 length 만큼 추출 select right ('abcdef', 3); → def |
| mid(str, start, length) or substring(str, start, length) | str에서 start위치에서 length 만큼 추출 select mid ('abcdef', 2,3), substring ('abcdef', 2,3); → defdef |
| ltrim(str), rtrim(str), trim(str) | 공백 제거 |
| lcase(str) or lower(str) | 모두 소문자로 |
| ucase(str) or upper(str) | 모두 대문자로 |
| reverse(str) | str을 반대로 나열 |
| format(숫자, 소수점 자리수) | 천단위 소숫점 표시 select format (1234567.12345,3); → 1,234,567.123 |

논리 함수
| 함수명 | 설명 |
| if (논리식, 참일때, 거짓일때) | select if (10<4, 't', 'f'); → f |
| ifnull(v1, v2) | v1이 null 이면 v2를 반환, 아니면 v1를 반환 select ifnull (null, '1' ); → 1 select ifnull ('a ', ' 1' ); → a |

집계 함수
| 함수명 | 설명 |
| count(fn) | null값이 아닌 row갯수 |
| sum(fn) | 합계 |
| avg(fn) | 평균 |
| max(fn) | 최대값 |
| min(fn) | 최소값 |

날짜 함수
| 함수명 | 설명 |
| now() or sysdate() or current_timestamp() | 년월일 시분초 |
| curdate() ro current_date() or date(날짜) | 년월일 |
| curtime() or current_time( ) or time(날짜) | 시분초 |
| date_add(날짜, interval 기준값) | 날짜를 더함. |
| date_sub(날짜, interval 기준값) | 날짜를 뺌 |
| year(날짜), month(날짜), dayofmonth(날짜) | select year(now()), month(now()), dayofmonth(now()); → 2021 1 1 |
| monthname(날짜), dayname(날짜) | |
| dayofweek(날짜), weekday(날짜) | weekday → 0:월요일, dayofweek → 1:일요일 |
| dayofyear(날짜) | 일년중 오늘이 몇일째날 |
| week(날짜) | 몇번째 주 |
| date_format(날짜, 형식) |

저장형 프로세스
종류 : function과 procedure
데이터베이스 내부에 저장되어 서버가 재 시박되어도 필요할 때 반복적으로 호출하여 사용 가능
- 하나의 문장을 ;로 종료
- 대소문자 구분 X
- 일반적인 SQL 문법 사용
- 제어구조와 반복구조를 갖고있다
Function



concat : 문자열 연결



Procedure
일반 변수의 값을 대입할 때는 set 필요
Hot Line이 연결되면 한쪽의 값이 바뀌면 다른 한쪽도 바뀐다

| [MySQL] (0) | 2024.05.13 |
|---|---|
| [MySQL]Case | Loop&While | Cursor | Trigger | Backup & Restore (0) | 2024.05.03 |
| [MySQL] Join의 종류 | sub query (0) | 2024.05.01 |
| [MySQL] DBeaver | Insert | Update | Delete (0) | 2024.04.30 |
| [MySQL] 다운로드 | 서버초기화 | 명령어 | 암호변경 | 사용자생성 | 권한부여 | 경로지정 | TABLE | 기본구조 | 실습 (0) | 2024.04.29 |