- DateBase (데이터 베이스)

Data는 자료를 의미하고, DataBase는 저장소, 즉 데이터를 통합하여 관리하는 집합체를 의미한다.

 

 

-DBMS (Data Base Management System, 데이터 베이스 관리 시스템)

데이터 베이스를 관리해주는 소프트웨어이다.

 

 

✔️ DBMS를 사용하는 이유

  1. 중복된 데이터를 제거할 수 있다.
  2. 효율적인 데이터 처리가 가능하다.
  3. 자료를 구조화시킬 수 있다.
  4. 다양한 프로그램을 사용하는 사용자들과 데이터를 공유할 수 있다.
  5. 서버에 설치하는 소프트웨어 프로그램이다.

 

 

- MySQL 다운로드하기

1) https://www.mysql.com/downloads/이동
2) MySQL Community (GPL) Downloads » 이동
3) MySQL Community Server 이동
4) Windows(x86, 64-bit), MySQL Installer MSI로 이동
5) Windows(x86, 32-bit), MySQL MSI Installer 431.7M Downdload
6) No thanks, just start my download 선택

 

MySQL :: MySQL Downloads

MySQL Cluster CGE MySQL Cluster is a real-time open source transactional database designed for fast, always-on access to data under high throughput conditions. MySQL Cluster MySQL Cluster Manager Plus, everything in MySQL Enterprise Edition Learn More » C

www.mysql.com

 

 

- MySQL

관계형 데이터 베이스 관리 프로그램이다.

SQL 문법을 사용한다.

행(row, record)과 열(field, column, attribute)

 

 

- SQL (Structured Query Language)

데이터 베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어이다.

대소문자를 구별하지 않는다.

문자열을 저장할 때 ' ' (싱글쿼트)만 사용한다.

 

** MySQL 은 포트번호가 3306이다.

 


- 데이터 베이스 생성하기

CREATE database 데이터 베이스명;

 

 

- 데이터 베이스 삭제

DROP database 데이터베이스명;

 

 

- 데이터 베이스 확인

SHOW databases;

 

 

- 데이터 베이스 선택

use 데이터베이스명

계정을 새로 연결해서 들어가면 무조건 한 번은 써줘야지 사용이 가능하다.

 


- 테이블 (Table)

데이터를 행과 열로 스키마에 따라 저장할 수 있는 구조를 의미한다.

 

✔️ 스키마 : 데이터 베이스의 구조와 제약조건에 관한 명세를 기술한 집합의 의미를 말한다.

 

 

- 테이블 생성

CREATE TABLE 테이블명 (
	필드명1 타입 제약조건,  -- 예) no int not null,
    필드명2 타입 제약조건,
    ...
    필드명n 타입 제약조건
)

 

 

- 테이블 확인

desc 테이블명

 

 

- 테이블 삭제

DROP TABLE 테이블명

 

 

- 테이블 필드 추가, 수정, 삭제

// 추가
ALTER TABLE 테이블명 ADD 컬럼명 데이터타입 제약조건

// 수정
ALTER TABLE 테이블명 MODIFY 컬럼명 타입 제약조건

// 삭제
ALTER TABLE 테이블명 DROP 컬럼명

- 데이터 타입

1) 숫자 타입

    정수 : tinyint, smallint, mediumint, int, bigint, ...

    실수 : float, double

 

2) 문자열 타입

    텍스트 :  char, varchar(65535byte까지), text

    바이너리 : binary, varbinary

    열거형 : enum   -- 예) enum('남자', '여자')

 

✔️ varchar을 쓰는 이유

varchar(20), char(20)은 둘 다 20바이트를 쓰지만, varchar의 경우 가변형이기 때문에 20바이트 이하를 쓰게 되면 20바이트 이하의 수만큼 사용하게 된다. 그렇지만 char의 경우 20바이트 이하를 넣어도 20바이트를 모두 소모시킨다.

 

 

3) 날짜와 시간 타입 (날짜 연산을 위해 존재)

    날짜 : date

    날짜와 시간 : datetime, timestamp(1970년 1월 1일 0시 0분 0초 ~) ms

 


- 제약조건

데이터의 무결성을 지키기 위해 데이터를 입력받을 때, 실행하는 검사 규칙이다.

 

1) NOT NULL : 필드에 NULL 값을 저장 불가능

 

2) UNIQUE : 중복된 값을 저장 불가능

                       NULL 값은 저장 가능

 

3) DEFAULT : 기본값을 설정할 수 있다. 

 

4) AUTO_INCREMENT 

자동으로 숫자가 증가되어 추가된다.

중복 값이 저장되지 않는다.

직접 데이터를 추가할 수 없다.

AUTO_INCREMENT를 사용한 필드 (컬럼)는 PRIMARY KEY로 지정해주어야 한다. ( 아니면 오류남!)

 

5) PRIMARY KEY

UNIQUE 제약과 NOT NULL 제약을 동시에 적용한다.

테이블에 오직 하나의 필드(컬럼)에만 적용이 가능하다.

데이터를 쉽고 빠르게 검색할 수 있도록 설정할 수 있다. (색인)

외래 키가 참조할 수 있도록 설정할 수 있다.

 

6) FOREIGN KEY

다른 테이블과 연결해주는 역할을 한다.

기준이 되는 테이블의 내용을 참조해서 레코드(로우)를 입력한다. 

PRIMARY KEY를 참조한다.

 

 

- 데이터 삽입

INSERT INTO 테이블명 VALUSE (값1, 값2, 값3, ...)  -- auto increment 있을 경우는 사용불가능

INSERT INTO 테이블명 (필드명1, 필드명2, ...)  VALUSE (값1, 값2, ...)

 


데이터 베이스 만들기!

CREATE database devWork;

use devWork;

위 코드의 결과

한 줄씩 ctrl + enter 해주면 실행된다.

 


테이블 만들고, 테이블 수정, 데이터 삽입해보기!

 

테이블 만들기

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 tb_member;

위 코드의 결과

 

테이블에 필드 추가, 수정

# point 추가
ALTER TABLE tb_member ADD mem_point int default 0;

# point 데이터 타입 변경
ALTER TABLE tb_member modify mem_point double default 0;

위 코드의 결과

mem_point가 추가되고, 타입이 double인 것을 확인할 수 있다.

 

 

테이블 데이터 추가하기!

# 예시로 5명의 회원 삽입하기
INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, mem_ssn1, mem_ssn2, 
mem_zipcode, mem_address1, mem_address2, mem_address3, mem_point) VALUES ('apple', '1111','김사과','010-1111-1111', 'apple@apple.com',
'코딩', '990101', '1234567', '12345', '서울시', '서초구', '양재동',100);

/*INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, mem_ssn1, mem_ssn2, 
mem_zipcode, mem_address1, mem_address2, mem_address3, mem_point) VALUES ('banana', '2222','반하나','010-2222-2222', 'banana@banana.com',
'책읽기', '990101', '1234567', '12345', '서울시', '서초구', '양재동');*/

INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, mem_ssn1, mem_ssn2, 
mem_zipcode, mem_address1, mem_address2, mem_address3, mem_point) VALUES ('banana', '2222','반하나','010-2222-2222', 'banana@banana.com',
'책읽기', '990101', '1234567', '12345', '서울시', '서초구', '양재동');


INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, mem_ssn1, mem_ssn2, 
mem_zipcode, mem_address1, mem_address2, mem_address3, mem_point) VALUES ('melon', '3333','이메론','010-3333-3333', 'melon@melon.com',
'영화보기', '990101', '1234567', '12345', '서울시', '서초구', '양재동',10);

INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, mem_ssn1, mem_ssn2, 
mem_zipcode, mem_address1, mem_address2, mem_address3, mem_point) VALUES ('cherry', '4444','채애리','010-4444-4444', 'cherry@cherry.com',
'꽃꽂이', '990101', '1234567', '12345', '서울시', '서초구', '양재동',200);

INSERT INTO tb_member (mem_userid, mem_userpw, mem_name, mem_hp, mem_email, mem_hobby, mem_ssn1, mem_ssn2, 
mem_zipcode, mem_address1, mem_address2, mem_address3, mem_point) VALUES ('berry', '5555','배애리','010-5555-5555', 'berry@berry.com',
'음악듣기', '990101', '1234567', '12345', '서울시', '서초구', '양재동', 300);

반하나_오류!

 

두 번째 반하나 씨의 주석으로 처리된 부분은 mem_point 컬럼을 써주고, 값을 넘기지 않아서 사진처럼 오류가 뜬다..!

이 경우에는 컬럼명을 빼주거나 값을 0이라도 넣어주면 된다.

 

값이 제대로 들어갔는지 확인은 output에서도 확인 가능하지만, 테이블 형태로 보기 위해서는 Workbench 왼쪽 상단에 navigator에서 Schemas를 선택한다. 사용하는 데이터베이스의 tables에서 tb_member에 우클릭을 해주면 Select Rows를 클릭해주면 아래 사진처럼 확인할 수 있다!

 

 

insert 구문에서 따로 컬럼명을 지정해주지 않은 mem_idx와 mem_regdate는 자동으로 insert가 될 때 값이 들어간다.

 

원래 SQL은 ; (세미콜론)을 붙이지 않아도 되지만, 다음 문장이 있을 경우에는 ; 을 붙여줘야 한다.

'국비 > DBMS' 카테고리의 다른 글

DAY 02 : CRUD, 연산자, 집계 함수, join, view  (0) 2022.10.21
복사했습니다!