-- =, <, > 연산자는 문자, 숫자 모두 사용가능하다
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);
}