[SQL] 데이터베이스

songu1·2022년 8월 2일
0

현장실습

목록 보기
1/6
post-custom-banner

1. 데이터베이스란?

(1) 데이터베이스란

여러 사람이 공유하여 사용할 목적으로 체계화해 통합 관리하는 데이터의 집합

(2) DBMS(Database Management System)

데이터베이스를 관리하고 운영하는 소프트웨어

데이터베이스는 여러명의 사용자나 응용 프로그램과 공유하고 동시에 접근이 가능해야한다. MySQL, MariaDB, Oracle 등이 있다.

- 관계형 DBMS

테이블이라는 최소단위로 구성, 열과 행으로 이루어져있다.

(3) SQL(Structured Query Language)

구조화된 질의 언어라는 뜻으로 관계형 데이터베이스에서 사용되는 언어

SQL 구분

1) DDL (Data Definition Language)

데이터베이스나 테이블 등을 생성, 삭제하거나 그 구조를 변경하기 위한 명령어로 CREATE, ALTER, DROP가 있다.

2) DML (Data Manipulation Language)

데이터베이스에 저장된 데이터를 처리하거나 조회, 검색하기위한 명령어로 INSERT, UPDATE, DELETE, SELECT 등이 있다.
테이블 내의 데이터를 직접 조작할 수 있는 기능인 CRUD를 담당한다.

3) DCL (Data Control Language)

데이터베이스에 저장된 데이터를 관리하기 위하여 데이터의 보안성 및 무결성을 제어하기 위한 명령어로 GRANT, REVOKE 등이 있다.

(4) 쿼리 (Query)

데이터베이스에 정보를 요청하는것
웹 서버에 특정한 정보를 보여달라는 웹 클라이언트의 요청에 의한 처리

쿼리문 작성은 데이터베이스에서 원하는 정보를 가져오는 코드 작성하는 것이다.

2. 데이터베이스 문법

(1) SELECT

테이블의 데이터를 읽어 출력(조회)하는 기능

# 테이블에서 필드 목록 조회
SELECT 필드목록 FROM 테이블;

#예시
SELECT * FROM tCity;  # tCity라는 테이블에서 모든 필드(*)조회
SELECT name FROM tCity;  #tCity라는 테이블에서 name 컬럼 조회

#상세
SELECT 컬럼명1, 컬럼명2, ... 
		FROM 테이블명 [WHERE/GROUP BY/HAVING/ORDER BY 속성이름 [ASC|DESC]];
  • 문법 순서
    • FROM > ON > JOIN > WHERE > GROUP BY > WITH > HAVING > SELECT >DISTINCT > ORDER BY > TOP
  • WHERE (조건문)
    # WHERE : 테이블에서 조건에 맞는 경우에 대해 필드 목록 조회
    SELECT 필드목록 FROM 테이블 WHERE 조건;
    
    # LIKE : 테이블에서 필드에 '와일드카드 포함 문자'가 있는 경우에 대해 필드목록 조회
    # WHERE과 함께 쓰임
    SELECT 필드목록 FROM 테이블 WHERE 필드 LIKE;
    # 예시
    SELECT * FROM tCity WHERE name LIKE '서%';  #name 컬럼이 서로 시작하는 모든 컬럼 출력
    
    # BETWEEN : 테이블에서 필드가 A이상 B이하인 필드 목록 조회
    # WHERE과 함께 쓰임
    SELECT 필드목록 FROM 테이블 WHERE 필드 BETWEEN A AND B;
    
    #IN :테이블에서 필드가 ('리','스','트')에 포함되는 경우, 필드 목록 조회
    # WHERE과 함께 쓰임
    SELECT 필드목록 FROM 테이블 WHERE 필드 IN ('리','스','트');
    • LIKE (부분문자열 검색)
    • BETWEEN (~이상 ~이하)
    • IN (리스트에 하나라도 포함되는 경우)

(2) INSERT

이미 생성된 테이블에 데이터를 추가(삽입)하는 명령어

# 테이블과 컬럼명 지정하여 데이터 입력
INSERT INTO 테이블명 ([컬럼1, 컬럼2, ...]) VALUES (1,2, ...);

# 예시
INSERT INTO student VALUES 
	('LSJ', 25, '01012341234'),
	('SYJ', 25, '01022223333'),
	('MJH', 24, '01011118888');

INSERT INTO student(name, age) VALUES ('KJY', 25);
  • 해당 테이블의 필드에 순서대로 적용됨
  • CRUD의 create에 해당한다.

(3) CREATE

데이터베이스 테이블 생성

# 테이블 생성
CREATE TABLE 테이블 이름 (
	컬럼명1 데이터타입1 [조건],
	컬럼명2 데이터타입2 [조건],
	...
);

# 예시
CREATE TABLE 테이블명 (
				ID         INT             PRIMARY KEY,
			  NAME       VARCHAR(10)         NOT NULL,
        ADDRESS    VARCHAR(50)         DEFAULT '대구시 달서구'
);
  • 괄호 안에 작성
  • column를 정의
    1. 데이터타입
      • INT, FLOAT, DOUBLE, CHAR, VARCHAR, ENUM, DATE, TIME, DATETIME, YEAR
      • 문자형은 ( ) 안에 크기를 넣어줘야함
      • 정수형은 넣어줘도되고 없어도 됨
    2. 조건
      • PRIMARY KEY : 필수로 있어야하는 키(unique한 key)
      • NOT NULL : NULL 허용불가
        • 설정안하면 NULL 허용
      • readcount : 몇번 조회했는지

(4) UPDATE

데이터베이스의 테이블에서 이미 저장된 값을 수정하는 명령

```sql
# 테이블에 값을 업데이트
UPDATE 테이블명 SET 컬럼1=값1, 컬럼2=값2, ... WHERE 조건;

# 예시
UPDATE osbio_syj SET
cell_no='01011111111',
user_nm='송유정'
WHERE uniq_id='syj';
```

- WHERE 생략한 경우 모든 컬럼이 갱신됨
  • COMMIT을 해야 반영이 됨
  • CRUD의 update에 해당함

(5) DELETE

데이터베이스 테이블의 레코드 삭제

```sql
# 조건에 해당하는 데이터 삭제
DELETE FROM 테이블명 WHERE 조건식;

# 테이블의 모든 데이터 삭제 (모두 날라감)
DELETE FROM 테이블명;
```

- DELETE FROM 테이블명 : 테이블 전체가 삭제됨
    
    → 자동으로 commit될 경우 모두 날라감 (조심하기!!)
    
- CRUD의 delete에 해당

(6) ROLLBACK / COMMIT

6-1) ROLLBACK

  • 작업 취소
  • 작업 중 문제가 발생했을 때, 트랜젝션의 처리 과정에서 발생한 변경 사항을 취소하고, 트랜젝션 과정을 종료
  • commit 전에 실행되어야함 (이전 COMMIT한 곳까지만 복구)

6-2) COMMIT

  • 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어
  • 트랜젝션의 처리 과정을 데이터베이스에 반영하기 위해서, 변경된 내용을 모두 영구 저장한다.
  • COMMIT 수행하면, 하나의 트랜젝션 과정을 종료하게 된다.
  • commit하면 내 데이터 정보가 모두에게 보여짐
  • 한번 COMMIT하면 ROLLBACK 할 수 없음
    ⇒ rollback하거나 commit해야함
post-custom-banner

0개의 댓글