본문 바로가기

오라클

CREATE TABLE 테이블 생성하기, 테이블 이름변경 -- 간단한 테이블 작성CREATE TABLE 테이블명( 컬럼명 자료형(폭) ,컬럼명 자료형(폭)); --동일 사용자에서 객체명은 중복되어 질 수 없다(테이블며, 뷰명, 제약조건명등)--테이블에서 컬럼의 순서는 무의미하다.--테이블에 존재하는 레코드(자료)의 순서는 의미가 없다. SELECT 할 떄의 순서가 중요EX )CREATE TABLE test1( id VARCHAR2(10) ,name VARCHAR2(20) ,age NUMBER(3) ,tel VARCHAR2(25)); --테이블의 이름 변경(테이블, 뷰, 시쿼스, 시너님등의 이름 변경도 동일)RENAME 기존이름 TO 바꿀이름RENAME test1 TO exam1; 더보기
오라클 테이블 목록과 스키마(구조) 확인하기 --작성된 테이블 목록 확인SELECT * FROM tab; -- tabs보다 간단하게SELECT * FROM tabs;SELECT * FROM 테이블명; --해당테이블의 목록화인 --테이블의 구조 확인(스키마) -- 모든 테이블의 구조가 나온다SELECT * FROM col;SELECT * FROM cols;SELECT * FROM user_tab_columns; -- 약자가 cols. --테이블 스키마(구조) 출력SELECT * FROM col WHERE tname='테이블명'; --간단히 출력SELECT * FROM cols WHERE table name='테이블명';SELECT * FROM user_tab_columns WHERE table_name='테이블명';EX )SELECT * FROM C.. 더보기
오라클의 자료형 --문자자료형--CHAR(n) : 고정길이. 남는자라는 공백으로 채움(비효율) 최대 4000자=>NLS가 korean인 경우 한글,영문만 지정가능 --VARCHAR2(n) : 기변길이. 최대 4000자 폭을 길제 잡아도 필요한 문자만큼만 확보(효율)=>NLS가 korean인 경우 한글,영문만 지정가능 --VARCHAR(n) : 최대2000자. 남는자리는 null로 채움=>문자열을 반드시 VARCHAR2 사용. --NVARCHAR2(n) : 다국적 언어 지원.=>VARCHAR2(n) 로 했을 때 NLS에 의해 발생하는 언어적 제한을 극복하기 위한 자료형 -- 숫자자료형-- NUMBER(p, s) => p: 정밀도(1~38), s: 소수점이하(-84~127) NUMBER : NUMBER(38,0)과 동일EX.. 더보기
오라클 문제 풀이 1. 서울 사람중에서 김씨와 이씨만 출력(이름)SELECT name FROM insa WHERE SUBSTR(name,1,1) IN ('김', '이') AND city='서울'; 2. 모든 테이블의 목록 출력SELECT * FROM tab; 3. INSA 테이블의 스키마(구조) 출력DESC insa; 4. 총급여 오름차순으로 출력하되 총급여가 같으면 기본급 오름차순으로 출력(이름,기본급,수당,총급여(기본급+수당))SELECT name, basicpay, sudang, sudang+basicpay pay FROM insa ORDER BY pay, basicpay; 5. 남자중에서 name, city, buseo, jikwi 필드만 출력하되 필드명은 한글로 출력SELECT name 이름, city 출신도, .. 더보기
오라클 문제 1. 서울 사람중에서 김씨와 이씨만 출력 2. 모든 테이블의 목록 출력 3. INSA 테이블의 스키마(구조) 출력 4. 총급여 오름차순으로 출력하되 총급여가 같으면 기본급 오름차순으로 출력(이름, 기본급, 수당, 총급여(기본급+수당)) 5. 남자중에서 name, city, buseo, jikwi 필드만 출력하되 필드명은 한글로 출력 6. name 필드와 변환 함수를 이용하여 입사 일을 yyyy-mm-dd 요일 형식으로 출력 한다.(이름, 부서명, 입사일) 7. 직위를 중복을 배제하여 출력 8. LIKE를 이용하여 이씨가 아닌 자료만 출력 9. 전화번호가 NULL인 경우 '전화없음'으로 치환하여 출력하며 세금은 총급여*3% 로 하되 일의자리에서 반올림한다. (세금과 총급여는 세자리마다 컴마 삽입) 10. .. 더보기
오라클 FIRST_VALUE() OVER() : 정렬된 값 중 첫번째 값 --FIRST_VALUE() OVER() -- 정렬된 값 중 첫번째 값=> 어떤값을 기준으로 할것인지 첫번쨰 ()로 쓰고 어떻게 정렬할 것인지 두번쨰 ()로 쓴다 SELECT name, buseo,basicpay, FIRST_VALUE(basicpay) OVER(PARTITION BY buseo ORDER BY basicpay DESC) 부서별최대기본급 FROM insa;=> 부서별로 기본급여의 최대값을 모두 출력한다. SELECT name, buseo,basicpay, FIRST_VALUE(basicpay) OVER(PARTITION BY buseo ORDER BY basicpay DESC)-basicpay 부서별최대급여와차이 FROM insa; 더보기
오라클 SUM OVER() : 조건에 만족하는 행의 합 구하기 -- SUM OVER() -- 조건에 만족하는 행의 합 구하기 SELECT buseo, SUM(basicpay) FROM insa GROUP BY buseo;=> 집계함수 SUM()만 사용해서 각 부서별 기본급 합을 구함 SELECT name, buseo, basicpay, SUM(basicpay) OVER(ORDER BY buseo) FROM insa;=> 각 부서에 맞는 각부서의 총합을 각 행마다 출력 함 SELECT name, buseo,jikwi,basicpay, SUM(basicpay) OVER(ORDER By buseo, jikwi), SUM(basicpay) OVER(PARTITION BY buseo ORDER BY jikwi) FROM insa; --AVG OVER() --SUM OVER(.. 더보기
오라클 COUNT() OVER() : 조건에 만족하는 행의 수 반환 - COUNT() OVER() -- 조건에 만족하는 행의 수 반환 -- 개발부 직원 중 이름, 기본급을 출력하고 각 직원의 급여보다 같거나 적게 받는 사람인원수 SELECT name,(basicpay), COUNT(*) OVER(ORDER BY basicpay) FROM insa WHERE buseo='개발부'; SELECT name,basicpay, COUNT(*) OVER(ORDER BY basicpay DESC) FROM insa WHERE buseo='개발부'; => ORDER BY랑 같이 쓰여서 basicpay 컬럼의 나열순선에 따라 행번호가 붙여진다 더보기