select user from user; <- 사용자 조회
create user ho@localhost identified by '1111' <- ho 라는 사용자 생성, 비밀번호는 1111(반드시 작은 따옴표로)
grant all privileges on DB이름.*이나 테이블이름.* to ho@localhost with grant option;
특정 스키마나 테이블에서 사용자 ho에 모든 권한을 주기
루트가 아닌 사용자가 db를 생성하고 싶을대는 먼저 해당 db이름을 생성할 권한을 주고 db를 생성
grant all privileges on 디비이름.* to 사용자이름@localhost with grant option;
grant all privileges on exdb* to ho@localhost with grant option 이렇게 권한을 줘서
create database exdb;로 exdb를 생성했다
• 자주 쓰는 데이터 타입
1. 숫자 : int
2. 문자 : char(20), varchar(45)
3. 문자열 : text
4. boolean : enum
5. 날짜 : datetime
•제약조건
1. primary key
2. NN
3. unique(중복x)
4. default
5. check
6. foreign key ( ) references 릴레이션(어트리뷰트)
on updatate cascade
on delete cascade
7. auto_increment(1,1) <- 1부터 1씩 자동으로 증가
! 참조하는 키가 있는 테이블은 당연히 참조할 키가 있는 테이블이 있어야 만들 수 있다
위에 제약조건, 데이터 타입을 이용해서 exdb 스키마에 member 테이블과 guestbook 테이블을 만들어서 실습을 해 보자
• 멤버 테이블 생성
create table member(
id varchar(20) primary key,
pwd varchar(20) not null,
name char(20) not null,
gender char(10) check(gender in ('male','female')),
age int check(age >= 19),
phone char(20) not null unique,
regdate datetime
);
• 테이블에 값 넣어주기 - insert 구문
insert into values 구문으로 넣어주기
insert into member values('ho','1111','chanho','male',25,'010-7674-0750',sysdate()); <- 전체 어트리뷰트를 한방에 넣으면 어느 어트리뷰트에 넣을지 표기하지 않아도 된다
도메인 무결성 제약조건 - insert into member values('hong','1111','chanho','lady',25,'010-7675-0750',sysdate());
'lady'는 체크에 걸린다
체크 제약조건 - 나이를 19 이하나 성별을 male, female 이외의 것을 사용하면 체크 제약조건에 걸린다
• 외부키를 이용하는 실습을 하기 위해서 다른 guestbook 테이블을 생성해서 외부키를 연결해보자
create table guestbook(
num int auto_increment primary key,
id varchar(20),
title char(50) default 'no_title',
content text,
writeday datetime,
foreign key(id) references member(id)
on update cascade on delete cascade
);
위의 create로 guestbook테이블을 만들때 foreign key(id) references member(id) <- member 테이블의 id를 가져와서 외부키로 참조했다, 하지만 이렇게만 하면 cascade 옵션이 없어서 빈 깡통같은 상태다.
foreign key(id) references member(id) on update cascade on delete cascade<- member 테이블의 id가 변경되거나 삭제되면 외부키인 guestbook 테이블의 id도 변경되거나 삭제된다
update member set id = 'hoshi' where id = 'ho'; <- 멤버 테이블의 이름이 'ho'인 id를 'hoshi'로 변경했다
guest 테이블을 조회하면 외부키로 연결해둔 id도 hoshi로 변경되었다!
delete from member where id = 'hoshi'; <- member 테이블에서 id가 'hoshi'인 튜플이 삭제되었고
id가 외부키인 테이블 guestbook에서도 id가 'hoshi'인 튜플이 삭제되었다
• 쿼리문 export
@데이터 정의어
생성 - create
변경 - alter(추가, 변경)
삭제 - drop