back-end/DB

4. Table

림가이드 2023. 3. 30. 19:17

: 데이터는 관계형 DB의 기본단위인 테이블 형태로 저장된다.

 

- 열 : field, attribute, column

ex) 이름, 주민등록번호, 전화번호, 나이 등...

- 행 : tuple, record, row

ex) 홍길동, 940929-1*****, 010-9999-9999, 30

 

- 데이터 자료형 : 숫자, 문자열, boolean, 날짜/시간, 큰 객체

1) 숫자 : INT, FLOAT, DOUBLE

2) 문자열 : CHAR(고정), VARCHAR(가변)

3) boolean : BIT

4) 날짜 : DATE, TIME, DATETIME, YEAR, TIMESTAMP

5) 큰 객체 : TEXT

 

 

- CRUD : 컴퓨터 소웨가 가지는 기본적 데이터 처리 기능

1. create -> insert

== put/post (http를 통한 API에서 사용하는)

2. read -> select

== get

3. update

== put/patch

4. delete

== delete

 


< 생성 >

 

ex)

create table member (
    name varchar(20),
    email varchar(100),
    phone varchar(12),
    pw varchar(50),
    marketAgree bit
);

result

 

 

- 테이블이 어떻게 구성되어 있는가?

desc member;

결과


< 데이터 추가 >

: insert into 테이블명(속성들) values(값들);

insert into member
(name, email, phone, pw, marketAgree, register_date)
values ('김땡땡', 'kim@naver.com', '01011111111', 'passwordKim', true, now());

- 결과

select * from member;

※ alias == 별명

- 테이블, 컬럼에 대한 별명? : as를 이용하여

select m.name from member as m;

 

♥ in java

→ select : 반환값 - 1~N의 행

→ insert : 반환값 - 명령어를 통해서 수행한 결과의 레코드 수

 

 

 

  데이터 중복될 수 있지 않는가? 즉, 회원가입을 여러번 시도하면 계속 성공하지 않을까? 그러면 안된다! 

how? : PK(primary key)

- PK : 주 식별자키로 테이블의 모든 데이터를 식별하는 컬럼 (ex. 주민등록번호, 학번, 이메일 등)

→ 중복 불가능, NULL 불가능

- FK(foreign key) : 외부 식별자키로 테이블 간의 종속 관계

     → 회원가입을 완료하면 이메일은 모든 사용자(member)들 중 유일하기 때문에 식별자(PK). 이 사용자가 어떤 제품이 마음에 들어 구입하였다. 그렇다면 이 제품을 구입(buy)한 사람들의 목록에서 사용자의 PK인 이메일로 각 구매자를 식별할 수 있다. 즉, buy 테이블에서 member 테이블의 이메일을 FK로 설정한 것이다. 

 

1. 이미 생성된 테이블에서 특정 속성을 PK로 만들기

alter table member
add constraint primary key pk_member (email);

PK : email

2. PK 설정 삭제

alter table member drop primary key ;

< 데이터 수정 >

: update 테이블명 set 컬럼1=값1, 컬럼2=값2 ... where 조건;

update member set name='박땡땡' where email='kim@naver.com';

♥ in java

→ update : 반환값 - 명령어를 통해서 수행한 결과의 레코드 수


< 데이터 삭제 >

: delete from 테이블명 where 조건;

delete from member where email='kim@naver.com';

result

♥ in java

→ delete : 반환값 - 명령어를 통해서 수행한 결과의 레코드 수