블로그 이미지

내 인생의 가장 젊은 날

내 인생에 있어서 가장 젊은 날, 젊기에 고민이 즐겁다. by 하늘치


'select'에 해당되는 글 3건

  1. 2008.01.15 MySQL : select, update, alter, delete, drop...
  2. 2008.01.11 MySQL : 중간테스트
  3. 2008.01.10 MySQL : select, update, delete (DML)

MySQL : select, update, alter, delete, drop...


==============================================================
*
select c.customerid, c.name, o.orderid
from customers c, orders o join
orders on c.customerid=o.customerid;

select customers.customerid, customers.name, orders.orderid
from customers left join orders orders on customers.customerid=orders.customerid;




============= left join =================
p.314

left join ... on(where와 비슷한 기능)
left join ... using(사용할 공통항목을 넣어주는 곳.)
-----------------------------------------

mysql> select * from customers;
+------------+-----------------+--------------------+--------------+
| customerid | name            | address            | city         |
+------------+-----------------+--------------------+--------------+
|          3 | Julie Smith     | 25 Oak Street      | Airport West |
|          4 | Alan Wong       | 1/47 Haines Avenue | Box Hill     |
|          5 | Michelle Arthur | 357 North Road     | Yarraville   |
+------------+-----------------+--------------------+--------------+
3 rows in set (0.59 sec)


mysql> select * from orders;
+---------+------------+--------+------------+
| orderid | customerid | amount | date       |
+---------+------------+--------+------------+
|       1 |          5 |  69.98 | 2000-04-02 |
|       2 |          3 |  49.99 | 2000-04-15 |
|       3 |          4 |  74.98 | 2000-04-19 |
|       4 |          5 |  24.99 | 2000-05-01 |
+---------+------------+--------+------------+
4 rows in set (0.08 sec)


============ 결과의 차이 ==============

mysql> select customers.customerid, customers.name, orders.orderid
    -> from customers join orders orders on customers.customerid=orders.customerid;
+------------+-----------------+---------+
| customerid | name            | orderid |
+------------+-----------------+---------+
|          5 | Michelle Arthur |       1 |
|          3 | Julie Smith     |       2 |
|          4 | Alan Wong       |       3 |
|          5 | Michelle Arthur |       4 |
+------------+-----------------+---------+
4 rows in set (0.00 sec)


mysql> select customers.customerid, customers.name, orders.orderid
    -> from customers left join orders orders on customers.customerid=orders.customerid;
+------------+-----------------+---------+
| customerid | name            | orderid |
+------------+-----------------+---------+
|          3 | Julie Smith     |       2 |
|          4 | Alan Wong       |       3 |
|          5 | Michelle Arthur |       1 |
|          5 | Michelle Arthur |       4 |
+------------+-----------------+---------+
4 rows in set (0.00 sec)













mysql> select * from orders order by customerid;
+---------+------------+--------+------------+
| orderid | customerid | amount | date       |
+---------+------------+--------+------------+
|       2 |          3 |  49.99 | 2000-04-15 |
|       3 |          4 |  74.98 | 2000-04-19 |
|       1 |          5 |  69.98 | 2000-04-02 |
|       4 |          5 |  24.99 | 2000-05-01 |
+---------+------------+--------+------------+
4 rows in set (0.00 sec)



mysql> select customerid, avg(amount) from orders
    -> group by customerid;
+------------+-------------+
| customerid | avg(amount) |
+------------+-------------+
|          3 |   49.990002 |
|          4 |   74.980003 |
|          5 |   47.485002 |
+------------+-------------+


mysql> select customerid, avg(amount) from orders
    -> group by customerid
    -> having avg(amount)>=50;
+------------+-------------+
| customerid | avg(amount) |
+------------+-------------+
|          4 |   74.980003 |
+------------+-------------+
1 row in set (0.00 sec)











mysql> select * from orders;
+---------+------------+--------+------------+
| orderid | customerid | amount | date       |
+---------+------------+--------+------------+
|       1 |          5 |  69.98 | 2000-04-02 |
|       2 |          3 |  49.99 | 2000-04-15 |
|       3 |          4 |  74.98 | 2000-04-19 |
|       4 |          5 |  24.99 | 2000-05-01 |
+---------+------------+--------+------------+
4 rows in set (0.00 sec)

mysql> select customerid, amount
    -> from orders
    -> where amount = (select max(amount) from orders);
+------------+--------+
| customerid | amount |
+------------+--------+
|          4 |  74.98 |
+------------+--------+
1 row in set (0.00 sec)

=> 이 경우 하위 쿼리에서 단 하나의 값(최대 양)만이 리턴된다. 그 결과는 상위 쿼리에서 비교하기

위해 사용된다. 이런 것은 ANSI SQL의 조인을 사용해서는 멋지게 해낼 수 없는 쿼리이기 때문에 하위

쿼리 예로 좋은 것 같다.


mysql> select customerid, amount
    -> from orders
    -> order by amount desc
    -> limit 1;
+------------+--------+
| customerid | amount |
+------------+--------+
|          4 |  74.98 |
+------------+--------+
1 row in set (0.03 sec)

=> Limit에 의존..
















mysql> select isbn, title from books
    -> where not exists
    -> (select * from order_items where order_items.isbn=books.isbn);
+---------------+-------------+
| isbn          | title       |
+---------------+-------------+
| 0-672-31557-3 | Great Grace |
+---------------+-------------+
1 row in set (0.00 sec)

mysql> select * from books;
+---------------+----------------+---------------------------------------------------+-------+
| isbn          | author         | title                                             | price |
+---------------+----------------+---------------------------------------------------+-------+
| 0-672-31509-2 | Pruitt, et al. | Teach Yourself GIMP in 24 Hours                   | 24.99 |
| 0-672-31557-3 | Philips        | Great Grace                                       | 30.99 |
| 0-672-31697-8 | Michael Morgan | Java 2 for Professional Developers                | 34.99 |
| 0-672-31745-1 | Thomas Down    | Installing Debian GNU/Linux                       | 24.99 |
| 0-672-31769-9 | Thomas Schenk  | Caldera OpenLinux System Administration Unleashed | 49.99 |
+---------------+----------------+---------------------------------------------------+-------+
5 rows in set (0.00 sec)

mysql> select * from order_items;
+---------+---------------+----------+
| orderid | isbn          | quantity |
+---------+---------------+----------+
|       1 | 0-672-31697-8 |        2 |
|       2 | 0-672-31769-9 |        1 |
|       3 | 0-672-31509-2 |        1 |
|       3 | 0-672-31769-9 |        1 |
|       4 | 0-672-31745-1 |        3 |
+---------+---------------+----------+
5 rows in set (0.00 sec)












p.321 하위 쿼리를 임시테이블로 사용하기.

mysql> select * from
    -> (select customerid, name from customers where city='Box Hill')
    -> as box_hill_customers;
+------------+-----------+
| customerid | name      |
+------------+-----------+
|          4 | Alan Wong |
+------------+-----------+
1 row in set (0.03 sec)



mysql> select customerid, name from customers where city='Box Hill';
+------------+-----------+
| customerid | name      |
+------------+-----------+
|          4 | Alan Wong |
+------------+-----------+
1 row in set (0.00 sec)











mysql> select * from books;
+---------------+----------------+---------------------------------------------------+-------+
| isbn          | author         | title                                             | price |
+---------------+----------------+---------------------------------------------------+-------+
| 0-672-31509-2 | Pruitt, et al. | Teach Yourself GIMP in 24 Hours                   | 24.99 |
| 0-672-31557-3 | Philips        | Great Grace                                       | 30.99 |
| 0-672-31697-8 | Michael Morgan | Java 2 for Professional Developers                | 34.99 |
| 0-672-31745-1 | Thomas Down    | Installing Debian GNU/Linux                       | 24.99 |
| 0-672-31769-9 | Thomas Schenk  | Caldera OpenLinux System Administration Unleashed | 49.99 |
+---------------+----------------+---------------------------------------------------+-------+
5 rows in set (0.00 sec)

mysql> update books
    -> set price=price*1.1;
Query OK, 5 rows affected (0.09 sec)
Rows matched: 5  Changed: 5  Warnings: 0

mysql> select * from books;
+---------------+----------------+---------------------------------------------------+-------+
| isbn          | author         | title                                             | price |
+---------------+----------------+---------------------------------------------------+-------+
| 0-672-31509-2 | Pruitt, et al. | Teach Yourself GIMP in 24 Hours                   | 27.49 |
| 0-672-31557-3 | Philips        | Great Grace                                       | 34.09 |
| 0-672-31697-8 | Michael Morgan | Java 2 for Professional Developers                | 38.49 |
| 0-672-31745-1 | Thomas Down    | Installing Debian GNU/Linux                       | 27.49 |
| 0-672-31769-9 | Thomas Schenk  | Caldera OpenLinux System Administration Unleashed | 54.99 |
+---------------+----------------+---------------------------------------------------+-------+
5 rows in set (0.00 sec)










=================================================
update customers
set address = '250 Olsens Road'
where customerid = 4;
=================================================

mysql> select * from customers;
+------------+-----------------+--------------------+--------------+
| customerid | name            | address            | city         |
+------------+-----------------+--------------------+--------------+
|          3 | Julie Smith     | 25 Oak Street      | Airport West |
|          4 | Alan Wong       | 1/47 Haines Avenue | Box Hill     |
|          5 | Michelle Arthur | 357 North Road     | Yarraville   |
+------------+-----------------+--------------------+--------------+
3 rows in set (0.00 sec)

mysql> update customers
    -> set address = '250 Olsens Road'
    -> where customerid = 4;
Query OK, 1 row affected (0.09 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from customers;
+------------+-----------------+-----------------+--------------+
| customerid | name            | address         | city         |
+------------+-----------------+-----------------+--------------+
|          3 | Julie Smith     | 25 Oak Street   | Airport West |
|          4 | Alan Wong       | 250 Olsens Road | Box Hill     |
|          5 | Michelle Arthur | 357 North Road  | Yarraville   |
+------------+-----------------+-----------------+--------------+
3 rows in set (0.00 sec)













p324
=================================================
alter table customers
modify name char(70) not null;
=================================================

mysql> desc customers;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| customerid | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name       | char(50)         | NO   |     |         |                |
| address    | char(100)        | NO   |     |         |                |
| city       | char(30)         | NO   |     |         |                |
+------------+------------------+------+-----+---------+----------------+
4 rows in set (0.09 sec)


mysql> alter table customers
    -> modify name char(70) not null;
Query OK, 3 rows affected (0.47 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> desc customers;
+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| customerid | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| name       | char(70)         | NO   |     |         |                |
| address    | char(100)        | NO   |     |         |                |
| city       | char(30)         | NO   |     |         |                |
+------------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)








=================================================
alter table orders
add tax float(6.2) after amount;
=================================================


mysql> select * from orders;
+---------+------------+--------+------------+
| orderid | customerid | amount | date       |
+---------+------------+--------+------------+
|       1 |          5 |  69.98 | 2000-04-02 |
|       2 |          3 |  49.99 | 2000-04-15 |
|       3 |          4 |  74.98 | 2000-04-19 |
|       4 |          5 |  24.99 | 2000-05-01 |
+---------+------------+--------+------------+
4 rows in set (0.00 sec)


mysql> alter table orders
    -> add tax float(6,2) after amount;
Query OK, 4 rows affected (0.23 sec)
Records: 4  Duplicates: 0  Warnings: 0


mysql> select * from orders;
+---------+------------+--------+------+------------+
| orderid | customerid | amount | tax  | date       |
+---------+------------+--------+------+------------+
|       1 |          5 |  69.98 | NULL | 2000-04-02 |
|       2 |          3 |  49.99 | NULL | 2000-04-15 |
|       3 |          4 |  74.98 | NULL | 2000-04-19 |
|       4 |          5 |  24.99 | NULL | 2000-05-01 |
+---------+------------+--------+------+------------+
4 rows in set (0.00 sec)






삭제
=================================================
delete from 'table명';
ex) delete from customers where customerid=5;

drop table 'table명';

drop database 'database명';
=================================================



mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| bookorama          |
| company            |
| mysql              |
| sqltest            |
| test               |
+--------------------+
6 rows in set (0.03 sec)


mysql> drop database bookorama;
Query OK, 5 rows affected (0.27 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| company            |
| mysql              |
| sqltest            |
| test               |
+--------------------+
5 rows in set (0.00 sec)


Comment 0 Trackback 0
Top

MySQL : 중간테스트

########### 데이타베이스 중간 테스트! ###########


alter table 테이블명1 rename 테이블명2;
alter table 테이블명 add 컬럼명 varchar(20);
alter table 테이블명 drop 컬럼명;
alter table 테이블명 change cname cname varchar(20);
필드명과 자료형을 변경 가능.
alter table 테이블명 change outlet outlet1 varchar(30);

update 테이블명 set 필드명=필드값(갱신하고자 하는 값) where 조건


################# 초기 데이타 #################

mysql> show databases;
+----------+
| Database |
+----------+
| company  |
| mysql    |
+----------+
2 rows in set (0.00 sec)


mysql> show tables;
+-------------------+
| Tables_in_company |
+-------------------+
| car               |
| sale              |
| salesman          |
+-------------------+
3 rows in set (0.00 sec)


mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s134 | 박성식 | 2002-03-01 |   100 | 서울   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s345 | 최재형 | 2004-03-01 |   200 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2004-04-04 |  NULL | 인천   |
+------+--------+------------+-------+--------+
7 rows in set (0.00 sec)


mysql> select * from sale;
+------+-----+------+
| sno  | cno | qty  |
+------+-----+------+
| s123 | c1  |   12 |
| s123 | c2  |   20 |
| s123 | c3  |   42 |
| s123 | c4  |   18 |
| s123 | c5  |   10 |
| s123 | c6  |   20 |
| s202 | c1  |   34 |
| s202 | c2  |   14 |
| s134 | c2  |   21 |
| s241 | c2  |   30 |
| s241 | c4  |   31 |
| s241 | c5  |   13 |
+------+-----+------+
12 rows in set (0.00 sec)


mysql> select * from car;
+-----+--------+------+--------+--------+
| cno | cname  | cc   | weight | outlet |
+-----+--------+------+--------+--------+
| c1  | 소나타 | 1800 |   1200 | 서울   |
| c2  | 소나타 | 2000 |   1300 | 서울   |
| c3  | 레조   | 1500 |   1100 | 인천   |
| c4  | 레조   | 2000 |   1200 | 인천   |
| c5  | 카니발 | 3000 |   1800 | 광주   |
| c6  | SM5    | 2000 |   1300 | 부산   |
| c7  | SM5    | 2500 |   1350 | 부산   |
+-----+--------+------+--------+--------+
7 rows in set (0.00 sec)












################# 문제 풀이 #################


1. salesman 테이블의 명칭을 employee 변경한다.
mysql> show tables;
+-------------------+
| Tables_in_company |
+-------------------+
| car               |
| sale              |
| salesman          |
+-------------------+
3 rows in set (0.00 sec)


mysql> alter table salesman rename employee;
Query OK, 0 rows affected (0.00 sec)


mysql> show tables;
+-------------------+
| Tables_in_company |
+-------------------+
| car               |
| employee          |
| sale              |
+-------------------+
3 rows in set (0.00 sec)

mysql> alter table employee rename salesman;
Query OK, 0 rows affected (0.00 sec)

mysql> show tables;
+-------------------+
| Tables_in_company |
+-------------------+
| car               |
| sale              |
| salesman          |
+-------------------+
3 rows in set (0.00 sec)


2. car 테이블에 vendor varchar(20) 컬럼을  추가한다.
mysql> desc car;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| cno    | char(2)     |      | PRI |         |       |
| cname  | varchar(20) | YES  |     | NULL    |       |
| cc     | smallint(6) | YES  |     | NULL    |       |
| weight | smallint(6) | YES  |     | NULL    |       |
| outlet | varchar(10) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.02 sec)

mysql> alter table car add vendor varchar(20);
Query OK, 7 rows affected (0.09 sec)
레코드: 7개  중복: 0개  경고: 0개

mysql> desc car;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| cno    | char(2)     |      | PRI |         |       |
| cname  | varchar(20) | YES  |     | NULL    |       |
| cc     | smallint(6) | YES  |     | NULL    |       |
| weight | smallint(6) | YES  |     | NULL    |       |
| outlet | varchar(10) | YES  |     | NULL    |       |
| vendor | varchar(20) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)


3. car 테이블에 vendor 컬럼을 삭제해 본다.
mysql> alter table car drop vendor;
Query OK, 7 rows affected (0.06 sec)
레코드: 7개  중복: 0개  경고: 0개


mysql> desc car;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| cno    | char(2)     |      | PRI |         |       |
| cname  | varchar(20) | YES  |     | NULL    |       |
| cc     | smallint(6) | YES  |     | NULL    |       |
| weight | smallint(6) | YES  |     | NULL    |       |
| outlet | varchar(10) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)


4. car 테이블의 cname 의 데이터 타입을 varchar(20)로 변경한다.
mysql>alter table car change cname cname int(10);
Query OK, 7 rows affected (0.05 sec)
레코드: 7개  중복: 0개  경고: 7개

mysql> desc car;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| cno    | char(2)     |      | PRI |         |       |
| cname  | int(10)     | YES  |     | NULL    |       |
| cc     | smallint(6) | YES  |     | NULL    |       |
| weight | smallint(6) | YES  |     | NULL    |       |
| outlet | varchar(10) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

mysql> alter table car change cname cname varchar(20);
Query OK, 7 rows affected (0.06 sec)
레코드: 7개  중복: 0개  경고: 0개

mysql> desc car;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| cno    | char(2)     |      | PRI |         |       |
| cname  | varchar(20) | YES  |     | NULL    |       |
| cc     | smallint(6) | YES  |     | NULL    |       |
| weight | smallint(6) | YES  |     | NULL    |       |
| outlet | varchar(10) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)


5. salesman 테이블에 '사번 s346, 이름:강길동, 입사일 :2004-12-12, 실적:200  지점명:부산'으로 레코드를 삽입하시오.
mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s134 | 박성식 | 2002-03-01 |   100 | 서울   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s345 | 최재형 | 2004-03-01 |   200 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2004-04-04 |  NULL | 인천   |
+------+--------+------------+-------+--------+
7 rows in set (0.00 sec)


mysql> insert into salesman values('s346', '강길동', '2004-12-12', 200, '부산');
Query OK, 1 row affected (0.00 sec)


mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s134 | 박성식 | 2002-03-01 |   100 | 서울   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s345 | 최재형 | 2004-03-01 |   200 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2004-04-04 |  NULL | 인천   |
| s346 | 강길동 | 2004-12-12 |   200 | 부산   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)


6. salesman의 전체 레코드를 검색하시오.
mysql> desc salesman;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| sno    | char(4)     |      | PRI |         |       |
| sname  | char(10)    |      |     |         |       |
| hire   | date        | YES  |     | NULL    |       |
| point  | smallint(6) | YES  |     | NULL    |       |
| branch | char(10)    | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)


7. salesman 테이블에서 실적이 300점 이상의 사원의 이름과 지점명을 검색하시오.
mysql> select sname, branch from salesman where point>=300;
+--------+--------+
| sname  | branch |
+--------+--------+
| 김두환 | 경기   |
| 임흥석 | 부산   |
+--------+--------+
2 rows in set (0.03 sec)


8. 판매된 승용차의 차량 번호를 검색하라
mysql> select cno from sale;
+-----+
| cno |
+-----+
| c1  |
| c2  |
| c3  |
| c4  |
| c5  |
| c6  |
| c1  |
| c2  |
| c2  |
| c2  |
| c4  |
| c5  |
+-----+
12 rows in set (0.00 sec)


9. 판매된 승용차의 차량번호를 중복 없이 검색하라.
(select 필드명 from 테이블명 group by 그룹화하고자 하는 필드명)

mysql>select cno from sale group by cno;
+-----+
| cno |
+-----+
| c1  |
| c2  |
| c3  |
| c4  |
| c5  |
| c6  |
+-----+
6 rows in set (0.03 sec)


10. 서울이 출고지인 차량의 차량번호, 중량, 차량번호를 검색하라
mysql> select cname, weight, cno from car where outlet='서울';
+--------+--------+-----+
| cname  | weight | cno |
+--------+--------+-----+
| 소나타 |   1200 | c1  |
| 소나타 |   1300 | c2  |
+--------+--------+-----+
2 rows in set (0.00 sec)


11. 출고지가 부산이고 배기량이 2000cc 이상인 차량의 차랑명과 배기량을 검색하라
mysql> select cname, cc from car where outlet='부산' and cc>=2000;
+-------+------+
| cname | cc   |
+-------+------+
| SM5   | 2000 |
| SM5   | 2500 |
+-------+------+
2 rows in set (0.00 sec)


12. 영업사원의 모든 정보를 실적이 높은 순으로 검색하라.
mysql> select * from salesman order by point asc;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2004-04-04 |  NULL | 인천   |
| s134 | 박성식 | 2002-03-01 |   100 | 서울   |
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s345 | 최재형 | 2004-03-01 |   200 | 인천   |
| s346 | 강길동 | 2004-12-12 |   200 | 부산   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)


13. 영업사원의 모든 정보를 실적순으로 오름차순 실적이 같은 경우 입사일로 내림차순하라.
mysql> select * from salesman order by point, hire desc;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2004-04-04 |  NULL | 인천   |
| s134 | 박성식 | 2002-03-01 |   100 | 서울   |
| s346 | 강길동 | 2004-12-12 |   200 | 부산   |
| s345 | 최재형 | 2004-03-01 |   200 | 인천   |
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)


14. 실적이 높은 영업사원 5명의 영업사원의 모든 정보를 (실적 순으로) 검색하라
mysql> select * from salesman order by point desc limit 0,5;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s345 | 최재형 | 2004-03-01 |   200 | 인천   |
| s346 | 강길동 | 2004-12-12 |   200 | 부산   |
+------+--------+------------+-------+--------+
5 rows in set (0.00 sec)


15. 실적이 3등, 4등, 5등이 영업사원의 모든 정보를 검색하라.
mysql> select * from salesman order by point desc limit 2,3;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s345 | 최재형 | 2004-03-01 |   200 | 인천   |
| s346 | 강길동 | 2004-12-12 |   200 | 부산   |
+------+--------+------------+-------+--------+
3 rows in set (0.00 sec)


16. 전체 팔린 차량의 대수를 구하라
mysql> select sum(qty) from sale;
+----------+
| sum(qty) |
+----------+
|      265 |
+----------+
1 row in set (0.01 sec)


17. 영업사원들의 실적 점수의 평균을 구하라.
mysql> select avg(point) from salesman;
+------------+
| avg(point) |
+------------+
|   233.3333 |
+------------+
1 row in set (0.00 sec)


18. 영업 사원별로 판매한 전체 차량의 대수를 구하라.
mysql> select s.sname, sum(s1.qty) from salesman s, sale s1
where s.sno=s1.sno group by s.sname;

+--------+-------------+
| sname  | sum(s1.qty) |
+--------+-------------+
| 임흥석 |          74 |
| 기필호 |         122 |
| 김두환 |          48 |
| 박성식 |          21 |
+--------+-------------+
4 rows in set (0.00 sec)


19. 두 종류 이상의 차량을 판매한 영업사원의 사번을 구하라.
mysql> select sno from sale group by sno having count(cno)>=2;
+------+
| sno  |
+------+
| s123 |
| s202 |
| s241 |
+------+
3 rows in set (0.00 sec)


20. 차량명이 ‘레’로 시작되는 차량의 모든 정보를 검색하라.
mysql> select * from car where cname like '레%';
+-----+-------+------+--------+--------+
| cno | cname | cc   | weight | outlet |
+-----+-------+------+--------+--------+
| c3  | 레조  | 1500 |   1100 | 인천   |
| c4  | 레조  | 2000 |   1200 | 인천   |
+-----+-------+------+--------+--------+
2 rows in set (0.00 sec)


21. 차량명이 한글로 두 글자인 차량의 차량번호와 차량명을 검색하라
mysql> select cno, cname from car where cname like '____';
+-----+-------+
| cno | cname |
+-----+-------+
| c3  | 레조  |
| c4  | 레조  |
+-----+-------+
2 rows in set (0.00 sec)


22. 박씨가 아닌 영업사원의 사번과 이름을 검색하라.
mysql> select sno, sname from salesman where sname not like '박%';
+------+--------+
| sno  | sname  |
+------+--------+
| s123 | 기필호 |
| s202 | 김두환 |
| s241 | 임흥석 |
| s345 | 최재형 |
| s444 | 정종호 |
| s555 | 홍길동 |
| s346 | 강길동 |
+------+--------+
7 rows in set (0.00 sec)


23. 배기량이 널 값인 차량의 차량번호와 차량명을 검색하라.
mysql> select cno, cname from car where cc=null;
Empty set (0.00 sec)

mysql> select * from car;
+-----+--------+------+--------+--------+
| cno | cname  | cc   | weight | outlet |
+-----+--------+------+--------+--------+
| c1  | 소나타 | 1800 |   1200 | 서울   |
| c2  | 소나타 | 2000 |   1300 | 서울   |
| c3  | 레조   | 1500 |   1100 | 인천   |
| c4  | 레조   | 2000 |   1200 | 인천   |
| c5  | 카니발 | 3000 |   1800 | 광주   |
| c6  | SM5    | 2000 |   1300 | 부산   |
| c7  | SM5    | 2500 |   1350 | 부산   |
+-----+--------+------+--------+--------+
7 rows in set (0.00 sec)


24. 입사일이 2000부터 2003년 사이의 입사자들의 모든 정보를 검색하라.
mysql> select * from salesman where year(hire) between 2000 and 2003;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s134 | 박성식 | 2002-03-01 |   100 | 서울   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
+------+--------+------------+-------+--------+
3 rows in set (0.00 sec)


25. 입사년도가 2002년 사원의 모든 정보를 검색하라.
mysql> select * from salesman where year(hire)=2002;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s134 | 박성식 | 2002-03-01 |   100 | 서울   |
+------+--------+------------+-------+--------+
1 row in set (0.00 sec)


26. 판매 실적이 없는 사원들의 모든 정보를 검색하라.
mysql> select * from salesman where point is null;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2004-04-04 |  NULL | 인천   |
+------+--------+------------+-------+--------+
2 rows in set (0.00 sec)


27. 배기량이  2000cc 이상이면서 차의 중량이 1000 이상이면서 출고지가 인천인 차량번호와  차량명을 검색하시오.
mysql> select cno, cname from car where cc>=2000 and weight>=1000 and outlet='인천';
+-----+-------+
| cno | cname |
+-----+-------+
| c4  | 레조  |
+-----+-------+
1 row in set (0.00 sec)


28. 사번이 's123' 이고 판매량이 20 이상인 차량번호를 모두 검색하시오.
mysql> select cno from sale where sno='s123' and qty>=20;
+-----+
| cno |
+-----+
| c2  |
| c3  |
| c6  |
+-----+
3 rows in set (0.00 sec)


29. 영업사원들 중에서 실적 포인트가 300 이상 400 이하의 사원들의 모든 정보를 검색하시오.
mysql> select * from salesman where point between 300 and 400;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
+------+--------+------------+-------+--------+
2 rows in set (0.00 sec)


30. 차량의 출고지가 ‘부’로 시작하면서 배기량이 2000cc의 차량명을 검색하시오.
mysql> select cname from car where outlet like '부%' and cc=2000;
+-------+
| cname |
+-------+
| SM5   |
+-------+
1 row in set (0.00 sec)


31. 차량번호 'c1'을 판매한 영업사원의 이름과 입사년월일을 검색하시오.
mysql> select s.sname, s.hire from salesman s, sale s1, car c where c.cno=s1.cno

and s.sno=s1.sno and c.cno='c1';
+--------+------------+
| sname  | hire       |
+--------+------------+
| 기필호 | 1998-10-12 |
| 김두환 | 2000-05-03 |
+--------+------------+
2 rows in set (0.02 sec)


32. 자동차 판매량이 30 이상인 영업사원의 이름과 실적점수를 검색하시오.
mysql> select s.sname, s.point from salesman s, sale s1 where s.sno=s1.sno group by s1.sno having sum(s1.qty)>=30;
+--------+-------+
| sname  | point |
+--------+-------+
| 기필호 |   200 |
| 김두환 |   400 |
| 임흥석 |   300 |
+--------+-------+
3 rows in set (0.00 sec)


33. 사번이 's241' 사원의 실적점수를 150점 증가 시켜라
mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s134 | 박성식 | 2002-03-01 |   100 | 서울   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s345 | 최재형 | 2004-03-01 |   200 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2004-04-04 |  NULL | 인천   |
| s346 | 강길동 | 2004-12-12 |   200 | 부산   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)

mysql> update salesman set point=point+150 where sno='s241';
Query OK, 1 row affected (0.01 sec)
일치하는 Rows : 1개 변경됨: 1개  경고: 0개

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s134 | 박성식 | 2002-03-01 |   100 | 서울   |
| s241 | 임흥석 | 2003-06-12 |   450 | 부산   |
| s345 | 최재형 | 2004-03-01 |   200 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2004-04-04 |  NULL | 인천   |
| s346 | 강길동 | 2004-12-12 |   200 | 부산   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)


34. 출고지가 ‘인천’인 차량의 배기량을 100cc 증가 시켜라.
mysql> select * from car;
+-----+--------+------+--------+--------+
| cno | cname  | cc   | weight | outlet |
+-----+--------+------+--------+--------+
| c1  | 소나타 | 1800 |   1200 | 서울   |
| c2  | 소나타 | 2000 |   1300 | 서울   |
| c3  | 레조   | 1500 |   1100 | 인천   |
| c4  | 레조   | 2000 |   1200 | 인천   |
| c5  | 카니발 | 3000 |   1800 | 광주   |
| c6  | SM5    | 2000 |   1300 | 부산   |
| c7  | SM5    | 2500 |   1350 | 부산   |
+-----+--------+------+--------+--------+
7 rows in set (0.00 sec)

mysql> update car set cc=cc+100 where outlet='인천';
Query OK, 2 rows affected (0.00 sec)
일치하는 Rows : 2개 변경됨: 2개  경고: 0개

mysql> select * from car;
+-----+--------+------+--------+--------+
| cno | cname  | cc   | weight | outlet |
+-----+--------+------+--------+--------+
| c1  | 소나타 | 1800 |   1200 | 서울   |
| c2  | 소나타 | 2000 |   1300 | 서울   |
| c3  | 레조   | 1600 |   1100 | 인천   |
| c4  | 레조   | 2100 |   1200 | 인천   |
| c5  | 카니발 | 3000 |   1800 | 광주   |
| c6  | SM5    | 2000 |   1300 | 부산   |
| c7  | SM5    | 2500 |   1350 | 부산   |
+-----+--------+------+--------+--------+
7 rows in set (0.00 sec)


35. 모드 사원의 실적을 50점 감소 시켜라
mysql> update salesman set point=point-50;
Query OK, 6 rows affected (0.00 sec)
일치하는 Rows : 8개 변경됨: 6개  경고: 0개

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   150 | 인천   |
| s202 | 김두환 | 2000-05-03 |   350 | 경기   |
| s134 | 박성식 | 2002-03-01 |    50 | 서울   |
| s241 | 임흥석 | 2003-06-12 |   400 | 부산   |
| s345 | 최재형 | 2004-03-01 |   150 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2004-04-04 |  NULL | 인천   |
| s346 | 강길동 | 2004-12-12 |   150 | 부산   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)


36. 출고지가 ‘서울’인 차량의 차량명을 소나타2로 변경하라.
mysql> update car set cname='소나타2' where outlet='서울';
Query OK, 2 rows affected (0.00 sec)
일치하는 Rows : 2개 변경됨: 2개  경고: 0개

mysql> select * from car;
+-----+---------+------+--------+--------+
| cno | cname   | cc   | weight | outlet |
+-----+---------+------+--------+--------+
| c1  | 소나타2 | 1800 |   1200 | 서울   |
| c2  | 소나타2 | 2000 |   1300 | 서울   |
| c3  | 레조    | 1600 |   1100 | 인천   |
| c4  | 레조    | 2100 |   1200 | 인천   |
| c5  | 카니발  | 3000 |   1800 | 광주   |
| c6  | SM5     | 2000 |   1300 | 부산   |
| c7  | SM5     | 2500 |   1350 | 부산   |
+-----+---------+------+--------+--------+
7 rows in set (0.00 sec)


37. 입사년도가 2004년 사원들의 실적점수를 100점 증가 시키시오.
mysql> update salesman set point=point+100 where year(hire)=2004;
Query OK, 2 rows affected (0.00 sec)
일치하는 Rows : 4개 변경됨: 2개  경고: 0개

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   150 | 인천   |
| s202 | 김두환 | 2000-05-03 |   350 | 경기   |
| s134 | 박성식 | 2002-03-01 |    50 | 서울   |
| s241 | 임흥석 | 2003-06-12 |   400 | 부산   |
| s345 | 최재형 | 2004-03-01 |   250 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2004-04-04 |  NULL | 인천   |
| s346 | 강길동 | 2004-12-12 |   250 | 부산   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)


38. 사번이 's202' 인 사원의 레코드를 삭제하라.
mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   150 | 인천   |
| s202 | 김두환 | 2000-05-03 |   350 | 경기   |
| s134 | 박성식 | 2002-03-01 |    50 | 서울   |
| s241 | 임흥석 | 2003-06-12 |   400 | 부산   |
| s345 | 최재형 | 2004-03-01 |   250 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2004-04-04 |  NULL | 인천   |
| s346 | 강길동 | 2004-12-12 |   250 | 부산   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)


mysql> delete from salesman where sno='s202';
Query OK, 1 row affected (0.02 sec)


mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   150 | 인천   |
| s134 | 박성식 | 2002-03-01 |    50 | 서울   |
| s241 | 임흥석 | 2003-06-12 |   400 | 부산   |
| s345 | 최재형 | 2004-03-01 |   250 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2004-04-04 |  NULL | 인천   |
| s346 | 강길동 | 2004-12-12 |   250 | 부산   |
+------+--------+------------+-------+--------+
7 rows in set (0.00 sec)


39. 부산에서 출고되는 모든 차량의 레코드를 삭제하라
mysql> select * from car;
+-----+---------+------+--------+--------+
| cno | cname   | cc   | weight | outlet |
+-----+---------+------+--------+--------+
| c1  | 소나타2 | 1800 |   1200 | 서울   |
| c2  | 소나타2 | 2000 |   1300 | 서울   |
| c3  | 레조    | 1600 |   1100 | 인천   |
| c4  | 레조    | 2100 |   1200 | 인천   |
| c5  | 카니발  | 3000 |   1800 | 광주   |
| c6  | SM5     | 2000 |   1300 | 부산   |
| c7  | SM5     | 2500 |   1350 | 부산   |
+-----+---------+------+--------+--------+
7 rows in set (0.00 sec)

mysql> delete from car where outlet='부산';
Query OK, 2 rows affected (0.00 sec)

mysql> select * from car;
+-----+---------+------+--------+--------+
| cno | cname   | cc   | weight | outlet |
+-----+---------+------+--------+--------+
| c1  | 소나타2 | 1800 |   1200 | 서울   |
| c2  | 소나타2 | 2000 |   1300 | 서울   |
| c3  | 레조    | 1600 |   1100 | 인천   |
| c4  | 레조    | 2100 |   1200 | 인천   |
| c5  | 카니발  | 3000 |   1800 | 광주   |
+-----+---------+------+--------+--------+
5 rows in set (0.00 sec)


40. 영업사원의 모든 테이블을 삭제하라.
mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   150 | 인천   |
| s134 | 박성식 | 2002-03-01 |    50 | 서울   |
| s241 | 임흥석 | 2003-06-12 |   400 | 부산   |
| s345 | 최재형 | 2004-03-01 |   250 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2004-04-04 |  NULL | 인천   |
| s346 | 강길동 | 2004-12-12 |   250 | 부산   |
+------+--------+------------+-------+--------+
7 rows in set (0.00 sec)

mysql> delete from salesman;
Query OK, 7 rows affected (0.00 sec)

mysql> select * from salesman;
Empty set (0.00 sec)

Comment 0 Trackback 0
Top

MySQL : select, update, delete (DML)

###### select 문 계속.. #######

주의!!!
where 문에서 둘 이상의 조건(필드)을 줄 때,
앞쪽에 primary 값의 조건을 써줘야한다!



1. 소나타이면서 배기량이 2000cc인 차량을 판매한 사원의 사번과 판매량을 검색하시오.

select sale.sno, sale.qty from sale, car
where car.cno=sale.cno and car.cname="소나타" and car.cc=2000;

or

select s.sno, s.qty from sale s, car  c
where c.cno=s.cno and c.cname="소나타" and c.cc=2000;

----------------------------------------------------------------------------------
mysql> select sale.sno, sale.qty from sale, car
    -> where car.cno=sale.cno and car.cname="소나타" and car.cc=2000;
+------+------+
| sno  | qty  |
+------+------+
| s123 |   12 |
| s202 |   14 |
| s134 |   21 |
| s241 |   30 |
+------+------+
4 rows in set (0.00 sec)

mysql>



2. 소나타 차량을 판매한 사원의 이름.

select salesman.sname from car, salesman, sale
where car.cno=sale.cno and salesman.sno=sale.sno and car.cname="소나타";

----------------------------------------------------------------------------------
mysql> select salesman.sname from car, salesman, sale
    -> where car.cno=sale.cno and salesman.sno=sale.sno and car.cname="소나타";
+--------+
| sname  |
+--------+
| 기필호 |
| 기필호 |
| 김두환 |
| 김두환 |
| 박성식 |
| 임흥석 |
+--------+
6 rows in set (0.00 sec)

mysql>



3. 차량번호 c1을 판매한 영업사원의 이름을 검색

select salesman.sname from salesman, sale
where salesman.sno=sale.sno and sale.cno='c1';

또는

select s.sname from salesman s, sale s1
where s.sno=s1.sno and s1.cno='c1';

----------------------------------------------------------------------------------
mysql> select s.sname from salesman s, sale s1
    -> where s.sno=s1.sno and s1.cno='c1';
+--------+
| sname  |
+--------+
| 기필호 |
| 김두환 |
+--------+
2 rows in set (0.02 sec)

mysql>



4. 차량번호 c5를 판매한 영업사원의 이름, 실적, 지점명을 검색하시오

select s.sname, s.point, s.branch from salesman s, sale s1
where s.sno=s1.sno and s1.cno='c5';

----------------------------------------------------------------------------------
mysql> select s.sname, s.point, s.branch from salesman s, sale s1
    -> where s.sno=s1.sno and s1.cno='c5';
+--------+-------+--------+
| sname  | point | branch |
+--------+-------+--------+
| 기필호 |   200 | 인천   |
| 임흥석 |   300 | 부산   |
+--------+-------+--------+
2 rows in set (0.00 sec)

mysql>



* 내맘대로 만든 문제... ㅋ
20대 이상 판매한 차량의 차이름과 출고지, 판매사원과 판매량을 검색하라.

select c.cname, c.outlet, s.sname, s1.qty from salesman s, car c, sale s1
where c.cno=s1.cno and s.sno=s1.sno and s1.qty>=20;

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

mysql> select c.cname, c.outlet, s.sname, s1.qty from salesman s, car c, sale s1
    -> where c.cno=s1.cno and s.sno=s1.sno and s1.qty>=20;
+--------+--------+--------+------+
| cname  | outlet | sname  | qty  |
+--------+--------+--------+------+
| 레조   | 인천   | 기필호 |   42 |
| SM5    | 부산   | 기필호 |   20 |
| 소나타 | 서울   | 김두환 |   34 |
| 소나타 | 서울   | 박성식 |   21 |
| 소나타 | 서울   | 임흥석 |   30 |
| 레조   | 인천   | 임흥석 |   31 |
+--------+--------+--------+------+
6 rows in set (0.00 sec)

mysql>




5. 차량이 소나타인 사번과 출고지를 검색하라.

select s.sno, c.outlet from sale s, car c
where c.cno=s.cno and c.cname='소나타';

----------------------------------------------------------------------------------
mysql> select s.sno, c.outlet from sale s, car c
    -> where c.cno=s.cno and c.cname='소나타';
+------+--------+
| sno  | outlet |
+------+--------+
| s123 | 서울   |
| s123 | 서울   |
| s202 | 서울   |
| s202 | 서울   |
| s134 | 서울   |
| s241 | 서울   |
+------+--------+
6 rows in set (0.00 sec)

mysql>












############################## Update ##############################

update 테이블명 set 필드명=필드값(갱신하고자 하는 값) where 조건



1. 사번이 s123인 사원의 실적을 100점 증가시켜라

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s134 | 박성식 | 2002-03-01 |   100 | 서울   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s345 | 최재형 | 2004-03-01 |   200 | 인천   |
| s357 | 길동이 | 2000-10-12 |   200 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2008-01-08 |  NULL | 인천   |
+------+--------+------------+-------+--------+
8 rows in set (0.03 sec)

mysql>

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

mysql> update salesman set point=point+100 where sno='s123';
Query OK, 1 row affected (0.06 sec)
Rows matched: 1  Changed: 1  Warnings: 0

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   300 | 인천   |
| s134 | 박성식 | 2002-03-01 |   100 | 서울   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s345 | 최재형 | 2004-03-01 |   200 | 인천   |
| s357 | 길동이 | 2000-10-12 |   200 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2008-01-08 |  NULL | 인천   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)

mysql>




2.출고지가 인천인 차량에 대해서 배기량을 200 증가시켜라

mysql> select * from car;
+-----+--------+------+--------+--------+
| cno | cname  | cc   | weight | outlet |
+-----+--------+------+--------+--------+
| c1  | 소나타 | 1800 |   1200 | 서울   |
| c2  | 소나타 | 2000 |   1300 | 서울   |
| c3  | 레조   | 1500 |   1100 | 인천   |
| c4  | 레조   | 2000 |   1200 | 인천   |
| c5  | 카니발 | 3000 |   1800 | 광주   |
| c6  | SM5    | 2000 |   1300 | 부산   |
| c7  | SM5    | 2500 |   1350 | 부산   |
+-----+--------+------+--------+--------+
7 rows in set (0.00 sec)

mysql>


++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

mysql> update car set cc=cc+200 where outlet='인천';
Query OK, 2 rows affected (0.06 sec)
Rows matched: 2  Changed: 2  Warnings: 0

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

mysql> select * from car;
+-----+--------+------+--------+--------+
| cno | cname  | cc   | weight | outlet |
+-----+--------+------+--------+--------+
| c1  | 소나타 | 1800 |   1200 | 서울   |
| c2  | 소나타 | 2000 |   1300 | 서울   |
| c3  | 레조   | 1700 |   1100 | 인천   |
| c4  | 레조   | 2200 |   1200 | 인천   |
| c5  | 카니발 | 3000 |   1800 | 광주   |
| c6  | SM5    | 2000 |   1300 | 부산   |
| c7  | SM5    | 2500 |   1350 | 부산   |
+-----+--------+------+--------+--------+
7 rows in set (0.00 sec)

mysql>




3. 모든 사원의 실적을 100점 감소시켜라

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   300 | 인천   |
| s134 | 박성식 | 2002-03-01 |   100 | 서울   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s345 | 최재형 | 2004-03-01 |   200 | 인천   |
| s357 | 길동이 | 2000-10-12 |   200 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2008-01-08 |  NULL | 인천   |
+------+--------+------------+-------+--------+
8 rows in set (0.02 sec)

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

mysql> update salesman set point=point-100;
Query OK, 6 rows affected (0.05 sec)
Rows matched: 8  Changed: 6  Warnings: 0

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s134 | 박성식 | 2002-03-01 |     0 | 서울   |
| s202 | 김두환 | 2000-05-03 |   300 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   200 | 부산   |
| s345 | 최재형 | 2004-03-01 |   100 | 인천   |
| s357 | 길동이 | 2000-10-12 |   100 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2008-01-08 |  NULL | 인천   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)

mysql>




4. 차량명이 소나타이면서 배기량이 2000cc인 차량의 출고지를 당산으로 바꾸시오

mysql> select * from car;
+-----+--------+------+--------+--------+
| cno | cname  | cc   | weight | outlet |
+-----+--------+------+--------+--------+
| c1  | 소나타 | 1800 |   1200 | 서울   |
| c2  | 소나타 | 2000 |   1300 | 서울   |
| c3  | 레조   | 1700 |   1100 | 인천   |
| c4  | 레조   | 2200 |   1200 | 인천   |
| c5  | 카니발 | 3000 |   1800 | 광주   |
| c6  | SM5    | 2000 |   1300 | 부산   |
| c7  | SM5    | 2500 |   1350 | 부산   |
+-----+--------+------+--------+--------+
7 rows in set (0.00 sec)

mysql>



++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
update car set outlet='당산' where cname='소나타' and cc=2000;

mysql> update car set outlet='당산' where cname='소나타' and cc=2000;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



mysql> select * from car;
+-----+--------+------+--------+--------+
| cno | cname  | cc   | weight | outlet |
+-----+--------+------+--------+--------+
| c1  | 소나타 | 1800 |   1200 | 서울   |
| c2  | 소나타 | 2000 |   1300 | 당산   |
| c3  | 레조   | 1700 |   1100 | 인천   |
| c4  | 레조   | 2200 |   1200 | 인천   |
| c5  | 카니발 | 3000 |   1800 | 광주   |
| c6  | SM5    | 2000 |   1300 | 부산   |
| c7  | SM5    | 2500 |   1350 | 부산   |
+-----+--------+------+--------+--------+
7 rows in set (0.00 sec)

mysql>




5. 출고지가 인천인 차량의 이름을 SM7으로 바꾸고 차중량을 200 증가시키시오
update car set cname='SM7', weight=weight+200 where outlet='인천';

mysql> select * from car;
+-----+--------+------+--------+--------+
| cno | cname  | cc   | weight | outlet |
+-----+--------+------+--------+--------+
| c1  | 소나타 | 1800 |   1200 | 서울   |
| c2  | 소나타 | 2000 |   1300 | 당산   |
| c3  | 레조   | 1700 |   1100 | 인천   |
| c4  | 레조   | 2200 |   1200 | 인천   |
| c5  | 카니발 | 3000 |   1800 | 광주   |
| c6  | SM5    | 2000 |   1300 | 부산   |
| c7  | SM5    | 2500 |   1350 | 부산   |
+-----+--------+------+--------+--------+
7 rows in set (0.00 sec)



mysql> update car set cname='SM7', weight=weight+200 where outlet='인천';
Query OK, 2 rows affected (0.05 sec)
Rows matched: 2  Changed: 2  Warnings: 0



mysql> select * from car;
+-----+--------+------+--------+--------+
| cno | cname  | cc   | weight | outlet |
+-----+--------+------+--------+--------+
| c1  | 소나타 | 1800 |   1200 | 서울   |
| c2  | 소나타 | 2000 |   1300 | 당산   |
| c3  | SM7    | 1700 |   1300 | 인천   |
| c4  | SM7    | 2200 |   1400 | 인천   |
| c5  | 카니발 | 3000 |   1800 | 광주   |
| c6  | SM5    | 2000 |   1300 | 부산   |
| c7  | SM5    | 2500 |   1350 | 부산   |
+-----+--------+------+--------+--------+
7 rows in set (0.00 sec)

mysql>



6. 입사일이 2004년이면서 실적이 없는 사원의 이름을 황길동으로 변경하시오.
update salesman set sname='황길동' where year(hire)=2004 and point is null;

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s134 | 박성식 | 2002-03-01 |     0 | 서울   |
| s202 | 김두환 | 2000-05-03 |   300 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   200 | 부산   |
| s345 | 최재형 | 2004-03-01 |   100 | 인천   |
| s357 | 길동이 | 2000-10-12 |   100 | 인천   |
| s444 | 정종호 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2008-01-08 |  NULL | 인천   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)



mysql> update salesman set sname='황길동'
    -> where year(hire)=2004 and point is null;
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0



mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s134 | 박성식 | 2002-03-01 |     0 | 서울   |
| s202 | 김두환 | 2000-05-03 |   300 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   200 | 부산   |
| s345 | 최재형 | 2004-03-01 |   100 | 인천   |
| s357 | 길동이 | 2000-10-12 |   100 | 인천   |
| s444 | 황길동 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2008-01-08 |  NULL | 인천   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)

mysql>



7. 입사월이 3월이면서 지점명이 서울인 사원의 사원명을 당산동으로 변경하시오.
update salesman set sname='당산동' where month(hire)=03 and branch='서울';

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s134 | 박성식 | 2002-03-01 |     0 | 서울   |
| s202 | 김두환 | 2000-05-03 |   300 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   200 | 부산   |
| s345 | 최재형 | 2004-03-01 |   100 | 인천   |
| s357 | 길동이 | 2000-10-12 |   100 | 인천   |
| s444 | 황길동 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2008-01-08 |  NULL | 인천   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)

mysql> update salesman set sname='당산동'
    -> where month(hire)=03 and branch='서울';
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   200 | 인천   |
| s134 | 당산동 | 2002-03-01 |     0 | 서울   |
| s202 | 김두환 | 2000-05-03 |   300 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   200 | 부산   |
| s345 | 최재형 | 2004-03-01 |   100 | 인천   |
| s357 | 길동이 | 2000-10-12 |   100 | 인천   |
| s444 | 황길동 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2008-01-08 |  NULL | 인천   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)

mysql>



8. 입사일이 1일이면서 실적점수가 200점 이상인 사원의 사원명을 당산역으로 변경.
update salesman set sname='당산역' where day(hire)=01 and point>=200;

+++++++++++++++++++++++++++++++++++++++++++++++++
mysql> update salesman set point=point+100;
Query OK, 6 rows affected (0.05 sec)
Rows matched: 8  Changed: 6  Warnings: 0

-> 앞에서 포인트를 100점씩 빼준 상태라,
다시 100점씩 더해줌.
+++++++++++++++++++++++++++++++++++++++++++++++++

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   300 | 인천   |
| s134 | 당산동 | 2002-03-01 |   100 | 서울   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s345 | 최재형 | 2004-03-01 |   200 | 인천   |
| s357 | 길동이 | 2000-10-12 |   200 | 인천   |
| s444 | 황길동 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2008-01-08 |  NULL | 인천   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)

mysql> update salesman set sname='당산역'
    -> where day(hire)=01 and point>=200;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   300 | 인천   |
| s134 | 당산동 | 2002-03-01 |   100 | 서울   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s345 | 당산역 | 2004-03-01 |   200 | 인천   |
| s357 | 길동이 | 2000-10-12 |   200 | 인천   |
| s444 | 황길동 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2008-01-08 |  NULL | 인천   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)















################## delete #########################

delete from 테이블명 where 조건



1. 사번이 's134'인 사원의 레코드 삭제
delete from salesman where sno='s134';

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   300 | 인천   |
| s134 | 당산동 | 2002-03-01 |   100 | 서울   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s345 | 당산역 | 2004-03-01 |   200 | 인천   |
| s357 | 길동이 | 2000-10-12 |   200 | 인천   |
| s444 | 황길동 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2008-01-08 |  NULL | 인천   |
+------+--------+------------+-------+--------+
8 rows in set (0.00 sec)

mysql> delete from salesman where sno='s134';
Query OK, 1 row affected (0.03 sec)

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   300 | 인천   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s345 | 당산역 | 2004-03-01 |   200 | 인천   |
| s357 | 길동이 | 2000-10-12 |   200 | 인천   |
| s444 | 황길동 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2008-01-08 |  NULL | 인천   |
+------+--------+------------+-------+--------+
7 rows in set (0.00 sec)

mysql>




2. 출고지가 '당산'인 레코드를 삭제하시오.
delete from car where outlet='당산';

mysql> select * from car;
+-----+--------+------+--------+--------+
| cno | cname  | cc   | weight | outlet |
+-----+--------+------+--------+--------+
| c1  | 소나타 | 1800 |   1200 | 서울   |
| c2  | 소나타 | 2000 |   1300 | 당산   |
| c3  | SM7    | 1700 |   1300 | 인천   |
| c4  | SM7    | 2200 |   1400 | 인천   |
| c5  | 카니발 | 3000 |   1800 | 광주   |
| c6  | SM5    | 2000 |   1300 | 부산   |
| c7  | SM5    | 2500 |   1350 | 부산   |
+-----+--------+------+--------+--------+
7 rows in set (0.00 sec)

mysql> delete from car where outlet='당산';
Query OK, 1 row affected (0.03 sec)

mysql> select * from car;
+-----+--------+------+--------+--------+
| cno | cname  | cc   | weight | outlet |
+-----+--------+------+--------+--------+
| c1  | 소나타 | 1800 |   1200 | 서울   |
| c3  | SM7    | 1700 |   1300 | 인천   |
| c4  | SM7    | 2200 |   1400 | 인천   |
| c5  | 카니발 | 3000 |   1800 | 광주   |
| c6  | SM5    | 2000 |   1300 | 부산   |
| c7  | SM5    | 2500 |   1350 | 부산   |
+-----+--------+------+--------+--------+
6 rows in set (0.00 sec)

mysql>



3. 입사일이 1일인 레코드 모두 삭제.
delete from salesman where day(hire)=01;

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   300 | 인천   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s345 | 당산역 | 2004-03-01 |   200 | 인천   |
| s357 | 길동이 | 2000-10-12 |   200 | 인천   |
| s444 | 황길동 | 2004-11-01 |  NULL | NULL   |
| s555 | 홍길동 | 2008-01-08 |  NULL | 인천   |
+------+--------+------------+-------+--------+
7 rows in set (0.00 sec)

mysql> delete from salesman where day(hire)=01;
Query OK, 2 rows affected (0.03 sec)

mysql> select * from salesman;
+------+--------+------------+-------+--------+
| sno  | sname  | hire       | point | branch |
+------+--------+------------+-------+--------+
| s123 | 기필호 | 1998-10-12 |   300 | 인천   |
| s202 | 김두환 | 2000-05-03 |   400 | 경기   |
| s241 | 임흥석 | 2003-06-12 |   300 | 부산   |
| s357 | 길동이 | 2000-10-12 |   200 | 인천   |
| s555 | 홍길동 | 2008-01-08 |  NULL | 인천   |
+------+--------+------------+-------+--------+
5 rows in set (0.00 sec)

mysql>




4. 차량명이 SM7이거나 배기량이 1800 이상인 레코드 삭제
delete from car where cname='SM7' or cc>=1800;

mysql> select * from car;
+-----+--------+------+--------+--------+
| cno | cname  | cc   | weight | outlet |
+-----+--------+------+--------+--------+
| c1  | 소나타 | 1800 |   1200 | 서울   |
| c3  | SM7    | 1700 |   1300 | 인천   |
| c4  | SM7    | 2200 |   1400 | 인천   |
| c5  | 카니발 | 3000 |   1800 | 광주   |
| c6  | SM5    | 2000 |   1300 | 부산   |
| c7  | SM5    | 2500 |   1350 | 부산   |
+-----+--------+------+--------+--------+
6 rows in set (0.00 sec)


mysql> delete from car where cname='SM7' or cc>=1800;
Query OK, 6 rows affected (0.03 sec)

mysql> select * from car;
Empty set (0.02 sec)

mysql>











######### root password 바꾸기 ############

use mysql
update user set password=password(401) where user='root';
// update user set password=password(새로운 비밀번호) where user='root';
flush privileges;



mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| company            |
| mysql              |
| sqltest            |
| test               |
+--------------------+
5 rows in set (0.00 sec)


mysql> use mysql;
Database changed


mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| func                      |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| proc                      |
| procs_priv                |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
17 rows in set (0.01 sec)



mysql> update user set password=password(401) where user='root';
Query OK, 2 rows affected (0.11 sec)
Rows matched: 2  Changed: 2  Warnings: 0



mysql> flush privileges;
Query OK, 0 rows affected (0.24 sec)



mysql> quit                        // 새로운 비번으로 접속해보기 위해서 quit !
Bye

C:\Documents and Settings\Administrator>mysql -u root -p
Enter password: ***        // 새로운 비밀번호(401)임을 자리수로 미루어 알 수 있다.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.0.45-community-nt MySQL Community Edition (GPL)

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>
Comment 0 Trackback 0
Top

prev 1 next