로그인 페이지 loginForm.html
https://codepen.io/hj-rich/pen/qBOzOPB
로그인 처리를 담당하는 LoginServlet.java
https://codepen.io/hj-rich/pen/oNjrxgy
회원가입 페이지 writeForm.html
https://codepen.io/hj-rich/pen/Baoewya
회원가입 처리를 담당하는 WriteServlet.java
https://codepen.io/hj-rich/pen/WNQqwvv
R형식, fm활용, nvl활용, decode와 case, rank, @WebServlet 어노테이션, 싱글톤, Post
--세기가 바뀔 때 연도처리 에러를 방지하기 위해 R형식이 존재한다
--y는 현재 연도를 따라간다. 그래서 1900년대 시간설정상태에서 17/9/30을 y형식으로 고치면 1917년이 된다
select to_char(to_date('97/9/30', 'YY-MM-DD') , 'YYYY-MON-DD') from dual;--← 2097
select to_char(to_date('97/9/30', 'RR-MM-DD') , 'RRRR-MON-DD') from dual;--← 1997
select to_char(to_date('17/9/30', 'YY-MM-DD') , 'YYYY-MON-DD') from dual;--← 2017
select to_char(to_date('17/9/30', 'RR-MM-DD') , 'RRRR-MON-DD') from dual;--← 2017
--fm을 활용한 월과 일 앞에 0 표시 및 숨기기
select to_char(to_date('2011-03-01','YYYY-MM-DD'), 'YYYY-fmMM-DD') from dual;← 2011-3-1
select to_char(to_date('2011-03-01','YYYY-MM-DD'), 'YYYY-fmMM-fmDD') from dual;← 2011-3-01
--count 세라 distinct 중복제거하고 nvl null값은 0으로 대체
select count(distinct nvl(department_id, 0)) from employees; ← 12
select distinct nvl(department_id, 0) from employees; ← nvl은 null값을 0으로 대체
select 컬럼명 : null 포함 해당 컬럼 전체 데이터 가져옴
select count(컬럼명) : null 빼고 행 갯수 가져옴
select count(*) : null 포함 행 갯수 가져옴
select count(distinct 컬럼명) : null 빼고 중복 없이 행 갯수 가져옴
select count(distinct nvl(컬럼명, 0)) : null은 0으로 대체 후 중복 없이 행 갯수를 가져옴
select distinct nvl(컬럼명, 0) : null은 0으로 대체 후 중복 없이 컬럼명의 데이터를 가져옴
select last_name,
to_char(hire_date, 'dd-mon-yyyy') as hire_date
from employees
where hire_date < '2005-01-01';
mm 대신 mon을 쓰면 x월 로 표시된다
date 타입 자료도 등호 부등호로 직접 비교가 가능하다
1970년 1월 1일 0시 0분 0초를 0으로 해서 이후 1초마다 1씩 증가하는 정수형 데이터를 표시형식만 바꾼 것이다
따라서 day- 등의 계산을 할 경우 날짜로 환산시 소숫점이 나올 수 있고 이를 round 처리해줘야 한다
decode(a, 1, A, 2, B, C); --a가 1이면 A 2면 B 그외엔 C
ex21) rank함수 : 전체값을 대상으로 순위를 구함
rank(표현식) within group(order by 표현식)
rank() over(쿼리파티션) → 전체순위를 표시
급여가 3000인 사람의 상위 급여순위를 구하시오
select rank(3000) within group(order by salary desc) "rank" from employees;
전체사원의 급여순위를 구하시오
select employee_id, salary, rank() over(order by salary desc)"rank" from employees;
ex22) first_value함수 : 정렬된 값중에서 첫번째값 반환
first_value(표현식) over(쿼리파티션)
전체사원의 급여와 함께 각부서의 최고급여를 나타내고 비교하시오
select employee_id,
salary,
department_id,
first_value(salary) over(partition by department_id order by salary desc) "highsal_deptID"
from employees;
name = "name" id = "name" 의 차이
name태그로 호출할 땐 document.html파일명.name.value == ""
id태그로 호출할 땐 document.getElementByID("name").value == ""
이클립스에서 생성할 때 서블릿 형식으로 생성하면 된다. 개꿀
web.xml에 설정하던 맵핑을
@WebServlet("/WriteServlet")
이클립스 어노테이션 한 줄로 해결할 수 있다
싱글톤
DAO클래스를 매번 new 할 필요 없이 static으로 생성된 객체를 계속 불러다 쓰기만 하면 됨
public class MemberDAO {
private static MemberDAO instance;
private MemberDAO(){}
public static synchronized MemberDAO getInstance(){
if(instance == null){
instance = new MemberDAO();
}
return instance;
}
public static MemberDAO getInstance() {
if(instance == null) {
synchronized (MemberDAO.class) {
instance = new MemberDAO();
}
}
return instance;
}
}
MemberDAO dao = MemberDAO.getInstance();
dao.signUp(dto);
post방식으로 받을 땐 db에 저장시 한글처리를 해줘야한다
request.setCharacterEncoding("UTF-8");
getParameter 위에 있어야 함
'Database' 카테고리의 다른 글
SQL 2020-06-08 : rownum, subquery, ceil, view (0) | 2020.06.08 |
---|---|
SQL Union, lombok적용, github octotree+t+netlify - 2020-06-02 (0) | 2020.06.02 |
SQL 예제 4일차, 로그인&회원가입- 2020-05-29 (0) | 2020.05.29 |
SQL 예제 8문제, 이클립스EE+톰캣 연동- 2020-05-27 (0) | 2020.05.27 |
오라클 hr계정 SQL문 예제, Servlet Context 생성 - 2020-05-26 (2) | 2020.05.26 |