모든 유저 보기
전 시간에 작성하지 못했던 부분이 있었다.
관리자 모드에서 존재하는 모든 계정들을 확인할 수 있는 방법이 있다.
// 다음과 같이 관리자모드에서 실행시 모든 사용자들을 확인할 수 있다.
// DB에 등록되어 있는 사용자 조회하기
SELECT * FROM DBA_USERS;
// 계정에서 이용하고 있는 테이블을 조회하는 명령어
SELECT* FROM TAB;
✅ SELECT
✅ FROM
✅ WHERE
💡 (위 3가지) 문법
SELECT 컬럼 명 [, 컬럼명, …]
FROM 테이블 명
[WHERE 조건식];
// SELECT문을 이용해서 EMPLOYEE 테이블 조회하기
// 조회할 테이블 대상은 EMPLOYEE 이며,출력할 컬럼은 EMP_NAME, EMP_NO,EMAIL,PHONE
SELECT EMP_NAME, EMP_NO,EMAIL,PHONE FROM EMPLOYEE;
// SELECT문을 이용해서 전체 컬럼 조회하기
// * 은 ALL이라는 의미임
SELECT * FROM EMPLOYEE;
// SELECT문을 이용해서 산술연산처리하기
// 출력할 컬럼은 10+20, 10-20, 20/3, 5*4 의 이름으로 출력된다. (가상컬럼)
SELECT 10+20,10-20,20/3,5*4 FROM DUAL; // DUAL -> 오라클에서 제공하는 샘플 테이블임
// 리터럴 + 컬럼 연산
// 전체 사원의 급여에 100원씩 더하기
SELECT EMP_NAME, SALARY+100, SALARY FROM EMPLOYEE;
// 산술연산은 오로지 숫자형만 가능하다
// 오라클에서 문자열 리터럴은 ' '을 사용한다.
SELECT '이제 점심먹자'+100 FROM DUAL; -> ❌ (문자열과 숫자는 연산 불가능함)
✅ AS
SELECT EMP_NAME AS 사원명, SALARY AS 월급, EMAIL AS 이메일 FROM EMPLOYEE;
SELECT EMP_NAME 사원명, SALARY 월급, EMAIL 이메일 FROM EMPLOYEE; // AS 생략
SELECT EMP_NAME AS "사 원 명", SALARY AS "$월$급" FROM EMPLOYEE; // AS 뒤에 띄어쓰기 및 특수문자 사용
✅ DISTINCT
SELECT DISTINCT DEPT_CODE FROM EMPLOYEE; // DEPT_CODE 컬럼 이 중복된 것 제거
SELECT DISTINCT DEPT_CODE, JOB_CODE FROM EMPLOYEE;
// DEPT_CODE 컬럼과 JOB_CODE컬럼이 동시에 중복되는 것 제거
// 밑에 예시 사진을 보자
✅ | |
// 컬럼이 EMP_NAME | | SALARY | | BONUS (하나로) 나온다
SELECT EMP_NAME | | SALARY | | BONUS FROM EMPLOYEE;
// 컬럼이 EMP_NAME | | '님의 월급은 ' | | SALARY | | ' 보너스 : ' || BONUS (하나로) 나온다
SELECT EMP_NAME | | '님의 월급은 ' | | SALARY | | ' 보너스 : ' || BONUS FROM EMPLOYEE;
//위 각각 의 값들도 붙여서 나온다
✅ WHERE
SELECT EMP_NAME, DEPT_CODE FROM EMPLOYEE WHERE DEPT_CODE='D5'; // DEPT_CODE가 D5인 것 조회
SELECT * FROM EMPLOYEE WHERE SALARY >= 2000000; // 월급이 200만원 이상인 사원을 조회하기
// != 대신 <>를 써도됨
SELECT * FROM EMPLOYEE WHERE JOB_CODE != 'J2'; // 사원 중 직책이 J2가 아닌 사원 조회
// 여러개의 비교연산 처리하기
// 사원중 부서가 D5이고 월급이 300만원 이상인 사원의 이름, 부서코드, 월급 조회
// ~이고 -> AND ~거나 -> OR
SELECT EMP_NAME, DEPT_CODE, SALARY FROM EMPLOYEE WHERE DEPT_CODE = 'D5' AND SALARY >= 3000000;
// 결과값이 거짓이고, 출력되는 개수가 없어도 오류가 따로 없음
SELECT * FROM EMPLOYEE WHERE 1=2;
✅ BETWEEN AND
// 날짜 대소비교
// 기본적인 날짜를 표시하는 문자열 패턴 : YY/MM/DD -> 'YY/MM/DD'
// 입사일이 2000년 01월 0일 이전의 사원의 이름, 입사일을 조회
SELECT EMP_NAME, HIRE_DATE FROM EMPLOYEE WHERE HIRE_DATE<'00/01/01';
// 사원중 입사일이 00년01월01부터 02년 12월 31일까지인 사원 전체 조회
SELECT * FROM EMPLOYEE WHERE HIRE_DATE BETWEEN '00/01/01' AND '02/12/31';
// 사원중 입사일이 00년01월01부터 02년 12월 31일이면서 코드가 D9인 사원 전체 조회
SELECT * FROM EMPLOYEE WHERE HIRE_DATE BETWEEN '00/01/01' AND '02/12/31' AND DEPT_CODE ='D9';
✅ IN
SELECT * FROM EMPLOYEES
WHERE first_name IN('Steven','John','Peter'); // Employee 테이블에서 first_name 컬럼값이
// Steven, John, Peter 인 것들의 행 출력
SELECT * FROM EMPLOYEES
WHERE first_name NOT IN('Steven','John','Peter'); // Employee 테이블에서 first_name 컬럼값이
// Steven, John, Peter 인 것이 아닌 행 출력
SELECT * FROM EMPLOYEE WHERE DEPT_CODE IN('D5','D6','D7','D8'); // 사원 중 부서코드가 D5, D6, D7, D8인 사원 구하기
// 위 IN연산자 말고 다수의 OR로 연결할 수 있다!
✅ LIKE
📌 % : 문자가 0개이상 아무 문자나 허용할 때 사용 (개수는 상관없음 = 없어도됨)
- %강% : 강 (o), 한강(o), 두만강(o), 한강다리(o), 강강술래(o) -> 강이 포함되어있는 문자열
- %강 : 강으로 끝나는 말 강(o), 한강(o), 요단강(o), 강강술래(x)
- 강% : 강으로 시작하는 말 강(o), 강강술래(o), 한강(x)
📌 _ : 문자가 1개 아무문자나 허용할 때 사용 (개수를 지정할 때)
- _강_ : 중간에 강이 있는 세글자
- _ _ 강 : 강으로 끝나는 세글자
- 강 _ _ _ : 강으로 시작하는 네글자
- _강% : 두글자 이상의 두번째 자리에 강을 포함하는 문자 (조합)
SELECT EMP_NAME, EMAIL FROM EMPLOYEE WHERE EMAIL Like '%yo%'; // 이메일 주소 중에 yo를 포함
SELECT EMP_NAME, SALARY, DEPT_CODE FROM EMPLOYEE WHERE EMP_NAME LIKE '유%'; // 사원 중 유씨성
SELECT * FROM EMPLOYEE WHERE EMAIL LIKE '%j%' and EMP_NAME LIKE '유%'; // 이메일주소에 j를 포함하고 유씨성 가진 사원
// 이메일 주소에 _앞글자가 3글자인 사원의 사원명 이메일 조회하기
SELECT EMP_NAME, EMAIL FROM EMPLOYEE WHERE EMAIL LIKE '___\_%' ESCAPE '\'; // \를 문자로 인식하라는 명령어
// NOT 부정 연산
SELECT * FROM EMPLOYEE WHERE EMP_NAME NOT LIKE '김%'; // 김씨가 아닌 사원들 찾기
✅ IS NULL
SELECT EMP_NAME, BONUS FROM EMPLOYEE WHERE BONUS IS NULL; // 보너스가 NULL 인 값 조회하기 = 보너스를 받지 않는 사원 조회
// 위와 반대로 IS NOT NULL 넣을시에는 반대로 보너스를 받고 있는 사원 조회!
// 조회된 컬럼값이 NULL일 때 NVL(컬럼명, 대체값)함수로 대체 할 수 있다
SELECT EMP_NAME, SALARY, NVL(BONUS,0) FROM EMPLOYEE; // 보너스 값이 NULL일경우 0으로 대체
// 값이 널로 나오는 것은 인턴으로 대체하며 그 위에 속성이름은 DEPT_CODE로 대체한다
SELECT EMP_NAME, NVL(DEPT_CODE,'인턴') AS DEPT_CODE FROM EMPLOYEE WHERE DEPT_CODE IS NULL;
✅ 우선순위
SELECT EMP_NAME, SALARY, JOB_CODE
FROM EMPLOYEE // 직책이 J7 이거나 J2인 사원 중 급여가 200만원 이상인 사원을 조회
WHERE (JOB_CODE = 'J7' OR JOB_CODE = 'J2') AND SALARY >= 2000000;
✅ 오늘 날짜 표시하기