전체 글 202

단일행 함수(single row function)

- nvl(인자1, 인자2): 값이 있으면 그대로 나오고 null이면 인자2 값을 집어넣음 SELECT first_name 이름, nvl(commission_pct, 0) 인센티브 FROM employees; --nvl(인자1, 인자2): 인자1과 인자2의 타입이 같아야됨 SELECT first_name 이름, nvl(to_char(commission_pct), '없어!') 인센티브 FROM employees; --to_char() -> 문자열로 바꿔줌 - LOWER, UPPER, INITCAP SELECT first_name 이름, last_name 성, salary*12 연봉 FROM employees WHERE LOWER(last_name)='king'; SELECT first_name 이름, la..

[오라클]/SELECT 2020.12.26

select

- 별명 사용 방법 SELECT first_name "사원 이름", salary "월 급여" FROM employees; SELECT first_name "사원이름", salary "12월급여" FROM employees; SELECT first_name "사원이름", salary 월급여12 FROM employees; 쌍따옴표 사용하면 별명에 공백, 숫자포함 가능(sql에서 유일하게 쌍따옴표 사용 가능함) - varchar2, char varchar2: 가변길이 문자열, 메모리는 절약, 상대적으로 속도는 느리다 char: 고정길이 문자열, 메모리는 낭비될수 있으나 상대적으로 속도는 빠르다 추후에 char(5), varchar2(5) 로 둘다 babo 집어넣으면 babo^, babo 라고해서 두개 비교하..

[오라클]/SELECT 2020.12.26

sequence, index

1) sequence CREATE SEQUENCE bisang_seq; SELECT bisang_seq.nextval FROM dual; --다음 시퀀스 보기 SELECT bisang_seq.currval FROM dual; --현재 시퀀스 보기 --조건 작성 CREATE SEQUENCE test_seq INCREMENT BY 1 --1씩 증가 START WITH 10 --10부터 시작 MAXVALUE 30000 --최대 30000까지 NOCYCLE --반복X, 30000 도달하면 끝, 이거 없으면 max 도달하고 다시 돔 NOCACHE; --기본값 20, 20까지 캐시메모리에 넣어놈 그래서 빠르게 추가가 가능하나 캐시메모리에 문제가 생길 경우 숫자가 어긋남 --게시판에서는 SELECT max(num)+..

[오라클]/SQL 2020.12.26

view

view: 일부 테이블 추출개념, 테이블 소스는 볼수 없고 문장만 볼수 있기때문에 보안성이 강함 - view 만들기: CREATE OR REPLACE VIEW view_12000 AS SELECT * FROM employees WHERE salary>12000; --view_12000가 없으면 생성, 있으면 수정 --view를 수정 가능하게 하기 위해 무조건 CREATE OR REPLACE 사용 Q) 부서별로 최소봉금, 최대봉급, 평균봉급 view만들기(출력은 부서명,min,max,avg) CREATE OR REPLACE VIEW salary_view AS SELECT department_id 부서명, min(salary) min, max(salary) max, avg(salary) avg FROM em..

[오라클]/SQL 2020.12.26

제약조건

constraint: 무결성을 위해 - 종류: pk,fk,not null, unique,check - 제약조건 방식 2가지 1) column level 방식: 칼럼명에 이어서 2) table level 방식: 제약조건을 마지막에 모아서 제약조건 중 not null 은 무조건 column level 방식 - 사용법: constraint 제약조건이름(테이블명_칼럼명_제약조건약어) 제약조건종류 (이름이 있어야지 나중에 dictionary에서 찾을 수 있음) - column level 방식 CREATE TABLE memtable ( memname VARCHAR2(20) CONSTRAINT memtable_memname_pk PRIMARY KEY, memtel VARCHAR2(20) CONSTRAINT memta..

[오라클]/SQL 2020.12.26

decode

decode: 다항연산자(대상 칼럼, 조건, yes처리, no처리) Q) 사원 직책에 따라 급여를 인상 지급하고자 한다. 직책에 'Manager'가 포함된 사원은 급여를 인상하여 1.1를 지급하고 나머지 직원들에 대해서는 1.5를 지급하고자 한다. 이 경우 이름, 직책, 인상된 급여를 조회 출력하시오 SELECT e.first_name 이름, j.job_title 직책, e.salary 급여, decode(substr(j.job_title,-7),'Manager',e.salary*1.1,e.salary*1.5) 인상된급여 FROM jobs j, employees e WHERE e.job_id=j.job_id; --substr(j.job_title,-7) : 뒤에서부터 7글자 조건을 계속 추가할 수 있음 ..

[오라클]/SQL 2020.12.26

dictionary

dictionary : 테이블,뷰 등의 정보를 볼수 있음 SELECT * FROM dictionary; --USER_ ... 소유권이 사용자(me)인 객체 정보가 들어있다 --ALL_ owner system: all 접두사가 있으면 사용자가 접근 가능 --DBA_ : dba 권한을 소유한 자만이 접근 가능 --V$ : 모든 정보를 다 가지고 있음 SELECT * FROM dictionary WHERE table_name LIKE 'USER_%'; SELECT * FROM user_objects WHERE object_type = 'TABLE'; --내가 만든건 보통 USER_ -- WHERE 조건에서 검색할땐 무조건 대문자로 쓰기

[오라클]/SQL 2020.12.26

SAVEPOINT

savepoint를 통해 해당 상태를 기억해놨다가 rollback to 명령어를 통해 해당 savepoint로 돌아갈 수 있음 SELECT * FROM teltable; INSERT INTO teltable VALUES(999, '손흥민', '010-7777-7777', sysdate); SAVEPOINT point1; INSERT INTO teltable VALUES(777, '메시', '010-1010-1010', sysdate); SAVEPOINT point2; UPDATE teltable SET NAME='박찬호' WHERE id=2; SAVEPOINT point3; INSERT INTO teltable VALUES(888, '호날두', '010-1010-1010', sysdate); ROLLBA..

[오라클]/SQL 2020.12.26

유저 생성 및 권한

--유저 생성 CREATE USER babo IDENTIFIED BY ondal; --로그인 권한 주기, 이거 해야지 로그인 할 수 있음 GRANT CREATE SESSION TO babo; CREATE USER hong IDENTIFIED BY gildong; GRANT CREATE SESSION TO hong; CREATE USER sung IDENTIFIED BY chunhyang; GRANT CREATE SESSION TO sung; --테이블,뷰,시퀀스 생성 권한 주기 GRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO babo; --권한 취소 하기 REVOKE CREATE VIEW FROM babo; --teltable SELECT, INSERT 권한 ..

[오라클]/SQL 2020.12.26