10

Click here to load reader

Modulo de programacion sql unidad II

  • Upload
    firemas

  • View
    98

  • Download
    1

Embed Size (px)

DESCRIPTION

SQL

Citation preview

Page 1: Modulo de programacion sql   unidad II

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;

Page 2: Modulo de programacion sql   unidad II

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;

Page 3: Modulo de programacion sql   unidad II

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;

Page 4: Modulo de programacion sql   unidad II

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.

Page 5: Modulo de programacion sql   unidad II

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.

Page 6: Modulo de programacion sql   unidad II

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;

Page 7: Modulo de programacion sql   unidad II

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.

Page 8: Modulo de programacion sql   unidad II

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

Page 9: Modulo de programacion sql   unidad II

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

Page 10: Modulo de programacion sql   unidad II

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