[문항1]  

JSP와 오라클 데이터베이스를 JDBC(Java Database Connectivity) 방식으로 연동하는 코드를  작성하시오. [10점]


데이터베이스 이름 : xe
port 번호 : 1521
계정명 : scott
비밀번호 : tiger

 

// JDBC 방식
Class.forName("oracle.jdbc.driver.OracleDriver");
con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "scott", "tiger");

 

 

 

[문항2]  

JSP의 내장객체 중 영역에 관련된 객체(request, session)를 이용하여 회원의 id를 각각 공유 설정하고, 공유된 id를 구해오는 코드를 각각 작성하시오.  [10점]


회원의 id : toto

	String id = "toto";
	request.setAttribute("rid", id);
	session.setAttribute("sid", id);
	
	String r_id = (String)request.getAttribute("rid");
	String s_id = (String)session.getAttribute("sid");

 

 

 

[문항3]  

사용자 폼 태그에서 method=post 방식으로 넘어온 한글 자료를 JSP에서 받을 때 한글을 깨지지 않게 하는 코드를 작성하시오. [10점]

 

		request.setCharacterEncoding("utf-8");

 

 

 

[문항4]  

다음 Java코드와 같은 역할을 하는 내용을 보여주는 JSP 표준액션 코드를 작성 하시오. [10점]


Car sonata = new Car();

<jsp:useBean id="sonata" class="Car"/>

 

 

 

[문항5]  

체크박스는 복수 개를 선택할 수 있다. 복수개가 선택된 값을 JSP에서 String 배열로 받으려면 request객체 하위의 어떠한 메서드를  사용해야 하는가? [10점]

 

답 : request 객체의 getParameterValues() 메소드를 사용하면 된다

 

 

 

[문항6]  

자바 서블릿 코드에서 출력 스트림 객체를 만드는 방법은? [10점]

 

PrintWriter out = response.getWriter();

 

 

 

[문항7]  

다음 보기는 JDBC를 활용하여 테이블에 데이터를 입력하는 프로그램이다. 괄호 (1) (2) (3) (4)를 채워서 완성하시오. [10점]
Class.forName((1));
Connection con=DriverManager.getConnection((2), "scott","tiger");
PreparedStatement pstmt = con.prepareStatement((3));
pstmt.setInt(1, deptno);
pstmt.setString(2, dname);
pstmt.setString(3, loc);
int result = pstmt.(4);
pstmt.close();
con.close();

 

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "scott","tiger");
PreparedStatement pstmt = con.prepareStatement(sql);
pstmt.setInt(1, deptno);
pstmt.setString(2, dname);
pstmt.setString(3, loc);
int result = pstmt.executeUpdate();
pstmt.close();
con.close();

# 실수했다, sql 대신 SQL문이 들어가야함

# insert into 테이블명 values(?,?,?)

 

 

 

[문항8]  다음과 같은 조건에 맞는 게시판 양식을 작성하세요? [10점]


1) 값 전달 방식은 post 방식으로 한다.
2) 값이 전달될 파일명은 board.jsp 로 작성한다.
3) 입력 양식의 name값은 위에서부터 title, name, password, content 순서로 한다.
4) 확인 버튼은 submit으로 작성한다.
5) 게시판 양식 : boardform.html
    폼에서 넘어온 값을 받는 파일 : board.jsp
    자바빈 클래스 : board – BoardBean.java
boardform.txt 파일로 작성해서 제출하세요.

 

- boardform.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시판</title>
</head>
<body>

<table border=1 align=center>
<form method="post" action="board.jsp">
	<caption>게시판</caption>
	<tr><th>제목</th>
		<td><input type=text name="title"></td>
	</tr>
	<tr><th>작성자</th>
		<td><input type=text name="name"></td>
	</tr>
	<tr><th>비밀번호</th>
		<td><input type=password size=50 name="password"></td>
	</tr>
	<tr><th>내용</th>
		<td><textarea cols=60 rows=10 name="content"></textarea></td>
	</tr>
	<tr><td colspan=2 align=center>
			<input type=submit value="확인">
		</td>
	</tr>
</form>
</table>

</body>
</html>

 

 

 

[문항9]  위 8번 문제의 양식에서 넘어온 값을 저장하기 위한 자바빈(DTO) 클래스를 작성하세요? [10점]


1) 입력 양식의 name값은 위에서부터 title, name, password, content 순서로 한다.
2) 자바빈 클래스의 package는 board로 작성한다.
3) 자바빈 클래스는 BoardBean 으로 작성한다.
4) 게시판 양식 : boardform.html 
    자바빈 클래스 : board – BoardBean.java
boardbean.txt 파일로 작성해서 제출하세요.

 

- board/BoardBean.java

package board;

public class BoardBean {
	private String title;
	private String name;
	private String password;
	private String content;
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
}

 

 

[문항10]  위 8번 문제의 게시판 폼에서 넘어온 값을 액션태그를 사용하여 자바빈 클래스(DTO)에 저장하고 출력하는 프로그램을 작성하세요. [10점]


1) 한글값이 깨지지 않도록 처리한다.
2) 게시판 폼에서 넘어온 값을 액션태그를 이용해서 자바빈 클래스에 저장하고, 저장된 값을 출력하시오.
3) 게시판 양식 : boardform.html
    폼에서 넘어온 값을 받는 파일 : board.jsp
    자바빈 클래스 : board – BoardBean.java
board.txt 파일로 작성해서 제출하세요.

 

- board.jsp

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

<%
	request.setCharacterEncoding("utf-8");
%>
<jsp:useBean id="board" class="board.BoardBean"/>
<jsp:setProperty property="*" name="board"/>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

제목 : <jsp:getProperty name="board"  property="title" /> <br>
작성자 : <jsp:getProperty name="board" property="name" /> <br>
비밀번호 : <jsp:getProperty name="board" property="password" /> <br>
내용 : <jsp:getProperty name="board" property="content" />

</body>
</html>

 

 

점수

98 / 100

 

 

 

HTML / Javascript 유효성 검사

웹표준 기술을 이용해서 아래의 조건에 맞는 양식을 만들고 유효성 검사를 하시오

1) 값 전달 방식은 post 방식으로 하고, action은 gugu.jsp 로 하시오.
2) 제목 : 보고 싶은 구구단은?
3) select 태그를 이용하여 2 ~ 9중에서 선택할 수 있도록 작성하시오.
4) 확인 버튼의 type은 submit로 설정 하시오.
5) 구구단을 선택하지 않고 확인버튼 눌렀을 때 유효성검사를 하시오.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
	// 유효성 검사
	function check(){
		var dan = document.getElementById("dan");
		if(dan.value == ""){
			alert("구구단을 선택하세요.");
			dan.focus();
			return false;
		}
	}
</script>
</head>
<body>
<form method="post" action="gugu.jsp" onSubmit="return check()">
	<h1>보고싶은 구구단은 ?</h1>
	<select id="dan" name="dan" style="width:100px">
		<option value="">선택안함</option>
		<option value="2">2</option>
		<option value="3">3</option>
		<option value="4">4</option>
		<option value="5">5</option>
		<option value="6">6</option>
		<option value="7">7</option>
		<option value="8">8</option>
		<option value="9">9</option>
	</select>
	<br><br>
	<input type="submit" value="확인">
</form>
</body>
</html>

 

JSP 태그 / 값 전달받기

위 1번 문제 양식에서 선택한 구구단을 아래와 같이 출력하는 파일을 작성하시오

1) 앞의 문제에서 선택한 구구단을 받아서 아래와 같이 출력 하시오.
2) 출력 파일은 gugu.jsp 파일로 작성하시오.
3) 제목(구구단 7단)의 한글값이 깨지지 않도록 처리하시오.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	int dan = Integer.parseInt(request.getParameter("dan"));
%>
<h1>구구단 <%=dan %></h1>
<%
	for(int i = 1; i < 10 ; i ++) {
		out.println(dan + " * " + i + " = " + dan * i + "<br>");
	}
%>

 

Javascript 유효성 검사

웹표준 기술을 이용해서 아래의 조건에 맞는 양식을 만들고 유효성 검사를 하시오

1) 값 전달 방식은 post 방식으로 한다.
2) 입력 양식의 id는 위에서부터 myid, mypasswd로 각각 설정한다.
3) 로그인 버튼의 type은 submit으로 하고, 취소 버튼은 reset으로 설정한다.
4) 로그인 버튼 눌렀을 때 유효성검사를 하시오.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인 폼</title>
<script>
	 function check(){
		var myid = document.getElementById("myid");	
		var mypasswd = document.getElementById("mypasswd");	
		
		if(myid.value == ""){
			alert("ID를 입력 하세요.");
			myid.focus();
			return false;
		}
		if(mypasswd.value == ""){
			alert("비밀번호를 입력하세요.");
			mypasswd.focus();
			return false;
		}
	}
</script>

</head>
<body>

<form method="post" action="login.jsp" onSubmit="return check()">
<table border=1 width=350 align=center>
	<caption>로그인</caption>
	<tr><td>ID</td>
		<td><input type=text size=20
							 maxlength=10
							 autofocus="autofocus"
							 name="myid"
							 id="myid">		
		</td>
	</tr>
	<tr><td>비밀번호</td>
		<td><input type=password size=20
								 name="mypasswd"
								 id="mypasswd">
		</td>
	</tr>
	<tr><td colspan=2 align=center>
			<input type=submit value="로그인">
			<input type=reset value="취소">
		</td>
	</tr>
</table>
</form>

</body>
</html>

 

Javascript 유효성 검사

웹표준 기술을 이용해서 아래의 조건에 맞는 양식을 만들고 유효성 검사를 하시오

1) 값 전달 방식은 post 방식으로 한다.
2) 입력 양식의 id는 위에서부터 title, name, mypasswd, mycontent로 각각 설정한다.
3) 확인 버튼의 type은 submit으로 설정한다.
4) 확인 버튼 눌렀을 때 유효성검사를 하시오.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>게시판</title>
<script>
	 function check(){
		var title = document.getElementById("title");
		var name = document.getElementById("name");
		var mypasswd = document.getElementById("mypasswd");
		var mycontent = document.getElementById("mycontent");
		
		if(title.value == ""){
			alert("제목을 입력 하세요.");
			title.focus();
			return false;
		}
		if(name.value == ""){
			alert("작성자를 입력 하세요.");
			name.focus();
			return false;
		}
		if(mypasswd.value == ""){
			alert("비밀번호를 입력 하세요.");
			mypasswd.focus();
			return false;
		}
		if(mycontent.value == ""){
			alert("내용을 입력 하세요.");
			mycontent.focus();
			return false;
		}
	}
</script>

</head>
<body>

<form method="post" action="board.jsp" onSubmit="return check()">
<table border=1 width=500 align=center>
	<caption>게시판</caption>
	<tr>
		<th>제목</th>
		<td><input type=text size=20 name="title"
									 id="title">
		</td>
	</tr>
	<tr>
		<th>작성자</th>
		<td><input type=text size=20 name="name"
									 id="name">
		</td>
	</tr>
	<tr>
		<th>비밀번호</th>
		<td><input type=password name="mypasswd"
							     id="mypasswd">
	    </td>
	</tr>
	<tr>
		<th>내용</th>
		<td><textarea rows="5" cols="50" name="mycontent"
 					id="mycontent"></textarea>
		</td>
	</tr>
	<tr>
		<td colspan=2 align=center>
			<input type="submit" value="확인">
		</td>
	</tr>
</table>
</form>

</body>
</html>

 

Javascript 유효성 검사
웹표준 기술을 이용해서 아래의 조건에 맞는 양식을 만들고 유효성 검사를 하시오

1) 값 전달 방식은 post 방식으로 한다.
2) ID중복검사 버튼의 type은 button을 작성한다.
3) 핸드폰 번호 앞자리는 반드시 선택하도록 유효성 검사를 하시오.
4) 성별도 남자, 여자 중에서 1개를 선택하도록 유효성 검사를 하시오.
5) 취미는 반드시 2개 이상 선택 하도록 유효성 검사를 하시오.
6) 자기소개는 100자 이내로 입력 하도록 유효성 검사를 하시오.
7) 회원가입 버튼의 type은 submit으로 작성하시오.
8) 입력 및 선택 양식에 대해서 모두 유효성 검사를 하시오.

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원가입 폼</title>

<script>

	// 유효성 검사
	function check(){
		var id = document.getElementById("id");
		var passwd = document.getElementById("passwd");
		var name = document.getElementById("name");
		var mailid = document.getElementById("mailid");
		var domain = document.getElementById("domain");
		var phone1 = document.getElementById("phone1");
		var phone2 = document.getElementById("phone2");
		var phone3 = document.getElementById("phone3");
		var male = document.getElementById("male");
		var female = document.getElementById("female");
		var h1 = document.getElementById("h1");
		var h2 = document.getElementById("h2");
		var h3 = document.getElementById("h3");
		var h4 = document.getElementById("h4");
		var h5 = document.getElementById("h5");
		var intro = document.getElementById("intro");
		
		if(id.value == ""){
			alert("ID를 입력 하세요.");
			id.focus();
			return false;
		}
		if(passwd.value == ""){
			alert("비밀번호를 입력 하세요.");
			passwd.focus();
			return false;
		}
		if(name.value == ""){
			alert("성명을 입력 하세요.");
			name.focus();
			return false;
		}
		if(mailid.value == ""){
			alert("EMail주소를 입력 하세요.");
			mailid.focus();
			return false;
		}
		if(domain.value == ""){
			alert("도메인을 입력 하세요.");
			domain.focus();
			return false;
		}
		if(phone1.value == ""){
			alert("핸드폰 앞자리를 입력 하세요.");
			phone1.focus();
			return false;
		}
		if(phone2.value == ""){
			alert("핸드폰 중간자리를 입력 하세요.");
			phone2.focus();
			return false;
		}
		if(isNaN(phone2.value)){
			alert("숫자만 입력 하세요.");
			phone2.value = "";
			phone2.focus();
			return false;
		}
		if(phone3.value == ""){
			alert("핸드폰 끝자리를 입력 하세요.");
			phone3.focus();
			return false;
		}
		if(isNaN(phone3.value)){
			alert("숫자만 입력 하세요.");
			phone3.value = "";
			phone3.focus();
			return false;
		}
		if(male.checked == false && female.checked == false){
			alert("성별을 선택 하세요.");
			return false;
		}
		
		var cnt = 0;
		if(h1.checked) cnt++;
		if(h2.checked) cnt++;
		if(h3.checked) cnt++;
		if(h4.checked) cnt++;
		if(h5.checked) cnt++;
		
		if(cnt < 2){
			alert("취미를 2개 이상 선택 하세요.");
			return false;
		}
		
		if(intro.value == ""){
			alert("자기소개를 입력 하세요.");
			intro.focus();
			return false;
		}
		if(intro.value.length > 100){
			alert("자기소개를 100자 까지 입력 하세요.");
			intro.focus();
			return false;
		}		
	}
</script>

</head>
<body>

<form method="post" action="member.jsp" onSubmit="return check()">
<table border=1 width=600 align=center>
	<caption>회원 가입폼</caption>
	<tr>
		<th>ID</th>
		<td><input type=text name="id" id="id" autofocus="autofocus">
		    <input type="button" value="ID중복검사">		
		</td>
	</tr>
	<tr>
		<th>비밀번호</th>
		<td><input type=password name="passwd" id="passwd"></td>
	</tr>	
	<tr>
		<th>성명</th>
		<td><input type=text name="name" id="name"></td>
	</tr>
	<tr>
		<th>E-Mail</th>
		<td><input type=text size=10 name="mailid" id="mailid">@
		    <input type=text size=15 name="domain" id="domain"> 
		    <select id="email" onChange="sel()">
		    	<option value="">직접입력</option>
		    	<option value="naver.com">네이버</option>
		    	<option value="daum.net">다음</option>
		    	<option value="nate.com">네이트</option>
		    	<option value="gmail.com">구글</option>
		    </select>
		</td>
	</tr>
	<tr>
		<th>핸드폰</th>
		<td><select name="phone1" id="phone1">
				<option value="">번호선택</option>
				<option value="010">010</option>
				<option value="011">011</option>
				<option value="016">016</option>
				<option value="018">018</option>
				<option value="019">019</option>
			</select>
			<input type=text size=4 maxlength=4 name="phone2" id="phone2">-
			<input type=text size=4 maxlength=4 name="phone3" id="phone3">
		</td>
	</tr>
	<tr>
		<th>성별</th>
		<td>
			<input type="radio" id="male" name="gender" value="남자">남자
			<input type="radio" id="female" name="gender" value="여자">여자
		</td>
	</tr>
	<tr>
		<th>취미</th>
		<td>
			<input type="checkbox" id="h1" name="hobby" value="공부">공부
			<input type="checkbox" id="h2" name="hobby" value="등산">등산
			<input type="checkbox" id="h3" name="hobby" value="게임">게임
			<input type="checkbox" id="h4" name="hobby" value="낚시">낚시
			<input type="checkbox" id="h5" name="hobby" value="쇼핑">쇼핑
		</td>
	</tr>
	<tr>
		<th>자기소개</th>
		<td><textarea rows="5" cols="70"
				name="intro" id="intro"
				placeholder="자기소개를 100자 이내로 입력하세요"></textarea>
		</td>
	</tr>
	<tr>
		<td colspan=2 align=center>
			<input type="submit" value="회원가입">
			<input type="reset" value="취소">
		</td>
	</tr>
</table>
</form>

</body>
</html>

 

 

점수

100 / 100

기본 개념

트리거와 프로시저의 차이점은 무엇인지 서술하시오

트리거는 이벤트(주로 DML sql문) 발생시 자동으로 실행되지만 프로시저는 명시적으로 호출을 해줘야만 실행이 된다.

 

PL/SQL

1~10 사이의 정수 중에서 짝수의 합을 구하는 PL/SQL 프로그램을 작성 하시오

SET SERVEROUTPUT ON
declare
    n number := 1; -- 루프를 돌릴 변수
    s number := 0; -- 합이 누적될 변수
begin
    loop
        if n > 10 then
            exit;
        end if;
                
        if mod(n, 2) = 1 then -- 홀수일 때는
            s := s + 0;       -- 누적 안시킴
        else                  -- 짝수일 때는
            s := s + n;       -- 누적 시킴
        end if;

        n := n + 1; -- 1씩 증가
        
    end loop;
    DBMS_OUTPUT.put_line('1~10 사이의 정수 중에서 짝수의 합 : ' || s);
end;

 

프로시저 생성, 실행

사원 테이블(EMP)에서 사원번호(EMPNO)를 매개변수로 받아서, 사원 정보를 삭제하는 프로시저를 생성하고, 프로시저를 실행하시오

-- 저장 프로시저 생성
create or replace procedure del_emp (vempno in emp.empno%type)
is
begin
    delete from emp where empno = vempno;
end;

-- 프로시저 실행
execute del_emp(7788);

 

프로시저 생성, 실행

사원테이블(EMP)에서 SCOTT 사원의 사원명을 프로시저의 매개변수로 전달해서 SCOTT 사원의 급여를 출력하는 프로시저를 생성하고 실행하시오
1) 프로시저명은 emp_sal 이름으로 생성한다.
2) 생성된 프로시저를 실행할때 매개변수에 SCOTT 사원을 전달해서 실행한다.

-- 프로시저 생성
create or replace procedure emp_sal (
    vename in emp.ename%type,
    vsal out emp.sal%type)
is
begin
    select sal into vsal from emp where ename = vename;
end;

-- 바인드 변수 생성
variable var_sal number;

-- 프로시저 실행
execute emp_sal('SCOTT', :var_sal);

-- 출력
print var_sal;

 

프로시저 생성, 실행

사원 테이블(EMP)에서 사원번호를 프로시저의 매개변수로 전달 받아서, 그 사원의 사원명, 급여, 부서번호를 구하는 프로시저 생성해서 실행하시오?
1) 프로시저명은 emp_info 이름으로 생성한다.
2) 생성된 프로시저를 실행할때 매개변수에 사원들의 사원번호를 전달해서 실행한다.
3) 프로시저를 실행할때 바인드변수를 만들어서 출력한다.

-- 프로시저 생성
create or replace procedure emp_info (
    vempno in emp.empno%type,
    vename out emp.ename%type,
    vsal out emp.sal%type,
    vdeptno out emp.deptno%type )
is
begin
    select ename, sal, deptno into vename, vsal, vdeptno from emp where empno = vempno;
end;

-- 바인드 변수 생성
variable var_ename varchar2(10);
variable var_sal number;
variable var_deptno number;

-- 프로시저 실행
execute emp_info(7788, :var_ename, :var_sal, :var_deptno);

-- 출력
print var_ename;
print var_sal;
print var_deptno;

 

 

점수

100 / 100

서브쿼리 문제

사원 테이블(EMP)에서 SCOTT의 급여보다 적게 받는 사원의 이름, 급여를 출력하는 SQL문을 작성하시오

select ename, sal from emp where sal < (select sal from emp where ename = 'SCOTT');

 

그룹화, 그룹함수

사원 테이블(EMP)에서 각 부서별 평균 급여를 구하는 SQL문을 작성하시오

select avg(sal) from emp group by deptno;

감점 -5 점, 어느 부서의 평균인지 모르기때문에 5점이 감점됨 

답 > select deptno, avg(sal) from emp group by deptno;

 

Like 연산자, 와일드카드

사원테이블(EMP)에서 사원명에 A가 포함된 사원을 검색하는 SQL문을 작성하시오

select * from emp where ename like '%A%';

 

서브쿼리 인라인뷰, rownum

사원테이블(EMP)에서 급여를 많이 받는 사원 5명을 구하는 SQL문을 인라인뷰로 작성하시오

select rownum, ename, sal from (
    select * from emp order by sal desc)
where rownum <= 5;

 

substr

사원테이블(EMP)에서 82년도에 입사한 모든 사원의 정보를 출력하는 SQL문을 작성하시오

select * from emp where substr(hiredate, 1, 2) = '82';

 

nvl 함수, 별칭

사원테이블(EMP)에서 사번, 이름, 급여, 연봉을 조회하는 SQL문장을 작성하시오

단, 연봉은 별칭을 사용하고, comm이 null값인 경우에는 0으로 연산 처리하시오.

select empno, ename, sal, sal * 12 + nvl(comm, 0) 연봉 from emp;

 

새로운 계정 생성, 권한 부여
아래의 문제에서 요구하는 SQL문을 각각 작성하시오
1) 아래의 정보로 전산실에 입사한 신입사원에게 새로운 계정을 생성하시오.
    계정명 : myuser ,  비밀번호 : tiger
2) 생성한 계정에게 데이터 접속 및 테이블, 뷰를 생성할 수 있는 권한을 롤(role)을 이용하여 부여하시오.

--1) 아래의 정보로 전산실에 입사한 신입사원에게 새로운 계정을 생성하시오.
--    계정명 : myuser ,  비밀번호 : tiger

create user myuser identified by tiger;

--2) 생성한 계정에게 데이터 접속 및 테이블, 뷰를 생성할 수 있는 권한을 롤(role)을 이용하여 부여하시오.

grant connect, resource to myuser;

 

테이블 관계, foreign key

아래의 명세서에 따라 제약조건을 만족하는 테이블을 각각 작성하시오

create table Book (
    bookid number(2) primary key,
    bookname varchar2(40),
    publisher varchar2(40),
    price number(8) );

create table Customer (
    custid number(2) primary key,
    name varchar2(40),
    address varchar2(50),
    phone varchar2(20) );
    
create table Orders (
    orderid number(2) primary key,
    custid number(2) references Customer(custid),
    bookid number(2) references Book(bookid),
    saleprice number(8),
    orderdate date );

 

 

점수

95 / 100

조건에 맞는 테이블 생성 (제약조건)

아래와 같은 조회결과가 나오도록 주어진 조건에 맞게 book 테이블을 생성하시오

 

조건1 : no 컬럼은 반드시, 중복되지 않은 값이 들어가도록 설정한다.
조건2 : title 컬럼에는 반드시 값이 들어가도록 설정한다.
조건3 : pub_day 컬럼에 값을 넣지 않으면 기본 값으로 오늘 날짜가 들어가도록 설정 한다.

create table book (
    no number primary key,
    title varchar2(12) not null,
    author varchar2(12),
    publisher varchar2(12),
    price number,
    pub_day date default sysdate);

 

포맷에 맞는 날짜 출력 (형변환)

Oracle 데이터베이스를 통한 현재 날짜를 기본형식(22/01/01)과

사용자 형식(2022-01-01)으로 차례로 출력하는 SQL문을 작성하시오

사용자 형식은 연도를 4자리로 출력 하도록 한다.

select sysdate 기본형식, to_char(sysdate, 'YYYY-MM-DD') 사용자형식 from dual;

 

그룹함수, 서브쿼리 문제

사원테이블(EMP)에서 최대 급여를 받는 사원명과, 최대급여 금액을 출력하는 SQL문을 작성하시오

select ename, sal from emp where sal = (select max(sal) from emp);

 

mysql의 auto_increment 와 insert문을 oracle 코드로 옮기기 (sequence)

MySQL을 Oracle로 DB Migration을 하고자 한다. 마이그레이션 한 결과가 같아지도록 아래 내용을 완성하시오

1. Oracle sequence 생성
2. insert문 작성하기

create table member (
    id NUMBER(6) primary key,
    name VARCHAR2(20)
);

-- 1. Oracle sequence 생성
create sequence member_id_seq;
-- 2. insert문 작성하기
insert into member values(member_id_seq.nextval, 'hong');

 

테이블 레벨 방식으로 제약조건 설정 (복합키)

다음은 테이블을 만들 때 name, phone 컬럼을 기본키로 만들려고 한다.

composite key(복합키) 이름(Constraint)은 member_compo_pk이며, 아래 테이블을 완성하시오

create table member1(
    name varchar2(10),
    address varchar2(30),
    phone varchar2(16),
    constraint member_compo_pk primary key (name, phone) );

 

 

점수

100 / 100

사용자가 키보드로 입력한 연도가 윤년인지 평년인지 판별하는 프로그램

package p2022_07_20;

import java.util.Scanner;

public class Test1 {

	public static void main(String[] args) {

		// 년도 입력
		Scanner sc = new Scanner(System.in);
		int y = sc.nextInt();

		if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
			System.out.println("윤년");
		else
			System.out.println("평년");
	}
}

 

제네릭을 이용하여 String값을 Key로 하고, Integer를 Value로 저장하는 HashMap을 생성하는 코드

HashMap<String, Integer> hm = new HashMap<String, Integer>();


String 클래스를 이용하여 ‘your’ 가 출력되도록 하기

public class Test {
    public static void main(String[] args){
        String str = "Do your best";
        System.out.println(str.substring(3, 7));
    }
}

 

접근 제어자 중 default로 지정한 멤버의 사용 범위

default 접근제어자를 쓰면
같은 클래스 내에서 접근 가능하다
같은 패키지 내에서 접근 가능하다
다른 패키지에서 접근 불가능하다

 

60과 24의 최대 공약수를 구하는 프로그램

package p2022_07_20;

public class Test2 {
	public static void main(String[] args) {
//		60과 24의 최대 공약수를 구하는 프로그램을 작성 하시오?

		int result = program(60, 24);
		System.out.println("최대공약수 : " + result);

	}

	public static int program(int n1, int n2) {
		int max = n1 >= n2 ? n1 : n2;
		int min = n1 <= n2 ? n1 : n2;
		int i = -1;

		for (i = min; i >= 1; i--) {
			if (max % i == 0 && min % i == 0)
				break;
		}
		return i;
	}
}

 

1~45사이의 숫자를 6개 중복없이 추출 하는 프로그램을 작성 하시오?

package p2022_07_20;

import java.util.Random;
import java.util.TreeSet;

public class Test3 {

	public static void main(String[] args) {

//		1~45사이의 숫자를 6개 추출 하는 프로그램을 작성 하시오? (단, 중복된 숫자는 1번만 출력 되도록 한다.)
		
		Random r = new Random();
		TreeSet ts = new TreeSet();

		while (ts.size() < 6) {
			ts.add(r.nextInt(45) + 1);
		}

		System.out.println("로또 번호 : " + ts);

	}

}

 

 

점수

100 / 100

+ Recent posts