- root : 관리자 계정(서버관리자용)
- os user : 최소한의 권한만 가지고 있음
<Linux(OS) User>
- root(oracle01)
Linux 설치 시 내장된 User
관리자의 권한을 소유함. - oracle(oracle)
DBA, 개발자용 일반 User
최소한의 권한을 소유함.
/home/oracle 디렉토리 권한
/u01/app/oracle 디렉토리 권한
즉 모든 DB파일은 /home/oracle 또는 /u01/app/oracle 디렉토리에 설치
<"ORCL" DB User>
sys, system : DB생성시 자동으로 만들어지는 user
- sys : sysdba 권한(dba + DB 시작/종료)
SQL> conn sys/패스워드 as sysdba - system : dba 권한
SQL> conn system/패스워드 - hr : object(table, view, index, sequence 등) 생성하고 운영 할 수 있는 권한
※ system이 hr을 만들면 hr에게 dba 권한까지 줄 수 있음.
또한 sys가 hr을 만들면 hr에게 dba 권한까지 줄 수 있음.
즉, dba 권한을 가진 사용자가 많아질 수 있지만, sysdba 권한을 가진 사용자는 sys뿐이다.
SQL> conn hr(유저명)/패스워드
※
$] 리눅스 명령어
SQL> DB언어
<DB 사용하기>
- 가상 PC 켜기
- Linux 로그인(user : oracle)
- 터미널 열기(TUI 환경 작업)
- 리스너 켜기
$] lsnrctl start
리스너 운영 체제 단에 존재하는 프로세스(DB보다 먼저 켜줘야함)
user가 db접속할 때 도와줌.
리스너가 켜진 상태에서 DB가 켜줘야 연결을 도와줌.
DB가 먼저 켜지면 리스너가 인식을 못함. - sqlplus 프로그램 실행
$] sqlplus /nolog
※TUI - sqlplus, GUI - sql developer - SYS 사용자로 DB 접속(이유는 DB가 꺼져있기 때문에)
SQL> conn(ect) sys/패스워드 as sysdba(권한명)
Connected to an idle instance.
idle 휴무 상태, instance = database. 즉 휴무 상태 DB에 접속했다. - DB 켜기
SQL> startup - HR 사용자로 DB 접속
SQL> conn hr/패스워드 - user 확인
SQL> show user
※ hr user 패스워드 변경
SQL> alter user hr
identified by 패스워드; - select table_name from user_tables;
user_tables : DB 사전
SELECT
테이블 구조 조회
SQL> desc employees;
SQL> desc departments;
※describe 목적은 컬럼명 데이터타입 데이터사이즈를 기본으로 알려주기 위함임.
db프로그램마다 기본으로 보여주는 것이 다 다름.
테이블로부터 데이터 검색
select * from departments;
TUI는 가독성이 좋지 않음(그림 1)
col department_name format a20
sqlplus(oracle TUI 프로그램) 설정명령어 이기 때문에 ; 이 붙지 않음
select employee_id, last_name, salary, hire_date
from employees;
col last_name format a18
※col 컬럼명 format a숫자할 때 주의사항
숫자, 날짜 컬럼 사이즈는 줄이면 안된다. 최소 사이즈 잡아서 나오기 때문이다.
문자만 사이즈 조절이 가능하다.
다시 돌리려면 sqlplue를 껐다가 키면 된다.
껐다가 켜면 DB가 꺼진것이 아니므로 hr로 접속하면 된다.
쿼리 구문을 쓰다가 오타가 났을 때 오타 수정하는 방법
버퍼에 들어가서 수정
SQL> ed
i로 편집한 후 ESC :wq
버퍼에서 ;콜론은 쓰지 않는다. /를 활용함.
:wq 저장 후 나가기
:q! 원래대로 나가기
null값
미정인 값, 0이나 공백과는 다른 특수한 값이다. 모든 데이터타입에 사용 가능하다.
select last_name, job_id, salary, commission_pct
from employees;
산술식에 null값이 포함된 경우 전체 결과도 null이다.
select last_name, 12*salary*commission_pct
from employees;
쿼리 구문을 실행하면 commission_pct가 null인 사원은 null값이 출력된다.
따라서 null값이 있는 식을 계산하려면 함수를 사용해야한다.
Column Alias
- 컬럼명 AS alias
- 컬럼명 alias
- 컬럼명 [AS] "Alias" → 대소문자 구분, 공백포함, 특수문자 포함을 원하는 경우
컬럼명이 last_name이 아니기 때문에 last_name alias name으로 바꾸면 크기 적용이 안됨
또한 alias를 소문자로 했지만 오라클은 제목줄은 대문자로 출력되는게 기본값임.
따라서 대소문자를 구분하기 위해서는 큰 따옴표안에 alias를 작성해준다.
SQL> ed를 통해서 alias에 큰따옴표해주기
연결 연산자(||)
컬럼과 컬럼 연결.
ex)
select last_name||job_id "Employees"
from employees;
last_name과 job_id를 합쳐서 결과가 나옴
리터럴 문자
명령어, 테이블명, 컬럼명, 키워드, alias가 아닌 일반적인 문자, 숫자, 날짜값.
문자나 날짜 리터럴은 작은 따옴표로 묶어서 작성. 숫자는 그냥 작성.
cf) MySQL은 " ", ' ' 따옴표 다 지원하지만(구분없이 작성), 안시는 리터럴은 작은따옴표, alias는 큰따옴표
ex)
select last_name || ' is a ' ||job_id "Employee Details"
from employees;
distinct 키워드 : 중복된 값을 자동으로 제거해주는 키워드
ex)
select distinct department_id
from employees;
30아래 90위에 공백은 null값이다.
distinct를 쓰고 안쓰고의 성능 차이가 많이 난다.
의외로 distinct를 안쓰는 것이 더 빠르다.
이유는 정렬이라는 작업이 한 단계 더 거치기 때문이다.
연습문제 1
연습문제 2
'KDT > DB' 카테고리의 다른 글
240105 DB - 단일 행 함수 1 (0) | 2024.01.05 |
---|---|
240103 DB - 조건문과 정렬 (0) | 2024.01.03 |
231227 DB - 데이터정의어 4, 오라클 시작 (0) | 2023.12.27 |
231222 DB - 데이터정의어 3 (0) | 2023.12.22 |
231220 DB - 데이터 정의어 2 (0) | 2023.12.20 |