APM 팁 모음$Date: 2003/08/07 01:04:21 $
Copyright © 2002 by GNU GPL 홈페이지를 만들면서 그동안 조그마한 팁을 모아 놓은 것입니다. 고친 과정 |
---|
고침 0.1 | 2002-11-16 | 고친이 김 용일 | 최초 작성 |
홈페이지를 만들면서 그동안 조그마한 팁을 모아 놓은 것입니다. apache, mysql, php, perl 에 관련된 문서 입니다.
한글을 살리고 나라를 살리는 길은, 과학적으로 으뜸가는 세벌식을 사용하는 것뿐입니다. 대한민국 과학기술을 살리는길은 쉬운 한글로 된 문서를 만드것입니다. 외국문서를 자기 혼자만 보고 말것이 아니라, 쉽게 번역, 보충해서 초중고생들로 볼수 있게 해야 합니다. 나라를 잘 살고, 부강하게 해야 하는 이유는 다른나라나, 인종에게 서러움을 받지 않기 하기 위함입니다.
관련서적과 여러 인터넷 사이트를 운영하고 계신 분들께 감사합니다.
이 문서는 GNU Free Documentation License 버전 1.1 혹은 자유 소프트웨어 재단에서 발행한 이후 판의 규정에 따르며 저작권에 대한 본 사항이 명시되는 한 어떠한 정보 매체에 의한 본문의 전재나 발췌도 무상으로 허용됩니다. 본 저자는 문서의 내용이 야기할 수 있는 어떠한 결과에 대해서도 책임을 지지 않습니다.
CGI 사용하기 apache 의 설정 화일인 httpd.conf 화일을 수정한다. CGI를 사용할 디렉토리 : /home/USER/public_html/cgi-bin
ScriptAlias 를 설정합니다. ServerName www.formail.com
ServerAdmin USER@formail.org.com
ScriptAlias /cgi-bin/ /home/USER/public_html/cgi-bin/
|
html 문서 디렉토리 설정 아파치 설정 화일들 '/etc/httpd/conf/httpd.conf' , 'access.conf', 'srm,conf' 입니다. 하지만, httpd.conf에서 대부분의 설정이 가능하다. UserDir public_html <-- 보통 이렇게 되어 있을 겁니다. |
그리고계정을 추가 하시면 예를들어 abc라는 계정을 추가 했다면 http://도메인/~abc 이렇게 됩니다. Url 설정 http://도메인/~abc --> http://도메인/abc srm.conf 화일을 수정을 한다. 다음을 추가한다. Alias /abc /home/abc/public_html |
아파치를 다시 실행 시킨다. httpd restart or apachectl restart |
httpd.conf 예제 # 아파치 서버를 설치하고 나서, localhost 를 하면 디폴트로 나오는 문서가 있는 디렉토리입니다.
DocumentRoot "/home/httpd/kedu" # 손대지 말고 디폴로 그냥 나둡니다.
#펄을 사용할때 CGI를 사용할때는 다음과 같이 설정을 해주어야 합니다.
<Directory />
Options FollowSymLinks ExecCGI
AllowOverride None
</Directory>
#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#
#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/usr/local/httpd/htdocs"> # 손대지 말고 디폴로 그냥 나둡니다.
#
# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
#이것은 다음과 같이 설정을 해줍니다.
Options Indexes FollowSymLinks Includes ExecCGI
#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",
# "AuthConfig", and "Limit"
#
AllowOverride None # 통과
#
# Controls who can get stuff from this server.
#
Order allow,deny # 역시 통과
Allow from all # 손대지 말것
</Directory> # 손대지 말고 통과
# 사용자 계정을 만들고 나서 유저의 index.htm 이 실행되는 디렉토리
UserDir public_html
#브라우저를 실행 할때 기본적으로 읽어 들이는 화일을 설정하는 곳입니다.
DirectoryIndex index.htm index.html index.cgi index.php index.php3
# 펄을 사용할때 CGI 를 사용할때 다음과 같이 설정을 합니다.
AccessFileName .htaccess
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
#php 를 사용할때는 다음과 같이 설정을 해줍니다.
AddType application/x-httpd-php .php3
AddType application/x-httpd-php-source .phps
AddType application/x-tar .tgz
#펄 CGI를 사용할때는 다음과 같이 설정을 해줍니다.
AddHandler cgi-script .cgi
|
다른 사이트로 넘어가기 <html>
<body>
<meta http-equiv='Refresh' content='0; URL=http://formail.org'>
</body>
</html>
|
아파치 설정 펄이 설치 되어 있나 한번 봅니다.
# which perl
아파치 설정디렉토리 (/www/conf/httpd.conf)의 다음 내용이 없으면 추가를 합니다. AddHandler cgi-script .cgi
ScriptAlias /cgi-bin/ "/www/cgi-bin/"
AllowOverride None
Options None
Order allow,deny
Allow from all
|
1) 펄 모듈 설치 Perl `DBD'/`DBI' client code 는 최신 안정 버전을 사용한다. Perl 관련프로그램 두가지(세가지)를 다운로드한다.
http://www.cpan.org/modules/01modules.index.html Msql-Mysql-modules-1.2204.tar.gz
DBI-1.13.tar.gz
Data-Dump-0.03.tar.gz
('Data-Dumper'), 'DBI', 'Msql-Mysql-modules' 을 순서대로 설치한다.
2) 우선 압축된 패키지를 푼다. shell> tar xzvf DBI-VERSION.tar.gz
shell> tar xzvf Msql-Mysql-modules-VERSION.tar.gz
|
3) 생성된 디렉토리로 이동
4. 컴파일 하고 설치 shell> perl Makefile.PL
shell> make
shell> make test( 참고)
shell> make install
|
5) 테스트
참고로 make test. 모든 모듈을 검증하기 때문이다.
6) 나머지지 두개 패키지 설치
나머지 'Msql-Mysql-modules'를 위와 같은 방법으로 설치한다.
테스트 1) /www/cgi-bin/datedisp.cgi 이 화일을 vi 로 편집한다.
#! /usr/bin/perl
print "Content-type: text/html";
$date = `date`;
print ("Today is $date");
|
2) 권한을 바꾸어 준다.
3) /www/cgi-bin 디렉토리에서 실행을 해본다.
./datedisp.cgi
or
perl datedisp.cgi
|
4) 브라우저에서 다음을 실행합니다.
http://localhost/cgi-bin/datedisp.cgi
|
디렉토리, 화일 만들기 #!/usr/bin/perl
use Mysql;
$dbh = Mysql->connect("","dbname","user","password");
print "Content-type: text/html";
mkdir('aaa/bbb' , 0777) or die print "디렉토리를 만들수 없습니다. 이미 만들어 졌습니다.<br>";
print "오게이 오게이";
&printf_file("aaa/bbb/test.htm");
exit;
sub print_file{
my ($filename) = @_;
$imsi;
$top="<div align=left><table border=0 cellpadding=5><tr><td valign=top><p align=left><font face=굴림 size=2>";
$bottom="</font></td></tr></table></div>";
$parse{content} =~ s//<br>/g;
$imsi = $top;
$imsi.= "안녕하세요. >(///)< 드세요.";
$imsi.= $bottom;
open(fh,">$filename");
print fh $imsi;
close(fh);
}
|
Mysql 내용 mysql> select * from test;
+------+--------+------+-------------+
| id | name | age | tel |
+------+--------+------+-------------+
| 1 | 김용일 | 29 | 02-825-xxxx |
+------+--------+------+-------------+
1 row in set (0.03 sec)
|
소스 #!/usr/bin/perl
print "Content-type:text/html"; #웹에서 html을 볼수 있게 해준다.
useMysql; #mysql을 사용한다.
$dbh=Mysql->connect("","kbc","",""); #db와 펄을 연결한다.
#시간 값을 얻어 낸다.
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
#출력할 폼을 작성한다.
$date = sprintf("%d-%d-%d",$year += 1900, $mon+1, $mday);
print $date, " "; #출력을 한다.
#print '$curdate()'; #간단히 시간을 나타내는 방법
$query_string = "select * from test"; # 질의를 변수에 저장한다.
$sth=$dbh->query($query_string); #변수를 실행한다.
print $sth->fetchrow_array, " "; # 출력을 해준다.
|
Sql 을 작성한다. create table test (
no int default '0' not null auto_increment,
name char(10),
regdate date,
PRIMARY KEY(no)
);
|
name_input.htm 을 작성한다. <form name="form" method="get" action="/cgi-bin/write_db.cgi">
<inputtype="text" name="name" size="10">
<input type="submit" name="ok" value="보내기">
</form>
|
cgi 화일을 작성한다. #!/usr/bin/perl #이문서는 펄문서 임을 나타내준다.
%parse = &parse_input; # form, input을 가능하도록 정의를 한다.
print "Content-type:text/html"; # html을 사용가능하도록 한다.
print "입력 되었습니다. <br>";
use Mysql; #Mysql 을 정의 해준다.
$dbh=Mysql->connect("","kedu","root",""); #Mysql을 펄에서 사용가능하도록 연결 시켜준다. connect("", "DB이름", "사용자", "비밀번호")
$query_string = "insert into test values('','$parse{name}',curdate())"; # 이름과 시간을 변수에 저장한다.
$sth=$dbh->query($query_string); # 실행한다.
$query_string = "select * from test"; # 테이블 내용을 변수에 저장한다.
$sth=$dbh->query($query_string); # 실행을 한다.
while($row = $sth->fetchrow_arrayref)
{ # 테이블의 마직막 레코드 까지
print "$row->[0] $row->[1] $row->[2]<br>"; # 테이블 내용을 출력 한다.
}
exit; # 분 문서(펄)의 끝임을 나타내 준다. 이하 함수를 정의 한다.
# 밑의 함수는 충분한 학습후 수정하고, 초보자는 그냥 그런가 보다 생각하고 넘어간다.
sub parse_input
{
my ($buffer,@parse,%parse,$key,$value);
if($ENV{'REQUEST_METHOD'} eq "GET")
{
@parse = split(/&/,$ENV{'QUERY_STRING'});
}
else {
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
@parse = split(/&/,$buffer);
}
foreach (@parse)
{
$_=~ tr/+/ /;
$_ =~ s/%([dA-Fa-f][dA-Fa-f])/pack("C",hex($1))/eg;
($key,$value) = split(/=/,$_);
$parse{$key} = $value;
}
return %parse;
}
|
Sql 작성 ( mysql DBNAME < test.tbl ) create table test (
no int default '0' not null auto_increment,
id char(10),
name char(10),
pw char(8),
regdate date,
regtime time,
PRIMARY KEY(no)
);
|
check_input.htm 작성 <html>
<body>
<table>
<form name="form" method="post" action=/cgi-bin/access_db.cgi>
<tr>
<td>아이디 </td>
<td><input name=id size=10>�<br></td>
</tr>
<tr>
<td>이 름 </td>
<td><input name=name size=10>�<br></td></tr>
<tr>
<td>비밀번호</td>
<td><input name=pw size=10 type=password>�<br></td></tr>
<tr>
<td>비밀번호확인</td>
<td><input name=pw2 size=10 type=password>�</td></tr></table>
<input type="submit" value="보내기">
</form>
</table>
</body>
</html>
|
access_db.cgi 작성(작성후 755 access_db.cgi 를 실행해서 실행모드로 바꾼다.) #!/usr/bin/perl
%parse = &parse_input;
use Mysql;
$dbh = Mysql->connect("","kedu","root","");
print "Content-type:text/html";
if($parse{id} eq ""){
print "아이디를 입력하지 않았습니다.<br>";
print "아이디를 입력 해주세요.<br>";
}
elsif($parse{name} eq "" ){
print "이름을 입력하지 않았습니다.<br>";
print "이름을 입력 해주세요.<br>";
}
elsif($parse{pw} eq "" ){
print "비밀번호를 입력하지 않았습니다.<br>";
print "비밀번호를 입력 해주세요.<br>";
}
elsif($parse{pw2} eq "" ){
print "비밀번호확인을 입력하지 않았습니다.<br>";
print "비밀번호확인을입력 해주세요.<br>";
}
elsif(($parse{id} =~ /^d/) || ($parse{name} =~ /^d/)) {
print "첫번째 글짜가 숫자로 되어 있습니다.<br>";
print "첫번째글짜를 문자로 바꾸어 주세요.<br>";
}
elsif(®istered_id($parse{id})) {
print "이미 있는 아이디 입니다.<br>";
print "다른 아이디를 입력 해주세요.<br>";
}
elsif($parse{pw} ne $parse{pw2}) {
print "비밀번호가 같지 않습니다. <br>";
print "비밀번호를 다시 입력 해주세요. <br>";
}
else {
print$parse{id}, "가 입력 되었습니다.<br>";
$query_string = "insert into test values('','$parse{id}','$parse{name}','$parse{pw}', curdate(), curtime())";
my $sth=$dbh->query($query_string);
}
$query_string = "select * from test";
$sth=$dbh->query($query_string);
while($row = $sth->fetchrow_arrayref)
{
print "$row->[0] $row->[1] $row->[2] $row->[3] $row->[4] $row->[5]<br>";
}
exit;
sub registered_id
{
my ($id) = @_;
my ($query_string) = "select id from test where id = '$id'";
my ($sth) = $dbh->query($query_string);
if($sth -> numrows eq "1")
{
return 1;
}
else
{
return 0;
}
}
sub parse_input
{
my ($buffer,@parse,%parse,$key,$value);
if($ENV{'REQUEST_METHOD'} eq "GET")
{
@parse = split(/&/,$ENV{'QUERY_STRING'});
}
else
{
read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
@parse = split(/&/,$buffer);
}
foreach (@parse)
{
$_ =~ tr/+/ /;
$_ =~ s/%([dA-Fa-f][dA-Fa-f])/pack("C",hex($1))/eg;
($key,$value) = split(/=/,$_);
$parse{$key} = $value;
}
return %parse;
}
|
머리단과 바닥에 들어갈 화일을 작성하고 나서 본 화일에서 불러서 사용하면 된다. main.php
<?php
include("include/header.ph");
print_html("main_htm/top.htm");
echo("<br><br>본문 내용이 들어가는 곳입니다.<br>");
echo("내용은 별거 없습니다.<br>");
echo("프레임을 나누지 않고, 본문 내용을 사용하는 것입니다.<br>");
echo("본문내용을 서브 함수를 이용해서 만들면 됩니다.<br>");
echo("다음 작업을 위해 쉬운 내용을 아주 어렵게 했습니다.<br>");
echo("이내용을 잘 이해하면 여러면에서 도움이 될것입니다.<br>");
print_html("main_htm/bottom.htm");
?>
|
include/header.ph
<?
/* 한라인 출력해주는 함수 */
function print_html($filename)
{
$fp = fopen( $filename, "r" );
while(!feof($fp))
{
$contents .= fgets($fp, 100);
}
fclose($fp);
echo "$contents";
}
?>
|
main_htm/top.htm <html>
<head>
<title>나라비의 방</title>
<style TYPE="TEXT/CSS">
A:link {color: blue; text-decoration:none}
A:visited {color: navy; text-decoration:none}
A:hover {color: red; text-decoration:underline;}
</style>
</head>
<body>
<table border="0" width = "600" cellpadding="0" cellspacing="0">
<tr><td width="589" colspan="2" bgcolor="#f9cd8a">나라비의 방을 찾아주셔서 대단히 감사합니다.</td></tr>
<tr>
<tr>
<td width = "120" valign="top" colspan="0">
<table width = "120" border="0">
<tr><td width="120" bgcolor="#b5d490"><p> <b><br>홈으로</b></font></td></tr>
<tr><td width="120" bgcolor="#c3f298"><p> <font size="2">나라비 소개</font></td></tr>
<tr><td width="120" bgcolor="#c3f298"><p> <font size="2">나리비 소식</font></td></tr>
<tr><td width="120" bgcolor="#c3f298"><p> <font size="2">Windows NT</font></td></tr>
<tr><td width="120" bgcolor="#c3f298"><p> <font size="2">시(김소월)</font></td> </tr>
<tr><td width="120" bgcolor="#c3f298"><p> <font size="2">시(기타)</font></td> </tr>
<tr><td width="120" bgcolor="#c3f298"><p> <font size="2">질문과답변</font></td> </tr>
<tr><td width="120" bgcolor="#c3f298"><p> <font size="2">다른곳</font></td> </tr>
</table>
<td valign="top" align="center" width = "480">
|
main_htm/bottom.htm </td>
</tr>
<tr>
<td colspan="2" align="center" valign="top">Copyright ⓒ 1999 nalabi.Mail to<a href="mailto:nalabi@hananet.net">webmaster</a></td>
</tr>
</table>
</body>
</html>
|
테이블 작성 (mysql DBNAME < test.tbl) create table test (
no int default '0' not null auto_increment,
name char(10),
regdate date,
PRIMARY KEY(no)
);
|
name_input.php 작성 <html>
<body>
<form name="form" method="get" action="write_db.php3">
<inputtype="text" name="name" size="10">
<input type="submit" name="ok" value="보내기">
</form>
</body>
</html>
|
write_db.php 작성 <?
// MySQL 서버에 연결한다
$connect=mysql_connect( "localhost", "root", "") or die( "SQL server에 연결 할수 없습니다.");
$tbl_list = mysql_list_tables("kedu"); //데이타 베이스를 설정합니다.
$result = mysql_query("insert into test (name) values ('$name')");
$result=mysql_query($result, $connect );
$tbl_name="select * from test" ;
$result=mysql_query($tbl_name, $connect );
$print=mysql_fetch_array($result); //테이블의 내용을 가져옴
$rows = mysql_num_rows($result);
echo("입력 되었습니다..<br>");
for($i=0; $i< $rows;$i++)
{
echo("$print[name]<br>");
$print=mysql_fetch_array($result);
}
?>
|
테이블 작성 ( mysql DBNAME < test.tbl ) create table test (
no int default '0' not null auto_increment,
id char(10),
name char(10),
pw char(8),
regdate date,
regtime time,
PRIMARY KEY(no)
);
|
check_input.php 작성 <html>
<body>
<table>
<form name="form" method="post" action=access_db.php3>
<tr>
<td>아이디 </td>
<td><INPUT name=id size=10>�<br></td></tr>
<tr>
<td>이 름 </td>
<td><INPUT name=name size=10>�<br></td></tr>
<tr>
<td>비밀번호</td>
<td><INPUT name=pw size=10 type=password>�<br></td></tr>
<tr>
<td>비밀번호확인</td>
<td><INPUT name=pw2 size=10 type=password>�</td></tr></table>
<input type="submit" value="보내기">
</form>
</table>
</body>
</html>
|
access_db.php 작성 <?
// MySQL 서버에 연결한다
$connect=mysql_connect( "localhost", "root", "") or die( "SQL server에 연결 할수 없습니다.");
$tbl_list= mysql_list_tables("kedu"); //데이타 베이스를 설정합니다.
if($id == "") {
echo "아이디를 입력 하지 않았습니다.";
}
elseif($name == ""){
echo "이름을 입력 하지 않았습니다.";
}
elseif($pw == ""){
print "비밀번호를 입력하지않았습니다.<br>";
print "비밀번호를 입력 해주세요.<br>";
}
elseif($pw2 == ""){
print "비밀번호확인을 입력하지 않았습니다.<br>";
print "비밀번호확인을 입력 해주세요.<br>";
}
elseif($pw != $pw2) {
print "비밀번호가 같지 않습니다. <br>";
print "비밀번호를 다시 입력 해주세요. <br>";
}
else {
echo "$id가 입력 되었습니다..<br>";
$date = date("y-m-d", time());
$result = mysql_query("insert into test values ('','$id','$name','$pw','$date','$time')");
$result=mysql_query($result, $connect);
$tbl_name="select *from test" ;
$result=mysql_query($tbl_name, $connect );
$print=mysql_fetch_array($result); //테이블의 내용을 가져옴
$rows = mysql_num_rows($result);
for($i=0; $i< $rows;$i++)
{
echo("$print[id] $print[name] $print[pw] $print[regdate]<br>");
$print=mysql_fetch_array($result);
}
}
?>
|
테이블 출력 프로그램 <?
// MySQL 서버에 연결한다
$connect=mysql_connect( "localhost", "username", "") or die( "Unabletoconnect to SQL server");
//--------------------------------------------------------------------------
// 사용가능한 DB 목록을 검색
//--------------------------------------------------------------------------
$dblist = mysql_listdbs(); //데이타 베이스 목록을 인식한다.
$dbnum=mysql_num_rows($dblist); //데이타 베이스 갯수를 변수에 저장한다.
for($i=0; $i < $dbnum; $i++) //데이타 베이스 갯수 만큼
{
$dbname[$i] = mysql_dbname($dblist, $i) ; //데이타 베이스 목록 이름을 변수에 저장한다.
}
echo "데이타 베이스 검색 내용 <br>";
for($i=0; $i < count($dbname); $i++)
{ //데이타 베이스 갯수 만큼
echo "$dbname[$i] <br>"; // 데이타 베이스 이름을 웹에 나타내준다.
}
//--------------------------------------------------------
// 사용가능한 테이블 목록을 검색
//--------------------------------------------------------
$tbl_list = mysql_list_tables("board"); //데이타 베이스를 설정합니다.
$tbl_num=mysql_num_rows($tbl_list); // 테이블 갯수를 변수에 저장합니다.
echo "<br>데이타 테이블 검색 내용--> 테이블명,레코드수<br>";
for($i=0; $i < $tbl_num; $i++) //테이블 갯수 만큼
{
$tbl_name[$i] = mysql_tablename($tbl_list,$i) ; // 테이블 이름을 변수에 저장
$result[$i] = mysql_query( "SELECT * FROM $tbl_name[$i]"); //테이블의 내용을 변수에 저장
$rows[$i] = mysql_num_rows($result[$i]); // 테이블의 레코드 수를변수에 저장
echo "$tbl_name[$i], $rows[$i], $name <br>"; //테이블의 이름과, 레코드수를 웹에 출력 해줍니다.
}
//--------------------------------------------------------------------
// 사용가능한 테이블 내용을 출력
//--------------------------------------------------------------------
$tbl_name="select * from test" ;
$result=mysql_query($tbl_name, $connect );
$print=mysql_fetch_array($result); //테이블의 내용을 가져옴
echo("<br>테이블 내용을 화면에 출력 시켜 줍니다.<br>");
echo("이름, 나이, 전화번호부, 주소<br>");
echo("$print[name], $print[age], $print[tel], $print[addr]<br>");
//-------------------------------------------------------------------------------
// 사용가능한 테이블 내용을 전체 출력
//-------------------------------------------------------------------------------
$que_bbs="select * from test" ;
$result=mysql_query($que_bbs,$connect );
$print=mysql_fetch_array($result);
$rows = mysql_num_rows($result);
echo("<br>테이블 내용 전체를 출력 시켜 줍니다.<br>");
echo("이름, 나이, 전화번호부, 주소<br>");
for($i=0; $i < $rows; $i++)
{
echo("$print[name], $print[age], $print[tel], $print[addr]<br>");
$print=mysql_fetch_array($result);
}
?>
|
mysql_free_result 를 해서 메모리를 풀어 준다. <?
mysql_connect($db_server, $db_user, $db_pass);
$result = mysql_db_query("$db_name","select * from $table_name");
while($row = mysql_fetch_array($result))
{
echo $row["no"];
echo $row["name"];
echo " ";
}
mysql_free_result($result);
?>
|
<?
Header("Content-type: image/gif");
$file = "test.gif";
$size = 4096;
if (!($fp = fopen($file, "r")))
{
die("could not open input");
exit;
}
while ($data = fread($fp,$size))
{
print($data);
}
?>
|
달력 예제 <?
// 변수값 설정
$date=01;
$day=01;
$off=0;
//년도 달 설정
$year = '2000';
$month = '01';
/* Figure out how many days are in this month */
while (checkdate($month,$date,$year)):
$date++;
endwhile;
// 메뉴 표시하기
echo "<table width='420' ><tr><td align = center>$year 년 $month 월</td></tr></table>";
echo "<table border='1' width='420'><tr>";
echo "<td><b><font face='돋음'>월</font></b></td>";
echo "<td><b><font face='돋음'>화</font></b></td>";
echo "<td><b><font face='돋음'>수</font></b></td>";
echo "<td><b><font face='돋음'>목</font></b></td>";
echo "<td><b><font face='돋음'>금</font></b></td>";
echo "<td><b><font face='돋음'>토</font></b></td>";
echo "<td><b><font face='돋음'>일</font></b></td>";
echo "<tr>";
//루프 돌리기
while ($day<$date):
/* Figure what day of the week the first falls on and set the number of preceding and trailing cells accordingly */
if ($day == '01' and date('l', mktime(0,0,0,$month,$day,$year)) == 'Sunday')
{
echo "<td>$day</td>";
$off = '01';
}
elseif ($day == '01' and date('l', mktime(0,0,0,$month,$day,$year)) == 'Monday')
{
echo "<td></td><td>$day</td>";
$off= '02';
}
elseif ($day == '01' and date('l', mktime(0,0,0,$month,$day,$year)) == 'Tuesday')
{
echo "<td></td><td></td><td>$day</td>";
$off= '03';
}
elseif ($day == '01' and date('l', mktime(0,0,0,$month,$day,$year)) == 'Wednesday')
{
echo "<td></td><td></td><td></td><td>$day</td>";
$off= '04';
}
elseif ($day == '01' and date('l', mktime(0,0,0,$month,$day,$year)) == 'Thursday')
{
echo "<td></td><td></td><td></td><td></td><td>$day</td>";
$off= '05';
}
elseif ($day == '01' and date('l', mktime(0,0,0,$month,$day,$year)) == 'Friday')
{
echo "<td></td><td></td><td></td><td></td><td></td><td>$day</td>";
$off= '06';
}
elseif ($day == '01' and date('l', mktime(0,0,0,$month,$day,$year)) == 'Saturday')
{
echo "<td></td><td></td><td></td><td></td><td></td><td></td><td>$day</td>";
$off= '07';
}
else
{
echo "<td>$day</td>";
}
//일 증가 시키기
$day++;
$off++;
if ($off>7)
{
echo "</tr><tr>";
$off='01';
} else
{
echo "";
}
endwhile;
echo "</table>";
?>
|
어떤 문자열 중에서 000 이라는 문자열의 레코드를 찾아 내기 표현 : int ereg(string pattern, string string, array [regs]); 사용법 :
ereg(찾을 패턴, 검사할 문자열, 결과 배열);
예제 :
ereg("([0]{3})", $hash[code], $regs)
각각의 패턴은 ()로 정의를 합니다.
([0]{3})는 0의갯수가 3개로 나와야한다는 의미이다.
([0]{2, 3}) 0의 갯수가 2개 혹은 3개를 의미
([0-9]{2, 3}) 0에서 9까지의 숫자가 2자리 혹은 3자리를 의미
<?
$sth = mysql_query("select * from kangsa_type order by code");
while($hash = mysql_fetch_array($sth))
{
if(ereg("([0]{3})", $hash[code], $regs))
{
print "$hash[typename]";
}
}
?>
|
auth.sql 을 먼저 작성을한다. # MySQL dump 6.6
#
# Host: localhost Database: myhome
#--------------------------------------------------------
# Server version 3.23.8-alpha
#
# Table structure for table 'auth'
#
CREATE TABLE auth (
id char(10) DEFAULT '' NOT NULL,
passwd char(10),
name char(10),
level int(11),
PRIMARY KEY (id)
);
#
# Dumping data for table 'auth'
#
INSERT INTO auth VALUES ('nalabi','xxxx','김용일',1);
|
auth.ph 인증하는 부분을 작성한다. <?php
cfunction authenticate()
{
Header( "HTTP/1.0 401 Unauthorized");
$title= "Invalid Login";
?>
아이디와 암호가 필요합니다!
<?php exit;
}
if(!isset($PHP_AUTH_USER))
{
authenticate();
} else
{
mysql_pconnect( 'localhost', 'root', '') or die( "Unable to connect to SQL server"); // MySQL 서버 접속
mysql_select_db( "test") or die( "Unable to select database"); // DB 선택
$result = mysql_query( "select name , level from auth where id='$PHP_AUTH_USER' and passwd='$PHP_AUTH_PW' ");
if(!mysql_num_rows($result))
{
authenticate();
}
else
{
$userinfo = mysql_fetch_array($result);
}
}
?>
|
test.php 프로그램 하는데서 인증하는 부분을 적용한다. <?
include ("auth.ph");
echo("어서 오십시요.");
?>
|
kernel.php <?
function kernel()
{
$label = array("안정버전","개발버전","알파버전");
$cmd = "/usr/bin/finger @ftp.kernel.org| cut -c59-66 | sed -e '/^$/d'";
exec($cmd,$array,$rtn);
for($i=0; $i < count($array); $i++)
{
list($v1, $v2, $v3) = split('[/.-]' , $array[$i]);
$version = "v".$v1.".".$v2."/linux-".$array[$i].".tar.gz";
$label[$i] = "<a href = ftp://ftp.kernel.org/pub/linux/kernel/".$version.">".$label[$i]." : ".$array[$i]."</a>";
}
return $label;
}
$label = kernel();
echo("$label[0] <br> $label[1] <br> $label[2]");
?>
|
whois 프로그램이 깔려 있어야 합니다. rpm -qa | grep whois 프로그램
<?
function domain($string)
{
$cmd = "whois $string";
exec($cmd,$array,$rtn);
for ($i=0; $i < count($array); $i++)
{
$rstring .= "$array[$i]";
}
return $rstring;
}
print domain("formail.org");
?>
|
문자열에 영어 대소문자, 숫자만 오도록 하게 하는 함수입니다 <?
function check_id($string)
{
$error_msg = "error";
if (ereg("[^a-zA-Z0-9]", $string))
{
$error_msg = $error_msg;
return $error_msg;
}
else
{
return $string;
}
}
$id1 = "abcd";
$id2 = "ZabCA";
$id3 = "9Zab01";
$id4 = "#ab.c.%";
$id5 = "한글";
$msg = check_id($id1);
print "id1 : $msg";
$msg = check_id($id2);
print "id2 : $msg";
$msg = check_id($id3);
print "id3 : $msg";
$msg = check_id($id4);
print "id4 : $msg";
$msg = check_id($id5);
print "id5 : $msg";
?>
|
sql 문 # MySQL dump 7.2
#
# Host: localhost Database: test
#--------------------------------------------------------
# Server version 3.23.11-alpha
#
# Table structure for table 'login3'
#
CREATE TABLE login3 (
nick char(10)
);
#
# Dumping data for table 'login3'
#
INSERT INTO login3 VALUES ('나라비');
|
test.php <?
function add_error($why, $reason, $nick)
{
print "$reason<br>";
}
$nick= "나라비";
if (ereg ("[~!@#$%^&*()~|"/'+=-_:;,.<>]", $nick))
{
$why="닉네임";
$reason="닉네임에 특수문자가 있습니다.";
add_error($why,$reason,$nick);
exit;
}
if(ereg(" ", $nick))
{
$why="닉네임";
$reason="닉네임에 공백이 있습니다.";
add_error($why,$reason,$nick);
exit;
}
if($nick=="")
{
$head = "닉네임";
$mesg = "닉네임이 없습니다.";
add_error($head,$mesg,$nick);
}
if(strlen($nick) < 2)
{
$head = "닉네임";
$mesg = "닉네임은 특수문자를 제외한 2자이상으로 넣어주세요.";
add_error($head,$mesg,$nick);
}
$server = "localhost";
$name = "root";
$passwd = "";
$dbname = "test";
mysql_connect($server, $name, $passwd);
mysql_select_db($dbname);
$que1 = "select nick from login3 where nick='$nick'";
$result= mysql_query($que1);
$current_row = mysql_fetch_row($result);
if($current_row[0] == $nick)
{
$head = "닉네임";
$reason = $nick."님이 이미 등록되어 있습니다.";
add_error($why,$reason,$nick);
}
else
{
print $nick;
}
?>
|
sql 문 # MySQL dump 6.4
#
# Host: localhost Database: test
#--------------------------------------------------------
# Server version 3.23.5-alpha
#
# Table structure for table 'login'
#
CREATE TABLE login (
id char(10) DEFAULT '' NOT NULL,
reg_date char(10),
nick char(10),
passwd char(10),
name char(10),
user_num int(11),
address char(10),
phone char(10),
email char(10),
job char(10),
PRIMARY KEY (id)
);
#
# Dumping data for table 'login'
#
INSERT INTO login VALUES ('nalab1','','aaaa','bbbb','1111',0,'1','cccc','dddd','eeee');
INSERT INTO login VALUES ('nalab2','','bbbb','bbbb','1111',0,'1','cccc','dddd','eeee');
INSERT INTO login VALUES ('nalab3','','cccc','bbbb','1111',0,'1','cccc','dddd','eeee');
INSERT INTO login VALUES ('nalab4','','dddd','bbbb','1111',0,'1','cccc','dddd','eeee');
INSERT INTO login VALUES ('nalab5','','eeee','bbbb','1111',0,'1','cccc','dddd','eeee');
INSERT INTO login VALUES ('nalab6','','ffff','bbbb','1111',0,'1','cccc','dddd','eeee');
INSERT INTO login VALUES ('nalab7','','gggg','bbbb','1111',0,'1','cccc','dddd','eeee');
INSERT INTO login VALUES ('nalab8','','hhhh','bbbb','1111',0,'1','cccc','dddd','eeee');
INSERT INTO login VALUES ('nalab9','','iiii','bbbb','1111',0,'1','cccc','dddd','eeee');
INSERT INTO login VALUES ('nala10','','jjjj','bbbb','1111',0,'1','cccc','dddd','eeee');
INSERT INTO login VALUES ('nala11','','kkkk','bbbb','1111',0,'1','cccc','dddd','eeee');
INSERT INTO login VALUES ('nala12','','llll','bbbb','1111',0,'1','cccc','dddd','eeee');
INSERT INTO login VALUES ('nala13','','mmmm','bbbb','1111',0,'1','cccc','dddd','eeee');
INSERT INTO login VALUES ('nala14','','nnnn','bbbb','1111',0,'1','cccc','dddd','eeee');
|
test.php <?
$server = "localhost";
$name = "root";
$passwd = "";
$dbname = "test";
mysql_connect($server, $name, $passwd);
mysql_select_db($dbname);
$page_scale=3; //한페쥐당 보여줄 숫자 번호[1][2][3]
$scale=2; // 한페이쥐 당 보여줄 라인 개수(레코드)
if(!$star){ $star= 0 ;} // 시작할 레코드 번호 - 1
$page=floor($star/($scale*$page_scale)); // 페이지 수 얻기
$que1="select DATE_FORMAT(reg_date,'Y.m.d'), id,nick, passwd ,name , user_num, address, phone, email, job from login order by reg_date DESC " ;
$result = mysql_query($que1);
$total = mysql_affected_rows(); //게시물 총 수
$last=floor($total/$scale); //마지막 번호
echo "<font size=-1>전체 등록자 : $total 명 입니다.";
echo "<html><title>회원관리</title><body bgcolor=ffffff><center><font size=4>회원관리 페이지</font>
<table border=1><tr bgcolor=336699>
<td align=center><font color=ffffff size=-1>등록일</font><td align=center><font color=ffffff size=-1>ID</font></td>
<td align=center><font color=ffffff size=-1>닉네임</font></td>
<td align=center><font color=ffffff size=-1>비밀번호</font></td>
<td align=center><font color=ffffff size=-1>이름</font></td>
<td align=center><font color=ffffff size=-1>주민등록번호</font></td>
<td align=center><font color=ffffff size=-1>주소</font></td>
<td align=center><font color=ffffff size=-1>연락처</font></td>
<td align=center><font color=ffffff size=-1>E-Mail</font></td>
<td align=center><font color=ffffff size=-1>직업</font></td>
<td align=center><font color=ffffff size=-1>관리</font></td></tr>";
if($star)
{
$n=$total-$star;
}
else
{
$n=$total;
}
for($i=$star ; $i< $star+$scale ; $i++) // star 에서 scale 까지 만
{
if($i< $total ) // 전체 자료 개수까지만 출력
{
mysql_data_seek($result,$i);
$row=mysql_fetch_array($result);
$imsi=$row[5];
echo"<tr><td align=center><font size=-1>$row[0]</font></td>
<td align=center><font size=-1>$row[1]</font></td>
<td align=center><font size=-1>$row[2]</font></td>
<td align=center><font size=-1>$row[3]</font></td>
<td align=center><font size=-1>$row[4]</font></td>
<td align=center><font size=-1>$row[5]</font></td>
<td align=center><font size=-1>$row[6]</font></td>
<td align=center><font size=-1>$row[7]</font></td>
<td align=center><font size=-1><a href=mailto:$row[8]>$row[8]</font></a></td>
<td align=center><font size=-1>$row[9]</font></td>
<td align=center><font size=-1><a href=$admin_url?action=erase&num=$row[5]&start=$start>삭제</a></font></td></tr> ";
}
$n--;
}
echo "</table><br><br>";
if($total>$scale)
{
if($star+1>$scale*$page_scale)
{
$pre_star=$star-$scale;
echo"<a href='$PHP_SELF?star=$pre_star'> 이전</a>";
}
for($vj=0; $vj < $page_scale ; $vj++)
{
$ln=($page*$page_scale+$vj)*$scale;
$vk=$page*$page_scale+$vj+1;
if($ln < $total)
{
if($ln!=$star)
{
echo"<a href='$PHP_SELF?star=$ln'><font size=2>[$vk]</a></font>";
}
else
{
echo"<font size-2><b>$vk</b></font>";
}
}
}
if($total>(($page+1)*$scale*$page_scale))
{
$n_star=($page+1)*$scale*$page_scale;
echo"<a href='$PHP_SELF?star=$n_star'>다음</a>";
}
}
?>
|
정규식 표현 a(b*) : a, ab, abb, a와 임의의 갯수들로 된 문자열
a(b+) : ab, abb, abbb, ab와 임의의 갯수들로 된 문자열
a(b?) : a or ab, a 다음에 b가 있어도 되고, 없어도 된다.
a(b{3}) : abbb
a(b{2,}) : abb, abbb, abbbb, a 와 두개 이상의 b들로 된 문자열
a(b{2.4}) : abb, abbb, abbbb, a 와 두개 이상, 네 개 이하의 b들로 된 문자열
[a-z] : a-z 까지 문자열
[a-zA-Z0-9] : 임의 영숫자
|
공백 문자 [^0-9] : 임의 숫자가 아닌문자
[~a-zA-Z0-9]: 임이의 영숫자가 아닌 문자
|
임의의 공백문자가 아닌 문자 a.c : aac, abc, acc, a 와 c에 임의의 문자 하나가 끼어 있는 문자열
^a.* : a로 시작하는 임의의 문자열
[a-c]*x$ : x, ax, bx, abax, abcx, a에서 c사이의 임의의 문자들로이루어지며, 마지막 문자가 x인 문자열
b[ao]y : bay 또는 boy에인 문자열
[^Zz]{5} : Z or z 가 포함되지 않은 길이가 5인 임의의 문자열
[[:digit:]] : 임의의 숫자 , [0-9]
[[:<:]a.* : a로 시작하는 임의의 문자열
예) ^([0-9]{2,4})(-[0-9]{3,4})(-[0-9]{3,4}) : 전화번호(xxxx-xxxx-xxxx)
| 임의의 공백문자가 아닌 문자
engdic 프로그램이있나 확인하고 없으면 설치한다. which engdic test.php, exec 를 사용해서 engdic 프로그램을 실행한다. <?
// 영한/ 사전 입니다.
function engdic($string)
{
$cmd = "engdic $string";
exec($cmd,$array,$rtn);
for ($i=0; $i < count($array); $i++)
{
$rstring .= "$array[$i]";
}
return $rstring;
}
print engdic("hello");
?>
|
fwhois 프로그램이있나 확인하고 없으면 설치한다. which fwhois test.php, exec 를 사용해서 engdic 프로그램을 실행한다. <?
//아이피 소속 회사, 기관 알아내는 함수
function ip($string)
{
$cmd = "fwhois $string"."@whois.nic.or.kr";
exec($cmd,$array,$rtn);
for ($i=0; $i < count($array); $i++)
{
$rstring .= "$array[$i]";
}
return $rstring;
}
print ip("210.180.116.238");
?>
|
<?
function date_selector($name, $date)
{
$monthname = array(1=>"1월", "2월", "3월", "4월","5월","6월","7월","8월","9월","10월", "11월","12월");
if($date == "")
{
$date = time();
}
//년
print "<select name = ".$year." year > ";
$start_year = date("Y", $date);
for($current_year = $start_year - 5; $current_year <= $start_year + 5; $current_year++)
{
print "<option value = $current_year";
if(date("Y", $date) == $current_year)
{
print " selected ";
}
print " > $current_year ";
}
print "</select>";
//월
print "<select name = ".$month." month >";
for($current_month = 1; $current_month <= 12; $current_month++)
{
print "<option value = $current_month ";
if(date("m", $date) == $current_month)
{
print " selected ";
print ">";
print $monthname[$current_month];
}
else
{
print ">";
print $monthname[$current_month];
}
print " ";
}
print "</select>";
//일
print "<select name = ".$day." day >";
for($current_day = 1; $current_day <= 31; $current_day++)
{
print "<option value = $current_day ";
if(date("d", $date) == $current_day )
{
echo " selected ";
}
echo " > $current_day 일";
}
print "</select>";
}
echo "<html>
<head>
<title>연습</title>
<body>";
if(isset($month))
{
//$use_date = mktime(0, 0, 0, $sample_month, $sample_day, $sample_year);
$use_date = mktime(0, 0, 0, $month, $day, $year);
}
else
{
$use_date = time();
}
print "<form action = cal.php method = post>";
print date_selector("cal", $use_date);
echo "<input type = submit value = 입력>
</form>
</body>
</html>";
?>
|
기존에 아이디가 있나 없나를 체크를 하기 위해서. idcheck.htm <html>
<script language="JavaScript">
function id_chk(obj)
{
var form = document.select1;
var w_id_chk;
if ( form.s_id.value == "" )
{
alert("아이디를 입력하지 않았습니다.");
form.s_id.focus();
return;
} else if ((form.s_id.value.toString().length < 4) || (form.s_id.value.toString().length > 10))
{
alert("아이디는 4자이상 10자이내로 입력하여 주십시요.");
form.s_id.focus();
return;
}
ck=1;
var str = 'idcheck.php?s_id='+obj.s_id.value;
window.open(str,'w_id_chk','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=300,height=150');
return;
}
</script>
<body>
<form method=post name=select1 >
<table>
<tr>
<td width = 200 BGCOLOR="#F2F5F1" align = right><font size="2" color="red">*</font><font size="2">수강생 아이디</font></td>
<td width = 550><font size="2"><input type=text name=s_id size=8 maxlength=8>
<input TYPE='buton' NAME='chkbutton' VALUE='중복아이디 확인' onClick="deny_javascript:id_chk(this.form);"></a>
<br>4~8자 영문숫자 조합, 첫글자는 영문, 대소문자 구별안함</font></td>
</tr>
</table>
</from>
</body>
</html>
|
idcheck.php <html>
<body>
<?
include "db.ph";
db_connect();
$sth3 = mysql_query("select id from cls_member where id = '$s_id'");
$total = mysql_affected_rows(); //게시물 총 수
if($total == "0")
{
print "<br><br><br><font size = 2>$s_id 는 사용할수 있는 아이디 입니다.</font>";
}
else
{
print "<br><br><br><font size = 2>$s_id 는 이미 사용중인 아이디 입니다.</font>";
}
?>
</body>
</html>
|
<html>
<script language="JavaScript">
<!--
// 마우스를 주메뉴 위에 올려 놓으면 부메뉴가 나오게 하는 스크립트
function MM_findObj(n, d) { //v3.0
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}
function MM_showHideLayers() { //v3.0
var i,p,v,obj,args=MM_showHideLayers.arguments;
for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; }
obj.visibility=v; }
}
// 부메뉴 롤오버 기능
function MM_swapImgRestore() { //v3.0
var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}
function MM_preloadImages() { //v3.0
var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function MM_findObj(n, d) { //v3.0
var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}
function MM_swapImage() { //v3.0
var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
//-->
</script>
<body marginheight=0 marginwidth=0 topmargin=0 rightmargin=0 leftmargin="0" bgcolor="ffffff">
<table width="780" border="0" cellspacing="0" cellpadding="0" >
<tr><td height="67" ></td><td height="67" width="120"><img src="top_img/p0.gif"></td></tr>
<tr><td><a href="#" onMouseOver="MM_showHideLayers('about1','','show', 'glmoum','','hide')"><img name="about" border="0" src="menu_img/aboutus0.gif" width="85" height="33"></A><a href="#" onMouseOver="MM_showHideLayers('product1','','show', 'glmoum','','hide')"><img name="product" border="0" src="menu_img/product0.gif" width="73" height="33"></a><a href="#" onMouseOver="MM_showHideLayers('news1','','show', 'glmoum','','hide')"><img name="news" border="0" src="menu_img/news0.gif" width="54" height="33"></a><a href="#" onMouseOver="MM_showHideLayers('mdata','','show', 'glmoum','','hide')"><img name="data" border="0" src="menu_img/data0.gif" width="99" height="33"></a><a href="#" onMouseOver="MM_showHideLayers('mcollaborator','','show', 'glmoum','','hide')"><img name="coll" border="0" src="menu_img/collaborator0.gif" width="110" height="33"></a><a href="#" onMouseOver="MM_showHideLayers('mcontactus','','show', 'study','','hide')"><img name="contact" border="0" src="menu_img/contactus0.gif" width="99" height="33"></a><a href="#" onMouseOver="MM_showHideLayers('msitemap','','show', 'study','','hide')"><img name="map" border="0" src="menu_img/sitemap0.gif" width="74" height="33"></a><img name="map" border="0" src="top_img/blank.gif" width="66" height="33"></td><td height="33" width="120"><img src="top_img/p1.gif"></td></tr>
</table>
<!-- about us -->
<div id="about1" style="position:absolute; z-index:1; left: 0; top: 67 ;visibility: hidden">
<!-- 주메뉴 -->
<table border="0" cellspacing="0" cellpadding="0" > <tr>
<td><img name="about" border="0" src="menu_img/aboutus1.gif" width="85" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('about1','','hide')"><img name="product" border="0" src="top_img/blank.gif" width="73" height="33"></a></td>
<td><a href="#" onMouseOver="MM_showHideLayers('about1','','hide')"><img name="product" border="0" src="menu_img/news0.gif" width="54" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('about1','','hide')"><img name="coll" border="0" src="menu_img/data0.gif" width="99" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('about1','','hide')"><img name="coll" border="0" src="menu_img/collaborator0.gif" width="110" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('about1','','hide')"><img name="contact" border="0" src="menu_img/contactus0.gif" width="99" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('about1','','hide')"><img name="contact" border="0" src="menu_img/sitemap0.gif" width="74" height="33"></td>
</tr>
</table>
<table border="0" cellspacing="0" cellpadding="0" > <tr>
<!-- 부메뉴 -->
<td width=660 height="28" colspan="2" bgcolor="#0D3689"><a href="../about1.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('about sub 1','','menu_img/about_11.gif',0)"><img name="about sub 1" border="0" src="menu_img/about_10.gif" width="154" height="28"></a><a href="../about2.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('about sub 2','','menu_img/about_21.gif',0)"><img name="about sub 2" border="0" src="menu_img/about_20.gif" width="85" height="28"></a><a href="../about3.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('about sub 3','','menu_img/about_31.gif',0)"><img name="about sub 3" border="0" src="menu_img/about_30.gif" width="102" height="28"></a><a href="../about4.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('about sub 4','','menu_img/about_41.gif',0)"><img name="about sub 4" border="0" src="menu_img/about_40.gif" width="86" height="28"></a><a href="about5.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('about sub 5','','menu_img/about_51.gif',0)"><img name="about sub 5" border="0" src="menu_img/about_50.gif" width="166" height="28"></a><a href="about6.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('about sub 6','','menu_img/about_61.gif',0)"><img name="about sub 6" border="0" src="menu_img/about_60.gif" width="67" height="28"></a></td><td height="28" width="120"><img src="top_img/blank.gif" WIDTH="100" HEIGHT="5"></td></tr>
</table>
</div>
<!-- product -->
<div id="product1" style="position:absolute; z-index:1; left: 0; top: 67 ;visibility: hidden">
<!-- 주메뉴 -->
<table border="0" cellspacing="0" cellpadding="0" > <tr>
<td><a href="#" onMouseOver="MM_showHideLayers('product1','','hide')"><img name="about" border="0" src="menu_img/aboutus0.gif" width="85" height="33"></a></td>
<td><img name="product" border="0" src="menu_img/product1.gif" width="73" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('product1','','hide')"><img name="product" border="0" src="menu_img/news0.gif" width="54" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('product1','','hide')"><img name="coll" border="0" src="menu_img/data0.gif" width="99" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('product1','','hide')"><img name="coll" border="0" src="menu_img/collaborator0.gif" width="110" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('product1','','hide')"><img name="contact" border="0" src="menu_img/contactus0.gif" width="99" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('product1','','hide')"><img name="contact" border="0" src="menu_img/sitemap0.gif" width="74" height="33"></td>
</tr>
</table>
<!-- 부메뉴 -->
<table border="0" cellspacing="0" cellpadding="0" > <tr>
<td width=660 height="28" colspan="2" bgcolor="#0D3689"><a href="product1.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('product 1','','menu_img/product_11.gif',0)"><img name="product 1" border="0" src="menu_img/product_10.gif" width="80" height="28"></a><a href="product2.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('product 2','','menu_img/product_21.gif',0)"><img name="product 2" border="0" src="menu_img/product_20.gif" width="116" height="28"></a><a href="product3.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('product 3','','menu_img/product_31.gif',0)"><img name="product 3" border="0" src="menu_img/product_30.gif" width="148" height="28"></a><a href="product4.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('product 4','','menu_img/product_41.gif',0)"></td>
</tr>
</table></div>
<!-- news -->
<div id="news1" style="position:absolute; z-index:1; left: 0; top: 67 ;visibility: hidden">
<!-- 주메뉴 -->
<table border="0" cellspacing="0" cellpadding="0" > <tr>
<td><a href="#" onMouseOver="MM_showHideLayers('news1','','hide')"><img name="about" border="0" src="menu_img/aboutus0.gif" width="85" height="33"></a></td>
<td><a href="#" onMouseOver="MM_showHideLayers('news1','','hide')"><img name="product" border="0" src="menu_img/product0.gif" width="73" height="33"></a></td>
<td><img name="product" border="0" src="menu_img/news1.gif" width="54" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('news1','','hide')"><img name="coll" border="0" src="menu_img/data0.gif" width="99" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('news1','','hide')"><img name="coll" border="0" src="menu_img/collaborator0.gif" width="110" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('news1','','hide')"><img name="contact" border="0" src="menu_img/contactus0.gif" width="99" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('news1','','hide')"><img name="contact" border="0" src="menu_img/sitemap0.gif" width="74" height="33"></td>
</table>
<!-- 부메뉴 -->
<table border="0" cellspacing="0" cellpadding="0" > <tr>
<td width=660 height="28" colspan="2" bgcolor="#0D3689"><a href="news1.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('news 1','','menu_img/news_11.gif',0)"><img name="news 1" border="0" src="menu_img/news_10.gif" width="95" height="28"></a><a href="news2.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('news 2','','menu_img/news_21.gif',0)"><img name="news 2" border="0" src="menu_img/news_20.gif" width="179" height="28"></a><a href="news3.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('news 3','','menu_img/news_31.gif',0)"><img name="news 3" border="0" src="menu_img/news_30.gif" width="122" height="28"></a><a href="news4.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('news 4','','menu_img/news_41.gif',0)"></td>
</tr>
</table></div>
<!-- data -->
<div id="mdata" style="position:absolute; height: 50; z-index:1; left: 0; top: 67; visibility: hidden">
<!-- 주메뉴 -->
<table border="0" cellspacing="0" cellpadding="0" > <tr>
<td><a href="#" onMouseOver="MM_showHideLayers('mdata','','hide')"><img name="about" border="0" src="menu_img/aboutus0.gif" width="85" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mdata','','hide')"><img name="product" border="0" src="menu_img/product0.gif" width="73" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mdata','','hide')"><img name="product" border="0" src="menu_img/news0.gif" width="54" height="33"></A></td>
<td><img name="coll" border="0" src="menu_img/data1.gif" width="99" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mdata','','hide')"><img name="coll" border="0" src="menu_img/collaborator0.gif" width="110" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mdata','','hide')"><img name="contact" border="0" src="menu_img/contactus0.gif" width="99" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mdata','','hide')"><img name="contact" border="0" src="menu_img/sitemap0.gif" width="74" height="33"></td>
</tr>
</table>
<!-- 부메뉴 -->
<table border="0" cellspacing="0" cellpadding="0" > <tr>
<td width=660 height="28" colspan="2" bgcolor="#0D3689"><a href="data1.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('data room 1','','menu_img/data_11.gif',0)"><img name="data room 1" border="0" src="menu_img/data_10.gif" width="85" height="28"></a><a href="data2.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('data room 2','','menu_img/data_21.gif',0)"><img name="data room 2" border="0" src="menu_img/data_20.gif" width="196" height="28"></a><a href="data3.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('data room 3','','menu_img/data_31.gif',0)"><img name="data room 3" border="0" src="menu_img/data_30.gif" width="111" height="28"></a><a href="data4.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('Image30','','menu_img/data_41.gif',0)"></td>
</tr>
</table></div>
<! -- collaborator -->
<div id="mcollaborator" style="position:absolute; height: 50; z-index:1; left: 0; top: 67; visibility: hidden">
<!-- 주메뉴 -->
<table border="0" cellspacing="0" cellpadding="0" > <tr>
<td><a href="#" onMouseOver="MM_showHideLayers('mcollaborator','','hide')"><img name="about" border="0" src="menu_img/aboutus0.gif" width="85" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mcollaborator','','hide')"><img name="product" border="0" src="menu_img/product0.gif" width="73" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mcollaborator','','hide')"><img name="product" border="0" src="menu_img/news0.gif" width="54" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mcollaborator','','hide')"><img name="coll" border="0" src="menu_img/data0.gif" width="99" height="33"></A></td>
<td><img name="coll" border="0" src="menu_img/collaborator1.gif" width="110" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mcollaborator','','hide')"><img name="contact" border="0" src="menu_img/contactus0.gif" width="99" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mcollaborator','','hide')"><img name="contact" border="0" src="menu_img/sitemap0.gif" width="74" height="33"></td>
</table>
<!-- 부메뉴 -->
<table border="0" cellspacing="0" cellpadding="0" > <tr>
<td width=660 height="28" colspan="2" bgcolor="#0D3689"><a href="coll1.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('collaborator 1','','menu_img/collaborator_11.gif',0)"><img name="collaborator 1" border="0" src="menu_img/collaborator_10.gif" width="129" height="28"></a><a href="coll2.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('collaborator 2','','menu_img/collaborator_21.gif',0)"><img name="collaborator 2" border="0" src="menu_img/collaborator_20.gif" width="158" height="28"></a></td>
</tr>
</table></div>
<!-- contactus -->
<div id="mcontactus" style="position:absolute; height: 50; z-index:1; left: 0; top: 67; visibility: hidden">
<!-- 주메뉴 -->
<table border="0" cellspacing="0" cellpadding="0" > <tr>
<td><a href="#" onMouseOver="MM_showHideLayers('mcontactus','','hide')"><img name="about" border="0" src="menu_img/aboutus0.gif" width="85" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mcontactus','','hide')"><img name="product" border="0" src="menu_img/product0.gif" width="73" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mcontactus','','hide')"><img name="product" border="0" src="menu_img/news0.gif" width="54" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mcontactus','','hide')"><img name="coll" border="0" src="menu_img/data0.gif" width="99" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mcontactus','','hide')"><img name="coll" border="0" src="menu_img/collaborator0.gif" width="110" height="33"></A></td>
<td><img name="contact" border="0" src="menu_img/contactus1.gif" width="99" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('mcontactus','','hide')"><img name="contact" border="0" src="menu_img/sitemap0.gif" width="74" height="33"></td>
</table>
<!-- 부메뉴 -->
<table border="0" cellspacing="0" cellpadding="0" > <tr>
<td width=660 height="28" colspan="2" bgcolor="#0D3689"><a href="contactus.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('contactus 1','','menu_img/contactus_11.gif',0)"><img name="contactus 1" border="0" src="menu_img/contactus_10.gif" width="134" height="28"></a><a href="contactus2.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('contactus 2','','menu_img/contactus_21.gif',0)"><img name="contactus 2" border="0" src="menu_img/contactus_20.gif" width="78" height="28"></a><a href="contactus3.html" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('contactus 3','','menu_img/contactus_31.gif',0)"></td>
</tr>
</table></div>
<! -- sitemap -->
<div id="msitemap" style="position:absolute; height: 50; z-index:1; left: 0; top: 67; visibility: hidden">
<! -- 주메뉴 -->
<table border="0" cellspacing="0" cellpadding="0" > <tr>
<td><a href="#" onMouseOver="MM_showHideLayers('msitemap','','hide')"><img name="about" border="0" src="menu_img/aboutus0.gif" width="85" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('msitemap','','hide')"><img name="product" border="0" src="menu_img/product0.gif" width="73" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('msitemap','','hide')"><img name="product" border="0" src="menu_img/news0.gif" width="54" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('msitemap','','hide')"><img name="coll" border="0" src="menu_img/data0.gif" width="99" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('msitemap','','hide')"><img name="coll" border="0" src="menu_img/collaborator0.gif" width="110" height="33"></td>
<td><a href="#" onMouseOver="MM_showHideLayers('msitemap','','hide')"><img name="contact" border="0" src="menu_img/contactus0.gif" width="99" height="33"></td>
<td><img name="map" border="0" src="menu_img/sitemap1.gif" width="74" height="33"></td>
</tr>
</table>
<!-- 부메뉴 -->
</table><table border="0" cellspacing="0" cellpadding="0" > <tr><td></td></tr>
</table>
</div>
</table>
</body>
</html>
|
테이블 구조 id int, name char(20), age int, addr(20) test.php
<?php
$conn = OCILogon("scott","tiger"); //로그인을 한다.
$stmt = OCIParse($conn,"select * from test"); //test테이블의 내용을 변수에 저장한다.
OCIExecute($stmt); //저장한 변수를 활성화 한다.
while (OCIFetchInto($stmt, $col, OCI_NUM))
{ //변수의 내용을 가져온다.
echo "". $col[0]."....". $col[1]."....". $col[2]."....". $col[3]." ";
//테이블의 내용을 출력 시킨다.
}
OCIFreeStatement($stmt); // 변수의 내용을 지운다.
OCILogoff($conn);// 로그 오프를 한다.
?>
|
myhome_bakcup 셀스크립트 #!/bin/bash
T=$(echo `date +%Y%m%d%H%M`)
MY=$(echo /home/nalabi/backup)
echo "nalabi 의 데이타가 백업 되었습니다. $T"
mysqldump myhome > $MY/myhome$T.sql
gzip $MY/myhome$T.sql
|
/etc/crontab 사용하기 SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
|
형식 : a b c d e id runparts directory 분(0~59) 시(0~24) 날짜(0~31) 달(0~12) 요일(0~7) id(크론이 사용할 계정) directory(실행하게될 파일 놓이게 될 경로) 예제 : 15 14 1 * * root /home/nalabi/backup/myhome_backup 매달 1일 오후 2시 15에 myhome_backup을 실행한다. 0 22 * * 1-5 root /home/nalabi/backup/myhome_backup 월요일 부터 금요일까지 매일 오후 8시에 myhome_backup을 실행한다. 23 0-23/2 * * * root /home/nalabi/backup/myhome_backup 매일 0, 2, 4, ....시 23분에 실행한다.
mysql 중지한다. /etc/init.d/mysql stop 데몬을 아무나 들어갈수 있게 다시 실행한다. safe_mysqld --skip-grant &
|
루트 패스워드를 변경한다. mysql> update user set password='' where user='root';
|
mysql 을 재시동 합니다. /etc/init.d/mysql stop
/etc/init.d/mysql start
|
수치 데이터 타입 * INTEGER (INT)
* SMALLINT
* NUMBER
* DECIMAL(DEC) (x,y) : x는 실수자리, y는 소수점 이하자리
* FLOAT
|
문자 데이터 타입
* VARCHAR (n) : 8비트 문자 길이가 최대 n개인 문자열
*CHARACTER(CHAR) (n) : n개의 8비트 문자열
* LONG
|
그외의데이터 타입 * DATE/TIME : 날짜/시간
* LONG RAW
|
mysqlshow +-----------+
|Databases |
+-----------+
| board |
| kedu |
| mysql |
| test |
+-----------+
|
mysql test Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with-A
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 7 to server version: 3.22.23b
Type 'help' for help.
mysql>
|
mysqldump 를 이용해서 sql 데이타를 백업 받을수 있으며 DB이름만 지정하면 전체 테이블이, 테이블 이름 까지 지정하면 해당 테이블만 백업을 할수 있다. mysqldump DB이름 (table이름) > 화일이름 mysqldump test test > test.sql # MySQL dump 6.0
#
# Host: localhost Database: test
#--------------------------------------------------------
# Server version 3.22.23b
#
# Table structure for table 'test'
#
CREATE TABLE test (
no int(11),
name char(10),
tel char(15),
addr char(20),
sex char(1),
birth date
);
#
# Dumping data for table 'test'
#
INSERT INTO test VALUES (2,'이주상','02-504-xxxx','과천시','m','1971-02-02');
INSERT INTO test VALUES (3,'임정남','02-420-xxxx','송파구','f','1971-03-03');
INSERT INTO test VALUES (4,'강행모','02-856-xxxx','관악구','f','1971-04-04');
INSERT INTO test VALUES (5,'이현영','0342-718-xxxx','분당구','m','1971-05-05');
INSERT INTO test VALUES (6,'이병환','02-891-xxxx','하안동','m','1980-06-06');
INSERT INTO test VALUES (1,'남상욱','333-4444','동작구','m','1971-01-01');
|
mysql test < test.sql 참고로 데이타 확인은 mysql -e "select * from test" test
+------+--------+---------------+--------+------+------------+
| no | name | tel | addr | sex | birth |
+------+--------+---------------+--------+------+------------+
| 2 |이주상 | 02-504-xxxx | 과천시 | m | 1971-02-02 |
| 3 | 임정남 | 02-420-xxxx | 송파구 | f | 1971-03-03 |
| 4 | 강행모 | 02-856-xxxx | 관악구 | f | 1971-04-04 |
| 5 | 이현영 | 0342-718-xxxx | 분당구 | m | 1971-05-05 |
| 6 | 이병환 | 02-891-xxxx | 하안동 | m | 1980-06-06 |
| 1 | 남상욱 | 333-4444 | 동작구 | m | 1971-01-01 |
+------+--------+---------------+--------+------+------------+
|
aaaa라는 사용자(user)를 만듭니다. mysql mysql(mysql db로 들어갑니다.)
mysql>insert into user values ('localhost','aaaa','','y','y','y','y','y','y','y','y','y','y','y','y','y','y');
Query OK, 1 row affected (0.04 sec)
|
reload 를 꼭 실행시킵니다.(쉘에서) mysqladmin reload aaaa라는 사용자에게 aaaa라는 비밀번호를 부여합니다. mysqladmin -u aaaa password aaaa mysqladmin reload
데이타 베이스 만들기 사용자가 없을 경우 : mysqladmin create aaaa 사용자와 비밀번호가 있는 경우 : mysqladmin -u aaaa -p create aaaa (or) mysqladmin -u aaaa -paaaa create aaaa 서버의 데이타 베이스 끌어오기 서버 상의 데이타 베이스를 나의 컴의 프로그램으로 가져 올때 사용합니다. 서버의 mysql mysql 을 실행 합니다. INSERT INTO db VALUES ('나의 컴 아이피','DB이름','사용자','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); INSERT INTO user VALUES ('나의 컴 아이피 '사용자 ','비밀번호 ','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); 그리고, 위의 퀘리문을 편집해서 실행 합니다. 그려면 나의 컴에 DB가 없어도 서버의 DB를 가져와서 사용을 할수가 있습니다.
사용법 : create table 테이블이름(변수명 변수값, ......); mysql> create table test (no int, name char(10), age int, tel char(15));
Query OK, 0 rows affected (0.00 sec)
|
사용법 : show tables; mysql> show tables;
+-----------------+
| Tables in test |
+-----------------+
| test |
+-----------------+
2 rows in set (0.00 sec)
mysql> show tables like 'ad_%';
+-------------------------+
| Tables_in_dbkedu (ad_%) |
+-------------------------+
| ad_expose |
| ad_img |
| ad_redirect |
| address |
+-------------------------+
4 rows in set (0.00 sec)
|
mysql > insert into test values(1,'김용일','29','02-825-xxxx');
Query OK, 1 row affected (0.00 sec)
|
mysql> insert into test (no,name) values ('7','남상욱');
Query OK,1 row affected (0.00 sec)
|
select 문을 이용한다. mysql> select * from test;
+------+--------+------+---------------+
| no | name | age | tel |
+------+--------+------+---------------+
| 1 | 김용일 | 29 | 02-825-xxxx |
| 2 | 이주상 | 29 | 02-504-xxxx |
| 3 | 임정남 | 29 | 02-420-xxxx |
| 4 | 강행모| 29 | 02-856-xxxx |
| 5 | 이현영 | 29 | 0342-718-xxxx |
| 6 |이병환 | 12 |02-891-xxxx |
| 7 | 남상욱 | NULL | NULL |
+------+--------+------+---------------+
7 rows in set (0.00 sec)
|
alter 문을 이용한다. mysql> alter table test add addr char(20);
Query OK, 1 row affected (0.00 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> desc test;
+-------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| no |int(11) | YES | | NULL | |
| name | char(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| tel | char(15) | YES | | NULL | |
| addr | char(20) | YES | | NULL | |
+-------+----------+------+-----+---------+-------+
5 rows in set (0.00 sec)
|
alter 문을 이용한다. mysql> alter table test drop age;
Query OK, 6 rows affected (0.01 sec)
Records: 6 Duplicates: 0 Warnings: 0
|
alter 문을 이용한다. ALTER TABLE에는 다음 세가지 형식이 있습니다. ALTER TABLE table_name ADD ( ... ) ; ALTER TABLE table_name MODIFY( ... ) ; ALTER TABLE table_name DROP PRIMARYKEY ; ALTER TABLE t1 RENAME t2; 테이블 이름을 t1에서 t2로 바꿈 ALTER TABLE t2 CHANGE a a TINYINT NOT NULL, CHANGE b c CHAR(20); 테이블 내의 컬럼 속성을 바꿈 원래 컬럼 a는 INTEGER였는데 TINYINT로, 컬럼b는 CHAR(10)이었는데 컬럼이름은 c로 이타 타입은 CHAR(20)으로 수정 ALTER TABLE t2 ADD d TIMESTAMP; 테이블 t2에 d라는이름으로 TIMESTAMP 형으로 추가 ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a); 새로운 인텍스를 생성 컬럼 a에 primary key 생성. ALTER TABLE test MODIFY (age NUMBER NULL ); NOT NULL을 NULL로 바꾸기 ALTER TABLE test MODIFY (age NUMBER NOT NULL ); NULL을 NOT NULL로 바꾸기 ALTER TABLEtest MODIFY (name VARCHAR2( 20 ) ); 열의 폭 늘이기 ALTER TABLE test MODIFY (name VARCHAR2( 15 ) ); 열의 폭 줄이기 ALTER TABLE t2 DROP COLUMN c; 컬럼 c를 없애버리고 ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT, ADD INDEX (c); t2 테이블에 c라는 컬럼을 새로 생성시키는데 INT (INTEGER) : 정수 UNSIGNED : 양수 NOT NULL : 아무데이타가 없으면 '0' AUTO_INCREMENT : 데이타가 자동적으로 입력됨... ADD INDEX (c) : 컬럼 c에 대해서 인텍스 생성
delete 를 이용한다. mysql>delete from test where name='김용일';
Query OK, 1 row affected(0.00 sec)
|
update를 이용한다.
mysql> update test set no=1,tel='333-4444' where name='남상욱';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
|
mysql> update test set addr='동작구' where no='1';
|
order문을 이용 mysql> select * from test order by no desc;
+------+--------+------+---------------+--------+
| no | name | age | tel | addr |
+------+--------+------+---------------+--------+
| 6 | 이병환 |12 | 02-891-xxxx | NULL |
| 5 | 이현영 | 29 | 0342-718-xxxx | NULL |
| 4 | 강행모 | 29 | 02-856-xxxx | NULL |
| 3 | 임정남 | 29 | 02-420-xxxx | NULL |
| 2| 이주상 | 29 | 02-504-xxxx | NULL |
| 1 | 남상욱 | NULL | 333-4444 | 동작구 |
+------+--------+------+---------------+--------+
6 rows in set (0.01 sec)
|
rand문을 이용 mysql> select * from test order by rand();
+------+--------+---------------+--------+------+------------+
| no | name | tel | addr | sex | birth |
+------+--------+---------------+--------+------+------------+
| 5 | 이현영 | 0342-718-xxxx | 분당구 | m | 1971-05-05 |
| 4 | 강행모 | 02-856-xxxx | 관악구 | f | 1971-04-04 |
| 2 | 이주상 | 02-504-xxxx | 과천시 | m | 1971-02-02 |
| 1 | 남상욱 | 333-4444 | 동작구 | m | 1971-01-01 |
| 6 | 이병환 | 02-891-xxxx | 하안동 | m | 1980-06-06 |
| 3 | 임정남 | 02-420-xxxx | 송파구 | f | 1971-03-03 |
+------+--------+---------------+--------+------+------------+
6 rows in set (0.01 sec)
|
year문 이용 mysql> select * from test order by year(birth) desc;
+------+--------+---------------+--------+------+------------+
| no | name | tel | addr | sex | birth |
+------+--------+---------------+--------+------+------------+
| 6 | 이병환 | 02-891-xxxx | 하안동 | m | 1980-06-06 |
| 2 | 이주상 | 02-504-xxxx | 과천시 | m | 1971-02-02 |
| 3 | 임정남 | 02-420-xxxx | 송파구 | f | 1971-03-03 |
| 4 | 강행모 | 02-856-xxxx | 관악구 | f | 1971-04-04 |
| 5 | 이현영 | 0342-718-xxxx | 분당구 | m | 1971-05-05 |
| 1 | 남상욱 | 333-4444 | 동작구 | m | 1971-01-01 |
+------+--------+---------------+--------+------+------------+
6 rows in set (0.00 sec)
|
year 문 이용 mysql> select * from test order by year(birth) desc, no desc;
+------+--------+---------------+--------+------+------------+
| no | name | tel | addr | sex | birth |
+------+--------+---------------+--------+------+------------+
| 6 | 이병환 | 02-891-xxxx | 하안동 | m | 1980-06-06 |
| 5 | 이현영 | 0342-718-xxxx | 분당구 | m | 1971-05-05 |
| 4 | 강행모 | 02-856-xxxx | 관악구 | f | 1971-04-04|
| 3 | 임정남 | 02-420-xxxx | 송파구 | f | 1971-03-03 |
| 2 | 이주상 | 02-504-xxxx | 과천시 | m | 1971-02-02 |
| 1 | 남상욱 | 333-4444 | 동작구 | m | 1971-01-01 |
+------+--------+---------------+--------+------+------------+
|
where 절 이용 mysql> select count(*) from test where age >=20;
+----------+
| count(*) |
+----------+
| 4 |
+----------+
1 row in set (0.00 sec)
|
null 문 이용 mysql> select * from test where addr is not null;
+------+--------+------+----------+--------+
| no | name | age | tel | addr |
+------+--------+------+----------+--------+
| 1 | 남상욱 | NULL | 333-4444 | 동작구 |
+------+--------+------+----------+--------+
1 row in set (0.00 sec)
|
null 문 이용 mysql> select * from test whereaddr is null;
+------+--------+------+---------------+------+
| no | name | age | tel | addr |
+------+--------+------+---------------+------+
| 2 | 이주상 | 29 | 02-504-xxxx | NULL |
| 3 | 임정남 | 29| 02-420-xxxx | NULL |
| 4 | 강행모 | 29 | 02-856-xxxx | NULL |
| 5 | 이현영 | 29 | 0342-718-xxxx | NULL |
| 6 | 이병환 | 12| 02-891-xxxx | NULL |
+------+--------+------+---------------+------+
5 rows in set (0.01 sec)
|
like 이용
mysql> select * from test where name like '%이%';
+------+--------+------+---------------+------+
| no | name | age | tel | addr |
+------+--------+------+---------------+------+
| 2 | 이주상 | 29 | 02-504-xxxx | NULL |
| 5 | 이현영 | 29 | 0342-718-xxxx | NULL |
| 6 | 이병환 | 12 | 02-891-xxxx | NULL |
+------+--------+------+---------------+------+
3 rows in set (0.00 sec)
|
등호, 부등호 를 이용해서 검색 mysql> select * from test where age>=10 and age <=20;
+------+--------+------+-------------+------+
| no | name | age | tel | addr |
+------+--------+------+-------------+------+
| 6 | 이병환 | 12 | 02-891-xxxx | NULL |
+------+--------+------+-------------+------+
1 row in set (0.00 sec)
|
in 문을 이용해서 검색 mysql> select * from test where addr in('동작구','관악구');
+------+--------+------+-------------+--------+
| no | name | age | tel | addr |
+------+--------+------+-------------+--------+
| 4 | 강행모 | 29 | 02-856-xxxx | 관악구 |
| 1 | 남상욱 | NULL | 333-4444 | 동작구 |
+------+--------+------+-------------+--------+
2 rows in set (0.00 sec)
|
not in문을 이용해서 검색 mysql> select * from test where addr not in('동작구','관악구');
+------+--------+------+---------------+--------+
| no | name | age | tel | addr |
+------+--------+------+---------------+--------+
| 2 | 이주상 | 29 |02-504-xxxx | 과천시 |
| 3 | 임정남 | 29 | 02-420-xxxx | 송파구 |
| 5 | 이현영 | 29 | 0342-718-xxxx | 분당구 |
| 6 | 이병환 | 12 | 02-891-xxxx | 하안동 |
+------+--------+------+---------------+--------+
4 rows in set (0.00 sec)
|
치환 검색 mysql> select * from cls_class as a, cls_member as b where b.g_code = 'h0001_3_2' and b.g_code=a.g_code;
|
where 절 이용 mysql> SELECT COUNT(no) FROM brd_free WHERE date = '2000-02-17';
+-----------+
| COUNT(no) |
+-----------+
| 1 |
+-----------+
1 row in set (0.03 sec)
|
꼭 경로를 지정해야함
mysql> select * from test into outfile '/root/test.txt';
|
결과 2 이주상 02-504-xxxx 과천시 m 1971-02-02
3 임정남 02-420-xxxx 송파구 f 1971-03-03
4 강행모 02-856-xxxx 관악구 f 1971-04-04
5 이현영 0342-718-xxxx 분당구 m 1971-05-05
6 이병환 02-891-xxxx 하안동 m 1980-06-06
1 남상욱 333-4444 동작구 m 1971-01-01
|
terminated 문을 쓴다. mysql> select * from test into outfile '/root/test.txt' fields terminated by '|';
|
결과 2|이주상|02-504-xxxx|과천시|m|1971-02-02
3|임정남|02-420-xxxx|송파구|f|1971-03-03
4|강행모|02-856-xxxx|관악구|f|1971-04-04
5|이현영|0342-718-xxxx|분당구|m|1971-05-05
6|이병환|02-891-xxxx|하안동|m|1980-06-06
1|남상욱|333-4444|동작구|m|1971-01-01
|
load 명령어를 쓴다. mysql> load data infile '/root/test.txt' replace into table test fields terminated by '|';
Query OK, 6 rows affected (0.02 sec)
Records: 6 Deleted: 0 Skipped: 0 Warnings: 0
|
결과 mysql> select * from test;
+------+--------+---------------+--------+------+------------+
| no | name | tel | addr | sex | birth |
+------+--------+---------------+--------+------+------------+
| 2 |이주상 | 02-504-xxxx | 과천시 | m | 1971-02-02 |
| 3 | 임정남 | 02-420-xxxx | 송파구 | f | 1971-03-03 |
| 4 | 강행모 | 02-856-xxxx | 관악구| f | 1971-04-04 |
| 5 | 이현영 | 0342-718-xxxx | 분당구 | m | 1971-05-05 |
| 6 | 이병환 | 02-891-xxxx | 하안동 | m | 1980-06-06 |
| 1 |남상욱 | 333-4444 | 동작구 | m | 1971-01-01 |
+------+--------+---------------+--------+------+------------+
|
* SUM (Column_name) : 특정 컬럼에서 조건에 만족하는 모든열의 값을 다더함 * AVG (Column_name) : 평균값 추출 * MAX (Column_name) : 최대값추출 * MIN (Column_name) : 최소값 추출 * COUNT (Column_name): 열의수를 추출 sum 문 사용하기 mysql> select sum(age) from test;
+----------+
| sum(age) |
+----------+
| 128 |
+----------+
1 row in set (0.00 sec)
|
/기 사용하기 mysql> select no, age, (no+age), (no+age)/2 from test;
+------+------+----------+------------+
| no | age | (no+age) | (no+age)/2 |
+------+------+----------+------------+
| 2 | 29 | 31 | 15.50 |
| 3 | 29 | 32 | 16.00|
| 4 | 29 | 33 | 16.50 |
|5 | 29 | 34 | 17.00 |
| 6 | 12 | 18 | 9.00 |
| 1 | NULL | NULL | NULL |
+------+------+----------+------------+
6 rows in set (0.00 sec)
|
yser 문 사용하기 mysql> select *, year(curdate())-year(birth)+1 as age from test;
+------+--------+---------------+--------+------+------------+------+
| no | name | tel | addr | sex | birth | age |
+------+--------+---------------+--------+------+------------+------+
| 2 | 이주상 | 02-504-xxxx | 과천시 | m | 1971-02-02 |29 |
| 3 | 임정남 | 02-420-xxxx | 송파구 |f | 1971-03-03 | 29 |
| 4 | 강행모 | 02-856-xxxx | 관악구 | f | 1971-04-04 | 29 |
| 5 |이현영 | 0342-718-xxxx | 분당구 | m | 1971-05-05 | 29 |
| 6 | 이병환 | 02-891-xxxx | 하안동 | m | 1980-06-06 | 20 |
| 1 | 남상욱 | 333-4444 | 동작구 | m | 1971-01-01 | 29 |
+------+--------+---------------+--------+------+------------+------+
6 rows in set (0.01 sec)
|
unix_timestamp문을 사용한다. mysql> select unix_timestamp(curdate());
+---------------------------+
| unix_timestamp(curdate()) |
+---------------------------+
| 934210800 |
+---------------------------+
1 row in set (0.05 sec)
|
A라는 서버에 DB가 있고, 210.180.56.204에서 프로그램을 돌릴때 A라는 서에있는 mysql mysql 에 다음과 같이 입력을 합니다. INSERT INTO db VALUES ('210.180.56.204','dbname','user','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); INSERT INTO host VALUES ('210.180.56.204','dbname','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); INSERT INTO user VALUES ('210.180.56.204','user','passwd','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); 210.180.56.204 의 컴에서 프로그램을 할때 다음과 같이 설정을 해주면 원격 DB 를 사용할수 있습니다. $db_server ="servername"; // DB 서버 주소 $db_user = "root"; // DB 사용자 $db_name = ""; // DB 이름 $db_pass = ""; // DB 암호
|
|