Lock사용자 확인
SELECT username, account_status, lock_date
FROM dba_users;
LOCKED<TIMED>: 패스워드 설정횟수 입력 오류, Unlock 명령으로 해결
EXPIRED & LOCKED: 패스워드 기간만료이므로 , Unlock 후 비밀번호를 지정해줘야 한다.
ALTER USER 사용자명 ACCOUNT UNLOCK;
alter user 사용자명 identified by 바꿀패스워드;
select *
from departments;
DESCRIBE EMPLOYEES;
DESC DEPARTMENTS;
--모든 사원에 대해 $300의 급여 인상액을 계싼.
-- 출력에 salary+300열을 표시
select last_name, salary,salary+300
from employees;
alter session set nls_date_format='YYYY/MM/DD';
select last_name,hire_date,hire_date+300
from employees;
select last_name,job_id,salary,commission_pct
from employees;
SQL PLUS는 빈칸으로 나옴
sql developer에서는 null이라고 나옴
select last_name,12*salary*commission_pct
from employees;
산술연산식에 null이 포함되면 무조건 null이됨.
--연결 연산자(|| : 파이프라인)
/*
last_name 과 Job_id가 연결되고
employees라는 alias가 주어집니다.
사원의 성과 직무코드가 결합되어 단일 출력 열이 만들어집니다.
*/
select last_name||job_id AS "Employees"
from employees;
--날짜 및 문자 리터럴은 반드시 작은 따옴표('')로 묶어야 함
select last_name||' is a '||job_id
AS "Employee Details"
from employees;
-- 모든 사원의 이름과 커미션 백분율을 표시합니다.
select last_name as name,commission_pct comm
from employees;
-- 모든 사원의 성과 연간 급여를 표시합니다.
select last_name "neme" ,salary*12 "annual salary"
from employees;
-- distinct
select department_id
from employees;
select distinct department_id
from employees;
select distinct department_id,job_id
from employees;
distinct는 중복값을 제외하고 보여줌.
distinct는 칼럼 맨 앞에옴.
-산술연산자
-연결연산자
-null
-alias(as)-""큰따음표로 감싸줌
-distinct
-날짜와 문자리터럴을 ' '작은 따옴표로 감싸줌
show user;
-- employees테이블에서 employee_id,last_name,job_id,department_id,hire_date를 employee_id값으로 오름차순으로 정렬검색
select employee_id,last_name,job_id,department_id,hire_date
from employees
order by employee_id;
오름차순은 asc(default값)
내림차순은 desc를 order by 마지막 부분에 붙여줌.
-- alias
select employee_id,last_name,salary*12 annsal
from employees
order by annsal;
-- 위치 number
select employee_id,last_name,salary*12 annsal
from employees
order by 3;
--null위치 확인
select empno,ename,sal,comm
from emp
order by comm;
oracle에서 null값은 가장 무거운수로 나온다.
--nulls last
select empno,ename,sal,comm
from emp
order by comm nulls last;
-- asc으로 정렬하되 널값은 마지막에
-- nulls first
select empno,ename,sal,comm
from emp
order by comm nulls first;
select employee_id,last_name,job_id,department_id
from employees
where department_id=90;
select last_name,job_id,department_id
from employees
where last_name='Whalen';
select last_name,job_id,department_id
from employees
where last_name='WHALEN';
데이터는 대소문자 구분을 한다.
-- 비교 연산자
select last_name,salary
from employees
where salary<>3000;
select last_name,salary
from employees
where salary!=3000;
--2500 이상 3500사이
select last_name,salary
from employees
where salary between 2500 and 3000;
--in연산
select employee_id,last_name,salary,manager_id
from employees
where manager_id in (100,101,201);
--like연산자
select first_name
from employees
where first_name like 'S%';
-- 대체 문자
-- 앞에서 두번째 문자가 o로 되어있는 사람
select last_name
from employees
where last_name like '_o%';
-- 대체 문자
-- 마지막 두번째 문자가 o로 되어있는 사람
select last_name
from employees
where last_name like '%o_';
-- '%'가 문자열로 포함된 경우 검색방법(escape문자)
select ename from emp;
update emp set ename='sc%tt'where ename='SCOTT';
select ename from emp;
--c%가 포함된 문자열
select ename from emp
where ename like '%c\%%' escape '\';
select last_name,manager_id
from employees
where manager_id is null;
select last_name, job_id, commission_pct
from employees
where commission_pct is not null;
-- SALARY가 1000이상이면서 JOB_ID에 'MAN'이 들어가는 사원의 employee_id,last_name,salary검색
select employee_id,last_name,salary
from employees
where salary>=1000 or job_id like '%MAN%';
*단일행 함수
- 문자조작
- 숫자조작
- 날짜 조작
*변환함수
- to-char
- to_data
- to_number
select lower('SQL COURSE') as lower,
upper('SQL Course') as upper,
INITCAP('SQL Course') as initcap
from dual;
--data저장값을 정확히 모를때
--출력안됨
select employee_id,last_name,department_id
from employees
where last_name='higgins';
--출력됨
select employee_id,last_name,lower(last_name),department_id
from employees
where lower(last_name)='higgins';
select concat('Hello','World') as concat,
substr('HelloWorld',1,5) as substr,
length('HelloWorld') as length,
instr('HelloWorld','W') as instr
from dual;
--날짜 조작함수
select sysdate
from dual;
alter session set nls_date_format='RR/MM/DD HH:MI:SS';
select sysdate from dual;
alter session set nls_date_format='YYYY/MM/DD';
select Last_day ('2005/02/05') from dual;
select empno,comm,nvl(comm,0),deptno
from emp;
nvl(칼럼,0):널값이 있으면 0으로 치환
'데이터베이스 > oracle' 카테고리의 다른 글
CHAPTER 12. 데이터 정의어-DO IT! 오라클로 배우는 데이터베이스 입문 (0) | 2024.07.04 |
---|---|
CHAPTER 11. 트랜잭션 제어와 세션-DO IT! 오라클로 배우는 데이터베이스 입문 (0) | 2024.07.04 |
CHAPTER 10. 데이터를 추가, 수정,삭제하는 조작어-DO IT! 오라클로 배우는 데이터베이스 입문 (0) | 2024.07.04 |
CHAPTER 09. SQL문 속 다른 SQL문 서브 쿼리-DO IT! 오라클로 배우는 데이터베이스 입문 (0) | 2024.07.04 |
CHAPTER 05. 더 정확하고 다양하게 결과를 출력하는 WHERE절과 연산자-DO IT! 오라클로 배우는 데이터베이스 입문 (0) | 2024.07.01 |