오라클 2021-02-05
오라클 인터넷강의를 듣던중 학원에서 팀원들과 만들었던 프로젝트는 DB를 참조하지도 못했다는것을 알게됨
데이터베이스를 만들어 조금더 효과적으로 사용하였어야 했다는것을 반성하고
다음 개인 프로젝트에서는 이 부분을 개선할것
DDL | create | alter | drop | |
생성 | 수정 | 삭제 | ||
DML | select | insert | update | delete |
검색 | 생성 | 수정 | 삭제 | |
DCL | grant | revoke |
오라클을 사용하기위해 오라클 DBMS를 설치 18c(무료버전) / 상업적으로 쓸수없음
setup은 (관리자권한) 으로 설치
SQL 작성도구인 SQL Debeloper 별도 설치
pdbs ( 가상데이터베이스 ) 18c 버전에있고 11g 버전에는 없다
원격 접속을 위한 설정 변경 (cmd -> sqlplus sys as sysdba)
EXEC DBMS_XDB.SETLISTENERLOCALACCESS(FALSE);
보기->DBA : 데이터베이스의 구조를 만들기위함(db의 권한을 설정하기위해)
DBA ->접속 -> 설정한서버
테이블 스페이스2개 : 저장(table space)유형:영구 / 임시 (log space) 유형:임시
디렉토리 : 저장공간설정
보안->사용자->새로만들기 : 테이블스페이스를 사용할수있는 사용자 추가(사용자명은 대문자)
기본테이블스페이스와 임시테이블스페이스 준비한 테이블스페이스를 선택
권한 설정 (예제 : 모두관리자에서 sysrac sysoper syskm 해제) 저장
이후
새로운 데이터베이스 만들기 (새로만든사용자 계정) 접속
---> 새로운 계정으로 접속할수있는 데이터베이스에 연결됨
오라클 데이터형식
*모든데이터가 고정된값이면 CHAR , 고정된값이 아니면 VCHAR2 사용
[문자열]
고정된공간 데이터타입 CHAR (size = 1 byte)
고정된공간 전세계적인(유니코드) 데이터 타입 NCHAR (size=2 or 3byes)
가변길이의공간 데이터 타입 NVARCHAR2
가변길이의 전세계적인(유니코드) 데이터 타입 NVARCHAR2
* 문자가 몇 byte 인지 검색하는 sql문
select lengthb('검색할문자') from dual;
*NCHAR 을 사용함으로써 byte 걱정을 줄일수있게됨
한글 두글자인 남성 여성은 NCHAR를 사용함으로 효율적인 공간 확보
(ex) GENDER NCHAR(2) --남성,여성
[대용량 문자열]
LONG - 현재 많이사용하지않음
CLOB - 최근에 나온방식 ( 최대 4Gbyte )
NCLOB - 최근에 나온방식 ( 최대 4Gbyte )
[정수,실수]
NUMBER(4) - 최대 4자로 이루어진 숫자
NUMBER(6,2) - 소수점 2자리를 포함하는 최대 6자리의 숫자(소수점 둘째 자리에서 반올림)
NUMBER(6,-2) 소수점 -2자리에서 반올림하는 최대 6자리의 숫자
NUMBER - 아무것도 안썻을시 맥시멈 (38,*)
NUMBER(*,5) - NUMBER(38,5)
[날짜]
DATE -- 년월일
TIMESTAMP -- 년월일 시분초
느낀점: 복습겸 학원에서의 배운 강의말고 인터넷으로 찾아보니 좀더 자세하게 알수있었다.
유튜브(뉴렉처 오라클 8강까지 완)
[ALTER]
ALTER TABLE 테이블명 MODIFY 컬럼명 컬럼타입; : 컬럼타입을 수정
ALTER TABLE 테이블명 DROP COLUMN 컬럼명; : 테이블의 한 컬럼을 삭제
ALTER TABLE MEMBER ADD 컬렴명 컬럼타입; : 테이블의 한 컬럼을 추가
*DDL의 한해서는 많은개발자들이 명령어보다는 편집도구를 사용해 편집한다.
*오라클에서 예약어 , 부적합한 테이블명을 포함하고있을경우에는 "" 로 감싸서 사용 할 수 있다.
*예약어는 대소문자를 가리지 않지만 값은 가리기때문에 사용시 주의
[INSERT]
INSERT INTO 테이블명 VALUES 값목록
모든 필드 값을 입력하기
INSERT INTO 테이블명 VALUES ('값','값','값','값','값')
원하는 필드만,원하는 순서대로 입력 (나머지 컬럼에는 NULL값이 들어감)
INSERT INTO 테이블명(컬럼명,컬럼명) VALUES('값','값')
[SELECT]
SELECT * FROM 테이블명;
* 은 모든 컬럼에 대해서 정보를 조회
값, 값 으로 원하는 정보를 조회 ( , 는 구분자)
as : 컬럼명의 별칭 (생략이 가능하다)
(ex) SELECT id (as) user_id FROM MEMBER;
"" : as "별칭" 은 유지하면서 문자열로 별칭을 생성 (공백도 유지,대소문자 유지)
[UPDATE]
UPDATE 테이블명 SET 컬럼명 = '바꿀값';
WHERE을 이용해 바꿀값 컬럼명을 정해준다
UPDATE 테이블명 SET 컬럼명='바꿀값' WHERE 컬럼명='조건컬럼명값';
[DELETE]
DELET 테이블명 WHERE 컬럼명='조건컬럼명'; (대소문자를 구분한다)
트랜잭션 : 업무의 실행단위/논리 명령단위
commit , rollback 을 하지않으면 자동적으로 ROCK을 걸어줌
오라클에서 숫자 더하기 연산자 +
EX) SELECT 1+'3' FROM DUAL;
result = 4 (문자열과 숫자의 더하기도 숫자로 연산된다)
오라클에서 문자열 더하기 연산자 ||
EX) SELECT 1 || '3' FROM DUAL;
result = 13
* 연산된 컬럼에는 반드시 별칭을 써준다
(유튜브 뉴렉처 14강 진행중)
잔[UPDATE]
UPDATEㅇ