728x90
반응형
alter:테이블의 구조를 변경할 때( 컬럼이름 변경, 타입변경, 컬럼삭제, 제약조건 추가 등)
create table student(
id bigint,
s_name varchar(20),
s_mobile int
);
-- 테이블의 구조 확인
desc student;
desc book;
-- 기존 컬럼에 제약조건 추가
alter table student add constraint primary key(id);
-- 기존 컬럼에 타입 변경
alter table student modify s_mobile varchar(30);
-- 컬럼 이름 변경
alter table student change s_mobile s_phone varchar(30);
-- 컬럼 삭제
alter table student drop s_major;
ERD(Entity Relationship Diagram, 개체 관계 모델)
- 테이블 간의 관계를 그림으로 표현한 것
- 설계 단계 에서 작성하며 누구나 ERD를 보고 테이블 생성 쿼리를 작성할 수 있음
- 테이블 간 의 관계
- 1:1 관계 (일대일)
- 1:N 관계 (일대다)
- N:1 관계 (다대일)
- N:M 관계 (다대다): N:1 , 1:M 으로 분리
- 식별 비식별 관계
- 식별관계
- 실선으로 표현
- 부모테이블의 pk 컬럼을 자식도 pk 컬럼으로 사용하는 관계
- 비식별 관계
- 대시선으로 표현
- 부모테이블의 pk컬럼을 자식 테이블에서 별도의 참조 칼럼으로 사용하는 관계
- 식별관계
지난 시간에 만들었던 도서관리를 ERD로 만들어보면
테이블들이 어떤 것을 참조하는지 볼 수 있게 된다
<예제 1>
이 ERD를 보고 쿼리문을 작성해 보자
drop table if exists member_table;
create table member_table(
id bigint auto_increment primary key,
member_email varchar(30) not null unique,
member_name varchar(20) not null,
member_password varchar(20) not null
);
drop table if exists category_table;
create table category_table(
id bigint auto_increment primary key,
category_name varchar(20) not null unique
);
drop table if exists board_table;
create table board_table(
id bigint auto_increment primary key,
board_title varchar(50) not null,
board_writer varchar(30) not null,
board_contents varchar(500),
board_hits int default 0,
board_created_at datetime default now(),
board_updated_at datetime on update now(),
board_file_attached int default 0, -- 파일 첨부 여부(없으면 0, 있으면 1)
member_id bigint,
category_id bigint,
constraint fk_board foreign key(member_id) references member_table(id) on delete cascade,
constraint fk_board_category foreign key(category_id)
references category_table(id) on delete set null
);
drop table if exists board_file_table;
create table board_file_table(
id bigint auto_increment primary key,
orginal_file_name varchar(100), -- 사용자가 업로드한 파일의 이름
stored_file_name varchar(100), -- 관리용 파일 이름(파일이름 생성 로직은 backend에서)
-- 증명사진.jpg 91845798217498237-증명사진.jpg
board_id bigint,
constraint fk_board_file foreign key(board_id) references board_table(id) on delete cascade
);
drop table if exists comment_table;
create table comment_table(
id bigint auto_increment primary key,
comment_writer varchar(30) not null,
comment_contents varchar(200) not null,
comment_created_at datetime default now(),
board_id bigint,
member_id bigint,
constraint fk_comment_board foreign key(board_id) references board_table(id) on delete cascade,
constraint fk_comment_member foreign key(member_id) references member_table(id) on delete cascade
);
drop table if exists good_table;
create table good_table(
id bigint auto_increment primary key,
comment_id bigint,
member_id bigint,
constraint fk_good_comment foreign key(comment_id) references comment_table(id) on delete cascade,
constraint fk_good_member foreign key(member_id) references member_table(id) on delete cascade
);
-회원 기능-
-- 회원 기능
-- 1. 회원가입(임의의 회원3명 가입)
drop table if exists member_join_table;
create table member_join_table(
id bigint auto_increment primary key,
member_email varchar(50) not null unique,
member_password varchar(30) not null,
member_name varchar(20)
);
insert into member_join_table (member_email , member_password , member_name) values ('aa@aa.com' , '1234' , 'aa');
insert into member_join_table (member_email , member_password , member_name) values ('bb@bb.com' , '1234' , 'bb');
insert into member_join_table (member_email , member_password , member_name) values ('cc@cc.com' , '1234' , 'cc');
-- 2. 이메일 중복체크
select member_email from member_join_table where member_email='aa@aa.com';
-- 3. 로그인
select * from member_join_table where member_email = 'aa@aa.com' and member_password = '1234';
-- 4. 전체 회원 목록 조회
select * from member_join_table;
-- 5. 특정 회원만 조회
select * from member_join_table where member_email = 'aa@aa.com';
select * from member_join_table where id = 1;
-- 6. 내정보 수정하기(6.1, 6.2에 해당하는 쿼리문작성)
-- 6.1 회원정보 수정화면 요청(회원정보 수정 페이지를 보여준다고 가정했을 때 필요한 쿼리)
select * from member_join_table where id = 1;
-- 6.2 회원정보 수정 처리(비밀번호를 변경한다는 상황)
update member_join_table set member_password = '0000' where id= 1;
-- 7. 회원 삭제 또는 탈퇴
delete from member_join_table where id =3;
728x90
반응형
'개발일지' 카테고리의 다른 글
db 마무리 ,Frontend 시작 (1) | 2024.01.09 |
---|---|
개발일지 -db 응용- (2) | 2024.01.08 |
개발일지 -참조관계 , 수정쿼리- (1) | 2024.01.05 |
개발일지 그룹화, 조건 적용 ,join, sub qurey, 제약 조건 (1) | 2024.01.03 |
MySQL (1) | 2024.01.02 |