Programming/Web & DB

[Mysql]mysql 레코드 관련 명령어

Rexter 2019. 1. 1. 00:22
반응형

레코드, 즉 데이터를 입력하기 위한 명령어들에 대해 간단히 정리하도록 하겠습니다.

 

DB의 이름은 testdb 로 하였고, 테이블 mytable은 다음과 같은 필드 속성를 가지고 있습니다.

 

name CHAR(12) not null, id char(20) not null, password varchar(30) not null, primary key (id)

 

mysql 에 접속하기 위해 mysql -u root -p 를 명령 프롬프트에서 입력해 주세요.

그리고 비밀번호를 입력 하여 mysql에 접속해 주세요.

 

use 'testdb'를 입력해서 데이터베이스를 선택해 주면 됩니다.

그리고 create mytable (

name CHAR(12) not null,
id char(20) not null,
password varchar(30) not null,
primary key (id)
);

 

를 입력해서 테이블을 하나 만들어 주세요.

 

만들어진 테이블을 확인 하기 위해 show tables; 를 입력해서 제대로 만들어 졌는지 보신 후, desc mytable; 를 입력해서 필드도 제대로 생성되어 있는지 확인 하시면 됩니다.

 

이제 만들어진 테이블에 데이터 즉 레코드를 삽입하는 방법입니다.

 

insert into 명령어를 사용하시면 되는데요, 기본 형은

insert into 테이블명 (필드1, 필드2, 필드3, ...) values ('값1', '값2', '값3', ...);

와 같습니다.

primary key 값은 입력하지 않아야 합니다.

id 필드에 primary key 속성을 준 것은 레코드 중 id 값은 중복되지 않는 고유 값을 가지게 하기 위해서입니다.

 

우선 필드 명에는 해당 테이블에 사용되는 필드 전체를 입력하셔도 되고, 필드 속성이 not null 이 아닌 경우에는 입력을 하지 않고도 데이터 삽입이 가능합니다.

좀 더 자세히 말하자면,

name, id, password 이 세 가지의 필드는 not null 이 선언되어 있습니다.

레코드를 삽입할 때 위 세 필드는 값을 넣어야지만 명령어가 제대로 실행이 됩니다. 값을 넣지 않으면 실행이 되지 않습니다.

반드시 입력되어야 하는 값, 회원가입을 예로 들면 * 혹은 빨간색 등으로 필수 항목이라고 지정해 놓은 값이라고 생각하면 이해가 편하실 걸로 생각됩니다.

그리고 만약 not null이 선언되지 않은 필드라면 입력하지 않고 진행이 가능합니다.

즉 필수항목이 아닌 것을 입력하지 않아도 회원가입이 되는 것과 같다고 보시면 됩니다.

 

다시 돌아와서, 간단한 예를 들면

 

insert into mytable (name, id, password) value ('username', 'userid', 'mypassword')

 

라고 입력하게 되면 하나의 레코드가 생성됩니다.

 

이제 입력한 레코드가 제대로 삽입되어 있는지 확인해 봐야겠지요.

 

select * from mytable;

를 입력하시거나

select name, id, password from mytable;

를 입력하시면 됩니다.

 

 

* 은 from 다음에 오는 테이블의 전체 필드를 보겠다는 의미이고,

그 다음 명령어는 name, id, password 필드만 보겠다는 의미입니다.

하나의 필드만 입력해서 볼 수도 있고, 전부를 다 입력해서 볼 수도 있습니다.

이미 만들어 놓은 테이블에 필드를 추가 해야 될 일이 생길수도 있겠죠?

그럴 때는

alter 명령어를 사용하시면 됩니다.

기본형은

alter table 테이블명 add 필드명 변수형;

입니다. 테이블을 만들었을 때와 비슷하다고 보시면 됩니다. 필드명과 변수형은 예를 들면 name char(20) 이런 식이 됩니다.

 

기존 테이블에 age 라는 필드를 하나 더 추가하는 명령어를 예로 들어보겠습니다.

 

alter table mytable add age int;

 

를 입력하신 후, desc mytable; 를 입력하시면 새로 추가된 필드를 확인하실 수 있습니다.

 

 

근데 이렇게 필드를 추가했을 경우 가장 큰 문제는 값을 새로 입력 받아야 한다는 것입니다. 애초에 설계를 잘 해서 진행하는게 베스트지만, 사람이 하는 일이니 실수가 있기 마련이겠지요. 그래도 db와 같은 중요한 경우에는 설계를 확실하게 하는게 여러모로 중요할 거라고 생각이 드네요.

어쩔 수 없이 필드를 추가 했으니 값을 입력 할 수밖에 없겠네요.

update 명령어를 사용하면 됩니다.

update 테이블명 set 필드명='값' where 조건;

이 기본형입니다.

update mytable set age=12 where id='testid';

와 같이 입력하고 레코드를 확인해 보면 age값이 입력되어 있는 것을 확인 할 수 있습니다.

 

 

 

필드를 만들었는데 변수형을 바꾸고 싶을 경우가 생길수도 있을 겁니다.

그럴 때는

alter table 테이블명 modify (고칠)필드명 (고칠)변수형; 과 같이 입력하면 됩니다.

커맨드 창에

alter table mytable modify age char(3); 을 입력하고 desc 명령어를 입력하면 문자열로 변경되어 있는 것을 볼 수 있습니다.

그리고 만약 전혀 쓸모가 없는 필드를 만들었다면? 데이터 관리를 위해서도 없애는게 좋을 거라고 보입니다.

위의 나이 처럼, 회원 가입을 받는다고 했을 경우 해마다 변경되는데 그걸 굳이 받을 필요가 있을까요? 생년월일을 받으면 되겠지요.

이처럼 필요 없는 필드를 아예 없애 버리려면 alter ~ drop 명령어를 사용하면 됩니다.

기본형은 alter table 테이블명 drop 필드명; 입니다.

alter table mytable drop age;

를 입력하시면 좀 전에 만들었던 age 필드는 삭제가 됩니다.

 

 

요약

1. 레코드 삽입
insert into 테이블명 (필드1, 필드2, 필드3, ...) values ('값1', '값2', '값3', ...);

2. 레코드 확인
select 필드1, 필드2, 필드3, ... from 테이블명;
select * from 테이블명;

3. 필드 추가
alter table 테이블명 add 필드명 변수형;
4. update
update 테이블명 set 필드명='값' where 조건;

5. 필드 수정
alter table 테이블명 modify 필드명 변수형;

6. 필드 삭제
alter table 테이블명 drop 필드명;

반응형