휴먼교육센터 개발자과정 4일차

조하영·2022년 8월 1일
0

개인 연습

테이블의 컬럼명을 변경하는 두가지 방법
1. rename column
alter table 테이블명 rename column 기존명칭 to 바꿀명칭
예) alter table member5 rename column pw to pwd;

2. change
alter table 테이블명 change 기본명칭 바꿀명칭 데이터타입 제약조건;
예) alter table member5 change pwd pw varchar(4) not null default '0000';

튜플(레이블)중 사이의 값을 조회하고 싶을 때(이상과 이하임)
1.between
select from 테이블명 where 컬럼명 between 조건 and 조건;
예) member5라는 테이블의 cnt 컬럼 값 중 10이상 25이하의 모든 값을 조회
select
from member5 where cnt between 10 and 25;

2. 각 조건을 and 연산자로 지정
select from 테이블명 where 컬럼명 >= 조건 and 컬럼명<= 조건;
예) select
from member3 where cnt >=10 and cnt<=25;

수업 내용

복습

테이블관리: 테이블의 생성(create), 삭제(drop), 수정(alter-add,modify,change,drop(table, column),rename(table, column))
*튜플을 관리하기 위한 구조 정의

튜플(레이블, 자료)관리: C(insert), R(select), U(update), D(delete)
*표현할 데이터

자동숫자증가옵션 - Mysql:auto_increment, Oracle:sequence
예)alter table member5 modify no int auto_increment primary key;

select절

1.select -검색할 컬럼
2.from -대상 테이블
3.[where] -튜플의 조건
4.[group by] -그룹기준
5.[order by] -정렬기준
[ ]는 없어도 되는 절
실행순서 2->3->4->5->1

문제

1.개나리라는 단어가 들어간 내용의 모든 글 삭제
delete from member5 where text like '%개나리%';

2.개나리가 들어간 내용을 사랑해로 바꿔라.(문자 치환:replace함수)
update 테이블명 set 컬럼명 = replace(컬럼명,변경대상,변경할값);
예)update member5 set text = replace(text,'개나리','사랑해');

단순히 화면출력만 하려면 select 문에도 사용가능

select replace(컬럼,변경대상,변경할값) from 테이블명;
예)select replace(text,'개나리','사랑해') from member5;

Key

기본키(primary key)
외래키(foreign key)

부모릴레이션(테이블)과 자식릴레이션(테이블)을 구분해야 한다.
부모릴레이션은 자식으로부터 삭제와 수정 동작에서 참조를 당한다.
자식릴레이션은 수정과 삽입 동작에서 부모릴레이션의 데이터를 참조한다.(외래키를 통해 참조)
외래키가 참조하는 속성은 반드시 유니크(중복없음)해야 한다. (유니크 속성, 기본키 지정)

실습

member 테이블 생성
create table member(
-> id varchar(4) primary key,
-> name varchar(10),
-> addr varchar(10),
-> tel varchar(10)
-> );

car 테이블 생성
create table car(
-> no int primary key auto_increment,
-> carNum varchar(4) not null,
-> carInfo varchar(10),
-> carUser varchar(4),
-> foreign key(carUser)
-> references member(id)
-> );

member 테이블 튜플 삽입
insert into member values('0000','홍길동','정자동','3445-2223');
insert into member values('0001','고길동','화서동','3322-1445');
insert into member values('0002','둘리','고등동','2335-1004');

+------+-----------+-----------+-----------+
| id | name | addr | tel |
+------+-----------+-----------+-----------+
| 0000 | 홍길동 | 정자동 | 3445-2223 |
| 0001 | 고길동 | 화서동 | 3322-1445 |
| 0002 | 둘리 | 고등동 | 2335-1004 |
+------+-----------+-----------+-----------+

car 테이블 튜플 삽입
insert into car values(default,'1233','소나타','0000');
insert into car values(default,'4553','k3','0000');
insert into car values(default,'5536','k3','0002');

+----+--------+-----------+---------+
| no | carNum | carInfo | carUser |
+----+--------+-----------+---------+
| 1 | 1233 | 소나타 | 0000 |
| 2 | 4553 | k3 | 0000 |
| 3 | 5536 | k3 | 0002 |
+----+--------+-----------+---------+

오류 발생시키는 문제 만들어보기

자식테이블의 insert 오류
1. car 테이블에 차량번호는 5222 차종은 k5 caruser는 0004 인 튜플을 삽입(insert)하시오.
insert into car values(default,'5222','k5','0004');
에러발생: 참조하는 부모 테이블(member)의 id에 0004 없음.

자식테이블의 update 오류
2. car 테이블에 caruser 0002를 0005로 수정(update)하시오.
update car set carUser='0005' where carUser='0002';
에러발생: 참조하는 부모 테이블(member)에 수정하고자 하는 0005라는 id가 없음.

부모테이블의 update 오류
3. member 테이블에 id가 0000인 회원의 id를 0005으로 수정(update)하시오.
update member set id='0005' where id='0000';
에러발생: 참조당하는 자녀 테이블(car)에 id가 0000인 데이터 남아있음.

부모테이블의 delete 오류
4. member 테이블에 id가 0000인 데이터를 삭제(delete)하시오.
delete from member where id='0000';
에러발생: 참조당하는 자녀 테이블(car)에 id가 0000인 데이터 남아있음.

profile
공부하는 개발자

0개의 댓글