본문 바로가기

SQL/ORACLE

(9)
[SQL] - NVL(MAX(COUL, 0) - NVL(컬럼, 0) 함수 SELECT NVL(컬럼, 0) FROM 테이블명; ● 치환값이 숫자일 경우 - NVL(컬럼, 0) -> 컬럼의 값이 NULL일 경우 NULL 대신 0으로 치환 ● 치환값이 문자일 경우 - NVL(컬럼, '문자') -> 컬럼 값이 NULL일 경우 '문자'로 치환 ● 치환값이 날짜일 경우 - NVL(컬럼, 'SYSDATE') -> 컬럼 값이 없을 경우 SYSDATE 날짜로 치환 - NVL(MAX(컬럼, 0) 함수 SELECT NVL(MAX(컬럼명, 0) FROM 테이블명; MAX() 은 선택된 칼럼의 가장 큰 값을 가져온다. => 컬럼의 MAX값을 출력, ,BUT 컬럼의 값이 NULL이라면 0으로 치환
PL/SQL 저장함수 생성하기 프로시저를 만들 때에는 PROCEDURE라고 기술하지만, 함수를 만들 때에는 FUNCTION이라고 기술한다. 함수는 결과를 되돌려 받기 위해서 함수가 되돌려 받게 되는 자료 형과 되돌려 받을 값을 기술해야 한다. 다음은 특별 보너스를 지급하기 위한 저장 함수를 작성해보자. 보너스는 급여의 200%를 지급한다고 합시다. ED 다음에 파일이름을 입력하여 새로 생긴 SQL 파일에 다음과 같이 입력하시오. (파일이름:PROC05.SQL) CREATE OR REPLACE FUNCTION CAL_BONUS( VEMPNO IN EMP.EMPNO%TYPE ) RETURN NUMBER IS VSAL NUMBER(7, 2); BEGIN SELECT SAL INTO VSAL FROM EMP WHERE EM..
SQL과 PL/SQL의 차이 SQL, PL/SQL, SQL*PLUS SQL은 관계형 DB에 저장된 데이터에 access하기 위해 사용하는 표준 언어 (SELECT, UPDATE, INSERT 등 데이터 조작 쿼리다.) PL/SQL은 SQL문을 사용하여 프로그램을 작성할 수 있도록 확장해놓은 오라클의 절차적 언어 (DECLARE, EXCEPTION, LOOP 등 절차적 프로그래밍이 가능함) SQL*PLUS는 SQL, PL/SQL을 실행할 수 있는 환경을 제공하는 오라클의 TOOL (SQL*PLUS 명령어는 SQL명령어와 같지 않다.중요!) 우선은 큰 개념은 이렇게 알아두고 나중에 좀 더 공부하면서 이해까지 하도록 해보자.
PL SQL(구구단) [Table 생성] CREATE TABLE A( 2 A1 NUMBER(2), 3 A2 NUMBER(2), 4 A3 NUMBER(2)); SET SERVEROUTPUT ON ACCEPT PDAN PROMPT '출력할 단을 입력하세요'; DECLARE VDAN NUMBER(2):= &PDAN; I NUMBER(2) := 0; TOT NUMBER(2) := 0; BEGIN FOR I IN 1..9 LOOP TOT := VDAN * I; DBMS_OUTPUT.PUT_LINE( ' ' || TO_CHAR(VDAN) || '*' || TO_CHAR(I) || '=' || TO_CHAR(TOT)); INSERT INTO A VALUES(VDAN,I,TOT); END LOOP; END; / 저장한 후 실행 저장 폴더 ..
ORACLE 관리자 (system/sys) 계정 비밀번호 찾기/변경 1. cmd 창 (window key+ r -> cmd ) 2. sqlplus 실행 -> user-name을 입력하는 문구가 나온다. 3. Enter user-name : sys as sysdba 입력 sys as as sysdba 4. Enter password : 입력 없이 엔터치기 ↓ 5. 현재 접속 계정이 sys 인지 확인하기 show user 입력 후 enter 6. SYS 관리자 비밀번호 변경 alter user sys identified by 1234; 마지막으로 잘 변경되었는지 확인 conn sys/1234 as sysdba;
테이블의 분해 조립 - 조립하기 표를 분해하기 전의 표는 보기에는 좋지만 수정이나 삭제, 추가작업을 할때는 굉장히 나쁘다. 하지만 표를 분해하면 수정하고 싶으면 해당하는 번호에 참조하고 있는 것이 한번에 바뀌는 폭발적 효과를 얻을 수 있다. 쓰기에는 너무 좋아졌지만, 하지만 보기에는 안좋아졌다. 그렇다면 첫번째 표의 방식은 잘못된 방식인걸까? 아니다. 첫번째 방식은 첫번째 방식대로 읽기가 좋다는 장점이 있고 두번째 방식은 쓰기가 좋다는 장점이 있다는 것이다. 서로 장점과 단점을 달리하는 것들을 합성해서 마치 장점만 존재하는 것이 존재한 것과 같은 환상을 만들어내는것이 공학의 지상 과제이다. 그럼 어떻게하면 알 수 있을까? 그것은 바로 JOIN 이다. JOIN - 결합한다. 즉. 우리가 표를 잘 분리한 다음에 우리의 필요에 따라서 표들을..
Relation(관계형) Relation 관계형 데이터베이스의 정체성을 규정한다고 할 수 있다. 관계형 데이터베이스 첫째. 관계형 데이터베이스는 표라고 하는 형태로 데이터를 다룬다라고 하는 굉장히 혁명적인 측면을 가지고 있다. 두번째. 표를 사용하다보면 표가 비대해질 것이다. 그때, 관계형 데이터베이스를 이용하면 표를 우리의 필요에따라서 잘게 쪼깨기도 하고 또. 우리의 필요에 따라서 쪼개진 표들을 이렇게도 결합하고 저렇게도 결합하는 것을 통해서 실제로는 존재하지 않는 표인데 원래부터 존재하고 있었던 것과 같은 환상적인 표를 만들 수 있다. 라고 하는 마법을 관계형 데이터베이스를 통해서 구사할 수 있다! 만약에 동일한 이름과 직업 등. 동일한 정보를 가지고 있는 각각의 인물들이 있다고 가정을 해보자. 그런데 그 수가 1억, 10억..
서버와 클라이언트 인터넷이 연결되어 있는 시대인 요즘 오라클이 설치 되어있는 컴퓨터 하나에는 오라클을 설치하고 또 한대의 컴퓨터에는 SQL Plus를 설치해서 인터넷을 통해서 오라클이 설치되어있는 저 컴퓨터에 오라클을 제어할 수 있다면 얼마나 좋을까? 이것을 이해하기 위해서 인터넷에 대해서 개념을 알아야 할 필요가 있다. 인터넷에 연결되어 있는 컴퓨터 한대 한대를 부르는 말이 있다. " HOST " 라고 한다. 그래서 데이터베이스의 host 이름이 뭐냐라고 물어보면 이 데이터베이스가 설치되어 있는 컴퓨터의 ip나 domain을 물어보는 것이라 생각하면 된다. 인터넷을 또 네트워크를 만드는 사람들이 가만히 보니깐 네트워크에 연결되어 있는 컴퓨터 한대한대를 부르는 host라는 표현만으론 좀 부족한거예요. 예를 들면 2대의 컴..