Вы находитесь на странице: 1из 17

TUTORIAL BSICO MYSQL

Autor: MySQL AB
http://www.mysql.com
Fuente: MySQLHispano
http://www.mysql-hispano.org
Introduccin
El objetivo de este tutorial es mostrar el uso del programa cliente mysql para crear y usar una
sencilla base de datos. mysql (algunas veces referido como "monitor mysql") es un programa
interactivo que permite conectarnos a un servidor MySQL ejecutar algunas consultas y ver los
resultados. mysql puede ser usado tambi!n en modo batc"# es decir se pueden colocar toda una
serie de consultas en un arc"ivo y posteriormente decirle a mysql que ejecute dic"as consultas.
Este tutorial asume que mysql est$ instalado en alguna m$quina y que disponemos de un servidor
MySQL al cu$l podemos conectarnos. Si este no es el caso tenemos que contactar con nuestro
administrador MySQL. (Si nosotros somos los administradores es necesario consultar la
documentaci%n de MySQL que se refiere a la instalaci%n y configuraci%n del servidor MySQL).
&ara ver la lista de opciones proporcionadas por mysql lo invocamos con la opci%n ''"elp#
shell> mysql --help
( continuaci%n se describe el proceso completo de creaci%n y uso de una base de datos en MySQL.
Si se est$ interesado s%lo en el acceso y uso de una base de datos e)istente se pueden omitir las
secciones que describen como crear la base de datos y las tablas correspondientes.
&uesto que es imposible que se describan a detalle muc"os de los t%picos cubiertos en este
art*culo se recomienda que se consulte el manual de MySQL para obtener m$s informaci%n al
respecto.
Conectndose y desconectndose al servidor MySQL
&ara conectarse al servidor usualmente necesitamos de un nombre de usuario (login) y de una
contrase+a (pass,ord) y si el servidor al que nos deseamos conectar est$ en una m$quina
diferente de la nuestra tambi!n necesitamos indicar el nombre o la direcci%n -& de dic"o servidor.
.na ve/ que conocemos estos tres valores podemos conectarnos de la siguiente manera#
shell> mysql -h NombreDelServidor -u NombreDeUsuario -p
0uando ejecutamos este comando se nos pedir$ que proporcionemos tambi!n la contrase+a para
el nombre de usuario que estamos usando.
Si la cone)i%n al servidor MySQL se pudo establecer de manera satisfactoria recibiremos el
mensaje de bienvenida y estaremos en el prompt de mysql#
shell>mysql -h casita -u blueman -p
Enter password: ******
Welcome to the yS!" monitor# $ommands end with % or &'#
(our yS!" connection id is ))*+ to server version: +#,+#-.
/ype 0help%0 or 0&h0 1or help# /ype 0&c0 to clear the bu11er#
mysql>
Este prompt nos indica que mysql est$ listo para recibir comandos.
(lgunas instalaciones permiten que los usuarios se conecten de manera an%nima al servidor
corriendo en la m$quina local. Si es el caso de nuestra m$quina debemos de ser capaces de
conectarnos al servidor invocando a mysql sin ninguna opci%n#
shell> mysql
1espu!s de que nos "emos conectado de manera satisfactoria podemos desconectarnos en
cualquier momento al escribir "quit" "e)it" o presionar 023452L61.
La mayor*a de los ejemplos siguientes asume que estamos conectados al servidor lo cual se indica
con el prompt de mysql.
Ejecutando algunas consultas
En este momento debimos de "aber podido conectarnos ya al servidor MySQL a7n cuando no
"emos seleccionado alguna base de datos para trabajar. Lo que "aremos a continuaci%n es escribir
algunos comandos para irnos familiari/ando con el funcionamiento de mysql
mysql> SE"E$/ 2E3S45N678 $U33EN/9D:/E%
;-----------;--------------;
< 2E3S45N67 < $U33EN/9D:/E <
;-----------;--------------;
< +#,+#-. < ,==,-.=-=. <
;-----------;--------------;
. row in set 6=#=+ sec7
mysql>
Este comando ilustra distintas cosas acerca de mysql#
.n comando normalmente consiste de un sentencia SQL seguida por un punto y coma.
0uando emitimos un comando mysql lo manda al servidor para que lo ejecute nos muestra
los resultados y regresa el prompt indicando que est$ listo para recibir m$s consultas.
mysql muestra los resultados de la consulta como una tabla (filas y columnas). La primera
fila contiene etiquetas para las columnas. Las filas siguientes muestran los resultados de la
consulta. 3ormalmente las etiquetas de las columnas son los nombres de los campos de las
tablas que estamos usando en alguna consulta. Si lo que estamos recuperando es el valor
de una e)presi%n (como en el ejemplo anterior) las etiquetas en las columnas son la
e)presi%n en s*.
mysql muestra cu$ntas filas fueron regresadas y cuanto tiempo tard% en ejecutarse la
consulta lo cual puede darnos una idea de la eficiencia del servidor aunque estos valores
pueden ser un tanto imprecisos ya que no se muestra la "ora del 0&. y porque pueden
verse afectados por otros factores tales como la carga del servidor y la velocidad de
comunicaci%n en una red.
Las palabras clave pueden ser escritas usando may7sculas y min7sculas.
Las siguientes consultas son equivalentes#
mysql> SE"E$/ 2E3S45N678 $U33EN/9D:/E%
mysql> select version678 current9date%
mysql> Se"e$t vErSi5n678 current9D:/E%
:qu> est? otra consulta que demuestra como se pueden escribir al'unas e@presiones
matem?ticas y tri'onomAtricas:
mysql> SE"E$/ S4N6B467C-78 6-;.7*)%
;-------------;---------;
< S4N6B467C-7 < 6-;.7*) <
;-------------;---------;
< =#D=D.=D < ,) <
;-------------;---------;
(unque "asta este momento se "an escrito sentencias sencillas de una s%la l*nea es posible
escribir m$s de una sentencia por l*nea siempre y cuando est!n separadas por punto y coma#
mysql> SE"E$/ 2E3S45N67% SE"E$/ N5W67%
;-----------;
< 2E3S45N67 <
;-----------;
< +#,+#-. <
;-----------;
. row in set 6=#=. sec7
;---------------------;
< N5W67 <
;---------------------;
< ,==,-.=-,E .-:,*:=- <
;---------------------;
. row in set 6=#=. sec7
.n comando no necesita ser escrito en una s%la l*nea as* que los comandos que requieran de
varias l*neas no son un problema. mysql determinar$ en d%nde finali/a la sentencia cuando
encuentre el punto y coma no cuando encuentre el fin de l*nea.
(qu* est$ un ejemplo que muestra un consulta simple escrita en varias l*neas#
mysql> SE"E$/
-> USE3678
-> $U33EN/9D:/E%
;-------------------;--------------;
< USE367 < $U33EN/9D:/E <
;-------------------;--------------;
< bluemanFlocalhost < ,==,-=G-.- <
;-------------------;--------------;
. row in set 6=#== sec7
mysql>
En este ejemplo debe notarse como cambia el prompt (de mysql8 a '8) cuando se escribe una
consulta en varias l*neas. Esta es la manera en c%mo mysql indica que est$ esperando a que
finalice la consulta. Sin embargo si deseamos no terminar de escribir la consulta podemos "acerlo
al escribir 9c como se muestra en el siguiente ejemplo#
mysql> SE"E$/
-> USE3678
-> &c
mysql>
1e nuevo se nos regresa el comando el prompt mysql8 que nos indica que mysql est$ listo para
una nueva consulta.
En la siguiente tabla se muestran cada uno de los prompts que podemos obtener y una breve
descripci%n de su significado para mysql#
&rompt Significado
mysql8 Listo para una nueva consulta.
'8 Esperando la l*nea siguiente de una consulta multi'l*nea.
:8
Esperando la siguiente l*nea para completar una cadena que
comien/a con una comilla sencilla ( : ).
"8
Esperando la siguiente l*nea para completar una cadena que
comien/a con una comilla doble ( " ).
Los comandos multi'l*nea com7nmente ocurren por accidente cuando tecleamos E34E5 pero
olvidamos escribir el punto y coma. En este caso mysql se queda esperando para que finalicemos
la consulta#
mysql> SE"E$/ USE367
->
Si esto llega a suceder muy probablemente mysql estar$ esperando por un punto y coma de
manera que si escribimos el punto y coma podremos completar la consulta y mysql podr$
ejecutarla#
mysql> SE"E$/ USE367
-> %
;----------------;
< USE367 <
;----------------;
< rootFlocalhost <
;----------------;
. row in set 6=#== sec7
mysql>
Los prompts :8 y "8 ocurren durante la escritura de cadenas. En mysql podemos escribir cadenas
utili/ando comillas sencillas o comillas dobles (por ejemplo :"ola: y ""ola") y mysql nos permite
escribir cadenas que ocupen m7ltiples l*neas. 1e manera que cuando veamos el prompt :8 o "8
mysql nos indica que "emos empe/ado a escribir una cadena pero no la "emos finali/ado con la
comilla correspondiente.
(unque esto puede suceder si estamos escribiendo una cadena muy grande es m$s frecuente que
obtengamos alguno de estos prompts si inadvertidamente escribimos alguna de estas comillas.
&or ejemplo#
mysql> SE"E$/ * H35 mi9tabla WIE3E nombre J K"upita :ND edad L +=%
K>
Si escribimos esta consulta SELE04 y entonces presionamos E34E5 para ver el resultado no
suceder$ nada. En lugar de preocuparnos porque la consulta "a tomado muc"o tiempo debemos
notar la pista que nos da mysql cambiando el prompt. Esto nos indica que mysql est$ esperando
que finalicemos la cadena iniciada ("Lupita).
En este caso ;qu! es lo que debemos "acer< . La cosa m$s simple es cancelar la consulta. Sin
embargo no basta con escribir 9c ya que mysql interpreta esto como parte de la cadena que
estamos escribiendo. En lugar de esto debemos escribir antes la comilla correspondiente y
despu!s 9c #
mysql> SE"E$/ * H35 mi9tabla WIE3E nombre J K"upita :ND edad L +=%
K> K &c
mysql>
El prompt cambiar$ de nuevo al ya conocido mysql8 indic$ndonos que mysql est$ listo para una
nueva consulta.
Es sumamente importante conocer lo que significan los prompts :8 y "8 ya que si en alg7n
momento nos aparece alguno de ellos todas la l*neas que escribamos a continuaci%n ser$n
consideradas como parte de la cadena inclusive cuando escribimos Q.-4. Esto puede ser confuso
especialmente si no sabemos que es necesario escribir la comilla correspondiente para finali/ar la
cadena para que podamos escribir despu!s alg7n otro comando o terminar la consulta que
deseamos ejecutar.
Creando y usando una ase de datos
("ora que conocemos como escribir y ejecutar sentencias es tiempo de accesar a una base de
datos.
Supongamos que tenemos diversas mascotas en casa (nuestro peque+o /ool%gico) y deseamos
tener registros de los datos acerca de ellas. &odemos "acer esto al crear tablas que guarden esta
informaci%n para que posteriormente la consulta de estos datos sea bastante f$cil y de manera
muy pr$ctica. Esta secci%n muestra como crear una base de datos crear una tabla incorporar
datos en una tabla y recuperar datos de las tablas de diversas maneras.
La base de datos "/ool%gico" ser$ muy simple (deliveradamente) pero no es dif*cil pensar de
situaciones del mundo real en la cual una base de datos similar puede ser usada.
&rimeramente usaremos la sentencia S=2> para ver cu$les son las bases de datos e)istentes en
el servidor al que estamos conectados#
mysql> SI5W D:/:M:SES%
;----------;
< Database <
;----------;
< mysql <
< test <
;----------;
, rows in set 6=#== sec7
mysql>
Es probable que la lista de bases de datos que veamos sea diferente en nuestro caso pero
seguramente las bases de datos "mysql" y "test" estar$n entre ellas. En particular la base de
datos "mysql" es requerida ya que !sta tiene la informaci%n de los privilegios de los usuarios de
MySQL. La base de datos "test" es creada durante la instalaci%n de MySQL con el prop%sito de
servir como $rea de trabajo para los usuarios que inician en el aprendi/aje de MySQL.
Se debe anotar tambi!n que es posible que no veamos todas las bases de datos si no tenemos el
privilegio S=2> 1(4(?(SES. Se recomienda revisar la secci%n del manual de MySQL dedicada a
los comandos @5(34 y 5EA2BE.
Si la base de datos "test" e)iste "ay que intentar accesar a ella#
mysql> USE test
Database chan'ed
mysql>
2bservar que .SE al igual que Q.-4 no requieren el uso del punto y coma aunque si se usa !ste
no "ay ning7n problema. El comando .SE es especial tambi!n de otra manera# !ste debe ser
usado en una s%la l*nea.
&odr*amos usar la base de datos "test" (si tenemos acceso a ella) para los ejemplos que vienen a
continuaci%n pero cualquier cosa que "agamos puede ser eliminada por cualquier otro usuario
que tenga acceso a esta base de datos. &or esta ra/%n es recomendable que preguntemos al
administrador MySQL acerca de la base de datos que podemos usar. Supongamos que deseamos
tener una base de datos llamada "/oologico" (n%tese que no se est$ acentuando la palabra) a la
cual s%lo nosotros tengamos acceso para ello el administrador necesita ejecutar un comando
como el siguiente#
mysql> N3:N/ :"" on Ooolo'ico#* /5 iNombreUsuarioFi$omputadora
-> 4DEN/4H4ED M( 0i$ontrasePa0%
en donde Miom!re"suario es el nombre de usuario asignado dentro del conte)to de MySQL
Mi#omputa$ora es el nombre o la direcci%n -& de la computadora desde la que nos conectamos al
servidor MySQL y Mi#ontrase%a es la contrase+a que se nos "a asignado igualmente dentro del
ambiente de MySQL e)clusivamente. (mbos nombre de usuario y contrase+a no tienen nada que
ver con el nombre de usuario y contrase+a manejados por el sistema operativo (si es el caso).
Si el administrador cre% la base de datos al momento de asignar los permisos podemos "acer uso
de ella. 1e otro modo nosotros debemos crearla#
mysql> USE Ooolo'ico
E3353 .=-G: UnQnown database 0Ooolo'ico0
mysql>
El mensaje anterior indica que la base de datos no "a sido creada por lo tanto necesitamos
crearla.
mysql> $3E:/E D:/:M:SE Ooolo'ico%
!uery 5R8 . row a11ected 6=#== sec7
mysql> USE Ooolo'ico
Database chan'ed
mysql>
?ajo el sistema operativo .ni) los nombres de las bases de datos son sensibles al uso de
may7sculas y min7sculas (no como las palabras clave de SQL) por lo tanto debemos de tener
cuidado de escribir correctamente el nombre de la base de datos. Esto es cierto tambi!n para los
nombres de las tablas.
(l crear una base de datos no se selecciona !sta de manera aut%maticaC debemos "acerlo de
manera e)pl*cita por ello usamos el comando .SE en el ejemplo anterior.
La base de datos se crea s%lo una ve/ pero nosotros debemos seleccionarla cada ve/ que
iniciamos una sesi%n con mysql. &or ello es recomendable que se indique la base de datos sobre la
que vamos a trabajar al momento de invocar al monitor de MySQL. &or ejemplo#
shell>mysql -h casita -u blueman -p Ooolo'ico
Enter password: ******
Welcome to the yS!" monitor# $ommands end with % or &'#
(our yS!" connection id is .D to server version: +#,+#+E-nt
/ype 0help%0 or 0&h0 1or help# /ype 0&c0 to clear the bu11er
mysql>
2bservar que "/oologico" no es la contrase+a que se est$ proporcionando desde la l*nea de
comandos sino el nombre de la base de datos a la que deseamos acceder. Si deseamos
proporcionar la contrase+a en la l*nea de comandos despu!s de la opci%n "'p" debemos de
"acerlo sin dejar espacios (por ejemplo -p"olaDEF no como -p "olaDEF). Sin embargo escribir
nuestra contrase+a desde la l*nea de comandos no es recomendado ya que es bastante inseguro.
Creando una tala
0rear la base de datos es la parte m$s f$cil pero en este momento la base de datos est$ vac*a
como lo indica el comando S=2> 4(?LES#
mysql> SI5W /:M"ES%
Empty set 6=#== sec7
La parte un tanto complicada es decidir la estructura que debe tener nuestra base de datos# qu!
tablas se necesitan y qu! columnas estar$n en cada tabla.
En principio necesitamos una tabla que contenga un registro para cada una de nuestras
mascotas. Gsta puede ser una tabla llamada mascotas y debe contener por lo menos el nombre de
cada uno de nuestros animalitos. Ha que el nombre en s* no es muy interesante la tabla debe
contener alguna otra informaci%n. &or ejemplo si m$s de una persona en nuestra familia tiene una
mascota es probable que tengamos que guardar la informaci%n acerca de quien es el due+o de
cada mascota. (s* mismo tambi!n ser*a interesante contar con alguna informaci%n m$s
descriptiva tal como la especie y el se)o de cada mascota.
;H que sucede con la edad<. Esto puede ser tambi!n de inter!s pero no es una buena idea
almacenar este dato en la base de datos. La edad cambia conforme pasa el tiempo lo cual
significa que debemos de actuali/ar los registros frecuentemente. En ve/ de esto es una mejor
idea guardar un valor fijo tal como la fec"a de nacimiento. Entonces cuando necesitemos la edad
la podemos calcular como la diferencia entre la fec"a actual y la fec"a de nacimiento. MySQL
proporciona funciones para "acer operaciones entre fec"as as* que no "ay ning7n problema.
(l almacenar la fec"a de nacimiento en lugar de la edad tenemos algunas otras ventajas#
&odemos usar la base de datos para tareas tales como generar recordatorios para cada
cumplea+os pr%)imo de nuestras mascotas. &odemos calcular la edad en relaci%n a otras fec"as
que la fec"a actual. &or ejemplo si almacenamos la fec"a en que muri% nuestra mascota en la
base de datos es f$cil calcular que edad ten*a nuestro animalito cuando falleci%. Es probable que
estemos pensando en otro tipo de informaci%n que ser*a igualmente 7til en la tabla "mascotas"
pero para nosotros ser$ suficiente por a"ora contar con informaci%n de nombre propietario
especie nacimiento y fallecimiento.
.saremos la sentencia 05E(4E 4(?LE para indicar como estar$n conformados los registros de
nuestras mascotas.
mysql> $3E:/E /:M"E mascotas6
-> nombre 2:3$I:36,=78 propietario 2:3$I:36,=78
-> especie 2:3$I:36,=78 se@o $I:36.78 nacimiento D:/E8
-> 1allecimento D:/E7%
!uery 5R8 = rows a11ected 6=#=, sec7
mysql>
A(50=(5 es una buena elecci%n para los campos nombre propietario y especie ya que los
valores que almacenar$n son de longitud variable. 3o es necesario que la longitud de estas
columnas sea la misma ni tampoco que sea de EI. Se puede especificar cualquier longitud entre D
y EJJ lo que se considere m$s adecuado. Si resulta que la elecci%n de la longitud de los campos
que "emos "ec"o no result% adecuada MySQL proporciona una sentencia (L4E5 4(?LE que nos
puede ayudar a solventar este problema.
El campo se)o puede ser representado en una variedad de formas por ejemplo "m" y "f" o tal ve/
"masculino" y "femenino" aunque resulta m$s simple la primera opci%n.
El uso del tipo de dato 1(4E para los campos nacimiento y fallecimento debe de resultar obvio.
("ora que "emos creado la tabla la sentencia S=2> 4(?LES debe producir algo como#
mysql> SI5W /:M"ES%
;---------------------;
< /ables9in9Ooolo'ico <
;---------------------;
< mascotas <
;---------------------;
. row in set 6=#== sec7
mysql>
&ara verificar que la tabla fu! creada como nosotros esperabamos usaremos la sentencia
1ES05-?E#

mysql> DES$34ME mascotas%
;--------------;-------------;------;-----;---------;-------;
< Hield < /ype < Null < Rey < De1ault < E@tra <
;--------------;-------------;------;-----;---------;-------;
< nombre < varchar6,=7 < (ES < < NU"" < <
< propietario < varchar6,=7 < (ES < < NU"" < <
< especie < varchar6,=7 < (ES < < NU"" < <
< se@o < char6.7 < (ES < < NU"" < <
< nacimiento < date < (ES < < NU"" < <
< 1allecimento < date < (ES < < NU"" < <
;--------------;-------------;------;-----;---------;-------;
* rows in set 6=#=. sec7
mysql>
&odemos "acer uso de la sentencia 1ES05-?E en cualquier momento por ejempo si olvidamos los
nombres % el tipo de las columnas en la tabla.
Car!ando datos en una tala

1espu!s de "aber creado la tabla a"ora podemos incorporar algunos datos en ella para lo cual
"aremos uso de las sentencias -3SE54 y L2(1 1(4(.
Supongamos que los registros de nuestras mascotas pueden ser descritos por los datos mostrados
en la siguiente tabla.
3ombre &ropietario Especie Se)o 3acimiento Kallecimento
Kluffy (rnoldo @ato f DLLL'IE'IM
Mau Nuan @ato m DLLO'IF'DP
?uffy (rnoldo &erro f DLLL'IJ'DF
KanKan ?enito &erro m EIII'IO'EP
Baiser 1iana &erro m DLLO'IO'FD DLLP'IP'EL
0"ispa 2mar (ve f DLLO'IL'DD
>ic"o 4om$s (ve EIII'IE'IL
SQim ?enito Serpiente m EIID'IM'EL
1ebemos observar que MySQL espera recibir fec"as en el formato HHHH'MM'11 que puede ser
diferente a lo que nosotros estamos acostumbrados.
Ha que estamos iniciando con una tabla vac*a la manera m$s f$cil de poblarla es crear un arc"ivo
de te)to que contenga un registro por l*nea para cada uno de nuestros animalitos para que
posteriormente carguemos el contenido del arc"ivo en la tabla 7nicamente con una sentencia.
&or tanto debemos de crear un arc"ivo de te)to "mascotas.t)t" que contenga un registro por l*nea
con valores separados por tabuladores cuidando que el orden de las columnas sea el mismo que
utili/amos en la sentencia 05E(4E 4(?LE. &ara valores que no cono/camos podemos usar valores
nulos (3.LL). &ara representar estos valores en nuestro arc"ivo debemos usar 93.
El arc"ivo mascotas.t)t contendr$#
Hlu11y :rnoldo Nato 1 .GGG-=,-=- &N
au Suan Nato m .GGE-=+-.D &N
Mu11y :rnoldo Berro 1 .GGG-=)-.+ &N
HanHan Menito Berro m ,===-=E-,D &N
Raiser Diana Berro m .GGE-=E-+. .GGD-=D-,G
$hispa 5mar :ve 1 .GGE-=G-.. &N
Wicho /om?s :ve &N ,===-=,-=G &N
SQim Menito Serpiente m ,==.-=--,G &N
&ara cargar el contenido del arc"ivo en la tabla mascotas usaremos el siguiente comando#
mysql> "5:D D:/: "5$:" 4NH4"E Kmascotas#t@tK 4N/5 /:M"E mascotas%
La sentencia L2(1 1(4( nos permite especificar cu$l es el separador de columnas y el separador
de registros por default el tabulador es el separador de columnas (campos) y el salto de l*nea es
el separador de registros que en este caso son suficientes para que la sentencia L2(1 1(4( lea
correctamente el arc"ivo "mascotas.t)t".
Si lo que deseamos es a+adir un registro a la ve/ entonces debemos "acer uso de la sentencia
-3SE54. En la manera m$s simple debemos proporcionar un valor para cada columna en el orden
en el cual fueron listados en la sentencia 05E(4E 4(?LE. Supongamos que nuestra "ermana 1iana
compra un nuevo "amster nombrado &elusa. &odemos usar la sentencia -3SE54 para agregar su
registro en nuestra base de datos.
mysql> 4NSE3/ 4N/5 mascotas
-> 2:"UES60Belusa080Diana080Iamster0801080,===-=+-+=08NU""7%
3otar que los valores de cadenas y fec"as deben estar encerrados entre comillas. 4ambi!n con la
sentencia -3SE54 podemos insertar el valor 3.LL directamente para representar un valor nulo un
valor que no conocemos. En este caso no se usa 93 como en el caso de la sentencia L2(1 1(4(.
1e este ejemplo debemos ser capaces de ver que es un poco m$s la tarea que se tiene que
reali/ar si inicialmente cargamos los registros con varias sentencias -3SE54 en lugar de una 7nica
sentencia L2(1 1(4(.
Recu"erando in#or$acin de una tala
La sentencia SELE04 es usada para obtener la informaci%n guardada en una tabla. La forma
general de esta sentencia es#
SE"E$/ "a4n1ormaciTn!ueDeseamos H35 De!ue/abla WIE3E $ondiciTn:Satis1acer
(qu* La&n'ormaci(nQue)eseamos es la informaci%n que queremos ver. Esta puede ser una lista de
columnas o un R para indicar "todas las columnas". )eQue*a!la indica el nombre de la tabla de la
cual vamos a obtener los datos. La cla7sula >=E5E es opcional. Si est$ presente la
#on$ici(nASatis'acer especifica las condiciones que los registros deben satisfacer para que puedan
ser mostrados.
Seleccionando todos los datos
La manera m$s simple de la sentencia SELE04 es cuando se recuperan todos los datos de una
tabla#
mysql> SE"E$/ * H35 mascotas%
;--------;-------------;-----------;------;------------;---------------;
< nombre < propietario < especie < se@o < nacimiento < 1allecimiento <
;--------;-------------;-----------;------;------------;---------------;
< Hlu11y < :rnoldo < Nato < 1 < .GGG-=,-=- < NU"" <
< au < Suan < Nato < m < .GGE-=+-.D < NU"" <
< Mu11y < :rnoldo < Berro < 1 < .GGG-=)-.+ < NU"" <
< HanHan < Menito < Berro < m < ,===-=E-,D < NU"" <
< Raiser < Diana < Berro < m < .GGE-=E-+. < .GGD-=D-,G <
< $hispa < 5mar < :ve < 1 < .GGE-=G-.. < NU"" <
< Wicho < /om?s < :ve < NU"" < ,===-=,-=G < NU"" <
< SQim < Menito < Serpiente < m < ,==.-=--,G < NU"" <
< Belusa < Diana < Iamster < 1 < ,===-=+-+= < NU"" <
;--------;-------------;-----------;------;------------;---------------;
G rows in set 6=#== sec7
Esta forma del SELE04 es 7til si deseamos ver los datos completos de la tabla por ejemplo para
asegurarnos de que est$n todos los registros despu!s de la carga de un arc"ivo.
&or ejemplo en este caso que estamos tratando al consultar los registros de la tabla nos damos
cuenta de que "ay un error en el arc"ivo de datos (mascotas.t)t)# parece que +aiser "a nacido
despu!s de que "a fallecidoS. (l revisar un poco el pedigree de +aiser encontramos que la fec"a
correcta de nacimiento es el a+o DLOL no DLLO.
=ay por lo menos un par de maneras de solucionar este problema#
Editar el arc"ivo "mascotas.t)t" para corregir el error eliminar los datos de la tabla mascotas con
la sentencia 1ELE4E y cargar los datos nuevamente con el comando L2(1 1(4(#
mysql> DE"E/E H35 mascotas%
mysql> "5:D D:/: "5$:" 4NH4"E Kmascotas#t@tK 4N/5 /:M"E mascotas%
Sin embargo si "acemos esto debemos ingresar los datos de ,elusa la mascota de nuestra
"ermana 1iana.
La segunda opci%n consiste en corregir s%lo el registro err%neo con una sentencia .&1(4E#
mysql> UBD:/E mascotas SE/ nacimientoJK.GEG-=E-+.K WIE3E nombreJKRaiserK%
0omo se mostr% anteriormente es muy f$cil recuperar los datos de una tabla completa. &ero
t*picamente no deseamos "acer esto particularmente cuando las tablas son demasiado grandes.
En ve/ de ello estaremos m$s interesados en responder preguntas particulares en cuyo caso
debemos especificar algunas restricciones para la informaci%n que deseamos ver.
Seleccionando registros particulares
&odemos seleccionar s%lo registros particulares de una tabla. &or ejemplo si deseamos verificar el
cambio que "icimos a la fec"a de nacimiento de +aiser seleccionamos s%lo el registro de +aiser de
la siguiente manera#
mysql> SE"E$/ * H35 mascotas WIE3E nombreJKRaiserK%
;--------;-------------;---------;------;------------;--------------;
< nombre < propietario < especie < se@o < nacimiento < 1allecimento <
;--------;-------------;---------;------;------------;--------------;
< Raiser < Diana < Berro < m < .GEG-=E-+. < .GGD-=D-,G <
;--------;-------------;---------;------;------------;--------------;
. row in set 6=#== sec7
La salida mostrada confirma que el a+o "a sido corregido de DLLO a DLOL.
La comparaci%n de cadenas es normalmente no sensitiva as* que podemos especificar el nombre
como "Qaiser" "B(-SE5" etc. El resultado de la consulta ser$ el mismo.
&odemos adem$s especificar condiciones sobre cualquier columna no s%lo el "nombre". &or
ejemplo si deseamos conocer qu! mascotas nacieron despu!s del EIII tendr*amos que usar la
columna "nacimiento"#
mysql> SE"E$/ * H35 mascotas WIE3E nacimiento >J K,===-.-.K%
;--------;-------------;-----------;------;------------;---------------;
< nombre < propietario < especie < se@o < nacimiento < 1allecimiento <
;--------;-------------;-----------;------;------------;---------------;
< HanHan < Menito < Berro < m < ,===-=E-,D < NU"" <
< Wicho < /om?s < :ve < NU"" < ,===-=,-=G < NU"" <
< SQim < Menito < Serpiente < m < ,==.-=--,G < NU"" <
< Belusa < Diana < Iamster < 1 < ,===-=+-+= < NU"" <
;--------;-------------;-----------;------;------------;---------------;
- rows in set 6=#== sec7
&odemos tambi!n combinar condiciones por ejemplo para locali/ar a los perros "embras#
mysql> SE"E$/ * H35 mascotas WIE3E especieJKBerroK :ND se@oJK1K%
;--------;-------------;---------;------;------------;---------------;
< nombre < propietario < especie < se@o < nacimiento < 1allecimiento <
;--------;-------------;---------;------;------------;---------------;
< Mu11y < :rnoldo < Berro < 1 < .GGG-=)-.+ < NU"" <
;--------;-------------;---------;------;------------;---------------;
. row in set 6=#== sec7
"a consulta anterior usa el operador lT'ico :ND# Iay tambiAn un operador lT'ico
53:
mysql> SE"E$/ * H35 mascotas WIE3E especie J K:veK 53 especie J KNatoK%
;--------;-------------;---------;------;------------;---------------;
< nombre < propietario < especie < se@o < nacimiento < 1allecimiento <
;--------;-------------;---------;------;------------;---------------;
< Hlu11y < :rnoldo < Nato < 1 < .GGG-=,-=- < NU"" <
< au < Suan < Nato < m < .GGE-=+-.D < NU"" <
< $hispa < 5mar < :ve < 1 < .GGE-=G-.. < NU"" <
< Wicho < /om?s < :ve < NU"" < ,===-=,-=G < NU"" <
;--------;-------------;---------;------;------------;---------------;
- rows in set 6=#== sec7
El operador (31 y el operador 25 pueden ser intercambiados. Si "acemos esto es buena idea
usar par!ntesis para indicar como deben ser agrupadas las condiciones#
mysql> SE"E$/ * H35 mascotas WIE3E 6especie J KNatoK :ND se@o J KmK7
-> 53 6especie J KBerroK :ND se@o J K1K7%
;--------;-------------;---------;------;------------;---------------;
< nombre < propietario < especie < se@o < nacimiento < 1allecimiento <
;--------;-------------;---------;------;------------;---------------;
< au < Suan < Nato < m < .GGE-=+-.D < NU"" <
< Mu11y < :rnoldo < Berro < 1 < .GGG-=)-.+ < NU"" <
;--------;-------------;---------;------;------------;---------------;
, rows in set 6=#== sec7
Seleccionando columnas particulares
Si no deseamos ver los registros completos de una tabla entonces tenemos que usar los nombres
de las columnas en las que estamos interesados separ$ndolas por coma. &or ejemplo si deseamos
conocer la fec"a de nacimiento de nuestras mascotas debemos seleccionar la columna "nombre"
y "nacimiento"#
mysql> SE"E$/ nombre8 nacimiento H35 mascotas%
;--------;------------;
< nombre < nacimiento <
;--------;------------;
< Hlu11y < .GGG-=,-=- <
< au < .GGE-=+-.D <
< Mu11y < .GGG-=)-.+ <
< HanHan < ,===-=E-,D <
< Raiser < .GEG-=E-+. <
< $hispa < .GGE-=G-.. <
< Wicho < ,===-=,-=G <
< SQim < ,==.-=--,G <
< Belusa < ,===-=+-+= <
;--------;------------;
G rows in set 6=#== sec7
&ara conocer qui!n tiene alguna mascota usaremos la siguiente consulta#
mysql> SE"E$/ propietario H35 mascotas%
;-------------;
< propietario <
;-------------;
< :rnoldo <
< Suan <
< :rnoldo <
< Menito <
< Diana <
< 5mar <
< /om?s <
< Menito <
< Diana <
;-------------;
G rows in set 6=#== sec7
Sin embargo debemos notar que la consulta recupera el nombre del propietario de cada mascota
y algunos de ellos aparecen m$s de una ve/. &ara minimi/ar la salida agregaremos la palabra
clave 1-S4-304#
mysql> SE"E$/ D4S/4N$/ propietario H35 mascotas%
;-------------;
< propietario <
;-------------;
< :rnoldo <
< Suan <
< Menito <
< Diana <
< 5mar <
< /om?s <
;-------------;
* rows in set 6=#=+ sec7
Se puede usar tambi!n una cla7sula >=E5E para combinar selecci%n de filas con selecci%n de
columnas. &or ejemplo para obtener la fec"a de nacimiento de los perritos y los gatitos usaremos
la siguiente consulta#
mysql> SE"E$/ nombre8 especie8 nacimiento H35 mascotas
-> WIE3E especie J KperroK 53 especie J K'atoK%
;--------;---------;------------;
< nombre < especie < nacimiento <
;--------;---------;------------;
< Hlu11y < Nato < .GGG-=,-=- <
< au < Nato < .GGE-=+-.D <
< Mu11y < Berro < .GGG-=)-.+ <
< HanHan < Berro < ,===-=E-,D <
< Raiser < Berro < .GEG-=E-+. <
;--------;---------;------------;
) rows in set 6=#== sec7
Ordenando re!istros
Se debe notar en los ejemplos anteriores que las filas regresadas son mostradas sin ning7n orden
en particular. Sin embargo frecuentemente es m$s f$cil e)aminar la salida de una consulta
cuando las filas son ordenadas en alguna forma 7til. &ara ordenar los resultados tenemos que usar
una cl$usula 251E5 ?H.
(qu* aparecen algunos datos ordenados por fec"a de nacimiento#
mysql> SE"E$/ nombre8 nacimiento H35 mascotas 53DE3 M( nacimiento%
;--------;------------;
< nombre < nacimiento <
;--------;------------;
< Raiser < .GEG-=E-+. <
< au < .GGE-=+-.D <
< $hispa < .GGE-=G-.. <
< Hlu11y < .GGG-=,-=- <
< Mu11y < .GGG-=)-.+ <
< Wicho < ,===-=,-=G <
< Belusa < ,===-=+-+= <
< HanHan < ,===-=E-,D <
< SQim < ,==.-=--,G <
;--------;------------;
G rows in set 6=#== sec7
En las columnas de tipo caracter el ordenamiento es ejecutado normalmente de forma no
sensitiva es decir no "ay diferencia entre may7sculas y min7sculas. Sin embargo se puede for/ar
un ordenamiento sensitivo al usar el operador ?-3(5H.
&ara ordenar en orden inverso debemos agregar la palabra clave 1ES0 al nombre de la columna
que estamos usando en el ordenamiento#
mysql> SE"E$/ nombre8 nacimiento H35 mascotas 53DE3 M(
-> nacimiento DES$%
;--------;------------;
< nombre < nacimiento <
;--------;------------;
< SQim < ,==.-=--,G <
< HanHan < ,===-=E-,D <
< Belusa < ,===-=+-+= <
< Wicho < ,===-=,-=G <
< Mu11y < .GGG-=)-.+ <
< Hlu11y < .GGG-=,-=- <
< $hispa < .GGE-=G-.. <
< au < .GGE-=+-.D <
< Raiser < .GEG-=E-+. <
;--------;------------;
G rows in set 6=#== sec7
&odemos ordenar m7ltiples columnas. &or ejemplo para ordenar por tipo de animal y poner al
inicio los animalitos m$s peque+os de edad usaremos la siguiente consulta#
mysql> SE"E$/ nombre8 especie8 nacimiento H35 mascotas
-> 53DE3 M( especie8 nacimiento DES$%
;--------;-----------;------------;
< nombre < especie < nacimiento <
;--------;-----------;------------;
< Wicho < :ve < ,===-=,-=G <
< $hispa < :ve < .GGE-=G-.. <
< Hlu11y < Nato < .GGG-=,-=- <
< au < Nato < .GGE-=+-.D <
< Belusa < Iamster < ,===-=+-+= <
< HanHan < Berro < ,===-=E-,D <
< Mu11y < Berro < .GGG-=)-.+ <
< Raiser < Berro < .GEG-=E-+. <
< SQim < Serpiente < ,==.-=--,G <
;--------;-----------;------------;
G rows in set 6=#== sec7
3otar que la palabra clave 1ES0 aplica s%lo a la columna nombrada que le precede.

Вам также может понравиться