SQL
Structured Query Language(구조적 질의 언어)
→ 관계형 데이터베이스에서 사용하는 명령어입니다.
→ DDL, DML, DCL로 분류할 수 있습니다.
DDL(Data Definition Language)
→ 데이터 정의어
→ 데이터베이스 객체가 대상입니다.(user, 테이블, 뷰, 시퀀스, ...)
종류
CREATE : 데이터베이스, 테이블을 생성합니다.
ALTER : 데이터베이스, 테이블을 변경합니다.
DROP : 데이터베이스, 테이블을 제거합니다.
DML(Data Manipulation Language)
→ 데이터 조작어
→ 테이블에 저장된 데이터가 대상입니다.
종류
INSERT : 테이블 내 칼럼에 새로운 데이터를 추가합니다.
SELECT : 테이블 내 칼럼에 저장된 데이터를 조회합니다.
UPDATE : 테이블 내 칼럼에 저장된 데이터를 변경합니다.
DELETE : 테이블 내 칼럼에 저장된 데이터를 삭제합니다.
DCL(Data Control Language)
→ 데이터 제어어
→ 데이터베이스의 객체 또는 데이터와 관련된 제어 명령입니다.
종류
GRANT : 지정된 사용자 계정에 권한을 부여합니다. (권한: RESOURCE, CONNECT 등)
REVOKE : 허용된 권한을 회수합니다.
COMMIT : 트랜잭션을 확정합니다.
ROLLBACK : 트랜잭션을 취소합니다.
* 트랜잭션
→ 연관된 다수의 INSERT/UPDATE/DELETE 명령들을 하나의 묶음(단위)으로 실행하는 것입니다.
→ 트랜잭션 안에 정의된 연산은 모두 실행되거나 모두 실행되지 않아야 합니다.
EX)
A가 B에게 100만원을 송금한다.
A 계좌 : UPDATE 잔액 -100만원
B 계좌 : UPDATE 잔액 +100만원
위 2개의 UPDATE 명령어는 하나의 트랜잭션으로 2개가 모두 완료되어야 합니다. (COMMIT)
첫 번째 UPDATE 후에 오류가 발생하여 두 번째 UPDATE를 실행하지 못했을 경우
이전 UPDATE도 취소되도록 합니다. (ROLLBACK)
DML : SELECT, INSERT, UPDATE, DELETE 형식
SELECT
→ 데이터를 조회합니다.
→ 형식 : SELECT 열_이름1, 열_이름2, ... FROM 테이블_이름 [ WHERE 조건식 ] ;
열_이름에 조회할 열의 이름을 입력합니다.
모든 컬럼을 선택할 때는 와일드카드 문자 *로 대체합니다.
SELECT 문의 특징적 요소로 별칭(Alias) 기능이 있습니다.
데이터 조회에 사용되는 조건 추가는 WHERE 뒤에 조건식을 작성합니다.
INSERT
→ 데이터를 추가합니다.
→ 형식 : INSERT INTO 테이블_이름(열_이름1, 열_이름2, ...) VALUES(값1, 값2, ...) ;
UPDATE
→ 데이터를 수정합니다.
→ 형식 : UPDATE 테이블_이름 SET 열_이름1=값1, 열_이름2=값2, ... WHERE 조건식 ;
DELETE
→ 데이터를 행단위로 삭제합니다.
→ 형식 : DELETE FROM 테이블_이름 WHERE 조건식 ;
WHERE 조건식
→ 데이터를 처리할 행에 대한 조건식을 작성합니다.
예시
IS NULL, IS NOT NULL
→ WHERE 조건식에서 특정 컬럼 값이 NULL이거나 NULL이 아닌 데이터를 조회할 때 사용합니다.
→ 1) ETC 컬럼의 값이 NULL인 데이터를 조회합니다.
→ 2) ETC 컬럼의 값이 NULL이 아닌 데이터를 조회합니다.
AND, OR, IN, NOT IN 연산자
→ AND : 두 조건이 모두 만족하는 조건입니다.
→ OR : 두 조건중 하나만 만족하는 조건입니다.
→ IN( ) : 여러 번의 OR 연산을 하나의 IN으로 간결하게 표현할 수 있습니다. ( ) 내의 값중 하나를 포함하는 조건입니다.
→ NOT IN( ) : ( ) 내의 모든 값을 포함하지 않는 조건입니다.
→ STUNO = 1 OR STUNO = 3 과 STUNO IN (1, 3) 는 동일한 조건입니다.
그룹 함수 COUNT, MAX, MIN, AVG
COUNT(*) : 전체 행의 수를 반환합니다.
COUNT(열_이름) : 열의 값이 NULL이 아닌 행의 수를 반환합니다.
MAX(열_이름) : 열의 값 중 최대값을 반환합니다. 문자열 형식은 사전식으로 최대값을 반환합니다.
MIN(열_이름) : 열의 값 중 최소값을 반환합니다. 문자열 형식은 사전식으로 최소값을 반환합니다.
AVG(열_이름) : 열의 값들의 평균값을 반환합니다.
→ 그룹 함수의 결과 값은 1개입니다.
→ 서브 쿼리로 사용할 수 있습니다.
예시
→ 1) EMPLOYEES 테이블 내 전체 행의 개수를 조회합니다.
→ 2) EMPLOYEES 테이블 중 JOB_ID가 'IT_PROG'인 행의 개수를 조회합니다.
→ 1) EMPLOYEES 테이블의 SALARY 값 평균을 구합니다.
→ 2) EMPLOYEES 테이블 중 JOB_ID가 'IT_PROG'인 행의 SALARY 값 평균을 구합니다.
→ 1) EMPLOYEES 테이블의 SALARY 값 중 최대값을 구합니다.
→ 2) EMPLOYEES 테이블 중 JOB_ID가 'IT_PROG'인 행의 SALARY 값 중 최대값을 구합니다.
→ 1) EMPLOYEES 테이블의 SALARY 값 중 최소값을 구합니다.
→ 2) EMPLOYEES 테이블 중 JOB_ID가 'IT_PROG'인 행의 SALARY 값 중 최소값을 구합니다.
→ 오류: 그룹함수는 반드시 SELECT 문으로 사용합니다.
→ 서브쿼리 : AVG 값은 1개이므로 관계 연산 조건식에 사용할 수 있습니다.
서브 쿼리
SELECT 문 안에 또 다른 SELECT 문이 들어갈 수 있습니다.
→ 두 번째 SELECT 문의 결과값이 1개이므로 = 조건식에 사용할 수 있습니다.
함수 UPPER, LOWER
UPPER( ) : 문자열을 대문자로 변환한다.
LOWER( ) : 문자열을 소문자로 변환한다.
예시 : 대/소문자 구분 없이 검색
* 단축키
• 명령어 1개 실행 : Ctrl+Enter
• 여려 명령어 실행 : 드래그 후 Alt+X
'수업 일지 > Oracle(SQL)' 카테고리의 다른 글
44일차 - PL/SQL 프로시저/생성/호출 (0) | 2022.03.10 |
---|---|
27일차 - ALTER/DECODE/COMMIT/뷰/JDBC연동 (0) | 2022.02.09 |
26일차 - ERD/UPDATE/DELETE/외래키 삭제 조건/JOIN (0) | 2022.02.08 |
25일차 - 숫자/날짜/문자 타입/제약조건/시퀀스 (0) | 2022.02.07 |
23일차 - Oracle 설치/연습 (0) | 2022.02.03 |
댓글