블로그 이미지

내 인생의 가장 젊은 날

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


'MySQL'에 해당되는 글 8건

  1. 2008.01.30 완전 수작업으로 홈페이지 만들기, 어렵고나;;(2)
  2. 2008.01.17 MySQL : php와 DB의 연결 2(1)
  3. 2008.01.16 MySQL : php와 DB의 연결
  4. 2008.01.15 MySQL : select, update, alter, delete, drop...
  5. 2008.01.11 MySQL : 중간테스트
  6. 2008.01.10 MySQL : select, update, delete (DML)
  7. 2008.01.09 MySQL : 시작, DDL
  8. 2007.10.11 윈도우즈용 APM(Apache, PHP, MySQL) 설치하기 2편.(5)

완전 수작업으로 홈페이지 만들기, 어렵고나;;


http://ruffi.mireene.com

요즘 배우고 있는, 홈페이지 만들기..

네트워크 보안을 배우러 왔다가 홈페이지 만들기만 배우고 갈 듯 싶다;

ㅠ.ㅠ


회원 가입과 게시판 등..
PHP와 MySQL을 이용해 완전 수작업했다.
그래도 예전에 혼자서 해보려고 용쓰다가 포기했던 걸 생각해보면,
이런 걸 배우는 게 나름 재밌긴 하다.
내가 원했던 돈벌기 수단과는 좀 많이 먼 것 같긴 하지만,
이런 게 다 차곡차곡 쌓여서 그저 내 실력이 되기를...

그나저나 CCNA는 언제 볼까나..
수업으로 배워서 칠 생각은 버린 지 오래 됐고,
여기저기 돌아다니는 소스로 시험을 치기엔 조금 부담스럽다.
결국.. 책으로 한 번 훑어본 다음 소스를 참고하는 방법으로!

에효.. 외우기만 하면 되는데... 그게 안되니 원;


Comment 2 Trackback 0
  1. Favicon of http://yomentie.tistory.com/ Kristin 2008.02.05 21:28 address edit & delete reply

    홈페이지 따로 만드시게요?^^

    돈벌기 수단이라~~~
    흠... 어떻게 하면 돈 벌기 수단이 되는지 궁금 ^^
    저도 좀 갈켜주시면? ㅋㅋㅋ

    새해 복 많이 받으세요 ^^

    • Favicon of https://blog.openuri.net 하늘치 2008.02.06 15:33 신고 address edit & delete

      하핫;

      돈 벌기 수단이라고 함은,
      직업을 우회적으로 표현한 것에 불과하답니다.. ^^;

      크리스틴님도 새해 많은 복을 받고, 또 나눠주시길 바랍니다~ 저한테도 좀 주시고요.. ㅋㅋㅋ

Top

MySQL : php와 DB의 연결 2


1. php_exam 이라는 DB에 member 라는 테이블 생성
==================================================================

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


mysql> use php_exam;
Database changed


mysql> show tables;
+--------------------+
| Tables_in_php_exam |
+--------------------+
| php_tbl            |
+--------------------+
1 row in set (0.00 sec)


mysql> create table member(name varchar(10), phone varchar(15), sex varchar(4), address varchar(50), age varchar(4));
Query OK, 0 rows affected (0.08 sec)


mysql> show tables;
+--------------------+
| Tables_in_php_exam |
+--------------------+
| member             |
| php_tbl            |
+--------------------+
2 rows in set (0.00 sec)





2. 생성된 테이블에 내용을 입력하기 위한 php 페이지 작성.
==================================================================

1) 회원등록과 회원검색을 위한 페이지를 만든다.
-> m_main.php

2) 웹상에서 입력할 수 있게 하는 form 양식의 페이지를 만들고,
-> m_form.php

3) 먼저 MySQL에 접속, 그리고 원하는 DB에 접속할 수 있게 하는 파일을 다른 어느 페이지에서든 include 할 수 있게끔 따로 만들어 놓은 후, 
-> dbinfo.inc

4) 폼에서 입력한 내용을 데이타베이스(DB)에 저장(insert)시키는 페이지를 만든다. 여기에 dbinfo.inc를 include 시킨다.
-> m_insert.php


1)m_main.php
<HTML>
<HEAD></HEAD>

<BODY>
<h3>간단한 회원 등록 및 검색 서비스</h3>
1. <a href="m_regist.php">회원 등록</a><br>
2. <a href="m_search.php">회원 검색</a><br>
</BODY>

</HTML>


2)m_form.php
<form name=f1 method=post action=m_insert.php>

<table>
    <tr>
        <td>회원이름 : </td>
        <td><input type=text name=name></td>
    </tr>

    <tr>
        <td>전화번호 : </td>
        <td><input type=text name=phone></td>
    </tr>

    <tr>
        <td>남녀성별 : </td>
        <td><input type=radio name=sex value=male>남자
              <input type=radio name=sex value=female>여자</td>
    </tr>

    <tr>
        <td>주소 : </td>
        <td><select name=address1 size=1>
                <option value="서울">서울</option>
                <option value="경기">경기</option>
                <option value="강원">강원</option>
                <option value="충북">충북</option>
                <option value="충남">충남</option>
                <option value="경북">경북</option>
                <option value="경남">경남</option>
                <option value="전남">전남</option>
                <option value="전북">전북</option>
                <option value="제주">제주</option>
            </select>
            <input type=text size=50 name=address2></td>
    </tr>

    <tr>
        <td>나이 : </td>
        <td><input type=text name=age></td>
    </tr>

    <tr>
        <td colspan=2>
            <input type=submit value=입력>
            <input type=reset value=취소>
        </td>
    </tr>

</table>
</form>


3)dbinfo.inc
<?php

$host="localhost";
$user="root";
$password="apmsetup";

$conn=mysql_connect($host, $user, $password);        //mysql 연결 설정
mysql_select_db("php_exam", $conn);                        //DB에 접속


/*
연결 확인
if($conn) echo "db연결";
else echo "db연결 실패";
*/

?>


4)m_insert.php
<?php

include 'dbinfo.inc';            //설정파일 불러오기

if($sex==male)                   //성별 결정
    $sex="남자";
else if($sex==female)
    $sex="여자";

$address=$address1. " " .$address2;    //주소 완성


/* insert 구문 */
$sql="insert into member values('$name', '$phone', '$sex', '$address', '$age')";
mysql_query($sql, $conn);        //sql 질의 수행.

mysql_close($conn);                //db 연결 종료. ram 에서 삭제.

echo "등록 완료. 축하드립니다. <br>";
echo ("<a href='m_main.php'>초기화면으로</a>");

?>


*** 지금까지의 결과... ***
사용자 삽입 이미지







사용자 삽입 이미지





5)m_list.php

<?php

include 'dbinfo.inc';  //db연결부분.

$sql="select * from member order by name"; //선택 질의
$sql_result=mysql_query($sql, $conn);  //질의 수행.

$count=mysql_num_rows($sql_result);  //행의 개수


//레코드 출력부분.
echo ("<table border=1 width=500>
 <tr>
  <td>회원명</td>
  <td>전화번호</td>
  <td>성별</td>
  <td>주소</td>
  <td>나이</td>
     </tr>");  
 


for($i=0; $i<$count; $i++)
{


/*  //첫번째 방법

 $name=mysql_result($sql_result, $i, name);
 $phone=mysql_result($sql_result, $i, phone);
 $sex=mysql_result($sql_result, $i, sex);
 $address=mysql_result($sql_result, $i, address);
 $age=mysql_result($sql_result, $i, age);

echo ("<tr>
    <td>$name</td>
    <td>$phone</td>
    <td>$sex</td>
    <td>$address</td>
    <td>$age</td>
 </tr>");  // 한 레코드씩 찍어주는 부분.

*/



/*  //두번째 방법 */

$result_array=mysql_fetch_array($sql_result);
echo("<tr>
   <td>$result_array[name]</td>
   <td>$result_array[phone]</td>
   <td>$result_array[sex]</td>
   <td>$result_array[address]</td>
   <td>$result_array[age]</td>
  </tr>");  


}

echo ("</table>");
echo ("<br><a href='m_main.php'>초기화면으로</a>");


?>



*** 지금까지의 결과보기. ***
* 웹에서 등록해보기



* 등록한 후, 입력.
사용자 삽입 이미지


* 입력한 내용을 확인할 수 있다.
사용자 삽입 이미지


* 입력한 내용을 MySQL에서도 확인.


Comment 1 Trackback 0
  1. Favicon of https://blog.openuri.net 하늘치 2008.01.19 11:15 신고 address edit & delete reply

    윽; 태안은 충남인데;;

Top

MySQL : php와 DB의 연결


=====================================================================
1 번째. 먼저 MySQL에서 'php_exam'이라는 database 를 하나 만든다.
=====================================================================

mysql> create database php_exam;
Query OK, 1 row affected (0.06 sec)

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

mysql> use php_exam;
Database changed

mysql> show tables;
Empty set (0.00 sec)



======================================================================
2번째. 웹에서 테이블을 만들수 있게 하는 php페이지를 작성한다.
======================================================================

<?php
// 1. 연결 : mysql_connect(호스트명, 아이디, 비밀번호)
$conn=mysql_connect('localhost', 'root', 'apmsetup'); //db 연결부분

     /*
     if($conn)
      echo "db연결성공";
     else
      echo "db연결 실패";
     */

// DB 선택 : mysql_select_db(해당 db명, $conn)
$db=mysql_select_db("php_exam", $conn);
if($db)
 echo "db 연결성공";
else
 echo "db 연결 실패";


// DB에 table 쿼리(query 질의).
$sql="create table php_tbl(num int, name varchar(10))";
//mysql_query($sql, $conn)  db에 질의 수행.
mysql_query($sql, $conn);
?>

// 테이블이 생성되었음을 알려주는 경고창. 물론, 쿼리와 직접적 상관은 없다;
<script>
alert("테이블 생성");
</script>



======================================================================
3번째. 웹에서 만든 테이블을 mysql에서 확인.
======================================================================

msql> show tables;
+--------------------+
| Tables_in_php_exam |
+--------------------+
| php_tbl            |
+--------------------+
1 row in set (0.00 sec)

mysql> desc php_tbl;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| num   | int(11)     | YES  |     | NULL    |       |
| name  | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)


======================================================================
4번째. 이번에는 웹에서 테이블 내용을 입력하게 하는 php 페이지 작성.
======================================================================

<?php

$host="localhost";
$user="root";
$password="apmsetup";

$conn=mysql_connect($host, $user, $password);
mysql_select_db("php_exam", $conn);

$sql="insert into php_tbl values(1, '홍길동')";
mysql_query($sql, $conn);

$sql="insert into php_tbl values(2, '루피')";
mysql_query($sql, $conn);

?>

<script>
alert("DB 입력 성공! mysql에서 확인해보세요!");
</script>



======================================================================
5번째. 웹에서 입력한 테이블 내용을 MySQL에서 확인하기.
======================================================================

mysql> select * from php_tbl;
+------+--------+
| num  | name   |
+------+--------+
|    1 | 홍길동 |
|    2 | 루피   |
+------+--------+
2 rows in set (0.02 sec)








======================================================================
special test..  내맘대로 만들어보기.
======================================================================






======================================================================
6 번째. 입력된 내용을 불러와 웹상에서 확인해보기.
======================================================================
http://localhost/db_m/dbselect.php
<?php

$conn=mysql_connect('localhost', 'root', 'apmsetup');     //MySQL 접속 및 설정 저장
mysql_select_db("php_exam", $conn);            //DB 접속

$sql="select * from php_tbl";                         //test 테이블의 레코드를 모두 뽑아오기
$sql_result=mysql_query($sql, $conn);          //질의(위 내용)를 수행하라.


$count=mysql_num_rows($sql_result);          //mysql_num_rows() 함수 : 행의 개수를 세는 함수.
echo $count;     //mysql query 수행 후 반환되는 결과값을 매개변수로 받고 그 레코드의 개수를 반환

echo "<br><br>";




//mysql_result(쿼리실행결과, 행번호, 변수값) : 결과값을 행 단위로 화면에 출력해주는 함수.
/*
for($i=0; $i<$count; $i++)
{
    $num=mysql_result($sql_result, $i, num);
    $name=mysql_result($sql_result, $i, name);
   
    echo "$num : $name <br>";
}
*/



//mysql_fetch_array($sql_result) 배열 형식으로 결과값을 화면상에 출력해주는 역할..
for($i=0; $i<$count; $i++)
{
    $result_array=mysql_fetch_array($sql_result);
    echo "$result_array[num] : $result_array[name] <br>";
}

?>

실행 결과

Comment 0 Trackback 0
Top

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

MySQL : 시작, DDL

음.. 이걸 뭐라고 하더라;;
암튼, 일반적으로 아래와 같다,고 한다.

PHP + MySQL + Apache Server + Linux
ASP + MS_SQL + WINDOWS 서버계열(IIS)
JSP + ORAQLE + 톰캣 + 여러운영체제..

본인은 첫 번째를 배우는 중이고..
그러므로 이것은 그에 대한 정리이다..


MySQL의 대표적인 명령어.
DDL(Data Define Language)
    - create, drop, alter
DML(Data Manipulation Language)
    - select, insert, delete, update
DCL(Data Control Languge)
    - grant, revoke
DBMS(Data Base Management System)
    - MySQL, 오라클, MS-SQL   (<-> 엑세스)
DBA(DB관리자)


MySQL의 시작
Microsoft Windows [Version 5.2.3790]
(C) Copyright 1985-2003 Microsoft Corp.

C:\Documents and Settings\Administrator>mysql -u root -p
Enter password: *******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.0.45-community-nt MySQL Community Edition (GPL)

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

mysql>


아, 그런데 SQL?
Structual Query Language.


일단 MySQL의 번전과 현재 날짜를 확인해보았다. (그렇게 배웠으니까 ^^;)
mysql> select version(), current_date;
+---------------------+--------------+
| version()                  | current_date  |
+---------------------+--------------+
| 5.0.45-community-nt   | 2008-01-09    |
+---------------------+--------------+
1 row in set (0.06 sec)

mysql>


데이타베이스 만들기, 확인
mysql> create database test;
Query OK, 1 row affected (0.00 sec)

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

mysql>


데이타베이스 지우기, 확인
mysql> drop database test;
Query OK, 0 rows affected (0.00 sec)

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

mysql>


데이타베이스 사용하기
/* 다시 test라는 데이타베이스를 만든다... */

mysql> create database test;
Query OK, 1 row affected (0.00 sec)

/* use 라는 명령어로 해당 데이타베이스를 활성화.. (맞나? ㅋ) */
mysql> use test;
Database changed
mysql>
- 이제 test라는 데이타 베이스를 사용해서 작업을 할 수 있다.


해당 데이타베이스에 테이블 만들기 및 확인하기.
mysql> create table salesman(
     -> sno char(4) primary key,
     -> sname char(10) not null,
     -> hire date,
     -> point smallint,
     -> branch char(10)
     -> );
Query OK, 0 rows affected (0.52 sec)


mysql> desc salesman;
+--------+-------------+------+-----+---------+-------+
| Field    | Type            | Null   | Key | Default   | Extra   |
+--------+-------------+------+-----+---------+-------+
| sno      | char(4)        | NO   | PRI  |              |          |
| sname  | char(10)       | NO   |       |              |          |
| hire      | date            | YES  |       | NULL      |          |
| point    | smallint(6)    | YES  |       | NULL      |          |
| branch | char(10)       | YES  |       | NULL      |          |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.05 sec)


mysql> show tables;
+----------------+
| Tables_in_test   |
+----------------+
| salesman       |
+----------------+
1 row in set (0.00 sec)

mysql>




테이블명 수정하기
mysql> alter table salesman rename employee;
Query OK, 0 rows affected (0.16 sec)

mysql> show tables;
+----------------+
| Tables_in_test   |
+----------------+
| employee        |
+----------------+
1 row in set (0.00 sec)


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

mysql> show tables;
+----------------+
| Tables_in_test   |
+----------------+
| salesman       |
+----------------+
1 row in set (0.00 sec)

mysql>


일단, 오늘은 여기까지... See you~
Comment 0 Trackback 0
Top

윈도우즈용 APM(Apache, PHP, MySQL) 설치하기 2편.

본 내용은, 윈도우즈용 APM(Apache, PHP, MySQL) 설치 과정을 가능한 자세하게 풀어놓은, 왕초보를 위한 초디테일 가이드가 되겠습니다. 지나치게 상세한 내용에 알레르기를 일으키시는 분들은 대충 넘어가셔도 좋습니다.

그리고 포스팅하는 하늘치군 역시 아직까지는 초초초왕초보이므로, 자세한 질문은 재량껏 무시하도록 하겠습니다. (^^;

- 해적왕 루피 ㅋ -




■ 목차

1. 아파치Apache 설치하기.
2. MYSQL 설치하기.
3. MYSQL 설정하기.
4. PHP 설치하기.
5. PHP와 Apache 연동하기.
6. PHP와 MYSQL 연동하기.
7. [연습] 사용자 계정 생성 및 DB를 계정자에게 할당




제2편. MYSQL 설치하기.


2-1. MySQL 다운받기.


► MySQL은  아래 홈페이지 , http://www.mysql.com 에서 내려받을 수 있습니다.
요번엔 좀 복잡할 수도 있으니 어지럽더라도 잘 따라오시기 바랍니다;
역쉬, 이번에도 빨간박스가 보입니다. 'Community'를 클릭해줍시다!
사용자 삽입 이미지



► 자, 커뮤니티Community를 클릭했더니 좌측에 Downloads가 나타났습니다.
마치 뿅망치로 두더지를 잡듯이, 쿡! 눌러줍니다.
사용자 삽입 이미지



► Downloads를 눌렀더니, 'MySQL Community Sever'와 'MySQL Enterprise'가 보이네요..
안보인다고요?  스크롤을 내려봐요. 보이죠? 그럼 Community 버전의 'Download'를 클릭합시다.
사용자 삽입 이미지



► 자, 이제 또 윈도우즈Windows를 선택해야 할 시간입니다.
사용자 삽입 이미지




► windows downloads 를 확인한 후 미러사이트를 클릭합니다.
빨간 박스 보이시죠? Pick a mirror를 클릭합니다.
사용자 삽입 이미지




► 이번에는 로그인 같은데; 괜히 엉뚱하게 시간 낭비하지 말고, 그 아래 있는 'No thanks, just...' 를 클릭합니다.
사용자 삽입 이미지




► 오호.. 한국이라 그런지, 한국의 미러 사이트가 먼저 뜨네요;;
사용자 삽입 이미지




► 드디어, 내려받기 과정의 끄트머리에 도착했스빈다!! ㅋㅋㅋ 빨간 박스의 'HTTP'를 클릭하시면 됩니다.
바로 실행을 하든지 아니면 일단, 저장을 하시든지,  자유입니다. ㅎㄷㄷ;
사용자 삽입 이미지




2-2. MySQL 설치하기.

►  자, 이제 내려 받은 프로그램을 실행시켜 봅시다. 일단, 다음으로 넘어갑시다.
사용자 삽입 이미지




►  Typical 로 지정되어 있네요.
사용자 삽입 이미지




► Custom 으로 바꿔준 다음, Next를 클릭합니다.
사용자 삽입 이미지




► 여기에서는 'Change'를 눌러 프로그램을 설치할 경로를 지정해줍니다. 나중에 찾기 쉽도록 정해보겠습니다.
사용자 삽입 이미지




► 새로운 창이 뜨면서 설치 경로를 변경할 수 있게 되었네요. 바꿔주겠습니다!
사용자 삽입 이미지




► 여기에서 'D:\MySQL5'라고 한 것은 윈2003서버가 D드라이버에 설치되어 있기 때문입니다.
경로 지정 후, 'OK' 를 눌러줍니다.
사용자 삽입 이미지




► 경로가 지정된 것을 확인할 수 있네요. 다시 뒤로 돌아가기 위해서 'Back'를 클릭합니다.
사용자 삽입 이미지




► 아까 'Custom'으로 바꿔줬던 것을  처음 설정, 그대로 바꿔주어야 합니다.
사용자 삽입 이미지




► 이렇게 말이죠.. 그러고보니 일반적으로 권장하는 설치 형식이랍니다. 
사용자 삽입 이미지




► 자, 이제 정말(?) 설치 준비가 끝났습니다. Install을 강하게 눌러줍시다!
사용자 삽입 이미지




► 뭔지 모르지만, 광고 같습니다;; 그냥 넘어갑니다.
사용자 삽입 이미지




► 광고는 이제 그만;;
사용자 삽입 이미지




►  설치가 끝났다고 나오네요; Finish를 눌러줍니다.
사용자 삽입 이미지




►  하지만, 또 다른 설정이 남아 있다는 말씀! ㅡㅡ;
사용자 삽입 이미지




► 여기에서도 아까처럼 'Standard Configuration'을 선택합니다.
사용자 삽입 이미지




► 이렇게 말이죠;
사용자 삽입 이미지




► 그리고 여기에서는  모두 선택해 준 다음, Service Name을 'MySQL5'로 변경해줍니다.
그리고는 다시 'Back'!
사용자 삽입 이미지




► 그리고 원 설정으로 돌려놓은 후, Next!
사용자 삽입 이미지




► 이제는 계속  Next를 클릭합니다. Developer Machine이라면.. 개발자 모드인가요;;
사용자 삽입 이미지




► 역시 Next!
사용자 삽입 이미지




► 경로를 확인하나 봅니다.
사용자 삽입 이미지




► 역쉬 Next~
사용자 삽입 이미지




► 아래 그림과 같이 설정되었는지 확인해봅시다. 참, MySQL의 포트 넘버는 3306이랍니다.
사용자 삽입 이미지




► 한 번만 더 고생합시다; 'Standard Character Set'을 'Manual...' 로 바꿔줍니다.
사용자 삽입 이미지




► Manual ... 에서 'Character Set'을 'euckr'로 변경해주시라!  그리고
사용자 삽입 이미지




►자,...  다시 아까 나왔던 방송;
사용자 삽입 이미지




► 뭔가를 적는 게 나왔네요. ㅎ;ㅎ'
사용자 삽입 이미지




► root, 전체 관리자의 비밀 번호를 입력합니다.
사용자 삽입 이미지




► Execute, 실행에 옮길 때입니다!
사용자 삽입 이미지




► 오.. 완료되었군요.  Finish를 지그시 눌러줍니다.
사용자 삽입 이미지




► 서비스 항목에서 MySQL5가 설치되었음을 알 수 있네요. 수고하셨습니다. ^^
사용자 삽입 이미지



Comment 5 Trackback 0
  1. Favicon of http://myjay.net myjay 2007.10.12 07:41 address edit & delete reply

    드디어 입문하셨구려..ㅋㅋ

    • Favicon of https://blog.openuri.net 하늘치 2007.10.13 04:50 신고 address edit & delete

      정리 겸사겸사 올리려고 했는데, 너무 시간도 많이 걸리고, 힘드네욤; 아무리 생각해봐도 비효율적이라, 앞으로도 올릴지는 미지수;;;

  2. Favicon of https://blog.openuri.net 하늘치 2008.01.05 14:41 신고 address edit & delete reply

    음;;
    알고보니, APM 통합 패키지가 있더군요;;;

    난, 대체 뭘 한거지;

  3. mOok 2008.01.25 00:23 address edit & delete reply

    헉 이거 설치하는거 간신히 찾았는데 이제 안올리시는군요 ㅠㅠ

    아~ 잘 보고 sql설치까지는 정말 잘했습니다. (__)

    다른데는 죄다 좀 만져본사람들이 까는지.. 맨처음부터 설명은 님이 처음이에요 ㅠㅠ

    정말 감사하고요 기회되시면 앞으로도 부탁드려요 (__)

    • Favicon of https://blog.openuri.net 하늘치 2008.01.28 20:54 신고 address edit & delete

      이런이런.. 답이 늦었네요;;;
      자세하게 한다고 했는데;;
      너무 힘들었어요..

      그리고 지금은 편하게 쓸 수 있는 APMsetup 이라는 게 있더라구요. ^^ 저는 잘 쓰고 있습니다..만, 언제 다시 계획대로의 포스팅을 재개할지는 모르겠습니다..

      참, apmsetup 은 아래 페이지로 가시면 되요~

      http://www.apmsetup.com/

      apmsetup 6 버전은 아직도 테스팅중이라, apmsetup5를 받으셔서 설치하시면 될꺼에요~

Top

prev 1 next