728x90
반응형
<목차> |
※ 자료출처: 데이터 산업 진흥원(K-DATA)
SQL 문장의 종류
명령어의 종류 | 명령어 | 설명 |
데이터 조작어(DML: Data Manipulation Language) |
SELECT | 데이터베이스에 들어 있는 데이터를 조회하거나 검색하기 위한 명령어 (RETRIEVE) |
INSERT UPDATE DELETE |
- 데이터베이스의 테이블에 들어 있는 데이터에 변형을 가하는 종류의 명령어 - 데이터를 테이블에 새로운 행에 집어넣거나, 원하지 않는 데이터를 삭제하거나 수정하는 것들의 명령어 |
|
데이터 정의어(DDL: Data Definition Language) |
CREATE ALTER DROP RENAME |
- 테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어 - 구조를 생성하거나 변경하거나 삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령어 |
데이터 제어어(DCL: Data Control Language) |
GRANT REVOKE |
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어 |
트랜잭션 제어어(TCL: Transactuon Control Language) |
COMMIT ROLLBACK |
논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션) 별로 제어하는 명령어 |
1. DML (Data Manipulation Language)
A.DML의 정의
만들어진 테이블에 관리하기를 원하는 자료들을 입력, 수정, 삭제, 조회하는 명령어
B. INSERT
- 테이블에 데이터를 입력하는 방법은 두 가지 유형이 있으며 한 번에 한 건만 입력
◆ INSERT INTO 테이블명 (COLUMN_LIST) VALUES (COLUMN_LIST 에 넣을 VALUE_LIST); ▶ 테이블의 칼럼 정의. 칼럼의 순서는 테이블의 칼럼 순서와 매치할 필요 없음. 정의하지 않은 칼럼은 Default 로 Null 값 입력.(PK나 Not Null로 지정된 칼럼은 Null 비허용) ◆ INSERT INTO 테이블명 VALUES( 전체 COLUMN 에 넣을 VALUE_LIST); ▶ 모든 칼럼에 데이터를 입력. 굳이 Column_List를 언급하지 않아도 되지만, 칼럼의 순서대로 빠짐없이 데이터가 입력되어야 함. |
- 해당 칼럼명과 입력되어야 하는 값을 서로 1:1로 매핑해서 입력
- 해당 칼럼의 데이터 유형이 CHAR, VARCHAR2 등 문자 유형일 경우 ' 로 입력할 값 입력 (예. 'SQLD')
- 숫자일 경우 ' 붙이면 안됨.
[예제]
선수 테이블에 박지성 선수의 데이터를 일부 칼럼만 입력
▶ 테이블명: PLAYER INSERT INTO PLAYER (PLAYER_ID, PLAYER_NAME, TEAM_ID, POSITION, HEIGHT, WEIGHT, BACK_NO) VALUES('2002007', '박지성', 'K07', 'MF', 178, 73, 7); 1개의 행이 생성되었다. |
[예제]
해당 테이블에 이청용 선수의 데이터 입력
INSERT INTO PLAYER VALUES('2002010', '이청용', 'K07', 'BlueDragon', '2002', 'MF', '17', NULL, NULL, '1', 180, 69); 1개의 행이 생성되었다. |
- 데이터를 입력하는 경우 정의되지 않은 미지의 값인 E_PLAYER_NAME은 두 개의 ' 을 붙여서 (' ') 표현하거나, NATION 이나 BIRTH_DATE 의 경우처럼 NULL 이라고 명시적으로 표현 가능.
C. UPDATE
- 입력한 정보 중에 잘못 입력되거나 변경이 발생하여 정보를 수정해야 하는 경우가 발생 시, 데이터를 수정하는 명령어
UPDATE 테이블명 SET 수정되어야 할 칼럼명 = 수정되기를 원하는 새로운 값; |
[예제]
선수 테이블의 백넘버를 일괄적으로 99로 수정
UPDATE PLAYER SET BACK_NO = 99; 480개의 행이 수정되었다. |
[예제]
선수 테이블의 포지션을 일괄적으로 'MF'로 수정
UPDATE PLAYER SET POSITION ='MF'; 480개의 행이 수정되었다. |
D. DELETE
- 테이블의 정보가 필요 없어질 경우 데이터 삭제를 하는 명령어
- DELETE FROM 다음에 삭제를 원하는 자료가 저장되어 있는 테이블명을 입력하고 실행
- FROM 문구는 생략이 가능한 키워드이며, WHERE 절을 사용하지 않을 시 테이블의 전체 테이터가 삭제 됨.
DELETE [FROM] 삭제를 원하는 정보가 들어있는 테이블명; |
[예제]
선수 테이블의 데이터를 전제 삭제
DELETE FROM PLAYER; 480개의 행이 삭제되었다. |
E. DDL과의 차이
- DDL 명령어인 경우, 직접 데이터베이스의 테이블에 영향을 미치기 때문에 DDL 명령어를 입력하는 순간 명령어에 해당하는 작업이 즉시(AUTO COMMIT) 완료
- DML 명령어의 경우, 조작하려는 테이블을 메모리 버퍼에 올려놓고 작업하기 때문에 실시간으로 테이블에 영향을 미치는 것은 아님.
- 버퍼에서 처리한 DML 명령어가 실제 테이블에 반영되기 위해서는 COMMIT 명령어를 입력하여 TRANSACTION을 종료해야 함. (SQL Server의 경우, DML도 AUTO COMMIT으로 처리되기 때문에 COMMIT 명령어 입력 불필요.)
- 테이블의 전체 데이터를 삭제하는 경우, 시스템 활용 측면에서는 삭제된 데이터를 로그로 저장하는 DELETE TABLE 보다는 시스템 부하가 적은 TRUNCATE TABLE 권고.
- TRUNCATE TABLE의 경우 삭제된 데이터의 로그가 없으므로, ROLLBACK 불가 (SQL Server의 경우 다시 복구를 원할 경우 ROLLBACK 문을 이용하여 테이블 데이터를 원 상태로 되돌릴 수 있음.
F. SELECT
- 사용자가 입력한 데이터를 조회하는 명령어
SELECT [ALL/DISTINCT] 보고 싶은 칼럼명, 보고 싶은 칼럼명, .... FROM 해당 칼럼들이 들어있는 테이블명; ▶ ALL: Default 옵션으로 생략 가능. 중복된 데이터가 있어도 모두 출력. ▶ DISTINCT: 중복된 데이터가 있는 경우 1건으로 처리해서 출력. |
[예제]
PLYAER 테이블에 입력한 선수들의 데이터를 조회
SELECT PLAYER_ID, PLAYER_NAME, TEAM_ID, POSITION, HEIGHT, WEIGHT, BACK_NO FROM PLAYER; |
■ DISTINCT 옵션
[예제]
선수 테이블의 포지션 정보를 DISTINCT 옵션으로 확인
SELECT DISTINCT POSITION FROM PLAYER; |
■ * 애스터리스크 (테이블 내 모든 데이터 조회)
[예제]
입력한 선수들의 정보를 모두 조회
SELECT * FROM PLAYER; |
■ ALIAS (AS) 부여하기
- 조회된 결과에 별칭(ALIAS)을 부여하여 칼럼 레이블 변경 가능
- 칼럼명 바로 뒤에 서술
- 칼럼명과 ALIAS 사이에 AS, as 키워드를 사용 가능
- 이중 인용부호는 ALIAS가 공백, 특수문자를 포함할 경우와 대소문자 구분이 필요할 경우 사용
[예제]
입력한 선수들의 정보를 칼럼 별명을 이용하여 출력
SELECT PLAYER_NAME AS 선수명, POSITION AS 위치, HEIGHT AS 키, WEIGHT AS 몸무게 FROM PLAYER; |
[예제]
칼럼 별명을 적용할 때 별명 중간에 공백이 들어가는 경우 " " 사용.
SQL Server의 경우 " " / ' ' / [ ] 3가지의 방식으로 부여 가능
SELECT PLAYER_NAME AS "선수 이름", POSITION AS "그라운드 포지션", HEIGHT AS "키", WEIGHT AS "몸무게" FROM PLAYER; |
G. 산술 연산자와 합성 연산자
■ 산술 연산자
- NUMBER와 DATE 자료형에 대해 적용되며 일반적으로 수학에서의 4칙연산과 동일.
- 우선 순위를 위한 괄호 적용 가능
- 일반적으로 산술 연산을 사용하거나 특정 함수를 적용하게 되면 칼럼의 LABEL 이 길어지게 되고, 기존 칼럼에 대해 새로운 의미를 부여한 것이므로 적절한 ALIAS를 새롭게 부여하는 것이 좋음
- 산술 연산자는 수학에서와 같이 (), *, /, +, - 의 우선순위 가짐.
산술 연산자 | 설명 |
() | 연산자 우선순위를 변경하기 위한 괄호 (괄호 안의 연산이 우선) |
* | 곱하기 |
/ | 나누기 |
+ | 더하기 |
- | 빼기 |
[예제]
선수들의 키에서 몸무게를 뺀 값 계산
SELECT PLAYER_NAME 이름, HEIGHT - WEIGHT "키-몸무게" FROM PLAYER; |
[예제]
선수들의 키와 몸무게를 이용하여 BMI(BODY MASS INDEX) 계산
SELECT PLAYER_NAME 이름, ROUND(WEIGHT/((HEIGHT/100)*(HEIGHT/100)),2) "BMI 비만지수" FROM PLAYER; |
■ 합성 연산자
- 문자와 문자를 연결하는 합성 연산자
- 별도의 프로그램 도움 없이 SQL 문장만으로도 유용한 리포트 출력
- 문자와 문자를 연결하는 경우 2개의 수직 바(||)에 의해 이루어짐 (Oracle)
- 문자와 문자를 연결하는 경우 + 표시에 의해 이루어짐(SQL Server)
- 두 벤더 모두 공통적으로 CONCAT (string1, string2) 함수 사용 가능
- 칼럼과 문자 또는 다른 칼럼과 연결
- 문자 표현식의 결과에 의해 새로운 칼럼 생성
[예제]
다음과 같은 선수들의 출력 형태 생성
출력 형태) 선수명 선수, 키 cm, 몸무게 kg 예) 박지성 선수, 176 cm, 70 kg |
[Oracle] SELECT PLAYER_NAME || '선수,' || HEIGHT || 'cm,' || WEIGHT || 'kg' 체격정보 FROM PLAYER |
[SQL Server] SELECT PLAYER_NAME + '선수,' + HEIGHT + 'cm,' + WEIGHT + 'kg' 체격정보 FROM PLAYER |
이전글
다음글
728x90
반응형
'자격증 > SQLD' 카테고리의 다른 글
SQLD 2과목 관리구문 - DDL (0) | 2024.02.01 |
---|---|
SQLD 2과목 관리구문 - TCL (0) | 2024.01.31 |
SQLD 2과목 SQL 활용 - 정규 표현식 (0) | 2024.01.30 |
SQLD 2과목 SQL 활용 - PIVOT 절과 UNPIVOT 절 (1) | 2024.01.29 |
24년 1월 29일 - SQLD 시험 접수 !! (1) | 2024.01.29 |