Vous êtes sur la page 1sur 109

Bases de Datos

M.T.I Roberto Liquidano Rodrguez Instituto Tecnolgico de Toluca

Definiciones
Base de datos. Es una coleccin de datos relacionados. Los datos son hechos conocidos que pueden registrarse y que tienen un significado implcito Sistema de gestin de bases de datos. Coleccin de programas que permiten a los usuarios crear y mantener una base de datos.
11 de febrero de 2

Usuarios/ Programadores Sistema de Base de datos Programas de Aplicacin/Consultas

Software del SGBD Software para procesar consultas/ Programas

Software para acceder a los datos almacenados

Definicin de la base de datos almacenada (Meta-Datos)

Base de datos Almacenada

11 de febrero de

Entorno de sistema de base de datos

Propsitos de los Sistemas de Gestin de Bases de Datos


Reducir la redundancia e inconsistencia de los datos. Evitar o reducir la informacin duplicada en los diferentes archivos y/o tablas de la base de datos. La Redundancia puede generar inconsistencia de datos debido a que varias copias de los datos pueden no coincidir. Garantizar la integridad de los datos. Los SGBD pueden comprobar las ligaduras de consistencia de los datos almacenados en la base de datos. Reduce los problemas de seguridad. Permite el acceso concurrente. Es posible que varios usuarios puedan actualizar los datos simultneamente.

11 de febrero de

Funciones principales de una BD


Definicin de datos.
Permite establecer las propiedades para las tablas y los campos que forman a la base de datos, tal como: Nombre, tipo de dato, tamao, formato, etc. Tiene que ver con todas aquellas operaciones que permiten la utilizacin de los datos, tales como consultas, modificaciones, actualizaciones, agregaciones, etc. Consiste en definir las caractersticas de acceso a la informacin, para modificacin, actualizacin o insercin.

Manipulacin de datos.

Control de los datos.

11 de febrero de

Lenguajes de base de datos


Lenguaje de definicin de datos. Un esquema de BD se especifica mediante un conjunto de definiciones expresadas en un LDD. El resultado de la compilacin es un conjunto de tablas que se almacenan en un archivo llamado diccionario de datos (metadatos).Especifica un esquema de BD. Lenguaje de manipulacin de datos. Es un lenguaje que permite a los usuarios acceder o manipular los datos organizados mediante el modelo de datos apropiados..Expresa las consultas y actualizaciones de la base de datos. Por manipulacin de datos entendemos: Recuperacin, insercin, borrado y modificacin de 11 de datos 6 los

febrero de

Funciones del Administrador de la Base de Datos


Definicin del esquema. Crea el esquema original de la BD escribiendo un conjunto de definiciones que el LDD traduce a un conjunto de tablas. Estructura de almacenamiento y definicin del mtodo de acceso. Crea las estructuras de almacenamiento y los mtodos de acceso a los datos. Concesin de la autorizacin para el acceso a los datos. Establece y define los permisos a los usuarios y las secciones de la base de datos a la que pueden acceder. Especificacin de las ligaduras de integridad. Los valores almacenados debe satisfacer ciertas ligaduras de integridad.

11 de febrero de

Ejemplo en la terminal >#mysql [enter] mysql> Create database Mi_BD; mysql> use Mi_BD;

11 de febrero de

11 de febrero de

Crear tablas
create table alumnos (IdAlumno int not null primary key auto_increment, Nombre varchar(20), FechaAlta datetime, Materia varchar(20)); * Mostrar la estructura de una tabla: describe alumnos; * Cambiar el nombre de una tabla: Alter table alumnos rename Alumnos; 11 de 10
febrero de

Modificar tablas existentes


* Cambiar nombre de una columna: ALTER TABLE alumnos CHANGE Nombre Nombres VARCHAR(20); * Cambiar un tipo de columna: alter table alumnos change Nombres Nombres varchar(30);
11 de febrero de 11

Modificar tablas existentes:


Cambiar nombre de una columna ALTER TABLE alumnos CHANGE Nombre Nombres VARCHAR(20); Cambiar un tipo de columna alter table alumnos change Nombres Nombres varchar(30);
11 de febrero de 12

Modificar tablas existentes:


Al agragar una columna sta debe tener un valor predeterminado, no puede ser una columna not null, debe tener null (por defecto en mysql) u otro valor predeterminado, para que mysql sepa que valor almacenar.
11 de febrero de 13

Para ingresar datos a una columna especfica


insert into Alumnos (Fecha_nac) values(19660602) ; El comando anterior crear una nueva dupla, colocando los atributos omitidos a null
11 de febrero de 14

Para actualizar el contenido de un atributo se realiza el siguiente comando: update Alumnos SET Fecha_nac = 19660602 where Nombre = 'Roberto';
11 de febrero de 15

11 de febrero de

16

Anexar un usuario desde el monitor mysql accediendo a las tablas host, user y db de la base de datos mysql. 1.- Entre al monitor de mysql como usuario root
11 de febrero de 17

2.- Muestre la estructura de las tablas host, user y db. 3.- Una vez que conozca los campos de las tablas introducir los siguientes valores para usar una base de datos previamente creada y un usuario.
11 de febrero de 18

insert into host values('localhost', 'BiblioTLC','y','y','y','y','y','y','y','y',' y','y','y','y','y','y','y','y','y','y');

11 de febrero de

19

insert into user values('localhost', 'liki',password('abc123'), 'y', 'y','y','y','y','y','y','y','y','y','y','y','y',' y','y', 'y','y','y','y','y','y','y','y','y','y','y','y',' y','','no','no','no',0,0,0,0);
11 de febrero de 20

insert into db values('localhost', 'BiblioTLC','liki', 'y', 'y','y','y','y','y','y','y','y','y','y', 'y','y','y','y','y','y','y','y');

11 de febrero de

21

Reinicie el demonio mysqld

11 de febrero de

22

Existe otra manera manera de administrar los previlegios de usuario: mediante el comando GRANT. Est commando tiene la siguiente sintaxis: GRANT [previlegios] (nombre de columnas) ON nombrebasedatos.nombredetabla TO nombreusuario@nombrehost IDENTIFIED BY contrasea [WITH GRANT OPTIONS]
11 de febrero de 23

Comando utilizando el comando GRANT otorgandole a un usuario la capacidad de conectarse al servidor de mysql absolutamente sin permisos, pero sin ningn previlegio: GRANT usage ON *.* TO anonimo IDENTIFIED BY 'abc123';

11 de febrero de

24

Previlegio ALL ALTER CREATE DELETE DROP

Descripcin

Proporciona todos los previlegios disponibles


Modificar tablas, columnas e indices Crear tablas o bases de datos Borrar registros de las tablas Borrar tablas o bases de datos

INDEX PROCESS FILE

Agragar o eliminar ndices Visualizar y Cancelar procesos del sistema de mysql Leer y escribir archivos en ele servidor

11 de febrero de

25

Previlegios INSERT RELOAD SELECT SHUTDOWN UPDATE USAGE

Descripcin Agregar registros a la base de datos Permite la instruccin FLUSH Efectuar la consulta Select Apagar el servidor mysql Editar registros existentes en la base de datos Permite conexin al servidor, pero sin previlegio alguno

11 de febrero de

26

El comando para otorgarle a un usuario el previlegio SELECT en todas las tablas de la Base de Datos

11 de febrero de

27

GRANT SELECT ON NombreBD.* TO anonimo identified by 'abc123';

11 de febrero de

28

GRANT SELECT ON BaseDatos.Tabla TO anonimo IDENTIFIED BY 'abc123';

11 de febrero de

29

* Para lograr que un usuario actualice solo algunos atributos de una tabla: grant update (Host, User, Passwd) on mysql.user.* to anonimo identified by 'abc123';

11 de febrero de

30

Eliminacin de usuarios y revocacin de previlegios


MySQL ofrece dos formas para eliminar un usuario: 1. Por la edicin manual de las tablas de los permisos de acceso: DELETE FROM user where User = 'anonimo' AND Host = '%'; DELETE FROM db WHERE User = 'anonimo' AND Host = '%';
11 de febrero de 31

Estos comandos eliminarn los registros de anonimo de las tablas user y db donde el nombre del host es el carter comodn. Es posible que todava existan los otros registros d anonimo, as que se tiene que reaizar una depuracion manual
11 de febrero de 32

Para lo anterior se pueden ejecutar las siguientes instrucciones: SELECT * from user WHERE user = 'anonimo' AND Host = '%' ; SELECT * from db WHERE user = 'anonimo' AND Host = '%' ;
11 de febrero de 33

2. Revocando los previlegios de un usauarios, qu tambin existen dos formas: a. Editando las tablas de permisos de acceso con instruciones SQL. b. Por medio de la instruccin REVOKE que es la ms recomendable: REVOKE [previlegios] (columnas) ON nombrebasededatos.nombredetabla FROM nombreusuario@nombredehost;
11 de febrero de 34

Para eliminar completamente los previlegios de anonimo: REVOKE ALL ON *.* FROM 'anonimo'; Para eleiminar previlegios especifcos: REVOKE UPDATE (Nombre, Materia) ON itt_bd.Nombre FROM 'anonimo';

11 de febrero de

35

Palabras reservadas en MySql


CREATE ALTER INSERT SELECT FROM ON WHEN ORDER BY JOIN CROSS JOION DELETE UPDATE SET LEFT JOIN FULL JOIN AND OR LIKE INNER THEN ELSE DATE AS DELAYED CASE

RIGHT JOIN INTO LIMIT DROP END WHERE GROUP BY TIMESTAM P

11 de febrero de

36

Uso de ndices
ndice es un archivo estructurado que facilita el acceso a los datos. Es la columna adecuada para aumentar considerablemente la velocidad de una consulta. Un ndice trabaja como un separador alfabetico en un archivero, permitiendo ir directamente a la parte del alfabeto que se 11 de 37 est buscando.
febrero de

La desventaja de usar ndices, es que si existen demasiados puede tener un efecto adverso. Otra desventaja es la de agregar una fila en una tabla indexada es ms lento que como si no estuviera. Para seleccionar la columna a indexar, sta debe ser la que utilice con ms frecuencia en las consultas, sobre todo las que van despus de la clusula where.
11 de febrero de 38

Los ndices trabajan mejor en los atributos qu contienen datos nicos. sta es una de las razones por las cuales las claves son su mejor opcin para ser ndices. Un ndice puede estar constituido por ms de una columna. Por ejemplo, si se tiene un proyecto con los atributos Nombre y Apell_Pat puede tener un ndice basado en stos atributos.
11 de febrero de 39

2.7.2 Identificadores nicos y compuestos


Los ndices trabajan mejor en los atributos qu contienen datos nicos. sta es una de las razones por las cuales las claves son su mejor opcin para ser ndices. Un ndice puede estar constituido por ms de una columna. Por ejemplo, si se tiene un proyecto con los atributos Nombre y Apell_Pat puede tener un ndice basado en stos atributos
11 de febrero de 40

2.7.2 Identificadores nicos y compuestos


Tambin se puede taner ms de un ndice en una tabla donde el nmero mximo es hasta 16. Cuando se declara una llave primaria , Mysql crea automticamente un ndice, por lo tanto ya no habra necesidad de crear un ndice en sta columna.
11 de febrero de 41

La sintaxis para crear unndice es la siguiente: CREATE INDEX nombre_indice ON nombre_tabla(lista_nombre_columna s); para borrar un ndice: DROP INDEX (nombre_indice) ON nombre_tabla;
11 de febrero de 42

Otra manera

ALTER TABLE nombre_tabla DROP INDEX (nombre_indice); Para borrar una clave primaria: ALTER TABLE nombre_tabla DROP PRIMARY KEY;
11 de febrero de 43

Tipos de datos
Un tipo de dastos define las caractersticas de los datos que la columna almacenar. Puede haber diferentes tipos de datos en una tabla, pero cada columna almacenar su propio tipo de informacin (definicin de columna).
11 de febrero de 44

Existen tres grupos de formatos de datos: - numerco: nmeros positivos o negativos y en diferentes formatos (hexadecimal, notacin 11 de 45 cientifica o dcimal). febrero de

Existen modificadores de columna, que ayudan a definir atributos adicionales de las columnas, como son: autoincrement, unsigned, primary key, null, not null y binary.

11 de febrero de

46

Tipos numricos
TIPO TINYINT ESP. MEM 1 RANGO -128 a 127
-32768 a 32767

SIN SIGNO 0 a 255 0 a 65535


0 a 16777215

SMALL INT 2
MEDIUMINT

3 4

-8388608 a 8388607 -2147483648 a 2147483647

INT 11 de febrero de

0a 4294967295

47

Tipos numricos
BIGINT 8
9223372036854 775808 a 9223372036854 775807

FLOAT

VARA SEGN LOS VALORES

DOUBLE (M, D)

VARA SEGN LOS VALORES

DECIMAL (M, D)

EL VALOR M+2 BYTES

VARA SEGN LOS VALORES

11 de febrero de

48

Reglas generales para escoger los tipos de datos:


-Utilizar tipos numricos para la clave primaria. La hace nica y permite una forma veloz de recuperacin de informacin. -Use decimales para nmeros realmente grandes. Los tipos decimal se almacenan de forma diferente y no tiene lmites.
11 de febrero de 49

Reglas generales para escoger los tipos de datos:


-En moneda use decimal para tener mayor precisin. Use el tipo de datos correcto. Usar un nmero ms grande de lo necesario puede conducirlo a ser ineficiente en el futuro
11 de febrero de 50

Modificadores
Los modificadores auto_increment, unsigned y zerofill slo se pueden utilizar con datos numricos. La columna con modificador auto_increment no reutiliza el mximo valor si usted lo borra. Se debe usar un null, 0 o espacio en blanco, como valor, cuando inserte una nueva fila. Para obtener la secuencia numrica ms reciente, se utiliza la funcin: select last_insert_id() from Descripcion; 11 de 51
febrero de

Modificadores

El modificador de columna zerofill se usa para desplegar los ceros a la izquierda de un nmero de acuerdo con el ancho de la columna.
11 de febrero de 52

Tipo char(x) varchar(x) tnytext tinyblob text

Tipos carcter o cadena


Tamao max 255 bytes 255 bytes 255 bytes 255 bytes 65535 bytes Esp. En disco X byte X+1 byte X+1 byte X + 2 byte X+2 byte

blob mediumtext mediumblob longtext longblob

65535 bytes 1.6 MB 1.6 MB 4.2 GB 4.2 GB

X+2 byte X+3 byte X+3 byte X+4 byte X+4 byte

11 de febrero de

53

Tipos carcter o cadena


Los tipos text y blob (objeto binario grande) son tipos de longitud variable que pueden almacenar grandes cantidades de datos. Se pueden usar stos tipos cuando se quieran almacenar imgenes, sonidos o grandes cantidades de texto, como pginas web o documentos.
54

11 de febrero de

Modificadores
El modificador binary hace que los valores almacenados en estos tipos sean tratados como cadenas binarias, hacindolas sensibles a mayisculas y minsculas. El modificador default permite especificar el valor de una columna, si no existe alguno. El valor predeterminado es null para 11todos los tipos, excepto para enum de 55
febrero de

Modificadores
Los modificadores null y not null especifican si una columna debe tener o no valores. Si una columna es not null debe tener algn valor. Si utiliza null y not null puede forzar restricciones requeridas para los datos que van a almecenarse. El modificador unique refuerza la regla de que todos los datos dentro dentro de la columna declarada deben ser unicos.
56

11 de febrero de

Estos tipos son enum, set y date/time. Tipo enum es una lista enumerada. Esto significa que una columna con este tipo slo puede almacenar uno de los valores declarados en una lista dada. Por ejemplo: Create table test( return enum('s','n') default 'n', tam enum('ch','m','xg','xgg'), color 11 de 57 enum('negro','rojo',blanco')); febrero de

Tipos Miscelneos

Tipo set
Set tambin almacena una lista de valores, la diferencia es que set pueda almacenar ms de una opcin y puede contener hasta 64 elementos enla lista de opciones. Por ejemplo: Create table test(Anunciar set('pagina web', 'television','periodico'));
58

11 de febrero de

Tipo Set
Insert into test (Anunciar) values ('pagina web', 'television'); Tanto set y enum son miscelaneos porque se ven y actuan como cadenas, pero se almacenan como nmeros. Select * fro test where Anunciar = 1; Para saber que valores usa mysql: Select Anunciar, Anunciar +0 from 11 de 59 test;
febrero de

Tipos Data/Time
Tipo DATATIME DATE TIME YEAR TIMESTAMP Formato AAAA-MM-DD HH:MM:SS AAAA-MM-DD HH:MM:SS AAAA VARIABLE Valor de cero 0000-00-00 00:00:00 0000-00-00 00:00:00
0000

0000000000 (EN SU MAYOR LONGITUD)

11 de febrero de

60

TIMESTAMP es til formato de campo por lo que dicha columna se establecer con la fecha y la hora actuales siempre que la fila sea actualizada o insertada en la tabla. Porporciona una marca de ultima actualizacin. Presenta varios formatos externos dependiendo de los digitos que van desde 2 hasta 14. timestamp(2)-timestamp(14)
11 de febrero de 61

Prctica

select * from tabla where campo like '%param%;'

11 de febrero de

62

Select campos from (tabla1 inner join tabla2 on tabla1.campo = tabla2.campo) where tabla1.campo1 tabla2.campo like '%param%' ;
11 de febrero de 63

Consultas de Accin Las consultas de accin son aquellas que no devuelven ningn registro, son las encargadas de acciones como aadir y borrar y modificar registros.

DELETE

Crea una consulta de eliminacin que elimina los registros de una o ms de las tablas listadas en la clusula FROMque satisfagan la clusula WHERE. Esta consulta elimina los registros completos, no es posible eliminar el contenido de algn 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 operacin. Si desea saber qu registros se eliminarn, primero examine los resultados de una consulta de seleccin que utilice el mismo criterio y despus 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 aadidos. Esta consulta puede ser de dos tipos:

Insertar un nico registro Insertar en una tabla los registros contenidos en otra tabla. 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. Hay que prestar especial atencin a acotar entre comillas simples (') los valores literales (cadenas de caracteres) y las fechas indicarlas en formato mm-ddaa y entre caracteres de almohadillas (#).

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 creacin 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 podra crear un informe de Ventas mensuales por regin ejecutando la misma consulta de creacin de tabla cada mes.

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 TablaOrigen

En este caso se seleccionarn los campos 1,2, ..., n de la tabla origen y se grabarn en los campos 1,2,.., n de la Tabla.

La condicin SELECTpuede incluir la clausula WHEREpara filtrar los registros a copiar. Si Tabla y TablaOrigen poseen la misma estrucutra podemos simplificar la sintaxis a: INSERT INTO Tabla SELECT TablaOrigen.* FROM TablaOrigen

Tambin se puede utilizar INSERT INTO para agregar un conjunto de registros pertenecientes a otra tabla o consulta utilizando la clsula SELECT ... FROM como se mostr anteriormente en la sintaxis de la consulta de adicin de mltiples registros. En este caso la clusula SELECTespecifica los campos que se van a agregar en la tabla destino especificada.

En lugar de agregar registros existentes en otra tabla, se puede especificar los valores de cada campo en un nuevo registro utilizando la clusula VALUES. Si se omite la lista de campos, la clusula VALUES debe incluir un valor para cada campo de la tabla, de otra forma fallar INSERT. INSERT INTO Clientes SELECT Clientes_Viejos.* FROM Clientes_Nuevos;

SELECT Empleados.* INTO Programadores FROM Empleados WHERE Categoria = 'Programador' INSERT INTO Empleados (Nombre, Apellido, Cargo) VALUES ('Luis', 'Snchez', 'Becario');

INSERT INTO Empleados SELECT Vendedores.* FROM Vendedores WHERE Fecha_Contratacion < Now() - 30;

UPDATE Crea una consulta de actualizacin que cambia los valores de los campos de una tabla especificada basndose en un criterio especfico. Su sintaxis es: UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2, ... CampoN=ValorN WHERE Criterio;

UPDATE es especialmente til cuando se desea cambiar un gran nmero de registros o cuando stos se encuentran en mltiples 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 PaisEnvo = 'ES'; UPDATE no genera ningn resultado.

Para saber qu registros se van a cambiar, hay que examinar primero el resultado de una consulta de seleccin que utilice el mismo criterio y despus ejecutar la consulta de actualizacin. 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 actualizacin suprimimos la clusula WHERE todos los registros de la tabla sealada sern actualizados. UPDATE Empleados SET Salario = Salario * 1.1

Consultas de Unin Internas Consultas de Combinacin entre tablas Las vinculaciones entre tablas se realiza mediante la clusula INNERque combina registros de dos tablas siempre que haya concordancia de valores en un campo comn. Su sintaxis es: SELECT campos FROM tb1 INNER JOIN tb2 ON tb1.campo1 comp tb2.campo2

Ejemplo

"SELECT Titulo, Notas FROM (titulo inner join Descripcion on titulo.IdTitulo = Descripcion.IdTitulo) where Notas like 'param.Text'

En donde: tb1, tb2 Son los nombres de las tablas desde las que se combinan los registros. campo1, campo2 Son los nombres de los campos que se combinan.

Si no son numricos, los campos deben ser del mismo tipo de datos y contener el mismo tipo de datos, pero no tienen que tener el mismo nombre. comp Es cualquier operador de comparacin relacional : =, <, >, <=, >=, o <>.

Se puede utilizar una operacin INNER JOIN en cualquier clusula FROM. Esto crea una combinacin por equivalencia, conocida tambin como uni interna. Las combinaciones Equi son las ms comunes; stas combinan los registros de dos tablas siempre que haya concordancia de valores en un campo comn a ambas tablas.

Se puede utilizar INNER JOIN con las tablas Departamentos y Empleados para seleccionar todos los empleados de cada departamento. Por el contrario, para seleccionar todos los departamentos (incluso si alguno de ellos no tiene ningn empleado asignado) se emplea LEFT JOIN o todos los empleados (incluso si alguno no est asignado a ningn departamento), en este caso RIGHT JOIN.

El ejemplo siguiente muestra cmo podra combinar las tablas Categoras y Productos basndose en el campo IDCategoria: SELECT Nombre_Categora, NombreProducto FROM Categorias INNER JOIN Productos ON Categorias.IDCategoria = Productos.IDCategoria;

En el ejemplo anterior, IDCategoria es el campo combinado, pero no est incluido en la salida de la consulta ya que no est incluido en la instruccin SELECT. Para incluir el campo combinado, incluir el nombre del campo en la instruccin SELECT, en este caso, Categorias.IDCategoria.

Tambin se pueden enlazar varias clusulas ONen una instruccin JOIN, utilizando la sintaxis siguiente: SELECT campos FROM tabla1 INNER JOIN tabla2 ON tb1.campo1 comp tb2.campo1 AND ON tb1.campo2 comp tb2.campo2) OR ON tb1.campo3 comp tb2.campo3)];

Tambin puede anidar instrucciones JOIN utilizando la siguiente sintaxis: SELECT campos FROM tb1 INNER JOIN (tb2 INNER JOIN [( ]tb3 [INNER JOIN [( ]tablax [INNER JOIN ...)] ON tb3.campo3 comp tbx.campox)] ON tb2.campo2 comp tb3.campo3) ON tb1.campo1 comp tb2.campo2;

Un LEFT JOIN o un RIGHT JOIN puede anidarse dentro de un INNER JOIN, pero un INNER JOIN no puede anidarse dentro de un LEFT JOIN o un RIGHT JOIN. Por ejemplo:

SELECT DISTINCTROW Sum([Precio unidad] * [Cantidad]) AS [Ventas], [Nombre] & " " & [Apellidos] AS [Nombre completo] FROM [Detalles de pedidos], Pedidos, Empleados, Pedidos INNER JOIN [Detalles de pedidos] ON Pedidos. [ID de pedido] = [Detalles de pedidos].[ID de pedido], Empleados INNER JOIN Pedidos ON Empleados.[ID de empleado] = Pedidos.[ID de empleado] GROUP BY [Nombre] & " " & [Apellidos];

Crea dos combinaciones equivalentes: una entre las tablas Detalles de pedidos y Pedidos, y la otra entre las tablas Pedidos y Empleados. Esto es necesario ya que la tabla Empleados no contiene datos de ventas y la tabla Detalles de pedidos no contiene datos de los empleados. La consulta produce una lista de empleados y sus ventas totales.

Si empleamos la clusula INNERen la consulta se seleccionar slo aquellos registros de la tabla de la que hayamos escrito a la izquierda de INNER JOIN que contengan al menos un registro de la tabla que hayamos escrito a la derecha.

Para solucionar esto tenemos dos clusulas que sustituyen a la palabra clave INNER, estas clusulas son LEFTy RIGHT. LEFTtoma todos los registros de la tabla de la izquierda aunque no tengan ningn registro en la tabla de la izquierda. RIGHT realiza la misma operacin pero al contrario, toma todos los registros de la tabla de la derecha aunque no tenga ningn registro en la tabla de la izquierda.

Tarea pendiente de la Unidad II Select campos from (tabla1 inner join tabla2 on tabla1.campo = tabla2.campo) where tabla1.campo1 tabla2.campo like '%param%' ;

Consultas de Unin Externas Se utiliza la operacin UNION para crear una consulta de unin , combinando los resultados de dos o ms consultas o tablas independientes. Su sintaxis es:

[TABLE] consulta1 UNION [ALL] [TABLE] consulta2 [UNION [ALL] [TABLE] consultan [ ... ]]

En donde: consulta1, consulta2, consultan Son instrucciones SELECT, el nombre de una consulta almacenada o el nombre de una tabla almacenada precedido por la palabra clave TABLE.

SELECT cast(number as UNSIGNED) as numero FROM planning WHERE numero BETWEEN 3000 AND 3002;

mysql> SELECT CAST(1-2 AS UNSIGNED) -> 18446744073709551615 mysql> SELECT CAST(CAST(1-2 AS UNSIGNED) AS SIGNED); -> -1

Tenga en cuenta que si un operando es un valor de coma flotante, el resultado es de coma flotante y no est afectado por la regla precedente. (En este contexto, los valores de la columna DECIMAL se tratan como valores con punto flotante.) mysql> SELECT CAST(1 AS UNSIGNED) - 2.0; -> -1.0

Si usa una cadena en una operacin aritmtica, se convierte en nmero en coma flotante.

Resguardar una base de datos

-En la terminal ejecutar: -mysqldump BD > BD.dump

Restaurar una base de datos


-Entrar a mysql -Borrar la BD -Crear la BD vacia -salir de mysql -En la terminal: -editar BD.dump

-inserte antes de las lneas de ejecucinr instrucciones de mysql la siguiente linea: use BD; -salve y cierre el editor -ejecutar en la terminal: mysql < BD.dump

Vous aimerez peut-être aussi