21.01.21

EDDIE Kim·2021년 1월 21일
0

KH

목록 보기
30/98

Oracle : DATABASE MANAGEMENT SYSTEM(DBMS-Mysql, MS-sql, sybase, postgreSql)
무결성을 위해 만든게 RDBMS : Relational DBMS / 관계형 db
SQL : Structured Query Language 구조화된 질의어

data와 정보의 차이 :data 실제값, 정보 data가공한 의미있는 데이터
database : 논리적으로 연관된 데이터를 모으고 중복을 최소화해 구조적으로 저장해놓은것
database정의 : 운영데이터, 공용데이터, 통합데이터, 저장데이터(영속성:삭제하기전엔 계속 유지된다)
database특징 : 실시간 접근성, 계속적인 변화, 동시공유, 내용에 따른 참조(reference by content)
관계 데이터 모델, 객체-관계 데이터 모델

SQL Developer

ctrl+r : services.msc누르면 백그라운드에서 돌아가는 서비스 확인가능


SQL Developer는 백그라운드에서 이미 실행되고 있는 Oracle에 접속하게 해주는 client서비스임

d드라이브에 oracle_workspace만들어주고 oracle_system.sql만들어주기 열기로 oracle_system.sql찾아서 열어주기

--한줄 주석

/별(Asterisk(에스터리스크)):마크다운때문에 "*"이 안찍힘
여러줄 주석
*/

세미콜론단위로 명령 구별
블럭잡아서 ctrl enter하면 실행됨
db관리자 한개만 등록가능 xe(교육용이라)

--========================================
-- system 관리자 계정
--========================================
--한줄 주석
/*
여러줄 주석

*/
show user;

--현재 등록된 사용자목록 조회
-- sys 슈퍼관리자 : db생성/삭제 권한 있음.
-- system 일반관리자 : db생성/삭제 권한 없음.
select * from dba_users;

--sql문은 대소문자를 구분하지 않는다.
--사용자계정의 비밀번호, 테이블 내의 데이터는 대소문자 구분한다.
/*
SELECT * FROM DBA_USERS;
select * from dba_users;
SELECT * FROM Dba_Users;
select * from DBA_USERS;
SELECT * FROM dba_users;
Select * From Dba_Users;
select *
from dba_users; --두줄로 나눠서 써도됨
*/
--다 같은걸로 인식

--관리자는 일반사용자를 생성할 수 있다.
create user kh
identified by kh --비밀번호(대소문자 구분)
default tablespace users; --데이터가 저장될 영역 system | users

--사용자 삭제(조심해서 삭제할것)
--drop user kh; 

--접속권한 create session이 포함된 role(권한묶음) connect 부여
grant connect to kh;


주인없는 테이블은 존재할수 없다.
so user(사용자)삭제할 때 주의해야함 주인이 갖고있는 테이블 다날라감

f5 누르는거 조심할 것 스크립트 전체 다실행시킴
ctrl enter로 단일 명령단위로 실행시킬것 필요시 f5누를때는 얘기해줄 예정

자바와 다르게 exception이런건 없고 구글링으로 에러코드 검색해서 해결할것


db는 뭔가 하나하나할때마다 권한이 필요함

귀찮으니까 묶어서 권한처리



grant해준후 상태 성공으로 바뀜

ctrl + n 데이터베이스 파일 만들기
.sql 앞쪽에 파일이름을 oracle_kh로 만들고 디렉토리는 D:\Workspaces\oracle_workspace로 해주기


부적절한 권한
create table가능하게 권한부여 필요

해주면 kh에서 create table 가능해짐

KH181109.sql받아서 드래그앤드랍으로 sql developer에 넣어주기

넣어주고 f5눌러서 한번에 스크립트 실행시키기!

테이블 하나하나 조회해보기!

테이블간의 관계 생각해보기!

d9의 테이블 관계 정답!

테이블은 데이터를 저장하는 단위(entity라고도 부름)

entity합쳐서 relation이라고함.

--표(table=entity=relation - 데이터를 보관하는 객체) 은
--열((column=field=attribute(속성) - 세로, 데이터가 담길 형식)
--행(row=record=tuple - 가로, 실제 데이터) 으로 이루어져있다.
--도메인 domain 하나의 컬럼에 취할수 있는 값의 그룹(범위) - 도메인이 Y/N뿐이면 2가지의 도메인만 가질수 있다고 말할수 있음 남/녀뿐이면 마찬가지 2가지 도메인만 가진거임






컬럼명은 대소문자 구분 x 자바와다르게 카멜케이싱이 의미가없음

널값여부는 널값선택이 필수인지 선택인지에 대한 명세
유형은 자료형이 어떤건지에 대한 명세


--컬럼에 지정해서 값을 제한적으로 허용한다는 얘기는

SALARY에는 NUMBER만 HIRE_DATE에는 DATE만 올수있게 컬럼에 지정해서 값을 제한한다는것

--=====================================
--DATA TYPE
--=====================================
--컬럼에 지정해서 값을 제한적으로 허용
--1. 문자형 varchar2 | char
--2. 숫자형 number
--3. 날짜시간형 date

우선 문자형부터

--=====================================
--문자형
--=====================================
--고정형 char(byte) : 최대 2000byte까지 넣을수 있음
--예를들어 char(10) 'korea' 영소문자는 글자당 1byte이므로 실제크기 5byte. but 고정형이라 10byte로 저장됨
-- '안녕' 한글은 글자당 3byte(11g XE)이므로 실제크기 6byte. but 고정형이라 10byte로 저장됨.
--가변형 varchar2(byte) : 최대 4000byte까지 넣을수 있음
--예를들어 varchar2(10) 'korea' 영소문자는 글자당 1byte이므로 실제크기 5byte. 가변형이니 5byte로 저장됨
-- '안녕' 한글은 글자당 3byte(11g XE)이므로 실제크기 6byte. 가변형이니 5byte로 저장됨.
-- 고정형, 가변형 모두 지정한 크기 이상의 값은 추가할 수 없다.

oracle은 문자열을 ''로 감쌈 //자바 = ""로 감쌈

ctrl+r sqlplus켜서 sqlDeveloper에서 작성한 내용에 관해 db에 접근하려고 하면 sqlDeveloper에서 db로 commit한 내용만 보여준다.
commit이후에 아무리 내용을 작성하고 테이블에 값을 넣어도 sqlplus에서는 commit이후 내용은 볼수없음

rollback : 마지막 commit이후에 작성한내용 전부 되돌림

추가지식 SQL의 개요 보고올것

DML 제일 많이 하게됨(크게보면 DQL도 포함되며 insert, select, update, delete가 있다.) CRUD(create read update delete) 잘할수 있어야됨 신입개발자는

profile
과거 지상직 / 개발자 지망생

0개의 댓글

관련 채용 정보