• mSQL Guide Version 0.91
  • 
    
  • 목차 0. mSQL Guide 정보 1. mSQL 간략 소개 2. mSQL의 특징 3. mSQL의 단점 4. mSQL의 가격 5. mSQL의 구입 6. mSQL 최신버전 Download 받기 7. mSQL 설치 8. mSQL관리 프로그램 사용 9. mSQL 자료형 및 SQL 명령 10. FAQ & Tips 11. 끝으로.. 0. mSQL Guide 정보 Version : 0.91 작성: 이철혁(msql@msql.co.kr) 작성일자: 0차 1999년 1월 9일. 1차 1999년 11월 1일. 2차 2000년 2월 1일. 3차 2000년 2월 8일. 취지 : mSQL이 현재 사용되는 것에 비해서는 너무나도 터무니 없이 문서가 부족합니다. 이에 제가 알고 있는 mSQL에 대한 것을 정리해서 문서화 합니다. mSQL의 공식 2.0 Reference 는 이곳 에서 볼 수 있습니다. 또한 원래는 Mini SQL로 칭해야 하지만, 국내에서는 mSQL 로 널리 알려지고 사용되는바 mSQL 로 이문서에서는 칭하도록 하겠습니다. 1. mSQL 간략 소개 - David J. Hughes씨(현 : Hughes Technologies Pty Ltd.) 가 제작한 MiniSQL 은 크기가 작고, 설치와 관리가 쉬워서 초기에 매우 많이 사용된 SQL 서버입니 다. 에서 제작, 초기 웹 연동에서 많이 쓰였으며, 지금도 많이 사용됩니다만 요근래 MySQL의 강력한 성능에 밀려서 점점 사용이 적어지고 있습니다. 하지만 아직까지도 웹호스팅 업체나 대학 서버에서 가장많이 지원되고 있으며, 중소형 에 있어서는 오히려 다른 대형 DB 보다 가볍고 빠르므로 용도에 맞게 적절히 사용하기에는 최고의 SQL 서버라고 생각합니다. 또한 설치와 사용이 간단하므로(너무 간단한면이 없잖아 있지만), 처음에 공부하고자 하는 사람에게 적합한 SQL 서버 입니다. 하지만 모두 무료가 아니 라는 점이 제약입니다. 연구나 학술 목적으로는 무료 이지만 상업적인 목적으로 사용시에는 $250 을 지불해야 합니다.
    mSQL 홈페이지로
    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 종류 단가총 가격
    단일 LicenseUS $250US $250
    5 Licens PackUS $238US $1,190
    10 Licens PackUS $225US $2,250
    20 Licens PackUS $212.5US $4,250
    50 Licens PackUS $199.9US $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 에 위치합니다. [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] 위와 같은 양식으로 사용하는데 , 옵션은 -h 호스트 는 다른 서버의 mSQL을 사용할 때 지정하여 사용합니다. -f 는 다른 설정파일을 이용하여 작업 할 때 설정파일의 경로를 적어 주면 됩니다. -q 는 작업시 다시 물어 보지 않고 작업을 진행 합니다. 삭제 작업시에도 물어 보지 않으므로 주의 해서 사용하시기 바랍니다. 는 사용할 명령을 적으면 됩니다. -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의 버전과 생성할 당시의 커널 버전 및 각종 정보를 알아볼수 있습니다. [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 명령으로 다양한 정보를 볼수 있습니다. [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 DESC\g 순서대로(오름차순) 검색은 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 ln -s /etc/rc.d/init.d/msql /etc/rc.d/rc6.d/K99msql 그러면 시작때 자동으로 마지막에 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 위처럼 사용하실수 있습니다. ◎ Mini SQL Logo 안내.
    Small Mini SQL Logo
    Medium Mini SQL Logo
    Medium Mini SQL Logo With Hughes Technologies deer
    Small Button
    Medium Button
    "Built With" Button
    Small Lite Logo
    Medium Lite Logo

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