본문 바로가기
뒤끝 (Back-End)

[JSP] 데이터베이스

728x90

 

 

데이터 파일 구조

  • 레코드(Record): 서로 연관된 정보를 모은 단위
  • 파일(File): 여러 개의 레코드로 구성됨

파일시스템 관리

데이터 파일은 운영체제의 파일 시스템을 통해 관리됨

 

중복 저장 문제:
동일한 정보가 응용 분야에 따라 여러 파일에 중복 저장되어 비효율적

 

데이터베이스 : 여러 사람에 의해 특정 분야에서 사용될 목적으로 통합하여 관리되는 데이터의 집합체

  • 다수의 사용자가 사용하는 데이터들의 공유와 운영을 위해 저장해 놓은 공간으로 자료 항목의 중복성 제거
  • 자료를 즈고화하여 저장함으로써 데이터 검색과 업데이트의 효율성을 높임

DBMS(데이터베이스 관리 시스템) : 데이터베이스를 직접 응용 프로그램들이 조작하는 것이 아니라 데이터베이스를 조작하는 별도의 소프트웨어를 의미, ex) MySQL

MySQL : 전 세계적으로 널리 사용되고 있는 관계형 데이터베이스 관리 시스템(RDBMS)

 

데이터의 기본 관리 단위는 테이블(Table)이고, 필드(Field 또는 Column)과 레코드(Record 또는 Row)로 구성

키(Key) : 데이터베이스에서는 데이터를 다른 데이터와 구분할 수 있는 고유 정보

주 키(Primary Key) : 테이블 하나 당 하나만 존재하며, 각각의 레코드를 구분해주는 값

  • 학번, 사번, 주민등록번호 등 중복되지 않는 항목
  • 단순히 데이터 구분을 위한 주 키의 경우 특별한 의미가 없는 중복되지 않고 순차적으로 증가하는 숫자 값을 키로 사용(예, 게시판)

SQL(Structured Query Language) : 데이터베이스의 데이터를 관리하기 위한 쿼리 언어

// MySQL에 생성되어 있는 데이터베이스 목록을 확인
show databases;

 

// 데이터베이스 목록에 있는 mysql 데이터베이스를 선택함
use mysql;
// mysql 데이테베이스에 존재하는 테이블 목록이 출력됨
show tables;

// mysql.db 테이블의 구조가 출력됨
desc db;

// MySQL을 종료함
exit
// 또는
\q
SQL 명령어 의미
CREATE 새로운 데이터베이스를 생성
DROP 생성되어 있는 데이터베이스를 삭제
USE 데이터베이스 목록에서 특정 데이터베이스를 선
// 새로운 데이터베이스 생성 명령문
CREATE DATABASE 데이터베이스이름;
// 데이터베이스 목록에서 특정 데이터베이스를 삭제
DROP DATABASE 데이터베이스이름;
SQL 명령어 의미
CREATE 새로운 테이블을 생성
DESC(DESCRIBE) 테이블의 구조 확인
ALTER 테이블의 구조 변경
RENAME 테이블의 이름 변경
DROP  테이블 삭제

// 새로운 테이블(member_tbl) 생성하기
CREATE TABLE member_tbl(
sno int,
name varchar(14),
address varchar(20),
PRIMARY KEY(sno)
);

// member_tbl의 (name 필드명 다음에) age 정수형 필드명을 추가하기
ALTER TABLE member_tbl ADD age int AFTER name;

// member_tbl에 존재하는 age 필드명을 삭제
ALTER TABLE member_tbl DROP age;

// 테이블의 이름 “member_tbl”을 “student_tbl”로 변경
ALTER TABLE member_tble RENAME student_tbl;
// student_tbl 테이블의 address 필드명을 dept 필드명으로 수정
ALTER TABLE student_tbl CHANGE address dept varchar(20);
// SQL 쿼리문에서 기존 테이블을 삭제
DROP TABLE student_tbl;

SQL 명령어 의미
INSERT 데이터를 레코드 단위로 삽입
SELECT 테이블에 존재하는 레코드 검색
UPDATE 테이블에 존재하는 레코드 수정
DELETE 테이블에 존재하는 레코드 삭제
// 레코드 등록
INSERT INTO student_tbl(sno, name, address) VALUES(203312345, ‘김태린’, ‘광고홍보학과');
// student_tbl에 등록된 전체 필드의 데이터를 조회
SELECT * FROM student_tbl;

// student_tbl 테이블에서 name 필드만 조회
SELECT name FROM student_tbl;

// student_tbl 테이블에서 sno 필드가 ‘203943218’ 인 학과와 이름을 조회
SELECT dept, name FROM student_tbl
WHERE sno = '203943218';

//student_tbl 테이블에서 ‘김’씨 성을 가진 데이터만 조회
SELECT sno, name, dept FROM student_tbl
WHERE name LIKE '김%';

// 오름차순 정렬
SELECT sno, name, dept FROM student_tbl
order by age;

// 내림차순 정렬
SELECT sno, name, dept FROM student_tbl
order by age desc;
// student_tbl 테이블에 등록된 데이터 중 ‘최고봉’의 dept를 ‘빅데이터분석학과’로 수정
UPDATE student_tbl SET dept = '빅데이터분석학과'
WHERE name = '최고봉';
// student_tbl 테이블에 존재하는 ‘최고봉’ 레코드를 삭제
DELETE FROM student_tbl
WHERE name = '최고봉';

// 기존 테이블에 존재하는 모든 레코드를 한꺼번에 삭제
DELETE FROM student_tbl;

 

728x90

'뒤끝 (Back-End)' 카테고리의 다른 글

[JSP] 세션  (0) 2024.12.05
[JSP] JDBC  (0) 2024.12.04
[JSP] 액션 태그  (0) 2024.10.18
[JSP] request 내장 객체  (5) 2024.10.16
[JSP] 폼 태그  (3) 2024.10.14