가상컬럼이란? 


oracle 11g부터 소개되었는데

- 하나의 테이블에 존재하는 다른 컬럼들을 이용하여 새로운 값을 만들어 내는 것을 말합니다.


만드는 방법은 



GENERATED ALWAYS AS(조건) VIRTUAL; - 테이터 컬럼명을 만든 곳 뒤에 붙인다.




1
2
3
4
create table a6(
num1 number,
num2 number,
num3 number generated always as(num1+num2) virtual);
cs



걷보기엔 일반 테이블과 다를게 없습니다. 

그러면 데이터를 넣어보겟습니다.


1
2
3
insert into a6 values(1,3,5);
insert into a6 values(1,3);
insert into a6(num1,num2) values(1,3);
cs



젤 첫번째 오류는 가상컬럼의 제약조건에 위배되었는데 가상컬럼안에는 값을 직접 입력할 수 없습니다.


두번째 오류는 그래도 컬럼이라고 컬럼수가 부족하다는 것 입니다.




가상 컬럼의 조건으로 num1과 num2의 합을 주었기 때문에 4가 들어간 것을 볼 수있습니다.

1
update a6 set num1=10;
cs


또한 기존 값을 변경하면 가상컬럼의 값도 변경이 되는 것을 볼 수 있습니다.





CREATE TABLE - 새로운 테이블을 생성하는 DDL명령어



테이블을 생성하기 전에 cmd 창을 켜야합니다. 

sqlplus 를 키거나 다음화면처럼 실행해주세요!



저는 cmd창을 사용하기때문에 sqlplus 를 치고, 제가직접만든 hr 계정에 테이블을 만들기 위해 hr 비밀번호를 입력해주었습니다.


그리고 테이블을 생성해보겠습니다! 테이블을 생성하는 법은

CREATE TABLE 테이블명(컬럼명 컬럼Data Type); 입니다.




1
2
3
4
5
create table a1(
num number,
id varchar2(20),
name varchar2(20)
);
cs


a1 = 테이블명

num, id, name = 컬럼명

number, varchar2(20) = 컬럼 Data Type




DESC 테이블명;  - 테이블 조회





테이블을 생성하고 확인까지 하였습니다. 

이번에는 테이블 안에 Data 를 넣어보겠습니다.




INSERT INTO 테이블명 VALUES('데이터','데이터',..); - 데이터 넣기



1
2
3
4
5
6
insert into a1 values(1,'a1','aa');
insert into a1 values(1,'a2','bb');
insert into a1 values(1,'a3','cc');
insert into a1 values(2,'a4','dd');
insert into a1 values(2,'a5','ee');
insert into a1 values(2,'a6','ff');
cs



[set linesize 값;] 은 화면크기를 설정하는 쿼리문 입니다.

[select * from 테이블명;] 은 테이블 안의 데이터를 모두 나타내는 쿼리문 입니다.


테이블 만들기는 끝!



이제 기존 테이블과 동일한 내용과 구조를 같은 테이블을 AS절을 추가하여 만들어 보겠습니다.



CREATE TABLE 새테이블명 AS SELECT * FROM 기존테이블명;






1
create table a2 as select * from a1;
cs

테이블 a1과 테이블 a2의 데이터가 동일한 것을 볼수있습니다.




굳이 * 을 사용하지 않고 * 대신 원하는 컬렴명을 적으면 원하는 컬럼만 복사하여 테이블을 만들 수 있습니다.


1
create table a3 as select id,name from a1;
cs


또 쿼리문 뒤에 WHERE 조건절을 추가하여 원하는 조건을 제시하면 일부의 행만 복사할 수 있습니다.


1
create table a4 as select * from a1 where num1
cs




WHERE 조건절에 항상 거짓인 조건을 주면 테이블 구조만 복사하는 쿼리문이 됩니다.


1
create table a5 as select * from a1 where 1=0;
cs



보이는 것 처럼 SELECT를 써도 데이터가 없어서 뜨지않지만 테이블 구조는 복사되어 생성되었습니다.















자바스크립트를 이용하여 흘러가는 시계를 만들어 보았습니다.




new Data() - 현재 날짜와 시간세팅 

setTimeout() - 시간지연함수



Data를 받아서 오전오후 시 분 초를 각각 나타내었습니다.






코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script type="text/javascript">
    function showClock()
    {
        var currentDate=new Date();
        var divClock=document.getElementById("divClock");
        var apm=currentDate.getHours();
        if(apm<12)
        {
            apm="오전";
        }
        else
        {
            apm="오후";
        }
        
        var msg = "현재시간 : "+apm +(currentDate.getHours()-12)+"시";
        msg += currentDate.getMinutes() + "분";
        msg += currentDate.getSeconds() + "초";
        
        divClock.innerText=msg;
        
        setTimeout(showClock,1000);
    }
</script>
</head>
<body onload="showClock()">
    <div id="divClock" class="clock"></div>
    
</body>
</html>
cs







코드설명

9  -현재 시간 받아오기

10-시계 공간 div

11~19 - 오전 오후 나타내기 

21~23 - 시간 나타내기

27 - 1초에 한번씩 나타내기

+ Recent posts