select *
From Student
Where studno = 20101 -- studno : 숫자 , 조회할 때도 반드시 숫자형태로 맞추어 준다.
select * -- 묵시적형변환에 의한 조회
From Student
Where studno = TO_NUMBER('20101') -- 데이터가 잘 조회된다. 그런데 이 동네에서는 절대로 이렇게 사용하지 말 것.
Select *
From Student
Where grade = 2 -- grade : varchar2 Type
Select /*+ INDEX (a Student_INX03 ) */ -- Hint 문을 주었지만 작동이 않되고 무시된다.
*
From Student a
Where TO_NUMBER(grade) = 2 -- Index에 해당하는 항목을 변형하였기 때문에 Index를 타지 못한다.
Select /*+ INDEX (a Student_INX03 ) */ -- Hint 문을 주었지만 작동이 않되고 무시된다.
*
From Student a
Where grade = 2 -- Index에 해당하는 항목을 변형하였기 때문에 Index를 타지 못한다.
Select profno, hiredate, -- hiredate : date
hiredate + 30 입사_30일후,
hiredate + 60 입사_60일후,
hiredate - 90 입사_90일전,
TO_CHAR(hiredate,'YYYY-MM-DD HH24:MI:SS') 입사일자, -- MI : 분의 의미, MM : 월의 의미
TO_CHAR(Sysdate,'YYYY-MM-DD HH24:MI:SS') 현재일자, -- 12시간 포맷 : HH12:MI:SS 이렇게 나타내는데 12는 생략가능하다.
TO_CHAR(Sysdate,'Q') 일자_Querter, -- Q : Quater를 의미
TO_CHAR(Sysdate,'WW') 연초_몇주,
TO_CHAR(Sysdate,'W') 월초_몇주,
TO_CHAR(Sysdate,'DDD') 연초_몇일,
TO_CHAR(Sysdate,'D') 주초_무슨요일, -- 1 : 일, 2 : 월, 3: 화, 4 : 수, 5 : 목, 6 : 금, 7 토, 1: 일요일부터 출발한다.
TO_CHAR(LAST_DAY(Sysdate),'YYYY-MM-DD') 금월_마지막일,
TO_CHAR(NEXT_DAY(Sysdate,'일'),'YYYY-MM-DD') 돌아오는_일요일,
TO_CHAR(NEXT_DAY(Sysdate,7),'YYYY-MM-DD') 돌아오는_토요일2, -- 1: 일요일부터 출발한다.
TO_CHAR(Sysdate,'YYYY-MM-DD HH:MI:SS AM') 현재일자_5,
TO_CHAR(Sysdate,'YYYY-MM-DD HH:MI:SS PM') 현재일자_6,
TO_CHAR(ROUND(Sysdate),'YYYY-MM-DD HH:MI:SS AM') 현재일자_반올림,
TO_CHAR(TRUNC(Sysdate),'YYYY-MM-DD HH:MI:SS AM') 현재일자_절삭
From Professor
Select hiredate 기준일자
, '2014'||TO_CHAR(hiredate,'MMDD') 비교일자_1 -- || : 결합연산자
, '2014'||TO_CHAR(hiredate,'MMDD')||TO_CHAR(SYSDATE,'HH24MISS') 비교일자_2
, TO_CHAR(TO_DATE ('2014'||TO_CHAR(hiredate,'MMDD')||TO_CHAR(SYSDATE,'HH24MISS'),'YYYY/MM/DD HH24:MI:SS'),'YYYY-MM-DD HH:MI:SS AM') 비교일자_3
From professor
update professor
set hiredate = TO_DATE('2016'||TO_CHAR(hiredate,'MMDD')||TO_CHAR(SYSDATE,'HH24MISS'),'YYYY/MM/DD HH24MISS')
commit;
Select *
From Professor
-- 기존 테이블에 컬럼을 추가하고자 할 때에
alter table professor -- alter : DDL(데이터정의어) ,
add ( Create_Date DATE Default Sysdate NOT NULL
, Audit_Date DATE Default Sysdate NOT NULL )
-- 기존 테이블에 컬럼의 속성을 변경하고자 할 때에
alter table professor
modify ( NAME VARCHAR2(20)) -- 작은 것 -> 큰 것으로 변형시
-- 기존 테이블에 컬럼을 삭제하고자 할 때에
alter table professor
drop column audit_date -- 한 컬럼을 삭제할 때
alter table professor
drop column Create_date -- 한 컬럼을 삭제할 때
alter table professor
drop (age, sex) -- 여러개의 컬럼을 동시에 삭제하고자 할 때에
alter table professor
drop (Create_Date, Audit_Date) -- 여러개의 컬럼을 동시에 삭제하고자 할 때에
-- Professor(교수)테이블의 기존컬럼 SAL : Number(12) -> Number(8)로 변경하는 과정을 질의문으로 작성해 보세요.
alter table professor
modify (sal NUMBER(8)) -- 열(Column)이 비어있지 않아서 오류가 걸린다는 메세지가 나왔다.
Create Table Professor_TEMP2 AS -- Professor -> Professor_Temp2로 자료복제
Select *
From Professor
Select *
From Professor_Temp2
CREATE UNIQUE INDEX PROFESSOR_TMP2_PK ON Professor_Temp2
(PROFNO)
LOGGING
TABLESPACE DW_TSI
PCTFREE 10
INITRANS 2
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MAXSIZE UNLIMITED
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
FLASH_CACHE DEFAULT
CELL_FLASH_CACHE DEFAULT
)
NOPARALLEL;
alter table professor
modify (sal NULL)
Update Professor
Set sal = '' -- '' : Null값으로 Update , 기본값으로 0이 설정되어 있어서 오류
, Audit_Date = sysdate
;
COMMIT;
Select *
From Professor -- 기존 sal 컬럼이 Null로 바뀐 것을 반드시 확인한 후에
alter table professor
modify ( sal NUMBER(8)) -- 12자리 -> 8자리로 변경
-- 상호연관 SubQuery를 활용하여 기존 데이터를 수정
Update Professor a -- a : alias (별명지정)
set sal = ( -- SubQuery : 부속질의문
Select sal
From Professor_TEMP2 b
Where b.profno = a.profno
And rownum = 1
)
, Audit_Date = Sysdate
COMMIT; -- 이렇게 문장으로 넣을 수도 있고 상단의 버튼으로 해결할 수도 있다.
select *
From Professor
--
Select FUN_GET_SYSDATE -- 함수 테스트시는 이렇게 한다.
From dual
Select studno 학번 -- *
, name 성명
, idnum 주민등록번호
, userid 사용자_ID
, FUN_GET_SEX(userid) SEX -- 사용자 함수테스트
, FUN_GET_AGE(idnum) AGE
, FUN_GET_AGE2(idnum) 연령대
From student
Select profno 교수코드, hiredate 입사일자,
MONTHS_BETWEEN(Sysdate, hiredate) 근속기간, -- 주어진 두 날짜 사이의 기간 계산
ADD_MONTHS(hiredate, 6) 입사_6개월후, -- 주어진 날짜에서 몇 개월을 더한 날짜를 추출
ADD_MONTHS(sysdate, 6) 일자_6개월후,
FUN_GET_SYSDATE 현재날자_시간 -- 사용자 함수를 호출
From Professor
Where MONTHS_BETWEEN(Sysdate, hiredate) <= 120
Select count(*)
From Ab_Zip_Mast_FULL
Select POST_NO 신우편번호, sido, mkt_cd, FUN_GET_AB_MKT_CD(mkt_cd) 지역구분,
road_name 도로명, BDNO_MNG_NO 상세주소, old_post_no 구우편번호, audit_date
From AB_ZIP_MAST PARTITION (P_MKT_200)
Select sido, mkt_cd, SIGUNGU, FUN_GET_AB_MKT_CD(mkt_cd) 지역구분,
road_name 도로명, BDNO_MNG_NO 상세주소, audit_date
From Ab_Zip_Mast_FULL PARTITION (P_MKT_100)
alter table ab_zip_mast -- Table안에서 컬럼을 추가하는 명령
add (NEW_MKT_CD VARCHAR2 (3))
alter table ab_zip_mast -- 컬럼을 삭제
drop column NEW_MKT_CD ;
alter table professor -- 컬럼의 길이 및 타입을 변경
modify (sal number(10) default 0 not null,
comm number(10) default 0 not null)
alter table professor -- EMP
modify (
PROFNO NOT NULL,
NAME NOT NULL,
USERID NOT NULL,
POSITION NOT NULL,
SAL NUMBER(12) DEFAULT 0 NOT NULL,
HIREDATE DATE DEFAULT SYSDATE NOT NULL,
COMM NUMBER(12) DEFAULT 0 NOT NULL,
DEPTNO NUMBER(4) DEFAULT 101 NOT NULL
)
Select sido, mkt_cd, SIGUNGU, count(*)
From ab_zip_mast PARTITION (P_MKT_100)
GROUP BY sido, mkt_cd, SIGUNGU
ORDER BY 1,2,3
Select sal 급여
, TO_CHAR(sal,'$999,990') SAL_1
, '\'||TRIM(TO_CHAR(sal,'999,990')) SAL
From emp
select deptno, count(comm), SUM(COMM), COUNT(*), AVG(COMM)
From Professor
Group By deptno
Select *
From Professor
Where deptno = 101
create table Cal_co_Mast_Tmp as -- Cal_Co_Mast -> Cal-co_Mast_Tmp 를 생성
Select * -- Table의 구조만 복사하는 명령
From cal_Co_Mast
Where 0 = 1
Select deptno, grade, count(*)
, Grouping(deptno) Grp_deptno
, Grouping(Grade) Gtp_Grade
From Student
Group by rollup(deptno, grade)
Order By 4 Desc, 5 Desc, 1
Select rowid, s.*
From student s
select * -- 오라클이 레코드를 찾아가는 방식 , 가장 빠름
From Student
Where rowid = 'AAAdICAAMAABEvTAAD'
Select * -- 현행 사람이 레코드를 검색하는 가장 빠른 방식
From Student
Where studno = 10102
select sido, mkt_cd, count(*)
From ab_zip_mast_full
Group By sido, mkt_cd
Select *
From tabs
-- From USER_TABLES
'개발속이야기 > Oracle' 카테고리의 다른 글
중복 데이터 삭제 (0) | 2017.12.28 |
---|---|
Student_Temp4의 중복된 레코드를 제거하는 질의문을 작성하여 주세요. (0) | 2017.12.28 |
정산리스트를 만드는 질의문을 작성하여 보세요. (0) | 2017.12.28 |
연습문제를 풀어서 올려주세요 (0) | 2017.12.28 |