본문 바로가기

SQL/Oracle

데이터베이스 기본 명령어(SQL - Structured Query Language)






















- CREATE : 테이블 생성 등

CREATE TABLE [테이블] (

[컬럼1] [타입](크기)

, [컬럼2] [타입](크기)

, [컬럼3] [타입](크기)

);

CREATE TABLE MEMBER (

NUM NUMBER(10)

, NAME VARCHAR2(10)

, AGE NUMBER(3)

, GENDER VARCHAR2(1)

, COURSE NUMBER(4)

);


- DESC[RIBE] : 테이블 구조 확인

DESC [테이블];


- DROP : 테이블, 유저 삭제 등

DROP TABLE [테이블];

DROP TABLE MEMBER;


- ALTER : 테이블 변경 등

ㆍ컬럼 추가

ALTER TABLE MEMBER ADD (ADDRESS VARCHAR2(100));

ㆍ컬럼 변경

ALTER TABLE MEMBER MODIFY (ADDRESS VARCHAR2(50));

ㆍ컬럼 삭제

ALTER TABLE MEMBER DROP COLUMN ADDRESS;

ㆍPRIMARY KEY 추가

ALTER TABLE MEMBER ADD CONSTRAINT MEMBER_NUM_PK PRIMARY KEY(NUM);

ㆍNOT NULL 제약조건 추가

ALTER TABLE MEMBER MODIFY (NAME CONSTRAINT MEMBER_NAME_NN NOT NULL);


- TRUNCATE : 테이블 삭제(테이터를 넣기 전 테이블 초기 상태로 돌림)

TRUNCATE TABLE [테이블];


- INSERT : 레코드 삽입

INSERT INTO [테이블]

VALUES

('[데이터1]', '[데이터2]', '[데이터3]', ... , '[데이터n]');


INSERT INTO [테이블]

([컬럼1], [컬럼2], [컬럼3], ... , [컬럼n])

VALUES

('[데이터1]', '[데이터2]', '[데이터3]', ... , '[데이터n]');

INSERT INTO MEMBER VALUES (1, 'A', 20, 'M', 1000);

INSERT INTO MEMBER VALUES (2, 'B', 21, 'F', 1000);

INSERT INTO MEMBER VALUES (3, 'C', 30, 'M', 1000);

INSERT INTO MEMBER

(NUM, NAME, AGE, GENDER, COURSE)

VALUES

(4, 'D', 31, 'F', 1000);

INSERT INTO MEMBER

(NAME, AGE, GENDER, COURSE, NUM)

VALUES

('E', 40, 'M', 2000, 5);

INSERT INTO MEMBER VALUES (10, NULL, NULL, NULL, 2000);


- SELECT : 레코드 조회

SELECT [컬럼1], [컬럼2], [컬럼3], ... , [컬럼n]

FROM [테이블];


※ 전체 컬럼 검색

SELECT * FROM [테이블];


SELECT NUM, NAME, AGE, GENDER FROM MEMBER;

SELECT * FROM MEMBER;


- UPDATE : 레코드 변경

UPDATE [테이블]

SET [컬럼1] = '[데이터1]'

, [컬럼2] = '[데이터2]'

, [컬럼3] = '[데이터3]';


UPDATE [테이블]

SET [컬럼1] = '[데이터1]'

, [컬럼2] = '[데이터2]'

, [컬럼3] = '[데이터3]'

WHERE [컬럼] = '[데이터]';


UPDATE MEMBER SET NUM = 6;

UPDATE MEMBER SET NUM = 6 WHERE NAME = 'E';


- DELETE : 레코드 삭제

DELETE FROM [테이블];

DELETE FROM [테이블] WHERE [컬럼] = '[데이터]';


DELETE FROM MEMBER;

DELETE FROM MEMBER WHERE NUM = 6;


※ 주로 사용되는 오라클의 데이터 타입


<!--[endif]-->

- 보조 연산자

ㆍWHERE : 데이터 조건

단독으로 사용될 수 없고 항상 다른 명령어와 함께 사용

조건이 여러개인 경우 AND, OR 사용

SELECT *

FROM EMP

WHERE ENAME = 'SMITH';

=> EMP 테이블의 ENAME 값이 SMITH 인 레코드 조회


UPDATE EMP

SET ENAME = 'SMITH2'

, SAL = 850

WHERE EMPNO = 7369;

=> EMP 테이블의 EMPNO 값이 7369 인 레코드의 ENAME, SAL 값 변경


※ WHERE 문에 AND와 OR을 같이 사용하는 경우

SELECT *

FROM MEMBER

WHERE (NAME = 'A' OR NAME = 'B')

AND AGE BETWEEN 21 AND 30;


ㆍLIKE : 문자열 일부 포함

SELECT *

FROM MEMBER

WHERE AGE LIKE '%2%';

=> MEMBER 테이블의 AGE 값 중 2를 포함하는 레코드 조회


ㆍIN : 지정 문자열 조회

SELECT *

FROM MEMBER

WHERE NAME IN ('A', 'B');

=> MEMBER 테이블의 NAME 값이 A 또는 B 인 레코드 조회


※ WHERE OR 연산자로 대체 가능

SELECT *

FROM MEMBER

WHERE NAME = 'A'

OR NAME = 'B';


ㆍBETWEEN AND : 범위 지정 조회

SELECT *

FROM MEMBER

WHERE AGE BETWEEN 20 AND 24;

=> MEMBER 테이블의 AGE 값이 20 이상 24 이하인 레코드 조회


※ WHERE AND 연산자로 대체 가능

SELECT *

FROM MEMBER

WHERE AGE >= 20

AND AGE <= 24;


ㆍIS NULL : 해당 컬럼 값이 NULL 인 레코드 조회

SELECT *

FROM MEMBER

WHERE NAME IS NULL;

=> MEMBER 테이블의 NAME 값이 NULL 인 레코드 조회


ㆍIS NOT NULL : 해당 컬럼 값이 NULL 이 아닌 레코드 조회

SELECT *

FROM MEMBER

WHERE NAME IS NOT NULL;

=> MEMBER 테이블의 NAME 값이 NULL 이 아닌 레코드 조회


- ORDER BY : 레코드 정렬

SELECT *

FROM MEMBER

ORDER BY NAME DESC [ASC];


SELECT *

FROM MEMBER

ORDER BY 2;

=> MEMBER 테이블 조회 결과를 NAME 내림차순 또는 오름차순으로 정렬


- GROUP BY : 컬럼값이 같은 경우 그룹으로 묶음

SELECT COURSE, COUNT(COURSE)

FROM MEMBER

GROUP BY COURSE;

=> COURSE를 기준으로 묶음


※ 아래의 경우는 실행 오류 발생

SELECT COURSE, NAME COUNT(COURSE) FROM MEMBER

GROUP BY COURSE;

=> SELECT 절은 GROUP BY 절에서 사용된 컬럼과 집계 함수만 가능


- HAVING : GROUP BY 로 처리한 결과에 조건 부여

SELECT COURSE, COUNT(COURSE)

FROM MEMBER

GROUP BY COURSE

HAVING COUNT(COURSE) > 4;

=> COURSE를 기준으로 묶어서 조회한 레코드 중 카운트가 4보다 큰 레코드만 출력


- SEQUENCE : 유일한 값을 생성해주는 오라클 객체

순차적으로 증가하는 컬럼을 자동으로 생성할 수 있음

테이블과는 독립적으로 저장되고 생성

하나의 시퀀스를 여러 테이블에 적용 가능


ㆍ시퀀스 생성

CREATE SEQUENCE [시퀀스명]

START WITH n

INCREMENT BY n

MAXVALUE n | NOMAXVALUE

MINVALUE n | NOMINVALUE

CYCLE | NOCYCLE;


ㆍ시퀀스 사용

SELECT [시퀀스명].CURRVAL FROM DUAL;

=> 시퀀스 현재 값 출력


SELECT [시퀀스명].NEXTVAL FROM DUAL;

=> 시퀀스 다음 값 출력


ㆍ시퀀스 수정

ALTER SEQUENCE [시퀀스명]

INCREMENT BY n

MAXVALUE n | NOMAXVALUE

MINVALUE n | NOMINVALUE

CYCLE | NOCYCLE;

=> 변경할 속성 지정 (START WITH 는 수정 불가)


ㆍ시퀀스 삭제

DROP SEQUENCE [시퀀스명];


ㆍ사용자 계정 생성

CREATE USER testuser IDENTIFIED BY dkagh;


ㆍ사용자 계정 삭제

DROP USER testuser;


ㆍ접속 및 데이터 조작 권한 부여

GRANT CONNECT, RESOURCE TO testuser;


ㆍ접속 및 데이터 조작 권한 취소

REVOKE CONNECT, RESOURCE FROM testuser;


ㆍ사용자 비밀번호 변경

ALTER USER testuser IDENTIFIED BY [비밀번호];


ㆍ시퀀스 변경

ALTER SEQUENCE [시퀀스명] INCREMENT BY [증가수];