MySQL 시스템 관리와 프로그래밍 : 자바, PHP, 펄, C, 파이썬 (개정판)
조지 리스,랜디 제이 야거,팀 킹,휴 윌리엄스 지음/서환수 옮김| 한빛미디어 | 2002년 10월


구입한지 한참 되는 책인데 안보고 꽂아만 두다가
이번에 잡았는데 다 아는 내용인 듯 하다.

하지만 개발에서 중요한 것은 이 책에서 내가 필요한 5%를 찾아
내것으로 만드는 것 그것이 필요한 것이므로...
1부와 8장/13장/ 읽고 실행해보다.

15/16/17장이 개발하면서 필요한 자료...

[13장 코드를 typing 한 이유]
위와 같은 소스를 타이핑 해 본 것은 이책이 나온 2002년의 코드를 사용할 수 있다는 것이다.
기본적인 개념을 이해/암기하고 있다면,
JDK 의 버전이 바뀐다고 legacy code를 사용할 수 없는 것은 아니란 점을 확인하기 위해
따라해 보고 실행까지 해보다.

(사실, jdbc를 이용한 적이 별로 없어서 눈으로는 익숙하나... 이번 기회에 코딩도 익숙해지기 위해서 정확히 이해하고 코딩하고, 기존 샘플을 제대로 확인하고 하는데 촛점을 두다.




1부. 소개
1장.MySQL
- mSQL에서 ... 뭐 MySQL 5.0이 출시되는데 ... 기능이 대폭 업그레이드 되었다고한다. 생각엔 ms-sql 6.5 정도 되지 않을까?
2장.설치
- mysql 계정으로 돌아가는 것이 중요
- 컴파일시 charset=euckr 로 ...
- mysqladmin -u root password **** ( root 계정 설정/ 운영체제의 root 계정과는 다르다.)
- mysq_install_db 로 설정해둔 위치에 mysql DB와 test DB가 생성된다.
- chown -R mysql.mysql data 해줘야 된다.
- mysqld_safe &
- shutdown은 mysqladmin -u root -p shutdown

3장.MySQL 의 SQL

읽으면서 실행본 sql 문...

create table temptable
(
uid mediumint(3) NOT NULL PRIMARY KEY,
name varchar(12) NOT NULL,
title varchar(255) NOT NULL,
page_text varchar(100) NOT NULL,
FULLTEXT( title, page_text),
fruit ENUM ( 'apple', 'oragne', 'pear'),
UNIQUE INDEX index2(name));
select url from Document
where match( title, page_text) against ('java')
select url from Document
where match(title, page_text) against('+MySQL -Java' IN BOOLEAN MODE);
SET AUTOCOMMIT = 0;
BEGIN;

COMMIT;
ALTER TABLE;
BEGIN;
CREATE INDEX;
DROP DATABASE;
DROP TABLE
LOCK TABLES
RENAME TABLE
TRUNCATE
UNLOCK TABLES

ROLLBACK;

LOCK
LOCK TABLES ACCOUNT WRITE;
UNLOCK TABLES;

DATE_FORMAT('1972-07-22', '%W, %M %D, %Y');



4장.데이터베이스 관리
*설정
- /etc/my.cnf 화일이 없다. *_*
- 서버 시작과 종료

*로그
- 에러/이진/질의/느린 질의 로그
- /etc/logstate.d/mysql

*설정 및 튜닝
*액세스 제어
*로깅
*백업 및 복구
mysqldump
mysqlcheck


테이블 관리



2부. MySQL 관리
5장.퍼포먼스 튜닝
6장. 보안
7장. 데이터베이스 설계

3부. MySQL 프로그래밍

- 데이터베이스의 파워는 그 데이터베이스를 사용하는 도구를 통해 느낄 수 있다.

8장.데이터베이스 애플리케이션
구조
1] c/s : application logic , thin client, fat client
2] distributed application (multi tier) : 비지니스 로직을 분리되어 있어 UI변경에 쉽게 대응 할 수 있고, 문제 해결 및 시스템 확장이 쉽다.
3] web

접속과 트랜잭션
데이터베이스 API를 통해 처리
언어에 종속적인 API를 사용하기 위해서는 개념적인 부분을 이해해야 된다.

1] 접속
-접속하여 데이터 주고 받기, 작업 완료후 모든 자원 해제
-에러
-예외

2] 트랜잭션
무엇보다 트랜잭션을 사용하면 속도가 크게 저하된다는 문제점이 있다. MySQL은 원래 빠른 데이터베이스 엔진을 목표로 삼았기 때문에 트랜잭션을 지원하지 않았다.
transaction isolation level

용어]
Dirty read / Repeatable read/ Phantom read

3] 트랜잭션과 관련된 데이터 처리에 대한 기본 내용




9장.펄
10장. 파이썬
11장. PHP
12장. C API
13장. 자바
JDBC API
type 1, type 2, type 3, type 4


MySQL 연결

InitialContext ctx = new InitialContext()
DataSource ds = (DataSource)ctx.lookup("jdbc/myds")
Connection conn = ds.getConnection("userid", "password")



드라이버 관리자 연결

java -Djdbc.drivers=com.caucho.jdbc.mysql.Driver MyAppClass

Class.forName("twz1.jdbc.mysql.jdbcMysqlDriver").newInstance()

Connection conn = DriverManager.getConnection("jdbc:mysql-caucho://carthago/web", "someuser", "somepass");

JDBC 예제

import java.sql.*;

public class Connect
{
public static void main(String[] args)
{
Connection conn = null;

try
{
String url = "jdbc:mysql://athens.imaginary.com/Web?user=someuser&password=somepass";

Statement stmt;
ResultSet rs;
Class.forName("org.gjt.mm.mysql.Driver");
con = DriverManager.getConnection(url);

stmt = con.createStatement();
rs = stmt.executeQuery("SELECT * FROM TEST ORDER BY TEST_ID");
System.out.println("Got results:");
while(rs.next())
{
int a = rs.getInt("TEST_ID");
String str = rs.getString("TEST_VAL");


System.out.println("key=" + a);
System.out.println("str="+str);

}
stmt.close();

}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
if( conn != null)
{
try { con.close(); }
catch(Exception e) {}
}
}
}
}


데이터 소스
class="com.evermind.sql.DriverManagerDataSource"
name="AddressBook"
url="jdbc:mysql//cartage/Address?user=test&password=test"







14장. MySQL 확장

4부. MySQL 레퍼런스
15장. MySQL에서의 SQL 문법
16장. MySQL 데이터 유형
17장. 연산자와 함수
18장. MySQL PHP API 레퍼런스
19장. C 레퍼런스
20장. 파이선 DB-API
Posted by iarchitect