1. DataBase(데이터베이스)
-Data: 자료
-DataBase: 저장소, 데이터를 통합하여 관리하는 집합체
-DBMS(Database Management System, 데이터베이스 관리 시스템)
데이터베이스를 관리해주는 소프트웨어
✔DBMS를 사용하는 이유
- 중복된 데이터를 제거
- 효율적인 데이터를 처리
- 자료를 구조화시킬 수 있음
- 다양한 프로그램을 사용하는 사용자들과 데이터를 공유
MySQL 다운로드
1. https://www.mysql.com/downloads/ 로 이동
2. MySQL Community (GPL) Downloads 로 이동
3. MySQL Community Server 로 이동
4. Windows (x86, 64bit), MySQL Installer MSI로 이동
5. Windows (x86, 32-bit), MSI Installer 431.7M Download
6. No thanks, just start my download. 선택
정보를 요청
Client --------------------> Server
<--------------------
정보를 제공
MySQL port = 3306
관계형 데이터베이스
- DataBase -> Table(엑셀과 비슷)
행(로우,레코드), 열(필드,컬럼,어트리뷰트)
- SQL 문법을 사용
SQL(Structured Query Language)
- 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어
- 대소문자를 구별하지 않음
- 문자열을 저장할때 ' '(싱글 쿼트)만 사용 (* 다른 언어에서 String으로 묶을때 " "로 쓰기 때문에)
select *from tb_member where userid='apple';
자바 -> MySQL
String sql = "select *from tb_member where userid='apple'";
# 한줄 주석문
-- 한줄 주석문
/*
여러 줄 주석문
...
*/
/*
C - create, insert
R - select
U - update
D - delete
*/
# 데이터베이스 확인
show databases;
# 데이터베이스 생성
# create database 데이터베이스명;
create database aidev;
# 데이터베이스 삭제
# drop database 데이터베이스명;
drop database aidev;
# 테이블(table)
# 데이터를 행과 열로 스키마에 따라 저장할 수 있는 구조
# 스키마: 데이터베이스의 구조와 제약조건에 관한 명세를 기술한 집합의 의미
/*
create table 테이블명 (
필드명1 타입 제약조건, -- 예) no int not null // not null = 데이터의 공백 x
필드명2 타입 제약조건,
...
필드명n 타입 제약조건
)
*/
/*
데이터 타입
1. 숫자 타입
- 정수: tinyint, smallint, meduimint, int, bigint ...
- 실수: float, double
2. 문자열 타입
- 텍스트: char, varchar(65535byte까지 저장), text
char(10) -> 1byte만 저장하더라도 총 10byte를 소모
varchar(10) -> 1byte를 저장하면 총 1byte만 사용
- 바이너리: binary, varbinary
- 열거: enum
enum('남자','여자')
3. 날짜와 시간타입
-날짜: data
날짜와 시간타입: datetime, timestamp(1970년 1월1일 0시0분0초 ~) ㅡms
*/
/*
제약조건
데이터의 무결성을 지키기 위한 데이터를 입력받을 때 실행하는 검사 규칙
-NOT NULL
필드에 NULL을 저장할 수 없음
-UNIQUE
중복된 값을 저장할 수 없음
NULL은 저장할 수 있음
-DEFAULT
기본값을 설정(NULL을 저장할 때 기본값을 설정)
- AUTO_INCREMENT
자동으로 숫자가 증가되어 추가
중복값이 저장되지 않음
직접 데이터를 추가할 수 없음
auto_increment를 사용한 필드는 primary key로 등록
no int auto_increment
-PRIMARY KEY
UNIQUE제약과 NOT NULL제약을 동시에 적용
테이블에 오직 하나의 필드에만 적용
데이터를 쉽고 빠르게 검색할 수 있도록 설정(색인)
외래키가 참조할 수 있도록 설정
-FOREIGN KEY
다른 테이블과 연결해주는 역할
기준이 되는 테이블의 내용을 참조해서 레코드를 입력
PRIMARY KEY를 참조
*/
# 데이터베이스 선택
# use 데이터베이스명
use aidev;
# 테이블 만들기
create table tb_member(
mem_idx int auto_increment primary key,
mem_userid varchar(20) unique not null,
mem_userpw varchar(20) not null,
mem_name varchar(20) not null,
mem_hp varchar(20) not null,
mem_email varchar(50) not null,
mem_hobby varchar(100),
mem_ssn1 varchar(6) not null,
mem_ssn2 varchar(7) not null,
mem_zipcode varchar (5),
mem_address1 varchar(100),
mem_address2 varchar(100),
mem_address3 varchar(100),
mem_regdate datetime default now()
);
# 테이블 확인
# desc 테이블명
desc tb_member;
# 테이블 삭제
# drop table 테이블명
drop table tb_member;
# 테이블 필드 추가
# alter table 테이블명 add 컬럼명 타입 제약조건
alter table tb_member add mem_point int default 0;
# 테이블 필드 수정
# alter table 테이블명 modify column 컬럼명 컬럼타입 제약조건
alter table tb_member modify column mem_point double default 0;
# 테이블 필드 삭제
# alter table 테이블명 drop 컬럼명;
alter table tb_member drop mem_point;
# 데이터 삽입
# insert into 테이블명 values (값1, 값2, 값3 ...)
# insert into 테이블명 (필드명1, 필드명2, 필드명3 ...) values (값1, 값2, 값3 ...)
insert into tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_ssn1, mem_ssn2)
values ('apple', 1111, '김사과', '010-1111-1111', 'apple@apple.com', 001011, 4068518);
insert into tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_ssn1, mem_ssn2)
values ('banana', 2222, '반하나', '010-2222-2222', 'banana@abanana.com', 990709, 4016842);
insert into tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_ssn1, mem_ssn2)
values ('orange', 3333, '오렌지', '010-3333-3333', 'orange@orange.com', 960211, 4358156);
insert into tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_ssn1, mem_ssn2)
values ('melon', 4444, '김멜론', '010-4444-4444', 'melon@melon.com', 930331, 4418752);
insert into tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_ssn1, mem_ssn2)
values ('pineapple', 5555, '김파인', '010-5555-5555', 'pineapple@pineapple.com', 001015, 4745255);
insert into tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_ssn1, mem_ssn2)
values ('watermelon', 6666, '김수박', '010-6666-6666', 'watermelon@watermelon.com', 000811, 1632586);
create table tb_test (
t_idx int,
t_name varchar(20),
t_age int,
t_hp varchar(20)
);
-- tb_member
insert into tb_test values (1,'김사과', 20, '010-1111-1111'); # tb_test에서 리스트 항목을 다 입력할 경우 사용
insert into tb_test (t_idx, t_name, t_age) values (2, '반하나', 23); # tb_test에서 원하는 목록만 추가할 경우 사용
insert into tb_test values (2,'반하나', 30, '010-2222-2222');
insert into tb_test (t_idx, t_name, t_age) values (4, '오렌지', 25);
select * from tb_member;