[필기정리]Day56-3 - MySQL RDBMS, like, transaction 등

DB/MySQL

2020. 9. 10. 19:06

# DB 용어정리

- DBMS(데이터베이스 관리 시스템)

  데이터베이스를 관리하며 응용 프로그램들이 데이터베이스를 공유하며 사용할 수 있는 환경을 제공하는 SW

  데이터베이시를 구축하는 틀을 제공하고, 효율적으로 데이터를 검색, 저장하는 기능을 제공

  ex) 오라클, 인포믹스, 엑세스 등           

 

- RDBMS(관계형 데이터베이스 관리 시스템)

  데이터베이스에 포함된 속성에 대한 추가, 편집, 질의, 분석, 요약을 위해 사용하는 컴퓨터 SW

  대량의 데이터를 관계형 모델에 따라 구조화해 저장, 관리하고 

  사용자가 간단한 데이터베이스 언어로 복잡한 질의 연산을 요구할 수 있게 함

 

- SQL(Structured Query Language) : 구조화된 질의 언어 

 

# SQL 명령어 종류

명령어 종류 명령어 설명
데이터 조작어
(DML : 
Data Manipulation Language)
SELECT DB에 들어있는 데이터를 조회하거나 검색하기 위한 명령어로 
RETRIEVE라고도 함
INSERT DB의 테이블에 들어있는 데이터에 변형을 가하는 종류
(데이터 삽입, 수정, 삭제)의 명령어
UPDATE
DELETE
데이터 정의어
(DDL : 
Data Definition Language)
CREATE 테이블과 같은 데이터 구조를 정의하는 데 사용되는 명령어들로
(생성, 변경, 삭제, 이름변경)
데이터 구조와 관련된 명령어
ALTER
DROP
RENAME
TRUNCATE
데이터 제어어
(DCL : 
Data Control Language)
GRANT DB에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어
REVOKE
트랜젝션 제어어
(TCL : 
Transaction Control Language)
COMMIT 논리적인 작업의 단위를 묶어서 
DML에 의해 조작된 결과를 작업단위(트랜젝션) 별로 제어하는 명령어
ROLLBACK
SAVEPOINT

 

- 트랜젝션(transaction)

  논리적인 일의 단위, 물리적으로 보이는 처리단위가 아니라 시스템 상의 처리단위

  하나의 묶음으로 처리가 이루어져야 하는 모든 것에 적용된다.

 

  ① ROLLBACK 트랜잭션으로 인한 하나의 묶음 처리가 시작되기 이전의 상태로 되돌리는 것
                      INSERT, UPDATE, DELETE하고 나서 COMMIT안했다면 ROLLBACK으로 원래대로 돌릴 수 있다.
                      (INSERT, UPDATE, DELETE명령을 사용하기 이전의 상태로 되돌리는 것)

                      단, CREATE, DROP 등은 ROLLBACK 불가하다(이미 COMMIT 되므로) 

 

  ② COMMIT : 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어 (실행을 위한 엔터키 역할)
                    트랜잭션의 처리과정을 DB에 반영하기 위해서, 변경된 내용을 모두 영구 저장한다. 
                    COMMIT 명령어를 수행하게되면 하나의 트랜잭션 과정을 종료하게 된다.  

  ex) 은행 송금, 인출 - 에러 발생 등으로 인한 문제 발생 - 처음으로 ROLLBACK 시켜 다시 시작시킴             

 

- AUTOCOMMIT

MySQL : AUTOCOMMIT으로 DML 작업 시 주의 필요함

ORACLE : AUTOCOMMIT이 옵션 기능으로 존재함

# 옵션
show autocommit 
set autocommit on 
set autocommit off 

 

 

- 문제

Q1. SQL 명령을 사용할 수 있는 데이터베이스는 무엇인가?
① 객체지향형 데이터베이스
② 관계형 데이터베이스 
③ XML 데이터베이스

A. ② 관계형 데이터베이스

Q2. 클라이언트가 데이터베이스 서버에 접속할 때 필요한 것은 무엇인가?
① 사용자 인증
② 영속화
③ 웹서버

A. ① 사용자 인증

Q3. 다음 용어 중 SQL 명령이 아닌 것은 무엇인가?
① DML
② DDL
③ XML 

A. ③ XML 

- 대소문자 구별 
  예약어와 데이터베이스 객체명은 대소문자를 구별하지 않는다.

ex) 

CREATE TABLE sample21( 
no INT, 
name VARCHAR(20), 
birthday DATE, 
address varchar(40) 
); 

INSERT INTO SAMPLE21 VALUES(1, '박준용', '1976-10-18', '대구광역시 수성구'); 
INSERT INTO SAMPLE21 VALUES(2, '김재진', NULL, '대구광역시 동구'); 
INSERT INTO SAMPLE21 VALUES(3, '홍길동', NULL, '서울특별시 마포구');
select * from sample21; 
Select * From Sample21; 
SELECT * FROM SAMPLE21;

∴ 위의 결과는 모두 동일하다.

 

- data

   ㄴ null : 값이 없는 데이터

 

- table : 행과 열로 구성된 표 형식의 데이터

  ① 열(Column) : 데이터를 표현하는 최소 단위

                       하나의 자료형만을 가질 수 있다.

  ② 행(Row, record) : 가로 방향의 자료 집합 

 


# 연산자

- = : 서로 같은 값인지를 비교하는 연산자
- <> : 서로 다른 값인지를 비교하는 연산자 

ex)

SELECT * FROM sample21 WHERE no <> 2;

- 수치형 ex) 1 100 -3.8 

  ㄴ 조건식 : 비교할 숫자를 그대로 조건식에 표기 

 

- 문자열형 ex) 'ABC' '홍길동' 
  ㄴ 조건식 : 조건으로 지정할 값도 그 자료형에 맞춰 지정해야 함

                 비교할 경우 싱글쿼트(' ')로 둘러싸서 표기


- 날짜시간형 ex) '2013-01-25' '2013-03-03 10:21:00' 
  ㄴ 싱글쿼트로 둘러싸 표기

      연월일 : 하이픈(-)으로 구분해 표기

      시각 :  시분초를 콜론(:)으로 구분해 표기

// Tip - 리터럴(literal) : 자료형에 맞게 표기한 상수값 

# 검색 연산자
- NULL 값 검색

IS NULL : NULL인 행만 검색하는 연산자

SELECT * FROM sample21 WHERE birthday IS NULL;


IS NOT NULL : NULL 값이 아닌 행을 검색하는 연산자

-  AND, OR, NOT 검색

CREATE TABLE sample24(no int, a int, b int ,c int); 
insert into sample24 values(1, 1 ,0, 0); 
insert into sample24 values(2, 0 ,1, 0); 
insert into sample24 values(3, 0 ,0, 1); 
insert into sample24 values(4, 2, 2, 0);
insert into sample24 values(5, 0, 2, 2);
SELECT * FROM sample24;

 

① AND 검색
ex) a 열과 b 열이 모두 0이 아닌 행 검색

SELECT * FROM sample24 WHERE a <> 0 AND b <> 0;

 

② OR 검색
ex) a 열이 0이 아니거나 b열이 0이 아닌 행 검색

SELECT * FROM sample24 WHERE a <> 0 OR b <> 0;

 

// Tip : AND는 OR에 비해 우선 순위가 높다.

③ NOT 검색 
ex) a열이 0이 아니거나 b열이 0이 아닌 행을 제외한 나머지 행을 검색

SELECT * FROM sample24 WHERE NOT(a<>0 OR b<>0);


- 패턴 매칭에 의한 검색
★ LIKE ex) 게시판 검색

 열 LIKE 패턴 : LIKE 술어를 사용하여 패턴 매칭으로 검색할 수 있다! 
                     패턴을 정의할 때 사용할 수 있는 메타문자로는 %와 _이 있다! 

ex) 

CREATE TABLE sample25(no int, text varchar(100)); 
INSERT INTO sample25 values(1, 'SQL은 RDBMS를 조작하는 언어이다.'); 
INSERT INTO sample25 values(2, 'LIKE에서는 메타문자 %와 _를 사용할 수 있다.'); 
INSERT INTO sample25 values(3, 'LIKE는 SQL에서 사용할 수 있는 술어 중 하나이다.');

ⓐ Text열이 'SQL을 포함하는 행을 검색

SELECT * FROM sample25 WHERE text LIKE 'SQL%';  // SQL로 시작하는 문자열 검색

ⓑ Text열이 'SQL을 포함하는 행을 검색

SELECT * FROM sample25 WHERE text LIKE '%SQL%'; // SQL로 문자열 모든 위치 검색

 

와일드카드 사용 검색

ex)

CREATE TABLE sample251(text varchar(50)); 
INSERT INTO sample251 values('a'); 
INSERT INTO sample251 values('ab'); 
INSERT INTO sample251 values('abc'); 
INSERT INTO sample251 values('가'); 
INSERT INTO sample251 values('가나'); 
INSERT INTO sample251 values('가나다'); 
INSERT INTO sample251 values('Hi Alice'); 
INSERT INTO sample251 values('안녕하세요 반갑습니다.');

 

ⓐ 언더바(_) 

SELECT * FROM sample251 WHERE text LIKE '_';    // 텍스트 한 글자
SELECT * FROM sample251 WHERE text LIKE '__';   // 텍스트 두 글자
SELECT * FROM sample251 WHERE text LIKE '___';  // 텍스트 세 글자
SELECT * FROM sample251 WHERE text LIKE 'a__';  // 첫 글자 a+ 텍스트 두 글자
SELECT * FROM sample251 WHERE text LIKE '__c';  // 텍스트 두 글자 + 끝 글자 c
SELECT * FROM sample251 WHERE text LIKE '가_다';  // 첫 글자 가 + 텍스트 한 글자 + 끝 글자 다


ⓑ 퍼센트(%)
// Text열이 %를 포함하는 행을 검색

SELECT * FROM sample25 WHERE text LIKE '%\%%';  // \%로 입력 시 % 자체 검색 가능

 

// Tip : '%'를 검색하고 싶을 땐 \%

          '_'를 검색하고 싶을 땐 \_

          ' (작은따옴표)를 검색하고 싶을 땐 '''' // 작은 따옴표로 감싸고 안에 ''붙여서 쓰기

 

- TRIM : 양쪽의 공백을 제거

① LTRIM : 왼쪽 공백 제거

② RTRIM : 오른쪽 공백 제거

- 문제
Q1. WHERE 구로 조건식을 지정하는 것으로 테이블에서 원하는 (    )을 검색할 수 있습니다. 

    다음 중 (   )에 해당하는 것은 무엇인가? 

① 행
② 열
③ 조건식

A. ① 행

 

Q2. NULL 값을 가지는 행을 검색할 경우 사용하는 연산자는 무엇인가?
① =
② <>
③ IS NULL

A. ③ IS NULL

Q3. 나이가 20세 이상인 여성만 검색할 경우 '나이가 20세이상' 이라는 조건식과

     '여성이다'라는 조건식을 조합하여 WHERE구에 지정하는데,

     이 경우 필요한 논리 연산자는 무엇인가?
① AND 
② OR
③ NOT

A. ① AND

728x90