Major Study/25-1 Database

[Database] 06 데이터입력 SQL

선경이 2025. 4. 18. 12:20

01 데이터베이스관리시스템

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

- 데이터베이스 모델에 따라서 데이터베이스를 조작/관리하는 기능을 수행하는 시스템이다.

- 주기능 : 데이터베이스 조작 -> 데이터 입력, 검색

               네트워킹 -> 다수의 사용자가 동시 접속, 정보 공유

- 부기능 : 보안 -> 사용자 역할에 따른 권한 부여

               병행제어 -> 동시적 요청을 안전하게 처리

 

관계형 데이터베이스 관리 시스템 (RDBMS, Relation DBMS)

- 관계형 데이터베이스 모델에 따라서 데이터베이스를 조작/관리하는 기능을 수행하는 시스템이다.

 

관리 소프트웨어

- 관계형 데이터베이스 시스템을 프로그래밍 코드로 구현한 실체 ex) MySQL, Oracle, Microsift server, DB2, SQLite (간소화 버전)

- 동일한 기능 제공 / 동일한 인터페이스(SQL) 사용 -> 하나의 DBMS 사용법을 알면 다른 소프트웨어도 사용이 가능하다.

- 고급 기능과 인터페이스와 세부 수행 과정은 조금씩 다르다.

인터페이스

- 사용자가 소프트웨어 기능을 사용하기 위해 약속한 소통 방법

- 사용자는 기능의 개념과 인터페이스를 알면 소프트웨어를 이용할 수 있다.

- 종류 : GUI (Graphic User Interface) -> 화면에 마우스를 조작해서 입력하는 인터페이스

            CUI (Character User Interface) -> 키보드로 문자 타이핑 하여 입력하는 인터페이스

 

SQL (Structured Query Language)

- 관계 데이터베이스를 위한 표준 질의어

- 비절차적 데이터 언어

- 사용방법 : 대화식 SQL -> 데이터베이스 관리 시스템에 직접 접근해 질의를 작성하여 실행

                  삽입 SQL -> 프로그래밍 언어로 작성된 응용 프로그램에 삽입

 

- 사용자가 DBMS 소프트웨어의 기능을 사용하는 방법에 대한 '표준' 소통 언어

- SQL은 CUI 기반 인터페이스이다.

ex)

CREATE TABLE 과목(
	과목이름 VARCHAR(10)
    학년 INT
);

 

SQL 명령어의 기능을 따른 분류

- 데이터 정의어 (DDL, Data Definition Language)

  : 테이블을 생성하고 변경, 제거하는 기능의 명령어

 

- 데이터 조작어 (DML, Data Manipulaion Language)

  : 테이블에 새 데이터를 삽입, 저장된 데이터를 수정, 삭제, 검색하는 기능의 명령어 

 

- 데이터 제어어 (DCL, Data Control Language)

  : 보안을 위해 사용자에게 데이터에 대한 접근 및 사용 권한을 부여하거나 취소하는 기능의 명령어

 

02 데이터 입력 SQL

데이터베이스 입력 관련 기능

 

생성 및 입력

1. 데이터베이스 생성

CREATE DATABASE 수강신청DB;

 

2. 테이블 생성 (스키마 생성)

* CREATE TABLE *

- 테이블 생성과 동시에 스키마(구성, 속성, 제약조건, 기본키, 외래키)를 정의한다.

 

- 속성의 데이터 타입 

 

- 속성 관련 부가 명령어 : NOT NULL -> 해당 속성의 값은 NULL이 될 수 없다.

                                      UNIQUE -> 해당 속성의 값은 중복될 수 없다.

                                      DEFAULT 기본값 -> 해당 속성의 값을 입력하지 않으면 기본값으로 설정된다.

                                      CHECK 체크조건 -> 체크 조건이 맞는지 확인한다.

 

- 외래키 참조 무결성 관련 부가 명령어 : ON DELETE NO ACTION -> 참조 있으면 튜플을 삭제하지 못하게 한다.

                                                            ON DELETE CASCADE -> 참조 튜플을 함께 삭제한다.

                                                            ON DELETE SET NULL -> 참조 튜플의 값을 NULL로 설정한다.

                                                            ON DELETE SET DEFAULT -> 참조 튜플의 값을 기본값으로 설정한다.

CREATE TABLE 과목(
	과목이름 VARCHAR(20) UNIQUE,
	학년 INT NOT NULL DEFAULT 1 CHACK(학년<=4),
	PRIMARY KEY(과목이름)
);

CREATE TABLE 수강신청(
	수강신청번호 CHAR(7),
	학번 CHAR(7),
	과목이름 VARCHAR(20)
	PRIMARY KEY(수강신청번호)
	FOREIGN KEY(과목이름) REFFERENCES 과목(과목이름)
               ON DELETE NO ACTION
);

 

* ALTER TABLE *

- 테이블의 속성과 그 조건(도메인, 제약조건, 기본키, 외래키)을 변경함

 

# NewBook 테이블에 VARCHAR(13)의 자료형을 가진 isbn 속성을 추가
ALTER TABLE NewBook ADD isbn VARCHAR(13);

# NewBook 테이블의 isbn 속성의 데이터 타입을 INTEGER형으로 변경
ALTER TABLE NewBook MODIFY isbn INTEGER;

# NewBook 테이블의 isbn 속성을 삭제
ALTER TABLE NewBook DROP COLUMN isbn;

# NewBook 테이블의 bookid 속성에 NOT NULL 제약조건을 적용
ALTER TABLE NewBook MODIFY bookid INTEGER NOT NULL;

# NewBook 테이블의 bookid 속성을 기본키로 변경
ALTER TABLE NewBook ADD PRIMARY KEY(bookid);

 

* DROP TABLE *

- 테이블을 삭제하는 명령 : 테이블의 구조와 데이터를 모두 삭제함. (데이터만 삭제하려면 DELETE문을 사용함)

                                        참조 제약 조건 ON DELETE NO ACTION 으로 인해 삭제가 거절 될 수도 있다.

DROP TABLE 과목;
DROP TABLE 수강신청;

 

3. 데이터입력

* INSERT *

- 테이블에 새로운 튜플(데이터)를 삽입

# Book 테이블에 새로운 도서 ‘스포츠 의학’을 삽입하시오. 스포츠 의학은 한솔의학서적
에서 출간했으며 가격은 90,000원이다.
INSERT INTO Book(bookid, bookname, publisher, price)
	   VALUES (11, '스포츠의학', '한솔의학서적',90000);

# Book 테이블에 새로운 도서 ‘스포츠 의학’을 삽입하시오. 스포츠 의학은 한솔의학 서적에서 출간했으며 가격은 미정이다.
# NULL 값 존재
INSERT INTO Book(bookid, bookname, publisher, price)
	   VALUES (11, '스포츠의학', '한솔의학서적');

 

변경 및 삭제

1.데이터 변경 및 삭제

* UPDATE *

- 특정 속성 값을 수정하는 명령이다.

UPDATA Customer
SET address='대한민국 부산'
WHERE custid=5;

 

2. 테이블 변경 및 삭제

* DELETE *

- 테이블에 있는 기존 튜플을 삭제하는 명령이다.

# Book 테이블에서 도서번호가 11인 도서 삭제
DELETE FROM Book
WHERE bookid = '11';

# 모든 고객 삭제
DELETE FROM Customer;

 

 

3. 데이터베이스 삭제

DROP DATABASE 수강신청DB;

 

종류 및 내용 확인

1. 데이터베이스 종류 확인

- SHOW DATABASES

 

2. 테이블 종류 확인

- SHOW TABLES

 

3. 테이블 스키마 확인

- DESC TABLE 과목

- DESC TABEL 수강신청

 

4. 테이블 내용 확인

- SELECT * FROM 과목

- SELECT * FROM 수강신청