주간 베스트 월간 베스트 3개월 베스트 베스트 게시물
꽃배달 한국, 중국 전지역배송

mSQL Guide ver 0.9

D3µX | 2002.04.12 01:21:06 댓글: 0 조회: 5069 추천: 241
분류컴관련 강좌·팁 https://life.moyiza.kr/itstudy/1748026
제  목:[문서] mSQL Guide ver 0.9                       관련자료:없음  [978]
보낸이:이철혁  (msql    )  2000-02-03 07:23  조회:26

mSQL Guide Version 0.9

작성: 이철혁(msql@msql.co.kr)
작성일자: 0차 1999년  1월 9일.
          1차 1999년 11월 1일.
          2차 2000년  2월 1일.

취지 : mSQL이 현재 사용되는 것에 비해서는 너무나도
터무니 없이 문서가 부족합니다. 이에 제가 알고 있는
mSQL에 대한 것을 정리해서 문서화 합니다.


0. 목차 및 기타.
1. mSQL 간략 소개
2. mSQL의 특징
3. mSQL의 단점
4. mSQL의 가격
5. mSQL의 구입
6. mSQL 최신버전 Download 받기.
7. mSQL 설치.
8. mSQL관리 프로그램 사용.
9. mSQL 자료형 및 SQL 명령.
10. FAQ & Tips.
11. 끝으로..


1. mSQL 간략 소개
-  David J. Hughes씨(현 : Hughes Technologies Pty Ltd.) 가 제작한 MiniSQL
은 크기가 작고, 설치와 관리가 쉬워서 초기에 매우 많이 사용된 SQL 서버입니
다. 에서 제작, 초기 웹 연동에서 많이 쓰였으며, 지금도 많이 사용됩니다만
요근래 MySQL의 강력한 성능에 밀려서 점점 사용이 적어지고 있습니다. 하지만
아직까지도 웹호스팅 업체나 대학 서버에서 가장많이 지원되고 있으며, 중소형
에 있어서는 오히려 다른 대형 DB 보다 가볍고 빠르므로 용도에 맞게 적절히
사용하기에는 최고의 SQL 서버라고 생각합니다.
  또한 설치와 사용이 간단하므로(너무 간단한면이 없잖아 있지만), 처음에
공부하고자 하는 사람에게 적합한 SQL 서버 입니다. 하지만 모두 무료가 아니
라는 점이 제약입니다. 연구나 학술 목적으로는 무료 이지만 상업적인 목적으로
사용시에는 $250 을 지불해야 합니다.


2. mSQL의 특징
- mSQL 전체 크기가 1MB가 되지 않는 가벼운 SQL 서버 입니다.
  최신 2.0.11 버전이 전부 957KB입니다.
- Cray등의 슈퍼컴퓨터에서도 원활히 동작합니다.
- 프로그램 자체도 작고 적은 메모리를 차지 하기 때문에 다른 대형 RDBMS 들과
  달리 낮은 시스템에서도 원활히 동작합니다.
- Mini SQL 으로 불리지만 OS와 하드웨어차원의 제약만 없다면 4GB 에 달하는
  Database를 다룰수 있습니다.
- DB 관리, 접근이 관리파일 하나로 설정되므로 편리하게 관리할수 있습니다.
- 많은 언어에서 지원을 합니다. C, Perl, Tcl/Tk, PHP등 원하는 언어로 쉽게
  연동하여 사용할수 있습니다. 대부분의 경우 MySQL보다 먼저 지원됩니다.
- 자체 스크립트 언어인 W3-mSQL과 Lite 언어를 지원합니다. 요즘에는 PHP가
  많이 사용되지만 처음 나왔을 당시만 해도 획기적으로 편리하게 mSQL DB 연동
  하여 사용할수 있는 스크립트 언어로 평가 받았습니다.

주의 : 원래 SQL의 명령의 끝에는 ;를 입력하여 명령을 입력시킵니다만 mSQL에서
는 g를 사용합니다. MySQL은 이의 의식해서 인지 ; 과 g 를 둘다 인식합니다.


3. mSQL 의 단점
- 표준 SQL을 전부 지원하지 못합니다. 지원하는 SQL문법은 거의 기초적인 문법
  이라 할수 있습니다.
- 가장 많이 사용하는 Select 문 중 다중 Select를 지원하지 못합니다.
- ALTER문을 지원하지 못하므로 테이블 구조를 자동으로 변경시킬수 없습니다.
  한번 생성한 테이블을 변경할때는 msqldump 프로그램을 이용하여 기존 자료를
  받은후 수동 혹은 작성한 프로그램으로 새로 생성하여 사용하여야 합니다.
- SQL함수를 거의 지원하지 못합니다. 많은 용도로 사용되는 함수를 지원하지
  못하므로 대부분 프로그램에서 수동 처리를 해줘야 하는 단점이 있습니다.
- 하드 디스크와 메모리맵 과의 동기화가 완벽하지 못해, 정전시나 시스템
  비정상 종료시 최근 데이터나 일부데이터가 유실되는 경우가 있습니다.


4. mSQL의 가격
  많은 이들이 mSQL은 리눅스의 많은 GNU Software들처럼 Free 인줄 알고 있습
니다. 하지만 mSQL은 상용 Software입니다.

  - 교육기관(상업적 교육기관은 제외)
  - 비상업적인 연구소
  - 등록된 자선기업
  - 등록된 공익단체  
  - 학생(일을 하지 않는 순수한 학생)

만약 위에 해당된다면 무료로 사용할수 있습니다. 하지만 위에 해당사항이
없다면 License를 구입하여 사용하여야 합니다. 정부 기관과 상업적인 연구
기관도 License 구입 해야 하는 대상에 포함됩니다.

단일 License와 여러개를 묶은 라이센스가 있는데 원하는 수량에서 가장
경제적인 License를 선택 구입하시기 바랍니다.

License 종류       단가              총금가격
단일 License      US $250           US $250
5 Licens Pack     US $238           US $1,190
10 Licens Pack    US $225           US $2,250
20 Licens Pack    US $212.5         US $4,250
50 Licens Pack    US $199.9         US $9,995

5. mSQL 구입
구입은 mSQL을 다운 받은 뒤 압축을 풀면 생성된 msql-버전 디렉토리 밑에 doc
디렉토리가 있습니다. 이 안에 invoice 문서 가 있는데 텍스트로는 invoice.txt,
ps 파일로는 압축된 형태로 invoice.ps.gz 가 있습니다. 이 둘 중 하나를 이용
하셔서 내용을 기입하신후 메일 혹은 팩스로 보내 시면 됩니다. 결재 수단으로
는 Master, Visa 등의 신용 카드를 이용한 결제 혹은 송금 수표를 이용한 방법이
있습니다.

[invoice.txt 의 내용]

          H u g h e s   T e c h n o l o g i e s   P t y   L t d
                P.O. Box 432 Main Beach, Qld 4217 Australia
             Fax : +61 7 5529 2299   Email : info@Hughes.com.au
              
                          Mini SQL 2.0 Invoice
                          ====================

Name                ______________________________________________________

Organisation    ______________________________________________________

Postal Address  ______________________________________________________

                ______________________________________________________

                ______________________________________________________

E-Mail Address  ______________________________________________________



          Qty         Item                 Unit Cost        Sub Total
        +------+------------------------+--------------+--------------+
        |      | Single License         | US $   250   |              |
        +------+------------------------+--------------+--------------+
        |      | 5 License Pack         | US $ 1,190   |              |
        +------+------------------------+--------------+--------------+
        |      | 10 License Pack        | US $ 2,250   |              |
        +------+------------------------+--------------+--------------+
        |      | 20 License Pack        | US $ 4,250   |              |
        +------+------------------------+--------------+--------------+
        |      | 50 License Pack        | US $ 9,995   |              |
        +------+------------------------+--------------+--------------+
                                        | Sub Total    |              |
                                        +--------------+--------------+
         50% discount for registered    | Discount     |              |
         users of mSQL 1.0              +--------------+--------------+
                                        | Total        |              |
                                        +--------------+--------------+

         Cheque enclosed  [_]    (see notes below for currency information)

         Please debit my  [_] Mastercard     [_] Visa   the above total.

         Card Number      ___________|___________|___________|__________

         Name on Card     _________________________  Expiry date ___/___

         Signature        _________________________  Date ______________

All credit card transactions are processed in Australian Dollars based on the
US / Australian dollar exchange rate on the day of processing as published by
Australia New Zealand Banking Corporation.  The final amount shown on
credit card statements may vary slightly due to the exchange rate used by
your bank and any transaction fees imposed by your bank.

Cheques, bank drafts and money orders in any currency may be used for payment
only if the currency used is the native currency of the country (or US
dollars).  In particular, European Union currency is not acceptable in
Australia.  If non-US currency is to be used, please convert the invoice
total from US dollars to your local currency.

Discount only available if you PURCHASED the same number of copies of mSQL 1


6. mSQL 최신버전 Download 받기.
올해 중반부터 mSQL 서버 다운받는 법이 약간 변경되었습니다.
그냥 다운을 받을수 없고 인증을 거친다음에서야 Download 받을수 있습니다.

1) mSQL 서버 홈페이지로 http://www.hughes.com.au 로 찾아갑니다.
mSQL의 제작사인 Hughes Technologies 의 심볼 사슴이 메인 페이지부터 반겨
줍니다. 최신 버전이 1999년 8월 23일에 나온 2.0.11 버전임을 알수 있습니다.
좌측 메뉴에 PRODUCTS를 선택합니다. 아니면 바로 What's New에서 Download를
선택해도 됩니다.

2) 위의 것중 MiniSQL을 선택합니다.

3) Current Version을 선택합니다.

4) Download
Download를 선택합니다.

5) 자 드디어 인증을 하는 부분이 나왔습니다. 제일 처음에 What's New에서
Download를 선택하신분은 바로 이화면과 만나게 됩니다. 여기서 여러분은
다운로드를 받기 위한 ID와 패스워드를 받아야 하므로 Register Do It!
Register Me에서 Do It을 클릭합니다.

6) 입력 폼이 나옵니다. 위의 입력폼에서 차례로 여러분의 이름, E-mail 주소를
입력하세요. E-mail 주소는 지금 받을수 있는 E-mail 주소여야 합니다. 여러분
의 E-mail 주소가 ID가 되며 E-mail 주소로 패스워드를 전송해주기 때문입니다.
나라는 Korea , Operating System 에서는 Linux를 선택합니다.

7) 입력 내용을 확인하신 뒤 Register를 클릭합니다. 반드시 E-mail 주소는 지금
받을수 있는 주소여야 합니다.

8) 이제 Return to Login Page를 눌러서 다시 인증 페이지로 돌아가고, E-mail을
확인하시기 바랍니다.

  Huges.com.au registration

위와 같은 제목의 E-mail 이 도착하였을 겁니다. E-mail 내용은 다음과 같습니다.

Thank you for registering with Hughes Technologies. Using the enclosed
password you can download all the software products provided via our web
site.  

All the products available from our site include a 14 day evaluation
period.  If you continue to use the software after the 14 day period
then you must purchase a license for the package.  Details of the
licenses can be found in the README file of the package you download.

To access the software archive, please use the following details

Email Address : 여러분이입력한E-mail주소
Password : 할당받은패스워드


이렇게 위처럼 패스워드를 알려 줍니다. ID는 E-mail 주소, 패스워드는 위에서
알려준 패스워드를 사용하면 됩니다.

9) Email 주소와 패스워드를 입력후 Login 버튼을 누릅니다.

10) 위처럼 다운받을수 있는 목록이 화면이 뜹니다. 최신버전을 받아야 겠지요.
MiniSQL 2.0.11 의 오른쪽에 있는 Download 밑의 폴더그림을 클릭합니다.

11) 그러면 위처럼 사용자 정보와 파일이름등이 나타납니다. File Server를 결정
하고, Send File 버튼을 누르면 되는데, 국내에서는 File Server에 따른 속도차
이가 거의 비슷 비슷 하므로, 기본치를 사용하여 Send File을 누릅니다.

12) 그러면 위처럼 다운로드 창이 뜹니다. 저장과 확인을 누릅니다. 위치를 지정
하고 저장 합니다.

13) 이제 Download 과정이 완료 되었습니다. 이제 설치 과정으로 넘어 가겠습니다.


7. mSQL 설치.

1) 받은 msql-2.0.11.tar.gz를 서버에 전송합니다.
   이하 모든 설치는 root 권한으로 합니다.

2) 아래 처럼 둘중 하나를 입력하여 압축을 풉니다. 결과는 똑같습니다.

- [root@minky minky]# zcat msql-2.0.11.tar.gz  | tar -xvf -

- [root@minky minky]# tar xfvz msql-2.0.11.tar.gz  

msql-2.0.11/
msql-2.0.11/INSTALL
msql-2.0.11/BUGS
msql-2.0.11/demos/
msql-2.0.11/demos/w3-msql/
msql-2.0.11/demos/w3-msql/bookmarks/
msql-2.0.11/demos/w3-msql/bookmarks/add.html
msql-2.0.11/demos/w3-msql/bookmarks/README
msql-2.0.11/demos/w3-msql/bookmarks/Welcome.html
msql-2.0.11/demos/w3-msql/bookmarks/back.gif
          .............................
msql-2.0.11/src/w3-msql/Makefile
msql-2.0.11/src/w3-msql/Makefile.tmpl
msql-2.0.11/src/w3-msql/auth.c
msql-2.0.11/src/w3-msql/http.c
msql-2.0.11/src/w3-msql/lexer.c
msql-2.0.11/src/w3-msql/mod_w3msql.c
msql-2.0.11/src/w3-msql/modules.c
msql-2.0.11/src/w3-msql/w3-auth.c
msql-2.0.11/src/w3-msql/w3-msql.c
[root@minky minky]#

3) 압축풀린 msql-2.0.11 디렉토리로 이동하여 make target 이라 입력합니다.

[root@minky minky]# cd msql-2.0.11

[root@minky msql-2.0.11]# ls
BUGS  INSTALL*  MSQL_BOOK  Makefile*  README*  README.sco*  RELEASE_NOTES*
demos/  doc/  misc/  scripts/  src/

[root@minky msql-2.0.11]# make target

Making target directory for Linux-2.2.12-20-i686

Building directory tree.
        Adding common
        Adding conf
        Adding lang-common
        Adding lite
        Adding makedepend
        Adding makegen
        Adding msql
        Adding regexp
        Adding tests
        Adding tests/rtest.src
        Adding w3-msql
        Adding w3-msql/tests

Adding sym-links
..........................................................
..........................................................
......................................................

Build of target directory for Linux-2.2.12-20-i686 complete

[root@minky msql-2.0.11]#

4) make target 명령으로 targets 디렉토리 밑에 현재 운영체제-커널버전-CPU종류
형태의 디렉토리가 만들어 지게 됩니다.

[root@minky msql-2.0.11]# cd targets

[root@minky targets]# ls
Linux-2.2.12-20-i686/

5) 이 디렉토리 안에 들어 가신다음 ./setup 명령을 입력하시기 바랍니다.
그러면 자동으로 시스템 환경에 맞게 작업을 합니다.

[root@minky Linux-2.2.12-20-i686]# cd Linux-2.2.12-20kr-i586/

[root@minky Linux-2.2.12-20-i686]# ls
Makefile@       common/  lang-common/  lite/        makegen/  regexp/  tests/
Makefile.tmpl@  conf/    lib/          makedepend/  msql/     setup@   w3-msql/

[root@minky Linux-2.2.12-20-i686]# ./setup

Starting configuration of mSQL 2.

creating cache ./config.cache
checking for gcc... gcc
checking whether the C compiler (gcc  ) works... yes
checking whether the C compiler (gcc  ) is a cross-compiler... no
checking whether we are using GNU C... yes
checking whether gcc accepts -g... yes
checking return type of signal handlers... void
checking for ranlib... ranlib
checking for bison... bison -y
checking for sysconf... yes
checking for strdup... yes
checking for rindex... yes
checking for random... yes
checking for bcopy... yes
checking for getdtablesize... yes
checking for strsignal... yes
checking for ftruncate... yes
checking for setrlimit... yes
checking for madvise... no
          .............................
checking for a working getrlimit.  You're fine.
checking for day light saving info.  Yup, we'll use it.
checking for HP-UX ranlib. Nope, it's OK to use ranlib.
checking for Linux. Yup, it's Linux.  Adding -rdynamic to the link flags.
Also forcing msync for Linux.

Ready to build mSQL.

You may wish to check "site.mm" although the defaults should be
fine.  When you're ready, type  "make all" to build the software

[root@minky Linux-2.2.12-20-i686]#

6) 위의 메시지 처럼 make all을 입력하시면 됩니다.

[root@minky Linux-2.2.12-20-i686]# make all

Regenerating Makefile.
......................................................
Done.
make[1]: Entering directory
  `/home/minky/msql-2.0.11/targets/Linux-2.2.12-20-i686'

Starting make for mSQL-2

          .............................

make[3]: Leaving directory
  `/home/minky/msql-2.0.11/targets/Linux-2.2.12-20-i686/lite'
make[2]: Leaving directory
  `/home/minky/msql-2.0.11/targets/Linux-2.2.12-20-i686/lite'
<-- [lite] done      

Make of mSQL-2 complete.
You should now install mSQL-2 using make install


make[1]: Leaving directory
   `/home/minky/msql-2.0.11/targets/Linux-2.2.12-20-i686'

[root@minky Linux-2.2.12-20-i686]#

7) 위에 나온 메시지 처럼 make install  을 입력합니다.

[root@minky Linux-2.2.12-20-i686]# make install

Starting install for mSQL-2

mkdir /usr/local/Hughes; chmod 0755 /usr/local/Hughes
mkdir /usr/local/Hughes/bin; chmod 0755 /usr/local/Hughes/bin
mkdir /usr/local/Hughes/include; chmod 0755 /usr/local/Hughes/include
mkdir /usr/local/Hughes/include/common;
                              chmod 0755 /usr/local/Hughes/include/common
mkdir /usr/local/Hughes/lib; chmod 0755 /usr/local/Hughes/lib
mkdir /usr/local/Hughes/msqldb; chmod 0755 /usr/local/Hughes/msqldb
mkdir /usr/local/Hughes/msqldb/.tmp; chmod 0755 /usr/local/Hughes/msqldb/.tmp
mkdir /usr/local/Hughes/doc; chmod 0755 /usr/local/Hughes/doc
mkdir /usr/local/Hughes/www; chmod 0755 /usr/local/Hughes/www
mkdir /usr/local/Hughes/misc; chmod 0755 /usr/local/Hughes/misc
mkdir /usr/local/Hughes/makegen; chmod 0755 /usr/local/Hughes/makegen
mkdir /usr/local/Hughes/modules; chmod 0755 /usr/local/Hughes/modules

--> [common] directory  

          .............................


Installation of mSQL-2 complete.

*********
**   This is the commercial, production release of mSQL 2.0
**   Please see the README file in the top directory of the
**   distribution for license information.
*********


make[1]: Leaving directory
   `/home/minky/msql-2.0.11/targets/Linux-2.2.12-20-i686'
[root@minky Linux-2.2.12-20-i686]#

8) mSQL이 /usr/local/Hughes/ 에 설치되었습니다.

[root@minky Linux-2.2.12-20-i686]#  cd /usr/local/Hughes
[root@minky Hughes]# ls
README*  README.sco*  bin/  doc/  include/  lib/  makegen/  misc/  modules/
msql.acl.sample*  msql.conf  msqldb/  www/
[root@minky Hughes]#

9) msql User를 추가하고 /usr/local/Hughes/ 디렉토리의 권한을 msql로 바꿉니다.

[root@minky Linux-2.2.12-20-i686]# adduser msql
[root@minky Linux-2.2.12-20-i686]# chown -R msql.msql /usr/local/Hughes

10) msql.conf 파일을 상황에 맞게 수정합니다.

◎ msql.conf 의 내용
  msql.conf 는 msql 을 설정하는 설정파일입니다. 마치 Apache의 httpd.conf와
비슷한 역활을 한다고 할수 있겠습니다. 그러나 Apache의 httpd.conf 에 비하면
상당히 설정 할 내용이 적습니다. 게다가 수정할 것도 많지 않습니다.
msql.conf 는 /usr/local/Hughes/msql.conf 에 위치합니다.

<msql.conf 의 내용>

[general]
Inst_Dir = /usr/local/Hughes
DB_Dir = %I/msqldb
mSQL_User = msql
Admin_User = root
Pid_File = %I/msql2d.pid
TCP_Port = 1114
UNIX_Port = %I/msql2.sock

[system]
Msync_Timer = 30
Host_Lookup = True
Read_Only = False
Remote_Access = False
Local_Access = True
#Query_Log = False
#Query_Log_File = %I/query.log

[w3-msql]
Auth_Host = NULL
Footer = True
Force_Private = False
#Force_Suffix = .msql

  위의 내용중 정상적으로 위의 설치과정대로 설치 했다면
[genernal] 섹션은 수정할 필요가 없습니다. [w3-msql]은 w3-msql 패키지와
관련된 이야기 이지만, 요즘은 PHP등에 밀려 사용되는 일이 거의 없으므로
다루지 않겠습니다. [system] 부분만 원하는 대로 설정하면 됩니다.

◇ Msync_Timer = 30
  mSQL은 빠른 속도를 위해서 Mmap 이라는 기법을 이용합니다. 이 기법은 하드
디스크에 있는 내용을 메모리로 가져와 메모리에서 처리 사용하는 것입니다.
쉽게 생각하시면 캐쉬기법을 연상하시면 되겠습니다. Msysnc_Timer 라고 하는
것은 메모리상에 있는 내용을 디스크에 저장하는 시간을 설정하는 것입니다.
이 시간이 길면 디스크를 많이 사용하지 않고 메모리에서 많은 작업이 이루어
지므로 속도의 향상은 가져 올수 있지만 시스템의 비정상적인 종료, 정지 등의
이유로 정상적으로 종료 되지 않은 경우 메모리의 내용과 디스크의 내용이 같지
않으므로 데이터의 분실, 손실등이 일어 날수 있습니다. 그러므로 기본 값이
30(초)를 이용하지 말고 짧게 해두거나 0 으로 해두어서 mSQL 서버가 관리하는
것이 아니라 리눅스가 스스로 관리 하도록 맡겨 두는 것도 한 방법입니다.

◇ Host_Lookup = True
  접속하는 사람, 호스트가 IP 주소인 경우 호스트 네임을 찾아서 없으면 접속을
거부 하는 기능입니다. 기본값으로 True를 사용합니다.

◇ Read_Only = False
  Read_Only 는 Database의 수정, 생성을 허용하지 않는 설정입니다. True로 해논
다면 Database를 읽는 것 밖에 할수 없습니다. 기본값은 False입니다.

◇ Remote_Access = False
  Remote_Access 는 외부에서의 접속을 허용할것인지 대한 설정입니다. 기본값은
False인데 이렇게 설정해놓으면 외부에서 접속은 할수 없습니다.

◇ Local_Access = True
  Local_Access 는 서버 내부에서의 접속을 허용할것인지 대한 설정입니다.
기본값은 True인데 False로 설정하면 서버 내부에서의 접속은 허용 하지 않습니다.

◇ #Query_Log = False
   #Query_Log_File = %I/query.log

  Query_Log는 mSQL 서버에 요구하는 쿼리들을 Log 파일로 작성할것인지를 선택하
는 설정입니다. 기본치는 False 이고 아예 주석(#)처리 되어 있습니다.
만약 사용하고자 한다면 주석(#)를 제거하고 False를 True로 수정하시고 밑의
저장 되는 파일을 지정하는 옵션인 Query_Log_File 부분도 주석(#)처리를 제거
하시기 바랍니다. 기본은 설치된디렉토리/query.log 이므로
/usr/local/Hughes/query.log 가 됩니다.

◎ 필요한 사항을 수정하고 저장합니다.


11) 이제 mSQL 데몬을 실행 시킵니다.
◎ mSQL 데몬은 /usr/local/Hughes/bin/msql2d 입니다.
실행 시킬때는 &를 붙여서 백그라운드로 실행되도록 해야 합니다.

[root@minky bin]# /usr/local/Hughes/bin/msql2d &

혹은 /usr/local/Hughes/bin 에서 ./msql2d & 로 실행

[root@minky bin]# ./msql2d &

<실행 결과 화면>

[1] 577


Mini SQL Version 2.0.11
Copyright (c) 1993-94 David J. Hughes
Copyright (c) 1995-99 Hughes Technologies Pty Ltd.
All rights reserved.

        Loading configuration from '/usr/local/Hughes/msql.conf'.
        Server process reconfigured to accept 200 connections.
        Server running as user 'msql'.
[root@minky bin]#       Server mode is Read/Write.

[root@minky bin]#

  /usr 혹은 /usr/local, /usr/loca/Hughes 디렉토리에 msql 유저가 접근  
권한이 없을 때는 에러 메시지를 출력 합니다.

[root@minky bin]# ./msql2d &
[3] 642


Mini SQL Version 2.0.11
Copyright (c) 1993-94 David J. Hughes
Copyright (c) 1995-99 Hughes Technologies Pty Ltd.
All rights reserved.

        Loading configuration from '/usr/local/Hughes/msql.conf'.
        Server process reconfigured to accept 200 connections.
[root@minky bin]#       Server running as user 'msql'.
        Server mode is Read/Write.

Error!  Can't stat '/usr/local/Hughes/msql2d.pid'


[3]+  Exit 1                  ./msql2d
[root@minky bin]#  

  퍼미션을 msql로 변경 읽을수 있도록 수정하시기 바랍니다.


8. mSQL관리 프로그램 사용.
  /usr/local/Hughes/bin 에 보시면 여러 실행 파일들이 있습니다. 이들이 바로
mSQL을 관리, 유지에 필요한 유틸리티 들이라고 생각하시면 됩니다.
이들은 프로그램 마다 각각의 용도가 있습니다. 관리하는 데 필요한 프로그램과
방법을 다음 부분부터 다루어 보도록 하겠습니다. 모든 관리 프로그램을 사용하
려면 mSQL 데몬인 msql2d 가 실행 되어 있어야 합니다.

◎ Database 관리
  관리 하는데는 주로 msqladmin 이라는 프로그램이 사용됩니다.
msqladmin 만 치면 명령과 간단한 사용 법을 알려 줍니다. 이제 이 것을 이용하여
Database를 관리 해보도록 하겠습니다.

msqladmin [-h host] [-f conf] [-q] <Command>

위와 같은 양식으로 사용하는데 , 옵션은

  -h 호스트 는 다른 서버의 mSQL을 사용할 때 지정하여 사용합니다.
  -f 는 다른 설정파일을 이용하여 작업 할 때 설정파일의 경로를 적어 주면 됩니다.
  -q 는 작업시 다시 물어 보지 않고 작업을 진행 합니다.
     삭제 작업시에도 물어 보지 않으므로 주의 해서 사용하시기 바랍니다.
  <Command> 는 사용할 명령을 적으면 됩니다.
  -h , -f 옵션은 모든 mSQL 프로그램에서 공통적으로 사용됩니다.

◇ Database 생성

msqladmin create 생성할Database이름

  위처럼 하면 Database가 새로 생성됩니다. 사실 Database의 생성은 설치된
디렉토리 /usr/local/Hughes에서 보면 msqldb 라는 디렉토리가 있는 데 여기에
디렉토리 하나를 생성하는 것에 불과 합니다. 위의 작업은 msqldb 디렉토리에서
mkdir 생성할Database이름을 해도 똑같은 효과를 볼수 있습니다.

<생성 화면>
[root@minky bin]# ./msqladmin create test
Database "test" created.

◇ Database 복사

msqladmin copy 원본DataBase 생성할DataBase

copy 명령으로 원본과 대상이름을 정하면 원본 DB와 똑같은 DB가 생성됩니다.

◇  Database 이동

msqladmin move 이동할DataBase 생성될DataBase

◇ Database 삭제

msqladmin drop 삭제할Database이름

  위의 생성, 복사, 이동은 실행되고 간단히 되었다는 메시지만을 출력하시만
Drop의 경우에는 정말로 삭제할것인지 묻습니다. Database의 삭제 명령을
실행하면 백업 해논 것이 없는 이상 복구 할 방법이 없으므로 신중히 상요하시기
바랍니다. 저도 Database이름을 착각하고 한번 Drop 문을 잘못 사용하여
수천명의 Database를 날린적이 있습니다. 다행히 주기적으로 백업을 받아둔
Data로 복구는 하였으나, 아찔한 순간이었습니다. 여러분들도 Drop 명령은 아주
신중히 사용하시기 바랍니다.

<삭제 화면>
[root@minky bin]# ./msqladmin drop test

Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

Do you really want to drop the "test" database?  [Y/N] y
Database "test" dropped
[root@minky bin]#

◇ mSQL 서버의 중지

msqladmin shutdown

  명령으로 mSQL 서버를 중지 시키고, mSQL 서버를 종료 시킬수 있습니다.
재 시작 하고자 할 때는 위에서 처음 기동할 때 처럼
/usr/local/Hughes/bin/msql2d & 명령으로 시작 해야 합니다.

<정지 화면>
[root@minky bin]# ./msqladmin shutdown


Normal Server shutdown!




mSQL Daemon Shutdown Complete.

[1]+  Done                    ./msql2d
[root@minky bin]#


◇ mSQL 서버 재 시작

msqladmin reload

  명령으로 mSQL 서버를 재 시작 시킬수 있습니다. 설정파일등의 변경으로
변경사항을 인식시키기 위해 사용하는데, 재시작 기능이 없으면 종료 시키고
새로 실행시켜 시작 시켜야 하나 mSQL은 재시작 기능을 제공 하므로 손쉽게
설정 사항 변경을 인식시킬수 있습니다. msql2d 데몬의 PID를 kill -1 PID넘버
해도 동일 합니다.

  마치 아무 명령도 내리지 않은 것 처럼 아무것도 출력하지 않습니다.
  
[root@minky bin]# ./msqladmin reload  
[root@minky bin]#


◇ mSQL 서버 Version 알아내기.

msqladmin version

  명령으로 mSQL의 버전과 생성할 당시의 커널 버전 및 각종 정보를 알아볼수
있습니다.

<msqladmin version 명령 실행 화면>
[root@minky bin]# ./msqladmin version

Version Details :-

        msqladmin version       2.0.11
        mSQL server version     2.0.11
        mSQL protocol version   23
        mSQL connection         Localhost via UNIX socket
        Target platform         Linux-2.2.12-20kr-i686

Configuration Details :-

        Default config file     /usr/local/Hughes/msql.conf
        TCP socket              1114
        UNIX socket             /usr/local/Hughes/msql2.sock
        mSQL user               msql
        Admin user              root
        Install directory       /usr/local/Hughes
        PID file location       /usr/local/Hughes/msql2d.pid
        Memory Sync Timer       0
        Hostname Lookup         True


[root@minky bin]#


◇ mSQL 서버 상황 보기

msqladmin stats

명령으로 다양한 정보를 볼수 있습니다.

<msqladmin stats 명령 실행 화면>

[root@minky bin]# ./msqladmin stats  

Server Statistics
-----------------

Mini SQL Version 2.0.11
Copyright (c) 1993-94 David J. Hughes
Copyright (c) 1995-99 Hughes Technologies Pty Ltd.
All rights reserved.

Config file      : /usr/local/Hughes/msql.conf
Max connections  : 200
Cur connections  : 1
Running as user  : msql
Server uptime    : 0 days, 0 hours, 1 mins, 19 secs
Connection count : 2
Query count      : 0

Connection table :
  Sock    Username       Hostname        Database    Connect   Idle   Queries
+-----+------------+-----------------+------------+---------+------+--------+
|   4 | root       | UNIX Sock       | No DB      |  0H  0M |    0 |      1 |
+-----+------------+-----------------+------------+---------+------+--------+

[root@minky bin]#

  Cur connections 는 현재 mSQL 서버에 접속된 접속 수입니다.
  Server uptime 은 종료, 다운되지 않고 계속 지속된 시간입니다.
  Connection count 는 지금까지 접속된 횟수입니다.
  Query count 는 지금까지 요구된 질의 횟수입니다.


◎ msql.acl 파일 생성, 수정

  msQL에서 Database 에 접속, 수정등의 권한을 부여 하려면 msql.acl 파일을
생성해야 합니다. mSQL에서 기본적으로 예제 파일 msql.acl.sample을 제공합니다.
msql.acl.sample 파일을 참고 하여 msql.acl 파일을 상황 맞게 생성합니다.

◇ msql.acl.sample 파일 내용
# Access control for mSQL
#
# Entries are of the form
#

database=test
read=bambi,-root
write=root
host=*
access=local,remote
option=rfc931

database=minerva
read=*
write=minerva
access=local


◇ msql.acl 파일 생성
  msql.acl 파일은 Databas 별로 접근을 제한하거나 권한을 제어 하는 파일입니다.
정사항이 몇가지 없으므로, 쉽게 이해 하실수 있습니다.

database=test
read=읽을 권한을 줄 User ID
write=쓸 권한을 줄 User ID
host=접속을 허용할 도메인 이름
access=[local,remote]

  위와 같은 방식으로 설정됩니다.

  - database
   read,write,host,access 등의 권한과 접근을 제어할 database 이름을 적습니다.
  현재 mSQL 서버 안에 있는 database 이름이어야 합니다.

- read=
  읽을 권한을 줄 User ID를 적으면 됩니다. 여러 ID일 경우, 으로 구분하여
사용하면 됩니다.  ex) read=msql,msql1,msql2
또한 -, *을 사용할수 있습니다.
* 은 모두를 나타내며 모두에게 권한을 준다는 뜻입니다.
- User ID하면 그 User ID만 제외하고 라는 뜻입니다.
이 두가지를 활용하면 선별적인 권한부여가 가능해 집니다.
예를 들어 모든 사용자에게 줄때는 : read=* ,
minky 사용자를 제외한 모두에게 : read=*,-minky 같은식으로 사용하시면 됩니다.

- write=
  쓸 권한을 줄 User ID를 적으면 됩니다. read와 동일할 형식으로 적으면 됩니다.
여기서 write의 의미에는 수정, 삭제도 가능하다는 의미 이므로 신중히 권한을
주시기 바랍니다. 참고로 MySQL에서는 수정, 삭제, 쓰기 등의 별로 권한 부여가
가능 합니다.


- host
  접속을 허락할 도메인 이름을 적습니다.
계정에게 권한을 줄때 처럼 * 과 - 를 사용할수 있습니다.

- access=[local,remote]
  local, remote, 둘다 혹은 하나만 사용할수 있습니다.
local은 내부 접속만을 허용한다는 뜻이고, remote는 외부, 원격 접속을
허락한다는 의미입니다. 둘다 적거나 생략되면 모두에게 허용된다는 뜻입니다.
그러면 내부, 외부에게도 접속을 허용하지 않고 싶을때는?
그럴때는 msql 데몬을 종료 시키시기 바랍니다.

◎ msql
msql은 mSQL서버에게 mSQL에서 지원하는 SQL명령을 이용할수 있게 해주는
클라이언트 프로그램이라고 생각하시면 됩니다.

-f , -h : conf 파일과, 원격 호스트를 정할수 있는 옵션입니다.
database : 작업할 Database이름을 적습니다.

◇ 명령어 사용법

  q : msql 프로그램을 종료 할 때 사용합니다.
  g : 입력한 SQL 문장을 실행할 때 사용합니다. 다른 SQL은 ;를 사용하는데
      msql은 g 만을 사용한다는 것에 유의 하시기 바랍니다.
  e : 에디터로 SQL문장을 입력, 수정 합니다. 기본으로 VI 편집기가 사용됩니다.
  p : SQL 문장 입력후 실행화면을 표시합니다. 기본적으로 g와 같이 많이
     사용됩니다.

  msql 시작 화면. Help 화면

◇ 그러나 꼭 msql에서 SQL문을 입력할 필요가 없고, SQL문을 입력한 text 파일
을 입력 시킬수 있습니다. 예를 들어 sql.txt 에 작업할 SQL문을 입력했다면

msql test < sql.txt  이런식으로도 사용하실수 있습니다.


◎ mSQL 기타 유틸리티.

◇ relshow

relshow는 Database목록을 보여주거나, Database안의 테이블들, 테이블안의
자료 형들을 보여 줄 때 사용합니다.

  relshow
그냥  relshow를 실행 시키면 Database 목록을 보여 줍니다.

  relshow Database명
인자로 Database명을 주면 그 Database 안의 테이블 들을 보여 줍니다.

  relshow Database명 Table명
Database명과 Table명을 인자로 주고 실행 시키면 해당 Database 안의 테이블의
자료형 및 테이블 구조를 보여 줍니다.

  relshow Database명 Table명 Index명
Database명, Table명, Index명을 인자로 실행시키면 그 해당 Index의 상태를
보여 줍니다.


◇ msqldump

msqldump는 Database나 Table의 자료,구조를 SQL문으로 바로 사용될수 있도록
출력해주는 유틸리티입니다. 백업 용도나 다른 곳으로 이식등의 목적으로 사용될수
있으며, 그외에도 mSQL은 alter 명령을 지원하지 않으므로 수동으로 테이블
구조등을 변경할 때 사용합니다. 그냥 msqldump 를 실행하면 많은 옵션이
나타납니다.

   -h host , -f conf : 다른 mSQL 프로그램과 동일합니다.
   -v : 작업 진행 사항등 정보를 보여 주는 옵션입니다.
   -t : 자료는 Dump 하지 않고 Table 구조만 출력합니다.
   -c : 자료를 Dump 할 때는 Insert문으로 받습니다. 이때 -c 옵션을 사용하면
        열이름까지 다 사용하여 출력 합니다.
   -w :SQL 문법중 where문 양식을 -w 과 같이 사용하면 해당 되는 자료만 Dump
       합 니다.
   database : Database 이름을 적으면 그 Database 전체를 Dump 합니다.
   database table : Database 안의 적은 Table만 Dump 합니다.


◇ msqlimport/ msqlexport

msqlimport 와 msqlexport 는 Database나 테이블을 지정한 구분자을 이용하여
텍스트 파일로 저장, 혹은 텍스트 파일을 테이블로 변환해 주는 것을 의미
합니다. 이를 잘 이용하면 mSQL Database를 Excell 같은 프로그램에서도
읽을수 있습니다. Excell 에서는 , 로 구분한 csv 파일을 지원하기 때문에
구분자를 , 로 지정한다면 Excell 에서도 읽을수 있습니다.

◇ 그외에 웹용 스크립트 언어로 사용되는 w3-msql 과 지원 언어 lite , 인증에
사용되는 w3-auth 등이 있으나 요근래 사용되지 않는 추세 이고 다른 문서에도
이부분은 있으므로, 설명을 따로 하지 않겠습니다.


9. mSQL 자료형 및 SQL 명령.
이제 위에서 설치한 mSQL 서버를 사용하기 위해 SQL 문법을 배웁니다.
여기서 여러분에게 모든 SQL을 가르치려고 하는 것이 아닙니다. 어렵게만
느껴지는 SQL이 어떤 프로그래밍 언어보다도 쉽다는 것을 말하기 위함입니다.
따라서 기본적인 문법만을 배워 보도록 하며, 좀더 심도 있게 공부하고자
한다면 관련 전문 서적을 참고하시기 바랍니다.
SQL 언어의 특성대로 어떻게 데이터를 다루느냐 보다는 어떤 데이터를
다루느냐가 중요한 언어입니다. 일반 프로그래밍 언어를 다루듯이 생각
하지 말고 구문 하나 하나를 외우기만 해도 바로 사용할수 있는 아주
쉬운 관계형 Database 관리 언어입니다.

SQL은 SQL명령어 ..... ;  형태로 이루어 집니다. 모든 SQL문장은
끝에 ;를 사용하여 SQL문의 끝을 알립니다. mSQL에서는 ; 대신 g를
이용합니다.

- Table 생성
  관계형 Database (RDB)에서는 모든 자료를 2차원의 표로, 즉 Table로
관리 합니다다. Microsoft사의 Excell 이나 Lotus-123 와 같은 스프레
쉬트를 생각하시면 쉽습니다.

이 Table를 사용하기 위해서는 사용자가 미리 Table을 만들어 줘야 합니다.
다음과 같은 문법으로 만들 수 있습니다.

◎ CREATE
CREATE TABLE 생성할TABLE명 (
열(列)이름 자료형,
열이름 자료형,
열이름 자료형,
   ..........
열이름 자료형
)g

  위에서 열은 영어로 row가 아닌 column의 의미입니다. 하나의 선언이
끝나면 , 표를 꼭 해주어서 구분을 해줘야 하며, 마지막에는 적지 않아야
합니다.

◎ Database, Table, 열 이름 규칙.

  사실 아무렇게나 Database, Table, 열 이름을 지을수 있다면 어쩌면 상당히
혼란 스러울수도 있습니다. 여기 아래와 같이 SQL에는 Database, Table, 열
이름을 사용하는 규칙이 있습니다. 표준 SQL을 기준으로 설명 하겠습니다.

1) 32자를 초과할수 없다
  - RDBMS 종류에 따라 틀립니다. 참고로 MySQL은 64자까지입니다.
                               (단 Database 이름은 32자 까지입니다.)

2) 유일해야 한다.
  - 동일한 이름의 Database, Table, 열 이름이 같이 존재 할수 없습니다.
   예를 들어 test 라는 Database가 있는데 또 test라는 Database는 만들 수
  없습니다. 또한 test 라는 Table이 같은 Database안에 있는데 또 test라는
  이름의 Table을 만들 수 없습니다. 그러나 test 라는 Database안에 test라는
  Table은 생성 가능합니다. 같은 Database, Table, 열 이름에서만 같은 이름이
  존재 할수 없는 것입니다.

3) 이름의 첫글자는 영문자 알파벳이어야 한다.
  - MySQL에서는 조금 틀립니다. 첫문자에서도 숫자를 사용할수도 있습니다.

4) 이름에는 숫자 _, #, $,Q와 같은 기호들을 사용할수 있다.
  - / 과 .을 제외한 문자를 사용할수 없습니다.

5) SQL의 명령어 함수명이 될수 없다. Ex) SELECT, CREATE
  - 당연히 SQL에서 미리 사용하는 명령어, 함수명등은 사용할수 없습니다.

◎ 간단한 테이블 생성 예제
  일단 간단하게 테이블 하나를 설계 해보도록 하겠습니다. 사람들의 ID 와
이름, 나이를 저장하는 테이블을 만들겠습니다. 열 이름은 쉽게 알수 있도록
ID : user_id, 이름 : user_name, 나이 : user_age 이런식으로 결정하겠습니
다. 길이와 용도에 맞게 자료형을 varchar(8), varchar(10), int 로 결정하면
다음과 같은 형식으로 만들 수 있습니다.

CREATE TABLE user (
user_id varchar(8),
user_name varchar(10),
user_age int
)

  위 처럼 다 입력하고 g를 입력하고  를 치면 Query OK. 가 떨어지면서 정상
실행되었음을 알려 줍니다. 위명령으로 새로운 표의 제목을 정했다고 보시면
됩니다.


◎ Table 변경.
  Table 구조는 처음에 설계를 잘하여야 합니다. 앞으로의 확장도 예측을
하여 여유롭게 작성하는 것이 좋습니다. 하지만 Table 생성을 잘못 하였거나,
열을 하나 더 추가 해야 할 경우가 일어 날수도 있습니다. 이럴경우에 ALTER
명령 등을 이용하여 수정하여야 하나, mSQL에서는 ALTER 명령같은 Table
구조를 변경하는 명령을 지원하지 않습니다. 따라서 기존의 Table자료를
Dump 등으로 받은후 프로그램을 작성하거나 수동으로 작업을 하셔서 수정
후 다시 Insert 를 해야 합니다.


◎ 자료형
  위에서 열의 형태와 종류를 지정할 때 사용하는 자료형에 대해서 알아
보겠습니다.  Database가 자료의 정확한 처리를 목표로 하는 만큼 상당히
많은 자료형이 있습니다. Perl  같은 일부 프로그래밍 언어는 자료형을
지정하지 않고 알아서 판단하여 사용하나, Database에서는 정확한 처리를
위해서 알아서 지원하지 않고, 사용자가 일일이 사용해야 합니다. C언어등
에서 변수를 선언할 때 사용하는 자료형과 거의 비슷하다고 보시면 됩니다.
  자료형을 크게 성격에 따라 문자형, 숫자형, 특수형으로 구분하였습니다.

◎ 문자형

◇ CHAR - 문자를 저장할때 사용합니다.
CHAR(숫자) - 숫자는 크기이며 255까지 사용할수 있으며 숫자를 지정하지
않으면 1자로 인식합니다.
Ex) CHAR(10) - 10자로 지정.
Ex) CHAR() - 1자로 지정.
  mSQL에서는 최대 2147483647까지 길이를 지정할수 있습니다.

◇ TEXT
광범위한 길이의 문자를 지원할 때 사용 합니다.
  CHAR형에 비해 속도가 느리며, 인덱스 검색, LIKE 옵션등을
  지원하지 않습니다.

◎ 숫자형

◇ INT
정수를 저장하는데 쓰입니다.

◇ REAL
정수가 아닌 실수를 나타낼 때 사용합니다.


◎ 특수형
  문자형과 숫자를 나타내는 자료형 말고도 날짜, 시간, 화폐의 크기를
나타내는 단위들도 있습니다.

◇ DATE
  일-달-4자리수연도 양식을 사용합니다. 예를 들어 1999년 11월 24일을
저장할 때 24-11-1999 처럼 사용합니다. mSQL 에서는 1997년 1월 1일
일 경우에는 1-Jan-1997 과 같이 달은 영문 이니셜로 나타 내어 사용합니다.

◇ TIME - 시:분:초 형식의 시간을 사용합니다. 예를 들어 오후 3시 10분 27초
는 15:10:27 처럼 나타내어 집니다.

◇ Money
  소수점 아래 둘째 짜리까지 처리하는 형입니다.
많이 사용하는  화폐인 달러, 센트등을 위해 만들어진 함수입니다.
예를 들어 $1.00 , $750.25는 1.00 , 750.25 등으로 저장됩니다.

◎ Table에 자료를 삽입하는 INSERT

◇ 형식

INSERT INTO Table이름 ( 열 이름1, 열 이름2, ... )
VALUES ( 열1 값, 열2 값, ... )g

위와 같은 형식으로 자료를 삽입합니다.
꼭 2줄에 쓸 필요는 없습니다. 편의를 위해서 위에는 2줄로 나타내었으나
몇줄로 나누어 써도 되고, 한줄로 사용하여도 똑같습니다.
위에서 ( 열 이름1, 열 이름2, ... )을 생략 할수도 있는데 생략
하면 Table 구조 대로 순서대로 들어 삽입됩니다.
생략한게 아니라면 지정한 열이름에 지정한 값이 삽입됩니다.

  Ex) INSERT INTO user ( user_id , user_ name, user_age )
VALUES ( 'msql', 'Anony', 24 )g

  VALUES 값을 적을때 숫자를 제외하고는 전부 '를 싸줘야 합니다.  
생성할때 선언된 자료형과는 다른 형태의 자료를 써주면 삽입되지
않습니다. 예를 들어 숫자형으로 선언한 열에 문자를 삽입하려고
하면 에러가 납니다. 생성할때 선언된 자료형의 크기보다 큰 값을
써주면 삽입이 되지 않습니다.

이처럼 삽입된 Data는 새로운 열로 추가되어 Table로 관리 되게 됩니다.


◎ SQL의 정수 SELECT

◇ SQL에서 가장 많이 사용되는 Keyword SELECT
주어진 조건에 따라 검색하는 명령어입니다. SQL의 진가는 이 SELECT문에서
나타난다고도 할수 있겠습니다.

형식 : SELECT 열이름 FROM 테이블명 [WHERE 조건] [ORDER BY 열이름 배열방법]g

위와 같은 형식으로 사용되며 전체 이름을 검색하고자 할때는 열이름에 * 표시
를 사용합니다.

◇ Example

  user 테이블의 모든 열 검색.
- select * from user g

  user 테이블의 user_id 열 검색.
- select user_id from user g

  user 테이블의 user_id와 user_age 열 검색.
- select user_id, user_age from user g


◇ ORDER BY 열이름 배열방법
정렬 하는 기준이 되는 열이름 과 배열방법 지정합니다.

  user테이블의 모든 열을 검색하는데 user_id를 역순(내림차순)으로 검색
- select * from user ORDER BY user_id DESCg

  순서대로(오름차순) 검색은 ORDRE BY 열이름 ASC 로 사용하거나 ASC를
생략하여 사용합니다.
- select * from user ORDER BY user_id DESC g
- select * from user ORDER BY user_id g


◎ 조건과 논리연산

◇ [WHERE 조건]
  위에서 SELECT를 단독으로 쓸경우에는 모든 데이터를 가져 오므로 그렇게
의미가 크게 없습니다. 원하는 데이터는 하나인 상황이라면, 아니면 원하는
조건의 데이터들만을 원한다면 이럴 때 필요한 것이 조건구문이며 WHERE를
이용하여 사용합니다.

형식 : WHERE 열이름 연산자 데이터

  사용가능 연산자
  <, >, =, <=, >=, <>, like, rlike, clike, .... 등을 사용할수 있습니다.
  <, >, =, <=, >=, <> 는 일반 적인 비교 개념과 같으며,
  like, rlike, clike 등은 확장된 비교에 사용됩니다.

  Example

  user테이블에서 user_id가 msql인 사람만 검색
- select * from user WHERE user_id = 'msql' g

  user테이블에서 나이(user_age) 가 25 이상인 사람만 검색
- select * from user WHERE user_age >= 25 g

  
◇ AND, OR

2가지 이상 조건을 복합 검색, 결합등을 해야 할 때 사용됩니다.

AND : ~ 이고
OR : 혹은

위와 같은 뜻으로 조건에서도 사용됩니다.

  WHERE 조건 A AND 조건 B
- 조건 A 에 만족하면서 조건 B에 만족하는 자료를 얻고 싶을때...

  WHERE 조건 A OR 조건 B
- 조건 A 와 조건 B에 만족하는 자료를 얻고 싶을때..

  Example

  user테이블에서 이름이 홍길동 이고 user_id가 msql 인  사람만 검색.
- select * from user WHERE  user_name = '홍길동' AND user_id = 'msql';

  user테이블에서  이름이 홍길동 이고 user_id가 msql 인 사람 검색
- select * from user WHERE user_name = '홍길동' OR user_id = 'msql';


◇ LIKE연산자

  완전히 똑같지 같지 않고 원하는 문자열을 포함한, 일부 일치하는 Data를
얻고 싶을 때 사용되는 연산자입니다. 예를 들어 위의 검색 방법으로는 이름이
홍길동인 사람은 찾을수 있지만 홍씨인 사람들만 찾는 다는지, 이름에 김이
들어간 사람들을 찾는 다는지는 불가능 합니다. 이를 가능하게 해주는 것이
LIKE연산자입니다. 기초적으로 쉽게 사용할수 있는 부분만 알아 보겠습니다.

연산자 : _ - 하나이상의 글자가 일치함
        % - 모든문자
          - 특별한 문자를 제외함

  Example

  user테이블에서 이름중에 이씨인 사람들만 검색.
- select * from user WHERE user_name like '이%';

  user테이블에서 id에 ql가 들어가는 사람들만 검색.
- select * from user WHERE user_id like '%ql%';


◎ Data 수정
Data를 필요에 따라 수정해야 할 때는 UPDATE를 사용하면 됩니다.

◇ Update 문

형식 : UPDATE 테이블명 SET 열이름1=값1 [,열이름2=값2,....] WHERE 조건검색;

  WHERE 조건 검색에 맞는 Data를 SET에서 지정한 값(들)로 변경하는 역할을
합니다. 꼭 하나를 바꾸는 것이 아니라 조건에 맞는 다수의 행, Data 들도
변경을 합니다.

  Example
user테이블에서 ID가 msql 인 행의 나이를 25로 수정하고 싶을때.
- UPDATE user SET user_age = 25 WHERE user_id='msql';

  예제 실행화면


◎ Data 삭제
  일부 열의 Data를 수정하는 것이 아니라 Data 행 자체를 삭제 할 때는
Delete 문을 이용합니다. 이 Delete 작업에는 Yes,No을 한번 더 물어보는
Confirm 확인을 하지 않고 바로 삭제 되므로 주의를 기하여서 작업을
하여야 합니다. 백업을 받아 두지 않았다면 삭제한 데이터는 복구할수
없습니다. 주의에 주의를 하시기 바랍니다.

◇ Delete 문 설명

형식 : DELETE FROM 테이블명 WHERE 조건검색;

조건검색해서 조건에 맞는 것은 행을 전부 삭제

  Example
user테이블에서 ID가 msql인 사람의 자료 삭제.
- DELETE FROM user WHERE user_id='msql';


◎ Table 삭제 (Drop)
Table 자체를 삭제 할 때는 Drop 이라는 구문을 이용합니다.
Drop 명령도 다시 확인을 하지 않고 지우므로 명령을 실행할때는
주의 하시기 바랍니다. 실수를 했을때는 정말 눈앞이 캄캄해집니다.
위에서도 몇번 이야기를 했지만, 정말 주의하세요.

◇ Drop 문 설명

형식 : DROP TABLE 테이블명;

  입력한 테이블명을 바로 삭제 합니다. 안에 Data가 있는 지 없는지,
진짜 지울건지 확인을 하지 않고 바로 지워 버리므로 지우시기 전에
확인을 하시고 실행하시기 바랍니다.

   Example
- user 테이블 삭제.
drop table user;


◎ 함수들..
  SQL에선느 지원되는 함수를 통해서 또다른 가공 없이도 자체적으로도
만족할 만한 Data를 알려줍니다. 그러나 mSQL에서는 직접적으로
지원하는 함수는 없습니다.

◎ Index .. Primary Key..
Index 를 create 명령을 이용하여 생성을 합니다.

  Index 는 여러 값중에서 많이 사용되는 부분을 SQL 서버에서
별도 처리를 하여 더욱 빠르게 결과를 처리하기 위해서 사용합니다.
많은 검색에 사용되는 열 이라면! 추가하시기 바랍니다.
아래와 같은 형식으로 user 테이블의 user_name , user_age 열을
idx1 이라는 이름의 Index를 생성할수 있습니다. 일단 Index로
지정해 놓으시면 select나 기타 구문시 mSQL 서버가 알아서
처리를 하므로 편리합니다.
  
CREATE   INDEX idx1 ON user (
        user_name,
        user_age
) g

Primary Key 라는 것은 한 열에서 유일하게 존해 해야 하는
id 값이라든지 주민등록번호등의 값을 이야기 합니다.
이는 Index 생성과 비슷하나 앞에 UNIQUE 라고 덧붙이는 것이
틀립니다. 이렇게 user_id 열을 Primary Key로 설정 해주면
user_id 값에 이미 msql 값이 있는데 또 msql 값을 써넣으려
고 하면 에러가 나며 써지지 않습니다.

CREATE UNIQUE INDEX idx2 ON user (
        user_id
) g

10. FAQ & Tips.

◎ FAQ.
  http://support.hughes.com.au/cgi-bin/hughes/faq
  위에서 mSQL 사이트의 공식 FAQ를 얻을수 있습니다.
  mSQL Site 의 FAQ와는 관계 없이,제가 주변에서 보고 들은 질문에
대한 답변을 조촐하게 FAQ로 조금 첨부합니다.

Q) mSQL 용 JDBC 드라이버가 있나요?

A) http://www.imaginary.com/Java/Soul/ 에서 구하실수 있습니다.

Q) mSQL은 무료 인가요?

A) mSQL은 학업, 비영리 목적으로만 무료로 사용될수 있습니다.
   자세한 사항은 윗부분의 내용을 참고하시기 바랍니다.
  
Q) mSQL 서버가 내부에서는 접속이 되나 외부에서는 접속이 되지
  않습니다.
  
A) 제가 위에서 설명한대로 msql.conf 에서 Remote_Access = False로 되어
  있는 부분을 True 로 변경하시고 Reload 하시기 바랍니다.

  
◎ Tips.
- Linux 서버 시작할때 mSQL 바로 시작하기.
  2가지 방법이 있습니다.
  첫번째,
   msql2d 데몬이 /usr/local/Hughes/bin/msql2d의 경로일때
  다음 부분을  /etc/rc.d/rc.local 화일에.
  끝에다가 그냥 Copy& Paste 하시기 바랍니다.
  if [ -x /usr/local/Hughes/bin/msql2d ]
  then
  echo "mSQL - Daemon Starting..."
  /usr/local/Hughes/bin/msql2d &
  echo "Done.."
  fi

  두번째, init 스크립트를 제작하여 사용합니다.
  다음의 내용을 /etc/rc.d/init.d/ 에 msql 이라는 이름으로
  만드시기 바랍니다.
      
--------------# /etc/rc.d/init.d/msql 내용 #----------------------
#! /bin/sh
case "$1" in
  start)
        echo -n "Start mSQL service: "
        /usr/local/Hughes/bin/msql2d &
        ;;
  stop)
        echo -n "Stopping mSQL service: "
        /usr/local/Hughes/bin/msqladmin shutdown
        sleep 2
        echo
        ;;
  status)
        /usr/local/Hughes/bin/msqladmin stats
        ;;
  restart)
        echo -n "Restart mSQL service: "
        /usr/local/Hughes/bin/msqladmin reload
        ;;
  *)
        echo "Usage: msql {start|stop|status|restart}"
        exit 1
esac

exit 0

--------------# /etc/rc.d/init.d/msql 끝 #----------------------  

그런 다음 다음 명령을 실행 합니다.

ln -s /etc/rc.d/init.d/msql /etc/rc.d/rc3.d/S99msql

그러면 시작때 자동으로 마지막에 msql 을 실행 합니다.

  참고로 위 스크립트는 기존의 스크립트를 참고로 제가 제작한것입니다.
경로와 상황에 맞게 바꾸어서 사용하시기 바랍니다. 하지만 위에서
저랑 같이 한것처럼 설치를 하셨다면 수정없이 사용하실수 있습니다.

시작 - /etc/rc.d/init.d/msql start
종료 - /etc/rc.d/init.d/msql stop
  재시작 - /etc/rc.d/init.d/msql restart
정보보기 - /etc/rc.d/init.d/msql status

위처럼 사용하실수 있습니다.

11. 끝으로..
mSQL 을 사용하는데 있어서 도움을 주기 위한 문서는 여기서 마무리 짓습니다.
조만간 프로그래밍 언어 + mSQL 문서를 배포하도록 하겠습니다.
또한 여기서 사용된 잘못, 추가, 수정등의 내용이 있으시다면 언제든지
msql@msql.co.kr 로 메일 주세요.


* 네로님에 의해서 게시물 이동되었습니다 (2004-03-04 00:12)
추천 (241) 선물 (0명)
IP: ♡.154.♡.81
3,006 개의 글이 있습니다.
제목 글쓴이 날짜 조회
관리자
2003-09-20
11908
관리자
2003-09-20
11458
관리자
2003-09-20
20591
지구인
2010-08-27
19385
지구인
2009-09-07
13705
SOLIDH
2010-01-29
15662
엔죠라이프
2004-10-07
16752
D3µX
2002-04-15
4900
D3µX
2002-04-15
1607
다원
2002-04-13
1963
다원
2002-04-13
2116
D3µX
2002-04-12
5069
D3µX
2002-04-12
1015
노아
2002-04-11
1564
네로
2002-04-11
4586
네로
2002-04-10
495
네로
2002-04-10
402
네로
2002-04-10
418
D3µX
2002-04-09
768
0_fist
2002-04-03
461
김상일
2002-04-02
4465
노아
2002-03-28
1959
네로
2002-03-25
408
네로
2002-03-25
451
네로
2002-03-24
441
네로
2002-03-24
992
네로
2002-03-24
804
노아
2002-03-15
1895
모이자 모바일