Taller 2 de MBD SQL 02062020
Taller 2 de MBD SQL 02062020
Taller 2 de MBD SQL 02062020
CREATE SCHEMA: Una base de datos contiene uno o más esquemas (schema), los
esquemas (schema) contienen objetos de base de datos como por ejemplo tablas. Para
definir un esquema (schema) sobre una base de datos se usa la sentencia CREATE
SCHEMA.
Ejemplo 1:
Ejemplo 2:
nombre_esquema.nombre_objeto
DROP SCHEMA: Esta sentencia permite eliminar un esquema (schema) sí está vació
(todos los objetos han sido eliminados).
contiene:
CREATE TABLE: Esta sentencia es utilizada para crear una tabla y definir columnas.
Sintaxis:
NULL (NULO)
Indica que la columna puede contener valores nulos (NULL) (esta restricción está por
defecto).
UNIQUE (UNICO)
Especifica que un grupo de una o más columnas de una tabla contienen valores únicos,
en una restricción único (unique) los valores nulos (NULL) no son iguales.
CHECK (CHEQUEO)
La cláusula de chequeo (CHECK) especifica una expresión que produce un resultado
booleano (Boolean), de una inserción o actualización.
La condición en la cláusula de chequeo (CHECK) no puede contener subconsultas, ni
puede referenciar a variables ni a otra columna en una fila.
Esta cláusula especifica una restricción de clave foránea, la cual requiere que un grupo
de una o más columnas de una tabla, deben contener valores que están presentes en
otra tabla.
Además, cuando los datos referenciados son cambiados, ciertas acciones pueden
tomar lugar. La cláusula ON DELETE especifica la acción a ejecutar cuando una fila
referenciada es eliminada.
CASCADE
Elimina todas las filas referenciadas en otras tablas.
Ejemplo 3:
3.1)
TEMPORARY o TEMP
Tanto los datos como la estructura de las tablas temporales son eliminadas de manera
automática al terminar la sesión de usuario actual.
En los Sistemas de Gestión de Base de Datos como MySQL la restricción NOT NULL es
opcional cuando se especifica la columna como primary key (Está implícita con primary
key).
ÍNDICES
CREATE INDEX construye un índice sobre una tabla especificada. Los índices son
principalmente usados para mejorar el rendimiento de acceso a los datos.
Sintaxis:
CREATE [ UNIQUE ] INDEX nombre_indice ON
nombre_tabla(columnas);
Ejemplo 5
En este ejemplo, se crea un índice llamado telindex sobre la tabla emp. El índice en
este ejemplo es usado para almacenar y ordenar valores únicos.
DROP INDEX:
Para eliminar un índice de una columna, se usa DROP INDEX
Sintaxis:
Ejemplo 6:
ALTER TABLE:
La sentencia ALTER TABLE es usada para ejecutar múltiples operaciones. Con ALTER
TABLE se puede agregar columnas, eliminar columnas, cambiar el tipo, etc.
Sintaxis:
Ejemplo 7:
Esta sentencia permite agregar una columna país del tipo VARCHAR(10) a la tabla
Ejemplo 8:
Con ALTER TABLE es posible cambiar el nombre de una tabla, el siguiente ejemplo lo
ilustra:
Ejemplo 9:
DROP TABLE: La sentencia DROP TABLE permite eliminar una o más tablas de una
base de datos. Sólo el propietario de esta puede eliminar la tabla.
DROP TABLE remueve los índices, disparadores (triggers) y las restricciones que
existen sobre la tabla.
Sintaxis:
Ejemplo 10
Sintaxis:
INSERT INTO nombre_tabla [ ( columna [, ...] ) ]
{ DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) |
Consulta_SELECT }
Es posible usar INSERT con SELECT para insertar muchas filas en una sola sentencia.
INSERT INTO nombre_tabla1 (col1,col2,...) SELECT
col1,col2,.. FROM nombre_tabla2;
Ejemplo 10.1
CARGAR DATOS MASIVOS (COPY): Para cargar datos en una tabla desde un archivo
externo se usa el comando COPY. Este comando también puede ser utilizado para
copiar el contenido de una tabla a la salida estándar o llevar ese contenido a un archivo
externo.
Sintaxis:
COPY table
FROM { 'filename' | stdin }
[ [USING] DELIMITERS 'delimiter' ]
COPY table
TO { 'filename' | stdout }
[ [USING] DELIMITERS 'delimiter' ]
Por defecto, el delimitador de columnas es la tabulación (\t) y el delimitador de filas o
registros es el salto de línea [enter (\n)].
Ejemplo 11:
Ejemplo 12:
UPDATE cliente
SET nombre='Luis'
Where id_cliente=1;
Ejemplo 13 :
13.2) Ejecute las siguientes sentencias de inserción de datos en las tablas antes creadas:
Ejemplo 14:
SELECT automovil.no_personal,placa,marca,modelo,año,kilometraje
FROM personal INNER JOIN automovil ON
(personal.no_personal=automovil.no_personal);
En el ejemplo anterior la columna no_personal existe en las dos tablas, por lo tanto se
debe colocar el nombre de la tabla de donde se va a extraer la información, existe una
sintaxis alternativa que permite obtener el mismo resultado sin tener que especificar las
columnas en la condición.
SELECT * FROM personal NATURAL JOIN automovil;
RIGHT OUTER JOIN: La sentencia Right Outer JOIN hace corresponder los registros
de la tabla del lado derecho con los registros de la tabla del lado izquierdo basándose
en la igualdad de valores que se especifica en la condición JOIN. Además, también
incluye aquellos registros presentes en la tabla del lado derecho que no están
asociados con los registros de la tabla del lado izquierdo.
Este tipo de JOIN es llamado Right Outer JOIN porque el valor de la columna de la tabla
del lado derecho es la base con la cual se realiza la comparación y la operación JOIN.
Si no hay valor asociado, se muestra el valor NULL.
Ejemplo 15:
LEFT OUTER JOIN: La sentencia Left Outer JOIN hace corresponder los registros de
la tabla del lado izquierdo con los registros de la tabla del lado derecho, basándose en
la igualdad de valores que es especificada en la condición JOIN. Además, también
incluye aquellos registros presentes en la tabla del lado izquierdo, que no están
asociados con los registros de la tabla del lado derecho.
Este tipo de JOIN es llamado Left Outer JOIN porque el valor de la columna de la tabla
del lado izquierdo es la base con la cual se realiza la comparación y la operación JOIN.
Para hacer la correspondencia de los registros de la segunda tabla, si no se puede
realizar la equivalencia de los valores, se muestra un valor NULL.
Ejemplo 16:
Usuarios y Privilegios
Cada cluster de base de datos contiene un conjunto de usuarios de base de datos. Un
usuario es propietario de un objeto de base de datos (por ejemplo: una tabla) y puede
otorgar privilegios sobre estos objetos a otros usuarios.
El metacomando \du ejecutado desde la línea de comandos del psql lista los usuarios
de base de datos disponibles.
Grupos: Los grupos son una manera lógica de agrupar usuarios para administración
sencilla de privilegios, los privilegios pueden ser otorgados o revocados a todo un
grupo. Para crear un grupo se emplea el comando CREATE GROUP.
CREATE GROUP name;
El metacomando \dg ejecutado desde la línea de comandos del psql lista los grupos de
usuarios de base de datos disponibles.
Privilegios: Los privilegios no son más que derechos que reciben usuarios sobre
objetos de base de datos, estos derechos permiten realizar operaciones diversas como
por ejemplo: eliminar datos de tablas, crear tablas, definir restricciones, etc.
El propietario de un objeto es generalmente el usuario que ejecutó la sentencia de
creación, es posible otorgar privilegios sobre objetos de base de datos a otros usuarios,
esto se realiza haciendo uso del comando GRANT, algunos de los privilegios que
pueden ser otorgados y revocados son: SELECT, INSERT, UPDATE, DELETE,
REFERENCES, TRIGGER, CREATE y TEMPORARY.
La palabra PUBLIC indica que el privilegio es otorgado a todos los usuarios disponibles,
incluyendo aquellos que sean creados posteriormente.
Ejemplos:
Ejemplo 17:
Hacer uso de vistas es un aspecto clave de un buen diseño de base de datos. Las
vistas permiten encapsular los detalles de la estructura de las tablas.
Ejemplo 18
Cree dos tablas: ciudades y capitales. Las capitales son ciudades, así si se quiere
mostrar las capitales, implícitamente se están listando ciudades:
Si se desea consultar todas las ciudades, se construye la siguiente vista para obtener la
información: