728x90


개요

MySQL 의 default character set 은 MySQL 의 설정 파일에 설정할 수 있다.

배포판
위치
RHEL/CentOS /etc/my.cnf
Ubuntu /etc/mysql/mysql.conf.d/mysqld.cnf


명시적으로 설정하지 않으면 기본 캐릭터 셋은 latin1 이 된다. 현재 characterset 확인은 다음과 같이 mysql 클라이언트로 연결한 후에 status 명령어로 알수 있다.

또는 다음과 같이 mysql 콘솔에서 show variable 을 사용해도 된다.

mysql> show variables like 'char%';


redmine, gitlab 등 거의 모든 app 들은 charset 으로 UTF-8 을 권장하고 있고 실제로도 UTF-8 을 사용하는게 정신건강에 좋다.

MySQL 5.1 과 5.5 이상은 my.cnf 에 캐릭터 셋 설정하는 방식이 약간 다르다.


설정

MySQL 5.5 이상

MySQL 5.5 부터는 default-character-set 옵션이 제거되었고 character-set-server 만 설정해 주면 된다.

skip-character-set-client-handshake 가 빠지면 client 의 시스템 encoding 을 사용하는데 윈도의 경우 euckr 로 설정 될수 있으므로 필요하다.

MySQL 5.5
[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
skip-character-set-client-handshake


이제 service mysqld restart 로 재구동후에 mysql client 에서 status 명령어로 보면 charset 이 utf-8 로 변경되었을 것이다.


MySQL 5.1

5.1 은 다음과 같이 설정해야 한다.

MySQL 5.1
[mysqld]
character-set-server = utf8
  
[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8

UTF8-MB 

Emoji 는 기존 utf-8 로는 표현을 못하므로 MySQL에서 이모지를 저장하려면 4바이트의 가변 길이를 갖는 utf8mb4 캐릭터 셋을 사용해야 한다. (MySQL 5.5.3 이상 필요)

[mysqld]
collation-server = utf8mb4_unicode_ci
character-set-server = utf8mb4
skip-character-set-client-handshake


이미 기존에 만들어진 database 라면 alter database 명령어로 캐릭터 셋과 collate 를 변경할 수 있다.


character set 변경
ALTER DATABASE homestead CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;


같이 보기

Ref

utf8mb4_unicode_ci 

728x90

List stored procedures in MySQL

Posted in MySql - Last updated Oct. 05, 2011

This post shows how to get a complete list of stored procedures in a MySQL database and then to see what code is used in the stored procedure.

List MySQL stored procedures

Run the following SQL query either from the MySQL command line, or using a GUI tool like phpMyAdmin to get a complete list of stored procedures from all databases your login has access to:

SHOW PROCEDURE STATUS

To just list procedures from a particular database do this, where we want to query stored procedures from the "mydb_abc" database:

SHOW PROCEDURE STATUS WHERE Db = 'mydb'

The output from the above commands will look something like this:

+------+---------+-----------+---------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| Db   | Name    | Type      | Definer | Modified            | Created             | Security_type | Comment | character_set_client | collation_connection | Database Collation |
+------+---------+-----------+---------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+
| mydb | mysproc | PROCEDURE | root@%  | 2011-08-18 20:29:53 | 2011-08-18 20:29:53 | DEFINER       |         | utf8                 | utf8_general_ci      | latin1_swedish_ci  |
+------+---------+-----------+---------+---------------------+---------------------+---------------+---------+----------------------+----------------------+--------------------+

Show the SQL code in the stored procedure

Use the show create procedure query to get the SQL code from the query. To get it for the "mysproc" stored procedure in the example output above, do this:

SHOW CREATE PROCEDURE mysproc

This then gives you a few fields as a resultset and it's the "Create Procedure" column which has the procedure creation SQL.

728x90

두 날짜 사이의 날짜를 선택하는 SQL 쿼리sql


 Answers

지정된 시간 세그먼트가없는 날짜 시간은 date 00:00:00.000 의 값을 갖기 때문에 범위의 모든 날짜를 가져 오려면 종료 날짜의 시간을 제공하거나 종료 날짜를 늘려야합니다 < 사용하십시오.

select Date,TotalAllowance from Calculation where EmployeeId=1 
and Date between '2011/02/25' and '2011/02/27 23:59:59.999'

또는

select Date,TotalAllowance from Calculation where EmployeeId=1 
and Date >= '2011/02/25' and Date < '2011/02/28'

또는

select Date,TotalAllowance from Calculation where EmployeeId=1 
and Date >= '2011/02/25' and Date <= '2011/02/27 23:59:59.999'

시간이 00 : 00 : 00.000이면 2011/02/28의 일부 기록을 반환 할 수 있으므로 다음을 사용하지 마십시오.

select Date,TotalAllowance from Calculation where EmployeeId=1 
and Date between '2011/02/25' and '2011/02/28'
 Question

start_date 및 end_date 있습니다. 이 두 날짜 사이에 날짜 목록을 가져오고 싶습니다. 누군가 내 쿼리에서 실수를 지적하도록 도와 줄 수 있습니까?

select Date,TotalAllowance 
from Calculation 
where EmployeeId=1
  and Date between 2011/02/25 and 2011/02/27

여기서 Date 는 datetime 변수입니다.




select * from table_name where col_Date between '2011/02/25' 
AND DATEADD(s,-1,DATEADD(d,1,'2011/02/27'))

여기에 현재 endDate에 하루를 추가하면 2011-02-28 00:00:00 이되고 종료 날짜를 지정하려면 1 초를 뺍니다 2011-02-27 23:59:59 . 이렇게하면 주어진 간격 사이의 모든 날짜를 가져올 수 있습니다.

output:
2011/02/25
2011/02/26
2011/02/27



select * from test 
     where CAST(AddTime as datetime) between '2013/4/4' and '2014/4/4'

- 데이터 형이 다른 경우




# # 사이에 날짜를 넣어보십시오 :

#2013/4/4# and #2013/4/20#

그것은 나를 위해 일했습니다.




현재 날짜와 지난 3 일 사이의 선택 날짜에 대한 최상의 쿼리 :

  select Date,TotalAllowance from Calculation where EmployeeId=1 and Date BETWEEN       
DATE_SUB(CURDATE(), INTERVAL 3 DAY)  AND CURDATE() 

현재 날짜와 다음 3 일 사이의 선택 날짜에 대한 최상의 쿼리 :

  select Date,TotalAllowance from Calculation where EmployeeId=1 and Date BETWEEN   
   CURDATE()  AND DATE_ADD(CURDATE(), INTERVAL 3 DAY)   



아래를 확인하십시오. 예 : 근무 중이거나 비 근무 중입니다.

select * from tblUser Where    
convert(varchar(10),CreatedDate,111) between '2015/04/01' and '2016/04/01' //--**Working**

또는

select * from tblUser Where
(CAST(CreatedDate AS DATETIME) between CAST('2015/04/01' AS DATETIME) And CAST('2016/4/30'AS DATETIME)) //--**Working**

또는

select * from tblUser Where
(YEAR(CreatedDate) between YEAR('2015/04/01') And YEAR('2016/4/30')) 
//--**Working**

아래가 작동하지 않습니다.

select * from tblUser Where
Convert(Varchar(10),CreatedDate,111) >=  Convert(Varchar(10),'01-01-2015',111) and  Convert(Varchar(10),CreatedDate,111) <= Convert(Varchar(10),'31-12-2015',111) //--**Not Working**


select * from tblUser Where
(Convert(Varchar(10),CreatedDate,111) between Convert(Varchar(10),'01-01-2015',111) And Convert(Varchar(10),'31-12-2015',111)) //--**Not Working**



저는 '1 MonthName 2015'구문에 대해 날짜를 사용하고 싶습니다. 예 :

   WHERE aa.AuditDate>='1 September 2015'
     AND aa.AuditDate<='30 September 2015'

날짜


728x90

i've compiled mysql from source 5.5.24 and now i cannot run mysqltunner.
any idea?

@ghost ghost assigned major on 19 Jun 2012

@major
Owner

major commented on 19 Jun 2012

Try running:

which mysqladmin

If that doesn't work, try:

find / -name mysqladmin -type f

MySQLTuner checks for the mysqladmin executable in your path to see if it's installed.

@ch4mpignator

well,
it's stored in /usr/local/mysql/bin/mysqladmin.

my $command = /usr/local/mysql/bin/mysqladmin; - didn't solve my problem.

@TJM

TJM commented on 19 Jun 2012

PATH=$PATH:/usr/local/mysql/bin

@ch4mpignator

ok it works now!

@FaithNoMango

Apart from [!!] Unable to find mysqladmin in your $PATH. Is MySQL installed? it also says... 'which' is not recognized as an internal or external command, and I added mysql/bin to the path

@pllllllllll

I receive the same error ''Unable to find mysqladmin in your $PATH. Is MySQL installed?'

MySQL is on a stand alond server, seperate from my Windows//IIS webserver. What should my PATH look like, do I need the ip address of the database server ie PATH=$PATH:111.222.333.444//usr/local/mysql/bin ? Or should I install and run mysql tuner on the stand alone database server instead?

@TJM

TJM commented on 21 Nov 2013

mysqltuner should be run on the database server.

@pureche

i still dont get it, where should i put PATH=$PATH:/usr/local/mysql/bin?

i've tried

my $command = PATH=$PATH:/usr/local/mysql/bin;

but it says

Global symbol "$PATH" requires explicit package name at ./mysqltuner.pl line 252.
Execution of ./mysqltuner.pl aborted due to compilation errors (#1)

im a complete noob at this, please help me.

i used find / -name mysqladmin -type f, and the path is /usr/local/mysql/bin/mysqladmin

@major
Owner

major commented on 22 Feb 2014

Sorry for the long delay on this issue. You can use the --mysqladmin flag to specify the path to your custom path if needed:

  # perl mysqltuner.pl --help

     MySQLTuner 1.2.0 - MySQL High Performance Tuning Script
     Bug reports, feature requests, and downloads at http://mysqltuner.com/
     Maintained by Major Hayden (major@mhtx.net) - Licensed under GPL

     Important Usage Guidelines:
        To run the script with the default options, run the script without arguments
        Allow MySQL server to run for at least 24-48 hours before trusting suggestions
        Some routines may require root level privileges (script will provide warnings)
        You must provide the remote server's total memory when connecting to other servers

     Connection and Authentication
        --host <hostname>    Connect to a remote host to perform tests (default: localhost)
        --socket <socket>    Use a different socket for a local connection
        --port <port>        Port to use for connection (default: 3306)
        --user <username>    Username to use for authentication
        --pass <password>    Password to use for authentication
        --mysqladmin <path>  Path to a custom mysqladmin executable


'DB' 카테고리의 다른 글

List stored procedures in MySQL  (0) 2018.05.05
두 날짜 사이의 날짜를 선택하는 SQL 쿼리sql  (0) 2018.04.26
SQL Database Performance Tuning for Developers  (0) 2018.04.10
[MSSQL]sqlsrv_fetch_array  (0) 2018.02.05
[MSSQL]sqlsrv_execute  (0) 2018.02.05

+ Recent posts