1. PROGRAMACIÓN SQL
1
Tutor: Yasser Alvarado S.
UNIDAD II
PRIMEROS PASOS EN LA CONSOLA DE MYSQL
Antes de empezar, se debe aclarar que toda sentencia de SQL termina con un punto y coma (;).
Para mostrar las bases de datos existentes en el Servidor MySql, utilizamos el siguiente comando:
mysql > show databases;
Para trabajar con una base de datos utilizamos:
mysql > use nombreBaseDatos;
Para visualizar las tablas de una Base de Datos:
mysql > show tables;
Para observar la estructura de una tabla, digitamos el siguiente comando:
Mysql > describe NombredeTabla;
1. mysql > describe autosenventa;
2. PROGRAMACIÓN SQL
2
Tutor: Yasser Alvarado S.
Asi mismo para visualizar la versión de MySql utilizamos el comando:
mysql> SELECT VERSION();
Para observar la fecha actual:
se pueden hacer pequeñas operaciones como:
mysql> SELECT CURRENT_DATE();
Se puede utilizar 2 o más comandos a la vez:
mysql> SELECT VERSION(), CURRENT_DATE();
Se puede realizer operaciones matematicas:
mysql> SELECT SIN(PI()/4), (4+1)*5;
mysql> SELECT 7 *8;
Para visualizar el usuario actual:
mysql> select user();
Para visualizar fecha y hora actual:
mysql> select now();
Para cerrar o salir de la consola:
mysql> exit;
3. PROGRAMACIÓN SQL
3
Tutor: Yasser Alvarado S.
CREANDO UNA BASE DE DATOS
Mysql> create database biblioteca;
Si todo va como esperado, aparecerá una línea de código similar a ésta: Query OK, 1 row affected
(0.05 sec). Acabamos de crear una base de datos llamada “biblioteca”. Para comprobarlo, es tan fácil
como utilizar el comando que justo acabamos de aprender, show databases; Veremos que ahora en el
listado aparece biblioteca.
Para empezar, seleccionemos ahora la base de datos “biblioteca:
Mysql> use biblioteca;
CREAR UNA TABLA
Partimos de la base de datos que acabamos de crear llamada “biblioteca”. En ella queremos crear una
tabla llamada “libros” que recoja el fondo bibliográfico. En nuestra tabla de ejemplo crearemos los
campos “titulo”, “autor”, “fecha_publicacion” y “cantidad”.
Mysql> create table libros(
libro_id int unsigned auto_increment,
titulo varchar(50) not null,
autor varchar(30) not null default 'Desconocido',
cantidad smallint unsigned default 0,
primary key (libro_id)
);
No nos asustemos, aquí hemos introducido muchas cosas de golpe, vayamos paso por paso. Hemos
creado varios campos con una serie de parámetros. Los campos han de ir separados por coma y dentro
del paréntesis. Aquí el punto y coma va al final, después del paréntesis. Es muy fácil olvidárselo, por
lo que prestad especial atención en este punto. Veamos ahora que hemos hecho: create table libros crea
una tabla llamada libros. Podríamos haber hecho lo siguiente:
create table libros;
4. PROGRAMACIÓN SQL
4
Tutor: Yasser Alvarado S.
Lo que habría pasado, es que habríamos creado una tabla vacía, esto es, sin ningún campo. Como
hemos dicho, una tabla está compuesta por campos y por registros. Para poder introducir un registro
en la misma, primero es necesario crear los campos, que es lo que hemos hecho. Así en nuestro
ejemplo hemos creado cuatro campos:libro_id, titulo, autor y cantidad. ¿por qué crear un libro_id?
Veamos ahora uno por uno cada uno de los campos creados:
libro_id int unsigned auto_increment,
Lo primero que indicamos siempre es el nombre del campo que estamos creando. int significa integer,
lo que quiere decir que tiene que ser un número entero. unsigned significa que no puede ser negativo,
por lo que la cuenta empezará con el 1. auto_increment significa que el propio gestor de bases de
datos, en este caso MySQL, incrementará de manera automática este valor cada vez que introduzcamos
un registro en esta tabla.
titulo varchar(50) not null,
Ahora estamos creando un campo llamado titulo. Varchar significa caracteres y varchar(50) indica que
este campo está formado por una cadena de como máximo 50 caracteres. Significa que este campo es
obligatorio y que no podemos dejarlo en blanco.
autor varchar(30) not null default 'Desconocido',
Efectivamente, esta sentencia crea un campo llamado autor de como mucho 30 caracteres que tampoco
puede dejarse en blanco. Aquí introducimos una diferencia, y es que hemos añadido default
'Desconocido'. Significa que si no introducimos nada, el sistema automáticamente pondrá que el autor
es Desconocido. Así, un libro siempre tiene título, pero no siempre aparece un autor, pensemos en
muchos libros de texto o en libros de autor anónimo.
cantidad smallint unsigned default 0,
smallint es un tipo de número entero que no admite valores grandes, esto nos sirve para evitar errores
de tecleado. Aquí hemos creado un campo llamado cantidad que es un número entero pequeño positivo
y que en caso de dejarlo en blanco el sistema pondrá que no hay ninguno. El motivo por el que el
default es 0 y no 1, es porque un libro se puede haber extraviado.
1 primary key (libro_id)
Aquí definimos que la clave primaria de esta tabla será el id del libro.
5. PROGRAMACIÓN SQL
5
Tutor: Yasser Alvarado S.
Mostrar las tablas de una base de datos
Para ver la tabla que acabamos de crear, utilizamos este comando:
Mysql> show tables;
Veremos ahora que aparece "libros" en el resultado.
Mostrar los campos de una tabla
Para inspeccionar los campos de la tabla "libros", usamos el comando explain:
Mysql> explain libros;
Mysql> describe libros;
MODIFICAR UNA TABLA
Imaginemos ahora que queremos añadir el campo "editorial" a nuestra tabla "libros".
Mysql> alter table libros add editorial varchar(50) not null;
Si ahora ejecutamos el comando explain libros; veremos que ha creado un campo llamado editorial.
Imaginemos que en lugar de 50 caracteres sólo admita 20. Lo podemos modificar así
Mysql> alter table libros modify column editorial varchar(20) not null;
Ya hemos creado nuestra tabla libros con cuatro campos. Ahora vamos a proceder a incluir registros en
la tabla.
INSERTAR REGISTROS EN LA TABLA
Mysql> insert into libros (titulo, autor, cantidad)
values ('Un mundo cualquiera', 'Pepito Frito', 2);
Con esta simple sentencia hemos creado nuestro primer registro en MySQL. Lo que le decimos es que
inserte dentro de libros "Un mundo cualquiera" en el campo título, "Pepito Frito" en el campo autor y 2
en el campo cantidad.
6. PROGRAMACIÓN SQL
6
Tutor: Yasser Alvarado S.
Para visualizar los registros de la tabla libros, escribimos el siguiente comando:
Mysql> select * from libros;
Imaginemos ahora que hemos comprado un libro más y que queremos actualizar la cantidad a 3,
veamos ahora como lo podemos modificar.
Modificar registros de una tabla
Mysql> update libros set cantidad=3
where
titulo like 'Un mundo cualquiera';
Le decimos que actualiza la tabla libros, poniendo en cantidad 3 y que la condición es que el título sea
"Un mundo cualquiera". Con where estamos estableciendo una condición, si no la ponemos, lo que
hará es poner 3 en TODOS los registros, por lo que es muy importante no olvidarse el where. Podemos
también hacer la modificación de la siguiente manera:
Mysql> update libros set cantidad=10
where
libro_id = 1;
MODIFICAR EL NOMBRE DE UNA TABLA
Si quisiéramos cambiar el nombre de la tabla libros al de fondo_bibliotecario, haríamos lo siguiente:
Mysql> rename table libros to fondo_bibliotecario;
7. PROGRAMACIÓN SQL
7
Tutor: Yasser Alvarado S.
CONSULTAS DE ACCIÓN
Explicamos detenidamente las sentencias delete, insert into y update, para la realización de
consultas en las bases de datos.
Las consultas de acción son aquellas que no devuelven ningún registro, son las encargadas de acciones
como añadir y borrar y modificar registros. Tanto las sentencias de actualización como las de borrado
desencaderán (según el motor de datos) las actualizaciones en cascada, borrados en cascada,
restricciones y valores por defecto definidos para los diferentes campos o tablas afectadas por la
consulta.
DELETE
Crea una consulta de eliminación que elimina los registros de una o más de las tablas listadas en la
cláusula FROM que satisfagan la cláusula WHERE. Esta consulta elimina los registros completos, no
es posible eliminar el contenido de algún campo en concreto. Su sintaxis es:
DELETE FROM Tabla WHERE criterio
Una vez que se han eliminado los registros utilizando una consulta de borrado, no puede deshacer la
operación. Si desea saber qué registros se eliminarán, primero examine los resultados de una consulta
de selección que utilice el mismo criterio y después ejecute la consulta de borrado. Mantenga copias de
seguridad de sus datos en todo momento. Si elimina los registros equivocados podrá recuperarlos
desde las copias de seguridad.
DELETE
FROM
Empleados
WHERE
Cargo = 'Vendedor'
INSERT INTO
Agrega un registro en una tabla. Se la conoce como una consulta de datos añadidos. Esta consulta
puede ser de dos tipo: Insertar un único registro ó Insertar en una tabla los registros contenidos en otra
tabla.
Para insertar un único Registro:
En este caso la sintaxis es la siguiente:
INSERT INTO Tabla (campo1, campo2, ..., campoN)
VALUES (valor1, valor2, ..., valorN)
Esta consulta graba en el campo1 el valor1, en el campo2 y valor2 y así sucesivamente.
8. PROGRAMACIÓN SQL
8
Tutor: Yasser Alvarado S.
Para seleccionar registros e insertarlos en una tabla nueva
En este caso la sintaxis es la siguiente:
SELECT campo1, campo2, ..., campoN INTO nuevatabla
FROM tablaorigen [WHERE criterios]
Se pueden utilizar las consultas de creación de tabla para archivar registros, hacer copias de seguridad
de las tablas o hacer copias para exportar a otra base de datos o utilizar en informes que muestren los
datos de un periodo de tiempo concreto. Por ejemplo, se podría crear un informe de Ventas mensuales
por región ejecutando la misma consulta de creación de tabla cada mes.
Para insertar Registros de otra Tabla:
En este caso la sintaxis es:
INSERT INTO Tabla [IN base_externa] (campo1, campo2, , campoN)
SELECT TablaOrigen.campo1, TablaOrigen.campo2,,TablaOrigen.campoN FROM Tabla Origen
En este caso se seleccionarán los campos 1,2,..., n de la tabla origen y se grabarán en los campos 1,2,..,
n de la Tabla. La condición SELECT puede incluir la cláusula WHERE para filtrar los registros a
copiar. Si Tabla y Tabla Origen poseen la misma estructura podemos simplificar la sintaxis a:
INSERT INTO Tabla SELECT Tabla Origen.* FROM Tabla Origen
De esta forma los campos de Tabla Origen se grabarán en Tabla, para realizar esta operación es
necesario que todos los campos de Tabla Origen estén contenidos con igual nombre en Tabla. Con
otras palabras que Tabla posea todos los campos de Tabla Origen (igual nombre e igual tipo).
En este tipo de consulta hay que tener especial atención con los campos contadores o autonuméricos
puesto que al insertar un valor en un campo de este tipo se escribe el valor que contenga su campo
homólogo en la tabla origen, no incrementándose como le corresponde.
Se puede utilizar la instrucción INSERT INTO para agregar un registro único a una tabla, utilizando la
sintaxis de la consulta de adición de registro único tal y como se mostró anteriormente. En este caso,
su código especifica el nombre y el valor de cada campo del registro. Debe especificar cada uno de los
campos del registro al que se le va a asignar un valor así como el valor para dicho campo. Cuando no
se especifica dicho campo, se inserta el valor predeterminado o Null. Los registros se agregan al final
de la tabla.
También se puede utilizar INSERT INTO para agregar un conjunto de registros pertenecientes a otra
tabla o consulta utilizando la cláusula SELECT... FROM como se mostró anteriormente en la sintaxis
de la consulta de adición de múltiples registros. En este caso la cláusula SELECT especifica los
campos que se van a agregar en la tabla destino especificada.
La tabla destino u origen puede especificar una tabla o una consulta. Si la tabla destino contiene una
clave principal, hay que asegurarse que es única, y con valores no nulos; si no es así, no se agregarán
los registros. Si se agregan registros a una tabla con un campo Contador, no se debe incluir el campo
9. PROGRAMACIÓN SQL
9
Tutor: Yasser Alvarado S.
Contador en la consulta. Se puede emplear la cláusula IN para agregar registros a una tabla en otra
base de datos.
Se pueden averiguar los registros que se agregarán en la consulta ejecutando primero una consulta de
selección que utilice el mismo criterio de selección y ver el resultado. Una consulta de adición copia
los registros de una o más tablas en otra. Las tablas que contienen los registros que se van a agregar no
se verán afectadas por la consulta de adición. En lugar de agregar registros existentes en otra tabla, se
puede especificar los valores de cada campo en un nuevo registro utilizando la cláusula VALUES. Si
se omite la lista de campos, la cláusula VALUES debe incluir un valor para cada campo de la tabla, de
otra forma fallará INSERT.
Ejemplos
INSERT INTO
Clientes
SELECT
ClientesViejos.*
FROM
ClientesNuevos
SELECT
Empleados.*
INTO Programadores
FROM
Empleados
WHERE
Categoria = 'Programador'
Esta consulta crea una tabla nueva llamada programadores con igual estructura que la tabla empleado y
copia aquellos registros cuyo campo categoria se programador
INSERT INTO
Empleados (Nombre, Apellido, Cargo)
VALUES
(
'Luis', 'Sánchez', 'Becario'
)
INSERT INTO
Empleados
SELECT
Vendedores.*
FROM
Vendedores
WHERE
Provincia = 'Madrid'
UPDATE
10. PROGRAMACIÓN SQL
10
Tutor: Yasser Alvarado S.
Crea una consulta de actualización que cambia los valores de los campos de una tabla especificada
basándose en un criterio específico. Su sintaxis es:
UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, CampoN=ValorN
WHERE Criterio
UPDATE es especialmente útil cuando se desea cambiar un gran número de registros o cuando éstos
se encuentran en múltiples tablas. Puede cambiar varios campos a la vez. El ejemplo siguiente
incrementa los valores Cantidad pedidos en un 10 por ciento y los valores Transporte en un 3 por
ciento para aquellos que se hayan enviado al Reino Unido.:
UPDATE
Pedidos
SET
Pedido = Pedidos * 1.1,
Transporte = Transporte * 1.03
WHERE
PaisEnvío = 'ES'
UPDATE no genera ningún resultado. Para saber qué registros se van a cambiar, hay que examinar
primero el resultado de una consulta de selección que utilice el mismo criterio y después ejecutar la
consulta de actualización.
UPDATE
Empleados
SET
Grado = 5
WHERE
Grado = 2
UPDATE
Productos
SET
Precio = Precio * 1.1
WHERE
Proveedor = 8
AND
Familia = 3
Si en una consulta de actualización suprimimos la cláusula WHERE todos los registros de la tabla
señalada serán actualizados.
UPDATE
Empleados
SET
Salario = Salario * 1.1