//Google AdSense
1) 리스트(m_list.jsp)에 수정버튼을 만들어 수정화면(m_update_form.jsp)으로 이동. 
folder : /mupdate
file : m_update_form.jsp

- m_list.jsp : 수정화면으로 갈 때 아이디만 넘긴다.(get방식의 키,값으로 가능)

- m_update_form.jsp : 
1,2단계 : 드라이버 로딩 및 디비연결
3단계 : select 쿼리 준비 (select * from tb_member where m_id = ?)
4단계 : 쿼리 실행
5단계 : 쿼리 실행 결과 사용 (수정화면에 회원정보 출력)
6, 7단계 : 객체 종료
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>

<%
String send_id = request.getParameter("send_id");
System.out.println(send_id + "<-send_id");

String dbid = null;
String dbpw = null;
String dblevel = null;
String dbname = null;
String dbemail = null;

Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
Class.forName("com.mysql.jdbc.Driver");

try{
	String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
			"useUnicode=true&characterEncoding=euckr";
	String dbUser = "dev35id";
	String dbPass = "dev35pw";
	conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
	System.out.println(conn + "<-- conn m_update_form.jsp");
	pstmt = conn.prepareStatement("select * from tb_member where m_id =?");
	pstmt.setString(1, send_id);
	System.out.println(pstmt +"<--pstmt");
	rs = pstmt.executeQuery();
	System.out.println(rs + "<-- rs");
	if(rs.next()){
		System.out.println("if 조건문 통과 완료");
		dbid = rs.getString("m_id");
		dbpw = rs.getString("m_pw");
		dblevel = rs.getString("m_level");
		dbname = rs.getString("m_name");
		dbemail = rs.getString("m_email");
	}
}catch(SQLException ex) {
	System.out.println(ex.getMessage());
	ex.printStackTrace();
} finally {
	if (rs != null) try { rs.close(); } catch(SQLException ex) {}
	if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
	if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>

<%------변수에 담은 값이 처리과정 바깥에서 출력되는지 확인-----------
		테스트 dbid : <%= dbid %> <br/>
		테스트 dbpw : <%=dbpw %> <br/>
		테스트 dblevel : <%=dblevel %> <br/>
		테스트 dbname : <%=dbname %> <br/>
		테스트 dbemail : <%=dbemail %> <br/>
---------------------------------------------------%>

<form>
	<input type="text" name="id" value= "<%= dbid %>"> <br/>
	<input type="text" name="pw" value= "<%=dbpw %>">  <br/>
	<input type="text" name="level" value= "<%=dblevel %>"> <br/>
	<input type="text" name="name" value= "<%=dbname %>"> <br/>
	<input type="text" name="email" value= "<%=dbemail %>"> <br/>
	<button type="button"> 수정완료</button>
</form>

수정버튼에 m_id 값을 get 방식으로 넘기도록 a태그와 함께 추가 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>

<%= request.getRequestURI() %> <br>
회원 리스트 <br>
<table width="100%" border="1">
<tr>
	<td>아이디</td><td>비번</td><td>권한</td><td>이름</td><td>이메일</td><td>수정</td>
</tr>

<%
	Connection conn = null;
	PreparedStatement pstmt = null;
	ResultSet rs = null;
	Class.forName("com.mysql.jdbc.Driver");
	try{
		String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
				"useUnicode=true&characterEncoding=euckr";
		String dbUser = "dev35id";
		String dbPass = "dev35pw";
		conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);	
		System.out.println(conn + "<-- conn m_list.jsp");
		pstmt = conn.prepareStatement("select * from tb_member");
		System.out.println(pstmt + "<-- pstmt m_list.jsp");
		rs = pstmt.executeQuery();
		System.out.println(rs + "<-- rs m_list.jsp");
		//System.out.println(rs.next() + "<-- rs.next()");
		while(rs.next()){
			System.out.println("if 조건문 통과 완료");
%>
<tr>
	<td> <%= rs.getString("m_id") %> </td>
	<td> <%= rs.getString("m_pw") %> </td>
	<td> <%= rs.getString("m_level") %> </td>
	<td> <%= rs.getString("m_name") %> </td>
	<td> <%= rs.getString("m_email") %> </td>
	<td> <a href="<%=request.getContextPath()%>/mupdate/m_update_form.jsp?send_id=<%= rs.getString("m_id") %>"> 수정버튼</a> </td>	
</tr>
<%
			
		}
	}catch(SQLException ex) {
		System.out.println(ex.getMessage());
		ex.printStackTrace();
	} finally {
		if (rs != null) try { rs.close(); } catch(SQLException ex) {}
		if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
		if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>
</table>

m_update_from.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>



<%= request.getRequestURI() %> <br>
회원 수정<br><br>
<%
System.out.println("회원수정화면"); //화면이 이동되었음을 확인하기 위해 작성
String send_id = request.getParameter("send_id"); //변수send_id에 담긴 값을 send_id에 가져옴

Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
Class.forName("com.mysql.jdbc.Driver");
try{
	String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
			"useUnicode=true&characterEncoding=euckr";
	String dbUser = "dev35id";
	String dbPass = "dev35pw";
	conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
	System.out.println(conn + "<-- conn m_update_form.jsp");
	pstmt = conn.prepareStatement("select * from tb_member where m_id ='" + send_id + "'");
	System.out.println(pstmt + "<-- pstmt m_update_form.jsp");
	rs = pstmt.executeQuery();
	System.out.println(rs + " <-- rs");
	if(rs.next()){ //while이나 if (rs.next()) 조건문없이 rs.getString 호출시 Before start of result set 에러 발생함!
		System.out.println("if 조건문 통과 완료");
%>

<form>
아이디 : <input type = "text" name = "m_id" value= "<%= send_id%>" readonly="readonly"><br> 
패스워드 : <input type = "text" name = "m_pw" value = "<%= rs.getString("m_pw") %>" ><br> 
권한 : <input type = "text" name = "m_level" value = "<%= rs.getString("m_level") %>"><br> 
이름 : <input type = "text" name = "m_name"  value = "<%= rs.getString("m_name") %>"><br> 
이메일 : <input type = "text" name = "m_email" value = "<%= rs.getString("m_email") %>"><br> 
<button type="button"> 수정완료 </button>
</form>

<%
	}
}catch(SQLException ex) {
	System.out.println(ex.getMessage());
	ex.printStackTrace();
} finally {
	if (rs != null) try { rs.close(); } catch(SQLException ex) {}
	if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
	if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>



 

db에서 받은 값을 변수에 담아 처리과정 바깥에서 화면 출력하기

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>

<%
String send_id = request.getParameter("send_id");
System.out.println(send_id + "<-send_id");

String dbid = null;
String dbpw = null;
String dblevel = null;
String dbname = null;
String dbemail = null;

Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
Class.forName("com.mysql.jdbc.Driver");

try{
	String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
			"useUnicode=true&characterEncoding=euckr";
	String dbUser = "dev35id";
	String dbPass = "dev35pw";
	conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);
	System.out.println(conn + "<-- conn m_update_form.jsp");
	pstmt = conn.prepareStatement("select * from tb_member where m_id =?");
	pstmt.setString(1, send_id);
	System.out.println(pstmt +"<--pstmt");
	rs = pstmt.executeQuery();
	System.out.println(rs + "<-- rs");
	if(rs.next()){
		System.out.println("if 조건문 통과 완료");
		dbid = rs.getString("m_id");
		dbpw = rs.getString("m_pw");
		dblevel = rs.getString("m_level");
		dbname = rs.getString("m_name");
		dbemail = rs.getString("m_email");
	}
}catch(SQLException ex) {
	System.out.println(ex.getMessage());
	ex.printStackTrace();
} finally {
	if (rs != null) try { rs.close(); } catch(SQLException ex) {}
	if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
	if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>

<%------변수에 담은 값이 처리과정 바깥에서 출력되는지 확인-----------
		테스트 dbid : <%= dbid %> <br/>
		테스트 dbpw : <%=dbpw %> <br/>
		테스트 dblevel : <%=dblevel %> <br/>
		테스트 dbname : <%=dbname %> <br/>
		테스트 dbemail : <%=dbemail %> <br/>
---------------------------------------------------%>

<form action="<%= request.getContextPath() %>/minsert/m_insert_pro.jsp" method="post">
<table border="1">
<tr>
	<td>아이디</td>
	<td><input type="text" name="m_id" size="20" value = "<%= dbid %>" readonly="readonly"></td>
<tr>
<tr>
	<td>암호</td>
	<td><input type="text" name="m_pw" size="20" value = "<%=dbpw %>"></td>
<tr>
<tr>
	<td>권한</td>
	<td><input type="text" name="m_level" size="20" value = "<%=dblevel %>"></td>
<tr>
<tr>
	<td>이름</td>
	<td><input type="text" name="m_name" size="20" value = "<%=dbname %>"></td>
<tr>
<tr>
	<td>이메일</td>
	<td><input type="text" name="m_email" size="20" value = "<%=dbemail %>" ></td>
<tr>
<tr>
	<td colspan="4"><input type="submit" value="회원수정버튼"></td>
</tr>
</table>
</form>

 

mysql 드라이버 import

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>

오류확인

오탈자로 인한 코드 오류시 

 

case 1

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<% page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>

 

case 2

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManage" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>

<%= request.getRequestURI() %> <br>

 <%= request.getRequestURI() %> 가 현재의 경로를 반환한다는 것을 알 수 있음.


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>

<%= request.getRequestURI() %> <br>
회원 리스트 <br>
<table width="100%" border="1">
<tr>
	<td>아이디</td><td>비번</td><td>권한</td><td>이름</td><td>이메일</td>
</tr>
</table>


<table></table> 태그 안에 드라이버를 로딩하고 db에 연결, statement 종료, 커넥션을 종료하는 java코드 삽입.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>

<%= request.getRequestURI() %> <br>
회원 리스트 <br>
<table width="100%" border="1">
<tr>
	<td>아이디</td><td>비번</td><td>권한</td><td>이름</td><td>이메일</td>
</tr>

<%
	Connection conn = null;
	PreparedStatement pstmt = null;
	ResultSet rs = null;
	Class.forName("com.mysql.jdbc.Driver");
	try{
		String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
				"useUnicode=true&characterEncoding=euckr";
		String dbUser = "dev35id";
		String dbPass = "dev35pw";
		conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);	
		System.out.println(conn + "<-- conn m_list.jsp");
	}catch(SQLException ex) {
      out.println(ex.getMessage());
      ex.printStackTrace();
	} finally {
      if (rs != null) try { rs.close(); } catch(SQLException ex) {}
      if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
      if (conn != null) try { conn.close(); } catch(SQLException ex) {}
	}
%>

</table><%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>

<%= request.getRequestURI() %> <br>
회원 리스트 <br>
<table width="100%" border="1">
<tr>
	<td>아이디</td><td>비번</td><td>권한</td><td>이름</td><td>이메일</td>
</tr>

<%
	Connection conn = null;
	PreparedStatement pstmt = null;
	ResultSet rs = null;
	Class.forName("com.mysql.jdbc.Driver");
	try{
		String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
				"useUnicode=true&characterEncoding=euckr";
		String dbUser = "dev35id";
		String dbPass = "dev35pw";
		conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);	
		System.out.println(conn + "<-- conn m_list.jsp");
	}catch(SQLException ex) {
		out.println(ex.getMessage());
		ex.printStackTrace();
	} finally {
		if (rs != null) try { rs.close(); } catch(SQLException ex) {}
		if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
		if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>
</table>

오류 확인


rs.next() 조건의 참/거짓 여부 판단.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>

<%= request.getRequestURI() %> <br>
회원 리스트 <br>
<table width="100%" border="1">
<tr>
	<td>아이디</td><td>비번</td><td>권한</td><td>이름</td><td>이메일</td>
</tr>

<%
	Connection conn = null;
	PreparedStatement pstmt = null;
	ResultSet rs = null;
	Class.forName("com.mysql.jdbc.Driver");
	try{
		String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
				"useUnicode=true&characterEncoding=euckr";
		String dbUser = "dev35id";
		String dbPass = "dev35pw";
		conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);	
		System.out.println(conn + "<-- conn m_list.jsp");
		pstmt = conn.prepareStatement("select * from tb_member");
		System.out.println(pstmt + "<-- pstmt m_list.jsp");
		rs = pstmt.executeQuery();
		System.out.println(rs + "<-- rs m_list.jsp");
		System.out.println(rs.next() + "<-- rs.next()");
		}
	}catch(SQLException ex) {
		System.out.println(ex.getMessage());
		ex.printStackTrace();
	} finally {
		if (rs != null) try { rs.close(); } catch(SQLException ex) {}
		if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
		if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>
</table>
com.mysql.jdbc.JDBC4Connection@41043fc6<-- conn m_list.jsp com.mysql.jdbc.JDBC4PreparedStatement@4e7ed90c: select * from tb_member<-- pstmt m_list.jsp com.mysql.jdbc.JDBC4ResultSet@5ecda586<-- rsm_list.jsp
true<-- rs.next()

if 조건문을 만족할 시 표에 행이 추가되는지 확인.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>

<%= request.getRequestURI() %> <br>
회원 리스트 <br>
<table width="100%" border="1">
<tr>
	<td>아이디</td><td>비번</td><td>권한</td><td>이름</td><td>이메일</td>
</tr>

<%
	Connection conn = null;
	PreparedStatement pstmt = null;
	ResultSet rs = null;
	Class.forName("com.mysql.jdbc.Driver");
	try{
		String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
				"useUnicode=true&characterEncoding=euckr";
		String dbUser = "dev35id";
		String dbPass = "dev35pw";
		conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);	
		System.out.println(conn + "<-- conn m_list.jsp");
		pstmt = conn.prepareStatement("select * from tb_member");
		System.out.println(pstmt + "<-- pstmt m_list.jsp");
		rs = pstmt.executeQuery();
		System.out.println(rs + "<-- rs m_list.jsp");
		//System.out.println(rs.next() + "<-- rs m_list.jsp");
		if(rs.next()){
			System.out.println("if 조건문 통과 완료");
%>
<tr>
	<td> A </td>
	<td> B </td>
	<td> C </td>
	<td> D </td>
	<td> E </td>
</tr>
<%
			
		}
	}catch(SQLException ex) {
		System.out.println(ex.getMessage());
		ex.printStackTrace();
	} finally {
		if (rs != null) try { rs.close(); } catch(SQLException ex) {}
		if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
		if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>
</table>
com.mysql.jdbc.JDBC4Connection@d760830<-- conn m_list.jsp com.mysql.jdbc.JDBC4PreparedStatement@3444a276: select * from tb_member<-- pstmt m_list.jsp com.mysql.jdbc.JDBC4ResultSet@740d38ff<-- rs m_list.jsp if 조건문 통과 완료

 


a,b,c,d,e로 while 조건문을 만족할 시 잘 반복되어 표에 출력되는지 확인.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>

<%= request.getRequestURI() %> <br>
회원 리스트 <br>
<table width="100%" border="1">
<tr>
	<td>아이디</td><td>비번</td><td>권한</td><td>이름</td><td>이메일</td>
</tr>

<%
	Connection conn = null;
	PreparedStatement pstmt = null;
	ResultSet rs = null;
	Class.forName("com.mysql.jdbc.Driver");
	try{
		String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
				"useUnicode=true&characterEncoding=euckr";
		String dbUser = "dev35id";
		String dbPass = "dev35pw";
		conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);	
		System.out.println(conn + "<-- conn m_list.jsp");
		pstmt = conn.prepareStatement("select * from tb_member");
		System.out.println(pstmt + "<-- pstmt m_list.jsp");
		rs = pstmt.executeQuery();
		System.out.println(rs + "<-- rs m_list.jsp");
		//System.out.println(rs.next() + "<-- rs m_list.jsp");
		while(rs.next()){
			System.out.println("if 조건문 통과 완료");
%>
<tr>
	<td> A </td>
	<td> B </td>
	<td> C </td>
	<td> D </td>
	<td> E </td>
</tr>
<%
			
		}
	}catch(SQLException ex) {
		System.out.println(ex.getMessage());
		ex.printStackTrace();
	} finally {
		if (rs != null) try { rs.close(); } catch(SQLException ex) {}
		if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
		if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>
</table>
com.mysql.jdbc.JDBC4Connection@50ae4e96<-- conn m_list.jsp com.mysql.jdbc.JDBC4PreparedStatement@1138b179: select * from tb_member<-- pstmt m_list.jsp com.mysql.jdbc.JDBC4ResultSet@eab28f2<-- rs m_list.jsp
if 조건문 통과 완료
if 조건문 통과 완료
if 조건문 통과 완료
if 조건문 통과 완료
if 조건문 통과 완료
if 조건문 통과 완료

 

 


abcde를 표현식으로 치환해 각 변수에 담긴 값을 getting 해온다.

⇒ select문장을 통해서 모든 회원 목록 가져와서 한줄씩 ( 레코드(record) or 로우(row) )보여준다

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import = "java.sql.DriverManager" %>
<%@ page import = "java.sql.Connection"%>
<%@ page import = "java.sql.PreparedStatement"%>
<%@ page import = "java.sql.ResultSet" %>
<%@ page import = "java.sql.SQLException"%>

<%= request.getRequestURI() %> <br>
회원 리스트 <br>
<table width="100%" border="1">
<tr>
	<td>아이디</td><td>비번</td><td>권한</td><td>이름</td><td>이메일</td>
</tr>

<%
	Connection conn = null;
	PreparedStatement pstmt = null;
	ResultSet rs = null;
	Class.forName("com.mysql.jdbc.Driver");
	try{
		String jdbcDriver = "jdbc:mysql://localhost:3306/dev35db?" +
				"useUnicode=true&characterEncoding=euckr";
		String dbUser = "dev35id";
		String dbPass = "dev35pw";
		conn = DriverManager.getConnection(jdbcDriver, dbUser, dbPass);	
		System.out.println(conn + "<-- conn m_list.jsp");
		pstmt = conn.prepareStatement("select * from tb_member");
		System.out.println(pstmt + "<-- pstmt m_list.jsp");
		rs = pstmt.executeQuery();
		System.out.println(rs + "<-- rs m_list.jsp");
		//System.out.println(rs.next() + "<-- rs m_list.jsp");
		while(rs.next()){
			System.out.println("if 조건문 통과 완료");
%>
<tr>
	<td> <%= rs.getString("m_id") %> </td>
	<td> <%= rs.getString("m_pw") %> </td>
	<td> <%= rs.getString("m_level") %> </td>
	<td> <%= rs.getString("m_name") %> </td>
	<td> <%= rs.getString("m_email") %> </td>
</tr>
<%
			
		}
	}catch(SQLException ex) {
		System.out.println(ex.getMessage());
		ex.printStackTrace();
	} finally {
		if (rs != null) try { rs.close(); } catch(SQLException ex) {}
		if (pstmt != null) try { pstmt.close(); } catch(SQLException ex) {}
		if (conn != null) try { conn.close(); } catch(SQLException ex) {}
}
%>
</table>
com.mysql.jdbc.JDBC4Connection@52a20a03<-- conn m_list.jsp com.mysql.jdbc.JDBC4PreparedStatement@6d8cce9b: select * from tb_member<-- pstmt m_list.jsp com.mysql.jdbc.JDBC4ResultSet@5637d52e<-- rs m_list.jsp
if 조건문 통과 완료
if 조건문 통과 완료
if 조건문 통과 완료
if 조건문 통과 완료
if 조건문 통과 완료
if 조건문 통과 완료

 


 

 

'JSP' 카테고리의 다른 글

[JSP + MySQL] 수정처리 / 삭제  (0) 2020.03.26
[JSP + MySQL] list 화면→수정화면  (0) 2020.03.26
[JSP+MySQL] JSP + MySQL / JDBC  (0) 2020.03.19
[JSP] JSP_session응용  (0) 2020.03.13

데이터베이스 설계 

사용자의 다양한 요구사항을 고려하여 데이터베이스를 생성하는 과정

 

과정 내에서 피드백이 가능하다.

 

요구사항 분석 목적

  • 사용자의 요구 사항을 수집 분석하여 개발할 데이터베이스의 용도 파악
  • 업무에 필요한 데이터, 데이터를 이용한 처리 방향 등을 고려
  • 결과물 : 요구사항 명세서

주요작업

  • 데이터베이스를 실제로 사용할 사용자의 범위를 결정
  • 사용자가 조직에서 수행하는 업무를 분석
  • 면담, 설문조사, 업무 관련 문서 분석 등의 방법을 이용해 요구사항 수집
  • 수집된 요구사항에 대한 분석 결과를 요구사항 명세서로 작성

요구사항 분석 예시 ((p.nn))

 

개념적 설계

개념적 설계 목적

  • DBMS에 독립적인 개념적 스키마 설계
  • 요구사항 명세서를 개념적 구조로 표현
  • 결과물 :  E-R 다이어그램

주요 작업

  • 요구사항 분석 결과를 기반으로 중요한 개체를 추출하고 개체간의 관계를 결정하여 E-R 다이어그램으로 표현

개체와 속성 추출

  • 저장할만한 가치가 있는 중요 데이터를 가진 사람이나 사물
  • ) 학사행정 데이터베이스 개발에 필요한 개체
    • 학사행정 운영에 필요한 사람 :  학생, 교수, 행정담당자 등
    • 학사행정 운영에 필요한 사물 :  강의실, 행정실, 교자재

개체 추출 방법

  • 요구 사항 문장에서 업무와 관련이 깊은 의미 있는 명사
    • 업무와 관련이 적은 일반적이고 광범위한 의미의 명사는 제외
    • 의미가 같은 명사가 여러 개일 경우는 대표 명사 하나만 선택
    • 추출된 명사를 개체와 속성으로 분류

개체와 속성 추출 예 ((p.nn))

 

 

'Database' 카테고리의 다른 글

[Database] Sub Query / UNION  (0) 2020.04.01
[Database] 정규화(Normalization)  (0) 2020.04.01
[Database] join  (0) 2020.03.25
[Database] SQL 활용 ②  (0) 2020.03.18

JOIN

두 개 이상의 테이블을 서로 묶어서 하나의 결과 집합으로 만들어내는 것 (사용자가 필요한 집합 결과 도출)

→범위산정

 

INNER JOIN  
OUTTER JOIN  
SELF JOIN 거의 사용 안하지만 계층 구도 만들 때 사용
CROSS JOIN  
NATURAL JOIN 같은 컬럼이어야 함. (=inner join과 같이 표현됨)



inner join

SELECT
	*
FROM
	tb_member_level AS l
	INNER join
	tb_member AS m
	on
	l.level_num = m.m_level
WHERE
	l.level_num > 1;

 

 

SELECT
	*
FROM
	tb_member_level AS l
	LEFT JOIN
	tb_member AS m
	on
	l.level_num = m.m_level;

 

null 비교는 is 로!

SELECT
	*
FROM
	tb_member_level AS l
	LEFT JOIN
	tb_member AS m
	on
	l.level_num = m.m_level
	WHERE
	m_id IS NULL;

 

 

SELECT
	*
FROM
	tb_member_level AS l
	LEFT JOIN
	tb_member AS m
	on
	l.level_num = m.m_level
	WHERE
	m_id IS not null;

	

>> inner join과 결과값이 같다.

 

 

self join

SELECT
	m1.m_id AS member1
	,m2.m_id AS memeber2
	,m1.m_addr AS address
FROM
	tb_member AS m1
	join
	tb_member AS m2
	on
	m1.m_id <> m2.m_id
	and
	m1.m_addr = m2.m_addr
	ORDER BY  m1.m_id;

 

cross join

SELECT
	*
FROM
	tb_member_level AS l
	CROSS JOIN 
	tb_member AS m
ORDER BY l.level_num,m.m_id; 

A행xB행 (곱집합)

 

 

 

'Database' 카테고리의 다른 글

[Database] 정규화(Normalization)  (0) 2020.04.01
[Database] 데이터베이스 설계  (0) 2020.03.25
[Database] SQL 활용 ②  (0) 2020.03.18
[Database] SQL 활용 ①  (3) 2020.03.18

함수 복습 실습

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>함수</title>
<script type="text/javascript">
	/*  
		실습1. 아래의 함수 호출부가 있다. 호출부를 보고 선언부를 완성시켜라.
		선언부에서 인수값 전체를 합산시키는 코드 작성.
		
		var arr = [10,20,30];
		myFunction(20,30,arr);
		
	*/
	
	var arr = [10,20,30];
	
	//익명함수
	var myFunction = function(n1, n2, arr){
		var re = 0;
		for(var i = 0; i < arr.length ; i++){
			re += arr[i];
		}
		re += n1+n2;
		return re;		
	}
	
	//기본형
	function myFunction(n1, n2, arr){
		var re = 0;
		for(var i = 0; i < arr.length ; i++){
			re += arr[i];
		}
		re += n1+n2;
		return re;		
	}
	
	//호출
	myFunction(20,30,arr);
	
	/*  
		실습2. 아래의 함수 호출부가 있다. 호출부를 보고 선언부를 완성시켜라.
		(함수 호출시 리턴 없이 콘솔로 매개변수 출력)
		
		myFunction2('한국스마트정보교육원');
	*/
	
	//익명함수
	var myFunction2 = function (str) {
		console.log(str);		
	}
	
	//기본형
	function myFunction2 (str) {
		console.log(str);
	}
	
	//호출
	myFunction2('한국스마트정보교육원');
	
	/*  
	실습3. 아래의 함수 호출부가 있다. 호출부에 1개의 넘버형 인수가 들어가고 선언부에는 매개변수값으로 구구단을 출력하는 코드가 들어가있다.
	선언부를 완성시켜라.(함수 호출시 리턴없이 콘솔로 결과값 출력)
	
	myFunction3(2);
	*/
	
	var myFunction3 = function(n) {
		for(var i = 1; i<=9 ; i++){
			console.log (i * n);
		}
	}
	
	function myFunction3(n) {
		for(var i =1; i<=9 ; i++){
			console.log(i*n);
		}
		
	}
		
	myFunction3(2);

</script>
</head>
<body>

</body>
</html>

 


Jquery 선택자

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>선택자</title>
<script type="text/javascript" src="./resource/js/jquery-3.4.1.min.js"></script>
<script type="text/javascript">
	/*  
		DOM 객체를 먼저 읽은 후 readt메서드의 함수 실행
			1.
			$(document).ready(function(){
				
			})
			2.
			$(function(){
				
			})
	*/
	
	//제이쿼리가 DOM객체 읽기를 완료한 후에 실행할 준비가 되었다. (동적으로 생성한 html은 읽지 못한다.)
	$(function(){
		
		// 선택자 - $('선택자') -> 제이쿼리 함수를 실행하면서 인수값으로 css선택자 삽입
	
	
		/*********************************************************************************

		1. 직접선택자 
			제이쿼리 함수에 선택자를 인수값으로 삽입하여 실행
		
		*	$('#아이디')			- 아이디의 객체를 검색하여 객체 반환 (단 하나)
		*	$('.클래스')			- 인수값과 일치하는 클래스를 모두 선택하여 객체 반환
		*	$('[속성명]')			- 인수값과 일치하는 속성명을 모두 선택하여 객체 반환		
		*	$('[속성명=속성값]')	- 인수값과 일치하는 속성명=속성값 을 모두 선택하여 객체 반환	
			$('태그명')			- 인수값과 일치하는 태그를 모두 선택하여 반환
			$('선택자1,..,선택자n')	- 인수값 전체에 해당되는 객체를 선택하여 객체 반환
			$('선택자1 선택자2')		- 첫번째 선택자의 하위인 두번째 선택자를 선택하여 객체 반환
			$('태그명선택자')		- 태그명과 일치하면서 선택자와 일치하는 객체를 반환

				ex) $('h1.title')	h1태그이면서 title이라는 클래스를 가진 객체
					$('h1#title')	h1태그이면서 title이라는 아이디를 가진 객체
					$('h1[class]')	h1태그이면서 class라는 속성을 가진 객체

				
		2. 메서드 활용
			제이쿼리 선택자로 하여 객체가 반환될 경우 각종 메서드를 사용할 수 있다.
			
			
		3. 인접관계 선택자
			직접선택자로 선택 후 상세하게 객체를 검색할 수 있다.
		
			$('선택자').parent();				- 선택된 객체의 부모 객체를 검색하여 객체 반환
				ex) $('article').parent();
				
			$('선택자').parents();			- 선택된 객체의 부모 객체 전체를 검색하여 객체 반환
										인수값이 있을 경우 선택된 객체의 인수값과 일치하는 부모 객체만 반환
				ex) $('article').parents();
					$('article').parents('body');
					
			$('선택자').children();			- 선택된 객체의 자식요소를 검색하여 객체 반환
				ex) $('article').children();
				
			$('선택자').find('자식요소 선택자');	- 선택된 객체의 자식요소 중 find 메서드의 인수값과 일치하는 객체를 반환
			
			
			$('선택자').prev();				- 선택된 객체의 동일선상 이전 객체를 선택하여 객체 반환
				ex) $('body').prev();
			
			$('선택자').next();				- 선택된 객체의 동일선상 다음 객체를 선택하여 객체 반환
				ex) $('head').next();
				
			
		4. 속성 상태에 따른 선택자
			선택된 객체의 상태를 표기하여 상태에 일치하는 객체를 선택하여 반환
				('checked','selected','hidden')
					$('선택자:checked')
					$('선택자:selected')
					$('선택자:hidden')
					
		5. 속성 상태를 확인하는 메서드
			is(':속성 상태')	-	속성 상태를 확인하는 메서드 true 혹은 false 반환
			prop('속성상태',true or false)	-	속성상태를 확인하거나 적용하는 메서드	
					
		*********************************************************************************/
		$('#btn').click(function(){
			$('.check:checked').each(function(){
				console.log($(this).val());
				//val() == value 속성을 가진 폼태그의 value 값을 가지고 오거나 삽입
				//val('값') == 값 삽입, val() == 값 가지고 오기
			})
			
		});
		$('#btn1').click(function(){
			$('.check').prop('checked', true);
		});
		$('#btn2').click(function(){
			$('.check').prop('checked', false);
		});
		
		$('#btn3').click(function(){
			$('.check').each(function(){
				if($(this).prop('checked')){
					console.log($(this).val());
				}
			})
		})
	});
</script>
</head>
<body>
	<input type="checkbox" class="check" value=1 />1
	<input type="checkbox" class="check" value=2 />2
	<input type="checkbox" class="check" value=3 />3
	
	<button type="button" id="btn">확인</button>
	<button type="button" id="btn3">확인2</button>
	<button type="button" id="btn1">전체 체크</button>
	<button type="button" id="btn2">체크 해제</button>

	
</body>
</html>

JQuery 탐색선택자

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>제이쿼리 탐색 선택자, 배열 관련</title>
<script type="text/javascript">
	/*  
		<탐색선택자>
			-	선택자로 이미 선택된 객체를 한번 더 검색하여 객체를 반환
			$('선택자').first();		-	선택된 객체 중 첫번째 객체 요소 반환
			$('선택자').last();		-	선택된 객체 중 마지막 요소 반환
			$('선택자').eq(index);	-	선택된 객체중 인수값과 일치하는 인덱스 요소 선택 반환
			$('선택자').filter('선택자')-	선택된 객체중 filter 메서드의 인수값인 선택자와 일치하는 객체를 선택하여 반환
				ex) $('article').filter('.post-7') >> article 객체 중에서 .post-7인 article 객체 반환
					(vs. 인접관계 선택자 혼동하지 않기.)
		<배열 관련 메서드>
			-	다중으로 선택된 객체를 반복문 형태와 비슷하게 풀 수 있다.
			
			$('선택자').each();		- 다중으로 선택된 객체를 하나씩 풀어 함수를 실행
				ex)	$('선택자').each(function(){});	
					$.each($('선택자'), function(){});
			
			$('선택자').index('객체')	-다중으로 선택된 객체 중 index메서드의 인수객체와 동일한 객체를 검색하여 인덱스 반환.
	*/
</script>
</head>
<body>

</body>
</html>

 


Jquery 선택자 실습1 

(https://api.jquery.com/에서 test)

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>제이쿼리 선택자, 인접관계선택자 실습</title>
<script type="text/javascript">
	/*  
		실습4. 제이쿼리 사이트의 api 메뉴에 있는 article 태그 클릭시 클릭한 article 내의 a태그의 모든객체를 제거하시오.
		
		$('article').click(function(){
			//최종적으로 선택된 객체에 remove() 메서드 활용시 선택된 객체 제거
			//$(this) 는 선택된 article의 태그임으로 인접관계 선택자를 활용하여 자식 및 부모객체를 선택할 수 있음
		})
	*/
	
	$('article').click(function(){
		$(this).find('a').remove();
	})
	
	/*  
	실습5. 제이쿼리 사이트의 api 메뉴에 있는  .entry-summary 클릭 시  
	.entry-summary의 상위인  article 객체가 제거되도록 하시오.
	*/
	
	$('.entry-summary').click(function(){
		$(this).parents('article').remove();
	})
	
	/*  
	실습6. 제이쿼리 사이트의 api 메뉴에 있는  .entry-summary 클릭 시  
	 article > .entry-title > a태그 텍스트를 '한국스마트정보교육원'으로 변경하시오.
	*/
	
	$('.entry-summary').click(function(){
	    $(this).parents('article').find('.entry-title').find('a').text('한국스마트정보교육원');
	})
	
</script>
</head>
<body>

</body>
</html>

 

Jquery 선택자 실습2

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>제이쿼리 선택자, 인접관계 선택자</title>
<script type="text/javascript" src="./resource/js/jquery-3.4.1.min.js"></script>
<script type="text/javascript">
	$(function(){
		$('.del-input-group').click(function(){
			$(this).parents('.input-group').remove(); // == $(this).parent().remove();          
		})
	});
</script>
</head>
<body>
	<!--
	실습6. 
	.del-input-group 클릭시 .input-group이 제거되도록 하시오.
	-->
	<div class = "input-wrap">
		<div class = "input-group">
			<input type="text" name="memberName">
			<button type="button" class = "del-input-group">제거</button>
		</div>
		<div class = "input-group">
			<input type="text" name="memberName">
			<button type="button" class = "del-input-group">제거</button>
		</div>
		<div class = "input-group">
			<input type="text" name="memberName">
			<button type="button" class = "del-input-group">제거</button>
		</div>
		<div class = "input-group">
			<input type="text" name="memberName">
			<button type="button" class = "del-input-group">제거</button>
		</div>
		<div class = "input-group">
			<input type="text" name="memberName">
			<button type="button" class = "del-input-group">제거</button>
		</div>
	</div>
</body>
</html>

 

each, 속성 상태 확인 메서드 실습

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>each, 속성 상태 확인 메서드 실습</title>
<script type="text/javascript" src="./resource/js/jquery-3.4.1.min.js"></script>
<script type="text/javascript">
	/*  
		실습8. #btn 클릭시 .check의 객체가 체크가 되었다면 체크해제, 체크가 해제되었다면 체크를 하는 코드를 작성하시오.
	*/
	
	$(function(){
		$('#btn').click(function(){
			$('.check').each(function(){
				if($(this).prop('checked')){
					$(this).prop('checked',false);
				}else{
					$(this).prop('checked',true);	
				}
			})
		})
	});
	
</script>
</head>
<body>
	<input type="checkbox" class="check" value=1 /> 1
	<input type="checkbox" class="check" value=2 /> 2
	<input type="checkbox" class="check" value=3 /> 3
	
	<button type="button" id="btn">확인</button>

</body>
</html>

 

<파일을 다운로드, import 해서 내부 네트워크에서 사용>

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>제이쿼리 임포트</title>
<script type="text/javascript" src="./resource/js/jquery-3.4.1.min.js"></script>
</head>
<body>

</body>
</html>

*.min.* < 들여쓰기, 공백, 행간, 주석이 무시되어 압축됨. 용량이 작아 로딩 속도가 빠름.

 


<외부 네트워크에 접근해서 사용>

 

 


 

첫번째 인수에 선택자를 잘 파악해서 대입해 객체 반환.

 

 

$('article').click(function(){console.log('article클릭')})

 

$('article').click(function(e){console.log('article클릭',e)})

위치값이 같이 출력됨.

 


callback 함수

	var call = function(myFunction) {
		console.log(typeof myFunction);
		if(typeof myFunction =='function'){
			myFunction('안녕하세요');
		}
	};
	
	call(function(msg) {
		console.log(msg);
	})
	var sum = function(n1, n2, fn){
		if(typeof fn == 'function'){
			fn(n1 + n2);
		}
	};
	sum (10,20,function(n){
		console.log(n);
	})

callback 함수 실습

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>콜백함수 실습</title>
<script type="text/javascript">
	/*  
		실습1. sum이라는 함수가 있다. 첫번째 인수는 배열, 두번째 인수는 함수이다.
		sum함수를 실행시켜 배열의 총 합산값을 2번째 인수의 함수의 매개변수로 받도록 하여라.
	*/
	
	
	var arr = [10, 20, 30, 40, 50];
	
	
	
	var sum = function(arr, fn){
		if(typeof fn == 'function'){
			var sig = 0;
			for(var i = 0; i <arr.length ; i++){
				sig+=arr[i];
			}
			fn(sig);
		}
	};
		
	sum(arr,function(n1){
		console.log(n1);
	});
	
	/*  
		실습2. strFn이라는 함수가 있다. strFn함수의 첫번째 인수는 문자열, 두번째 인수는 함수이다.
		strFn 함수가 실행시 첫번째 인수에 담긴 문자열 값을 '-' 특수기호로 구분하여 배열로 2번째 인수의 함수의 매개변수로 반환하여라.
		strFn('한국스마트-정보교육원',function(){
			
		})
	*/
	
/* 	var strFn = function(str, fn){
		if(typeof fn == 'function'){
			var string = '';
			string = str.split(str,'-');
			fn(string);
		}
	};
	strFn('한국스마트-정보교육원',function(arr){
		console.log(arr);	
	})
 */
	
	var strFn = function(str, fn){
		if(typeof fn == 'function'){
			fn(str.split(str,'-'));
		}
	};
	strFn('한국스마트-정보교육원',function(arr){
		console.log(arr);	
	})

	
</script>
</head>
<body>

</body>
</html>

 

문자열 객체

더보기

"text/어쩌구"  포매터 콘텐츠타입 mime-type 명시 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문자열 객체</title>
<script type="text/javascript">
	/*
		값에 의해 생성된 문자열 객체는 아래의 메서드 및 속성을 사용할 수 있다.
		var 변수 = '';
		var 변수 = new String();
		var 변수 = new String('');
		
		<String 객체의 메서드 및 속성>
			1.	변수.indexOf(''); - 변수값에 담긴 문자열을 indexOf의 인수값과 일치하는 인덱스 변호를 반환
				변수.lastIndexOf(''); - 변수값에 담긴 문자열을 lastIndexOf의 인수값과 일치하는 인덱스 번호를 뒤에서부터 반환
			2.	변수.replace('대상문자열', '바뀔 문자열') - replace의 첫번째 인수값과 일치하는 값을 두번째 인수값으로 치환
			3.	변수.substring(숫자1, 숫자2) - 문자열의 인덱스값 기준으로 substring의 첫번째 인수 부터 두번째 인수 전 까지 문자열을 잘라 반환
											인수값이 1개일 경우 인수값과 일치하는 인덱스 번호부터 출력
			4.	변수.length - (속성) 문자열의 개수를 반환
			5.	변수.split('구분자') - split 인수값 기준으로 잘라 배열로 반환
			6.	변수.toLowerCase() - 영문을 소문자로 변환
				변수.toUpperCase() - 영문을 대문자로 변환
			7.	변수.trim() - 문자열 처음과 끝의 공백 제거 (완전히 제거하려면 replace or 정규표현식 이용)
	*/
	
	//1. indexOf & lastIndexOf
	var str= '한국스마트정보교육원한국스마트정보교육원한국스마트정보교육원';
	console.log(str.indexOf('교육원'));
	console.log(str.lastIndexOf('교육원'));
	
	//2. replace
	var str = '한국스마트정보교육원';
	console.log(str.replace('한국', '전주한국'));
	
	//3. substring
	var str= '한국스마트정보교육원';
	str.substring(2,7);
	
	//4. length
	var str = '한국스마트정보교육원';
	console.log(str.length);
	
	//5. split
	var str= '한국-스마트-정보-교육원';
	console.log(str.split('-'));

	//6. toLowerCase & toUpperCase
	var str='abc';
	console.log(str.toUpperCase());
	console.log(str.toLowerCase());
	
	//7. trim
	var str= '          한 국  스 마 트  정 보    교 육 원      ';
	console.log(str.trim());
</script>

</head>
<body>

</body>
</html>

1. indexOf & lastIndexOf

2. replace

3. substring

4. length

5. split

6. toLowerCase & toUpperCase

7.  trim : 문자열 "앞&뒤"의 공백만 제거

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문자열 객체 실습 1</title>
<script type="text/javascript">
	/*
		실습 1. url 이라는 변수에 주소값이 담겨있다. url에 표현된 주소의 도메인명과 프로젝트명을 제외한 나머지 url만 출력시켜라.
			1.	도메인 - naver.com
			2.	프로젝트명 - myProject
			-완료시 출력될 url - myPage?name=홍길동&age=20
			-사용할 메서드 indexOf, substring
	*/
	var url = 'https://naver.com/myProject/myPage?name=홍길동&age=20';
	var proName = 'myProject/';
	url = url.substring(url.indexOf(proName)+proName.length);
	
	/*  
		실습2. url이라는 변수에 주소값이 담겨있다. 프로젝트명과 도메인을 제외한 주소값만 출력시켜라.
			-완료시 출력될 url - myPage?name=홍길동&age=20
			-사용할 메서드 lastIndexOf, substring
	*/
	var url = 'https://naver.com/myProject/myPage?name=홍길동&age=20';
	var a = '/';
	url = url.substring(url.lastIndexOf(a)+a.length);
	
	/*  
		실습3. url이라는 변수에 주소값이 담겨있다. 프로젝트명만 출력시켜라.
		-완료시 출력될 url - myProject
	*/
	
	var url = 'https://naver.com/myProject/myPage?name=홍길동&age=20';
	url = url.replace('https://','');
	url = url.replace('http://','');
	var slashArrUrl = url.split('/');
	url = slashArrUrl[1];
	
	
	url = url.replace('https://','');
	url = url.replace('http://','');
	var a = '/'
	var aI = url.indexOf(a);
	var aLi = url.lastIndexOf(a);
	url = url.substring(aI+a.length,aLi);
	
</script>
</head>
<body>

</body>
</html>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>문자열 객체 실습 2</title>
<script type="text/javascript">
	/*  
		실습4. location의 객체를 활용하여 주소값을 가져오고 해당 주소값에 담긴 기능의 명칭을 출력하여라.
		(주소의 패턴 http://도메인/프로젝트/기능/페이지)
		도메인, 프로젝트명 고정
	*/
	
	//split
	var url = location.href;
	var a = '/';
	url = url.replace('http://'+location.host+a,'')
			.replace('https://'+location.host+a,'');
	
	var urlArr = url.split(a);
	url = urlArr[1];
	
	//substring
	var url = location.href;
	var a = '/';
	url= url.replace('http://'+location.host+a,'')
			.replace('https://'+location.host+a,'');
	url= url.substring(url.indexOf(a)+a.length, url.lastIndexOf(a))
	
	//substring2
	var url = location.href;
	var proName = 'javascriptEx06-0323';
	url= url.replace('https://'+location.host+'/','');
	url= url.replace('http://'+location.host+'/','');
	url= url.replace(proName+'/','');
	
	var len = url.indexOf('/');
	url = url.substring(0, len);
	console.log(url);
	
	
</script>
</head>
<body>

</body>
</html>

브라우저 객체 모델

window 객체

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>윈도우 객체</title>
<script type="text/javascript">
	//open
	window.open('https://naver.com','네이버','width=350,height=400, left=50, top=10, scrollbars=no');

	/*  
		setInterval() - 일정 시간 마다 함수를 실행시키는 메서드
		clearInterval() - 일정 시간 마다 실행되는 함수를 종료시키는 메서드
	*/
	
	var i = 0;
	var interval = setInterval(function(){
		console.log(i);
		if(i>10){
			clearInterval(interval);
		}
		i++;
	},3000);
    
    /*  
		setTimeout - 일정 시간이 지나면 코드를 실행하고 종료하는 메서드
	*/
	
	setTimeout(function(){
		console.log('3초 후 실행');		
	}, 3000);
	
</script>
</head>
<body>

</body>
</html>

 

 

open 메서드로 새 창을 생성한 모습

 

popupEx01.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>윈도우 객체 활용 팝업 실습</title>
<script type="text/javascript">
	/*
		실습5. 
			1.아래의 popupOpen 버튼 클릭시 팝업을 띄우시오.
			2.popupCall.html에서 팝업 닫기 버튼을 눌렀을 경우 팝업을 닫도록 하시오.
	*/
</script>

</head>
<body>
<button type="button" id="popupOpen">팝업띄우기</button>

<script type="text/javascript">
var popupOpen = document.getElementById('popupOpen');
popupOpen.addEventListener('click',function(){
	window.open('./popupCall.html','팝업창','width=400,height=600,left=50,top=50,scrollbars=no')
});
</script>

</body>
</html>

popupCall.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>띄운 팝업</title>
</head>
<body>
<button type="button" id="popupClose">팝업 닫기</button>
<script type="text/javascript">
	var popupClose = document.getElementById('popupClose');
	popupClose.addEventListener('click', function() {
		window.close();
	} )
</script>
</body>
</html>

setInterval메서드와 clearInterval메서드

 

 

setTimeout메서드. (자동으로 종료되기 때문에 clearTimeout은 잘 쓰지 않음)

 


DOM객체

DOM (Document Object Model) ①

DOM (Document Object Model) ② - event / 유효성검사

DOM (Document Object Model) ③ - style

 

 

location 객체 / history 객체

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>location / history 객체</title>
<script type="text/javascript">
	/*  
		<location>
		window 객체에 포함된 객체이며 url 주소에 대한 정보가 담겨있다.
		location.href - 주소값을 가지고 오거나 해당 주소로 이동시킨다.
		location.reload() - 현재 페이지를 갱신한다.
		
		<history>
		window 객체에 포함된 객체이며, 방문자의 이동 정보를 가지고있 다.
		history.back() - 이전 페이지로 이동
		history.go(숫자) - 인수값 만큼 현재 페이지 기준으로 방문 페이지 이동
		
	*/	
	
</script>

</head>
<body>

</body>
</html>

 

 

screen객체

 

screen과 client/offset의 속성값은 차이가 있다.

 

navigator 객체

 


javascript cookies

https://www.w3schools.com/js/js_cookies.asp

 

popupEx01.html에 쿠키추가

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>윈도우 객체 활용 팝업 실습</title>
<script type="text/javascript">
	/*
		실습5. 
			1.아래의 popupOpen 버튼 클릭시 팝업을 띄우시오.
			2.popupCall.html에서 팝업 닫기 버튼을 눌렀을 경우 팝업을 닫도록 하시오.
	*/
</script>

</head>
<body>
<button type="button" id="popupOpen">팝업띄우기</button>

<script type="text/javascript">

	var popupOpen = document.getElementById('popupOpen');
	popupOpen.addEventListener('click',function(){
		var cName = getCookie('popupCheck')
		if(cName != 'Y'){
			window.open('./popupCall.html','팝업창','width=400,height=600,left=20,top=20,scrollbars=no');
		}		
	});

	function getCookie(cname) {
		  var name = cname + "=";
		  var decodedCookie = decodeURIComponent(document.cookie);
		  var ca = decodedCookie.split(';');
		  for(var i = 0; i <ca.length; i++) {
		    var c = ca[i];
		    while (c.charAt(0) == ' ') {
		      c = c.substring(1);
		    }
		    if (c.indexOf(name) == 0) {
		      return c.substring(name.length, c.length);
		    }
		  }
		  return "";
		};

</script>

</body>
</html>

popupCall.html에 쿠키추가

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키를 활용하여 아이디 저장하기</title>
</head>
<body>
	<!--  
		실습6. 아이디 입력 후 '아이디 저장하기' 버튼 클릭시 쿠키로 아이디를 저장하고 새로고침 이후에도 아이디가 노출되도록 하시오.
	-->
	아이디 : <input type="text" id="userId" placeholder="아이디 입력">
	<button type="button" id="idSave">아이디 저장하기</button>
	
<script type="text/javascript">
	function setCookie(cname, cvalue, exdays) {
		  var d = new Date();
		  d.setTime(d.getTime() + (exdays*24*60*60*1000));
		  var expires = "expires="+ d.toUTCString();
		  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
		};
	
	function getCookie(cname) {
		  var name = cname + "=";
		  var decodedCookie = decodeURIComponent(document.cookie);
		  var ca = decodedCookie.split(';');
		  for(var i = 0; i <ca.length; i++) {
		    var c = ca[i];
		    while (c.charAt(0) == ' ') {
		      c = c.substring(1);
		    }
		    if (c.indexOf(name) == 0) {
		      return c.substring(name.length, c.length);
		    }
		  }
		  return "";
		};




	var idSave = document.getElementById('idSave');

	var savedId = '';
	
	idSave.addEventListener('click', function() {
		var userId = document.getElementById('userId');
		var userIdValue = userId.value;
		if(userIdValue != '' && userIdValue != undefined ){
			setCookie('userId',userIdValue,1);
		}		
	});
	
	var getUserId = getCookie('userId');
	if(getUserId != ''){
		var userId = document.getElementById('userId');
		userId.value = getUserId;
	};
	
	
</script>

</body>
</html>

input box value cookie

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>쿠키를 활용하여 아이디 저장하기</title>
</head>
<body>
	<!--  
		실습6. 아이디 입력 후 '아이디 저장하기' 버튼 클릭시 쿠키로 아이디를 저장하고 새로고침 이후에도 아이디가 노출되도록 하시오.
	-->
	아이디 : <input type="text" id="userId" placeholder="아이디 입력">
	<button type="button" id="idSave">아이디 저장하기</button>
	
<script type="text/javascript">
	function setCookie(cname, cvalue, exdays) {
		  var d = new Date();
		  d.setTime(d.getTime() + (exdays*24*60*60*1000));
		  var expires = "expires="+ d.toUTCString();
		  document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
		};
	
	function getCookie(cname) {
		  var name = cname + "=";
		  var decodedCookie = decodeURIComponent(document.cookie);
		  var ca = decodedCookie.split(';');
		  for(var i = 0; i <ca.length; i++) {
		    var c = ca[i];
		    while (c.charAt(0) == ' ') {
		      c = c.substring(1);
		    }
		    if (c.indexOf(name) == 0) {
		      return c.substring(name.length, c.length);
		    }
		  }
		  return "";
		};




	var idSave = document.getElementById('idSave');

	var savedId = '';
	
	idSave.addEventListener('click', function() {
		var userId = document.getElementById('userId');
		var userIdValue = userId.value;
		if(userIdValue != '' && userIdValue != undefined ){
			setCookie('userId',userIdValue,1);
		}		
	});
	
	var getUserId = getCookie('userId');
	if(getUserId != ''){
		var userId = document.getElementById('userId');
		userId.value = getUserId;
	};
	
	
</script>

</body>
</html>

JDBC(Java data base connectivity) 프로그램 순서 7단계

01단계 : 드라이버 로딩 (mysql 드라이버 로딩) 

02단계 : Connection객체로 DB연결 
1) ip 2) port번호 3) db접속id 4) db접속비번 5) db명(sid,service name) 

03단계 : Query실행을 위한 준비 ★★★★★
(statement 또는 PreparedStatement객체생성) 

04단계 : Query실행 

05단계 : Query실행결과 사용 (select)
(insert, update, delete의 경우 Query 실행 여부 파악) 

06단계 : statement 또는 PreparedStatement객체 종료(close()) 

07단계 : DB연결(Connection 객체) 종료(close())

>> mysql 드라이버

//Connection 메서드의  static으로 선언되어있어서 new 새로 생성할 필요가 없다.
//메서드 내부 에 객체의 주소가 return되는 처리과정이 있기 때문.

 

04 : 

insert delete updata > excuteUpdate() 

select > excuteQuery()

 

 

(파일이 분리되었을 경우에도 잘 알 수 있도록 흐름을 이해하기)

 

'JSP' 카테고리의 다른 글

[JSP + MySQL] list 화면→수정화면  (0) 2020.03.26
[JSP+MySQL] list 불러오기  (0) 2020.03.26
[JSP] JSP_session응용  (0) 2020.03.13
[JSP] JSP 문법 구조 / include를 활용해 layout 나누기  (0) 2020.03.13

SQL 실습

테이블 생성 - DDL

 

속성이 레벨번호, 레벨이름, 레벨등록날짜로 구성되고 기본키가 권한인 회원 권한테이블을 생성하시오.
CREATE TABLE tb_member_level  (
	level_num INT(11) NOT NULL AUTO_INCREMENT
	,level_name VARCHAR(300) NOT NULL
	,level_reg_date DATE NOT NULL
	,PRIMARY KEY(level_num)
);

 

속성이 회원 아이디, 비밀번호, 이름, 권한, 이메일, 주소, 회원등록날짜로 구성되고 기본키가 회원아이디, 회원 권한은 회원권한테이블의 아이디를 참조하는 회원테이블을 생성하시오.
CREATE TABLE tb_member (
	m_id VARCHAR(200) NOT NULL
	,m_pw VARCHAR(200) NOT NULL
	,m_name VARCHAR(200) NOT NULL
	,m_level INT(11) NULL DEFAULT NULL
	,m_email VARCHAR(200) NOT NULL
	,m_addr VARCHAR(200) NOT NULL
	,m_reg_date DATE NOT NULL
	,PRIMARY KEY (m_id)
	,CONSTRAINT FK_m_level FOREIGN KEY (m_level) REFERENCES tb_member_level(level_num)
);

 

속성이 상품코드, 상품이름, 상품가격, 판매자 아이디, 상품등록날짜 구성되고 기본키가 상품코드, 판매자 아이디는 회원테이블의 아이디를 참조하는 상품테이블을 생성하시오.
CREATE TABLE tb_goods (
	g_code VARCHAR(50) NOT NULL
	,g_name VARCHAR(50) NOT NULL
	,g_price INT(11) NOT NULL
	,g_seller_id VARCHAR(50) NOT NULL
	,g_reg_date DATE NOT NULL
	,PRIMARY KEY (g_code)
	,CONSTRAINT FK_g_seller_id FOREIGN KEY (g_seller_id) REFERENCES tb_member(m_id)
);

 

속성이 주문번호, 구매자 아이디, 주문상품코드, 주문수량, 주문등록날짜로 구성되고 기본키(자동증가)가 주문번호이고, 구매자 아이디는 회원테이블의 아이디를 참조하며 주문상품코드는 상품테이블의 상품코드를 참조하는 테이블을 생성하시오.
CREATE TABLE tb_order (
	o_num INT(11) NOT NULL AUTO_INCREMENT
	,o_id VARCHAR(200) NULL DEFAULT NULL
	,o_g_code VARCHAR(200) NULL DEFAULT NULL
	,o_amount INT(11) NULL DEFAULT NULL 
	,o_reg_date DATETIME NULL DEFAULT NULL
	,PRIMARY KEY (o_num)
	,CONSTRAINT FK_o_g_coed FOREIGN KEY (o_g_code) REFERENCES tb_goods (g_code)
	,CONSTRAINT FK_o_id FOREIGN KEY (o_id) REFERENCES tb_member (m_id)
);

 

로그인 번호, 로그인 아이디, 로그인 날짜, 로그아웃 날짜 속성으로 구성되고, 기본키(자동증가)가 로그인 번호이고, 로그인 아이디는 회원테이블의 아이디를 참조하는 로그인 테이블을 생성하시오.
CREATE TABLE tb_login (
	login_num INT(11) NOT NULL AUTO_INCREMENT
	,login_id VARCHAR(200) NOT NULL 
	,login_date DATE NOT NULL
	,logout_date DATE NOT NULL
	,PRIMARY KEY (login_num)
	,CONSTRAINT FK_login_id FOREIGN KEY (login_id) REFERENCES tb_member (m_id)
);

 

코멘트를 잘 작성하자!


다음과 같이 회원레벨 테이블에 삽입하는 SQL 문장을 작성하시오.

 

INSERT INTO tb_member_level
(level_num, level_name, level_reg_date)
VALUES
(1, '관리자', '2020-03-17')
,(2, '판매자', '2020-03-17')
,(3, '구매자', '2020-03-17');

 

각 데이터를 각 테이블에 삽입하는 SQL 문장 작성.
외래키가 참조된 순서에 맞추어 insert문을 작성해주어야 한다.

 


SQL 집계함수

SELCET 구문이나 HAVING절에서 사용한다.

집계 함수
함수명 함수표기 설명
SUM SUM() 합계를 구한다.
AVG AVG() 평균을 구한다.
MIN MIN() 최소값을 구한다.
MAX MAX() 최대값을 구한다.
COUNT COUNT() 행의 개수를 센다. (NULL무시)
COUNT DISTINCT COUNT(DISTINCT) 행의 개수를 센다. (중복은 1개만 인정)
SELECT
	o.o_id AS '구매자 아이디'
	,sum(o.o_amount) AS '총 주문수량'
	,AVG(o.o_amount) AS '평균 주문수량'
	,ROUND(AVG(o.o_amount),1) AS '평균 주문수량'
	,COUNT(o.o_amount) AS '총 주문횟수'
	,MAX(o.o_amount) AS '최대 주문수량'
	,MIN(o.o_amount) AS '최소 주문수량'
FROM
	tb_order AS o
GROUP BY o.o_id
;

round( n , 반올림 할 소수점 자리수 )

 

실행 순서 인지하기 (tb_order AS o 선언 시점이 사용 시점 이전에 있어야 한다!)

 


SQL 내장함수

데이터 형식 변환 함수

-- 형변환

SELECT
		NOW() AS 'DATETIME'
		,CAST(NOW() AS DATE) AS 'DATE'
		,CAST(NOW() AS TIME) AS 'TIME';
        
        
SELECT
    CONVERT (AVG(o.o_amount), SIGNED INTEGER) AS '평균 주문 개수'
FROM
    tb_order o;
    
 --   정수 타입: 음수까지 표현할 수 있는 SIGNED 타입
 --    		  양수만을 표현할 수 있는 UNSIGNED 타입

 

문자열 연결함수

-- 문자열 연결함수

SELECT
	CONCAT(m.m_id, ' : ',m.m_name) AS '회원 아이디 : 회원 이름'
FROM 
	tb_member m;

 

암시적인 형변환

-- 문자와 문자를 더함 (정수로 변환되서 연산됨)
SELECT '100' + '200’ ;
-- 문자와 문자를 연결 (문자로 처리)
SELECT CONCAT('100', '200’); 
-- 정수와 문자를 연결 (정수가 문자로 변환되서 처리)
SELECT CONCAT(100, '200’);

제어 흐름 함수

SELECT IF (조건식, true시 반환하는 값, false시 반환하는 값);

-- 조건이 null이 아닐 경우 조건을 반환.
SELECT IFNULL(조건, null일경우 반환하는 값);

-- 조건1과 조건2가 같을 경우 null값을 반환, 다를경우 조건1을 반환
SELECT NULLIF(조건1,조건2);

 

 

문자열 함수

-- 문자를 ascii 코드로 변환 / ascii코드를 문자로 변환
SELECT ASCII('A'), CHAR(65);

-- 공백을 제거
SELECT TRIM('   KSMART35   ') AS result;

-- 반복
SELECT REPEAT('KSMART', 3) AS result;

-- 문자열 대체
SELECT REPLACE ('KSMART35기', 'KSMART' , '한국스마트정보교육원') AS result;

-- 문자열을 거꾸로 출력
SELECT REVERSE ('KSMART35') AS result;

-- 공백을 추가, 문자열 연결
SELECT CONCAT('KSMART', SPACE(15), '35기') AS result;

 

날짜 함수

SELECT 
   ADDDATE('2020-03-18', INTERVAL 31 DAY)
  ,ADDDATE('2020-03-18', INTERVAL 1 MONTH)

  ,SUBDATE('2020-03-18', INTERVAL 31 DAY)
  ,SUBDATE('2020-03-18', INTERVAL 1 MONTH)

  ,ADDTIME('2020-03-18 23:59:59', '1:1:1')
  ,ADDTIME('15:00:00', '2:10:10')

  ,SUBTIME('2020-03-18 23:59:59', '1:1:1')
  ,SUBTIME('15:00:00', '2:10:10');

SELECT 
   YEAR(CURDATE())
  ,MONTH(CURDATE())
  ,DAYOFMONTH(CURDATE());

SELECT 
   HOUR(CURTIME())
  ,MINUTE(CURRENT_TIME())
  ,SECOND(CURRENT_TIME())
  ,MICROSECOND(CURRENT_TIME());

SELECT DATE(NOW()), TIME(NOW());

curdate() <현재날짜

year >int data type 으로 반환

SELECT 
   DATEDIFF('2020-08-06', NOW())
  ,TIMEDIFF('17:30:01', CURRENT_TIME());

SELECT 
   DAYOFWEEK(CURDATE())
  ,MONTHNAME(CURDATE())
  ,DAYOFYEAR(CURDATE());

SELECT LAST_DAY('2020-03-18');

시스템 함수

SELECT SLEEP(3);

SELECT 
    a.*
FROM 
    tb_member a,(SELECT SLEEP(3)) b;

n초 뒤에 결과 반환


MySQL 변수

SET @myNumber1 = 1;
SET @myNumber2 = 2.3;
SET @myStr1 = '합계:';

SELECT
    @myNumber1 AS '변수1'
   ,@myNumber2 AS '변수2';
 
SELECT
    @myStr1
   ,@myNumber1 + @myNumber2) AS '합계';
 
SELECT
    @myStr1
   ,ROUND((@myNumber1 + @myNumber2), 3) AS '합계';

SELECT 문 조건 연산자

비교 연산자 논리 연산자
연산자 의미 연산자 의미
= 같다 AND 모든 조건을 만족해야 검색
<> 다르다 OR 여러 조건 중 한가지만 만족해도 검색
< 작다 NOT 조건을 만족하지 않는 것만 검색
> 크다  
<= 작거나 같다
>= 크거나 같다

 

SELECT 문 조건 LIKE 키워드

사용 예 설명
LIKE '데이터%' '데이터'로 시작하는 문자열 (길이는 상관 없다.)

LIKE '%데이터'

'데이터'로 끝나는 문자열 (길이는 상관 없다.)
LIKE '%데이터%' '데이터'가 포함된 문자열
LIKE '데이터____' 데이터로 시작하는 7자 길이의 문자열
LIKE '__데%' 세번째 글자가 '데'인 문자열

 


SQL JOINS

INNER JOIN

SELECT
	m.m_id			AS '회원 아이디'
	,m.m_name		AS '회원 이름'
	,l.level_name	AS '회원 권한'
FROM
	tb_member m
	INNER join
	tb_member_level l
	on
	m.m_level = l.level_num
WHERE
	l.level_name LIKE '%판매%';

 

'Database' 카테고리의 다른 글

[Database] 데이터베이스 설계  (0) 2020.03.25
[Database] join  (0) 2020.03.25
[Database] SQL 활용 ①  (3) 2020.03.18
[Database] MySQL 실습  (0) 2020.03.11

+ Recent posts