MySQL을 배우긴 했지만 조금씩 사용하는 단어가 다르다는 걸 알아두길! 문법은 같다!
가령, INT와 같은 데이터 타입에 따라 숫자를 조정 했다면 여기에서는 NUMBER로 대체가 된다.
CHAR(N)의 경우 고정 길이 (학번과 같은 바뀔 일이 없는 프라이머리키와 같은 경우를 말함)
기존에 많이 사용하던 VARCHAR와 다르게 오라클에서는 VARCHAR2를 사용하는데 고정되지 않고 유동적인 길이일 경우를 뜻한다.
~Oracle 계정 만들기와 권한 설정~
c## 원래는 붙지 않았지만 최근버전(?)에서부턴 사용자 이름을 만들 때 아이디 앞에 'c##'를 적어야 한다.
cmd창 열어서 -> sqlplus "/as sysdba"
사용자 생성
create user c##username identified by 1234(비밀번호);
권한 부여
grant connect, resource, dba to c##username;
권한 취소
revoke connect, resource, dba from c##username;
기본용어
스키마(Schema) : DB, 테이블 정의
기본키(Primary Key : PK) : 테이블에서 하나의 레코드를 지정할 수 있는 하나 이상의 칼럼 집합
예 ) 주민등록 번호, 학번 등
외래키(Foreign Key : FK) : 어떤 테이블의 기본키가 다른 테이블의 칼럼에 들어가는 경우
테이블(table) : 정보들의 묶음 단위
컬럼(Column) : 테이블을 구성하는 정보들
예 ) 학생 테이블 - 이름, 주소, 전화번호, 나이 등
레코드(Record) : 테이블에 들어 있는 여러가지 인스턴스 하나하나를 지정하고, 기본키(PK)로 구분이 가능하다
도메인 값(Domain Value) : 각 컬럼에 나올 수 있는 부호 값
데이터 타입
컬럼명이 저장되는 데이터 유형을 의미함
문자 데이터 타입
CHAR(n) : 고정길이 문자 최대 2000byte 디폴트 값은 1byte
VARCHAR2(n) : 가변길이 문자 최대 4000byte 디폴트 값은 1byte
NCHAR(n) : 고정길이 유니코드 문자(다국어) 최대 2000바이트
NVRCHAR(n) : 가변길이 유니코드 문자(다국어) 최대 2000바이트
LONG : 최대 2GB 크기의 가변길이 문자형
CLOB : 대용량 텍스트 데이터 타입(최대 4GB)
NCLOB : 대용량 텍스트 유니코드 데이터 타입(최대 5GB)
- 가변길이란 실제 입력된 데이터 길이에 따라서 크기가 변하는 것을 의미한다.
- CLOB의 예를 들자면 .. 가입정보의 자기소개 부분(text area)에 속하기도 함!
숫자형 데이터 타입
대부분 NUMBER형을 사용한다. (P는 소수점 포함 자리수, 크기에 맞게)
NUMBER(P, S) : 가변숫자 / P(1~38, 디폴트:38) / S(-84~127, 디폴트 값:0) / 최대 22 바이트
FLOAT(P) : NUMBER의 하위타입 / P(1~128, 디폴트 : 128) / 이진수 기준 / 최대 22 바이트
BINARY_FLOAT : 32비트 부동소수점 수 / 최대 4 바이트
BINARY_DOUBLE : 64비트 부동소수점 수 / 최대 8 바이트
날짜 데이터 타입
DATE : 연 월 일 시 분 초까지 입력 가능
TIMESTAMP : 연도, 월, 일, 시, 분, 초 + 밀리초까지 입력 가능
-일반적으로는 DATE 타입을 사용하지만 결제와 같이 짧은 시간 내에 동일한 값을 처리할 때(결제 등) TIMESTAMP를 사용한다.
LOB 데이터 타입
Large Object로 대용량 데이터를 저장한다.
CLOB : 문자형 대용량 객체 고정길이와 가변길이 문자집합 지원
NCLOB : 유니코드를 지원하는 문자형 대용량 객체
BLOB : 이진형 대용량 객체 (그래픽, 이미지, 동영상 등)
BFILE : 대용량 이진 파일에 대한 위치, 이름 저장
- CLOB 위에서 말한 text area도 있고, 블로그 게시판 등에서도 많이 사용한다.
- BLOB의 경우 이미지 파일 업로드를 할 때 주로 사용을 한다.
DDL(Data Definition Language) : 데이터 정의어
데이터베이스를 정의하는 언어이며, 테이블 생성, 수정, 삭제 등 데이터 전체 골격을 결정하는 역할을 한다.
CREATE : 데이터베이스, 테이블 등을 생성
ALTER : 테이블을 수정
DROP : 데이터베이스, 테이블을 삭제
TRUNCATE : 테이블 초기화
CREATE
테이블 생성 규칙
- 테이블명, 컬럼명의 최대 크기는 30바이트
- 한글도 사용할 수 있지만 꼭 영어로 작성하는 게 포인트!!
- 예약어를 이용하여 테이블명, 컬럼명을 만들수는 없음(sysdate, asc, count ... )
- 테이블명 첫 글자는 문자로 시작해야한다
- 한 테이블에 사용가능한 컬럼은 최대 255개
CREATE EX )
CREATE TABLE employee(
EMPID NUMBER,
ENAME VARCHAR2(100),
DEPARTMENT_ID NUMBER,
SALARY NUMBER,
JOB_ID VARCHAR(3),
HIREDATE DATE
);
ALTER
테이블 컬럼 추가 (ALTER TABLE ADD)
문법 : ALTER TABLE 테이블명 ADD(컬럼명 데이터타입(크기));
--USER 테이블에 USER_NAME 컬럼을 추가할 때
ALTER TABLE USER ADD(USER_NAME VARCHAR2(13));
테이블 컬럼 수정 (ALTER TABLE MODIFY)
문법 : ALTER TABLE 테이블명 MODIFY(컬럼명 데이터타입(크기));
--USER 테이블에 USER_AGE 컬럼 길이를 수정할 때
ALTER TABLE USER MODIFY(USER_AGE NUMBER(3));
테이블 컬럼 삭제 (ALTER TABLE DROP)
문법 : ALTER TABLE 테이블명 DROP COLUMN 컬럼명;
--USER 테이블에 USER_NAME 컬럼 삭제할 경우
ALTER TABLE USER DROP COLUMN USER_NAME;
테이블 컬럼 이름 변경 (ALTER TABLE RENAME)
문법 : ALTER TABLE 테이블명 RENAME COLUMN 원래컬럼명 TO 바꿀컬럼명;
--USER 테이블에 USER_NAME이라는 컬럼을 USER_F_NAME으로 변경할 경우
ALTER TABLE USER RENAME COLUMN USER_NAME TO USER_F_NAME;
DROP / TRUNCATE 차이
DROP
테이블에 저장된 데이터를 포함해서 테이블 전체 삭제
문법 : DROP TABLE 테이블명;
--테이블명이 TEST01일 때
DROP TABLE TEST01;
TRUNCATE
테이블 정보는 그냥 두고 데이터 전체 삭제
문법 : TRUNCATE TABLE 테이블명;
--테이블명이 TEST01인 경우
TRUNCATE TABLE TEST01;
구분 | 테이블 정의 | 저장공간 | SQL 종류 |
TRUNCATE | 존재 | 반납 | DDL |
DROP | 삭제 | 반납 | DDL |
DML(Data Manipulation Language) : 데이터 조작어
입력된 데이터를 조회, 수정, 삭제 등 역할을 한다.
SELECT : 데이터를 조회
INSERT : 데이터를 삽입
UPDATE : 데이터를 수정
SELETE : 데이터를 삭제
INSERT
INSERT를 이용해서 데이터를 추가할 때 방법 2가지
1. 특정 컬럼에만 데이터 입력할 때
--정의한 컬럼순으로 데이터 입력
INSERT INTO 테이블명(컬럼명1, 컬럼명2, 컬럼명3) VALUES(데이터1, 데이터2, 데이터3);
2. 모든 컬럼의 순서대로 데이터를 입력할 때
--모든 컬럼에 값을 넣고싶다면 순서대로 데이터를 삽입하면 된다!
INSERT INTO 테이블명 VALUES(데이터1, 데이터2, 데이터3);
UPDATE
데이터 수정
UPDATE 테이블명 SET 수정할 컬럼명1 = 수정할 데이터1, 수정할 컬럼명2 = 수정할 데이터2... WHERE 조건;
=> where 조건을 쓰지 않으면 테이블의 모든 데이터가 수정된다!
DELETE
데이터 삭제, DROP의 경우 테이블을 삭제하지만 DELETE는 테이블 구조는 남아있고 데이터만 삭제가 된다.
DELETE FROM 테이블명 WHERE 조건;
=> where을 쓰지 않을 경우 모든 데이터가 삭제 되니까 조심!
또한 DELETE의 경우 COMMIT, ROLLBACK이 있지만 DROP, TRUNCATE에는 없으니 참고!
DCL(Data Control Language) : 데이터 제어어
데이터베이스에 접근하거나 객체 권한을 주는 등 역할을 한다.
GRANT : 특정 사용자에게 특정 작업에 대한 수행권한 부여
REVOKE : 그 권한을 박탈 및 회수
COMMIT : 트랜잭션의 작업을 실행
ROLLBACK : 트랜잭션의 작업을 취소 및 원래대로 복구
사용자 계정 관리
CREATE USER : 데이터베이스 유저 생성권한
SELECT ANY TABLE : 모든 유저의 테이블 조회 권한
CREATE ANY TABLE : 모든 유저의 테이블 생성 권한
CREATE SESSION : 데이터베이스 접속
CREATE TABLE : 테이블 생성권한
CREATE VIEW : 뷰 생성 권한
CREATE PROCED USER : 프로시저 생성 권한
CREATE SEQUENCE : 시퀀스 생성 권한
SYSDBA : 데이터 베이스를 관리하는 최고 권한
SYSOPER : 데이터 베이스를 관리하는 권한
grant connect, resource, dba to c##username; --계정에 대한 권한 설정
revoke connect, resource, dba from c##username; --계정 권한 해제
alter user c##username identified by 1111; --계정 비밀번호 변경
drop user c##username cascade; --계정 삭제
'개발일지 > SQL' 카테고리의 다른 글
[oracle 초보자] 데이터 쉽게 복붙 및 수정 (0) | 2021.11.19 |
---|---|
[Oracle] 다양한 함수 배워보기 (0) | 2021.11.18 |
SQL 복습 (옛날거) (0) | 2021.10.25 |
테이블 한 번에 등록하기 (1) | 2021.10.11 |
데이터베이스, 스키마 이름 바꾸기 (0) | 2021.10.11 |