2008. 8. 24. 23:06

oracle sql 관련 링크

http://my.dreamwiz.com/jinuxer/oracle/manuals/sqltest/index1.html         - sql실습위주

http://www.oracleclub.com/                              - 전반적인 지식이 풍부한 사이트

http://users.handysoft.co.kr/~jelong/                  - sql 관련 사이트

http://radiocom.kunsan.ac.kr/lecture/oracle/function/function_start.html  -오라클 함수모음

http://blog.naver.com/amadeause.do?Redirect=Log&logNo=140019433952   - 오라클 에러 메시지 참고

'Database' 카테고리의 다른 글

오라클 10i(utf-8) zipcode 테이블 생성  (0) 2008.12.24
오라클 10g에서 scott 계정 풀기  (0) 2008.11.13
oracle sid 확인  (0) 2008.11.11
2008. 8. 21. 17:57

Chap 10. 테이블에 데이터 추가, 수정, 삭제하기

데이터를 입력하기 위해 사용하는 insert 문
형식 insert into 테이블명            insert into dept07          // dept테이블을 그대로 복사한
컬럼명 values(값);                    (deptno, dname, loc)    // dept07 테이블
                                              values (50,'TEST','YEOSU');
insert 문에서 컬럼명을 생략해도 정상적인 실행이 가능
insert into dept07
values (50,'TEST','YEOSU');

오류가 발생되는 예
1. 컬럼명에 기술된 항목보다 values 값이 적거나 많을때
values ( 50, 'TEST') OR values (50, 'TEST','YEOSU','TEST1');
2. 컬럼명이 잘못 기술되어 있을 때
(deptn, dname, loc)
3. 컬럼의 데이터 타입과 값이 서로 맞지 않을 때
values (50, 'TEST', YEOSU); // loc 컬럼은 문자형이므로 단일 인용부호('')를 사용해야함

서브쿼리로 로우 추가하기
create table dept01  // 테이블 구조만 복사하고 내용은 들어가지 않는다.
select * from dept
where 1=0;

create table dept01  // 테이블 구조와 내용이 전부 복사됨.
select * from dept;

update 문 : 테이블에 저장된 테이터를 수정
update 테이블명
set 컬럼명=변경할 값
where 조건절

'수업 > 오라클 + PL/SQL' 카테고리의 다른 글

Chap 13. 무결성 제약 조건  (0) 2008.08.27
Chap 11. 트랜잭션 관리  (0) 2008.08.27
Chap 9. 테이블 생성 및 변경, 삭제하기  (0) 2008.08.20
Chap3,4 SQLPLUS 명령어 & 연산자  (1) 2008.08.20
Chap 2. SQL의 기본  (2) 2008.08.20
2008. 8. 21. 15:41

Part 6. AWT - I AWT를 이용한 GUI 작성

자바에서는 AWT로 GUI컴포넌트(버튼, 체크박스 등)을 제공하며 AWT를 사용하기 위해서
import java.awt 를 해야합니다.
아래는 awt의 계층도 입니다.

사용자 삽입 이미지
Container 클래스
자바는 GUI 컴포넌트를 컨테이너 내부에 배치하는데 컨테이너의 종류에는 Window, Frame, Panel, Dialog 등이 제공됩니다. 오늘은 Frame과 Panel 에 대해서 살펴봅니다.

Frame 클래스에서 사용되는 메서드입니다.

생성자

public Frame ( )

기본 생성자입니다.

public Frame (String title)

타이틀바의 문자열을 지정합니다.

메서드

public String getTitle()

타이틀바의 문자열을 가져옵니다.

public boolean isResizable()

창의 크기 변경 여부를 알아냅니다.

public void setMenuBar(MenuBar mb)

프레임에 메뉴를 등록합니다.

public void setResizable(boolean b)

창의 크기 변경 여부를 지정합니다.

public void setTitle(String title)

타이틀바의 문자열을 지정합니다.

================= 프레임 객체를 생성하고 사이즈와 보임을 지정하여 창을 출력 ==========
package training;
import java.awt.Frame;
public class Ex01 {
 public static void main(String[] args) {
  Frame f=new Frame("Frame Demo"); // 프레임 객체 생성
  f.setSize(300, 200); // 사이즈 지정 후,
  f.setVisible(true); // 보여지도록
 }
}
===================================================================================
배치관리자(Layout Manager)
프레임에 컴포넌트를 어떤 식으로 추가할 것인지 레이아웃(Layout)을 관리하는 클래스
FlowLayout, BorderLayout, GridLayout 세개를 살펴보도록 하겠습니다.

컨테이너마다 디폴트로 제공하는 배치관리자가 아래의 그림처럼 다릅니다.
Frame과 Dialog는 BorderLayout 이고 Panel과 Applet은 FlowLayout 입니다.
사용자 삽입 이미지
===================================================================================
컨테이너에게 배치관리자를 지정하는 절차
1. 객체 생성 : FlowLayout f = new FlowLayout();
2. 프레임에 지정
    Frame f = new Frame();
    f.setLayout(layout);
3. add 메소드로 프레임에 컴포넌트를 추가
    Button bt01 = Button01();
    f.add(bt01);
============== 프레임의 배치관리자로 플로우 레이아웃 설정하기 ======================
플로우 레이아웃 : 컨테이너 안에 가로 방향으로 물 흐르듯이 배치할때 사용
package pack01;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
class FrameEx extends Frame{
 FrameEx(){
 방법 1. /*FlowLayout f1=new FlowLayout();// 배치관리자 객체 생성
  setLayout(f1); */ // 프레임에 해당 배치관리자를 설정*/
  /*방법 2.*/ setLayout(new FlowLayout()); // 배치관리자 객체 생성하여 프레임에 설정
  // 컴포넌트를 생성해서 프레임에 추가
  add(new Button("버튼1"));
  add(new Button("버튼2"));
  add(new Button("버튼3"));
  add(new Button("버튼4"));
  add(new Button("버튼5"));
  setSize(300,200); // 크기 설정
  setVisible(true); // 보여지도록 해야 한다.
 }
}
public class Ex01 {
 public static void main(String[] args) {
  new FrameEx();
 }
}
============= 프레임의 배치관리자로 보더 레이아웃 설정하기 ==========================
보더 레이아웃 : 컴포넌트의 위치를 동,서,남,북,센터로 배치할 때 사용
add 메서드를 통해 컴포넌트를 컨테이너에 추가할 때 동,서,남,북,센터 위치를 지정한다.
package pack02;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
class FrameEx extends Frame{
 FrameEx(){
  /*FlowLayout f1=new FlowLayout();// 배치관리자 객체 생성
  setLayout(f1);// 프레임에 해당 배치관리자를 설정*/
  setLayout(new BorderLayout()); // 배치관리자 객체 생성하여 프레임에 설정
  // 컴포넌트를 생성해서 프레임에 추가
  add(new Button("버튼1"), BorderLayout.NORTH);
  add(new Button("버튼2"), BorderLayout.WEST);
  add(new Button("버튼3"), BorderLayout.CENTER);
  add(new Button("버튼4"), BorderLayout.EAST);
  add(new Button("버튼5"), BorderLayout.SOUTH);
  setSize(300,200); // 크기 설정
  setVisible(true); // 보여지도록 해야 한다.
 }
}
public class Ex01 {
 public static void main(String[] args) {
  new FrameEx();
 }
}
============= 프레임의 배치관리자로 그리드 레이아웃 설정하기 ========================
그리드 레이아웃 : 행의 개수와 열의 개수를 지정하여 행렬의 구조로 컴포넌트를 배치
package pack03;
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
class FrameEx extends Frame{
 FrameEx(){
  /*FlowLayout f1=new FlowLayout();// 배치관리자 객체 생성
  setLayout(f1);// 프레임에 해당 배치관리자를 설정*/
  //setLayout(new GridLayout()); // 배치관리자 객체 생성하여 프레임에 설정
  //setLayout(new GridLayout(3,2)); // 원하는 행,렬을 지정할 수 있다.
  //setLayout(new GridLayout(2,3));
  setLayout(new GridLayout(1,5));
  // 컴포넌트를 생성해서 프레임에 추가
  add(new Button("버튼1"));
  add(new Button("버튼2"));
  add(new Button("버튼3"));
  add(new Button("버튼4"));
  add(new Button("버튼5"));
  setSize(300,200); // 크기 설정
  setVisible(true); // 보여지도록 해야 한다.
 }
}
public class Ex01 {
 public static void main(String[] args) {
  new FrameEx();
 }
}
========================== Panel 컨테이너 =========================================
Panel 클래스는 여러 개의 컴포넌트들을 그룹별로 모을때 주로 사용하는 프레임과 같은 일종의 컨테이너로서 그룹 단위로 한꺼번에 이벤트를 처리할 수 있다.
또한 컴포넌트들을 그룹별로 모아 둔 패널을 Frame과 같은 다른 컨테이너에 붙여야 한다.
package pack04;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Panel;
// Frame의 상속을 받는 서브 클래스를 생성한 후에
// 생성자를 추가하여 프레임의 크기 설정한 후, 보여지도록
class FrameTest extends Frame {
 Panel p1,p2,p3; // 패널 레퍼런스 변수 선언(컨테이너)
 Button b1,b2,b3,b4,b5;
 FrameTest(){
  p1=new Panel();// 생성자 안에서 인스턴스 생성
  p2=new Panel();
  p3=new Panel();
  //p1.setBackground(Color.YELLOW);
  //p2.setBackground(Color.PINK);
  //p3.setBackground(Color.BLUE);
  setBackground(Color.RED);
  // p1 북쪽, p2 가운데, p3 남쪽에 배치
  add(p1, BorderLayout.NORTH);
  add(p2, BorderLayout.CENTER);
  add(p3, BorderLayout.SOUTH);
  b1=new Button("버튼1");
  b2=new Button("버튼2");
  b3=new Button("버튼3");
  b4=new Button("버튼4");
  b5=new Button("버튼5");
  // 패널도 컨테이너이기에 버튼을 붙일 수 있다.
  p1.add(b1); p1.add(b2);
  p2.add(b3);
  p3.add(b4); p3.add(b5);
  b1.setVisible(false); b2.setVisible(false);
  p3.setVisible(false);
  // setSize(300,200); // 크기를 임의 설정
  pack(); // 크기 자동 설정
  setVisible(true);
 }
}
public class Ex01 {
 public static void main(String[] args) {
  new FrameTest();
 }
}
===================================================================================
2008. 8. 20. 14:35

Part 5. 자바에서 자주 사용되는 클래스 IV - 컬렉션 클래스와 제네릭

/*배열은 원소의 자료형태가 결정
int []s=new int[5];
String []name=new String[5];

컬렉션 클래스의 설계 원리
- 자료구조(알고리즘) - 해쉬 테이블 혹은 ArrayList가 일반화되어 정의
- 원소들을 자바의 최상위 클래스 Object 형으로 저장하도록 설계
- 원소가 추가되는 순간에 업캐스팅

ArrayList []s=new ArrayList(); // 점수를 저장하기 위한 용도 : 원소가 Object형
ArrayList []name=new ArrayList(); // 이름을 저장하기 위한 용도 : 원소가 Object형
[1.4버전까지의 컬렉션 클래스의 단점]
1. 하나의 ArrayList 객체의 원소 자료형이 혼합되어서 사용될수 있다는 단점
2. 원소를 추출한 후에는 다운캐스팅을 위한
   명시적인 형변환을 해야함(캐스트 연산자로)
   name.add("이강국");
   name.add(10); // 원소의 자료형이 혼합되어 사용 됨
   String str=(String)name.get(0); // Object 형이므로, 다운캐스팅이 필요하다.

제너릭 클래스 : 컬렉션 클래스에서 사용되는 JDK5.0에서 새롭게 나온 개념
하나의 클래스가 알고리즘을 적용받을 수 있는 원소의 자료형을 다양하게 하기 위해서
제너릭 클래스란 개념을 5.0에서 가져다 사용
제너릭 클래스는 로직만 구현하고 원소들의 자료형태에 대해서는 언급하지 않음

객체를 생성할 때에는 자료형을 언급해야 함.
ArrayList<Integer> []s=new ArrayList<Integer>(); // 원소 : Integer
ArrayList<String> []name=new ArrayList<String>(); // 원소 : String
name.add("조현상");
name.add(10); // 에러 남 : 원소의 자료형이 혼합되어 사용되지 못함
String str=name.get(0); // 다운캐스팅이 필요없다.*/

// 문자를 가져다가 대문자로 출력하기
package training;
import java.util.ArrayList;
public class Ex01 {
 public static void main(String[] args) {
  // JDK 1.4에서 사용되던 컬렉션 클래스
  ArrayList list = new ArrayList();
  list.add("apple"); // 내부적으로 저장될때에는 Object 형으로 업캐스팅됨 
  list.add("banana");
  list.add("orange");
  list.add("3"); // 단점 : 원소들의 자료형이 혼합되어 사용
  // list에 저장된 원소들을 갖다가 대문자로 출력하기
  for(int i=0;i<list.size();i++){
   System.out.println(list.get(i)+" ");
   // 대문자로 변환하기 위한 메소드로 toUpperCase가
   // String 클래스에서 제공된다.
   // 단점 : 다운 캐스팅을 위해 캐스트 연산자를 기술해야 한다.
   String item=(String)list.get(i);
   System.out.println(item.toUpperCase());
  } 
 }
}
===============점수 5개로 총점과 평균을 구하기 1. 배열 ==============================
// 배열 : 배열의 크기가 변경되지 않는다. 배열에 원소를 추가하거나 삭제할 수 없다.
// ArrayList : 배열의 크기가 변경 되고 배열에 원소를 추가하거나 삭제할 수 있다.
public class Ex03 {
 public static void main(String[] args) {
  int [] a={90, 85, 70, 80, 95};
  int tot=0;
  for(int i=0;i<a.length;i++){
   System.out.println(a[i] + " ");
   tot+=a[i];
  }
  System.out.println("\n 총점 : " + tot);
  System.out.println("\n 평균 : " + tot/a.length);
 }
}
===============점수 5개로 총점과 평균을 구하기 2. ArrayList===========================
import java.util.ArrayList;
public class Ex04 {
 public static void main(String[] args) {
  ArrayList list=new ArrayList();
  System.out.println("원소의 갯수 : "+list.size());
  list.add(90);
  list.add(85);
  list.add(70);
  list.add(80);
  list.add(95);
  System.out.println("원소의 갯수 : "+list.size());
  int tot=0;
  for(int i=0;i<list.size();i++){
   System.out.println(list.get(i) + " ");
   tot=tot+(Integer)list.get(i);
   // tot=tot+list.get(i);
  }
  System.out.println("\n 총점 : " + tot);
  System.out.println("\n 평균 : " + tot/list.size());
 }
}
===================================================================================
package training;
import java.util.ArrayList;
public class Ex01 {
 public static void main(String[] args) {
  // JDK 1.4에서 사용되던 컬렉션 클래스
  ArrayList list = new ArrayList();
  list.add("apple"); // 내부적으로 저장될때에는 Object 형으로 업캐스팅됨 
  list.add("banana");
  list.add("orange");
  list.add("3"); // 단점 : 원소들의 자료형이 혼합되어 사용
  // list에 저장된 원소들을 갖다가 대문자로 출력하기
  for(int i=0;i<list.size();i++){
   System.out.println(list.get(i)+" ");
   // 대문자로 변환하기 위한 메소드로 toUpperCase가
   // String 클래스에서 제공된다.
   // 단점 : 다운 캐스팅을 위해 캐스트 연산자를 기술해야 한다.
   String item=(String)list.get(i);
   System.out.println(item.toUpperCase());
  } 
 }
}
===================================================================================
package training;
import java.util.ArrayList;
public class Ex02 {
 public static void main(String[] args) {
  // 단점 : 원소들의 자료형이 혼합되어 사용되지 않도록
  // 단점 : 다운 캐스팅하지 않도록
  // JDK5.0부터 컬렉션 클래스를 제너릭 클래스 형태로 제공
  // 객체 생성 시, 원소의 자료형들을 결정하기
  // 제너릭_컬렉션 클래스 <원소의 자료형>
  ArrayList<String> list = new ArrayList<String>();
  list.add("apple");  
  list.add("banana");
  list.add("orange");
  // list.add(3); // 원소들의 자료형이 혼합되어 사용되지 않도록
  for(int i=0;i<list.size();i++){
   System.out.println(list.get(i)+" ");  
   String item=list.get(i);
   // String형으로 다운캐스팅 하지 않아도 된다.
   System.out.println(item.toUpperCase());
  } 
 }
}
===================================================================================
package training;
import java.util.Enumeration; // import를 하기 위해서 <ctrl>+<shift>+o(영문)
import java.util.Hashtable;
public class Ex03 {
 public static void main(String[] args) {
  // key, value를 쌍으로 저장하는 해쉬 테이블
  // "이강국" 65.5
  Hashtable<String, Double>ht=new Hashtable<String, Double>();
  ht.put("이강국", 63.5);
  ht.put("김재필", 68.5);
  ht.put("김경윤", 70.5);
  System.out.println(ht.get("이강국"));
  // 해쉬 테이블에 저장된 모든 정보를 얻어오기
  Enumeration<String> name=ht.keys();
  while(name.hasMoreElements()){
   String key=name.nextElement();
   Double weight=ht.get(key);
   System.out.println(key + " : " + weight);
  }
 }
}
===================================================================================

2008. 8. 5. 15:19

너네 공부하는 그룹 말이야~



스프링 노트의 그룹 노트를 쓰든,
티스토리의 팀블로그를 쓰든
카페를 만들든

그런 공간 있은 것이 좋을 것 같아~ ^^