DataBase - Main Menu/Oracle SQL 13

ch15 - 사용자, 권한, 롤 관리

/* SQL DEVELOPER에서는 CONN 명령이 안먹는다. 그래서 CMD창에서 SQLPLUS로 접속하여 SYSTEM계정으로 권한을 줘야 한다*/ --ex15_1 --SCOTT계정으로 실행하면 권한이 없다고 나온다. CREATE USER ORCLSTUDY IDENTIFIED BY ORACLE; --ex15_2 --SYSTEM으로 실행(SESSION 권한이 없다고 나온다) CREATE USER ORCLSTUDY IDENTIFIED BY ORACLE; SHOW USER; --ex15_3 --CREATE SESSION권한(접속) 주기, (SYSTEM계정에서 줘야 한다.) GRANT CREATE SESSION TO ORCLSTUDY; CONN ORCLSTUDY/ORCL; --이젠 접속 됨 --ex15_4 --..

ch14 - 제약 조건

--ex14_1 --NOT NULL제약 조건 (NULL은 사용 못하나, 다른 행과 중복은 허용한다.) CREATE TABLE TABLE_NOTNULL (LOGIN_ID VARCHAR2(20) NOT NULL, LOGIN_PWD VARCHAR2(20) NOT NULL, TEL VARCHAR2(20) ); DESC TABLE_NOTNULL; --ex14_2 --NOT NULL컬럼에 NULL값을 사용 INSERT INTO TABLE_NOTNULL (LOGIN_ID, LOGIN_PWD, TEL) VALUES ('TEST_ID_01', NULL, '010-1234-5678'); --ex14_3 --NULL허용 컬럼 TEL 컬럼을 INSERT에서 제외시 NULL이 자동으로 부여된다. INSERT INTO TABLE..

ch13 - 객체 종류

--ex13_1 --모든 데이터 사전 테이블 조회 SELECT * FROM DICT; --ex13_2 --ex13_1과 동일함 SELECT * FROM DICTIONARY; --ex13_3 --접속한 계정의 데이터 사전의 이름을 조회 SELECT TABLE_NAME --컬럼명 FROM USER_TABLES; --접속계정 관련 테이블 --ex13_4 SELECT OWNER, TABLE_NAME FROM ALL_TABLES; --접속한 계정들이 허가 받은 객체에 관련된 테이블 --ex13_5 SELECT * FROM DBA_TABLES; --관리자 권한을 가진 계정에 관련된 데이터 사전 --SCOTT로 조회시는 권한이 없어서 조회가 안됨 --ex13_6 --SYSTEM 또는 SYS계정으로 조회해야 한다. S..

ch12 - DDL

--ex12_1 - EMP_DDL 테이블 생성 CREATE TABLE EMP_DDL( EMPNO NUMBER(4), ENAME VARCHAR2(10), JOB VARCHAR2(9), MGR NUMBER(4), HIREDATE DATE, SAL NUMBER(7, 2), COMM NUMBER(7, 2), DEPTNO NUMBER(2) ); DESC EMP_DDL; --DESCRIBE도 DESC와 같은 테이블 구조를 보여주는 명령 --DESC는 DESCRIBE의 축약형이다. (DESC : 테이블의 구조를 보는 명령어) DESCRIBE EMP_DDL; SELECT * FROM EMP_DDL; --ex12_2 - DEPT_DDL 테이블 생성 --테이블의 구조 및 데이터까지 모두 가져와서 새 테이블을 생성했다. C..

ch10 - DML

--ex10_1 --테이블 구조 및 데이터까지 복사해서 새 테이블을 생성한다. CREATE TABLE DEPT_TEMP1 AS SELECT * FROM DEPT; --ex10_2 SELECT * FROM DEPT_TEMP; --ex10_3 INSERT INTO DEPT_TEMP (DEPTNO, DNAME, LOC) VALUES (50, 'DATABASE', 'SEOUL'); SELECT * FROM DEPT_TEMP; --ex10_4 --지정할 컬럼을 생략 --값 입력은 테이블에 정의된 컬럼 순서대로 모든 값을 입력해야함(비 권고) INSERT INTO DEPT_TEMP VALUES (60, 'NETWORK', 'BUSAN'); SELECT * FROM DEPT_TEMP; --ex10_5 --명시적으로 ..

ch9 - 서브쿼리

--ex9_1 SELECT SAL FROM EMP WHERE ENAME = 'JONES'; --ex9_2 SELECT * FROM EMP WHERE SAL > 2975; --ex9_3 --ex9_1을 조건열에 비교 값으로 사용하는데 이를 서브쿼리 라고 한다. --서브쿼리는 꼭 WHERE(조건)절 옆에 ()로 묶어서 사용해야 한다. SELECT * FROM EMP WHERE SAL > (SELECT SAL FROM EMP WHERE ENAME = 'JONES'); --ex9_4 --DATE형도 비교 가능 --날짜 값이 작다는 뜻은 빠른 날짜를 의미한다. SELECT * FROM EMP WHERE HIREDATE < (SELECT HIREDATE FROM EMP WHERE ENAME = 'ALLEN'); S..

ch8 - Join

--ex8_1 --모든 가능한 두 테이블의 조합된 경우를 출력한다.(데카르토글) SELECT * FROM EMP,DEPT ORDER BY EMPNO; --ex8_2 --두 테이블의 관련이 있는 특정 열을 기준으로 (동등비교 조건으로)조인한다. --제목줄에 두개의 테이블에 열 이름이 같은 것은 자동으로 하나는_1이 붙는다. SELECT * FROM EMP,DEPT --조인을 위해 2개 테이블을 사용 WHERE EMP.DEPTNO = DEPT.DEPTNO --동등비교 ORDER BY EMPNO; --ex8_3 --TABLE명에 별칭 사용 --TABLE에 병칭 사용시 컬럼명에도 테이블의 별칭을 이용한다. SELECT * FROM EMP E, DEPT D --테이블 별칭 사용 WHERE E.DEPTNO = D...

ch7 - 다중행 함수와 데이터 그룹화

--ex7_1 SELECT SUM(SAL) FROM EMP; --ex7_2 /* 다중행 함수를 사용하는 SELECT절에는 여러 행의 값을 출력하는 컬럼이나 데이터는 사용하지 못한다. */ SELECT ENAME, SUM(SAL) FROM EMP; --ORA-00937: 에러 발생 --ex7_3 /* ALL이 생략되어 있음(기본값), 컬럼 값이 NULL은 제외하고 합산 수행 */ SELECT SUM(COMM) FROM EMP; --ex7_4 /* 선택사항 : DISTINCT는 중복을 한번만 처리, ALL 또는 생략은 중복을 모두 포함하여 합산처리 수행 */ SELECT SUM(DISTINCT SAL), SUM(ALL SAL), SUM(SAL) FROM EMP; --ex7_5 /* COUNT대상 열을 * 로..

ch6 - Oracle 함수

--ex6_1 --UPPER(문자열)은 전부 대문자로 변환, --LOWER(문자열)은 전부 소문자로 변환, --INITCAP(문자열)은 첫글자만 대문자로 변환 --select절의 항목은 컬럼명, 연산식, 함수도 온다. select ename, upper(ename), lower(ename), initcap(ename) from emp; --ex6_2 --where절에서 문자변환 함수를 사용하여 대,소문자 비교가 어려움을 해결 --매개변수는 컬럼명 또는 문자열 값을(직접) 넣어줄 수 있다. select * from emp where upper(ename) = upper('scott'); --ex6_3 --LIKE 연산자에서 UPPER등을 사용하는 방법 select * from emp where upper(..