SQL : structed query language : 관계형 데이터베이스의 데이터를 조회하거나 조작하기 위해 사용하는 표준 검색 언어
DBMS(Database Management System) 에 따라 사용되는 SQL 문법이 다르다
일반적 DB 구조 : DBMS - DB - 테이블 - 데이터 형태
ORACLE : DBMS - DB - 테이블스페이스 - 테이블 - 데이터 형태
종류
1. 데이터 정의어 : DDL(Data Definition Language)
2. 데이터 조작어 : DML(Data Manipulation Language)
3. 데이터 제어어 DCL(Data Control Language)
4. 트랜젝션 제어어 : TCL(Transaction Control Language)
1. DDL
- 데이터 베이스의 구조를 정의하거나 변경, 삭제하기 위해 사용하는 언어
- 객체를 만들고 수정하고 삭제하는 구문
- 주로 DB관리자(DB), 설계자(DBA)
- CREATE(개체생성), ALTER(개체수정), DROP(개체 삭제), TRUNCATE(개체 초기화)
- 종류 : 테이블(TABLE), 뷰(VIEW), 시퀀스(SEQUENCE), 인덱스(INDEX), 패키지(PACKAGE), 프로시저(PROCEDUAL), 함수(FUNCTION), 트리거(TRIGGER), 동의어(SYNONYM), 사용자(USER)
1-a CREATE TABLE 테이블명(컬럼명 자료형(크기byte), 컬럼명 자료형(크기));
2. DML
- Data를 조작하기 위해 사용하는 언어
- Data의 삽입, 수정, 삭제, 조회 등의 동작을 제어함
- Data를 이용하려는 사용자와 시스템간의 인터페이스를 직접적으로 제공하는 언어
- INSERT(데이터 삽입), UPDATE(데이터 수정), DELETE(데이터 삭제)
2-1
DQL(Data Query Language)
- 데이터를 검색하기 위해 사용되는 언어
- SELECT(데이터 검색)
3. DCL
- 사용자의 권한이나 관리자 설정 등을 처리
- GRANT(유저 권한 생성), REVOKE(유저 권한 삭제), COMMIT(실행), ROLLBACK(복구)
ex. GRANT [ role ] TO [user | role | PUBLIC] WITH ADMIN OPTION
테이블 : 데이터를 담고 있는 개체, 기본적으로 행과 열을 이용해 데이터를 표현
Relation : 테이블명
Column(Domain) : 열
Row(Tuple) : 행
Field : 데이터
데이터 타입
a. 숫자 NUMBER
b. 문자 CHARACTER -1 CHAR 고정길이문자(최대 2000, 최소 1)
-2 VARCHAR2 가변길이문자(최대 4000, 최소 1) (*한글을 1글자당 3byte)
-3 NCHAR 유니코드문자
-4 NVARCHAR2 유니코드문자
-5 LONG 가변길이 문자(최대 2GByte)
c. 날짜
DATE
TIMESTAMP 시/분/초
d. 데이터
LOB
-1 CLOB : 가변길이 문자 (최대 4GByte)
-2 BLOB : Binary Data
Sql developer
워크시트에 작성, 대문자소문자 구분하기, 명령 끝에 ;
주석은 --
계정 생성
CREATE USER 계정명 IDENTIFIED BY 비밀번호;
권한 부여(sys 계정으로)
GRANT(부여) CONNECT TO 계정명;
GRANT RESOURCE TO 계정명;
비밀번호 변경
ALTER USER 계정명 IDENTIFIED BY 새비밀번호;
사용자 삭제
DROP USER 계정명;
-- 테이블 생성(DDL)
CREATE TABLE 테이블명 (
COLUMN_NAME DATA_TYPE NULLABLE DATA_DEFAULT COLUMN_ID COMMENTS);
ex. CREATE TABLE EMPLOYEE (
ENP_ID VARCHAR2(3),
EMP_NAME VARCHAR2(20),
EMP_NO CHAR(14),
EMP_EMAIL VARCHAR2(25),
EMP_PHONE VARCHAR2(12),
DEPT_CODE CHAR(2),
JOB_CODE CHAR(2),
SAL_LEVEL CHAR(2),
SALARY NUMBER,
MANAGER_ID VARCHAR2(3),
HIRE_DATE DATE,
ENT_DATE DATE,
ENT_YN CHAR(1) DEFAULT 'N'
);
-- 테이블 삭제
DROP TABLE 테이블명;
-- 테이블 수정(칼럼 변경, 추가, 삭제, 이름변경, 칼럼주석)
-- 변경(추가한다면)
ALTER TABLE 테이블명;
MODIFY 칼럼명 변경데이터타입
MODIFY 칼럼명 변경데이터타입2;
-- 테이블 이름변경
ALTER TABLE 원테이블명 RENAME TO 수정테이블명; --1번
RENAME 원테이블명 TO 수정테이블명; -- 2번
-- 추가
ADD 칼럼명 추가데이터타입;
-- 컬럼 삭제
ALTER TABLE 테이블명
DROP COLUMN 칼럼명;
-- 컬럼 이름변경
ALTER TABLE 테이블명
RENAME COLUMN 원컬럼명 TO 수정컬럼명;
-- 테이블 컬럼 주석
COMMENT ON COLUMN 테이블명.COLUMN명 IS '주석내용';
ex.
COMMENT ON COLUMN EMPLOYEE.EMP_ID IS '사원번호';
COMMENT ON COLUMN EMPLOYEE.EMP_NAME IS '직원명';
COMMENT ON COLUMN EMPLOYEE.EMP_NO IS '주민번호';
COMMENT ON COLUMN EMPLOYEE.EMP_EMAIL IS '이메일';
COMMENT ON COLUMN EMPLOYEE.EMP_PHONE IS '폰번호';
COMMENT ON COLUMN EMPLOYEE.DEPT_CODE IS '부서코드';
COMMENT ON COLUMN EMPLOYEE.JOB_CODE IS '직급코드';
COMMENT ON COLUMN EMPLOYEE.SAL_LEVEL IS '급여등급';
COMMENT ON COLUMN EMPLOYEE.SALARY IS '급여';
COMMENT ON COLUMN EMPLOYEE.MANAGER_ID IS '관리자사번';
COMMENT ON COLUMN EMPLOYEE.HIRE_DATE IS '입사일';
COMMENT ON COLUMN EMPLOYEE.ENT_DATE IS '퇴사일';
COMMENT ON COLUMN EMPLOYEE.ENT_YN IS '재직여부';
-- 데이터 추가
INSERT INTO 테이블명(컬럼명, .., ..., .., ..)
VALUES(데이터 순서대로, '문자열', 숫자);
INSERT INTO 테이블명
VALUES(데이터순서대로);
-- 데이터 수정
UPDATE 테이블명
SET 컬럼명 = '수정데이터' , 컬럼명2 = 숫자
WHERE 컬럼명 = '다른데이터'(*)
-- 데이터 삭제
DELETE FROM 테이블명
WHERE 컬럼명 = 데이터;
'DB' 카테고리의 다른 글
[SQL / Query] 쿼리 최적화와 튜닝방법론 (0) | 2022.04.04 |
---|