oracle_select_option.txt


1. select 문

SELECT [DISTINCT] { *, column, [alias], , , }

FROM table_name

[WHERE conditions]

[ORDER bY {column, expression} [ ASC | DESC] ];


DISTINCT : 중복되는 행을 제거하는 옵션

* : 테이블의 모든 column을 출력

alias : 해당 column에 대해서 다른 이름을 부여 할때

table_name : 질의 대상 테이블 명

WHERE : 조건을 만족 하는 행들만 검색

conditions : column, 표현식, 상수 및 비교연산자

ORDER BY : 질의 결과 정렬을 위한 옵션 (ASC:오름차순(default), DESC:내림차순)



2. WHERE 절에 올 수 있는 연산자

 BETWEEN a and b : a와 b 사이의 데이터를 출력(a, b 값 포함)

  SELECT empno, ename FROM emp where  sal BETWEEN 3000 AND 5000;

  -->  급여가 3000에서 5000 사이인 사원만 출력


IN (list,,) : list의 값들 중 어느 하나와 일치하는 데이터 출력

   SELECT empno, ename FROM emp where  empno IN(7900, 7934);

  -->  사번이 7900 또는  7934번인 사원의 사번과 이름 출력


LIKE : 문자 형태로 일치하는 데이터를 출력

" % " : 여러개의 문자열을 나타내는 와일드카드

  SELECT empno, ename FROM emp where UPPER(ename) like '%K%';

  -->  이름 중 'K' 문자가 들어가 있는 사원 정보 출력

" _ " :  단 하나자의 문자열을 나타내는 와일드카드

  SELECT empno, ename FROM emp where UPPER(ename) like '_I%';

  -->  '_' 는 한문자, 이름 중 'I' 문자가 두번째에 위치한 사원 정보 출력


IS NULL : NULL 값을 가진 데이터를 출력

NOT BETWEEN a AND b : a와 b 사이에 있지 않은 데이터를 출력(a, b값 포함하지 않음)

NOT IN (list) : list와 일치 하지 않는 데이터를 출력

  SELECT empno, ename FROM emp where  empno NOT IN(7900, 7934);

  -->  사번이 7900 또는  7934번이 아닌 사원의 사번과 이름 출력

NOT LIKE : 문자형태와 일치 하지 않는 데이터를 출력

NOT IS NULL : NULL 값을 갖지 않는 데이터를 출력

 


***********************************************************


select * from saram



select * from saram where age>10 and age<23  order by salary desc

같은의미 다른 명령어

select * from SARAM where age between 10 and 23 order by salary desc



> ASC : 오름차순 정렬, DESC : 내림차순 정렬



***********************************************************


session.setattribute("string",object)  ------> 세션정보를 서버에 저장



***********************************************************

Cookie (교재 p.159 : 제 12강 Cookie&Session 참고)

Cookie ! 오픈마켓에서 오늘 본 품목을 옆에 띄워줄때 응용된다.

쿠키는 string 이름과 string value로 이루어져 있다.

session과 cookie의 차이

session은 서버에 저장,
cookie는 client에 저장


쿠키의 구성요소
1.이름 : 각각의 쿠키를 구별하는데 사용되는 이름
2.값 : 쿠키의 이름과 관련된 값
3.유효시간 : 쿠키의 유지시간
4.도메인 : 쿠키를 전송할 도메인
5.경로 : 쿠키를 전송할 요청자료

쿠키관련 메소드

 반환형

메소드 

설명 

 String 

 getName()

 쿠키의 이름을 구한다

 String 

 getValue()

 쿠키의 값을 구한다

 void

 setValue(String value)

 쿠키의 값을 지정한다

 void

 setDomain(String pattern)

 이 쿠키가 전송될 서버의 도메인을 지정한다

 String 

 getDomain()

 쿠키의 도메인을 구한다

 void

 setPath(String url)

 쿠키를 전송할 경로를 지정한다

 String 

 getPath()

 쿠키의 전송경로를 구한다

 void

 setMaxAge(int expiry)

 쿠키의 유효시간을 초단위로 지정한다. 음수를 입력할 경우 웹 브라우저를 닫을 때 쿠키가 함께 삭제 된다

 int

 getMaxAge()

 쿠키의 유효시간을 구한다


실습


<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String sing = "choa";
session.setAttribute("id", sing);
Cookie c = new Cookie("idol","iu");
c.setValue("exid");
c.setMaxAge(60*60*24*7);
response.addCookie(c);
%>
<%=c.getName() %> : 쿠키의 이름<br>
<%=c.getValue() %> : value of cookie
</body>
</html>


결과

idol : 쿠키의 이름
exid : value of cookie


***********************************************************

배열로담기

cookie1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String sing = "choa";
session.setAttribute("id", sing);
Cookie c = new Cookie("idol","iu");
c.setValue("exid");
c.setMaxAge(60*60*24*7);
response.addCookie(c);
%>
<%=c.getName() %> : 쿠키의 이름<br>
<%=c.getValue() %> : value of cookie<br>
<a href="./cookie2.jsp">cookie2</a>
</body>
</html>

cookie2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
Cookie [] co = request.getCookies(); //배열로 얻어온다. getCookie's'()
for(int i=0;i<co.length;i++){ %><br>
쿠키의 이름 :<%=co[i].getName() %><br>
쿠키의 벨류 :<%=co[i].getValue() %>
<% }%>
%>
</body>
</html>




***********************************************************

세션, 쿠키가 남긴 데이터를 이용해서 분석

알리바바

그 넓은 영토에서 어떻게 하루만에 배송이 가능한가?

세션, 쿠키를 이용한 데이터 분석으로 

미리 구매가 많이 일어나는 지점에 가져다 놓는다.


***********************************************************

삼성페이, 카카오페이에서 벌어들이는 수익은?

수수료, ? ===> 미미한 수익

데이터를 모으기 위함. ==> 미래를 예측

***********************************************************

게시판 만들기



작성자 , 내용, 제목, 번호



이중 프라이머리 키는 ??  ==> 번호 , 번호는 자동생성되도록,

일단 테이블 만들기

create table noticBoard(
no number(5) primary key,
writer varchar2(100),
title varchar2(100),
contents varchar2(500));

commit;

이클립스 스크랩북에서 입력
insert into noticBoard values (1,'admin','test1','test1')
insert into noticBoard values (2,'admin','test2','test2')
select * from noticBoard

select count(no) from noticBoard 
>개수 세기 결과 count(no) : 2

count는 게시글의 갯수


1,2, 5

insert into noticBoard values (5,'admin','test5','test5')
select * from noticBoard

select count(no) from noticBoard
>게시글의 수 : 3을 리턴

select max(no) from noticBoard
>가장 큰 번호 : 5를 리턴

max는 번호 중에 가장 큰 수를 리턴;


이 경우에는 max를 사용하는 것이 낫다.




select count(no), max(no) from noticBoard




게시판폼

nWriteForm.jsp


<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

<style type="text/css">

table{


}

</style>

</head>

<body>

<form action="./noticePro.jsp" method="post">

<table border="1">

   <tr>

   <td width="30%">제  목 : </td>

    <td width="70%"><input type="text" name="title"><br></td>

   </tr>

<tr>

<td>작성자 : </td>

<td><input type="text" name="writer" ><br></td>

</tr>

<tr>

<td colspan=2>

내  용 : <br>

<textarea rows="20" cols="80" name="contents" ></textarea>

</td>

</tr>

<tr>

<td>

<input type="submit" value="등록">

<input type="reset" value="다시 작성">

</td>

</tr>

</table>

</form>

</body>

</html>



프로세스 noticePro.jsp


<%@page import="notice.NoticeBoardDAO"%>

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>Insert title here</title>

</head>

<body>

<jsp:useBean id="n" class="notice.NoticeBoardDTO"/>

<jsp:setProperty property="*" name="n"/>

<%

NoticeBoardDAO bd = new NoticeBoardDAO();

int num = bd.setNotice(n);

if(num>0){%>

등록완료<br>

<a href="list.jsp">리스트보기</a>

      <%

      }else{

      response.sendRedirect("./nWriteForm.jsp");

      }

%>

%>

</body>

</html>



자바DAO NoticeBoardDAO.java


package notice;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.ArrayList;


import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array;


public class NoticeBoardDAO {


private String user = "user01";

private String password = "user01";

private String url="jdbc:oracle:thin:@192.168.116.128:1521:xe";

private String driver="oracle.jdbc.driver.OracleDriver";

private Connection con;

private PreparedStatement st;

private ResultSet rs;

public NoticeBoardDAO(){

try {

Class.forName(driver); //드라이버 로딩

con = DriverManager.getConnection(url, user, password);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}


//리스트 꺼내오기...

public ArrayList<NoticeBoardDTO> getList(){

ArrayList<NoticeBoardDTO> ar = new ArrayList<>();

String sql = "select no, title, writer from noticBoard order by no desc";

//sql문 스크랩북에서 확인하기

try {

st = con.prepareStatement(sql);

rs = st.executeQuery();

while(rs.next()){

NoticeBoardDTO n = new NoticeBoardDTO();

n.setNo(rs.getInt("no"));

n.setTitle(rs.getString("title"));

n.setWriter(rs.getString("writer"));

ar.add(n);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return ar;

}

//글쓰기 입력 메소드

public int setNotice(NoticeBoardDTO d){

int num = getNo();

String sql = "insert into noticBoard values(?, ?, ?, ?)";

try {

st = con.prepareStatement(sql);

st.setInt(1, num+1);

st.setString(2, d.getWriter());

st.setString(3, d.getTitle());

st.setString(4, d.getContents());

num = st.executeUpdate();

} catch (Exception e) {

num=0;

e.printStackTrace();

}

return num;

}

//글번호 최대값을 가져오는 메소드(1,2,5 번다음에 글쓰면 3이아니라 6이 오게해줌)

int getNo(){

String sql = "select max(no) from noticBoard";

int num=0;

try {

Statement st = con.createStatement();

rs = st.executeQuery(sql);

if(rs.next()){

num=rs.getInt(1);

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return num;

}

public static void main(String[] args) {

NoticeBoardDAO n = new NoticeBoardDAO();

System.out.println(n.getNo());

}


}




자바 DTO  NoticeBoardDTO.java

package notice;

public class NoticeBoardDTO {
private int no;
private String writer;
private String title;
private String contents;
public int getNo() {
return no;
}
public void setNo(int no) {
this.no = no;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContents() {
return contents;
}
public void setContents(String contents) {
this.contents = contents;
}
}


리스트  list.jsp

<%@page import="notice.NoticeBoardDTO"%>
<%@page import="java.util.ArrayList"%>
<%@page import="notice.NoticeBoardDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
 <%
  NoticeBoardDAO nd = new NoticeBoardDAO();
  ArrayList<NoticeBoardDTO> ar = nd.getList();
 %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- table 사용해서 -->
<table border=1>
<tr>
<td>글번호</td>
<td>글제목</td>
<td>작성자</td>
</tr>
<% 
for(int i=0;i<ar.size();i++){
%>
<tr>
<td><%=ar.get(i).getNo() %></td>
<td><%=ar.get(i).getTitle() %></td>
<td><%=ar.get(i).getWriter() %></td>
</tr>
<%} %>
</table>
</body>
</html>



***********************************************************


DAO : DB와 연결하는 클래스


DTO : 변수(접근지정자 private)와 게터세터 메소드로 이루어진 클래스


***********************************************************


get 방식 : 링크를 클릭하는 것은 전부 get 방식이다.

post 방식



***********************************************************

a링크로 파라미터 넘기기  ?파라미터이름=값


newFile.jsp


<%@page import="notice.NoticeBoardDTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
NoticeBoardDTO n = new NoticeBoardDTO();
n.setNo(3);

%>

<a href="newFile2.jsp?n=<%=n.getNo()%>">test</a>
</body>
</html>


newFile2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String name = request.getParameter("n");
%>
<%=name %>
</body>
</html>


***********************************************************





***********************************************************




***********************************************************



블로그 이미지

테시리

,
제약조건

 무결성 제약조건

역할 

 NOUT NULL

 NULL을 허용하지 않음

UNIQUE 

 중복된 값을 허용하지 않음 

 PRIMARY KEY

NULL 중복된 값을 허용하지 않음 

 FOREIGN KEY

참조되는 테이블의 컬럼의 값이 존재 하면 허용 

 CHECK, DEFAULT

저장 가능한 데이터의 범위나 조건을 지정 




****************************************************************


테이블 만들기


create table teach(

ID number(3) primary key,

pw number(3) not null,

name varchar2(10) not null,

class number(2),

subject varchar2(20),

age number(3),

gender char(10),

experience number(3));


확인


select * from teach


행추가

insert into TEACH

values(1,123,'Kim',1,'math',40,'male',30);



****************************************************************

SQL Scrapbook


create table teach(

ID number(3) primary key,

pw number(3) not null,

name varchar2(10) not null,

class number(2),

subject varchar2(20),

age number(3),

gender char(10),

experience number(3));



select * from teach


insert into TEACH

values(10,123,'Yeom',10,'Act',32,'male',3);



create table prod(

keynumber number(3) primary key,

name varchar2(20) not null,

price number(5) not null,

stock number(3));


select*from prod



*******************************************************************

<내코드>


#메인

package java_0811;


import java.util.Scanner;


public class DbTest {


public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

SelectTeacher sct = new SelectTeacher();

while(true){

System.out.println("메뉴를 선택하세요.");

System.out.println("1.전체조회 2.선택조회 3.입력 4.수정 5.종료");

int menu = sc.nextInt();

if(menu==1){

sct.selectAll();

}else if(menu==2){

sct.findOne();

}else if(menu==3){

}else if(menu==3){

}else if(menu==3){

}else{

break;

}

}

}


}




#검색
package java_0811;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class SelectTeacher {
Scanner sc = new Scanner(System.in);
public void selectAll(){
String id = "user01";
String pw = "user01";
String url = "jdbc:oracle:thin:@192.168.116.128:1521:xe";
String driver = "oracle.jdbc.driver.OracleDriver";
Connection con = null;
Statement st = null;
ResultSet rs = null;
try {
Class.forName(driver);
System.out.println("드라이버 로딩성공");
con = DriverManager.getConnection(url, id, pw);
System.out.println("데이터베이스 접속성공");
st = con.createStatement();
String sql = "select*from teach";
rs = st.executeQuery(sql);
while(rs.next()){
int sid = rs.getInt("ID");
int spw = rs.getInt("PW");
String sname = rs.getString("NAME");
int sclass = rs.getInt("CLASS");
String ssubject = rs.getString("SUBJECT");
int sage = rs.getShort("AGE");
String sgender = rs.getString("GENDER");
int sexp = rs.getInt("EXPERIENCE");
System.out.println("ID번호 :" +sid);
System.out.println("PW번호 :"+spw);
System.out.println("이름 :"+sname);
System.out.println("담임 :"+sclass+"반");
System.out.println("과목 :"+ssubject);
System.out.println("나이 :"+sage);
System.out.println("성별 :"+sgender);
System.out.println("경력 :"+sexp+"년");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
rs.close();
st.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void findOne(){
String id = "user01";
String pw = "user01";
String url = "jdbc:oracle:thin:@192.168.116.128:1521:xe";
String driver = "oracle.jdbc.driver.OracleDriver";
Connection con = null;
Statement st = null;
ResultSet rs = null;
try {
Class.forName(driver);
System.out.println("드라이버 로딩성공");
con = DriverManager.getConnection(url, id, pw);
System.out.println("데이터베이스 접속성공");
st = con.createStatement();
System.out.println("찾은 ID를 입력하세요.");
String wid = sc.next();
String sql = "select*from teach where ID="+"'"+wid+"'";
rs = st.executeQuery(sql);
if(rs.next()){
int sid = rs.getInt("ID");
int spw = rs.getInt("PW");
String sname = rs.getString("NAME");
int sclass = rs.getInt("CLASS");
String ssubject = rs.getString("SUBJECT");
int sage = rs.getShort("AGE");
String sgender = rs.getString("GENDER");
int sexp = rs.getInt("EXPERIENCE");
System.out.println("ID번호 :" +sid);
System.out.println("PW번호 :"+spw);
System.out.println("이름 :"+sname);
System.out.println("담임 :"+sclass+"반");
System.out.println("과목 :"+ssubject);
System.out.println("나이 :"+sage);
System.out.println("성별 :"+sgender);
System.out.println("경력 :"+sexp+"년");

}else{
System.out.println("해당 ID가 없습니다.");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
rs.close();
st.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}



<같은것>
package java_0811;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class SelectTeacher {
Scanner sc = new Scanner(System.in);
String id = "user01";
String pw = "user01";
String url = "jdbc:oracle:thin:@192.168.116.128:1521:xe";
String driver = "oracle.jdbc.driver.OracleDriver";
Connection con = null;
Statement st = null;
ResultSet rs = null;
public void selectAll(){
try {
Class.forName(driver);
System.out.println("드라이버 로딩성공");
con = DriverManager.getConnection(url, id, pw);
System.out.println("데이터베이스 접속성공");
st = con.createStatement();
String sql = "select*from teach";
rs = st.executeQuery(sql);
while(rs.next()){
int sid = rs.getInt("ID");
int spw = rs.getInt("PW");
String sname = rs.getString("NAME");
int sclass = rs.getInt("CLASS");
String ssubject = rs.getString("SUBJECT");
int sage = rs.getShort("AGE");
String sgender = rs.getString("GENDER");
int sexp = rs.getInt("EXPERIENCE");
System.out.println("ID번호 :" +sid);
System.out.println("PW번호 :"+spw);
System.out.println("이름 :"+sname);
System.out.println("담임 :"+sclass+"반");
System.out.println("과목 :"+ssubject);
System.out.println("나이 :"+sage);
System.out.println("성별 :"+sgender);
System.out.println("경력 :"+sexp+"년");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
rs.close();
st.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void findOne(){
try {
Class.forName(driver);
System.out.println("드라이버 로딩성공");
con = DriverManager.getConnection(url, id, pw);
System.out.println("데이터베이스 접속성공");
st = con.createStatement();
System.out.println("찾은 ID를 입력하세요.");
String wid = sc.next();
String sql = "select*from teach where ID="+"'"+wid+"'";
rs = st.executeQuery(sql);
if(rs.next()){
int sid = rs.getInt("ID");
int spw = rs.getInt("PW");
String sname = rs.getString("NAME");
int sclass = rs.getInt("CLASS");
String ssubject = rs.getString("SUBJECT");
int sage = rs.getShort("AGE");
String sgender = rs.getString("GENDER");
int sexp = rs.getInt("EXPERIENCE");
System.out.println("ID번호 :" +sid);
System.out.println("PW번호 :"+spw);
System.out.println("이름 :"+sname);
System.out.println("담임 :"+sclass+"반");
System.out.println("과목 :"+ssubject);
System.out.println("나이 :"+sage);
System.out.println("성별 :"+sgender);
System.out.println("경력 :"+sexp+"년");

}else{
System.out.println("해당 ID가 없습니다.");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
rs.close();
st.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}



**********************************************************




<선생님 코드>


#메인


public class DMain {


public static void main(String[] args) {

SelectTeacher st = new SelectTeacher();

st.selTeacher();

//st.selectAll();

}


}




#검색

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Scanner;


public class SelectTeacher {

String id="user01";

String pw="user01";

String url="jdbc:oracle:thin:@192.168.40.128:1521:xe";

String driver="oracle.jdbc.driver.OracleDriver";

Connection con;

public SelectTeacher() {

try {

Class.forName(driver);

con = DriverManager.getConnection(url, id, pw);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public void selectAll(){

ResultSet rs=null;

try {

Statement st = con.createStatement();

String sql="select * from teachers";

rs = st.executeQuery(sql);

while(rs.next()){

System.out.println(rs.getString("id"));

System.out.println(rs.getString("password"));

System.out.println(rs.getString("name"));

System.out.println(rs.getString("gender"));

System.out.println(rs.getInt("age"));

System.out.println(rs.getString("subject"));

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally {

try {

rs.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

public void selTeacher(){

ResultSet rs=null;

try {

String sql = "select * from teachers where id=?";

//Statement st = con.createStatement();

PreparedStatement st = con.prepareStatement(sql);

Scanner sc = new Scanner(System.in);

System.out.println("찾을 ID를 입력하세요");

String idd = sc.next();

st.setString(1, idd);

rs = st.executeQuery();

if(rs.next()){

System.out.println(rs.getString("id"));

System.out.println(rs.getString("password"));

System.out.println(rs.getString("name"));

System.out.println(rs.getString("gender"));

System.out.println(rs.getInt("age"));

System.out.println(rs.getString("subject"));

}else{

System.out.println("그런 사람 없다");

}

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally {

try {

rs.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}


}




PrepareStatement 사용법 익히기

?사용법.  그리고 preparestatement에서 인덱스번호는 1번부터 시작


프리페어드 사용법

con = DriverManager.getConnection(url,id,pw);
String sql = " " ;
PreparedStatement st = con.preparedStatement(sql);
st.setString(1,"id");
st.executeQuery();



******************************************************

PreparedStatement 사용해서 insert문 써보기

[내가짠거]

package java_0811;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class InsertTeacher {
Scanner sc = new Scanner(System.in);
public void insert(){
String id = "user01";
String pw = "user01";
String url = "jdbc:oracle:thin:@192.168.116.128:1521:xe";
String driver = "oracle.jdbc.driver.OracleDriver";
Connection con = null;
PreparedStatement st = null;
try {
Class.forName(driver);
System.out.println("드라이버 로딩성공");
con = DriverManager.getConnection(url, id, pw);
System.out.println("데이터베이스 접속성공");
String sql = "insert into teach values(?,?,?,?,?,?,?,?)";
st = con.prepareStatement(sql);
System.out.println("선생님을 등록합니다.");
System.out.println("ID번호를 입력하세요");
String iid = sc.next();
st.setString(1, iid);
System.out.println("PW번호를 입력하세요.");
String ipw = sc.next();
st.setString(2, ipw);
System.out.println("추가할 이름 입력");
String iname = sc.next();
st.setString(3, iname);
System.out.println("반번호 입력");
String iclass = sc.next();
st.setString(4, iclass);
System.out.println("과목이름 입력");
String isub = sc.next();
st.setString(5, isub);
System.out.println("나이 입력");
String iage = sc.next();
st.setString(6, iage);
System.out.println("성별입력");
String igender = sc.next();
st.setString(7, igender);
System.out.println("경력입력");
String iexp = sc.next();
st.setString(8, iexp);
st.executeUpdate();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
st.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}




******************************************************************

ID 중복검사 기능 추가

[쌤코드]

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class InsertTeacher {
public void insertTest(){
String id="user01";
String pw="user01";
String url="jdbc:oracle:thin:@192.168.40.128:1521:xe";
String driver="oracle.jdbc.driver.OracleDriver";
Scanner sc = new Scanner(System.in);
Connection con;
PreparedStatement st=null;
ResultSet rs=null;
try {
Class.forName(driver);
con = DriverManager.getConnection(url, id, pw);
//DB 연결 끝
System.out.println("id를 입력하세요");
String yId= sc.next();
String sql ="select * from teachers where id=?";
st = con.prepareStatement(sql);
st.setString(1, yId);
rs = st.executeQuery();
if(rs.next()){
System.out.println("아이디가 있다.");
}else{
System.out.println("사용 가능한 아이디 입니다.");
System.out.println("비번을 입력하세요");
String ypw = sc.next();
System.out.println("이름을 입력하세요");
String name = sc.next();
System.out.println("성별을 입력하세요");
String gender = sc.next();
System.out.println("나이를 입력하세요");
int age = sc.nextInt();
System.out.println("과목을 입력하세요");
String subject = sc.next();
rs.close();
st.close();
sql ="insert into teachers values(?,?,?,?,?,?)";
st = con.prepareStatement(sql);
st.setString(1, yId);
st.setString(2, ypw);
st.setString(3, name);
st.setString(4, gender);
st.setInt(5, age);
st.setString(6, subject);
st.executeUpdate();
System.out.println("회원가입에 성공했다");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
//rs.close();
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

}



***쌤거 보고 동일하게 한거

package java_0811;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;

public class InsertTeacher {
Scanner sc = new Scanner(System.in);
public void insert(){
String id = "user01";
String pw = "user01";
String url = "jdbc:oracle:thin:@192.168.116.128:1521:xe";
String driver = "oracle.jdbc.driver.OracleDriver";
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
Class.forName(driver);
System.out.println("드라이버 로딩성공");
con = DriverManager.getConnection(url, id, pw);
System.out.println("데이터베이스 접속성공");
System.out.println("선생님을 등록합니다.");
System.out.println("ID번호를 입력하세요");
String iid = sc.next();
String sql = "select*from teach where id=?";
st = con.prepareStatement(sql);
st.setString(1, iid);
rs = st.executeQuery();
if(rs.next()){
System.out.println("이미 존재하는 ID입니다.");
}else{
System.out.println("사용가능한 아이디 입니다.");
System.out.println("PW번호를 입력하세요.");
String ipw = sc.next();
System.out.println("추가할 이름 입력");
String iname = sc.next();
System.out.println("반번호 입력");
String iclass = sc.next();
System.out.println("과목이름 입력");
String isub = sc.next();
System.out.println("나이 입력");
String iage = sc.next();
System.out.println("성별입력");
String igender = sc.next();
System.out.println("경력입력");
String iexp = sc.next();
rs.close();
st.close();
sql = "insert into teach values(?,?,?,?,?,?,?,?)";
st = con.prepareStatement(sql);
st.setString(1, iid);
st.setString(2, ipw);
st.setString(3, iname);
st.setString(4, iclass);
st.setString(5, isub);
st.setString(6, iage);
st.setString(7, igender);
st.setString(8, iexp);
st.executeUpdate();
System.out.println("등록 성공");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
st.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}






*******************************************************

로그인기능 구현하기


선생님거 보고 만든거




package java_0811;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

public class LogDb {

public void log(){
String id = "user01";
String pw = "user01";
String url = "jdbc:oracle:thin:@192.168.116.128:1521:xe";
String driver = "oracle.jdbc.driver.OracleDriver";
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
Scanner sc = new Scanner(System.in);
try {
Class.forName(driver);
con = DriverManager.getConnection(url, id, pw);
System.out.println("아이디를 입력하세요.");
String lid = sc.next();
System.out.println("비밀번호를 입력하세요.");
String lpw = sc.next();
String sql = "select*from teach where id=? and pw=?";
st = con.prepareStatement(sql);
st.setString(1, lid);
st.setString(2, lpw);
rs = st.executeQuery();
if(rs.next()){
System.out.println("로그인성공");
}else{
System.out.println("로그인실패");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}



메인클래스

package java_0811;

import java.util.Scanner;

public class DbTest {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
SelectTeacher sct = new SelectTeacher();
InsertTeacher ict = new InsertTeacher();
LogDb lg = new LogDb();
while(true){
System.out.println("메뉴를 선택하세요.");
System.out.println("1.전체조회 2.선택조회 3.등록 4.수정 5.로그인 6.종료");
int menu = sc.nextInt();
if(menu==1){
sct.selectAll();
}else if(menu==2){
sct.findOne();
}else if(menu==3){
ict.insert();
sct.selectAll();
}else if(menu==4){
}else if(menu==5){
lg.log();
}else{
break;
}
}
}

}




**************************************************************

제품 데이터베이스 만들고 

구매하기 구현



제품번호
제품이름
제품가격
재고수량



















블로그 이미지

테시리

,

vmware2 설치하면 ftp안쓰고도 드래그앤 드랍 가능하다


[복습]


<서버>

시작


cmd


user01



select * from tab;





(students   table 만들기) 

create table 테이블명(

필드명 데이터 타입,

필드명 데이터 타입 옵션,


); 



**********************************************


SQL ( Structured Query Language ) 문


select (데이터검색)

insert (데이터 입력)

update (데이터 수정)

delete (데이터 삭제)


....

교안참고



********************


user01 로그인 끊고


scott 로그인


select * from dept;


select deptno,dname from dept;



select ename,job,sal from emp;


select ename from emp where sal>=1500;


select ename,job,sal from emp where job='MANAGER';    // 값들은 대소문자 구분




conn 로그인하고 싶은 사람의 아이디와 비번


conn user01/user01


show user;



테이블에 데이터 입력하기

값이 없는 데이터는 insert into 테이블명(필드명 해야함)



intsert into 테이블명 

values(



...






이클립스


데이터베이스 커넥션


myoracle 우클릭


연결하면 밑에 xe뜸


다시 myoracle 우클릭 > 스크랩북




Type:Oracle11

Name:My Oracle

Database:xe




vmware에서 commit을 때려줘야 이클립스에 반영된다


(github랑 비슷하네? 커밋때리기)


*************************************


select 문 = executeQuery


insert문, update문, delete문 = executeUpdate



프라이머리키는 수정 불가능하다



****************************************

이클립스


클래스 만들기


<실렉트문 테스트>


package java_0810;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;


public class SelectTest {

public void sel(){

String id = "user01";

String pw = "user01";

//교안참고하기, 암기x 필요할때 복사하면된다.

String url = "jdbc:oracle:thin:@192.168.116.128:1521:xe";  

//jdbc:oracle:thin:@서버의IP주소:포트번호1521:데이터베이스 이름  => 서버에 물어봐야함//

String driver="oracle.jdbc.driver.OracleDriver";

//jdbc , 접속할 데이터베이스는 오라클데이터베이스, 드라이버가 연결해준다

// ojdbc14 가 드라이버임. 드라이버가 socket대신 연결해준다.

//mysql 접속하고 싶으면 다운받고 이름 바꿔주면 된다.

Connection con=null;

Statement st=null;

ResultSet rs=null;

//1.드라이버를 메모리에 로딩

try {

Class.forName(driver);

//driver가 없을수도 로딩안될수도 있다 따라서 트라이캐치

System.out.println("드라이버 로딩성공");

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//2.데이터 베이스랑 연결 객체

try {

//DB연결, java.sql의 커넥션

con = DriverManager.getConnection(url, id, pw);

System.out.println("데이터베이스 접속성공");

//SQL문을 보낼 준비(statement)

st = con.createStatement(); // 문자열을 ? sql문으로 바꿔서 con이랑 연결?

//보낼 SQL문 작성 

String sql = "select*from students";

//SQL문을 전송하고 결과를 받기

rs = st.executeQuery(sql); 

//명령어를 보내준다. executeQuery라는 메소드를 통해 보내줌

while(rs.next()){

int did = rs.getInt("ID");

String dname = rs.getString("NAME");

int dkor = rs.getInt("KOR");

int deng = rs.getInt("ENG");

int dmath = rs.getInt("MATH");

System.out.println("id번호:"+did);

System.out.println("이름:"+dname);

System.out.println("국어점수:"+dkor);

System.out.println("영어점수:"+deng);

System.out.println("수학점수:"+dmath);

}

}catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try {

rs.close();

st.close();

con.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}



close로 닫아줘야함 (넷으로 연결할때는 항상 닫아줘야함)






<메인클래스>


package java_0810;


public class DbTest {


public static void main(String[] args) {

SelectTest s = new SelectTest();

s.sel();

//서버에 DB를 켜논 상태여야한다.

}


}



실행결과
>

드라이버 로딩성공
데이터베이스 접속성공
id번호:1
이름:IU
국어점수:60
영어점수:60
수학점수:60
id번호:2
이름:SUJI
국어점수:50
영어점수:50
수학점수:50
id번호:3
이름:SOJIN
국어점수:90
영어점수:90
수학점수:90
id번호:4
이름:DASOM
국어점수:70
영어점수:70
수학점수:70
id번호:5
이름:HYERI
국어점수:80
영어점수:80
수학점수:80
id번호:6
이름:TAEYEON
국어점수:40
영어점수:50
수학점수:60
id번호:7
이름:YURI
국어점수:70
영어점수:80
수학점수:90
id번호:8
이름:SUNMI
국어점수:20
영어점수:40
수학점수:60
id번호:9
이름:HYOSUNG
국어점수:100
영어점수:100
수학점수:100
id번호:10
이름:GNA
국어점수:20
영어점수:80
수학점수:50





**********************************************


연습하기


scott / tiger 로 접속


select * from salgrade; 


쭉 출력하기




<접속하기>

package practice;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;


public class SelectTest2 {


public void sel(){

String id = "scott";

String pw = "tiger";

//교안참고하기, 암기x 필요할때 복사하면된다.

String url = "jdbc:oracle:thin:@192.168.116.128:1521:xe";  

//jdbc:oracle:thin:@서버의IP주소:포트번호1521:데이터베이스 이름  => 서버에 물어봐야함//

String driver="oracle.jdbc.driver.OracleDriver";

//jdbc , 접속할 데이터베이스는 오라클데이터베이스, 드라이버가 연결해준다

// ojdbc14 가 드라이버임. 드라이버가 socket대신 연결해준다.

//mysql 접속하고 싶으면 다운받고 이름 바꿔주면 된다.

Connection con=null;

Statement st=null;

ResultSet rs=null;

//1.드라이버를 메모리에 로딩

try {

Class.forName(driver);

//driver가 없을수도 로딩안될수도 있다 따라서 트라이캐치

System.out.println("드라이버 로딩성공");

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

//2.데이터 베이스랑 연결 객체

try {

//DB연결, java.sql의 커넥션

con = DriverManager.getConnection(url, id, pw);

System.out.println("데이터베이스 접속성공");

//SQL문을 보낼 준비(statement)

st = con.createStatement(); // 문자열을 ? sql문으로 바꿔서 con이랑 연결?

//보낼 SQL문 작성 

String sql = "select*from salgrade";

//SQL문을 전송하고 결과를 받기

rs = st.executeQuery(sql); 

//명령어를 보내준다. executeQuery라는 메소드를 통해 보내줌

while(rs.next()){

int grade = rs.getInt("GRADE");

int low = rs.getInt("LOSAL");

int high = rs.getInt("HISAL");

System.out.println("등급:"+grade);

System.out.println("최저:"+low);

System.out.println("최고:"+high);

}

}catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try {

rs.close();

st.close();

con.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}


}



<메인클래스>
package practice;

import java_0810.SelectTest;

public class DbTest2 {
public static void main(String[] args) {
SelectTest2 s = new SelectTest2();
s.sel();
//서버에 DB를 켜논 상태여야한다.
}
}


실행결과

>

드라이버 로딩성공

데이터베이스 접속성공

등급:1

최저:700

최고:1200

등급:2

최저:1201

최고:1400

등급:3

최저:1401

최고:2000

등급:4

최저:2001

최고:3000

등급:5

최저:3001

최고:9999



****************************************************



#이번엔 입력 테스트


<입력>

package java_0810;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;


public class InsertTest {

public void ins(){

String id = "user01";

String pw = "user01";

//교안참고하기, 암기x 필요할때 복사하면된다.

String url = "jdbc:oracle:thin:@192.168.116.128:1521:xe";  

//jdbc:oracle:thin:@서버의IP주소:포트번호1521:데이터베이스 이름  => 서버에 물어봐야함//

String driver="oracle.jdbc.driver.OracleDriver";

Connection con = null;

Statement st=null;

//1.단계 : 메모리 로딩

try {

Class.forName(driver);

System.out.println("로딩성공");

//2.단계 : 접속

con = DriverManager.getConnection(url, id, pw);

System.out.println("접속성공");

//3.단계 : sql 전송준비

st = con.createStatement();

//4.단계 : sql query문 작성, 전송

String sql = "insert into students values";

sql=sql+"(13,'YURI',60,40,50,150,50)";

int did = st.executeUpdate(sql);

System.out.println(did+"row 작성되었다.");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try {

st.close();

con.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}




<메인>
package java_0810;

public class DbTest {

public static void main(String[] args) {
//SelectTest s = new SelectTest();
//s.sel();
//서버에 DB를 켜논 상태여야한다.
InsertTest i = new InsertTest();
i.ins();
}

}




***********************************************************


insert into 부분을 스캐너로 입력받기


<입력>

package java_0810;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Scanner;


public class InsertTest {

public void ins(){

Scanner sc = new Scanner(System.in);

System.out.println("번호 입력");

int iid = sc.nextInt();

System.out.println("이름 입력");

String iname = sc.next();

System.out.println("국어점수입력");

int ikor = sc.nextInt();

System.out.println("영어점수입력");

int ieng = sc.nextInt();

System.out.println("수학점수입력");

int imath = sc.nextInt();

int isum = ikor+ieng+imath;

int imean=isum/3;

String id = "user01";

String pw = "user01";

//교안참고하기, 암기x 필요할때 복사하면된다.

String url = "jdbc:oracle:thin:@192.168.116.128:1521:xe";  

//jdbc:oracle:thin:@서버의IP주소:포트번호1521:데이터베이스 이름  => 서버에 물어봐야함//

String driver="oracle.jdbc.driver.OracleDriver";

Connection con = null;

Statement st=null;

//1.단계 : 메모리 로딩

try {

Class.forName(driver);

System.out.println("로딩성공");

//2.단계 : 접속

con = DriverManager.getConnection(url, id, pw);

System.out.println("접속성공");

//3.단계 : sql 전송준비

st = con.createStatement();

//4.단계 : sql query문 작성, 전송

//insert into students values

//(num,name,kor,eng,math);

String sql = "insert into students values";

//sql=sql+"(13,'YURI',60,40,50,150,50)";

sql=sql+"("+iid+",'"+iname+"',"+ikor+","+ieng+","+imath+","+isum+","+imean+")";

int did = st.executeUpdate(sql);

System.out.println(did+"row 작성되었다.");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try {

st.close();

con.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}




<메인>
package java_0810;

public class DbTest {

public static void main(String[] args) {
//SelectTest s = new SelectTest();
//s.sel();
//서버에 DB를 켜논 상태여야한다.
InsertTest i = new InsertTest();
i.ins();
}

}



서버로접속해서 테이블을 확인하니 추가 되었다.



*****************************************************


이번엔  update , set 문


[내가해본거]


package java_0810;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Scanner;


public class UpdateTest {

public void upTest(){

Scanner sc = new Scanner(System.in);

//로딩,접속하고,쿼리문을 날릴 준비까지...

String id = "user01";

String pw = "user01";

String url = "jdbc:oracle:thin:@192.168.116.128:1521:xe";

String driver = "oracle.jdbc.driver.OracleDriver";

Connection con =null ;

Statement st = null;

try {

Class.forName(driver);

System.out.println("로딩성공");

con = DriverManager.getConnection(url, id, pw);

System.out.println("접속성공");

st = con.createStatement();

System.out.println("바꿀번호입력");

int uid = sc.nextInt();

System.out.println("바꿀이름입력");

String uname = sc.next();

String sql= "update students set name="+"'"+uname+"'"+"where id="+uid;

int up = st.executeUpdate(sql);

System.out.println(up+"row 수정되었습니다.");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try {

st.close();

con.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}




package java_0810;


public class DbTest {


public static void main(String[] args) {

//SelectTest s = new SelectTest();

//s.sel();

//서버에 DB를 켜논 상태여야한다.

//InsertTest i = new InsertTest();

//i.ins();

UpdateTest u = new UpdateTest();

u.upTest();

}


}



캐신기하다


**********************************************


딜리트문 삭제



[내가해본거]


<삭제클래스>

package java_0810;


import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.Scanner;


public class DeleteTest {

public void del(){

Scanner sc = new Scanner(System.in);

//로딩,접속하고,쿼리문을 날릴 준비까지...

String id = "user01";

String pw = "user01";

String url = "jdbc:oracle:thin:@192.168.116.128:1521:xe";

String driver = "oracle.jdbc.driver.OracleDriver";

Connection con =null ;

Statement st = null;

try {

Class.forName(driver);

System.out.println("로딩성공");

con = DriverManager.getConnection(url, id, pw);

System.out.println("접속성공");

st = con.createStatement();

System.out.println("지울번호입력");

int uid = sc.nextInt();

String sql= "delete students where id="+uid;

int up = st.executeUpdate(sql);

System.out.println(up+"row 삭제되었습니다.");

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

try {

st.close();

con.close();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

}



<메인클래스>
package java_0810;

public class DbTest {

public static void main(String[] args) {
//SelectTest s = new SelectTest();
//s.sel();
//서버에 DB를 켜논 상태여야한다.
//InsertTest i = new InsertTest();
//i.ins();
//UpdateTest u = new UpdateTest();
//u.upTest();
DeleteTest d = new DeleteTest();
d.del();
}

}



실행하고 서버로가서 db를 확인해보면 테이블에서 삭제되어 있음



**********************************************8

앞의 
조회, 입력, 수정, 삭제를 호출하는 메인클래스에서 메뉴 생성하기

<메인>
package java_0810;

import java.util.Scanner;

public class DbTest {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
SelectTest s = new SelectTest();
//서버에 DB를 켜논 상태여야한다.
InsertTest i = new InsertTest();
UpdateTest u = new UpdateTest();
DeleteTest d = new DeleteTest();
while(true){
System.out.println("메뉴를 선택하세요.");
System.out.println("1.조회 2.추가 3.수정 4.삭제 5.종료");
int choice = sc.nextInt();
if(choice==1){
s.sel();
}else if(choice==2){
i.ins();
s.sel();
}else if(choice==3){
u.upTest();
s.sel();
}else if(choice==4){
d.del();
s.sel();
}else{
System.out.println("종료합니다.");
break;
}
}
}

}


나머지 클래스는 그대로

서버 DB에 접속해서 확인

***************************************************************




중복되는거 한 곳에 몰아넣기 쌤코드좀 보고 공부하자












블로그 이미지

테시리

,
서버를 종료하면 ftp도 종료 다시 시작하려면 디폴트 ftp 다시 실행

*관리자로 로그인

명령프롬프트 실행


sqlplus sys/세팅한비밀번호입력 as sysdba


(sys가 관리자 아이디)



입력


show user





파일 <scott.txt>

C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql


@C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql

show user SYSTEM 아닌 SCOTT 으로 바뀜


alter user scott identified by tiger;

명령어로 비밀번호를 tiger로 바꾼다.






scott.txt


둘째줄 

@C:\oraclexe\app\oracle\product\11.2.0\server\rdbms\admin\scott.sql


을 명령창에 친다


show user


명령창에 치면


user is scott

  



alter user scott identified by tiger;


명령창에 치면


User altered.




select*from tab;


내가 가진 모든 테이블을 본다.




치면 데이터베이스 내에 존재하는 파일들이 나온다? (파일 하나가 테이블)




***************************


SQL문



SELECT


INSERT


UPDATE


DELETE





COMMIT







*****************************


select*from dept;


select*from emp;


select*from salgrade;



from ~ : ~테이블로 부터


* : 모두


*대신 field 명을 넣어서 보고싶은것만 출력 가능



select GRADE,HISAL from salgrade;


(등급과 최고값을 salgrade 테이블로 부터 불러온다)


select hisal,grade from salgrade;


순서바꿔서 보기


명령어, 필드이름은 대소문자 구분 필요 없다.





select empno,ename,sal,comm from emp;


>직원번호, 이름, 연봉,수수료 3개 필드를 emp 테이블로부터 불러온다




select empno,ename,sal*12 from emp;


> 샐러리에 12를 곱해서 1년치를 본다.

(12를 곱해서 볼 뿐이지 데이터를 바꾸는게 아니다.)

(연산도 가능)




특정 행을 보고 싶을 경우

where 조건절 사용


select*from emp where empno=7521;


사원번호가 7521인 사원 보기



select*from emp where mgr=7698;


매니저번호가 7698번인 사원 보기



SQL에서는 ==가 아니라 = 사용





****************


사원번호, 이름, 직업, 부서번호를 불러온다


조건은 월급이 1000 이상



select empno,ename,job,deptno from emp where sal>=1000;






**

오라클 홈


인스턴트 클라이언트 다운


http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html



 Instant Client for Microsoft Windows (x64)    서버는 32비트지만 게스트64이므로


11g 버전




*Instant Client Package - SQL*Plus: Additional libraries and executable for running SQL*Plus with Instant Client

Download instantclient-sqlplus-windows.x64-11.2.0.4.0.zip (821,172 bytes)


다운

설치안됨 취소

********


select*from dept where deptno=30;



select*from emp where ename='KING';



문자열을 검색할 때는 앞 뒤로 ' ' 작은 따옴표를 붙여준다.

데이터 값들은 대소문자를 구분한다.






********************************

desc dept;


dept 테이블의 설명을 보겠다


NOT NULL 있는 항은 무조건 기입해야함


타입에서 NUMBER에는 숫자

VARCHAR에는 문자 넣기


데이터 입력



insert into dept(deptno,dname,loc)

2 values(50,'information','SEOUL');


새로운 데이터 추가


확인


select * from dept;



연습


insert into dept(deptno,dname,loc)

2 values(60,''marketing','LA');


insert into dept(deptno,dname,loc)

2 values(50,'HR','SEATTLE');



확인


select * from dept;



테이블면안치고 입력하기

insert into dept

2 values(80,'clean','DAEGU');



대신 순서가 중요함




컨트롤+c 누르면 SQL 빠져나옴 


다시 들어가기 scott 유저로 들어가기


sqlplus scott/tiger


아까 as admin 은 관리자이므로 


유저는 안해도 됨.






commit;


이전 자료 저장??


커밋 이후로 친 자료는 저장 전단계


insert into dept

2 values(99,'test','tset');


추가됨


그 다음


rollback;


롤백을 치면 commit 치기 이전 상태로 돌려 놓는다.



commit 과 rollback



저장을 해야겠다 싶으면 commit 해두자




수정


update 문




updata 테이블명 

set 필드명1=값1, 필드명2=값2, ...




실습



 update dept

2 set loc='BUSAN'

3 where deptno=50;



확인


select*from dept;


인포메이션부서가 부산으로 위치가 바뀌어있다.




실습2


hr>it

seattle>pangyo



update dept

2 set dname='IT' , loc='PANGYO'

3 where daptno=70;






부서번호 50이상의 지역을 구로로 바꾸고 싶다.


update dept

2 set loc='GURO'

3 where deptno>=50;



확인


select*from dept;




update dept

2 set loc='SUWON'

3 where deptno=50 or deptno=80;


두개 행 업데이트


부서번호 50, 80번 지역을 수원으로 변경


확인


select*from dept;





삭제


delete




실습


delete dept

2 where deptno=50;


부서번호 50번 데이터 삭제


확인


select * from dept;



부서번호 50번 데이터가 삭제되었다.



***


다시 관리자 로그인


sqlplus sys/비밀번호 as sysdba


sqlplus / as sysdba


로컬에서만 가능한 


/로 가능 (원격에선 불가능)






Table space 생성


oracle_table.txt

이 파일 서버로 보내기



create tablespace user01

2 datafile 'c:\oraclexe\oradata\user01.dbf'

3 size 10M ;



해당폴더에 가면 DBF 파일이 생성되어 있음


create user user01 identified by user01

2 default tablespace user01;






grant connect,resource to user01 ;


커넥트, 리소스 권한을 유저01에게 주겠다



Grant succeeded.



ctrl + c 빠져나가기



이제 user01로 접근하기


sqlplus user01/user01



select*from tab;


모든 테이블 보기 


아직 안만들었으므로 비어있다.



******************************************************

오라클의 데이터 형


1.NUMBER(전체자릿수,소수점자릿수)

자바와 달리 오라클 DB에서는 정수(int) 실수(double) 모두 NUMER 데이터타입


NUMBER(전체 자릿수, 소수점 자릿수)



NUMBER(2) : 0~99

NUMBER(3) : 0~999


NUMBER(3,1)  =>> 132.1 불가능(전체 4자리),  12.1 가능(전체 3자리)


 

2.CHAR(바이트수)

-고정 길이 문자열을 저장

-최대 2000바이트 까지 저장가능

-입력되는 문자수와 상관없이 항상 지정된 바이트 수만큼 공간이 할당

-ex)전화번호,주민번호,계좌번호 .. 고정된 자릿수


3.VARCHAR2(바이트수)

-가변 길이 문자열을 저장

-최대 4000 바이트 까지 저장

-입력되는 문자수 만큼 공간이 할당. 데이터 값이 유동적인 경우에 권장

-ex)이름,id,pw 등등


4.DATE 날짜 ,   TIMESTAMP : 이건 DATE보다 좀 더 정밀


**리터럴(Literal)

>문자 데이터와 날짜 데이터에는 ' ' (홑따옴표)를 사용하여 표현한다. 리터럴은 대소문자를 구별





****************************8

              

create table students(

테이블명

필드명 데이터타입



)


primary key : 유일한키 , 빈값X , 중복X

NOT NULL : 빈값X, 중복O



create table students(

2 num number(2) primary key,

3 name varchar2(10) not null,

4 kor number(3),

5 eng number(3),

6 math number(3) ) ;



select*from tab;

모든 테이블 보기



select * from students;

reat

방금만든 스튜던트 테이블 보기


결과


no rows selected


행이없음


따라서 데이터 추가



insert into students

2 values(1,'suji',80,90,100);



select * from students ; 


확인하기



insert into students

2 values(2,'iu',75);


나머지 점수들은 낫널이므로 비워서 넣어보면 에러메세지

not enough values


이런경우


insert into students (num,name,kor)

2 values(2,'iu',75);




10명의 학생을 추가한다.


그 다음 국어점수 60점이상 영어점수 80점 이상인 학생 찾기


select name from students where kor>=60 and eng>=80;



iu빠진거 고치기 > 수정 > update




영어 90점 이상 ,

수학 80점 이상인 학생들을 찾아서 국어점수를 40점으로 만들기



update students

2 set kor=40

3 where eng>=90 and math>=80 ;








Teacher 테이블 생성

ID,PW,이름, 과목, 나이, 성별, 경력, 


create table teachers(

2 id number(3) primary key,

3 pw number(3) not null,

4 name varchar2(10) not null,

5 subject varchar2(20),

6 age number(3),

7 sex char(5),

8 years number(3) ) ;




******************************8


alter (수정 - 필드)



****************************

ojdbc14.jar


ojdbc14  파일을  



C:\Program Files\Java\jdk1.8.0_51\jre\lib\ext


이 폴더에 옮긴다.



이클립스 실행


윈도우


쇼 뷰


아더스


데이터메니지먼트


데이터 소스 익스플로러 오캐



하단

데이터베이스 커넥션 우클릭 뉴


밑에 오라클 선택


넥스트


우측 뉴 드라이버 데피니션 클릭


Oracle Thin Driver 중 11 클릭 11g설치했으므로


오른쪽 메뉴 jar list


있는거 지우고


add jar 


아까 복사한 경로 가기


ojdbc14 열기


다시 네임 타입


다시 11 선택하고 ok



SID : xe

host : 호스트 아이피  192.168.116.128


포트넘버 : 1521 기본 오라클기본


User name : user01

password : 비번입력 user01


우측하단 테스트 커넥션


ping succeed


피니시


하단 메뉴


데이터베이스 커넥션 확장


마이 오라클 우클릭


Open SQL 스크랩북


타입


Oracle_11 (오라클 11깔았으니까)


name : MyOracle


Database:xe



select * from students

드래그 하고 우클릭

Execute Selected text




****************************************8





























블로그 이미지

테시리

,