2011-02-02 38 views
12

¿Cuáles son los comandos para habilitar y deshabilitar la distinción entre mayúsculas y minúsculas de manera predeterminada para una base de datos completa en un servidor MySQL? Soy consciente de la instrucción COLLATE, pero parece que es necesario colocar esto en cada instrucción SQL que se ejecuta. ¿Hay alguna opción para configurar esto globalmente?Cómo configurar MySQL para que distinga entre mayúsculas y minúsculas

+0

¿cuál es el contexto? p.ej. idioma en el que estás trabajando? – yoda

Respuesta

27

Puede establecer la intercalación tanto en la creación de la base de datos como en el nivel de creación de tabla como parte de la declaración CREATE TABLE.

Para establecer la intercalación de la base de datos, puede utilizar:

CREATE DATABASE test_database CHARACTER SET utf8 COLLATE utf8_general_cs; 

También puede cambiar la intercalación en una base de datos existente a través de ALTER DATABASE. (Para más información ver el MySQL Database Character Set and Collation entrada manual.)

Si sin embargo, sólo tiene que ser tratada como mayúsculas y minúsculas una sola tabla, simplemente podría utilizar:

DROP TABLE IF EXISTS test_table; 
CREATE TABLE test_table (
    test_id bigint unsigned NOT NULL auto_increment, 
    ... 

    PRIMARY KEY test_id (test_id), 
    ... 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE utf8_general_cs; 

(Caso insensible ser "utf8_general_ci" .)

Finalmente, la sección manual principal de MySQL Character Set Support merece una revisión rápida. (Lista el character sets and collations supported by MySQL, le dice cómo s et the character set/collation at the server level, etc.)

+6

Alternativamente, también se usa comúnmente 'utf8_bin'. – Unode

+0

@Unode Yup, utf8_bin no equivale a "á" a ", etc. –

+0

Junto a lo que dijo @middaparka y mi comentario anterior, debe tener cuidado con la clasificación ya que los caracteres acentuados no siempre se ordenan de la manera que usted los espera a. Sin embargo, la mayoría de estos problemas están relacionados con codificaciones específicas y configuraciones locales. (más allá del alcance de esta pregunta) – Unode

1

He venido aquí buscando modificar la intercalación solo para una columna específica para que sea sensible a mayúsculas y minúsculas y no para toda la tabla o el base de datos. Espero que ayude a alguien buscando solo esto.

Esta consulta podría ser juzgado:

ALTER TABLE table_name MODIFY column_name column_datatype COLLATE utf8_bin; 
Cuestiones relacionadas