천객만래 [千客萬來] (It has an interminable succession of visitors)

crontab 사용하여 mysql 자동 백업 파일 생성





1. 백업 스크립트 파일만들기.

# vi mysqlbackup.sh

--------파일 내용-----

#!/bin/sh
date_name="$(date +%y%m%d%H%M)" 
b_file_name="data_"
mysqldump -u유저아이디 데이터베이스 > /home/data/data_backup/$b_file_name$date_name.sql

------파일 내용 끝----

여기서 파일이  /home/data/data_backup/data_200507281728.sql
이정도로 저장될것이다.


2. crontab 설정하기

# crontab -e (편집)

----- crontab edit -----

0       0       1       *       *      mysqlbackup.sh

-----------------end ------

(매월 1일 0시0분 마다 백업한다.)

분, 시간, 일, 월, 요일 명령어. (각 tab 또는 스페이스 로 구분한다)


3. 설정된 크론탭 리스트.

#crontab -l

0       0       1       *       *      mysqlbackup.sh


4. 테스트시 매 분마다 보려면

*       *       *       *       *      mysqlbackup.sh

이렇게 편집 하면된다.





Posted by SB패밀리

웹서버 설정 관련 링크 : 웹서버 + PHP + MySQL + DDNS.



아래 사이트에서정보와 자료를 구하면 됨.


윈도우 기반 또는 리눅스 기반...



www.codns.com
www.apmsetup.com
www.autoset.org
www.dyndns.com




Posted by SB패밀리


MySQL 5 C# sample code using ObjectDataSources



Introduction

I created this example because I could not find a simple explanation for using MySQL 5 with ObjectDataSources in ASP.NET 2.0.

Let me say, I am really impressed with MySQL. I was able to install it easily on my Windows XP machine and get it running in about an hour. I am a long time MS SQL user, and was very frustrated with trying to use Oracle and Firebird. I realize, the problem is that I am spoiled from MS SQL Server, but hey I''m busy and I like easy to use tools :)

If you''re getting started with MySQL and ASP.NET, then I recommend these steps:

  1. Go to the MySQL website, download and install “Current Release (recommended).
  2. Download and install: MySQL Administrator (to administer your MySQL server, the first download just installs only the server).
  3. Download and install: Connector/Net 1.0 (you need this to get your ASP.NET pages to talk to your MySQL server).
  4. You can also download: MySQL Query Browser – (a graphical client to work with your MySQL databases and run queries).
  5. Read and follow this guide: A Step-by-Step Guide to Using MySQL with ASP.NET.

Using the code

To install the code:

  1. You must have MySQL 5 up and running.
  2. Install MySQL Connector/Net 1.0.
  3. Create a MySQL 5 database named Test.
  4. Create a table in that database called Message:
    CREATE TABLE test.message (
    
        Entry_ID INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
        Name VARCHAR(45),
        Email VARCHAR(45),
        Message VARCHAR(200),
        PRIMARY KEY (Entry_ID)
        )
        AUTO_INCREMENT=32
        CHARACTER SET latin1 COLLATE latin1_swedish_ci;
  5. Create these four MySQL stored procedures in the Test database:
    PROCEDURE `test`.`DeleteMessage`(IN param1 INT)
    BEGIN
    Delete From test.message
    WHERE Entry_ID = param1;
    END
    PROCEDURE `test`.`InsertMessage`(IN param1 VARCHAR(50), IN param2 
        VARCHAR(50), IN param3 VARCHAR(200))
    BEGIN
    INSERT INTO message(Name, Email, Message)
    VALUES(param1,param2,param3);
    END
    PROCEDURE `test`.`ShowAll`()
    BEGIN
    SELECT 
      message.Entry_ID,
      message.Name, 
      message.Email, 
      message.Message
    FROM
      test.message;
    END
    PROCEDURE `test`.`UpdateMessage`(IN paramkey INT, IN param1 VARCHAR(50), 
        IN param2 VARCHAR(50), IN param3 VARCHAR(200))
    BEGIN
    UPDATE    message
    SET              Name = param1, Email = param2, Message = param3
    WHERE     (message.Entry_ID = paramkey);
    END
  6. Unzip "MySQL" and configure IIS to point to it. Make sure you configure the web server to use ASP.NET 2.0.
  7. Open "web.config" and change the line:
    <add name="MySQLConnectionString" connectionString="server=localhost; 
       user id=myuser; password=mypass; database=test; pooling=false;" 
       providerName="MySql.Data.MySqlClient"/>

    to connect to your MySQL database.

  8. Browse to the default.aspx page through IIS.

This is the class that uses Generics to supply the data that is consumed by the ObjectDataSource control:

using System;
using System.Collections.Generic;
using System.Data;
using MySql.Data.MySqlClient;
using System.Configuration;
using System.ComponentModel;

[DataObject(true)]
public static class MessagesDB
{
    private static string GetConnectionString()
    {
        return ConfigurationManager.ConnectionStrings
        ["MySQLConnectionString"].ConnectionString;
    }

    [DataObjectMethod(DataObjectMethodType.Select)]
    public static List<MessageItem> GetMessages()
    {
        MySqlCommand cmd = new MySqlCommand("ShowAll", 
                           new MySqlConnection(GetConnectionString()));
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Connection.Open();
        MySqlDataReader dr = 
           cmd.ExecuteReader(CommandBehavior.CloseConnection);

        List<MessageItem> MessageItemlist = new List<MessageItem>();
        while (dr.Read())
        {
            MessageItem MessageItem = new MessageItem();
            MessageItem.Entry_ID = Convert.ToInt32(dr["Entry_ID"]);
            MessageItem.Message = Convert.ToString(dr["Message"]);
            MessageItem.Name = Convert.ToString(dr["Name"]);
            MessageItem.Email = Convert.ToString(dr["Email"]);
            MessageItemlist.Add(MessageItem);
        }
        dr.Close();
        return MessageItemlist;
    }

    [DataObjectMethod(DataObjectMethodType.Insert)]
    public static void InsertMessage(MessageItem MessageItem)
    {
        MySqlCommand cmd = new MySqlCommand("InsertMessage", 
                           new MySqlConnection(GetConnectionString()));
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(new MySqlParameter("param1", MessageItem.Name));
        cmd.Parameters.Add(new MySqlParameter("param2", MessageItem.Email));
        cmd.Parameters.Add(new MySqlParameter("param3", MessageItem.Message));
        cmd.Connection.Open();
        cmd.ExecuteNonQuery();
        cmd.Connection.Close();
    }

    [DataObjectMethod(DataObjectMethodType.Update)]
    public static int UpdateMessage(MessageItem MessageItem)
    {
        MySqlCommand cmd = new MySqlCommand("UpdateMessage", 
                           new MySqlConnection(GetConnectionString()));
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(new MySqlParameter("paramkey", MessageItem.Entry_ID));
        cmd.Parameters.Add(new MySqlParameter("param1", MessageItem.Name));
        cmd.Parameters.Add(new MySqlParameter("param2", MessageItem.Email));
        cmd.Parameters.Add(new MySqlParameter("param3", MessageItem.Message));
        cmd.Connection.Open();
        int i = cmd.ExecuteNonQuery();
        cmd.Connection.Close();
        return i;
    }

    [DataObjectMethod(DataObjectMethodType.Delete)]
    public static int DeleteMessage(MessageItem MessageItem)
    {
        MySqlCommand cmd = new MySqlCommand("DeleteMessage", 
                new MySqlConnection(GetConnectionString()));
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(new MySqlParameter("param1", MessageItem.Entry_ID));
        cmd.Connection.Open();
        int i = cmd.ExecuteNonQuery();
        cmd.Connection.Close();
        return i;
    }

The class above uses the class "MessageItem" to pass the parameters to and from the ObjectDataSource control:

using System;

public class MessageItem
{
    int _Entry_ID;
    string _Message;
    string _Name;
    string _Email;

    public MessageItem()
    {
    }

    public int Entry_ID
    {
        get
        {
        return _Entry_ID;
        }
        set
        {
        _Entry_ID = value;
        }
    }

    public string Message
    {
        get
        {
            return _Message;
        }
        set
        {
            _Message = value;
        }
    }

    public string Name
    {
        get
        {
            return _Name;
        }
        set
        {
            _Name = value;
        }
    }

    public string Email
    {
        get
        {
            return _Email;
        }
        set
        {
            _Email = value;
        }
    }
}

This is the .aspx file that contains the ObjectDataSource control as well as a GridView for editing data and a DetailsView for inserting a record:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
   TypeName="MessagesDB" OldValuesParameterFormatString="original_{0}" 
   SelectMethod="GetMessages" DataObjectTypeName="MessageItem" 
   DeleteMethod="DeleteMessage" InsertMethod="InsertMessage" 
   UpdateMethod="UpdateMessage">
</asp:ObjectDataSource>
<br />
<asp:GridView ID="GridView1" runat="server" 
      AutoGenerateColumns="False" 
      DataSourceID="ObjectDataSource1" 
      DataKeyNames="Entry_ID">
 <Columns>
   <asp:BoundField DataField="Entry_ID" HeaderText="Entry_ID" 
           SortExpression="Entry_ID" Visible="False" />
   <asp:CommandField ShowEditButton="True" />
   <asp:CommandField ShowDeleteButton="True" />
   <asp:BoundField DataField="Name" 
         HeaderText="Name" SortExpression="Name" />
   <asp:BoundField DataField="Email" 
         HeaderText="Email" SortExpression="Email" />
   <asp:BoundField DataField="Message" 
         HeaderText="Message" SortExpression="Message" />
 </Columns>
</asp:GridView>
<br />
<strong><span style="text-decoration: underline">
      Insert New Record:</span></strong><br />

<asp:DetailsView ID="DetailsView1" runat="server" 
    AutoGenerateRows="False" BorderStyle="None"
    CellSpacing="5" DataSourceID="ObjectDataSource1" 
    DefaultMode="Insert" GridLines="None"
    Height="50px" Width="300px">
  <Fields>
    <asp:BoundField DataField="Name" HeaderText="Name" />
    <asp:BoundField DataField="Email" HeaderText="Email" />
    <asp:BoundField DataField="Message" HeaderText="Message" />
    <asp:CommandField ButtonType="Button" 
         ShowInsertButton="True" ShowCancelButton="False" />
  </Fields>
</asp:DetailsView>

Note

The assembly "MySql.Data.dll" is in the "/bin" directory so the "MySql.Data.MySqlClient" will work.

I hope this helps!



MySQL_CS_samplesource.zip



Posted by SB패밀리

mysql 4.1.x대에서는 제로보드가 설치가 안됩니다.
제로보드의 bbs/schema.sql 파일을 수정해 주어야 하는데
이 파일을 첨부합니다.

첨부된 파일을 확장자를 변경하신 후, 홈계정에서 교체하시면 설치됩니다.



schema_zb17.txt


Posted by SB패밀리
양력음력변환 DB (MySQL)




여러 프로그래머분들께서 일반적으로 사용하는 양력음력변한 알고리즘에
문제점이 있는 걸로 알고 있습니다.
예를 들어 2006년 1월 26일인가 확실치는 모르겠는데
한달정도 음력날짜가 하루씩 밀리는 경우도 있고
2046년까지인가 그때까지만 변환이 가능하죠....
그래서 자료를 여기저기 찾아본 결과
http://cgi.chollian.net/~kohyc/calendar/index.cgi 에서
어떤 분이 만드신 진짜만세력 0.93 델파이 버전을 이용해서
우리가 많이 사용하는 1900년 부터 2200년 까지의 음력과 양력변환 테이블을
만들어 봤습니다.
MySQL용으로 변환하였고 테이블 내에는
음력날짜, 양력날짜, 윤년여부, 해당날짜의 간지
등을 포함하였습니다.
일반적으로는 이정도의 자료만으로 충분하다고 생각됩니다.
저도 아직 사용을 안해봐서 어느정도의 변환속도가 나오는지는 잘 모르겠지만.
DB를 사용하면 그냥 연산하는것 보다는 빠를거라고 생각됩니다.

위 사이트에 있는 만세력이 지금껏 제가 봐왔던 것 어떤 것보다 정확한 음력날짜를
구해 주는 것 같아서 DB를 만들었고....
PHP로의 포팅은 연산속도 때문에 별 의미가 없는 것 같아서 DB로 처리하는 방법을
생각해 봤습니다.
여러분들께 도움이 될것 같고 이 방법에 대한 의견도 듣고 싶어서 공유를 생각해 봤습니다.

데이터 갯수는 정확하게 109938개입니다.
제 컴퓨터가 팬티엄 450인데....
한달 자료를 통채로 검색하는데도 0.00sec로 나오내요...

select * from LunarToSolar where solar_date >= '2200/10/01' and solar_dat
e <= '2200/10/31';

정말 대단한 MySQL입니다.



lunartosolar_20020204.zip


출처: PhpSchool

Posted by SB패밀리

MySQL   패스워드 날렸을 때 처리


1. mysql  프로세스를 죽입니다.
# ps -aux | grep mysql

2.DB를 싱글모드로 실행하세요.
# ./mysql/bin/mysqld_safe --user=mysql --skip-grant-tables &

3. root 패스워드를 변경하세요.
[기본 디렉토리에 설치 하였다고 가정합니다.]

# cd /usr/local/mysql/bin
# mysql

mysql> use mysql;
mysql> update user set password=password('새로운암호입력') where user='root';
mysql> flush privileges;
mysql>q

4.다시 시작합니다.
# ./mysqladmin -u root -p shutdown
# ./bin/mysqld_safe &

여기까지 하시면 됩니다.

Posted by SB패밀리

초보자를 위한 mysql sql 사용법  

글쓴이 : 오렌지블루
  저작권자 이메일 : haremoon@won.hongik.ac.kr

출처 : http://www.devshed.com/Server_Side/MySQL/Intro/
  작성일 : 2002/04/24 13:37:34



글내용

   
초보자를 위한 mysql 사용법 


출처를 확인할 길이 없습니다. 
다운 받는 자료인데 보기 편하게 쭈악 ~~~~ 
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 
원본사이트: http://www.devshed.com/Server_Side/MySQL/Intro/ 
* Beginning MySQL Tutorial 
*(o) By W.J. Gilmore 
*(o)| April 03, 1999 
(o)| | 번역 : 원주희(haremoon@won.hongik.ac.kr) 
| | | 번역일자 : 1999년 9월26일 
============================================================================== 

The Database 

데이타베이스는 이제 모든 사람들의 생활에서 없어서는 안될 매우 중요한 부분이 되어졌다. 
데이타베이스가 없다면 우리가 하고 있는 많은 일들은 매우 지루하고, 불편한 일들이 될 
것이다. 은행과 대학, 도서관은 이러한 데이타베이스 시스템에 크게 의존하고 있는 기관의 
예이며, 인터넷의 서치엔진, 온라인 쇼핑몰또한 데이타베이스를 이용하여 구축되어지고 있다. 
데이타베이스는 하나의 컴퓨터가 데이타베이스 서버와 개방적인 상호 관계를 할 수 있도록 
도와주는 도구이자 인터페이스의 역할을 한다. 

T.c.X. DataKonsultAB에 의해 개발된 MySQL 서버는 현재 시장에서 급속하게 성장하고 있는 
SQL(Structured Query Language) 데이타베이스 서버 중의 하나이다. MySQL은 
http://www.mysql.com에서 다운로드 받을 수 있으며, 다른 데이타베이스 서버에서는 보기 
드문 배열된 옵션과 유용한 특성을 가진 데이타베이스 프로그램을 제공한다. 무엇보다 
도 MySQL의 가장 큰 장점은 개인적으로나 상업적으로 그것을 이용하기 바라는 모든 사람들 
에게 무료로 제공되는 공개용 데이타베이스라는 것이다. MySQL을 사용하여 명확한 어플 
리케이션을 개발하고 싶다면 MySQL's licensing ection(http://www.mysql.com/Manual 
_chapter/manual_Licensing_and_Support.html)을 참고하기 바란다. 


MySQL 서버는 다음의 내용을 포함하여 헤아릴 수 없이 많은 능력 가지고 있다. 

· 동시 사용자의 수가 무제한적인 처리 능력 
· 50,000,000+ record를 처리할 수 있는 용량 
· 매우 빠른 명령 수행 능력(아마 시장에 나온 데이타베이스 중에 가장 빠를지도 모른다) 
· 쉽고 능률적인 사용자 특권 시스템 

그러나 어쩌면 그 수많은 능력 중에서도 가장 흥미로운 사실은 그것이 무료라는 것이다. 
T.c.X 는 일반 대중에게 공개용 데이타베이스인 MySQL을 무료로 제공하고 있다. 


누가 MySQL 서버를 사용하는가?(So Who's Using MySQL?) 

MySQL 데이타베이스 서버는 다음과 같은 기관들에서 막대한 대중성을 얻어가며 사용되어지 
고 있다. 
· Silicon Graphics (http://www.sgi.com
· Siemens (http://www.siemens.com
만약 위의 글이 설득력 있기에 충분하지 않다면 더 많은 MySQL 사용자 목록을 
MySQL User's List (http://www.mysql.com/users.html)에서 찾아 보기 바란다. 

이 글은 MySQL 서버의 필수 조작과 기본적인 명령을 수행하기 위한 서버의 셋업, 적절하게 
연결하는 방법을 포함하여 MySQL 서버의 기본적인 운용을 배우는 것을 도울 것이다. 
만약 이미 MySQL에 대해서 기본적인 이해를 하고 있다면 이장을 뛰어 넘고 다음 장으로 
가도 상관없다. 그러나 이 글에 쓰여진 명령어들은 좀 더 수준 높은 명령어를 위 
한 기초로서, MySQL 언어에 있는 가장 중요한 명령어 중의 하나라는 점을 기억하기 바란다. 


● Part 1: 미리살펴보기(At First Glance) 
======================================= 

MySQL은 일반적으로 telnet을 통해 들어간다. (괜찮은 Telnet 프로그램인 Easyterm은 
http://www.arachnoid.com에서 구할 수 있다.) 한번이라도 웹서버에 telnet으로 접속한 
적이 있다면 MySQL 서버에 접근하는 두 번째 명령어를 준비하기 바란다. 

연결하기 위한 절차는 다음과 같습니다. 

1. telnet 접속하기 : ISP에서 제공된 username(ID)과 password가 필요하다. 
-------------------------------------------------------------------------- 
login: haremoon 
Password: ******** 
Last login: Sat May 22 12:52:01 from 203.249.84.223 

Sun Microsystems Inc. SunOS 5.6 Generic August 1997 

You have new mail. 
[haremoon@won /user/center/haremoon]# 
-------------------------------------------------------------------------- 

2. MySQL 연결하기 - MySQL 사용을 위해서는 명확하게 주어진 username과 password가 필요 
하다. 이 정보는 ISP제공자에게 요청하면 제공된다. 

-------------------------------------------------------------------------- 
[haremoon@won /user/center/haremoon]# mysql -u root -p mysql 
-------------------------------------------------------------------------- 
Syntax : mysql -h hostname -u username -p password database 
실행파일 | 호스트 | db유저 | 패스워드 |사용할 데이타베이스이름 
또는 

mysql -h hostname -u username -password=password database 

-p 옵션에 의해 패스워드를 입력하는 프롬프트가 나오면 패스워드를 입력한다. 
Enter password: 

만약 MySQL이 올바르게 설치되었고 실행되었다면 다음과 같은 화면을 볼 수 있을 것이다. 
-------------------------------------------------------------------------- 
Welcome to the MySQL monitor. Commands end with ; or g. 
Your MySQL connection id is 267 to server version: 3.22.16a-gamma 
Type 'help' for help. 

mysql> 
-------------------------------------------------------------------------- 

데이타베이스에 이미 연결되어 있다면 MySQL 언어의 여러 가지 명령어를 실행시켜도 좋다. 
그러나 그렇지 않으면 먼저 데이타베이스에 연결하기 위해 다음의 명령을 수행합니다. 

-------------------------------------------------------------------------- 
mysql> use study --> 사용할 데이타베이스 
Reading table information for completion of table and column names 
You can turn off this feature to get a quicker startup with -A 

Database changed 
mysql> 
-------------------------------------------------------------------------- 
여러분은 지금 데이타베이스에 연결 되어있다. 한가지 주목할 점은 MySQL에서 대부분의 모든 
명령어는 세미클론 (;)에 의해 수행된다는 것이다. 

우선 커맨드 라인에서 help, h 또는 ? 라고 입력하면 간단한 명령어 도움말을 볼 수 있다. 

-------------------------------------------------------------------------- 
mysql> help 

MySQL commands: 
help (h) Display this text 
? (h) Synonym for `help' 
clear (c) Clear command 
connect (r) Reconnect to the server. Optional arguments are db and host 
edit (e) Edit command with $EDITOR 
exit () Exit mysql. Same as quit 
go (g) Send command to mysql server 
ego (G) Send command to mysql server; Display result verically 
print (p) print current command 
quit (q) Quit mysql 
rehash (#) Rebuild completion hash 
status (s) Get status information from the server 
use (u) Use another database. Takes database name as argument 

Connection id: 268 (Can be used with mysqladmin kill) 
mysql> 
-------------------------------------------------------------------------- 
이 명령들은 지금 당장 필요 없을지도 모른다. 그러나 그 명령어들의 의미를 정확히 
알기 위해서 한번씩 테스트해 보는 것이 좋을 것이다. status, use, print, connect, 
clear, 그리고 quit와 같은 명령어들은 매우 유용하게 사용될 것이다. 

여러분은 지금 서버에 연결해서 데이타베이스를 선택하고 기본적인 명령어를 수행하는 방법 
에 대해 기본적으로 이해해야 한다. 다음 장에서는 데이타베이스를 조작하기 위해 필요한 
개념과 기술을 다룰 것이다. 



● Part 2: 데이타베이스와 테이블(Datatypes and Tables) 
==================================================== 

데이타베이스는 좀 더 복잡한 데이타 구조의 계층에 지나지 않는다. MySQL에서는 정보의 
묶음(또는 레코드)을 테이블이라 부른다. 

이러한 레코드들은 데이타 타입이라고 알려진, 사용자에 의해 조작될 수 있는 아주 작은 크 
기의 개체들로 구성된다. 이러한 데이타타입들은 하나 또는 그 이상이 모여 레코드를 구 
성하며, 데이타베이스의 부분을 이루는 테이블은 레코드의 집합으로 구성된다. 우리는 다 
음과 같이 데이타베이스의 계층을 생각 할 수 있다. 

------------------------------------ 
Database < Table < Record < Datatype 
------------------------------------ 

데이타 타입은 사용자가 어떠한 프로젝트를 수행하기 위해 가장 적합한 테이블을 만들 
때 여러 가지의 형식과 크기로 나타낼 수 있다. 적절한 데이타 타입을 선택하고 결정하 
는 것은 데이타베이스의 실행에 큰 영향을 주므로 이 개념에 대해 자세히 이해해야 한다. 


2.1 MySQL 데이타 타입 


MySQL은 경험이 없는 사용자라 할 지라도 한번씩은 많은 종류의 데이타 타입들을 접해 
본 적이 있을 것이며, 또 쉽게 사용할 수 있다. 가장 일반적으로 사용되는 데이타 타입 
은 다음과 같다. 

⊙ CHAR (M) 

CHAR 데이타 타입은 고정된 길이의 문자열을 나타내는데 사용된다. 
하나의 CHAR 문자열은 1-255 자 범위의 문자를 저장할 수 있다. 

------------------------------------ 
ex. 
car_model CHAR(10); 
------------------------------------ 

⊙ VARCHAR (M) 

VARCHAR 데이타 타입은 가변적인 길이의 문자열을 저장하므로 CHAR 보다는 좀더 융통성 있 
는 데이타 타입이다. 
VARCHAR 문자열은 1-255 자 범위의 문자를 저장할 수 있다. 
(CHAR 는 포함된 데이타의 크기에는 관계없이 이미 지정된 가변적인 전체의 길이를 저장하 
는 반면에 VARCHAR 는 오직 들어가는 데이타의 양만을 저장하므로 데이타베이스 파일의 크 
기를 줄 일수 있다.) 

------------------------------------ 
ex. 
car_model VARCHAR(10); 
------------------------------------ 

⊙ INT (M) [Unsigned] 

INT 데이타타입은 -2147483648 에서 2147483647 사이의 정수를 저장한다. 
"unsigned" 옵션과 함께 0부터 4294967295 범위의 정수를 나타낼 수도 있다. 

----------------------------------------------------------- 
ex. 
light_years INT; 
Valid integer: '-24567'. Invalid integer: '3000000000'. 
----------------------------------------------------------- 
ex. 
light_years INT unsigned; 
Valid integer: '3000000000'. Invalid integer: '-24567'. 
----------------------------------------------------------- 

⊙ FLOAT [(M,D)] 

FLOAT는 다소 정확한 숫자의 표시가 필요할 때 사용되어지며, 작은 양의 소수점 숫자를 나 
타낸다. 

------------------------------------ 
ex. 
rainfall FLOAT (4,2); 
------------------------------------ 
이것은 소수점 값이 될 수 있는 일년간 평균강수량을 나타낼 수 있다. 좀 더 명확하게 
말하면 FLOAT (4,2) 는 4개의 저장할 수 있는 최대 자리 수와 2개의 소수점 이하의 자리 수 
를 가리킨다. 

42.35 은 올바른 값이다. 
324.45 은 틀린 값이다. 324.5로 해야 맞다. 
2.2 은 올바른 값이다. 
34.542 은 틀린 값이다. 34.54로 해야 맞다. 

주의) FLOAT 는 어림잡은 수이기 때문에 MySQL 내에 포함 된 정수의 값이 아닌 데이타 타입 
으로 돈의 값을 나타낼 때에는 DECIMAL을 사용하는 것이 더 현명한 방법이다. 더욱 자세 
한 설명을 원하면 매뉴얼을 참고하기 바란다. 


⊙ DATE 

날짜와 관련된 정보를 저장한다. 디폴트 형식은 'YYYY-MM-DD' 이며, '0000-00-00' 에서 
'9999-12-31'까지의 범위를 갖는다. MySQL은 이 기사에서는 다루어지기 너무 방대한 막강 
한 날짜형식의 조절과 조작 명령어를 제공한다. MySQL 매뉴얼에 이 기능에 대해서 
자세하게 다루어져 있으므로 참고하기 바란다. 
------------------------------------ 
ex. 
the_date DATE; 
------------------------------------ 

⊙ TEXT / BLOB 

text 와 blob 데이타 타입은 255 - 65535 자의 문자열을 저장할 때 사용된다. 이것은 여 
러분이 읽은 기사와 같은 것을 저장하기에 유용하다. 그러나 VARCHAR 와 CHAR처럼 딱 잘 
라 비교할 수는 없다. 단지 BLOB 와 TEXT 사이에 차이점이 있다면 BLOB은 변하기 쉬운 
경우에 비유할 수 있고, TEXT는 영향을 받지 않는 무감각한 경우에 비유할 수 있다. 


⊙ SET 

지정된 값으로부터 어떤 주어진 값을 선택하는, 정해진 문자열의 데이타 타입으로 그것은 
하나의 값이 될 수도 있고 여러개의 값을 가질 수도 있다. 64개의 값까지 지정할 수 있다. 
------------------------------------------- 
ex. 
transport SET ("truck", "wagon") NOT NULL; 
------------------------------------------- 

위의 예로부터 수송기관(transport)은 다음의 값들을 가질 수 있다. 

------------------------------------ 
"" 
"truck" 
"wagon" 
"truck","wagon" 
------------------------------------ 

⊙ ENUM 

SET 데이타 타입과 비슷한 특징을 갖는 정해진 문자열의 데이타 타입이지만 선택할 수 있는 
값이 하나로만 정해져 있다는 점이 다르다. 한 공간의 바이트만을 가지므로 테이블내의 
시간과 공간을 절약할 수 있다. 


------------------------------------------- 
ex. 
transport ENUM ("truck", "wagon") NOT NULL; 
------------------------------------------- 
위의 예로부터 수송기관(transport)은 다음의 값들을 가질 수 있다. 

------------------------------------ 
NULL 
"truck" 
"wagon" 
"truck" 
------------------------------------ 


2.2 레코드 


데이타들은 관련된 것들끼리 묶여서 디스크에 저장되는데 이러한 데이타의 묶음을 레코드라 
고 한다. 레코드는 데이타저장의 기본단위이며, 하나의 레코드는 서로 다른 형태의 값(데이 
타타입)을 가질 수있다. 아래에 나열된 이름, 주소, 전화번호는 각각 세개의 부분으로 구성 
된 레코드로 저장할 수 있으며 이러한 레코드는 데이타가 저장되는 기본단위로서 하나의 
테이블을 구성한다. 

이름 | 주소 | 전화번호 
--------|-------|--------- 
원주희 | 한국 | 007-0000 
홍길동 | 북한 | 008-0909 


2.3 테이블(The Bigger Picture: Tables) 
-------------------------------------- 

우리는 데이타베이스 상에서 어떠한 명령어들을 수행하기 전에, 먼저 데이타가 저장될 수 
있는 테이블을 만들어야 한다. 이것은 다음과 같은 방법으로 만들어진다. 

------------------------------------ 
mysql> CREATE TABLE test ( 
> name VARCHAR (15), 
> email VARCHAR (25), 
> phone_number INT, 
> ID INT NOT NULL AUTO_INCREMENT, 
> PRIMARY KEY (ID)); 
------------------------------------ 
테이블이 성공적으로 만들어지면 다음과 같은 화면이 출력될 것이다. 

------------------------------------ 
Query OK, 0 rows affected (0.10 sec) 
mysql> 
------------------------------------ 

여러분의 데이타베이스에 첫 번째 테이블이 생성되었다. 
주의(1) : 서로 다른 두 개의 테이블은 같은 이름을 가질 수 없다. 
주의(2) : 각각의 데이타공간은 종종 컬럼(column)이라는 개체의 속성으로 나타낸다. 

컬럼(Column)의 특징 : 
------------------------------------ 
하나의 이름이 숫자로만 구성될 수 없다. 
하나의 이름은 숫자로 시작할 수 있다. 
하나의 이름은 64자까지 가능하다. 
------------------------------------ 

2.3.1 테이블의 다른 옵션들 : 

나중에 다른 특징들과 성능이 데이타 타입에 추가될지라도 다음의 옵션들은 계속 존재할 것이다. 

기본 키(Primary Key) : 
===================== 
다른 속성들로부터 하나의 레코드를 유일하게 식별하는데 사용되어지며, 두 개의 레코드는 
똑같은 기본 키를 가질 수 없다. 이것은 두개의 레코드가 중복되어지는 실수를 없애려 
고 할 때 아주 적합하게 사용된다. 

Auto_Increment : 
================ 
이 함수(function)를 가진 컬럼(column)은 레코드에 삽입될 때 자동적으로 한 개씩 값이 
(previous + 1) 증가한다. data가 'NULL'값 일 때도 컬럼(column)에 자동적으로 한 개씩 
값이 증가하여 삽입된다. 

NOT NULL : 
========== 
NULL값(값이 없는)을 절대로 허용하지 않는 컬럼(column)을 의미한다. 

------------------------------------ 
ex. 
soc_sec_number INT PRIMARY KEY; 
------------------------------------ 
두 개의 soc_sec_number 레코드는 같은 값을 가질 수 없다. 

------------------------------------ 
ex. 
ID_NUMBER INT AUTO_INCREMENT; 
------------------------------------ 
1 에서 시작한 ID_NUMBER 값은 다음 값이 입력될 때마다 자동적으로 1씩 증가한다. 


2.3.2 테이블과 관련된 명령어들 

우리는 다음과 같이 테이블에 관련된 많은 유용한 명령어들을 실행할 수 있다. 


⊙ Show Tables 
============== 
------------------------------------ 
mysql> show tables; 
------------------------------------ 
결과 : 데이타베이스에 현재 존재하고 있는 모든 테이블들을 나열한다. 

⊙ Show Columns 
=============== 
------------------------------------ 
mysql> show columns from test; 
------------------------------------ 
결과 : 지정된 테이블과 관련된 컬럼과 컬럼의 정보를 보여줄 것입니다. 

테스트용 테이블을 생성한 후에 위의 명령어들을 한번씩 실행해보기 바란다. 
복잡 다양한 데이타베이스의 이해에 매우 도움이 될 것이다. 


여러분은 이제 MySQL 서버의 가장 중요한 개념인, 테이블을 생성하는 기본적인 과정을 이해 
했다. 또한 테이블은 서로다른 형태의 데이타타입으로 이루어진 레코드가 모여 구성된다는 
것도 알았다. 다음 장에서는 데이타베이스를 조작하는 방법에 대해 설명할 것이다. 



● Part 3: 데이타베이스 다루기(Manipulating the Database) 
======================================================== 

데이타베이스는 다음의 4가지의 방법으로 조작할 수 있다. : addition, deletion, 
modification, 과 search : 이에 대해서는 다음 장에서 자세히 설명할 것이다. 많은 
컴퓨터 언어들처럼 SQL 역시 조금은 특별한 명령어 구문을 가지고 있다. 괄호(()), 콤 
마(,), 또는 세미클론(;)의 위치가 조금만 잘못되어도 에러가 발생하므로 주의해서 입력해 
야 한다. 


3.1 레코드 입력하기(Insertion of records) 


전에 설명한 test라는 테이블 만드는 방법을 다시 한번 살펴보자. 

------------------------------------ 
mysql> CREATE TABLE test ( 
> name VARCHAR (15), 
> email VARCHAR (25), 
> phone_number INT, 
> ID INT NOT NULL AUTO_INCREMENT, 
> PRIMARY KEY (ID)); 
------------------------------------ 


이미 만들어진 테이블에 데이타를 입력하기 위해서는 INSERT 문을 사용한다. 

------------------------------------ 
mysql> INSERT INTO test VALUES 
mysql> ('Bugs Bunny', 'carrots@devshed.com', 
mysql> 5554321, NULL); 
------------------------------------ 
성공적으로 입력이 되면 다음과 같은 메시지가 나온다. 
--------------------------------------------------- 
Result, assuming the command was correctly entered: 

Query OK, 1 row affected (0.02 sec) 
mysql> 
--------------------------------------------------- 

· VARCHAR 데이타타입은 단일인용문으로 둘러싸여 있다. 모든 문자열 타입의 데이타타입 
은(char, varchar, text, blob 등)단일 인용문으로 둘러싸여야 하며 그렇지 않으면 
에러가 발생한다. 
· phone number와 같은 INT 타입의 데이타타입은 단일인용문이 필요하지 않다. 
· NULL은 아직정해지지않은 값으로 값이 없을 수도 있지만 NOT NULL은 반드시 값을 입력 
해야한다. AUTO_INCREMENT와 사용된 레코드는 값이 NULL이면 1을 할당하고, 값이 있 
으면 이전값에 +1씩 자동적으로 부여한다. 

한가지 주의해야 할점은 데이타를 입력할때 반드시 레코드의 갯수만큼의 데이타를 입력해 
야한다. 위의 예에서는 4개의 값을 입력해야 하는데 한개의 값만 입력할 경우 다음과 같은 
에러가 발생한다. 
-------------------------------------------------- 
Ex. 
mysql> insert into test values('doggy'); 
ERROR 1058: Column count doesn't match value count 
mysql> 
-------------------------------------------------- 

MySQL의 가장 큰 장점중의 하나는 데이타타입을 자유롭게 변경할 수 있다는 것이다. 


3.2 테이블정보 검색하기(Selection) 

데이타를 검색하기 위해 SELECT문을 사용한다. 
------------------------------------ 
mysql> SELECT * FROM test 
mysql> WHERE (name = "Bugs Bunny"); 
------------------------------------ 
결과: 
+------------+--------------------+--------------+----+ 
| name | email | phone_number | ID | 
+------------+--------------------+--------------+----+ 
| Bugs Bunny | carrot@devshed.com | 5554321 | 1 | 
+------------+--------------------+--------------+----+ 

같은 이름이지만 서로 다른 email와 phone number를 가진 데이타를 입력해보자. 

+------------+---------------------+--------------+----+ 
| name | email | phone_number | ID | 
+------------+---------------------+--------------+----+ 
| Bugs Bunny | carrot@devshed.com | 5554321 | 1 | 
| Bugs Bunny | pepper@devshed.com | 5554331 | 2 | 
| Bugs Bunny | celery@devshed.com | 5554351 | 4 | 
| Bugs Bunny | lettuce@devshed.com | 5554341 | 3 | 
+------------+---------------------+--------------+----+ 

3.3 삭제하기(Deletion) 

테이블에 있는 한개 이상의 레코드를 삭제하기 위해 사용한다. 
DELETE문으로 수행된다. 
------------------------------------ 
mysql> DELETE FROM test 
mysql> WHERE (name = "Bugs Bunny"); 
------------------------------------ 
결과 : 이름이 Bugs Bunny인 레코드를 도두 삭제하므로 테이블에는 데이타가 
하나도 없다. 

------------------------------------ 
mysql> DELETE FROM test 
mysql> WHERE (phone_number = 5554321); 
------------------------------------ 
결과 : phone_number 가 5554321인 레코드를 삭제한다. 
+------------+---------------------+--------------+----+ 
| name | email | phone_number | ID | 
+------------+---------------------+--------------+----+ 
| Bugs Bunny | pepper@devshed.com | 5554331 | 2 | 
| Bugs Bunny | celery@devshed.com | 5554351 | 4 | 
| Bugs Bunny | lettuce@devshed.com | 5554341 | 3 | 
+------------+---------------------+--------------+----+ 


3.4 데이타 변경하기(Modification) 

테이블에 이미 입력된 자료를 변경하기 위해 사용되며 UPDATE 문을 사용한다. 
------------------------------------------ 
mysql> UPDATE test SET name = 'Daffy Duck' 
mysql> WHERE name = "Bugs Bunny"; 
------------------------------------------ 

+------------+---------------------+--------------+----+ 
| name | email | phone_number | ID | 
+------------+---------------------+--------------+----+ 
| Daffy Duck | pepper@devshed.com | 5554331 | 2 | 
| Daffy Duck | celery@devshed.com | 5554351 | 4 | 
| Daffy Duck | lettuce@devshed.com | 5554341 | 3 | 
+------------+---------------------+--------------+----+ 

● Part 4: 고급 MySQL명령어(Advanced MySQL Commands) 
==================================================== 

우리는 이제 MySQL에 대해 기본적인 개념과 명령어들에 대해 배웠다. 이번장에서는 
좀더 진보된 명령어에 대해 배워보기로 하겠다. 


4.1 논리 연산자(Logical Operations) 

MySQL은 모든 기본적인 논리연산자를 지원한다. 

⊙ AND (&&) 
------------------------------------ 
mysql> SELECT * FROM test WHERE 
mysql> (name = "Bugs Bunny") AND 
mysql> (phone_number = 5554321); 
------------------------------------ 
결과 : 이름이 "Bugs Bunny"이고 전화번호가 '5554321'인 레코드가 출력될것이다. 

⊙ OR ( || ) 
------------------------------------ 
mysql> SELECT * FROM test WHERE 
mysql> (name = "Bugs Bunny") OR 
mysql> (phone_number = 5554321); 
------------------------------------ 
결과 : 이름이 "Bugs Bunny"이거나 전화번호가 '5554321'인 레코드가 모두 출력된다. 

⊙ NOT ( ! ) 
------------------------------------ 
mysql> SELECT * FROM test WHERE 
mysql> (name != "Bugs Bunny"); 
------------------------------------ 
결과 : 이름이 "Bugs Bunny"이 아닌 레코드만 출력된다. 

⊙ Order By 
------------------------------------ 
mysql> SELECT * FROM test WHERE 
mysql> (name = "Bugs Bunny") ORDER BY 
mysql> phone_number; 
------------------------------------ 
결과 : 이름이 "Bugs Bunny"인 모든 레코드가 phone_number를 기준으로 정렬될것이다. 


4.2 Search functions 

MySQL 은 일반문자뿐만아니라 특수문자를 포함해 데이타를 검색할 수 있다. 찾고자하는 
값을 정확히 모를때 Like연산자를 사용해 문자형태가 같은 열을 검색한다. 

------------------------------------ 
mysql> SELECT * FROM test WHERE 
mysql> (name LIKE "%gs Bunny"); 
------------------------------------ 
결과 : 
· "gs Bunny"를 포함하는 모든 레코드가 출력될 것이다. 
("Bugs Bunny", "ags Bunny", "gs Bunny", 와 "234rtgs Bunny"등과 같은 이름) 

· "LIKE"가 equals sign(=)대신 사용된것에 주목하자. "LIKE"는 정확한 값을 모르는 
데이타를 검색할때 사용된다. 

· '%'는 임의의 문자(0개~임의의 개수)를 의미하며, '_'는 한문자를 의미한다. 

------------------------------------ 
mysql> SELECT * FROM test WHERE 
mysql> (name LIKE "Bugs Bunny%"); 
------------------------------------ 
결과 : "Bugs Bunny"를 포함하는 문자가 출력될 것이다. 
("Bugs Bunnys", "Bugs Bunnyyyy453", "Bugs Bunnytrtr"등과 같은 이름, 
그러나 "gs Bunny"는 아니다.) 


4.3 주어진 조건에 맞는 특정한 열만 검색하기(Focused Search Results) 
------------------------------------ 
mysql> SELECT name FROM test WHERE 
mysql> (name = "Bugs Bunny"); 
------------------------------------ 
결과 : 
+------------+ 
| name | 
+------------+ 
| Bugs Bunny | 
+------------+ 


4.4 테이블 변경하기(Alter table) 

MySQL의 가장 중요한 기능중의 하나가 이미 만들어진 테이블을 변경하는 것입니다. 
ALTER 문을 사용하며 다음과 같은 것을 수행할 수 있습니다. 
· 새로운 열 추가하기 
· 열의 속성 바꾸기 
· 열 삭제하기 
· 테이블 이름 바꾸기 

Example: 테이블 이름 변경하기(Rename the table) 
-------------------------------------------- 
mysql> ALTER table test RENAME mytest; 
-------------------------------------------- 

Example: 새로운 열 추가하기(Add a column) 
-------------------------------------------- 
mysql> ALTER table mytest ADD birthday DATE; 
-------------------------------------------- 

Example: 열의 속성변경하기(Modify a column) 
-------------------------------------------- 
mysql> ALTER table mytest CHANGE 
mysql> name newname VARCHAR (25); 
-------------------------------------------- 

Example: 열 삭제하기(Delete a column) 
-------------------------------------------- 
mysql> ALTER table mytest DROP newname; 
-------------------------------------------- 

이제 아래에 주어진 테이블을 만들어 보고 테이블을 변경해 보자. 
-------------------------------------------- 
mysql> TABLE mytest ( 
> email VARCHAR (25), 
> phone_number INT, 
> ID INT AUTO_INCREMENT, 
> birthday DATE ); 
--------------------------------------------  

Posted by SB패밀리


데이터베이스를 백업 받는 방법은 크게 두 가지가 있습니다.
하나는 db 를 통째로 받는 방법과 table을 각각 받는 방법이 있습니다. 


1. 데이터베이스 백업하기 
1) db 를 통체로 받는 방법

mysql 은 /usr/local/mysql 에 설치 되어 있습니다.

방법 : /usr/local/mysql/bin/mysqldump -u username -p dbname > dbback.sql
password : <=== 패스워드 입력

위와 같이 하시면 db 를 통째로 모두 받으실 수 있습니다.

2) db 의 특정 table 만 받는 방법

방법 : /usr/local/mysql/bin/mysqldump -u name -p dbname tablename > tableback.sql
password : <=== 패스워드 입력

위와 같이 백업을 받으시고 파일로 다른 디렉토리나 ftp 를 사용하셔서 다운 받아 놓으면 mysql 에러시 복구를 할 수 있어 데이터 손실률을 최소로 할 수 있습니다.  



2. 데이터베이스 복구하기 
1) db 서버에서 db 가 없어졌을 경우 

db를 먼저 만드신 다음에 table 복구 방법처럼 복구하시면 됩니다.
시스템 관리자가 아니라면 db 를 만들수 없으므로 이럴 경우에는 시스템 관리자에게 데이터베이스를 새로 생성해 줄 것을 요청하시면 됩니다.
참고로 db 를 만드는 방법은 아래와 같습니다.

/usr/local/mysql/bin/mysql -u name -p
password : <=== 패스워드 입력
create database dbname;

이런식으로 만드시면 됩니다.

2) table 백업 복구 방식

/usr/local/mysql/bin/mysql -u name -p dbname < tableback.sql
password : <=== 패스워드 입력

위와 같이 백업과 복구가 가능합니다.  


참고 파일 디렉토리 백업 및 복구 방법 

[백업] 
tar -cvf filename.tar targetfile 

[복구] 
tar -xvf targetfile [target directory]

[압축보기]
tar -tvf targetfile

Posted by SB패밀리


[PHP/DB] Database, MySQL 이란 무엇인가


http://www.nzeo.com/bbs/zboard.php?id=p_study&page=2&sn1=&divpage=1&category=67&sn=off&ss=on&sc=off&select_arrange=headnum&desc=asc&no=42000-03-06 03:21:32

우선 PHP문법에 들어가기 전에 간단하게 Database에 대해서 이야기하겠습니다.
얼마전까지만 해두 CGI라구 하면 펄을 생각하게 되었구 오라클이나 MySQL같은 DBMS(데이터베이스 관리시스템 : Database Management System)은 최소한 웹상에서는 들리지 않았습니다.
그런데 PHP라는 CGI 프로그래밍 언어가 등장하면서 DB라는 이야기가 많이 들리게 되었습니다.
그럼 왜 PHP는 펄과는 다르게 DB를 이용하는지, 그리고 이 DB가 무엇인지 간단히 이야기하겠습니다.
데이터 베이스는 데이터를 모아둔 것입니다.
예를 들면 학교 도서관의 도서 데이터베이스가 있겠죠.
즉, 도서관에 어떤 책이 들어왔는지, 그 책들의 작가는 누군인지, 누가 대여해갔는지 하는것들이 모두 데이터베이스 안에 들어있겠죠.
이런 데이터들은 가만히 있는 것이 아닙니다.
새로 책들이 들어왔을수도 있고, 폐기되었을수도 있죠. 누가 빌려갈수도, 반납할수도 있는겁니다.
즉, 데이터베이스는 이러한 요인들에 의해서 저장된 데이터를 변경할수 있어야 하죠.
이렇게 데이터베이스를 만들고 관리하는등의 일을 하는 프로그램들을 데이터베이스 관리 시스템 (Database Managemenu System)이라고 합니다.
이 데이터베이스 관리 시스템이 하는일은 데이터를 저장하고 삭제하는 등의 일과 이 데이터들로부터 원하는 정보를 효율적이고 빠른 방법을 제공하는 것이겠죠.
이렇게 데이터베이스에서 데이터를 관리하기 위해서 데이터베이스에 명령을 전달하게 하는 언어를 데이터베이스 관리언어(DBME)라고 합니다.
DBME는 Query라는 데이터베이스 관리 프로그램의 언어를 이용해서 데이터를 관리하게 됩니다.
이런 데이터베이스 관리시스템들은 다양한 종류가 있습니다.
공개되어 있는, 그리고 우수한 성능을 가지고 있어서 널리 알려진 MySQL도 있구, 상용인 오라클도 있고, 그외에 mSQL, PostgreSQL등도 있습니다.
우리가 사용할 MySQL은 무료로 쓸수 있게 공개된 관계형 데이터베이스로서 일반 상용에 비해서 별루 뒤질것이 없는 좋은 프로그램입니다.
안정성 및 무결성의 측면에서 여타 상용 데이터베이스에 비해서 떨어진다고는 한다지만 관리만 잘하면 매우 유용하게 사용할수 있습니다.
MySQL의 주요목표는 속도, 뛰어난 수행능력 그리고 사용의 편리함입니다.
처음에 MySQL은 TcX 내부에서 자체적으로 사용할 목적을 가지고 만들어졌다고 합니다.
TcX는 1996년부터 MySQL을 사용해 왔으며 현재 700만 레코드이상되는 500개 이상의 테이블(100기가 바이트 이상)이 주요업무에 사용되고 있다고 하니 어느정도의 중소업체에서도 충분히 사용할 수가 있습니다.
데이터 베이스 관리 시스템이 어떠한 식으로 데이터를 관리하는지에 대해서는 언급하지 않겠습니다.
물론 저도 잘 모릅니다.
그럼 직접적으로 우리가 알아야 하는 것을 이야기하겠습니다.
보통 MySQL을 지원하는 계정에서는 회원들에게 하나의 DB를 줍니다.
근데 잘 모르는 분덜은 왜 하나만 주나, 나는 게시판 여러개 하구 방명록도 DB를 이용하는 넘으로 할건데~ 하구 의아해하시는 분덜이 계실겁니다.
결과부터 말하자면 하나의 DB안에는 많은 수의 게시판이나 방명록등의 데이터를 저장할수 있습니다.
DB를 이용하는 PHP 게시판들은 데이터를 테이블에 저장합니다.
이 테이블은 하나의 DB안에 무한정은 아니지만 MySQL이 허락하는한 만들수 있습니다.
MySQL과 같은 관계형 데이터베이스는 모든 데이터를 테이블과 같은 형태로 나타내어 저장합니다.
테이블에 대해서 간단히 이야기하겠습니다.
일반적으로 보통 표라는 것을 많이 이용합니다.
시간표 같은것 말입니다.
예를 들문 시간표는 가로줄을 요일, 세로줄을 시간으로 해서 만들면 매우 편하게 만들수가 있습니다.
데이터베이스도 마찬가지입니다. 저장되는 데이터를 테이블(표)와 같은 형식으로 저장하고 관리를 합니다.
여러가지의 속성을 가진 대상들의 데이터를 테이블의 형태로 만드는 것입니다.
시간표를 예를 들면 월, 화, 수요일등과 같은 대상의 속성을 정의하여 만든 틀을 스키마라고 합니다.
만약 학생의 예를 들면 학생=(이름, 학번, 학과, 학점) 등과 같은 스키마를 가지게 만들수 있습니다.
게시판을 예로 들자면 게시판=(번호, 글쓴이, 메일주소, 홈페이지 주소, 제목, 내용, 조회수, 글쓴날자)등과 
같이 스키마를 만들수 있겠죠.
이런 스키마의 틀로 이루어진 테이블을 가지고 php 게시판등에서는 데이터를 저장, 삭제, 수정하는등의 관리를 하게 됩니다.
사실  PHP로 DB를 이용하는 CGI 프로그램을 만들기 위해서는 이 정도의 개념만 잡혀 있으면 충분하다고 봅니다.
그만큼 PHP 자체내에서 DB를 쉽게 이용하게 할수 있는 함수들이 제공되고, 또 MySQL의 Query문도 매우 쉽기 때문입니다.

참고로 PHP를 사용하는데 있어서 아파처서버가 권장됩니다.
A.P.M 이라는 말을 들어보셨는지요.
Apache , PHP, MySQL이라는 말입니다.
원래 PHP가 아파치서버와 MySQL을 배경으로 해서 만들어졌다고 합니다.

Posted by SB패밀리

[개발/MySQL] LOCK, 파일 제어 권한주기 





LOCK TABLES : 데이터베이스를 백업하거나 데이블의 스키마 구조를 변경하거나
기타 중요한 작업을 진행할 때 다른 사람이 해당 테이블에 작업을
하지 못하도록 막기 위해 locking을 함

   ex) mysql>create table locktest (no tinyint,name char(6));
mysql>insert into locktest values (1,'virus');
mysql>lock tables locktest read; => 읽기만 가능하고 쓰기는 금지

   *mysql>lock tables locktest read local; => local 사용자는 읽기만 가능, 다른사용자는 모두 가능
     (가상 콘솔 2번모드에서 insert 명령어로 데이터를 추가하면 추가가 되는것을 확인할수있다.)

   *mysql>lock tables locktest write; => 현재 사용자만 쓰고, 읽을수 있다
     (가상 콘솔 2번모드에서 insert 명령어로 데이터를 추가하면 아무런 반응이 없다
      unlock을 사용하여 locking을 풀어야 읽거나 쓸수있다.)

   *모든 테이블에 read 락을 걸려면 : mysql>flush tables with read lock;

mysql>insert into locktest values (2,'yuri');
mysql>select * from locktest;
mysql>unlock tables; => locking 해제

LOAD DATA INFILE 문법 : load data infile '파일명' into table 테이블명;

*load data infile 문을 사용하기 위해서는 file privilege(파일 제어 권한)이 있어야 한다. (jung라는 사용자와 jung2
    라는 사용자를 생성하고 jung2에게만 File privilege권한을 줘보자)

    mysql>create database jung;
mysql>use mysql;
mysql>insert into user (host,user,password) values ('localhost','jung',password('1234'));
mysql>insert into db values ('localhost','jung','jung','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');

mysql>create database jung2;
mysql>insert into user (host,user,password,File_priv) values ('localhost','jung',password('1234'),'Y');
mysql>insert into db values ('localhost','jung','jung','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
mysql>flush privileges;

mysql>use jung;
mysql>create table filepriv (no tinyint,name char(6));
mysql>use jung2;
mysql>create table filepriv (no tinyint,name char(6));
mysql>quit

shell>cd /usr/local/mysql
shell>vi file.txt
1 aaa
2 bbb
3 ccc            //공백은 탭키 사용
shell>mysql -u jung -p jung
mysql>load data infile '/usr/local/mysql/file.txt' into table filepriv;   =>접근권한이 없다는 에러가뜬다.
mysql>quit
shell>mysql -u jung2 -p jung2
mysql>load data infile '/usr/local/mysql/file.txt' into table filepriv;   =>데이터 입력이 성공

Posted by SB패밀리

[개발/DB] MySQL 테이블의 필드 추가 변경





MySQL 테이블의 필드 길이 변경

alter table zetyx_member_list change user_id varchar(255) ;

필드 추가.

alter table zetyx_member_list add user_name name varchar(200);

Posted by SB패밀리
TAG db, MySQL, 개발



PHP로 구현된 화니지니 housewife ver 0.3 가계부 공개용

이 소스를 가지고 공부하시거나 입맛에 맞게 변형하여 사용하시면 자기만의 가계부로 좋을 듯 해보입니다.

필요사항

웹서버 + PHP + MySQL

제작: 소백촌닭님(http://aplus.pe.kr)



Posted by SB패밀리

출처 : http://linucle.com/lc_board/index_board.php?mode=view&board_pk=602&family=525&PageNo=1&item=&search=&board_name=it_os&PageMax=15&code=

 

1. 백업 스크립트 파일만들기.

# vi mysqlbackup.sh

--------파일 내용-----

#!/bin/sh
date_name="$(date +%y%m%d%H%M)"
b_file_name="data_"
mysqldump -u유저아이디 데이터베이스 > /home/data/data_backup/$b_file_name$date_name.sql

------파일 내용 끝----

여기서 파일이  /home/data/data_backup/data_200507281728.sql
이정도로 저장될것이다.

2. crontab 설정하기

# crontab -e (편집)

----- crontab edit -----

0       0       1       *       *      mysqlbackup.sh

-----------------end ------

(매월 1일 0시0분 마다 백업한다.)

분, 시간, 일, 월, 요일 명령어. (각 tab 또는 스페이스 로 구분한다)

3. 설정된 크론탭 리스트.

#crontab -l

0       0       1       *       *      mysqlbackup.sh


4. 테스트시 매 분마다 보려면

*       *       *       *       *      mysqlbackup.sh

이렇게 편집 하면된다

Posted by SB패밀리