[문항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

 

 

 

 

정보처리기사 2022년 2회 실기 시험 합격

 

약 한달 반 전에 봤던 정처기 실기 시험 합격결과가 오늘 나왔다

합격했음!!

 

 

과채점 결과를 72로 예상했는데 거의 같게 73 점을 받았다

 

드디어 정처기가 끝났다 후련한 기분..

 


 

정처기 시험 난이도 ( 전공자 기준 )

 

전공자라서 정처기 시험이 아주 어렵지는 않았다

 

필기, 실기 각각 3일 정도 공부한 것 같다

필기는 3일 공부하고 80점 이상으로 나왔고

실기는 총 20 시간 정도 공부했고 73점 받았다

 

 

하지만 전공자가 아니라면, 또는 한번도 코딩을 해본적 없다면 어려울것 같기도 하다

 

내가 각각 3일만에 정처기를 끝낼 수 있었던 이유는

정처기 과목중에서 사람들이 공부하는데 가장 시간을 많이 쓴다는 코드 부분을 전부 건너뛰었기 때문인 것 같다

Java, C, SQL 는 알고있어서 수월했다, 파이썬은 기억이 가물가물 했지만 눈치로 풀었음

코드만 읽을줄 알면 30 점은 그냥 받을 수 있다

 

 

추가로 다들 실기가 훨씬 어렵다던데 나한텐 필기가 훨씬 더 어려웠던 것 같다

 

유독 내가 쳤던 2022년 1회 필기 시험이 어려웠던 것 같다

2022년 1회 정처기 필기가 헬이라는 말이 많이 나왔음

 

C 포인터 문제가 몇개나 나오고 책에도 나오지 않았던 개념이 많아서 헷갈렸다.

C 포인터도 그냥 포인터가 아니라 이리저리 꼬인 모양이었다..

심지어 필기인데 기출도 하나도 안나왔다

 

필기 시험 보면서 '이게 필기라고? 아니 그럼 실기는 얼마나 어렵다는건지..'

했는데 실기 코딩 문제가 필기보다 훨~씬 코드가 쉽게 나왔다

 

어차피 필기든 실기든 둘다 코드를 읽어야하므로 실기라고 훨씬 더 어려운건 아닌것 같음

 


 

공부 방법

필기는 수제비 필기 책, 실기는 수제비 실기 책으로만 공부했다

 

합격했던 친구가 수제비로 공부했다길래 나도 수제비 하나만 팠다

 

공부 시간이 없다보니 정리를 못하고 요령없이 책에 밑줄그으며 1회독씩 했는데

1회독밖에 할 시간이 없다는걸 알았기때문에

그냥 쓱 본게 아니라 한번 읽을때 그때 그때 바로 외우려고

책을 소리내서 읽으면서 밑줄도 쫙쫙 긋고 전투적으로 임했던 것 같음

 

(밑줄 그은 책 사진을 여기 올리고 싶었는데 이사하면서 무거워서 책을 버려서...)

 

그리고 당일 새벽 밤새면서 뒤에 책 뒤에 수록된 기출문제들을 풀고갔다

 

 


 

시험 접수 팁

자리 부족하니 무조건 시험 접수 시작 정각에 접수하는게 좋다

조금만 늦어도 멀~~리 가서 시험쳐야하는 경우가 생김

이렇게 빨리 마감될지 모르고 접수 시작일 당일날 조금 늦게 들어갔다가

1시간 거리 시험장에서 시험봄... 

그것도 몇자리 남은거 겨우 잡아서 그나마 서울인거에 감사하며 시험봤다

 

 

+

이제 자격증 발급 신청만 남았다

상장형 되게 간지나게 생겼네..

 

 

 

 

정처기 실기 시험 직후 후기 & 가채점 글

https://laker99.tistory.com/59

 

정보처리기사 2022년 2회 실기 시험 후기

* 아직 시험 결과 나오기 전의 후기입니다 시험 정보처리기사 2022년 2회 실기 2022.07.24 가 시험일, 작성일 기준 어제시험 봤다 처음 봤던 실기 시험이었다 난이도 체감 기출 풀어봤던 경험으로 생

laker99.tistory.com

 

 

 

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

한국사능력검정시험 제60회 시험 

 

+ 추가 접수한거라 쫌 멀리가서 쳐야한다ㅠㅠ

 

 

정처기 시험보고 온 어제, 밤에 한능검 시험도 접수했다

정처기 가채점 결과 합격한 것 같아서 이제 무슨 공부하지 하다가

한국사 추가접수가 거의 끝나가길래 바로 신청해버렸다

(나 = 시험이 있어야 부지런하게 사는 사람)

 

 

 

 

원해는 한국사까지 취득할 생각은 없었는데

공기업이나 특정 회사를 지원할때 필요할 것 같아서 혹시 모르니 따기로 함!

토익, 토익스피킹, 정보처리기사, 컴활 은 다 있으니

한능검만 있으면 자격증때문에 어디 지원 못할일은 없을 것 같다 😂

 

 

 

 

문제는 시험기간이 2주도 안남았다

공부할수있는게 12일 정도..?

 

 

 

 

게다가 하루종일 국비지원 학원에 있다가 영어학원 갔다오면

깜깜한 밤이라 하루 2시간도 공부 시간이 날지 😔

그래도 1급 목표!

 

 

 

 

합격했던 친구가 추천해준 최태성 선생님의 7일의 기적

유튜브 강의와 책으로 공부하고

기출문제집을 사서 풀어보려고 한다

 

 

 

유튜브 강의 링크

https://www.youtube.com/watch?v=SBgQos4iAdw&list=PLE7ogCa1_I6voHD2M8GnIqBpj0QatB7Xr 

 

 

그럼 또 치고 후기 남길게요!

1급 받아오겠습니당

* 아직 시험 결과 나오기 전의 후기입니다

 

 

시험

정보처리기사 2022년 2회 실기

2022.07.24 가 시험일, 작성일 기준 어제시험 봤다

처음 봤던 실기 시험이었다

 

 

난이도 체감

기출 풀어봤던 경험으로 생각해보면 전체적으로 쉬웠던 것 같다

약술형도 안나왔음!

 

 

공부 방법

ONLY 수제비 실기 책으로만 공부했다

시간이 촉박하다 보니 그냥 요령없이 밑줄그으며 읽었음

그리고 뒤에 수록된 기출문제 조금 풀고 갔다

 

 

공부 시간

총 20시간 정도 공부한 것 같다

학원때문에 공부할시간이 많이 없어서 

학원 쉬는 시간에 공부했던게 모으면 10시간 정도고

시험 전날 집에서 밤새서 10시간 달렸다 😅

 

전공자라 SQL문과 C, JAVA, Python 은 알고 있어서

공부 분량이 많이 줄기는 했다

코드만 읽을 줄 알면 못해도 30점은 먹고 들어가는 것 같음

 

힘들었던건 필기를 바로 전 회차로 본게 아니라

전전 회차로 봐서 몇달이 지난터라

외운걸 다시 외워야하는 것들이 많았던것ㅠㅠ

 

 

가채점 결과

맞은 문제 14개

1. 관계 해석

4. sql 문 count 하는 문제, 답 4

5. VPN

7. switch~case문, 답 -8

8. 구조체 배열, 답 2

10. 베타, 알파

11. Regression

12. π (프로젝트) 실행, 답 TTL 열 그대로 옮기기 TTL, 부장, 대리, 차장, 과장

13. 파이썬 문자열, 답 REMEMBER AND STR

14. 문자열 널 문제, 답 10

16. C 포인터, 답 22
18. 함수적 종속, 답 Full, Partial, Transitive

19. 웹 페이지 용어, 답 HTTP, Hypertext, HTML

20. 팬인 팬아웃, 답 3, 2

 

부분 점수 가능성 있는 문제 1개

9. 네트워크 주소, 2개의 부분문제중 1번 맞춤, 답 128

 

가채점 결과 72점 정도 예측 중

 

 

 

합격 확정 후 작성한 공부 방법 & 후기 & 교재 추천

https://laker99.tistory.com/115

 

2022년 2회 정보처리기사 실기 합격 후기 & 전반적인 난이도와 공부 방법

정보처리기사 2022년 2회 실기 시험 합격 약 한달 반 전에 봤던 정처기 실기 시험 합격결과가 오늘 나왔다 합격했음!! 과채점 결과를 72로 예상했는데 거의 같게 73 점을 받았다 정처기 시험 난이도

laker99.tistory.com

 

 

 

시험 접수했을때 글

https://laker99.tistory.com/5?category=1065275 

 

정보처리기사 2022년 2회 실기 시험 신청

취업을 위한 CS 지식 공부도 할 겸 정보처리기사 자격증도 딸겸 해서 정보처리기사 실기 신청했다. 필기는 올해 1회에 붙고, 중간고사 때문에 실기 1회 못보다가 이번에 2022 정처기 실기 2회 신청

laker99.tistory.com

 

 

합격 확정되면 더 자세한 후기 남기겠습니다!

 

 

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

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

8의 약수 구하기

package p2022_07_08;

public class test {

	public static void main(String[] args) {

		System.out.print("8의 약수 : ");
		for (int i = 1; i <= 8; i++) {
			if (8 % i == 0) {
				System.out.print(i + " ");
			}
		}
	}

}

 

1에서 100까지 정수 중에서 5의 배수 합과 7의 배수의 합을 구하기

package p2022_07_08;

public class test2 {

	public static void main(String[] args) {

//		 1부터 100까지 정수 중에서 5의 배수 합과 7의 배수의 합을 구하는 프로그램을 작성하시오?(10점)

		int total1 = 0;
		int total2 = 0;
		
		for (int i = 1; i <= 100; i++) {
			if (i % 5 == 0) {
				total1 += i;
			}
			if (i % 7 == 0) {
				total2 += i;
			}
		}
		System.out.println("5의 배수 합 : " + total1);
		System.out.println("7의 배수 합 : " + total2);
	}
}

 

구구단 2~9단 출력

package p2022_07_08;

public class test3 {

	public static void main(String[] args) {

//		 구구단 2~9단 까지 출력하는 프로그램을 작성 하시오?(10점)

		for (int dan = 2; dan <= 9; dan++) {
			System.out.println(dan + " 단");
			for (int n = 1; n <= 9; n++) {
				System.out.println(dan + " * " + n + " = " + dan * n);
			}
		}
	}
}

 

 

시험결과

100 / 100

+ Recent posts