728x90
mysql> desc friend;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| num   | int(11)  |      | PRI | 0       |       |
| name  | char(10) | YES  |     | NULL    |       |
| adr   | char(80) | YES  |     | NULL    |       |
| tel   | char(20) | YES  |     | NULL    |       |
| email | char(20) | YES  |     | NULL    |       |
| age   | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
6 rows in set (0.00 sec)​

desc로 테이블을 참조해줍니다. (확인)

근데?

mysql> insert into friend values (1,'김','인천','34343',22);
ERROR 1136: Column count doesn't match value count at row 1

추가하려는데 추가가 안되는거에요. ㅠ 전 무엇을 잘못한걸까요?

 

 

 

 

 

 

필드가 6개 있는데 추가하는 필드는 5개죠. 즉 이메일의 값을 더 넣던가 아니면 필드에서 이메일을 지워야 합니다.

 

 

필드를 지우는 것이니 alter, drop email 을 써서 지워줍니다.

mysql> alter table friend drop email;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc friend;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| num   | int(11)  |      | PRI | 0       |       |
| name  | char(10) | YES  |     | NULL    |       |
| adr   | char(80) | YES  |     | NULL    |       |
| tel   | char(20) | YES  |     | NULL    |       |
| age   | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
5 rows in set (0.01 sec)

지워진 것을 확인하고 위의 값을 다시 넣어줍니다. 

 

 

 

 

 

 

mysql> desc friend;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| num   | int(11)  |      | PRI | 0       |       |
| name  | char(10) | YES  |     | NULL    |       |
| adr   | char(80) | YES  |     | NULL    |       |
| tel   | char(20) | YES  |     | NULL    |       |
| age   | int(11)  | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
5 rows in set (0.00 sec)

 

----------------------------------------------------------------------------------------------------------------------------------

(다른 테이블입니다)

 

mysql> desc student;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| num   | int(11)  |      | PRI | 0       |       |
| name  | char(10) | YES  |     | NULL    |       |
| adr   | char(40) | YES  |     | NULL    |       |
| tel   | char(20) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
4 rows in set (0.00 sec)

desc 로 테이블을 참조해줍니다.

 

 

age필드를 추가해 보겠습니다. 

mysql> alter table student add age int after name;
Query OK, 2 rows affected (0.05 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> desc student;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| num   | int(11)  |      | PRI | 0       |       |
| name  | char(10) | YES  |     | NULL    |       |
| age   | int(11)  | YES  |     | NULL    |       |
| adr   | char(40) | YES  |     | NULL    |       |
| tel   | char(20) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
5 rows in set (0.01 sec)

위에서 실습 한 것처럼 table이니 alter를 사용해주고, name 밑 공간에 age 를 추가하기 위해 after name; 을 마지막에 써줍니다.

위의 코드와 지금 desc 코드를 비교하니 age 필드가 추가된 것을 확인할 수 있습니다. 

 

 

mysql> select * from student;
+-----+--------+------+---------------+---------+
| num | name   | age  | adr           | tel     |
+-----+--------+------+---------------+---------+
|   1 | 이유진 | NULL | 경기도 수원시 | 031-419 |
|   2 | 김형주 | NULL | 인천 인하로   | 031-111 |
|   3 | 최학수 | NULL | 경기도 성남시 | 031-111 |
|   4 | 허슬기 | NULL | 서울 종로구   | 02-112  |
+-----+--------+------+---------------+---------+
4 rows in set (0.00 sec)

null 인 age 값을 num에 따라 다르게 채우려면 어떻게 할까요?

 

 

 

mysql> update student set age=22 where num=1;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update student set age=26 where num=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update student set age=17 where num=3;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> update student set age=19 where num=4;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

이해하기 쉽게 해석하면,

 

업데이트하라 학생 테이블에 age=?? 으로 . num 이 =? 번인 사람의.

 

mysql> select * from student;
+-----+--------+------+---------------+---------+
| num | name   | age  | adr           | tel     |
+-----+--------+------+---------------+---------+
|   1 | 이유진 |   22 | 경기도 수원시 | 031-419 |
|   2 | 김형주 |   26 | 인천 인하로   | 031-111 |
|   3 | 최학수 |   17 | 경기도 성남시 | 031-111 |
|   4 | 허슬기 |   19 | 서울 종로구   | 02-112  |
+-----+--------+------+---------------+---------+
4 rows in set (0.00 sec)

바뀐 것을 확인할 수 있습니다.

간단하고 재밌죠?

+ Recent posts