DBMS/SQL

    [SQL]DCL - GRANT, REVOKE

    1. USER 생성하기 1 2 CREATE USER demo // 계정명 IDENTIFIED BY demo; // 패스워드 cs 원격 접속용 계정 CREATE USER 'name'@'ip' IDENTIFIED BY 'password'; cs 해당 계정에 필요한 권한을 준다. //데이터베이스의 모든 권한을 부여 GRANT ALL PRIVILEGES ON *.* TO 'name'@ip'; cs 2. GRANT 계정의 필요한 권한과 Role의 목록을 작성한다. TO 절에는 권한을 부여할 계정의 목록을 작성한다. 1 2 GRANT create session, create table, create sequence, create view TO demo; cs 3. REVOKE 필요 없어진 권한은 바로바로 회수하는 ..

    [SQL] 일반함수 IFNULL, NULLIF, COALESCE

    1. IFNULL 칼럼의 값이 NULL이 아닌 경우 그대로 출력하지만 칼럼의 값이 NULL인 경우 지정된 대체값으로 대체하여 출력 1 2 SELECT employee_id,IFNULL(department_id, '소속 부서 없음')department_id FROM employees cs 2. NULLIF 인자 값 두 개를 비교하여 동일한 값인 경우 NULL값 출력, 다른 값인 경우 첫 번째 인자값 출력 NULLIF(값 1, 값 2) 1 2 3 4 SELECT first_name, LENGTH(first_name) "expr1", last_name, LENGTH(last_name) "expr2", NULLIF(LENGTH(first_name), LENGTH(last_name)) RESULT FROM emp..

    [SQL] 변환함수 DATE_FORMAT

    변환함수 날짜, 문자, 숫자 데이터타입간 변환을 할 수 있는 함수 Oracle의 TO_CHAR 함수를 MySQL의 DATE_FORMAT으로 대응되는 포맷 결과 Oracle MySQL 연도(4자리) YYYY %Y 연도(2자리) YY %y 월(1~12) MM %m 월(Jan~Dec) MON %b 월(January~December) MONTH %M 일(1~31) DD %d 일(Sun~Sat) DY %a 시간(0~23) HH24 %H 시간(1~12) HH 또는 HH12 %h 분(0~59) MI %i 초(0~59) SS %s DATE_FORMAT DATE_FORMAT(날짜데이터, '형식문자') 1 2 3 SELECT employee_id, DATE_FORMAT(hire_date, '%m/%y') Month_Hir..

    [SQL] 날짜함수 2. DATEDIFF, TIMESTAMPDIFF, LAST_DAY

    1. DATEDIFF 단순히 일 차이를 계산 1 2 SELECT DATEDIFF('95-09-01', '94-01-11') FROM DUAL; cs 2. TIMESTAMPDIFF 지정된 범위 및 간격을 계산 1 2 SELECT TIMESTAMPDIFF(MONTH, '95-09-01', '94-01-11') FROM DUAL; cs 3. LAST_DAY 입력한 날짜가 속한 월의 마지막 날을 출력 1 2 SELECT LAST_DAY('95-02-01') FROM DUAL; cs

    [SQL] 날짜함수 1. SYSDATE, DATE_ADD, DATE_SUB

    시간을 의미하는 단위 SECOND(초) / MINUTE(분) / HOUR(시) / DAY(일) / MONTH(월) / YEAR(연) WEEK(주) / QUARTER(분기) / 1. SYSDATE 현재 DB서버의 시간데이터를 출력하는 함수 1 2 SELECT SYSDATE() FROM DUAL; cs 시간계산 INTERVAL : 범위 및 간격을 의미합니다 DATE_ADD : 기준 날짜에 입력된 기간만큼을 더하기 DATE_SUB : 기준 날짜에 입력된 기간만큼을 빼기 2. DATE_ADD 1 2 SELECT DATE_ADD(SYSDATE(), INTERVAL 1 DAY) FROM DUAL; cs 3.DATEDIFF 1 2 SELECT DATE_SUB(SYSDATE(), INTERVAL 1 DAY) FROM ..

    [SQL] 숫자함수 ROUND, TRUNC , MOD

    ROUND|TRUNC ROUND|TRUNC(대상숫자, 연산자리값) 연산할 자리값 찾기 소수점의 자리값이 0으로 기준이 된다. 양수의 자리값은 소수점 아래 음수의 자리값은 소숫점 위 정수 부분을 연산 1. ROUND 반올림 연산 1 2 SELECT ROUND(45.926, 2) FROM DUAL; cs 2. TRUNC , TRUNCATE 버림 연산 MySQL : TRUNCATE 1 2 SELECT TRUNCATE(45.926, 2) FROM DUAL; cs 오라클 : TRUNC 1 2 SELECT TRUNC(45.926, 2) FROM DUAL; cs 3. MOD 나머지 연산 1 2 SELECT MOD(1600, 300) FROM DUAL; cs

    [SQL] 문자함수 2. INSTR, LPAD|RPAD, REPLACE, TRIM

    1. INSTR 문자열에서 특정 부분문자열의 자리값을 찾는 함수 MySQL 문법 INSTR('전체문자열', '부분문자열') 1 2 SELECT INSTR('HelloWorld', 'o') FROM DUAL; cs 오라클 문법 INSTR('전체문자열', '부분문자열'[, 찾기 시작할 자리값, 몇 번째로 오는 값을 찾는가]) 1 2 SELECT INSTR('HelloWorld', 'o', 1, 2) FROM dual; cs 2. LPAD|RPAD 여백문자를 활용하여 출력값을 일관된 길이로 출력해주는 함수 1 2 SELECT LPAD(salary, 10, ' '), RPAD(salary, 10, '*') FROM employees; cs 3. REPLACE 문자열의 일부를 다른 문자로 치환 연산한 결과를 돌려..

    [SQL] 문자함수 1. LOWER, UPPER, INITCAP , CONCAT , SUBSTR, LENGTH

    1. 대소문자 변환함수 LOWER : 소문자로 변환 UPPER : 대문자로 변환 1 2 SELECT 'SQL Course', LOWER('SQL Course'), UPPER('SQL Course') FROM DUAL; cs 1-1. INITCAP 각 단어의 첫 글자를 대문자로 나머지는 소문자로 변환 오라클에서만 지원하고 MySQL에서는 지원하지 않음 1 2 SELECT 'SQL Course', LOWER('SQL Course'), UPPER('SQL Course'), INITCAP('SQL Course') FROM dual; cs 2. 문자조작함수 2-1. CONCAT 입력받은 문자열 두 개를 하나로 합친 결과를 출력한다 1 2 SELECT CONCAT('Hello', 'world') FROM dual;..

    [SQL] 함수 - 그룹 함수(AVG,SUM,MIN,MAX,COUNT)

    그룹 함수 1. 그룹 단위로 연산 결과를 출력하는 함수 2. 주로 통계 관련 연산을 하는 함수들이다. 3. 그룹 함수 연산 시 NULL값은 제외한 결과를 출력한다. 숫자 관련 그룹 함수 AVG([ALL|DISTINCT] n) : 평균 SUM([ALL|DISTINCT] n) : 합계 STDDEV([ALL|DISTINCT] n) : 표준편차 VARIANCE([ALL|DISTINCT] n) : 분산 1 2 SELECT ROUND(AVG(salary)), SUM(salary), ROUND(STDDEV(salary)), ROUND(VARIANCE(salary)) FROM employees; cs 일반 그룹 함수 MIN([ALL|DISTINCT] expr) : 최소값 MAX([ALL|DISTINCT] expr) :..