Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

establecer cotejamiento con create table

Estas en el tema de establecer cotejamiento con create table en el foro de Mysql en Foros del Web. estoy creando una tabla mediante consola de phpmyadmin con el siguiente comando @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original use pruebas ##linea 1   create table ...
  #1 (permalink)  
Antiguo 16/07/2013, 10:59
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
establecer cotejamiento con create table

estoy creando una tabla mediante consola de phpmyadmin con el siguiente comando

Código MySQL:
Ver original
  1. use pruebas ##linea 1
  2.  
  3. create table tabla2( ##linea 3
  4.  
  5. par1 int (11) unsigned not null auto_increment, ##linea 5
  6.  
  7. par2 text (1000) not null character set latin1_spanish_ci, ##linea 7
  8.  
  9. primary key (par1) ##linea 9
  10.  
  11. )engine = innodb; ##linea 11
intento establecer el cotejamiento en latin1_spanish_ci pero me arroja el siguiente error que no comprendo, ¿alguien puede ayudarme?

Cita:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create table tabla2( par1 int (11) unsigned not null auto_increment, par2 ' at line 3
gracias!
  #2 (permalink)  
Antiguo 17/07/2013, 08:22
 
Fecha de Ingreso: abril-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 7
Respuesta: establecer cotejamiento con create table

Hola guardarmicorreo.

Asi es como me arroja la consola al momento de crear la misma tabla:

Código MySQL:
Ver original
  1. CREATE TABLE `tabla2` (
  2. `par2`  text NOT NULL ,
  3. PRIMARY KEY (`par1`)
  4. )
  5. DEFAULT CHARACTER SET=latin1 COLLATE=latin1_spanish_ci;

Vee si es que esto te sirve.

Saludos.
Max
  #3 (permalink)  
Antiguo 17/07/2013, 08:44
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: establecer cotejamiento con create table

SET es una sentencia de asignación de datos a variables, o bien la cláusula de asigación de UPDATE.
Para definir el charset o collation de un campo de la tabla se usa CHARACTER SET, que no es lo mismo.
Código MySQL:
Ver original
  1.     c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin
  2. );

Manual, por favor: http://dev.mysql.com/doc/refman/5.0/...ate-table.html
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 17/07/2013, 12:37
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: establecer cotejamiento con create table

entonces si he entendido bien

character set / charset es para establecer el conjunto de caracteres en toda la tabla y si queremos establecer alguna excepción en una columna entonces la especificamos en la columna con collate

¿correcto?
  #5 (permalink)  
Antiguo 17/07/2013, 13:24
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: establecer cotejamiento con create table

Cita:
y si queremos establecer alguna excepción en una columna entonces la especificamos en la columna con collate
Con ambos.
¿No se ve bien en el ejemplo?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 17/07/2013, 16:37
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: establecer cotejamiento con create table

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Con ambos.
¿No se ve bien en el ejemplo?
siento darle tantas vueltas, pero es que quiero aprender y si no lo tengo claro entonces no aprendo nada.


con este código el cotejamiento ¿quedaría establecido toda la tabla?

Código MySQL:
Ver original
  1.     c CHAR(20)
  2. ) CHARACTER SET = utf8 COLLATE = utf8_bin;

y con este código ¿quedaría solo para una columna?

Código MySQL:
Ver original
  1.     c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin
  2. );

y con este otro ¿le estaría dando un cotejamiento genérico para toda la tabla pero para una columna otro distinto?

Código MySQL:
Ver original
  1.     c CHAR(20) COLLATE latin1_spanish_ci
  2. ) CHARACTER SET = utf8;
  #7 (permalink)  
Antiguo 17/07/2013, 17:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: establecer cotejamiento con create table

En serio: ¿Te molestaste al menos en leer el link al manual de referencia que te puse?
Porque no hay mucho por donde dudar, una vez que lo lees...

Respecto a la columna:
Cita:
En MySQL 5.0, las definiciones de columnas de caracteres puede incluir un atributo CHARACTER SET para especificar el conjunto de caracteres y, opcionalmente, una colación para la columna. Para detalles, consulte Capítulo 10, Soporte de conjuntos de caracteres. CHARSET es sinónimo de CHARACTER SET.
Código MySQL:
Ver original
  1. CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
Respecto a las propiedades de la tabla:
Cita:
[DEFAULT] CHARACTER SET
Especifica el conjunto de caracteres para la tabla. CHARSET es un sinónimo para CHARACTER SET.

COLLATE
Especifica la colación por defecto de la tabla.
Y cuando sigues el link que está en ese párrafo del manual, puedes ver:

Cita:
10.3.3. Conjunto de caracteres y colación de tabla

Cada tabla tiene un conjunto de caracteres y colación que no pueden ser nulas. Los comandos CREATE TABLE y ALTER TABLE tienen cláusulas opcionales para especificar el conjunto de caracteres y la colación:
Código MySQL:
Ver original
  1. CREATE TABLE nombre_de_tabla (lista_de_columnas)
  2.     [DEFAULT CHARACTER SET nombre_de_conjunto_de_caracteres [COLLATE nombre_de_colación]]
  3.  
  4. ALTER TABLE nombre_de_tabla
  5.     [DEFAULT CHARACTER SET nombre_de_conjunto_de_caracteres] [COLLATE nombre_de_colación]
Ejemplo:
Código MySQL:
Ver original
  1. CREATE TABLE t1 ( ... )
  2.     DEFAULT CHARACTER SET latin1 COLLATE latin1_danish_ci;

MySQL elije el conjunto de caracteres y colación de la siguiente forma:

Si se especifican CHARACTER SET X y COLLATE Y , entonces el conjunto de caracteres es X y la colación Y.

Si se especifica CHARACTER SET X sin COLLATE, el conjunto de caracteres es X y la colación es la de defecto.

En cualquier otro caso, el conjunto de caracteres y colación son las del servidor.
Una cosa que vas a tener que acostumbrarte, al menos en lo que a Bases de Datos se refiere, es que siempre estamos leyendo el manual.
SIEMPRE.
Y por la más sencilla de las razones: La sintaxis de la estructura de datos en los DBMS es estricta, en todos los casos, y nadie se pone a memorizar algo que puede leerse en el manual.
Se lo escribe bien cuando lo hace todo el tiempo (y no se están creando tablas constantemente porque la estructura de datos es fija), y sino... al mataburros.
Así pues, acostúmbrate.

Crear consultas, es otra cosa. Allí sí hay margen para hacer experimentos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 17/07/2013 a las 17:11
  #8 (permalink)  
Antiguo 17/07/2013, 17:20
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: establecer cotejamiento con create table

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En serio: ¿Te molestaste al menos en leer el link al manual de referencia que te puse?
Porque no hay mucho por donde dudar, una vez que lo lees...

Respecto a la columna:


Respecto a las propiedades de la tabla:


Y cuando sigues el link que está en ese párrafo del manual, puedes ver:



Una cosa que vas a tener que acostumbrarte, al menos en lo que a Bases de Datos se refiere, es que siempre estamos leyendo el manual.
SIEMPRE.
Y por la más sencilla de las razones: La sintaxis de la estructura de datos en los DBMS es estricta, en todos los casos, y nadie se pone a memorizar algo que puede leerse en el manual.
Se lo escribe bien cuando lo hace todo el tiempo (y no se están creando tablas constantemente porque la estructura de datos es fija), y sino... al mataburros.
Así pues, acostúmbrate.

Crear consultas, es otra cosa. Allí sí hay margen para hacer experimentos.
ahhhhhh vale, ahora sí me quedó del todo claro.

el tip de que me acostumbre a leer el manual para todo en lo que a bd se refiere me vendrá de maravilla, erróneamente era mi siguiente paso, aprenderme la sintaxis.

gracias por la aclaración y perdón por las molestias :D

Etiquetas: cotejamiento, create, establecer, php, sql, tabla, table
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:22.