[Database] 06 데이터입력 SQL
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 수강신청