'DBMS'에 해당되는 글 2건

  1. 2014.06.24 PHP 5 투토리얼 (4) - Database
  2. 2007.11.18 MS SQL Server 2008에서 Spatial Option 지원
기타/웹 2.02014. 6. 24. 17:06

이제 4번째네요... PHP로 할 수 있는 게 정말 다양하다는 걸 다시한번 느꼈습니다. 그리고... 그냥 javascript면 대충 해결되겠지... 라고 생각했는데... 참으로 거시기하네요. 오히려 웹앱을 개발하려면 서버측 개발이 더 중요한데 말이죠.


MySQL  개요


  • MySQL은 웹에서 사용되는 DBMS. 서버에서 수행됨. 크기에 관계없이 사용가능. 
  • 빠르고, 신뢰성 높고, 사용하기 쉬움. 표준 SQL의 지원, 다양한 platform 지원, 무료
  • Oracle에서 개발 보급. 이름은 공동개발자의 딸의 이름(My)를 따서 지음
  • 특히 MySQL + PHP 를 하면 cross-platform 으로 매우 유용함
  • MySQL을 어떻게 사용하는가는 SQL을 얼마나 잘 할 수 있는가에 달려있음.


MySQL 서버에 접속


<?php

$con = mysqli_connect("example.com", "peter", "abc123", "my_db");

// host, username, password, db_name

if (mysqli_connect_errno()) {

echo "Failed to connect to MySQL. : " . mysqli_connect_errno();

}


....


mysqli_close($con);

?>



Create DB / Create Table


  • cafe24 호스팅의 경우, 새로운 DB를 생성할 수 없음. 기존의 DB를 사용해야 함. 
  • 기존 DB 명은 사용자id와 동일


....

$sql = "CREATE DATABASE my_db";

if(!mysqli_query($con, $sql) {

echo "Error creating DB : " . mysqli_error($con);

} else {

echo "Successful";

}


$sql ="CREATE TABLE Persons(

PID INT NOT NULL AUTO_INCREMENT,     //

PRIMARY KEY(PID),                                // PID를 primary key!

FirstName CHAR(30), 

LastName CHAR(30), 

Age INT)";


if(!mysqli_query($con, $sql) {

echo "Error creating Table : " . mysqli_error($con);

} else {

echo "Successful";

}



Insert a row


  • INSERT INTO table_name VALUES (value1, value2, value3,...)
  • INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)

  • 데이터 입력을 받는 폼

<html>

<body>


<form action="insert_data.php" method="post">

Firstname: <input type="text" name="firstname"><br />

Lastname: <input type="text" name="lastname"><br />

Age: <input type="text" name="age"><br />

<input type="submit">

</form>


</body>

</html>


  • 실제로 Table에 입력해 주는 php

<?php

$con=mysqli_connect("localhost","id","pw","dbname");

// Check connection

if (mysqli_connect_errno()) {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();

}


// 폼에서 입력된 항목을 SQL INJECTION 을 방지하기 위해 escape 처리

$firstname = mysqli_real_escape_string($con, $_POST['firstname']);

$lastname = mysqli_real_escape_string($con, $_POST['lastname']);

$age = mysqli_real_escape_string($con, $_POST['age']);


$sql="INSERT INTO Persons (FirstName, LastName, Age)

VALUES ('$firstname', '$lastname', '$age')";


if (!mysqli_query($con,$sql)) {

  die('Error: ' . mysqli_error($con));

}

echo "1 record added";


mysqli_close($con);

?>



Read Data from MySQL


  • mysqli_query()를 사용하여 SELECT 문을 사용하면 데이터를 읽을 수 있음
  • mysqli_fetch_array를 사용하면 한 record 씩 배열로 받아짐.
  • 그 결과를 html로 표현함.

<?php

$con=mysqli_connect("localhost","id","pw","db_name");

// Check connection

if (mysqli_connect_errno()) {

  echo "Failed to connect to MySQL: " . mysqli_connect_error();

}


$result = mysqli_query($con,"SELECT * FROM Persons");


echo "<table border='1'>

<tr>

<th>Firstname</th>

<th>Lastname</th>

</tr>";


while($row = mysqli_fetch_array($result)) {

  echo "<tr>";

  echo "<td>" . $row['FirstName'] . "</td>";

  echo "<td>" . $row['LastName'] . "</td>";

  echo "</tr>";

}


echo "</table>";


mysqli_close($con);

?>






















Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요

공간정보/측량2007. 11. 18. 17:57
갱신 : Spatial Data Type를 지원하는 SQL Server 2008의 테스트 버전(CTP : Community Tech Preview)을 다운로드 받으실 수 있습니다. 여기를 누르시면 됩니다. Spatial Data Type에 관한 내용은 화이트 페이퍼이글을 읽어보시면 됩니다.


대용량의 GIS 어플리케이션을 개발하기 위해서는 GIS에 내장된 데이터베이스보다는 별도의 상업용 데이터베이스시스템과 연결하는 것이 바람직합니다. 이를 위해서 현재 대부분 Oracle의 Spatial Option을 많이 사용하고 있습니다. 특히 우리나라에서는 2007년 현재 ORACLE의 시장점유율이 50%이상인 상태이고, 지리정보를 지원하는 Spatial 기능은 거의 대부분 오라클을 사용하고 있는 것으로 알고 있습니다. (정확한 현황을 아시는 분은 댓글 부탁드립니다.)

그런데, 새로 개발중인 마이크로소프트의 SQL Server 2008에서는 Spatial 기능을 지원한다고 합니다. 자세한 내용은 여기를 들어가 보세요. 여기를 누르면 데모 비디오를 보실 수 있습니다. 주요 기능을 나열하면 다음과 같습니다.
  • geography 데이터 타입 지원 : 측지자료 저장 및 처리
  • geometry 데이터 타입 지원 : 2차원 자료 저장 및 처리
  • 새로운 공간 인덱싱을 사용한 고성능 쿼리
  • 지리정보 표준을 지원하여 위치기반 응용을 통합함으로써 공간자료의 기능을 확장
현재 SQL Server 2008의 Spatial 기능을 지원하겠나고 나선 파트너는 GIS 분야의 최강자인 ESRI를 포함하여 11개 업체라고 합니다. (사실 ESRI를 제외하면 저는 아는 회사가 없네요.)

아무튼... 어떠한 업체가 한가지 솔루션을 독점한다는 것은 좋은 일은 아니죠. 둘이 많이 싸웠으면 좋겠습니다. ㅎㅎㅎ

민, 푸른하늘
Posted by 푸른하늘 푸른하늘이

댓글을 달아 주세요