[TIL] 구디아카데미 17일차: SQL WHERE절 연산자, 이름검색(WHERE절), ANSI코드

Mijin·2023년 5월 5일
0

TIL

목록 보기
16/21
post-thumbnail

✅WHERE절에서 사용 가능한 연산자

-- =, <, > 연산자는 문자, 숫자 모두 사용가능하다
SELECT * FROM employees
WHERE gender = 'M' 
LIMIT 0, 10;

SELECT * FROM employees
WHERE emp_no = 10005; 

SELECT * FROM employees
WHERE emp_no < 10005;

SELECT * FROM employees
WHERE first_name < 'C';

-- IN, BETWEEN AND 연산자를 이용하여 반복없이 가독성 높은 sql을 작성할 수 있다.

SELECT * FROM employees
WHERE emp_no = 10005 OR emp_no = 10008;

SELECT * FROM employees
WHERE emp_no IN (10005, 10008);

SELECT * FROM employees
WHERE emp_no >= 10005 and emp_no <= 10008;

SELECT * FROM employees
WHERE emp_no BETWEEN 10005 and 10008;

-- 부분적으로 일치하는 행 찾기

SELECT * FROM employees
WHERE first_name LIKE 'Anneke';

SELECT * FROM employees
WHERE first_name = 'Anneke';

-- first_name이 A로 시작하는 행
SELECT * FROM employees
WHERE first_name LIKE 'A%';

-- first_name이 A로 끝나는 행
SELECT * FROM employees
WHERE first_name LIKE '%a';

-- first_name에 ab가 들어가는 행
SELECT * FROM employees
WHERE first_name LIKE '%ab%';

-- 이름 세글자 중 미가 들어가는 행
SELECT * FROM 학생
WHERE 이름 LIKE '_미_';

✅이름검색

searchWord가 없는 경우는 전체를 보여주고, searchWord가 있는 경우는 이름에 해당 알파벳이 포함된 데이터만 보여준다

// 동적쿼리
	String sql = null;
	PreparedStatement stmt = null;
	if(searchWord.equals("") == true) { // searchWord 초기값은 공백
		sql = "SELECT * FROM employees ORDER BY emp_no ASC LIMIT ?, ?";
		stmt = conn.prepareStatement(sql);
		stmt.setInt(1, startRow);
		stmt.setInt(2, rowPerPage);
	} else {
		/*
			SELECT * FROM employees 
			WHERE CONCAT(first_name, ' ', last_name) LIKE ?
			ORDER BY emp_no ASC 
			LIMIT ?, ?
            // concat은 문자열을 합치는 함수
		*/
		sql = "SELECT * FROM employees WHERE CONCAT(first_name, ' ', last_name) LIKE ? ORDER BY emp_no ASC LIMIT ?, ?";
		stmt = conn.prepareStatement(sql);
		stmt.setString(1, "%"+searchWord+"%");
		stmt.setInt(2, startRow);
		stmt.setInt(3, rowPerPage);
	}

✅ANSI코드: System.out.println() 출력색상 변경

  • console에 출력된 디버깅코드들의 가독성이 높아진다.
  • 팀프로젝트시 팀원들의 코드를 구별할 수 있다.
    https://cafe.naver.com/jjdev

💪느낀점

  • 어제 배운 정렬, 성별선택 기능과 검색기능을 어떻게 합칠 수 있을지 고민해보자.
  • ANSI코드를 추가하는 것은 손이 한번 더 가는 일이지만 지금부터 습관을 들여서 당연한 일이 되도록 만들자!
profile
개발자로 가는 길 🏃‍♀️

0개의 댓글