Microsoft Word - my-sql_query-dongheejo.doc

Similar documents
강의 개요

PowerPoint 프레젠테이션

Microsoft Word - php12.doc

Microsoft PowerPoint - 10Àå.ppt

MySQL-.. 1

DBMS & SQL Server Installation Database Laboratory

Tcl의 문법

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap04-연산자.pptx

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

TITLE

OCW_C언어 기초

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

쉽게 풀어쓴 C 프로그래밊

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint 웹 연동 기술.pptx

5장 SQL 언어 Part II

문서 템플릿

CH04) 쿼리 (Query) 데이터베이스일반 1- 쿼리 (Query) 1) 쿼리의개념 테이블의데이터에서사용자가원하는조건에의해필드를추출하거나레코드를추출할수있는개체로즉, 여러가지방법으로데이터를보고, 변경하고, 분석할수있음 쿼리를폼, 보고서, 데이터액세스페이지등의레코드원본

Microsoft PowerPoint - chap06-1Array.ppt

MySQL-Ch10

PowerPoint Presentation

chap 5: Trees

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

강의 개요

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

PowerPoint 프레젠테이션

빅데이터분산컴퓨팅-5-수정

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

윈도우시스템프로그래밍

SBR-100S User Manual

Tablespace On-Offline 테이블스페이스 온라인/오프라인

금오공대 컴퓨터공학전공 강의자료

Lec. 2: MySQL and RMySQL

1217 WebTrafMon II

작성자 : 기술지원부 김 삼 수

Microsoft PowerPoint - chap11.ppt [호환 모드]

빅데이터 분산 컴퓨팅 -6

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

사용설명서를 읽기 전에 ios용 아이디스 모바일은 네트워크 연결을 통해 ios 플랫폼 기반의 모바일 기기(iOS 버전 6.0 이상의 ipod Touch, iphone 또는 ipad)에서 장치(DVR, 네트워크 비디오 서버 및 네트워크 카메라)에 접속하여 원격으로 영상을

C 프로그램의 기본

Studuino소프트웨어 설치

BY-FDP-4-70.hwp

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

PowerPoint 프레젠테이션

Microsoft Word - PLC제어응용-2차시.doc

Microsoft PowerPoint 유용한 PHP 함수들.ppt

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

대량문자API연동 (with directsend)

PowerPoint Template

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

[ASP: 그림 2-2] date.asp 실행결과 DateAdd 지정된날짜에시간을추가하거나뺀새로운날짜를반환한다. 구문 : DateAdd(interval, number, date) interval : 필수적인인수로 interval 을추가한날짜를나타내는문자식이다. 그값에대

특징 찾아보기 열쇠 없이 문을 열 수 있어요! 비밀번호 및 RF카드로도 문을 열 수 있습니다. 또한 비밀번호가 외부인에게 알려질 위험에 대비, 통제번호까지 입력해 둘 수 있어 더욱 안심하고 사용할 수 있습니다. 나만의 비밀번호 및 RF카드를 가질 수 있어요! 다수의 가

Chapter 05. 파일접근권한관리하기

10.ppt

ISP and CodeVisionAVR C Compiler.hwp

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

JAVA PROGRAMMING 실습 02. 표준 입출력

Windows Server 2012

PowerPoint 프레젠테이션

Microsoft PowerPoint 유용한 PHP 함수.pptx

목차 1. 시스템요구사항 암호및힌트설정 ( 윈도우 ) JetFlash Vault 시작하기 ( 윈도우 ) JetFlash Vault 옵션 ( 윈도우 )... 9 JetFlash Vault 설정... 9 JetFlash Vault

VPN.hwp

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

윈도우시스템프로그래밍

사용설명서를 읽기 전에 안드로이드(Android)용 아이디스 모바일은 네트워크 연결을 통해 안드로이드 플랫폼 기반의 모바일 기기에서 장치 (DVR, NVR, 네트워크 비디오 서버, 네트워크 카메라) 에 접속하여 원격으로 영상을 감시할 수 있는 프로그램입니다. 장치의 사

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

PowerPoint 프레젠테이션

PowerPoint Presentation

PHP & ASP

Microsoft PowerPoint - chap06-2pointer.ppt

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

3) MySQL data 백업백업방법 : dump 파일로저장저장위치 : /backup/mysqldump 백업주기 : 시간별 (/etc/cron.hourly) 또는일별 (/etc/cron.daily) 보관기간 : 7 일백업스크립트 : 아래예제 6-1). 참조 4) 웹데이

설계란 무엇인가?

PowerPoint Template

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

< 고급 C 프로그래밍및실습 > 11 장구조체실습문제 문제에대한안내 - 특별한언급이없으면문제의조건에맞지않는입력은입력되지않는다고가정하라. - 특별한언급이없으면, 각줄의맨앞과맨뒤에는공백을출력하지않는다. - 출력예시에서 는각줄의맨앞과맨뒤에출력되는공백을의미한다. - 입출력예시

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

C 프로그래밊 개요

Spring Data JPA Many To Many 양방향 관계 예제

Slide 1

EEAP - Proposal Template

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

6장. SQL

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

슬라이드 1

Microsoft Word - Crackme 15 from Simples 문제 풀이_by JohnGang.docx

untitled

Transcription:

9. MYSQL 기본문법 Mysql 은대화식 db 입니다. 주로서버에연결을하고질문을실행하며결과를화면에출력해주는 일을합니다. 무엇보다아파치와 php 를연동했을때그진가를발휘합니다. 여기서는리눅스용 mysql 을위주로설명할것이며다른 db 의함수도비교하겠습니다. 9.1 Mysql 을시작하기전에 사용가능한이름 mysql 을한글지원으로컴파일했다면한글이름을줘도되지만이것은사용하지않는편이좋습니다. 그리고이름엔 "." 문자를사용할수없고첫글자는영문으로사용해야합니다. 또, 최대 64 자까지지원되며, 별명은최대 256 자까지지원됩니다. 이름의구성은영문, 숫자, "_", "$" 로이루어져야합니다. Mysql 을유닉스나리눅스계열에서사용한다면그운영체제의환경을따르기때문에대소문자를구별해서데이터베이스이름, table 이름이저장됩니다. Win32 계열의경우는대소문자를구분하지않지만하나의문에서대소문자를같이사용할수는없습니다. 하지만별명은대소문자를구분해줍니다.

그림.9-1 필자의 mysql 작업환경 9.2 주석의사용 각라인의끝에오는 "#" 과여러라인을사용할수있는 "/* */" 가있습니다. 9.3 컬럼타입 mysql 의컬럼은종류가다양합니다. 그래서보기쉽게아래표를만들어보았습니다. Type Option (B)- 최대표시, (F)- 소수점이하자릿수

---------------------------------------------------------------------------------------------- ----------------------- TINYINT 정수형 (-128~127), (B), [UNSIGNED]- 정수형 (0~255) SMALLINT 정수형 (-32768~32767), (B), [UNSIGNED]- 정수형 (0~65535) MEDIUMINT 정수형 (-8388606~8388607), (B), [UNSIGNED]- 정수형 (0~16777215) INT 정수형 (-2147483648~2147483647), (B), [UNSIGNED]- 정수형 (0~4294967295) INTEGER INT 와동일 BIGINT 정수형 (-9223372036854775808~9223372036854775807), (B), [UNSIGNED]- 정수형 (0~18446744073709551615) FLOAT( 정밀도 ) 부동소수점실수, ( 정밀도 )-"(4,8)", (4)- 단정도 부동소수점실수, (8)- 배정도부동소수점실수, 범위는 FLOAT, DOUBLE 과 같습니다. FLOAT(L, F) 단정도부동소수점실수, (B,F), (-3.402823466E+38 ~ 1.175494351E-38, 0, 1.175494351E-38 ~ 3.402823466E+38) DOUBLE 배정도부동소수점실수, (B,F), (-1.7976931348623157E+308 ~ - 2.2250738585072014E-308,0, 2.2250738585072014E-308 ~ 1.7976931348623157E+308) DOUBLE PRECISION~REAL PRECISION(B,F), REAL(B,F) DOUBLE 와동일 DECIMAL 부동소수점실수 CHAR 형태로동작, (B,F), F 가 0 이면소수점이하는 저장되지않습니다. 범위는 DOUBLE 와같습니다. NUMERIC ECIMAL 과동일 DATE 날짜형 (1000-01-01 ~ 9999-12-31) 기본타입 - YYYY-MM-DD

DATETIME 날짜와시간형 (1000-01-01 00:00:00 ~ 9999-12-31 23:59:59) 기본타입 - YYYY-MM-DD HH:MM:SS TIMESTAMP 타임스템프형 (1970-01-01 ~ 2037 년임의시간 ), (B) - (14,12,8,6) B 값이없을경우 INSERT, UPDATE 시동작된시간으로자동적으로저장됩니다. 기본형식 - YYYYMMDDHHMMSS, YYMMDDHHMMSS, YYYYMMDD,YYMMDD TIME 시간형 (-838:59:59 ~ 838:59:59) 기본형식 - HH:MM:SS YEAR 년도형 (1901 ~ 2155, 0000) CHAR 고정폭문자열, (B) - (1~255) B 만큼오른쪽으로공백채워저장출력시 공백은출력안됨, [BINARY] - 검색시대소문자구분 VARCHAR 가변폭문자열, (L) - (1 ~ 255) 문자열공백이제거된후저장, [BINARY] - 검색시대소문자구분 TINYBLOB / TINYTEXT BOLB, TEXT 형, 최대길이 255 문자 BLOB / TEXT BOLB, TEXT 형, 최대길이 65535 문자 MEDIUMBLOB / MEDIUMTEXT BOLB, TEXT 형, 최대길이 16777215 문자 LONGBLOB / LONGTEXT BOLB, TEXT 형, 최대길이 4294967295 문자 ENUM 문자열목록형, 최대 65535 개, 저장된문자열목록중에오직한가지만 얻을수있습니다. SET 문자열목록형, 최대 64 개, 저장된문자열목록중에 0, 1 개이상을얻을 수있습니다. ---------------------------------------------------------------------------------------------- -----------------------

9.4 접속하기./mysql -h 호스트명 -u 유저 -p ("mysql>" 프롬프트가나타나고쿼리를실행하면됩니다.) 디폴트인스톨을했다면 "/usr/local/mysql/bin" 디렉토리에서접속명령을실행합니다. 물론 -p 옵션은유저에해당하는비밀번호입니다. 위명령을실행하고엔터를치면 passw 입력란이뜨고거기에 passw 를입력하면됩니다. 9.5 접속끊기 "mysql>" 에서 "quit" 또는 " ctrl + d " 를누르면됩니다. 여기서 "quit" 명령은 " ; " 없이실행합니다. ("quit", " use") 9-2 mysql 접속하기 그림. 9.6 mysql 버전과지금날짜알아보기 mysql> select version( ), current_date( );

그림. 9-3 mysql 버전과지금날짜알아보기 위그림에서 1 row 는하나의쿼리결과를말하며 (0.03 sec) 는쿼리시간을말합니다. 9-4 now( ) 함수 그림. 위그림에서각명령의연결은 ", " 로하며 select 실행때명령의마지막을 " ; " 로 표시합니다. " ; " 이없을경우위와같이명령을계속입력하게끔합니다. 9.7 데이터베이스만들기 (database 와 table 만들기 ) 그럼이제직접 database 를만들고여러가지사용하는방법을알아보겠습니다. 먼저만들기 전에기본적으로만들어진 database 를확인해봅니다. 데이터베이스보기 mysql>show databases ;

그림. 9-5 show databases ( 해당데이터베이스의테이블을확인하려면 "show tables;" 명령으로확인가능합니다.) 위그림을보면현재 database 항목이여러개나오는것을볼수있는데디폴트값은 "mysql" 과 "test" 값만이나올것입니다. 사용자에따라다르게나올수도있습니다. "mysql" db - 사용자접근권한정보를가지고있습니다. "test" db - 말그대로 test 를해볼수있는 db 입니다. ( 지금부터하는모든명령은 root 계정으로실행합니다. 뒷부분에계정의설정과권한등을설명하겠습니다.) database 선택해서사용하기 mysql>use database 명 ; test 를선택하고실행하면 test database 를선택하고 changed 되는것을볼수있습니다. 특정 database 로바로접속하기 "./mysql -h 호스트명 -u 유저명 -p 데이터베이스명 " 이제 database 를만들어보겠습니다. 일단만들기전에중요한부분은설계를해봐야한다는것입니다. 이데이터베이스를어디에사용할것이며어떤항목들을넣어야하나여러가지를시험한후작성하는게안전합니다. 물론만들고난후수정할수도있습니다. 만들 database 명은 "work" 로임의로정했습니다. 이데이터베이스의역할은어느누가맡은일을몇번했나알아보는간단한 database 입니다.

데이터베이스만들기 mysql>create database work ; 그림. 9-6 데이터베이스 만들기 "show" 명령으로확인하면 work 가만들어진것을볼수있습니다. 그림. 9-7 데이터베이스확인 work 데이터베이스의사용을위해 use 명령을실행하고다음테이블을확인합니다. 물론새로만든데이터베이스이기때문에테이블은비었다고나옵니다. ( 자! 그럼 table 를만들어보겠습니다. 다른방법도있지만여기선직접하는방법을택했습니다.

다른방법은 txt 파일을만들어파일을실행하는방법입니다. table 명은 "works" 로하겠습니다.) 테이블만들기 mysql>create table 테이블명 ( 열이름자료형, 열이름자료형,... ) ; 그림. 9-8 테이블만들기테이블을만들때의자료형은앞부분의표를확인해보기바랍니다. 자료형의형태는 alter table 를사용해서바꾸어줄수있습니다. 그럼지금까지만든테이블의자료형과열의이름을확인하는방법을알아보겠습니다. 테이블자료형알아보기 mysql>describe 테이블명 ; 그림. 9-9 테이블자료형알아보기 ( 여기서 name 은이름, hab 는취미, own 은담당, sex 는성, work 는마지막작업일, no 는작업할횟수로표현했습니다.)

9.8 테이블에데이터입력하기 이제테이블에데이터를입력할차례입니다. 이것또한직접하나씩입력하는방법과파일로 한꺼번에입력하는방법이있습니다. 테이블에데이터입력하기 ( 직접 ) mysql>insert into 테이블명 values( 자료명,..,.. ) ; 이것은해당테이블을새롭게생성했을경우처음입력할때주로사용합니다. 자료의입력순서는각열에해당하는인자순으로나열하면되고, 만약해당열에자료를넣지않으려면 "null" 을사용합니다. 테이블에데이터입력하기 ( 파일 ) mysql>load data local infile " 파일명 " into table 테이블명 ; 모든자료입력은테이블열의이름순으로하면됩니다. 그리고중요한것은열과열사이는 tab 키로해야 하는것입니다. 어떠한에디터를사용하건확장자나이름은중요하지않습니다. 또, 빈공간이 없이입력을 해야합니다. 열의항목을비워두려면 " /n " 을사용하면됩니다. works_table.sql 그림. 9-10 위파일을보면공백이없는것이확인될것입니다. 이파일은 "works_table.sql" 로만들었고 2) 번의방법으로해당테이블에입력했습니다.

그림. 9-11 테이블에데이터입력하기 ( 파일 ) 위그림에서해당파일의내용을테이블에입력하고테이블내용을다시확인했습니다. 9.9 테이블에서정보검색하기 select 문을사용해서다양한방법으로검색을할수있습니다. 기본형식 mysql>select 검색명 from 테이블명 where 검색조건 ; 검색명은여러개나열할수도있습니다. 가령 name,work, 이런식으로 "," 를사용합니다. "*" 를사용해서전부를검색할수도있습니다. 그리고검색조건은사용하지않아도무관합니다. 그럼 where 의여러가지형태를보기로하겠습니다. where 검색조건 mysql>select 검색명 from 테이블명 where 검색조건 (and, or, like, regexp) ( 다른부분은뒷부분주요함수부분에서다루겠습니다.) where and 사용하기 mysql>select * from works where (no = "4" and sex = "f"); and 일경우 ( 둘다참이어야합니다.)

그림. 9-12 where and 예 1 위그림은여자중에일을 4 번한사람을찾는것입니다. mysql>select * from works where (own = " 청소 " and hab = " 잠자기 "); 그림. 9-13 where and 예 2 where ( own = " 청소 " and hab = " 잠자기 " ) 이것은맡은일이청소이면서취미가잠자기인사람을찾는것입니다. 여기까지는검색명을 "*" 로사용했기때문에열전부를보여주었습니다. 특정한열만보려면그열의이름을적어주면됩니다. where or 사용하기 mysql>select * from works where (own = " 청소 " or hab = " 농구 "); or 일경우는 ( 둘중적어도하나는참이어야합니다 )

그림. 9-14 where or 예그리고위방법말고도 and 와 or 을같이사용하는방법과한개이상을사용하는방법여러가지가있습니다. where and, or 사용하기 mysql>select * from works where (sex = "m" and work >= "2000-01-20") or (sex= "m" and hab= " 잠자기 "); 그림. 9-15 where and, or 예 그림을보면 "where( 문장 and 문장 ) or ( 문장 and 문장 )" 사용한걸볼수있습니다. 자, 그럼이제특정한문자의패턴일치를비교해서검사하는방법을살펴보겠습니다. 두가지방법이있는데 like 와 regexp 입니다. 각각의패턴을검사하는방식을살펴보겠습니다.

where like 사용하기 mysql>select * from work where 열명 like " 찾을문자 %", "% 찾을문자 ", "% 찾을문자 %", " " ; 여기서 like 다음나오는형식은차례로찾을문자로시작하는단어, 찾을문자로끝나는단어, 찾을문자를중간에포함한단어, 4 개로이루어진문자식으로해석하면됩니다. 이명령은주로게시판의검색에사용하면편합니다. 뒤에게시판구현에서잘살펴보기바랍니다. where regexp 사용하기 mysql>select * from work where 열명 regexp "^[jj]", "^.{5}" ; regexp 형식을보면좀생소한기호가있을것입니다. 이기호는이표현식 ( 정규표현식 ) 에사용하는 몇가지 기호입니다. 그리고, regexp 표현은대소문자를가리기때문에검색조건을입력할때주의를 요합니다. 위형식은차례로문자처음이소문자 j 대문자 J 로시작하는조건을검색, 5 개의문자로이루어진단어검색을의미합니다. Regexp 기호. - 문자하나를나타냅니다. * - 앞에나온문자의 0 개이상반복합니다. ^ - 문자열의처음을나타냅니다. $ - 문자열의끝을나타냅니다. [,] - 괄호안의문자열일치를확인합니다. {,} - 반복을나타냅니다.

그림. 9-16 regexp 예위그림은 works 테이블에서필드가 name 인항목중알파벳 b 로시작하는사람을찾아줍니다. order by 사용하기 mysql>select 열명 from 테이블명 order by 열명 ; order by 는인자순으로열명에해당하는자료를정렬해주는명령입니다. 자료를순서대로 보기위한좋은 방법입니다. 게시판을만들경우이명령을꼭한번은사용해야할것입니다. 17 order by 예 위그림을보면, work 순으로차례로정렬한모습을볼수있습니다. 그림. 9- 제일처음일을그만둔사람을위명령으로쉽게찾을수있습니다.

order by DESC 사용하기 mysql>select 열명 from 테이블명 order by 열명 desc ; desc 옵션을사용하면해당열명을역순으로정렬해줍니다. 뒤경매게시판에서도볼수있지만이 옵션은 유용하게쓰입니다. 게시판의경우사람들은순서대로보다역순으로봐야지만제일최근자료를 볼수있는것입니다. 이명령은제일최근까지일했던사람을역순으로제일위에오게출력해줍니다. mysql 의경우이명령이순차적인것보다조금느리게출력될경우도있습니다. 물론자료가많을경우입니다. 하지만한번실행하고난뒤는거의속도차이가없다고보면됩니다. 여기서주의할부분은 desc 인자앞의열명만적용이된다는것입니다. 그앞에다른열명을적어줘도역순으로정렬되지않습니다. 18 order by DESC 예 그림. 9- 위에서볼수있듯이 desc 인자의역할은되지않고있습니다. 레코드수보기 mysql>select count(*) from work ; 총레코드수를계산해줍니다.

그림. 9-19 count( ) 예위명령과 group by 명령을같이사용할경우더강력한기능을합니다. group by 사용하기 mysql>select 열명,count(*) from 테이블명 group by 열명 ; 해당그룹의레코드에관해숫자를파악해서출력해주는역할을합니다. (count(*) 와같이사용할 경우 ) group by 예 1 출력의결과를보면일의종류에따라배치된사람의수를파악할수있습니다. 그림. 9-20

그림. 9-21 group by 예 2 위그림을보면 jun 이물주기역할을두개나받았다는걸알수있습니다. 또, 총맡은일을볼수도있습니다. 이렇게여러가지를그룹으로출력해주는명령은유용하게쓰일수있습니다. 사람이맡은일수 그림. 9-22 한 9.10 테이블지우기와수정

만들어진테이블을지우거나다시수정하는방법은몇가지가있습니다. 게시판의사용시에이부분은꼭들어갑니다. 데이터의삭제와추가등에사용됩니다. 테이블지우기 mysql>delete from 테이블명 ; 해당테이블을삭제합니다. 테이블에필드 ( 열 ) 추가하기 mysql>alter table 테이블명 add 열명자료형태 ; 테이블에다른열을추가시킵니다. 만약게시판의 admin 툴을만든다면이방법을적용할수있습니다. 지금까지말한모든설명들은데이터베이스 admin 툴을만들때사용하는중요한기본질의들입니다. 그림. 9-23 테이블에필드 ( 열 ) 추가하기위그림에서 tel 필드가새롭게추가된것을볼수있습니다. 테이블의특정필드 ( 열 ) 삭제하기 mysql>alter table 테이블명 drop 열명 ; 해당테이블의특정필드 ( 열 ) 를삭제합니다.

그림. 9-24 테이블의특정필드 ( 열 ) 삭제하기위그림에서 tel 항목이삭제된것을볼수있습니다. 테이블특정레코드삭제하기 mysql>delete from 테이블명 where 열명 = 레코드명 ( 데이터명 ); 해당테이블에서특정한레코드만삭제합니다.

그림. 9-25 특정레코드 삭제하기위그림에서 name 이 glee 라는레코드만지워진것을볼수있습니다. 테이블특정레코드수정하기 mysql>update 테이블명 set 열명 = 레코드명 ( 데이터명 ) where 열명 = 레코드명 ; 이방법은해당테이블의특정레코드의내용만수정할때사용합니다.

수정하기 그림. 9-26 특정레코드 위그림에서 name 가 bian 인레코드중 hab 가 "?" 에서컴고치기로고쳐진것을볼수있습니다. 9.11 mysql 접근과권한설정 이제 mysql 에대한접근하는방법은익숙하리라생각합니다. 그러면이제각데이터베이스별 접근과권한에관한설정들을알아보겠습니다. 뒤의게시판등의소스에는그냥 root 권한으로 설정했지만여러분들이이부분을수정하고여러가지다른방법으로데이터베이스접근을하도록만들수있습니다. mysql 권한을설정하기전에먼저 mysql 클라이언트에접속을합니다. 그리고디폴트로설치된 mysql 의데이터베이스항목을살펴보겠습니다.

그림. 9-27 데이터베이스보기위그림은아직데이터베이스를추가로만들지않은여러분들과는조금다릅니다. 디폴트는 mysql 과 test 데이터베이스만있습니다. 그럼 mysql 의전반적인설정들이들어있는 mysql 데이터베이스를선택하겠습니다. 내용 그림. 9-28 mysql 데이터베이스 위그림에서나열된테이블중 db 와 user 을살펴보겠습니다.

db 테이블 - 각데이터베이스의이름과호스트, 사용자등의권한을설정합니다. user 테이블 - mysql 을사용할수있는유저와해당유저의권한을설정합니다. 그림. 9-29 db 테이블속성위그림은 db 테이블의속성들입니다. 이테이블에해당유저들이사용할데이터베이스를설정하고권한을줍니다. 데이터베이스사용 user 등록하기여기서는 test 데이터베이스의사용자 (cry) 를등록해보겠습니다.

그림. 9-30 db 테이블쿼리 (Host,Db,User) 위그림에서볼수있듯이 db 테이블은데이터베이스의소유자를등록하는곳입니다. (Test 데이터베이스의소유자는지금아무도설정되지않았습니다.) 그리고 user 테이블은데이터베이스를사용하는 user 을등록하는곳입니다. 즉, db 테이블에소유자가등록되어있더라도 user 테이블에그소유자 ( 사용자 ) 가존재하지않으면안됩니다. 처음 mysql 의설정에서 root 를설정했습니다. 이 root 계정은뭐든지다할수있는계정이므로데이터베이스별로관리를할수있고모든권한이없는해당데이터베이스만관리하는계정이필요로한것입니다. db 테이블의속성을보면여러가지데이터베이스에서질의하는속성들을볼수있을것입니다. 그중사용하게할질의들은 y 그렇지못하게할경우는 n 등을줌으로해서데이터베이스관리자의권한을정할수있습니다. 해당질의권한을설정하는부분은총 10 개항목이있습니다. 앞에서 insert 문과 update 문을보았기때문에테이블을다루는방법은이제습득했을줄압니다. 여기서는기존에존재하는 test 테이블을수정하는것이기때문에 update 문을사용했습니다. 만약새로운데이터베이스를 db 테이블에추가할경우는당연히 insert 문을이용하면되겠습니다. 그림. 9-31 test 데이터베이스사용자등록 insert into 문을이용한새로운데이터베이스등록역시다음과같은식으로해주면됩니다.

insert into db values(" 해당열 ", " 해당열 ".); Update 방법은기존에있던행을말그대로업데이트한것입니다. 필자의경우 update 가조금헛갈리는경우가있어여러분들도혹그런분이있을거같아 insert 대신 update 문을사용해봤습니다. 그럼, 해당항목들이업데이트되었는지를 select 문을이용해확인해보겠습니다. select Host,Db, User from db ; 테이블의 test 데이터베이스사용자추가확인 그림. 9-32 db Mysql 사용자등록하기 user 테이블의 (mysql 데이터베이스에서 ) test 데이터베이스를사용할 cry 사용자를등록해 보겠습니다.

우선 user 테이블의속성들을확인합니다. user 테이블역시해당질의에관한권한이있습니다. 총 14 개항목이존재합니다. 여기서는 insert into 문을사용해서추가를하겠습니다. 그림. 9-33 user 테이블속성 위그림에서유저를등록하기전에상기할부분은각각의질의에관한권한설정을명확히정한 다음 등록하는것입니다. cry 라는사용자가 test 데이터베이스만을관리하는것이라면질의모두 "n" 으로 해야될것입니다. 하지만 cry 가다른데이터베이스도관리하길원한다면질의중필요한항목만 "y" 로 선택하면됩니다. 그럼다음을입력해서 user 테이블의등록상태를확인해보도록하겠습니다. select Host, User, Password from user ;

그림. 9-34 user 테이블 쿼리 (Host,User,Password) 위그림에서 Password 항목을보면알수없는숫자와알파벳으로되어진것을볼수있습니다. 이것은 mysql 이 passwd 을저장할때암호화해서저장하기때문입니다. 그런이유로 insert into 문으로암호열을입력할때는 password() 함수를사용해서입력해야합니다. insert into user (Host,User,Password) values("192.168.0.1", "cry", password("cry98")); 이렇게실행하면됩니다.(passwd 부분은여러분들이정하는곳입니다.) 여기서는 Host, User, Password 항목만추가했습니다. 그것은나머지열의질의권한항목은디폴트가 "n" 이기때문에입력하지않아도됩니다.

그림. 9-35 user 테이블에 cry 사용자등록위그림에서 192.168.0.1 의 Host 와 cry 유저그리고암호가등록된걸확인할수있습니다. 이설정들은 mysql 을재시동하고다시접속할때부터적용됩니다. mysql 사용자테스트 cry 계정으로 192.168.0.1 호스트로접속해보겠습니다. 9-36 mysql 추가사용자접속확인 그림. 물론앞에서설정한 "cry98" 암호로접속해야됩니다.

그림. 9-37 cry 계정데이터베이스사용가능테스트 위그림에서 cry 계정의처음권한설정에의해 test 데이터베이스만사용가능함을볼수있습니다. 여기까지대략적인 mysql 의사용자권한설정과추가에대해살펴보았습니다. 이러한방법들을이용해서나중에게시판에적용하면많은도움이될것입니다. 참고로, 뒷장의게시판부분과나머지소스들의 mysql 연동은 root 권한으로설정되어있습니다. 하지만여러분들이원하는계정을추가한다음입맛에맞게얼마든지수정할수있습니다. 9.12 mysql 데이터의복구와 backup 데이터의백업은정말로중요한일중에하나입니다. 필자는컴퓨터를통째로날린적이있기 때문에더욱백업에열을올립니다. Mysql 뿐아니라 php 역시 tar 로반드시백업하는습관을 가져야합니다. 요즘의에디터들은대부분작업하다가종료한파일에대해자동적으로백업 파일을생성해저장합니다. 그덕분에필자가이렇게소스를여러분들에게보여줄수있었던것 같습니다. 하지만방심은금물이듯하루라도백업하지않으면손가락이마비될정도로백업해도 후회는안할것입니다. Mysql 의복구는 /usr/local/mysql/bin 디렉토리에존재하는 isamchk 를 이용해서합니다. isamchk 의경우상당히세밀한방법으로데이터베이스의파손여부를점검하고 복구합니다. isamchk 사용하기 #isamchk 옵션테이블명 Mysql 의경우대부분 isamchk 를돌릴정도의에러발생은적은편입니다. 하지만, 기계는얼마든지 예고없이 정지하거나말썽일으킬소지를가지고있기때문에꼭필요한유틸리티입니다. isamchk 옵션

#isamchk --help 로다양한옵션을확인하기바랍니다. #isamchk 테이블명 - 해당테이블의에러를점검합니다. 상당한부분까지에러를점검해줍니다. #isamchk -e 테이블명 - 해당테이블의모든데이터를점검해줍니다. -i 옵션을추가할경우통계도보여줍니다. #isamchk -r -q 테이블명 - 해당테이블의에러를쉽고빠르게복구해줍니다. 이같이 isamchk 를사용함으로써안전하게복구할수있습니다. 더상세한방법은 --help 를사용해서확인하기바랍니다. mysql의백업하기 #mysqldump -h 호스트명 -u 유저명 -p 데이터베이스명 > 백업되어질파일명 Mysql 백업의경우 /usr/local/mysql/bin 디렉토리에존재하는 mysqldump 를이용하는방법입니다. 그림. 9-38 mysqldump 예위의 test 데이터베이스를 test_bak.sql 파일로저장했습니다. 물론저장된파일은 /bin 디렉토리에생성됩니다. 저장된파일복구하기 #mysql -h 호스트명 -u 유저명 -p 데이터베이스명 < 백업된파일명 해당백업파일을다시원상복구시킵니다. 참고로 mysql 의데이터베이스를삭제하는방법은다음과같습니다. drop database 데이터베이스명 ; 10. MYSQL 주요함수

여기서는 mysql 에사용되는중요한몇가지기본함수들을소개하겠습니다. 대부분의함수가 php 와연관하여비슷한것들이많이있습니다. php 에서만약이함수를사용하려면 mysql query 문을이용하는방법도있습니다. ( 여기서의설명은직접 local 에서접속해서하는것보다 클라이언트에서 telnet 으로접속해서사용한예를더많이들었습니다.) 10.1 연산자 연산자의경우일반적으로사용하는연산자들을사용합니다. "+", "-", "*", "/" 등 입니다. 그럼각각의수행결과를확인하겠습니다. 그림. 10-1 + * 연산자예 위에서 "( )" 사용없이연산을했기때문에우선순위가위인연산자부터연산이이루어졌습니다. 만약, (1+4)*4 로했다면결과는 20 이될것입니다. (4-4) 일경우 "null" 을출력합니다. 그림. 10-2 / - 연산자예위와다르게 (4-2) 가 10.2 비교연산자 비교연산자는결과가참 (1) 과거짓 (0) 으로결과를출력합니다. 그리고비교연산자의경우몇가지 규칙이있습니다. ~ 인수가모두문자열이면문자열로비교됩니다. ~ 인수가모두정수면정수로 비교됩니다. ~ 인수가모두 "null" 이면연산의결과도 "null" 이됩니다. ~ 한쪽의인수가 "timestamp"

이면나머지도같이변환되어비교됩니다. ~ 한쪽의인수가 "datetime" 이면나머지도같이변환되어비교됩니다. ~ 나머지의경우는부동소수점실수로비교됩니다. 기호로는 "=" - 같다 "!=,<>" - 같지않다 "<=" - 작거나같다 "<" - 작다 ">=" - 크거나같다 ">" - 크다 "<=>" - 둘중한쪽이 "null" 일경우 0 을출력인자 between ( 최소값 ) and ( 최대값 ) - 인자가최소값과최대값사이에존재하면 "1" 을그렇지않을경우 "0" 을출력합니다. 인자 in ( 값, 값, ) - 인자가 ( ) 안에존재하면 "1" 을그렇지않으면 "0" 을출력합니다. 그림. 10-3 비교연산자!= 결과가거짓이므로 "0" 을출력합니다. 그림. 10-4 비교연산자 >= 위그림은

그림. 10-5 비교 연산자 between 그림. 13-5 의결과는참이므로 "1" 을리턴합니다. 그림. 10-6 비교연산자 in "jun" 항목안에없기때문에거짓이므로 "0" 을리턴합니다. 10.3 날짜와시간관련함수 날짜와시간관련함수는여러모로사용하는곳이많은부분입니다. 대부분의표현에서날짜와 시간은꼭들어가기때문에이부분을먼저다루도록하겠습니다. MONTHNAME(" 날짜 ") - 해당하는날짜의월을영어로리턴합니다. 그림. 10-7 MONTHNAME QUARTER(" 날짜 ") - 해당하는날짜의분기를리턴해줍니다.

그림. 10-8 QUARTER YEAR(" 날짜 ") - 해당날짜의년도를리턴해줍니다. HOUR(" 시간 ") - 해당하는시간을리턴합니다. 그림. 10-9 YEAR MINUTE(" 시간 ") - 해당시간의분을리턴합니다. 그림. 10-10 HOUR 그림. 10-11 MINUTE SECOND(" 시간 ") - 해당시간의초를리턴합니다.

그림. 10-12 SECOND PERIOD_ADD( 날짜, N) - 해당하는날짜에의개월에 "N" 개월을더합니다. ( 날짜는 YYMM, YYYYMM 형식으로주어지면 YYYYMM 형식으로리턴합니다.) 그림. 10-13 PERIOD_ADD CURDARE( ) - 오늘날짜를 YYYY-MM-DD 또는 YYYYMMDD 형식으로리턴해줍니다. 함수가 문자열또는숫자로사용됨에따라리턴값은달라집니다. 그림. 10-14 CURDARE 예 1 그림. 10-15 CURDARE 예 2 CURTIME( ) - 현재시간을 HH:MM:SS 또는 HHMMSS 형식으로리턴해줍니다. 이함수역시함수가 문자열또는숫자로사용됨에따라리턴값이달라집니다.

그림. 10-16 CURTIME 예 1 그림. 10-17 CURTIME 예 2 NOW( ) - 현재의날짜와시간을리턴합니다. 그림. 10-18 NOW 예 1 그림. 10-19 NOW 예 2 UNIX_TIMESTAMP( ) - 유닉스타임스탬프를리턴합니다. 날짜인자가있을경우해당날짜의유닉스타임스탬프를리턴하고, 인자가없을경우현재의유닉스타임스탬프를리턴합니다.( 초단위로나타냅니다.)

그림. 10-20 UNIX_TIMESTAMP 예 1 그림. 10-21 UNIX_TIMESTAMP 예 2 FROM_UNIXTIME ( 유닉스타임스탬프 ) - 유닉스타임스탬프날짜에서일반형식의날짜와시간으로리턴합니다. 이함수를이용해서원하는데이터형태로도출력이가능합니다. (DATE_FORMAT( ) 함수는날짜와시간을여러가지형태로표현가능하게합니다. 다음함수를참고하세요.) 1 그림. 10-22 FROM_UNIXTIME 예 FROM_UNIXTIME 예 2 그림. 10-23

그림. 10-24 FROM_UNIXTIME 예 3 DATE_FORMAT( 날짜, 형태 ) - 형태의종류에맞게여러가지양식으로날짜와시간을리턴해줍니다. 특히이함수는자주사용되므로관심있게보기바랍니다. 형태의종류는. %M - 월이름을영어로리턴합니다.(January) %D - 접미사를사용해영어로일을리턴합니다.(1st, 2nd..) %W - 요일을영어로리턴합니다. (Monday) %y - 2 자리연도를리턴합니다. %m - 월을숫자로리턴합니다.(01, 02, 03) %d - 일을숫자로리턴합니다. (00, 01,02 ) %a - 요일을짧은영어로리턴합니다. (Mon) %e - 일을숫자로리턴합니다.(0, 1, 2) %c - 월을숫자로리턴합니다. (1, 2, 3) %j - 한해의몇번째요일인지리턴합니다. (001 ~ 366) %b - 월을짧은영어로리턴합니다. (Jan) %H - 24 시간형식의시간을리턴합니다. (00 ~ 23 ) %h - 12 시간형식의시간을리턴합니다. (01 ~ 12) %k - 24 시간형식의시간을리턴합니다. (1 ~ 23) %l - 시간을리턴합니다. (1 ~ 12) %i - 분을리턴합니다. (00 ~ 59) %T - 시분초의 24 시간형식을리턴합니다. (hh:mm:ss) %r - 시분초의 12 시간형식을리턴합니다. (hh:mm:ss) %s - 초를리턴합니다. (00 ~ 59) %p - AM, PM 을리턴합니다. %w - 일주일중몇번째요일인지리턴합니다.(0 - 일요일 ) %U - 한해중몇번째주인지리턴합니다.( 일요일이시작 ) %u - 한해중몇번째주인지리턴합니다.( 월요일이시작 ) 그럼여러가지형태의데이터출력을보겠습니다. 10-25 DATE_FORMAT 예 1 그림.

그림. 10-26 DATE_FORMAT 예 2 TO_DAYS( 날짜 ) - 해당날짜를 "0000" 부터일수로리턴해줍니다. 그림. 10-27 TO_DAYS 예 1 FROM_DAYS( 일수 ) - 해당일수로부터날짜를리턴해줍니다. 그림. 10-28 TO_DAYS 예 2 그림. 10-29 FROM_DAYS 예 1

그림. 10-30 FROM_DAYS 예 2 DATE_ADD( 날짜,INTERVAL, 추가분 ) - 해당날짜와시간에특정날짜와시간을더해줍니다. 그림. 10-31 DATE_ADD 예 1 위그림을보면하루가추가된것을볼수있습니다. 여기에서추가분의종류에대해알아보고계속예를보여드리겠습니다. second - 초를추가합니다 (interval 1 second) minute - 분을추가합니다.(interval 1 minute) hour - 시간을추가합니다.(interval 1 hour) day - 일을추가합니다.(interval 1 day) month - 달을추가합니다..(interval 1 month) year - 년을추가합니다..(interval 1 year) minute_second - 분과초를추가합니다. (interval "1:1" minute_second) hour_minute - 시간과분을추가합니다. (interval "1:1" hour_minute) day_hour - 일과시간을추가합니다. (interval "1 1" day_hour) year_month - 년과월을추가합니다. (interval "1-1" year_month) hour_second - 시간과분, 초를추가합니다. (interval "1:1:1" hour_second) day_minute - 일과시간, 분을추가합니다.(interval "1 1:1" day_minute) day_second - 일과시간, 분, 초를추가합니다.(interval "1 1:1:1" day_second) 그림. 10-32 DATE_ADD 예 2

그림. 10-33 DATE_ADD 예 3 만약날짜와시간을빼기를원한다면 " - " 를사용하면됩니다. 또다른 방법은 DATE_SUB( ) 함수를사용하는것입니다. 10-34 DATE_ADD 예 4 그림. 그림. 10-35 DATE_ADD 예 5 PERIOD_DIFF( 날짜 1, 날짜 2) - 날짜 1 과날짜 2 사이의개월수를 리턴합니다. 그림.10-36 PERIOD_DIFF 10.4 문자열관련함수

php 스크립트프로그래밍을하면서 php 에서지원하는함수를이용한방법으로많은문자열 처리하게될것입니다. Mysql 역시문자열을처리하는여러가지함수가있습니다. 여러분들은 데이터를데이터베이스에저장할때 php 함수에서지원하는함수를사용할수도있지만여기서 설명할 mysql 함수를사용해도됩니다. ( 문자열함수는결과값이정의된길이보다클경우 NULL 을리턴합니다.) HEX(n) - 해당 10 진수를 16 진수로리턴해줍니다. (NULL 은 NULL 로리턴 ) 8 진수로리턴해줍니다.(NULL -> NULL 로리턴 ) 그림. 10-37 HEX OCT(n) - 해당 10 진수를 10 진수를 2 진수로리턴합니다. (NULL -> NULL 로리턴 ) 그림. 10-38 OCT BIN(n) - 해당 그림. 10-39 BIN CONV(n, a, b) - 해당숫자를 a 형식의진수에서 b 형식의진수로변환해서리턴합니다. 앞에서설명한각진수별변환방법의기능을다가지고있는함수입니다. ( 인자중 NULL 이있으면 NULL 을리턴합니다. 2 ~36 진까지가능 )

그림. 10-40 CONV 예 1 그림. 10-41 CONV 예 2 ASCII( 문자열 ) - 해당문자열의처음위치의 ASCII 코드를리턴합니다.(NULL -> NULL 로리턴합니다.) Nstring 에해당하는문자열이몇번째인지리턴합니다. 그림. 10-42 ASCII FIELD(Nstring, string, ) - 그림. 10-43 FIELD LOWER( 문자열 ) - 해당문자열을소문자로변환해서리턴합니다.( 컴파일시선택한문자설정 ) 대문자로변환해서리턴합니다. ( 컴파일시선택한문자설정 ) 그림. 10-44 LOWER UPPER( 문자열 ) - 해당문자열을

그림. 10-45 UPPER LOAD_FILE( 파일명 ) - 64kb 보다 작은내용의파일을읽어들여문자열로리턴합니다. (64kb 보다클경우 NULL 을리턴합니다.) 해당인자의수만큼공백을리턴합니다. 그림. 10-46 LOAD_FILE SPACE(n) - 바꾸어리턴합니다. 그림. 10-47 SPACE REVERSE( 문자열 ) - 해당문자열의순서를 그림. 10-48 REVERSE INSERT( 문자열, a, b, 문자열 1) - 해당문자열을 a 위치부터 b 크기만큼문자열 1 을넣어리턴합니다. 그림. 10-49 INSERT SUBSTRING_INDEX( 문자열, a, count ) - 해당문자열을 a 로구분해서배열로만들고 count 수만큼 리턴해줍니다. 오른쪽부터출력하길원하면음수를적으면됩니다.

그림. 10-50 SUBSTRING_INDEX REPEAT( 문자열, c ) - 해당문자열을 c 만큼반복해서리턴합니다. 왼쪽공백을제거합니다. 그림. 10-51 REPEAT LTRIM( 문자열 ) - 해당문자열의 공백을제거하고리턴합니다. 그림. 10-52 LTRIM RTRIM( 문자열 ) - 해당문자열의오른쪽 그림. 10-53 RTRIM TRIM( 옵션 a FROM 문자열 ) - 주어진 옵션에따라 a 문자를제거하고리턴합니다. 옵션에는 LEADING TRAILING BOTH 등이있으며 각각앞쪽공백제거 뒤쪽공백제거 앞뒤공백제거입니다. 그림. 10-54 TRIM 예 1

그림. 10-55 TRIM 예 2 그림. 10-56 TRIM 예 3 CONCAT( 문자열, 문자열..) - 해당문자열을이어줍니다. 이함수는 php 의 ". " 을이용한문자열연결방법과 유사합니다. (NULL -> NULL 로리턴합니다.) - n 만큼해당문자열을왼쪽부터리턴합니다. 그림. 10-57 CONCAT LEFT( 문자열,n) 문자열을오른쪽부터리턴합니다. 그림. 10-58 LEFT RIGHT( 문자열, n) - n 만큼해당 b( 문자열 ) 에서처음부터몇번째위치인지리턴합니다. 그림. 10-59 RIGHT LOCATE(a, b) - a( 문자열 ) 가

해당문자열에 a 길이만큼 b 문자를왼쪽부터넣어리턴합니다. 그림. 10-60 LOCATE LPAD( 문자열, a, b) - a 길이만큼 b 문자를오른쪽에넣어리턴합니다. 그림. 10-61 LPAD RPAD( 문자열, a, b) - 해당문자열에 그림. 10-62 RPAD 여기까지문자열함수의대부분을 설명했습니다. 몇가지빠진함수들도있지만여기있는것만으로도대부분을표현하기는충분합니다. 10.5 기타함수들 mysql 의수학함수는여기서다루지않도록하겠습니다. 대부분의경우 php 함수가대신할수 있기때문에구지 mysql 함수를이용해수학연산을할필요는없습니다. 하지만어느경우든꼭 사용해야만할경우는 mysql 매뉴얼을보시기바랍니다. 짧은영어실력으로도충분히보실수 있는매뉴얼이기때문에걱정은필요없습니다. 그럼, 여기서는자주사용되는나머지함수들을 설명하겠습니다. USER() - 현재 mysql 에접속중인사용자이름을리턴합니다. 그림. 10-63 USER

VERSION( ) - mysql 의버전을리턴해줍니다. 그림. 10-64 VERSION PASSWORD( 문자열 ) - 이함수는 mysql 의데이터베이스에문자열을암호화해서저장해줍니다. 대부분의경우사용자인증에이용합니다. 즉, 암호화된문자열끼리비교함으로해서인증을하는것입니다. 뒤에설명할 admin tool 의사용자인증역시이방법을이용했습니다. 그림. 10-65 PASSWORD 이렇게중요하게사용되는몇가지함수들을봤습니다. 대부분의프로그램과스크립트들은거의비슷한양식의함수를가지고있습니다. 그래서다른곳에서비슷한함수를보면그기능이무엇인지는어느정도예상할수있습니다. 꼭필요한것을확실히이해하는것도중요합니다. 여러가지를두서없이배우면혼란스러워서그만큼손해보는부분도있습니다. 아무쪼록이책에나열된함수에만국한되지말기를바랍니다. 다음장에서는소스부분의각화면을설명하겠습니다. 참고. 11 장은원래앞으로만들어볼사이트의각화면을설명한부분입니다. 본내용과조금다를수있으며만들어볼소스는지금은아주초보적인것이며쿠키와세션사용등에서잘못된점이있습니다. 이부분은공부해보기바랍니다. 정말로 php 프로그래밍을하려면모든 html 태그는얼마보여지지않습니다. 그것은 <td> 태크과여타태그하나까지언어로만들어버리기때문입니다. 하지만여기서소개하는소스는정말허접한것이며처음접하는이에게는이보다좋은소스는없을듯합니다. 모든게 html 태그며부분부분언어가들어갑니다. 이모든걸이해했다면이제여러분들은 class 방식으로모든걸프로그래밍해보기바랍니다. 그리고진정한언어 (C,C++,java) 를시작하세요