백엔드/Database

TIL 정리_43(Oracle)

ran4 2022. 3. 30. 15:35

생활코딩 Oracle 강의를 듣고 정리한 글 입니다

https://opentutorials.org/course/3885

 

Oracle

오라클로 실제 업무를 할때는 신중하게 구매해야한다 (개인 비상업 제외)

Edition

Express(기능이 제한된 무료버전/수업에서 사용)

Personal

Standard

Enterprise

밑으로 갈수록 가격과 기능이 높아진다

 

License

각각의 에디션을 어떤 기준으로 구매할 것인가?

Named User Plus

데이터베이스를 사용하는 컴퓨터의 개수에 따라 가격이 달라진다

Processor

컴퓨터 cpu 성능에 따라 가격이 달라진다

 

Oracle expression edition 18c 강의에서 사용하는 버전

->공짜, 다른 오라클과 연동 가능

 

데이터베이스 접속하기

터미널에서 sql plus -> 사용자 명 sys AS SYSDBA 입력 후 접속

 

사용자와 스키마

User Schema

표에 정보를 기록하고 기록된 정보를 잇는 것이다

 

스키마

->연관된 표를 grouping하기 위한 체계(디렉토리)

 

스키마를 위해서는 사용자라는 개념이 필요하다

여러 컴퓨터들이 오라클 데이터베이스에 접속

->사용자를 만들면 사용자에 해당되는 스키마가 생성

->스키마를 관리하는 것은 사용자

 

 

**실습 중 에러 발생

서비스 -> oracleServiceXE에 들어가서 실행 중지 후 다시 재시작했음

그래도 안되면 컴퓨터 재부팅 후 재시작을 시도해보길 바람

 

비밀번호를 입력할 때 입력이 보이지 않기때문에 당황할 수 있다(내가 그랬다)

무시하고 본인이 정한 비밀번호를 입력하면 접속된다

 

CREATE USER 유저이름 IDENTIFIED BY 비밀번호;

출력이 '2'만 나오는 경우 -> 마지막에 세미콜론이 아니라 :를 입력해서 그렇다

 

oracle sql reference create user 오라클 공식 메뉴얼을 참고할때의 검색 키워드

 

사용자 생성하기 

CREATE USER 유저이름 IDENTIFIED BY 비밀번호;

 

1행에 오류:

ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다.

라는 오류 발생시 

생성할 계정명 앞에 C## 키워드를 붙이거나

ALTER SESSION SET“_ORACLE_SCRIPT”=TRUE;

입력해야 한다 (CDB PDB 개념때문)

 

권한 부여

GRANT DBA TO egoing; //데이터베이스의 모든 관리권한을 부여

DBA 는 최대한의 권한을 부여

실제로 사용할때는 사용자마다 다른 권한을 부여해야 한다

 

 

만들어진 표가 스키마에 존재하는지 ORACLE table list 검색

현재 계정의 테이블 목록

SELECT *

FROM tab;

 

모든 계정의 테이블 목록

SELECT *

FROM all_tales

WHERE OWNER = SCOTT;

*뒤에는 table_name과 같은 단어를 넣어야 함 없으면 모든 컬럼이 선택됨

SCOTT 부분에는 사용자 네임을 넣으면 된다

 

INSERT 로 추가

INSERT INTO topic

(id, title, description,created)

VALUES

(1,‘ORACLE’,‘ORACLE is ...’,SYSDATE);

SYSDATE : 현재 시간

세미콜론을 붙이기 전까지는 실행 유보

만들고 나면 commit; 이라는 명령어를 써야 한다

->트랜젝션과 관련되어 있다

 

SQL이란?

데이터를 추가하는 것은 한계가 있다

설계를 잘한다면 데이터를 꺼내오는데에 시간이 적게 걸린다

명령어를 통해서 데이터베이스를 제어할 수 있다

->컴퓨터 프로그램을 통해 자동으로 명령어를 짜서 시스템에 보내면 간단하게 처리가 가능하다

 

엑셀은 하나하나 입력해야되서 자동화가 안되지만 sql은 명령어를 통해서 자동화가 가능하다

명령어를 통해 데이터베이스를 자동으로 제어

이 명령어를 sql이라고 한다

 

 

행 읽기 (READ)

SELECT

중복과 중복이 아닌 사람을 구분한다 

기능이 많고 복잡하다

 

모든 컬럼과 모든 행을 가져오기

SELECT * FROM topic;

sql plus(터미널 사용) 없이 oracle sql developer에서도 조회할 수 있다

실무에서 쓸 때 SELECT *을 하면 큰일남 모든 테이블을 불러오면 안됨

 

보고싶은 컬럼만 조회

SELECT id, title, created FROM topic;

 

단 하나의 행을 가져올 경우

SELECT * FROM topic WHERE id = 1;

SELECT * FROM topic WHERE id > 1;

 

보고싶은 컬럼 + 가져올 행

SELECT id, title, created FROM topic WHERE id = 1;

 

id를 기준으로 정렬 DESC(알파벳이 큰 순서) 내림차순 ASC(작은순서) 오름차순

SELECT * FROM topic ORDER BY id DESC;

 

page : 데이터를 조각내서 사용할 때 사용

SELECT * FROM topic

OFFSET 1 ROWS;

OFFSET = 0번째 이후에 나오는 행들 (n번째부터 가져올 것이다 몇 번째 페이지인가?)

 

어디서부터 가져올 것인가

SELECT * FROM topic

OFFSET 1 ROWS;

FETCH NEXT 1 ROWS ONLY;

fetch : 어떤걸 가져올 것인가?

 

 

테이블 내부의 이름 변경 (수정 UPDATE)

UPDATE topic

SET

title =’MSSQL’,

description = ‘MSSQL is...’

WHERE

id = 3;

-UPDATE 혹은 DELETE를 사용할 경우 where문이 없으면 안된다 //where문이 없다면 전체 테이블에 적용된다

-2개 이상인 경우 ‘,’를 붙이는 것을 잊지 말자

-수정작업이 이루어지면 commit을 잊지말 것

 

 

기본적인 CRUD 방식은 MYSQL과 동일한 문법을 사용함을 알 수 있다 

대신 터미널에서 sql plus를 이용할 경우 commit을 해줘야한다는 차이점이 존재한다 

'백엔드 > Database' 카테고리의 다른 글

TIL 정리_113(데이터베이스&SQL 문법)  (0) 2022.06.29
TIL 정리_55(인덱스)  (0) 2022.04.12
TIL 정리_44  (0) 2022.03.31
TIL 정리_35  (0) 2022.03.22
TIL 정리_34(MySql)  (0) 2022.03.21