데이터베이스 : 데이터의 집합
DBMS(Database Management System) : 데이터베이스를 관리하고 운영하는 소프트웨어
대표적인 프로그램 : MySQL, 오라클(Oracle), SQL 서버, MariaDB 등
테이블(table)이라는 최소 단위로 구성, 이 테이블은 하나 이상의 열(column)과 행(row)으로 이루어져 있고, 모든 데이터가 테이블에 저장됨
테이블(table)은 클래스, 행(row, Record)는 인스턴스, 열(column, Field)은 속성
- 명령프롬프트 실행
- mysql -u root -p // 설정한 비밀번호 입력
- use mysql;
- select host, user from user;
- create user 'jv250'@localhost identified by 'jv250'; // jv250 호스트 생성
- select host, user from user; // 생성 확인
- create database jv250 default character set utf8; // jv250 생성
- show databases; // 생성 확인
- grant all privileges on jv250.* to 'jv250'@localhost with grant option; // 사용자 권한 설정
- flush privileges; // 변경 내용 적용
- 이클립스 / 프로젝트 pom.xml 선택 -> name 밑에 하단 태그 생성
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.29</version> </dependency> </dependencies>
- windows / Show View / Data Source Explorer -> Database Connections 오른쪽 클릭 New
- MySQL 선택 후, 이름 변경 후 NEXT -> 이클립스 드라이버 가장 최신 선택 -> 기존 JAR 파일을
C:\Users\Administrator\.m2\repository\mysql\mysql-connector-java\8.0.29
의 JAR 파일로 변경- General 설정을 전부 jv250으로 변경(위에 설정한 대로)
- src/main/resources 오른쪽 클릭 -> New SQL File -> File name: jv250
- 작성 내용 드래그해서 Alt + X 로 실행 가능
DQL(Data query Language)
SELECT
DML(Data Manipulation Language)
INSERT
UPDATE
DELETE
DDL(Data Definition Language)
CREATE
ALTER
DROP
TRUNCATE
RENAME
DCL(Data Control Language)
GRANT 권한부여
REVOKE 권한해제
TCL(Transaction Control Language)
COMMIT
ROLLBACK
Java의 Long
타입은 MySQL에서는 BIGINT
PRIMARY KEY
로 고유 아이디값 설정, AUTO_INCREMENT
로 자동으로 늘어남
정보를 변경할 때는, UPDATE
사용, 반드시 WHERE
을 사용해서 대상 지정 (없으면 전부 변경됨)
UPDATE 테이블 SET ID=바꿀 값 WHERE ID=조건 값;
정보를 삭제할 때는, DELETE
사용, 똑같이 WHERE
필수
DELETE FROM 테이블 WHERE ID=삭제할 값;
테이블을 삭제할 때는, DROP
사용
DROP TABLE 테이블;
CREATE TABLE Customer (
cid BIGINT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
ssn VARCHAR(14) NOT NULL,
phone VARCHAR(14) NOT NULL,
customerId VARCHAR(16) NOT NULL,
passwd VARCHAR(16) NOT NULL,
regDate TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) AUTO_INCREMENT = 1001;
SELECT * FROM Customer;
INSERT INTO Customer (name, ssn, phone, customerId, passwd) VALUES ('유비', '970115-1234567', '010-4444-4444', 'asdf1234', 'qwer1234');
INSERT INTO Customer (name, ssn, phone, customerId, passwd) VALUES ('관우', '961025-7894561', '010-1234-5678', 'zxcv4567', 'tbgb1234');
INSERT INTO Customer (name, ssn, phone, customerId, passwd) VALUES ('장비', '960105-4561237', '010-9101-1213', 'vbnm1538', 'yjtrher1');