안녕
-
VIEW(뷰), SYNONYM(시노님)프로그래밍/DBMS 2021. 8. 17.
SYNONYM (시노님) 사용자가(지금 사용중인 user 계정) 다른 사용자의 테이블이나 객체를 참조하는 방법. 일반 유저들은 권한이 없으니 먼저 관리자 계정에서 권한을 줘야 한다. 윈도우 키 + R > cmd > cmd창 띄우기 명령어 입력 : sqlplus / as sysdba 이후에 GRANT CREATE SYNONYM TO sky -- 시노님 만들기 위한 권한 부여 GRANT SELECT ON employees TO sky; -- 시노님을 sky계정에서 보기 위한 권한 부여 GRANT CREATE VIEW TO sky; -- VIEW를 만들기 위한 권한 부여 명령어 입력 권한이 잘 들어갔는지 확인 해보기위해 본인이 사용중인 계정 (저는 sky)가서 입력 SELECT * FROM user_sys_p..
-
서브쿼리 Subquery프로그래밍/DBMS 2021. 8. 16.
WITH 서브 쿼리 WITH tmp AS ( SELECT b.bCode, bName, bPrice, b.pNum, pName, sDate, s.cNum, cName, qty, bPrice * qty amt FROM book b JOIN pub p ON b.pNum = p.pNum JOIN dsale d ON b.bCode = d.bCode JOIN sale s ON d.sNum = s.sNum JOIN cus c ON s.cNum = c.cNum ) SELECT bCode, bName, SUM(amt) FROM tmp GROUP BY bCode, bName; 단일 행 서브쿼리 SELECT empNo, sal FROM emp WHERE sal < (SELECT AVG(sal) FROM emp); 다중 행 ..
-
JOIN (INNER JOIN / OUTER JOIN)프로그래밍/DBMS 2021. 8. 13.
JOIN - 둘 이상의 테이블의 행을 결합 자주 쓰이는 종류는 INNER, OUTER 이너와 아우터 이다. 실습 테이블 미리 추가해 두자 명령어 : @c:\db\book.sql INNER JOIN 이너 조인 종류 : EQUI JOIN / NATURAL JOIN / CROSS JOIN / SELF JOIN / NON-EQUI JOIN 네츄럴 크로스 셀프는 다루지 잘 안쓰인다. 많이 쓰이는데 EQUI JOIN이다. EQUI JOIN : 조인 대상 테이블의 컬럼 값들이 서로 정확하게 일치하는 경우에 사용 WHERE 절에 = 부등호를 이용한다. SELECT b.bCode, bName, bPrice, b.pNum, pName, sDate, s.cNum, cName, qty, bPrice * qty amt FROM..
-
제약 조건 / PRIMARY KEY / FOREIGN KEY프로그래밍/DBMS 2021. 8. 12.
PRIMARY KEY 1. 테이블당 한개만 만들 수 있음 2. 두개 이상의 컬럼을 조합해서 하나의 기본키를 가질 수 있다. 3. 중복값 안되고 NULL 안되고 테이블 생성하면서 같이 만들기 CREATE TABLE test1 ( id VARCHAR2(30) PRIMARY KEY, pwd VARCHAR2(30) NOT NULL, name VARCHAR2(30) NOT NULL, birth DATE ); 제약 조건을 줬으면 확인도 할 줄 알아야 한다. SELECT * FROM user_constraints WHERE table_name = 'TEST1'; -- 존재 유무 확인 및 P키가 있는 제약 조건 이름 확인 SELECT * FROM user_cons_columns WHERE table_name = 'TE..
-
테이블(2) 데이터 조작 (추가, 수정, 삭제)프로그래밍/DBMS 2021. 8. 11.
TRUNCATE 모든 데이터를 삭제한다. (구조는 삭제 안됨) TRUNCATE TABLE emp1; emp1은 테이블 이름이다. INSERT INSERT 후 COMMIT 또는 ROLLBACK으로 트랜잭션을 완료 해야 한다. COMMIT : 트랜잭션 완료 ROLLBACK : 트랜잭션 취소 그러나 데이터 조작언어를 실행 후 DDL(CREATE, ALTER, DROP) 명령을 실행하면 자동 COMMIT 된다. VS Code : 자동으로 커밋 COMMIT 되지 않도록 설정 SET AUTOCOMMIT OFF; 이제 실험을 위해 테이블 하나를 만들어 준다. CREATE TABLE test1( num NUMBER PRIMARY KEY, name VARCHAR2(30) NOT NULL, birth DATE NOT NU..
-
테이블 생성 / 수정 / 삭제 / DDL프로그래밍/DBMS 2021. 8. 9.
DDL = Data Definition Language 데이터 정의 언어 * CREATE * DROP * ALTER * TRUNCATE 컬럼명 컬럼타입 폭 제약조건 NULL num NUMBER 10 PK x name VARCHAR2 30 x birth DATE city VARCHAR2 30 테이블을 만들기 위한 기본적인 구성을 먼저 만들어 준다. (VARCHAR2보다 더 대용량을 요구한다면 CLOB사용) CLOB는 (30) 이런식으로 크기를 지정할 필요 없음 그냥 CLOB 만 쓰면 됨 이걸 코드로 옮기면 CREATE TABLE test ( num NUMBER(10) PRIMARY KEY, name VARCHAR2(30) NOT NULL, birth DATE, city VARCHAR2(30) ); 이러면 ..
-
SELECT(4) 날짜 관련 함수프로그래밍/DBMS 2021. 8. 9.
ALTER SESSION SET NLS_LANGUAGE = 'KOREAN'; ALTER SESSION SET NLS_CURRENCY = '₩'; ALTER SESSION SET NLS_DATE_LANGUAGE = 'KOREAN'; ALTER SESSION SET NLS_DATE_FORMAT='YYYY-MM-DD'; --미국식을 한국식으로 바꾸기 시작하기 앞서 오라클이나 VSCode의 날짜 형식이 미국식이나 다른 나라의 형식이라면 한국식으로 바꾸어 줘야 한다. 날짜 함수 오늘 날짜 및 시간 SELECT SYSDATE FROM dual; 시 분 초 표시 SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual; TO_CHAR를 이용해야 한다. SYSDATE의 ..
-
SELECT (3)프로그래밍/DBMS 2021. 8. 9.
ABS : 절대 값 구하기 SELECT ABS(20), ABS(-20) FROM dual; -- 20 20 SIGN : 양수, 음수, 0 구분하기 SELECT SIGN(20), SIGN(-20), SIGN(0) FROM dual; 20은 양수라서 1을 반환 -20은 음수라서 -1을 반환 0은 0을 반환한다. MOD : 나머지 구하기 SELECT MOD(10,3) FROM dual; 10을 3으로 나누었을때의 나머지를 구한다. ROUND : 반올림 하기 SELECT ROUND(15.6933, 2) FROM dual; 소수점 한자리 수 까지 표현 하겠다는 뜻 SELECT ROUND(15.693, -1) FROM dual; 일의 자리에서 반올림 하겠다는 뜻 (=20이 된다.) TRUNC : 절삭하기 (내림) ..