Java의 특징? 하나의 상속만 extends가능하지만 여러개의 인터페이스를 impliments 가능
상속이란? 부모의 변수나 메소드를 자손이 훼손하지 않는 범위로 사용할 수 있고, 그 메소드를 오버로딩할 수 있고, 그럴 때 부모가 실행하는 메소드를 그림자메소드 化 한다.
개발도구 설치
오라클11g(win32_11gR1~)
RDBMS(서버 제품군) 중 가장 비싸고 가장 신뢰도 높은 오라클11g
설치 순서
오라클 실습
Toad
- toad 실행(id/pw/pw 기억하기 클릭)
- toad 글씨 설정(view → toadoption →Display → Editor)
- 실습
```sql
SELECT deptno, dname, loc
FROM dept;
SELECT sysdate, to_char(sysdate, 'YYYY-MM-DD HH24:MI:SS AM') FROM dual;
SELECT
컬럼명1, 컬럼명2, ......
FROM 집합이름, 집합이름,,,,,,
SELECT
d.deptno, e.ename, d.dname
FROM emp e, dept d
WHERE e.deptno = d.deptno
AND e.ename = 'SMITH';
```
- 다른 ip로 가보기
- Session → New Connection → ip 입력
- 자리비워서 연결끊기면 Session → Test Connection
import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Reload1 extends JFrame implements ActionListener{
/*선언부*/
JPanel jp = new JPanel();
JButton jbtnNew = new JButton("새로고침");
JButton jbtn = new JButton("조회");
/*생성자*/
Reload1(){
initDisplay();
}
/*정의메소드*/
public void initDisplay() {
jbtnNew.addActionListener(this);
this.add("North",jbtnNew);
jp.setBackground(Color.pink);
this.add("Center",jp);
this.setSize(500,400);
this.setVisible(true);
}
/*메인메소드*/
public static void main(String[] args) {
Reload1 r1 = new Reload1();
}
@Override
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
if(obj == jbtnNew) { //새로고침 누르면, 창 끄고 조회버튼을 가운데에 띄워줘.
Container cp = this.getContentPane();
cp.remove(jp);
JPanel jpCopy = null; //candidate 찜하기
jp = null;
jp = new JPanel(); //새로 생성되는 여기서 가비지 캘릭터가 위 값을 회수해가서 candidate 상태에 빠짐.
jpCopy = jp; //치환하기(이 부분 연습 필요)
jpCopy.setBackground(Color.gray);
this.add("Center",jpCopy);
this.revalidate();
this.repaint();
}
}
}
public static void main(String[] args) {
/*면이 존재하는 것처럼 코드 전개*/
int is[][] = new int [2][3]; //3*3 테이블임. 가로는 0부터 시작!
is =new int[][] {{1,2,3},{4,5,6}}; //선언, 생성(초기화) 동시에
// is ={{1,2,3},{4,5,6}}; //문법 오류
System.out.println(is.length); //가로 row갯수
System.out.println(is[0].length); //세로 colum갯수 - 컬럼명과 변수명 통일(for 연속성)
for(int x=0;x<is.length;x++) { //x는 로우값(0,1) -> 배열의 주소번지와 첫번째 주소번지의 값은 같음
for(int y=0;y<is[x].length;y++) {
System.out.println("is["+x+"]"+"is["+y+"] : "+is[x][y]);
}
}
}
상속
class Super{
int i;
public Super() {
System.out.println("Super() 호출");
}
public void methodA() {
System.out.println("methodA 호출");
}
public void methodA(int i) {
System.out.println("Super methodA(int i) 호출");
}
}
class Sub extends Super{
public Sub() {
i=2; //상속받은 Super의 전변 재정의 가능함. 어떻게?
System.out.println("Sub() 호출");
}
@Override
// public void methodA(double i) { //부모의 메소드의 파라미터값이 변화하는 것을 JVM이 확인하고 있음.
public void methodA(int x) {
System.out.println("Sub methodA(int x) 호출");
}
}
public class Extends1 {
public static void main(String[] args) {
Sub sub = new Sub(); //상속으로인해 부모의 생성자 먼저 거치기 때문에 Super가 먼저 호출이 됨.
System.out.println(sub.i); //재정의 된 2로 출력이 됨.
sub.methodA(0); //오버라이드로 인해 부모의 메소드(shadow method)가 아닌 자손의 메소드로 출력이 됨.
//부를 생성해서 출력하면? 출력이 됨.
Super super1 = new Super();
super1.methodA(30);
}
}
API
용어정리
SELECT: 이 문은 데이터베이스에 있는 하나 이상의 테이블에서 데이터를 검색하는 데 사용됩니다. 예를 들어 다음 SQL 쿼리는 "customers" 테이블에서 모든 레코드를 검색합니다.
INSERT: 이 문은 테이블에 새로운 데이터를 삽입하는 데 사용됩니다. 예를 들어, 다음 SQL 문은 "customers" 테이블에 새 행을 삽입합니다.
UPDATE: 이 문은 테이블의 기존 데이터를 수정하는 데 사용됩니다. 예를 들어 다음 SQL 문은 "customers" 테이블에서 ID가 1인 고객 주소를 업데이트합니다.
DELETE: 이 문은 테이블에서 데이터를 삭제하는 데 사용됩니다. 예를 들어 다음 SQL 문은 "customers" 테이블에서 ID가 1인 고객을 삭제합니다.
고객 SELECT * FROM;
INSERT INTO 고객(ID, 이름, 주소) VALUES (1, 'John Smith', '123 Main St');
고객 UPDATE SET 주소 = '456 Park Ave' WHERE id = 1;
고객에게서 DELETE FROM WHERE id = 1;