레이블이 MySQL인 게시물을 표시합니다. 모든 게시물 표시
레이블이 MySQL인 게시물을 표시합니다. 모든 게시물 표시

2010년 10월 1일 금요일

MySQL에서 제어함수 (Control Flow Functions)

출처 : http://wizard.ncafe.net/wt/2368

MySQL에서 제어함수들에 대해서 설명한다. (Control Flow Functions)


1. CASE
 1.1 CASE value WHEN [compare_value] THEN result ... [ELSE result] END
   - value가 compare_value 이면 result 아니면 ELSE 의 result ...

 1.2 CASE WHEN [condition] THEN result ... [ELSE result] END
   - condition 이 true 면 result 아니면 ELSE 의 result

2. IF
  2.1 IF (condition, result1, result2)
    - condition 이 true 면 result1 아니면 result2
    - MySQL 5.0 메뉴얼에 IF(0.1,1,0) 의 값이 0 이라고 나와 있는데 난 1이 나온다.
      1이 나오는게 맞는거 같은데.

3. IFNULL
  3.1 IFNULL(expr1, expr2)
    - expr1이 널이면 expr2

4. NULLIF
  4.1 NULLIF(expr1, expr2)
    - expr1=expr2 이면 NULL


2010년 9월 30일 목요일

[MySQL] 두개(여러개) 테이블 데이터 합치기

출처 : http://dddd87.untoc.com/tc/13

잊어먹을라~ ㅠㅠ;;

  1. INSERT Ignore INTO A SELECT * FROM B;

    테이블 A 와 B 가 같은 schema 일 때, 테이블 B의 데이터를 A 의 데이터에 넣는
    쿼리문이다.  A 와 B 의 중복 데이터를 제거하고 A와 다른 데이터만 추가하게 된다.

    예를 들어
      테이블 A 가

      id    name    age
    --------------------------
      1     kim         20
      2     lee         22
      3     kim         23

     이고
     
      테이블 B 가

      id    name    age
    --------------------------
      1     kim         20
      2     lee         22
      3     lee         24
      4     park       20

    일때 INSERT Ignore INTO A SELECT * FROM B; 쿼리 문을 실행 하게 되면 테이블 A는 아래와 같이 된다.
     
      id    name    age
    --------------------------
      1     kim         20
      2     lee         22
      3     kim         23
      4     lee         24
      5     park       20

  2. SELECT * FROM A UNION SELECT * FROM B

    1번과 같은 역할이지만 A테이블로 insert 하는것이 아니라
    테이블 A, B 를 중복된 데이터 제거하고 테이블이 union 되여 화면에 출력된다.
    이때도 테이블 A, B 는 같은 schema

2009년 11월 14일 토요일

서버 2008 R2 :: IIS7에 PHP + MySQL 설치하기

서버 2008 R2 :: IIS + PHP + MySQL 설치기~~

일단 허접하게 설치하는 과정을 보여드리게되어 송구스럽습니다 ^^;;

준비물
1. IIS 7.5
2. PHP 설치파일
3. MySQL 설치파일

IIS 설치하기

기본적으로 설치방법을 아시리라 믿고 간단하게 링크로 대체하겠습니다.
옥스님의 블로그(http://blog.it-hero.co.kr/blog_post_181.aspx)에서 발취하겠습니다.

펼쳐두기..



MySQL 설치하기

다운링크 : http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-5.1.39-winx64.msi/from/pick#mirrors

이놈은 그냥 설치파일로 설치를 쭈욱~ 해주니 간단하네요 ^^
여기 방법도 제가 참고하였던 사이트로 대체하겠습니다~ 따라하기 편하실꺼예요 ^^

Oks with IT 사이트(http://www.nimsgern.pe.kr/blogs/nims/archive/2008/07/16/iis7-php-mysql-and-wordpress.aspx)

펼쳐두기..


PHP 설치하기

다운링크 : http://windows.php.net/download/

위의 링크에 가시면 PHP5.3(5.3.0) 버전이 보이실겁니다.
여기에서는 설치파일보다는 zip압축파일로 다운받으셔서 설치하시는것이 설정하는데도 큰 문제가 없구여 ^^
VC9 x86 Non Thread Safe 또는 VC6 x86 Non Thread Safe 으로 해야된다길래 일단 이놈들로 했습니다.

저는 VC9로 설치했구여.

1. zip파일을 다운받아 C:\PHP 폴더에 압축을 풀어놓습니다.

2. PHP 폴더내부에 환경설정하는 PHP.ini 파일이 보이지않지만 따로 만드실필요없이 사용하세요.

3. IIS에 처리기 매핑 추가하기

IIS의 처리기 매핑 들어가기
PHP 추가

위 그림과 같이 설정하시면 됩니다.
실행파일(옵션) ::: 이전에 압축파일을 풀어놓은 C:\PHP\php-cgi.exe 로 설정합니다.

4. 환경변수 추가하기
제어판 - 시스템 및 보안 - 시스템 - 고급시스템 설정
위 그림과 같이 환경변수에 PHP폴더를 추가해주면 됩니다.

5. 기본문서 추가

요렇게 기본문서까지 추가해준다음 IIS 다시시작 또는 시스템 재부팅을하면 php가 실행 잘되네요 ^^

PHP.INI 환경 설정


최종적으로 PHP 환경설정을 변경해주니 시간대 설정도 정상적으로 적용이 됩니다 ^^
다음 링크로 이동하셔서 파일을 다운받으셔서 적용시키시거나 파일내용을 보시고 변경해주시면 됩니다.

PHP 환경 설정하기

2009년 10월 19일 월요일

PHP & MySQL Select

SELECT 구문은 데이터베이스로부터 데이터를 선택할때 사용됩니다.




데이터베이스 테이블로부터 데이터 선택하기

SELECT 구문은 데이터베이스로부터 자료를 선택할때 사용됩니다.


문법

SELECT column_name(s)

FROM table_name

위와같이 "SELECT 컬럼이름 FROM 테이블이름" 과 같은 형태를 가집니다. 컬럼이름은 하나나, 혹은 그 이상의 여러개가 올 수 있습니다.

PHP가 위의 구문을 실행하도록 하려면 mysql_query() 함수를 사용해야 합니다. 이 함수는 쿼리나 명령을 MySQL 연결로 전송하는데 사용됩니다.


예제

아래의 예제는 "Persons" 테이블에 저장된 모든 데이터를 선택합니다 (문자열 * 을 사용하면 테이블안의 모든 데이터를 선택합니다):

<?php

$con = mysql_connect("localhost","peter","abc123");

if (!$con)

{

die('Could not connect: ' . mysql_error());

}
mysql_select_db("my_db", $con);
$result = mysql_query("SELECT * FROM Persons");
while($row = mysql_fetch_array($result))

{

echo $row['FirstName'] . " " . $row['LastName'];

echo "<br />";

}
mysql_close($con);

?>


위의 예제에서는 $result 변수에 mysql_query() 함수에 의해 반환된 데이터를 저장합니다.

다음으로 레코드셋으로부터 첫번째 행을 배열로서 반환받기 위해서 mysql_fetch_array() 함수를 사용합니다. mysql_fetch_array() 를 호출할때마다 각각 레코드셋의 다음행을 반환합니다. while 반복문은 레코드셋의 모든 레코드들을 돌면서 레코드의 수만큼 반복됩니다.

각 행의 값을 출력하기 위해, 예제에서는 $row 변수를 사용합니다. ($row['FirstName']와 $row['LastName'])


위 코드의 출력 결과는 다음과 같습니다:


Peter Griffin

Glenn Quagmire




결과를 HTML 테이블로 표시하기

다음 예제는 위쪽에 있는 예제와 똑같은 데이터를 선택한다음, 데이터를 HTML 테이블안에 표시합니다:


<?php

$con = mysql_connect("localhost","peter","abc123");

if (!$con)

{

die('Could not connect: ' . mysql_error());

}



mysql_select_db("my_db", $con);



$result = mysql_query("SELECT * FROM Persons");



echo "<table border='1'>

<
tr>

<th>Firstname</th>

<th>Lastname</th>

</tr>";
while($row = mysql_fetch_array($result))

{

echo "<tr>";

echo "<td>" . $row['FirstName'] . "</td>";

echo "<td>" . $row['LastName'] . "</td>";

echo "</tr>";

}

echo "</table>";
mysql_close($con);

?>


위 코드의 출력 결과는 아래와 같습니다:

Firstname Lastname
Glenn Quagmire
Peter Griffin

2009년 10월 16일 금요일

MySQL 관리툴 : webyog 프로그램과 HeidiSQL 프로그램

출처 : 문샘의 정보보호 ( http://www.munsam.kr/208 )

데이타베이스를 구축하기 위해 DBMS를 설치해 합니다.
DBMS 프로그램은 여러가지가 있습니다.

MySQL : 무료 배포, 윈도우 및 리눅스 환경에서 사용 가능
MSSQL : 유료, MS에서 제작된 프로그램, 윈도우 환경에서 사용가능
오라클 : 유료, DBMS의 대표적인 프로그램, 가장 안정성이 좋다고 함.

일반인이나 간단한 홈피, 웹서버 구축시에는 MySQL를 많이 사용합니다.
특히 APMsetup 프로그램 내장된 DBMS 입니다.

MySQL 설치하고, 작동한후
MySQL 에 접근하가 위해서는 셀(도스환경)에서 접속해야 합니다.
도스환경이라 사용하기 어렵습니다.
SQL문을 따로 알아야 합니다.
DB 생성, Table 생성, 레코드 삽입, 수정, 삭제 등

이것을 GUI 환경(비주얼하게 보여주는 프로그램)으로 만들어 주는 것이 어려가지 있습니다.
가장 대표적인 것은 phpmyadmin 이라는 것입니다.
웹서버 구축시 해당 프로그램을 다운 복사하고, 환경설정을 해 주어야 합니다.

apmsetup 프로그램에서는 내장되어 있습니다.

phpmyadmin 이 설치가 안되어 있거나 설치가 어렵다면 아래의 프로그램을 설치하세요.
아래의 두개의 프로그램을 소개합니다.
URL 를 클릭해서 해당되는 파일을 다운 받아 일반 프로그램처럼 설치하면 됩니다.

      (30일 사용 쉐어웨어 프로그램)

   phpmyadmin 과 MSSQL 의 모양을 합한 것처럼 보임
   무료 프로그램

2009년 10월 15일 목요일

MSSQL to MySQL (MSSQL 컨버터)

출처 : APMSetup site ( http://www.apmsetup.com/board.php?bid=512&bs_type=&bs_str=&pg=0&mode=view&uid=19456 )




MSSQL 2 MySQL (Database Converter from Microsoft SQL Server to MySQL )

홈페이지 :: http://www.kofler.cc/mysql/mssql2mysql.html

위 프로그램을 사용하실려면
MDAC 와 MSSQL서버나 MSSQL 클라이언트 도구가 설치되어 있어야 합니다.

ActiveX 에러가 발생시에는
MSSQL클라이언트 도구를 설치해 주시기 바랍니다.

mssql2mysql-gui.zip

mssql2mysql-gui2.zip

2009년 10월 13일 화요일

MySQL Query(쿼리)문

출처 : 퇴근5분전 ( http://blog.naearu.com/2982704 )



AUTO_INCREMENT 리셋하기
ALTER TABLE `테이블명` PACK_KEYS=0 CHECKSUM=0 DELAY_KEY_WRITE=0 AUTO_INCREMENT=1

데이터베이스 또는 테이블 보기
SHOW DATABASES;
SHOW TABLES;


데이터베이스 생성하기
CREATE DATABASE 데이터베이스명;


테이블 생성하기
CREATE TABLE 테이블명 (컬럼명1, 컬럼명2, 컬럼명3, ..., 컬럼명N);


데이터베이스 사용
USE 데이터베이스명;


데이터베이스 삭제하기
DROP DATABASE 데이터베이스명;


테이블 삭제하기
DROP TABLE 테이블명;


테이블에 새로운 컬럼 추가하기
ALTER TABLE 테이블명 ADD 컬럼명 자료형;


데이블의 특정 컬럼을 변경하기
ALTER TABLE 테이블명 CHANGE 변경전명 변경후명 자료형;


테이블에 특정 컬럼을 삭제하기
ALTER TABLE 테이블명 DROP 컬럼명;


테이블에 데이터 추가하기
INSERT INTO 테이블명 (컬럼1, 컬럼2, ..., 컬럼N) VALUES (데이터1, 데이터2, ..., 데이터N);


테이블 구조 살펴보기
DESCRIBE 테이블명;


원하는 항목 표시하기 ->
SELECT * FROM 테이블이름;
SELECT 컬럼1, 컬럼2, ...컬럼N FROM 테이블이름;


조건하에 항목 표시하기
SELECT id, name, email FROM memo WHERE sex = 'M' AND math > '70';


순서대로 표시하기
// 오름차순
SELECT name, phone FROM memo ORDER BY 컬럼명 ASC;
// 내림차순
SELECT name, phone FROM memo ORDER BY 컬럼명 DESC;


원하는 갯수만큼 가져오기
// 위에서 4개만 가져온다.
SELECT * FROM memo LIMIT 4;
// 3번부터 4개를 가져온다.
SELECT * FROM memo LIMIT 2, 4;


데이터 개수 알아내기

SELECT COUNT(*) FROM data;

특정조건에 해당되는 데이터 갯수 구하기.

SELECT COUNT(*) FROM data WHERE sex = 'F';


검색을 통해 데이터 가져오기

SELECT * FROM student WHERE name LIKE '인민%';


자료 업데이트 하기

UPDATE 테이블명 SET 컬럼 = 값, ... WHERE 조건문


자료 삭제하기

DELETE FROM 테이블명 WHERE 조건문;






*count
mysql> SELECT COUNT(*) FROM table_name;
해당 테이블의 전체 리스트 개수를 표시해준다.

count의 조건을 걸때는 뒤에 WHERE 조건; 을 해주면 된다.
ex) SELECT COUNT(*) FROM table_name WHERE sex='남';


* DISTINCT
mysql> SELECT DISTINCT address FROM table_name;
해당 테이블의 address값을 출력하되, 중복 되는 내용은 피한다.

응용>> SELECT COUNT(DISTINCT address) FROM table_name;


* GROUP BY
mysql> SELECT sex, COUNT(*) FROM table_name GROUP BY sex;
성별에 따라 그룹으로 묶어서 출력조건에 맞춰서 출력한다.

응용>> SELECT MONTH(birth) AS '월', MONTHNAME(birth) AS '월이름',
           COUNT(*) AS '개수'
           FROM table_name GROUP BY '월이름' ORDER BY '월';

변형>> SELECT MONTH(birth) AS '월', MONTHNAME(birth) AS '월이름',
           COUNT(*) AS '개수'
           FROM table_name GROUP BY 2 ORDER BY 1;
 -> 출력되는 순서를 번호로 매겨 사용할 수 있다.


* LIMIT
mysql> SELECT address FROM table_name GROUP BY 1 DESC LIMIT 3;
해당 테이블의 주소를 출력하되 최대 3개만 출력한다.


* MIN, MAX, SUM, AVG
mysql> SELECT MIN(marks) FROM table_name;
해당 테이블의 점수(marks)의 최소값을 구한다.
MAX = 최대값
SUM = 합한값
AVG = 평균값

MySQL Query(쿼리)문 모음

출처 : 하로기님의 블로그 ( http://harogipro.tistory.com/57 )


1. show databases; 는 데이터베이스들을 보여준다.
     create database 데이터베이스명 ; 은 데이터베이스를 생성한다.
     그러나 실제 mysql 관리자(서버관리자)가 아닌 이상 이 명령어를 사용할 수가 없다.
     호스팅업체에서 대개는 자신의 계정아이디와 동일한 DB하나만 서비스해주기 때문에
     직접 이 명령어를 사용하진 못한다.

사용자 삽입 이미지
2. use 데이터베이스 : 사용할 데이터 베이스를 선택한다. 실제 호스팅인 경우 바로
    바로 데이터베이스 안으로 접속되는 경우가 많다.
    show tables ;  테이블의 목록 출력
     - DB는 테이블 형태로 데이터가 저장된다.
사용자 삽입 이미지

테이블 생성
   create table 테이블 명 ( 컬럼명 데이터형식 널값여부 기타옵션);
  auto_increment 는 자동으로 번호를 증가시켜준다.
  primary key 는 고유값 설정으로 똑같은 값은 절대 받지 않는다는 뜻.

  *** mysql 각종 데이터형들
 tinyint 부호 있는 정수 -128 ~ 127
부호 없는 정수 0 ~255
1 Byte

SMALLINT 부호 있는 정수 -32768 ~ 32767
부호 없는 정수 0 ~65535
2 Byte

MEDIUMINT 부호 있는 정수 -8388608 ~ 8388607
부호 없는 정수 0 ~16777215
3 Byte

INT 또는 INTEGER 부호 있는 정수 -2147483648 ~ 2147483647
부호 없는 정수 0 ~4294967295
4 Byte

BIGINT 부호 있는 정수 -9223372036854775808 ~ 9223372036854775807
부호 없는 정수 0 ~18446744073709551615
8 Byte

FLOAT 단일 정밀도를 가진 부동 소수점
-3.402823466E+38 ~3.402823466E+38

DOUBLE 2 배 정밀도를 가진 부동 소수점
-1.79769313486231517E+308 ~ 1.79769313486231517E+308

DATE 날짜를 표현하는 유형
1000-01-01 ~ 9999-12-31

DATETIME 날짜와 시간을 표현하는 유형
1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

TIMESTAMP 1970-01-01 00:00:00 부터 2037년 까지 표현
4 Byte

TIME 시간을 표현하는 유형
-839:59:59 ~ 838:59:59

YEAR 년도를 표현하는 유형
1901 년 ~ 2155년

CHAR(M) 고정길이 문자열을 표현하는 유형
M = 1 ~255

VARCHAR(M) 가변길이 문자열을 표현하는 유형
M = 1 ~ 255

TINYBLOB
TINYTEXT 255개의 문자를 저장
BLOB : BINARY LARGE OBJECT의 약자

BLOB
TEXT 63535개의 문자를 저장

MEDIUMBLOB
MEDIUMTEXT 16777215개의 문자를 저장

LONGBLOB
LONGTEXT 4294967295(4Giga)개의 문자를 저장


 3. desc 테이블 명 ; 테이블의 각 컬럼 형식 보기

사용자 삽입 이미지


4. 데이터 입력하기
사용자 삽입 이미지

5.한꺼번에 데이터 입력하기

사용자 삽입 이미지

6. no 필드에 값을 입력하지 않아도 자동적으로 증가하는 것을 볼 수 있다.

사용자 삽입 이미지

7. 원하는 필드만 선택할때...

사용자 삽입 이미지

8. 조건으로 검색하기

사용자 삽입 이미지


9. 내림차순 정렬하기

사용자 삽입 이미지

10.오름차순정렬

사용자 삽입 이미지

11. 조건절과 정렬 함께 사용하기

사용자 삽입 이미지

12.데이터 수정하기(조건절이 없으면 전부 바뀐다.)

사용자 삽입 이미지

13. 데이터 삭제(조건이 없으면 전부 삭제된다)

사용자 삽입 이미지

14. 컬럼(필드) 추가해보기

사용자 삽입 이미지

15. 컬럼 삭제해보기

사용자 삽입 이미지

16. 컬럼 수정해보기

사용자 삽입 이미지


17. 테이블 삭제해보기

사용자 삽입 이미지

18. 합계 연습을 위해 임시 테이블 만들었음

사용자 삽입 이미지

19. 필드의 최대, 최소, 평균, 합계구해보기
    as 임시필드명 해주면 임시로 필드명이 생성된다.

사용자 삽입 이미지

20. 필드의 총 개수 구해보기

사용자 삽입 이미지

21. 한꺼번에 최대값과 합산값, 평균구하기.
     between 으로 범위값 내에 있는 필드 구하기
    in 으로 지정한 필드만 뽑아내기

사용자 삽입 이미지

22. not in 은 그것을 제외한 필드를 구한다.
     %는 like 와 함께 쓰이며 '%강%'은 강을 기준으로 강을 포함한 앞뒤문자검색을 해준다.

사용자 삽입 이미지

23. a 이후에 문자열 검색
     b 이전에 문자열 검색

사용자 삽입 이미지

24. limit는 레코드 처음부터 2개만 뽑아온다. 범위와 함께 쓰일 수도 있다.

사용자 삽입 이미지

25. limit 시작레코드번호, 뽑아올 레코드 갯수

사용자 삽입 이미지

26. 컬럼명 바꾸기(컬럼명을 바꿀땐 데이터도 같이 바꿔줘야 한다.)
     테이블 명 바꾸기....(아래참고)


사용자 삽입 이미지

27. 날짜형 데이터넣기
     now() 함수는 날짜를 가지고 있는 내장합수인데 선언한 데이터형에 따라 들어가는 값이
     아래처럼 다르게 들어간다.

사용자 삽입 이미지