RENAME - 테이블을 포함한 객체의 이름을 변경하는 DDL명령문이다.





형식



RENAME 기존테이블명 TO 새테이블명




1
rename a1 to b1;
cs



테이블명이  변경되었기 때문에 이전 테이블명으로는 테이블 구조를 확인할 수 없고,

새로운 테이블명으로 확인 가능하다.




ALTER TABLE - 기존 테이블의 구조 변경을 하는 DDL명령어 입니다.




테이블을 생성하면서 컬럼의 추가, 수정, 삭제를 할 때 사용합니다.



컬럼추가



ALTER TABLE 테이블명

ADD(컬럼명 DataType);




컬럼을 추가하는 형식입니다.

-추가된 컬럼의 마지막 부분에 생성이 됩니다.

-수정할 테이블에 기존의 추가한 데이터가 존재하면 컬럼 값은 NULL로 입력됩니다.


1
alter table a1 add(age number);
cs


보이는 것과 같이 AGE 컬럼이 추가되었고, 데이터 값은 NULL로 입력됩니다.







컬럼변경

ALTER TABLE MODIFY 명령문을 이용하여 테이블에서의 컬럼의 타입, 크키, 기본 값 변경을 할 수 있다.




ALTER TABLE 테이블명

MODIFY(컬럼명 DataType);





기존 컬럼에 데이터가 없는 경우


-컬럼의 데이터 타입 변경이 자유롭다.


-컬럼의 크기 변경이 자유롭다.


 기존 컬럼에 데이터가 존재하는 경우


-데이터 타입 변경은 CHAR과 VERCHAR2만 가능하다.


-변경할 컬럼의 크기가 저장된 데이터의 크기보다 같거나 클 경우에만 가능하다.



1
2
alter table a1 modify(name varchar2(5));
alter table a1 modify(name varchar2(30));
cs



처음 name의 크기변경을 할 때 5보다 큰 데이터 값이 있기 때문에 변경 불가

기존 데이터 타입보다 큰 30으로 변경 가능 

name 의 데이터값이 변경된것을 확인할 수 있습니다.






컬럼제거


- 2개 이상의 컬럼을 가진 기존테이블의 특정 컬럼과 컬럼의 데이터 삭제 가능

- 한번의 하나의 컬럼만 삭제가 가능

- 삭제된 컬럼은 복구 불가능




ALTER TABLE 테이블명 DROP COLUMN 컬럼명;




1
alter table a1 drop column age;
cs



삭제된 것을 볼 수 있습니다.






SET UNUSED


시스템의 요구가 적을 때 컬럼을 제거할 수 있도록 하나 이상의 칼럼을 UNUSED로 표시한다.

실제로 테이블에서 제거되지 않는다. 


사용이유

테이블에 저장된 내용이 많을 경우 컬럼 삭제시 많은 시간이 소요된다. 그 시간중에 다른 사용자가 컬럼에 접근하면 , 테이블이 사용되고 있기에 다른 사용자는 해당 테이블을 이용할 수 없다. 이럴경우 rock이 발생하게된다. 

SET UNUSED옵션은 DROP명령 실행시 걸리는 시간보다 응답시간이 빠르고, UNUSED로 표시된 컬럼은 데이터가 존재해도 삭제된 것으로 처리되기 때문에 사용한다.


테이블에서 id제거하기


1
alter table a2 set unused(id);
cs



실제로 컬럼명이 나타나지 않는 것을 볼 수 있다. 

하지만 실제로 제거된 것이 아니다. 




테이블에서 현재 UNUSED로 표시된 모든 컬럼 제거하기


1
alter table a2 drop unused columns;
cs


가상컬럼이란? 


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초에 한번씩 나타내기

위의 사진처럼 자바 스크립트를 이용하여 글자나 나타나게 만들었습니다.


사용함수



setTimeout() -시간지연함수



일정 시간 후 특정코드나 함수를 의도적으로 지연시키고 싶을 때 사용하는 함수입니다.

이 함수를 사용할 때에는 두개의 인자를 사용하는데

(지연시간뒤에 실행할 코드, 지연시간) 설정합니다.



코드


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
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script type="text/javascript">
    var noticeMsg="코린이 잰이 입니다!";
    var index=0;
    
    function showNotice()
    {
        index++;
        var divNotice=document.getElementById("divNotice");
        if(index > noticeMsg.length)
        {
            divNotice.innerText="";
            index=0;
        }
        else
        {
            divNotice.innerText=noticeMsg.substr(0,index);
        }
        setTimeout(showNotice,500);
    }
</script>
</head>
<body onload="showNotice()">
    <div id="divNotice" class="notice"></div>
 
</body>
</html>
cs



위의 GIF 처럼 

들어갈 때 혹은 새로고침 할 때 이미지변경하는 코드입니다.


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
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
    <script type="text/javascript">
        var imgArray= new Array();
        imgArray[0]="01.png";  //사진
        imgArray[1]="02.jpeg"//사진
        imgArray[2]="03.png";    //사진
        imgArray[3]="04.png";    //사진
 
        
        function showImage()
        {
            var imgNum=Math.round(Math.random()*3);
            var objImg=document.getElementById("introImg");
            objImg.src=imgArray[imgNum];
        }
    </script>
</head>
<body onload="showImage()">
    <img id="introImg" border="0">
</body>
</html>
cs

배열을 만들어서 사진을 배열안에 넣어줬습니다. (7~11)


함수를 만들어서 들어갈 때 마다 랜덤으로 

배열을 선택하여 이미지를 변경시킵니다(14~19)



구구단 출력결과 입니다.




저는 <%%>과 <%=%> 두가지를 사용하였는데요



<% 여기는 자바 스크립트 문법이 들어갑니다.%>



<%= 변수를 출력할 때 사용합니다. %>




코드입니다.

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
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
    <%
    int i;
    int j;
    int k;
    %>
   
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<h1>구구단</h1>
    <table border=1>
    <tr>
    <td></td>
    <% for(i=2;i<10;i++){ %>
    <td><%=i%>단</td>
    <%}%>
    </tr>
    <% for(j=1;j<10;j++){%>
    <tr>
    <td><%=%></td>
        <% for(k=2;k<10;k++){ %>
        <td><%=k%>X<%=j%>=<%=k*j%></td>
        <%}%>
    </tr>
    <%}%>
    
    </table>
</body>
</html>
cs


18번째 줄부터 23번째 줄까지 몇단을 하고싶은지 나타내었고,

24번째 줄부터 31번째 줄까지 for문 2개를 사용하여 계산을하고 출력을 하였습니다.


for문 사용시 <%%>

출력,계산값 출력 <%=%>

'Jsp' 카테고리의 다른 글

JSP servlet 맵핑  (0) 2018.10.19

달력 출력결과 입니다.


양옆에 9월과 11월을 누르면 전달과 다음달로 넘어가게 만들었고

오늘날짜 배경색, 토요일과 일요일 글자 색을 넣었습니다.



사용 메소드



getMonth() - 달 불러오기


getData() -오늘 날짜 불러오기


getFullYear() -년도 불러오기









전체 코드입니다.


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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>testCalendar</title>
<style>
    table
    {
        border:1px solid #BDBDBD;
        text-align:center;
        width:30%;
    }
</style>
 
<script language="javascript">
    var today = new Date(); // 오늘 날짜
    var date = new Date();
 
    function beforem() //이전 달을 today에 값을 저장
    { 
        today = new Date(today.getFullYear(), today.getMonth() - 1, today.getDate());
        build(); //만들기
    }
    
    function nextm()  //다음 달을 today에 저장
    {
        today = new Date(today.getFullYear(), today.getMonth() + 1, today.getDate());
        build();
    }
    
    function build()
    {
        var nMonth = new Date(today.getFullYear(), today.getMonth(), 1); //현재달의 첫째 날
        var lastDate = new Date(today.getFullYear(), today.getMonth() + 10); //현재 달의 마지막 날
        var tbcal = document.getElementById("calendar"); // 테이블 달력을 만들 테이블
        var yearmonth = document.getElementById("yearmonth"); //  년도와 월 출력할곳
        yearmonth.innerHTML = today.getFullYear() + "년 "+ (today.getMonth() + 1+ "월"//년도와 월 출력
        
        if(today.getMonth()+1==12) //  눌렀을 때 월이 넘어가는 곳
        {
            before.innerHTML=(today.getMonth())+"월";
            next.innerHTML="1월";
        }
        else if(today.getMonth()+1==1) //  1월 일 때
        {
        before.innerHTML="12월";
        next.innerHTML=(today.getMonth()+2)+"월";
        }
        else //   12월 일 때
        {
            before.innerHTML=(today.getMonth())+"월";
            next.innerHTML=(today.getMonth()+2)+"월";
        }
        
       
        // 남은 테이블 줄 삭제
        while (tbcal.rows.length > 2
        {
            tbcal.deleteRow(tbcal.rows.length - 1);
        }
        var row = null;
        row = tbcal.insertRow();
        var cnt = 0;
 
        // 1일 시작칸 찾기
        for (i = 0; i < nMonth.getDay(); i++
        {
            cell = row.insertCell();
            cnt = cnt + 1;
        }
 
        // 달력 출력
        for (i = 1; i <= lastDate.getDate(); i++// 1일부터 마지막 일까지
        { 
            cell = row.insertCell();
            cell.innerHTML = i;
            cnt = cnt + 1;
            if (cnt % 7 == 1) {//일요일 계산
                cell.innerHTML = "<font color=#FF9090>" + i//일요일에 색
            }
            if (cnt % 7 == 0) { // 1주일이 7일 이므로 토요일 계산
                cell.innerHTML = "<font color=#7ED5E4>" + i//토요일에 색
                row = calendar.insertRow();// 줄 추가
            }
            if(today.getFullYear()==date.getFullYear()&&today.getMonth()==date.getMonth()&&i==date.getDate()) 
            {
                cell.bgColor = "#BCF1B1"//오늘날짜배경색
            }
        }
 
    }
    
</script>
 
</head>
 
<body onload="build();">
    <table align="center" id="calendar">
        <tr>
            <td><font size=1%; color="#B3B6B3"><label onclick="beforem()" id="before" ></label></font></td>
            <td colspan="5" align="center" id="yearmonth"></td>
            <td><font size=1%; color="#B3B6B3"><label onclick="nextm()" id="next"></label></font></td>
        </tr>
        <tr>
            <td align="center"> <font color="#FF9090">일</font></td>
            <td align="center"> 월 </td>
            <td align="center"> 화 </td>
            <td align="center"> 수 </td>
            <td align="center"> 목 </td>
            <td align="center"> 금 </td>
            <td align="center"><font color=#7ED5E4>토</font></td>
        </tr>
    </table>
    
</body>
 
</html>
cs


JavaScript를 이용한 라디오 버튼 클릭 시 배경색 변경




document.body.style.background - html 배경색 변경




코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
<script type="text/javascript">
    function change(color)
    {
        document.body.style.background=color;
    }
    
    
</script>
</head>
<body>
    <input type="radio" name="color" onclick="change('red')">빨간색 <br>
    <input type="radio" name="color" onclick="change('yellow')">노란색 <br>
    <input type="radio" name="color" onclick="change('blue')">파란색 <br>
    <input type="radio" name="color" onclick="change('green')">초록색 <br>
</body>
</html>
cs


클릭시 change(color) 함수를 부르는데 각 버튼 마다 변경하고싶은 색을 주었다.



코드2

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
<html>
 
<head>
  <meta charset="utf-8">
  <meta charset="EUC-KR">
  <title></title>
  <script language="javascript">
    function change(color)
    {
         document.bgColor = color;
    }
 
</script>
</head>
 
<body>
  
  <input type="radio" name="bgColor" value="yellow" onclick="change(this.value)">노랑색<br>
  <input type="radio" name="bgColor" value="green" onclick="change(this.value)">초록색<br>
  <input type="radio" name="bgColor" value="red" onclick="change(this.value)">빨간색<br>
  <input type="radio" name="bgColor" value="blue" onclick="change(this.value)">파란색<br>
 
</body>
 
</html>
cs

위의 코드와 좀 다른코드 위의 코드는 함수 호출할 때 색을 넣었다면

value안에 색상을 넣고 함수 호출 시 this.value를 사용하여 자기자신의 value값을 넣어주었다.


 결과


+ Recent posts