336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. MyISAM

 

  [ 장점 ]
    - 테이블에 ROW COUNT를 가지고 있어 selelct count(*) 쿼리가 빠름.

    - SELECT 빠름.

    - 풀 텍스트 인덱스 지원 : 검색 엔진과 유사한 방법으로 자연 언어를 이용해 특별한 인덱스로 모든 데이터 단어 저장.

 

  [ 단점]

    - row level locking 미지원으로 해당 Table에 Lock 걸림.

    - row 수 증가시 속도 매우 느려짐.

 

  Read Only 기능 많은 서비스에 적합.

2. InnoDB

 

  [ 장점 ]

    - row level locking 지원.

 

  [ 단점]

    - 풀 텍스트 인덱스 미지원

 

  트랜잭션 처리 필요한 대용량 데이터에 유리.

 

3. MyISAM 테이블과 InnodDB 테이블 조인시 충돌 가능.

 

감사합니다.

 

 

출처 : rebeccajo.tistory.com/14

Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

대용량 테이블의 성능에 영향을 줄일 수 있는 10가지 방법


1. MyISAM 대신에 InnoDB를 사용하자. MyISAM은 테이블의 마지막에 insert하는 경우에는 속도가 빠르지만, 테이블 잠금(update 및 delete에 제한 되지만)이 있고, 데이터를 디스크에서 읽기와 쓰기를 할 때 경합 때문에 키 버퍼를 보호하기 위해 싱글락을 사용한다. 또한 후술하겠지만, 체인지 버퍼 기능을 가지고 있지 않다.


2. InnoDB는 유니크하지 않은 보조 인덱스의 빌딩을 지연시키는 체인지 버퍼 기능(이전에 insert buffer라고 불리던 기능)을 가지고 있다. 이에 대한 자세한 것은 Facebook의 노트에 기술되어 있다. 이것은 위의 그래프에는 보여지지 않지만, insert의 성능을 상당히 빠르게하는 것으로, 기본적으로 활성화되어 있다. 이 기능은 MySQL 5.5에서 좋게 개선 되었기 때문에, 만약 업그레이드 하지 않는 경우에는 즉시하는 것이 좋다.


3. 파티셔닝은 인덱스의 크기를 작게하여 테이블 자체를 효율적으로 작게 나눌 수 있게 된다. 또한, MySQL 5.7.2 DMR에서 상당히 개선된 내부적인 인덱스 잠금(index->lock) 경합(contention)도 줄여 준다.


4. InnoDB의 압축 기능을 사용하자. 몇몇 부하 종류의(특별히 많은 char/varchar/text형 컬럼이있는 경우) 압축 기능은 데이터를 압축해 성능 저하의 곡선을 완만하게 해준다. 또한, 일반적으로 용량이 작은 SSD를 사용해도 된다. InnoDB의 압축 기능은 Facebook에서 제공한 여러가지 패치 덕택에 MySQL 5.6에서는 크게 개선 되었다.


5. 정렬후 대용량의 데이터를 테이블에 로드해라. 정렬된 데이터를 인서트하는 것은, 페이지 분할(메모리 상에 없는 테이블에서 성능은 악화되는)이 작게 될 것이고, 대용량 데이터의 로드는 테이블의 용량과는 특별히 관계가 없지만, redo 로그의 압축 부하를 줄여주는데 도움을 준다.


6. 테이블에서 불필요한 인덱스를 지우자. 체인지 버퍼 기능을 비활성화시키는 UNIQUE 키를 특히 주의하자. 제약 조건을 사용할 이유가 없는 경우, UNIQUE 키를 사용하지 않고 일반적인 INDEX를 사용하자.


7. 5, 6에서 관련된 PRIMARY KEY의 종류도 중요하다. 성능 저하를 빠르게 만들어버리는 GUID와 같은 데이터 타입보다, INT나 BIGINT를 사용하자. PRIMERY KEY가 없는 것도 성능에 부정적인 영향을 준다.


8. 새 테이블에 대용량 데이터를 로드할 경우 PRIMARY KEY가 아닌 인덱스는 나중에 만들자. 모든 데이터가 로드된 후 인덱스를 만든다면, InnoDB는 pre-sort와 및 대용량 로드 프로세스(빠르고 인덱스가 좀 더 콤팩트한 인덱스를 만드는)를 적용 할 수 있게 된다. 이 최적화는 MySQL 5.5에서 이루어졌다.


9. 메모리가 많으면 많을수록 도움을 받을 수 있다. 최근의 메모리의 실제 가격을 비교해 보면 새로운 데이터 베이스 서버에 너무 적은 메모리를 적용하는 것을 자주 볼 수 있다. 간단한 조언을 해 보면, SHOW ENGINE INNODB STATUS의 결과에서 BUFFER POOL AND MEMORY의 reads/s의 보여주고(읽고 있음을 나타냄), Free buffers(이것도 BUFFER POOL AND MEMORY 아래에 있다)의 수가 0이면 메모리를 더 늘리면 혜택이 얻을 수 있다.(innodb_buffer_pool_size를 잘 최적화했다는 가정하에. 이 문서를 참고).


10. 메모리 뿐만 아니라, SSD도 도움이 된다. 그래프의 곡선이 하향이 되는 이유는 테이블이 커져서 일어나는 IO 속성 때문이다. 하드 디스크가 초당 200 오퍼레이션(IOPS)을 수행하는데 반해, 일반적인 SSD는 20000 IOPS 이상 수행이 가능하다

'IT > MySQL' 카테고리의 다른 글

Mysql MyISAM과 InnoDB 차이점.  (0) 2021.02.08
MySQL 파일 위치.  (0) 2018.08.16
mysql order by field  (0) 2018.03.29
MyISAM, InnoDB 비교  (0) 2018.01.30
MySQL Object(Stored Procedure, Function) 실행시 접근 문제  (0) 2018.01.17
Posted by 당양부부34

2018. 8. 16. 11:51 IT/MySQL

MySQL 파일 위치.

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. 설치 경로.


MySQL에서 디폴트 데이터 디렉터리의 위치는 서버에 컴파일 될 때 정해진다.


[ UNIX  ]

소스 설치 : /usr/local/mysql/var

바이너리 배포 설치 : /usr/local/mysql/data

RPM 설치 : /var/lib/mysql


가 디폴트 설치 경로이다.


[설치된 위치 찾는 법]


  - mysqladmin variables

% mysqladmin variables 

+---------------+-----------------------+ 

| Variable_name     | Value                         | 

+---------------+-----------------------+

| datadir | /usr/local/mysql/var/ |

+---------------+-----------------------+


  - SHOW VARIABLES

mysql> SHOW VARIABLES LIKE 'datadir'; 

+---------------+-----------------------+ 

| Variable_nam      |  Value                        | 

+---------------+---------------------+ | 

datadir               | /usr/local/mysql/var/        | 

+---------------+-----------------------+


감사합니다.

Posted by 당양부부34

2018. 3. 29. 15:40 IT/MySQL

mysql order by field

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

testbl 이라는 테이블이 있다.


mysql> select * from testbl;

+-----+------+------+--------+

| sid | ssid | sort | status |

+-----+------+------+--------+

|   1 | aa   |   23 | e      |

|   2 | aa   |   11 | e      |

|   3 | aa   |   33 | e      |

|   4 | aa   |   32 | e      |

|   5 | bb   |   23 | a      |

|   6 | bb   |   67 | c      |

|   7 | bb   |   34 | a      |

|   8 | bb   |   77 | d      |

|   9 | cc   |   11 | a      |

|  10 | cc   |   22 | a      |

|  11 | cc   |   32 | d      |

|  12 | cc   |   23 | c      |

+-----+------+------+--------+

12 rows in set (0.00 sec)


이 테이블로 몇가지를 해볼 참이다.

일단, 우리가 흔히 쓰는 order by 로 나온 결과를 정렬 할때, 일정한 순서가 아닌 임의로 정한 순서대로 보여주려면 아래와 같이 하면 된다.


mysql> select * from testbl where sid in (3,4,1)  order by field (sid, 3, 4, 1);

+-----+------+------+--------+

| sid | ssid | sort | status |

+-----+------+------+--------+

|   3 | aa   |   33 | e      |

|   4 | aa   |   32 | e      |

|   1 | aa   |   23 | e      |

+-----+------+------+--------+

3 rows in set (0.00 sec)


order by field ( 컬럼명, "순서1", "순서2", .... ) 와 같은 방법으로 원하는 순서를 직접 지정 할 수 있다.


하지만, 이렇게 원하는 순서대로 뽑아내려는 때는 보통... 기존에 있던건 그대로 보여주고 원하는 결과만 위로 보여줘야 할때가 대부분일 것이다.(필자는 그랬다.)

그럴땐 union을 쓰면 된다. 


mysql> (select * from testbl where sid in (3,4,1)  order by field (sid, 3, 4, 1))

union 

(select * from testbl where sid < 9 );

+-----+------+------+--------+

| sid | ssid | sort | status |

+-----+------+------+--------+

|   1 | aa   |   23 | e      |

|   3 | aa   |   33 | e      |

|   4 | aa   |   32 | e      |

|   2 | aa   |   11 | e      |

|   5 | bb   |   23 | a      |

|   6 | bb   |   67 | c      |

|   7 | bb   |   34 | a      |

|   8 | bb   |   77 | d      |

+-----+------+------+--------+

8 rows in set (0.00 sec)


위의 쿼리문에서 union으로 조금 더 뽑아 와봤다. 그런데... 정렬이 엉망이다. 위에서 order by를 썼는데도 먹혀 있지도 않다. 그 이유는 "UNION은 레코드 집합을 순서 없이 만들게 되기 때문에 최종 결과에서 레코드들이 어떻게 나타나야 하는지 순서에 관해 아무것도 암시 하지 않는다." 라는.. 한마디로 union으로 합치면 순서는 멋대로 정해진다 라는 거다.

그래서 이럴때는 뽑아온 대상에 대해서 정렬을 해줘야 한다.


mysql> (select * from testbl where sid in (3,4,1)) 

union 

(select * from testbl where sid < 9 ) 

order by field (sid, 3, 4, 1);

+-----+------+------+--------+

| sid | ssid | sort | status |

+-----+------+------+--------+

|   5 | bb   |   23 | a      |

|   2 | aa   |   11 | e      |

|   8 | bb   |   77 | d      |

|   7 | bb   |   34 | a      |

|   6 | bb   |   67 | c      |

|   3 | aa   |   33 | e      |

|   4 | aa   |   32 | e      |

|   1 | aa   |   23 | e      |

+-----+------+------+--------+

8 rows in set (0.00 sec)


위처럼 해놓으면 3, 4, 1로 정렬 된 것이 보일 것이다. 하지만, 여전히 부족하다. 나머지 순서들이 엉망인데다가, 필자는 3, 4, 1이 맨 위에서 뽑혀지길 원했기 때문이다.

이럴때는 아래와 같이 하면 된다.


mysql> (select * from testbl where sid in (3,4,1)) 

union 

(select * from testbl where sid < 9 ) 

order by field (sid, 1, 4, 3) desc, sid;

+-----+------+------+--------+

| sid | ssid | sort | status |

+-----+------+------+--------+

|   3 | aa   |   33 | e      |

|   4 | aa   |   32 | e      |

|   1 | aa   |   23 | e      |

|   2 | aa   |   11 | e      |

|   5 | bb   |   23 | a      |

|   6 | bb   |   67 | c      |

|   7 | bb   |   34 | a      |

|   8 | bb   |   77 | d      |

+-----+------+------+--------+

8 rows in set (0.00 sec)


유의할점은 desc로 뽑아주기 때문에 기존에 3,4,1로 해놓았던 순서를 1,4,3으로 해놓아야 원하는 결과물을 얻을 수 있다는 거다.


뭐.. 공지사항 같은거 처리할때 꾀 쓸만할꺼 같다..



출처 : http://b1ix.net/93

Posted by 당양부부34

2018. 1. 30. 16:59 IT/MySQL

MyISAM, InnoDB 비교

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

MySQL의 MyISAM과 InnoDB를 비교해 드립니다.

        
 

1. MyISAM

 

 MyISAM은 ISAM(Indexed Sequential Access Method) 의 단점을 보완하기 위해 나온 업그레이드 버젼으로, 이 엔진은 비-트랜젝션-세이프(non-transactional-safe) 테이블을 관리합니다.

       

MyISAM은 후에 소개하는 InnoDB에 비하여 별다른 기능이 없으므로 데이터 모델 디자인이 단순하다는 것이 장점입니다.

따라서 전체적으로 속도가 InnoDB 보다 빠릅니다. 특히 Select 작업 속도가 빠르므로 읽기 작업에 적합합니다!

Full-text 인덱싱이 가능하여 검색하고자 하는 내용에 대한 복합검색이 가능하답니다.

       

But! 그러나 데이터 무결성에 대한 보장이 되지 않습니다. MyISAM을 쓸 때의 무결성은 개발자나 DBA가 해야 합니다 ㅠ_ㅠ
또한 트랜잭션에 대한 지원이 없기 때문에 작업도중 문제가 생겨도 이미 작성된 내용들은 DB로 쏙 들어가버립니다.

가장 강조되는 단점으로는 Table-level Lock을 사용하기 때문에 쓰기 작업(INSERT, UPDATE) 속도가 느립니다.

변경을 많이 요하는 작업이라면 Table 단위의 Lock을 사용하는 MyISAM의 사용을 권하지 않습니다.

이렇게 기능이 없다니… 빠르기라도 해야겠네영!

       

따라서 MyISAM의 사용이 적합한 곳은 트랜잭션 처리가 불필요하며,

위에서 언급한 것 처럼 Select의 속도가 빠르므로 주로 조회작업이 많은 경우에 사용됩니다.

     

   

2. InnoDB

       

MyISAM과는 달리 InnoDB는 트랜잭션을 지원하므로 트랜잭션-세이프 스토리지 엔진에 해당됩니다.

Commit, Rollback, 장애복구, row-level locking, 외래키 등 다양한 기능을 지원합니다!

MyISAM의 부족했던 기능에 실망했던 사람들이라면 InnoDB로 갈아탔겠죠?

        

InnoDB의 장점을 살펴보면, 우선 데이터 무결성에 대한 보장이 됩니다.

제약조건, 외래 키의 생성이 가능하며, 동시성 제어가 가능합니다.

특히 MyISAM이 Table 단위의 Lock이었다면 InnoDB는 Row-level Lock (행 단위 Lock) 을 사용하기 때문에

변경 작업(INSERT, UPDATE, DELETE)에 대한 속도가 빠르다는 것이 큰 장점입니다.

       

그러나, 이렇게 여러가지 기능을 제공하다보니 InnoDB의 데이터 모델 디자인에는 많은 시간이 필요합니다.

또한 시스템 자원을 많이 사용한다는 단점 또한 가지고 있습니다. Full-text 인덱싱이 불가능하다는 것 역시 단점으로 보여집니다.

       

InnoDB의 경우는 트랜잭션 처리가 필요한 작업을 수행하며, 데이터 입력 및 수정과 같이 변경이 빈번한!

높은 퍼포먼스를 요구하는 대용량 사이트 등에서 효율적으로 사용될 수 있습니다.

       

        
이 두 종류의 DB를 함께 사용할 수 있을까요?

물론 함께 사용할 수는 있습니다. 하지만 백업 방법에 차이가 있어,

백업이 번거로워지고 Lock에 대한 Level이 다르기 때문에 사용에 문제가 생길 수 있다고 봅니다.


 

위의 내용을 표로 정리해봅시당

  

  

MyISAM

InnoDB

출시일자

더 먼저 출시됨 

이후에 출시 됨 

구조의 복잡성

지원하는 기능이 별로 없어서

구조가 단순하다.

  

외래키, 제약조건, 동시성 제어 등

다양한 기능 지원으로 구조가 복잡. 

기능 지원

Full-text 인덱싱 가능 

외래 키, 제약 조건, 동시성 제어,

트랜잭션 등에 대한 지원!

  

Lock의 단위

Table Level-Lock 

Row Level-Lock 

복구 능력

나쁨 

좋음 



출처 : http://ojava.tistory.com/25

Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. 기존 Procedure 확인하기


show procedure status;


 


2. definer 변경하기


update mysql.proc set definer='username@%' where db = 'dbname';


'IT > MySQL' 카테고리의 다른 글

mysql order by field  (0) 2018.03.29
MyISAM, InnoDB 비교  (0) 2018.01.30
MySQL 테이블 정보 및 테이블 컬럼 가져오기. 컬럼 합치기.  (0) 2018.01.16
Mysql db_helper  (0) 2017.01.31
MySQL 내장 함수. 숫자 함수, 문자 함수.  (0) 2017.01.20
Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1 테이블 검색.


select * from INFORMATION_SCHEMA.tables 

where table_schema='계정명';

 → show tables;


2. 컬럼 검색.

select * from INFORMATION_SCHEMA.columns 

where table_schema='계정명' 

and table_name='테이블명' 

order by ordinal_position;

 →  show full columns from 테이블명;


3. 컬럼명 한줄로 합치기.

select GROUP_CONCAT(column_name, ' ') from INFORMATION_SCHEMA.columns 

where table_schema='계정명' 

and table_name='테이블명' 


만약 GROUP_CONCAT size 문제로 데이터가 잘릴 경우

  3.1. GROUP_CONCAT size 조회.

  show variables like 'group_concat_max_len';


  3.2. GROUP_CONCAT size 설정.

  SET @@group_concat_max_len = 2048 ; 



'IT > MySQL' 카테고리의 다른 글

MyISAM, InnoDB 비교  (0) 2018.01.30
MySQL Object(Stored Procedure, Function) 실행시 접근 문제  (0) 2018.01.17
Mysql db_helper  (0) 2017.01.31
MySQL 내장 함수. 숫자 함수, 문자 함수.  (0) 2017.01.20
Mysql 세자리 콤마 찍기.  (0) 2016.11.16
Posted by 당양부부34

2017. 1. 31. 10:30 IT/MySQL

Mysql db_helper

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

<?php

    // DATABASE 접속객체

    $_DB = false;


    /**

     * 데이터베이스에 접속한다.

     */

    function db_open()

    {

        // 함수 밖에서 정의된 변수에 접근할 수 있도록 설정.

        global $_DB;


        /* 데이터베이스에 접속하기 위한 정보 정의하기 */

        $db_hostname = 'localhost';

        $db_database = 'testdb';

        $db_username = 'root';

        $db_password = 'root';

        $db_portnumber = 3306;

        $db_charset = 'utf8';


        /* 데이터베이스 접속 처리 */

        if ($_DB === false) {

            $_DB = @mysqli_connect($db_hostname, $db_username, $db_password,

                $db_database, $db_portnumber);


            // 에러가 존재한다면?

            if (mysqli_connect_errno()) {

                // 에러메시지 출력하기

                printf("<div style='padding: 15px; margin: 10px;

                            border: 1px solid #dca7a7; border-radius: 4px;

                            color: #a94442; background-color: #f2dede;'>

                        <strong>[Error: %d]</strong> %s</div>",

                        mysqli_connect_errno(), mysqli_connect_error());

                // 웹 페이지 실행중단

                exit();

            } else {

                // 케릭터셋 설정하기

                @mysqli_set_charset($_DB, $db_charset);

            }

        }

    }


    /**

     * 데이터베이스 접속을 해제한다.

     */

    function db_close()

    {

        global $_DB;


        if ($_DB !== false) {

            /* 접속 해제 */

            @mysqli_close($_DB);

        }

    }


    /**

     * SQL구문을 실행한 후 결과를 리턴한다.

     *

     * @param   $sql    - SQL구문의 템플릿. 변수로 치환할 곳은 %s, %d등의 이스케이프 문자를 사용한다.

     * @param   $params - $sql변수 내의 이스케이프 문자를 치환하기 위한 배열.

     *

     * @return 1) SQL구문에 에러가 있는 경우 FALSE가 리턴된다.

     *            2) SELECT문을 실행한 경우 -> 조회결과가 배열로 변환되어 리턴된다.

     *            3) INSERT문을 실행한 경우 -> 자동증가 일련번호값이 리턴된다.

     *            4) UPDATE,DELETE 문을 실행한 경우 -> 영향을 받은 행의 수가 리턴된다.

     */

    function db_query($sql, $params)

    {

        global $_DB;


        // 파라미터가 배열로 전달된 경우 배열의 각 요소에 SQL 특수문자 처리

        if (is_array($params)) {

            for ($i = 0; $i < count($params); ++$i) {

                $params[$i] = mysqli_real_escape_string($_DB, $params[$i]);

            }

            $sql = vsprintf($sql, $params);

        }


        // 쿼리 실행

        $result = @mysqli_query($_DB, $sql);


        // 에러 체크

        if (mysqli_errno($_DB)) {

            printf("<div style='padding: 15px; margin: 10px;

                        border: 1px solid #dca7a7; border-radius: 4px;

                        color: #a94442; background-color: #f2dede;'>

                    <strong>[SQL Error: %d]</strong> %s

                    <blockquote style='padding: 0 0 0 5px; margin: 10px 0 0 5px;

                        border-left: 3px solid #dca7a7'>

                        <i><small>%s</small></i></blockquote></div>",

                    mysqli_errno($_DB), mysqli_error($_DB), $sql);


            return false;

        }


        // SQL 구문 종류 분석

        $query_type = substr(strtolower(trim($sql)), 0, 6);


        // 구분 종류에 따라서 처리결과를 생성한다.

        $value = false;


        switch ($query_type) {

            case 'insert':

                // 자동증가 일련번호 값 리턴하기

                $value = mysqli_insert_id($_DB);

                break;

            case 'delete':

            case 'update':

                // 영향을 받은 행의 수 리턴하기

                $value = mysqli_affected_rows($_DB);

                break;

            case 'select':

                // 조회결과를 배열로 변환하여 리턴

                // MYSQLI_ASSOC, MYSQLI_NUM, MYSQLI_BOTH

                $value = mysqli_fetch_all($result, MYSQLI_ASSOC);

                break;

        }


        // 처리결과 리턴

        return $value;

    }

?>

Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

오늘은 MySQL 내장 함수, 숫자 함수, 문자 함수에 대해 포스팅 합니다.


1. 숫자 관련 함수 

  - ABS(숫자) - 절대값 출력. 

  - CEILING(숫자) - 값보다 큰 정수 중 가장 작은 수. 

  - FLOOR(숫자) - 값보다 작은 정수 중 가장 큰 수[실수를 무조건 버림(음수일 경우는 제외)]. 

  - ROUND(숫자,자릿수) - 숫자를 소수점 이하 자릿수에서 반올림.(자릿수는 양수,0,음수를 갖을 수 있다.) 

  - TRUNCATE(숫자,자릿수) - 숫자를 소수점 이하 자릿수에서 버림. 

  - POW(X,Y) or POWER(X,Y) - X의 Y승 

  - MOD (분자, 분모) - 분자를 분모로 나눈 나머지를 구한다.(연산자 %와 같음) 

  - GREATEST(숫자1,숫자2,숫자3...) - 주어진 수 중 제일 큰 수 리턴. 

  - LEAST(숫자1,숫자2,숫자3...) - 주어진 수 중 제일 작은 수 리턴. 

  - INTERVAL(a,b,c,d.....) - a(숫자)의 위치 반환 


2. 문자 관련 함수 

  - ASCII(문자) - 문자의 아스키 코드값 리턴. 

  - CONCAT('문자열1','문자열2','문자열3'...) - 문자열들을 이어준다. 

  - INSERT('문자열','시작위치','길이','새로운문자열') - 문자열의 시작위치부터 길이만큼 새로운 문자열로 대치 

  - REPLACE('문자열','기존문자열','바뀔문자열') - 문자열 중 기존문자열을 바뀔 문자열로 바꾼다. 

  - INSTR('문자열','찾는문자열') - 문자열 중 찾는 문자열의 위치값을 출력 

  - LEFT('문자열',개수) - 문자열 중 왼쪽에서 개수만큼을 추출.

  - RIGHT('문자열',개수) - 문자열 중 오른쪽에서 개수만큼을 추출. 

  - MID('문자열',시작위치,개수) - 문자열 중 시작위치부터 개수만큼 출력 

  - SUBSTRING('문자열',시작위치,개수) - 문자열 중 시작위치부터 개수만큼 출력 

  - LTRIM('문자열') - 문자열 중 왼쪽의 공백을 없앤다. 

  - RTRIM('문자열') - 문자열 중 오른쪽의 공백을 없앤다. 

  - TRIM('문자열') - 양쪽 모두의 공백을 없앤다. 

  - LCASE('문자열') or LOWER('문자열') - 소문자로 바꾼다. 

  - UCASE('문자열') or UPPER('문자열') - 대문자로 바꾼다. 

  - REVERSE('문자열') - 문자열을 반대로 나열한다. 


3. 논리 관련 함수 

  - IF(논리식,참일 때 값,거짓일 때 값) - 논리식이 참이면 참일 때 값을 출력하고 논리식이 거짓이면 거짓일 때 출력한다. 

  - IFNULL(값1,값2) - 값1이 NULL 이면 값2로 대치하고 그렇지 않으면 값1을 출력 


4. 집계 함수 

  - COUNT(필드명) - NULL 값이 아닌 레코드 수를 구한다. 

  - SUM(필드명) - 필드명의 합계를 구한다. 

  - AVG(필드명) - 각각의 그룹 안에서 필드명의 평균값을 구한다. 

  - MAX(필드명) - 최대값을 구한다. 

  - MIN(필드명) - 최소값을 구한다. 


5. 날짜 관련 함수 

  - NOW() or SYSDATE() or CURRENT_TIMESTAMP() - 현재 날짜와 시간 출력 

  - CURDATE() or CURRENT_DATE() -현재 날짜 출력 

  - CURTIME() or CURRENT_TIME() -현재 시간 출력 

  - DATE_ADD(날짜,INTERVAL 기준값) -날짜에서 기준값 만큼 더한다. 

※ 기준값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND 

  - DATE_SUB(날짜,INTERVAL 기준값) -날짜에서 기준값 만큼 뺸다. 

※ 기준값 : YEAR, MONTH, DAY, HOUR, MINUTE, SECOND 

  - YEAR(날짜) -날짜의 연도 출력. 

  - MONTH(날짜) -날짜의 월 출력. 

  - MONTHNAME(날짜) -날짜의 월을 영어로 출력. 

  - DAYNAME(날짜) -날짜의 요일일 영어로 출력. 

  - DAYOFMONTH(날짜) -날짜의 월별 일자 출력. 

  - DAYOFWEEK(날짜) -날짜의 주별 일자 출력(월요일(0),화요일(1)...일요일(6)) 

  - WEEKDAY(날짜) -날짜의 주별 일자 출력(월요일(0),화요일(1)...일요일(6)) 

  - DAYOFYEAR(날짜) -일년을 기준으로 한 날짜까지의 날 수. 

  - WEEK(날짜) -일년 중 몇 번쨰 주. 

  - FROM_DAYS(날 수) --00년 00월 00일부터 날 수 만큼 경과한 날의 날짜 출력. 

  - TO_DAYS(날짜) --00 년 00 월 00일 부터 날짜까지의 일자 수 출력. 

  - DATE_FORMAT(날짜,'형식') : 날짜를 형식에 맞게 출력 


감사합니다.


'IT > MySQL' 카테고리의 다른 글

MySQL 테이블 정보 및 테이블 컬럼 가져오기. 컬럼 합치기.  (0) 2018.01.16
Mysql db_helper  (0) 2017.01.31
Mysql 세자리 콤마 찍기.  (0) 2016.11.16
Mysql 수학 함수  (0) 2016.11.03
mysqlbinlog query 보기  (0) 2016.07.15
Posted by 당양부부34
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

MySQL 세자리 콤마 필요시 FORMAT 함수를 이용.

FORMAT(컬럼명, 소수점이하 자리수)


SELECT FORMAT(price , 0) FROM product;



'IT > MySQL' 카테고리의 다른 글

Mysql db_helper  (0) 2017.01.31
MySQL 내장 함수. 숫자 함수, 문자 함수.  (0) 2017.01.20
Mysql 수학 함수  (0) 2016.11.03
mysqlbinlog query 보기  (0) 2016.07.15
Mysql Binary log(bin log).  (0) 2016.07.15
Posted by 당양부부34
이전버튼 1 2 3 4 이전버튼

블로그 이미지
주요 토렌트를 블로깅하고 있습니다. 토렌트 순위 등은 다른 사이트를 찾아보세요. 주요 웹툰 순위도 게재했어요 경제를 좋아하는 일산의 행복한 프로그래머입니다.
당양부부34
Yesterday
Today
Total

달력

 « |  » 2024.3
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함