Sei sulla pagina 1di 12

2.

1 Creación del esquema de la base de datos

El SQL es un lenguaje estándar de programación para el acceso a bases de datos.

El lenguaje SQL se utiliza para acceder y manipular datos en cualquier base de datos del mercado,
como por ejemplo, para las bases de datos MySQL, Oracle, DB2, SQL Server, Access.

El SQL es un lenguaje estructurado y un estándar ANSI para el acceso y manipulación de los datos
de cualquier base de datos.

El SQL se compone de sentencias SQL, cada una con una utilidad diferente, como por ejemplo:

 Creación de una base de datos (CREATE DATABASE)


 Creación de una tabla (CREATE TABLE)
 Creación de una vista (CREATE VIEW)
 Creación de un índice de una tabla (CREATE INDEX)
 Creación de procedimientos almacenados (CREATE PROCEDURE)
 Creación de disparadores (CREATE TRIGGER)

2.2 Actualización, modificación y eliminación del esquema de la base de datos.

 Consultar los datos almacenados en una tabla (SELECT)


 Insertar datos en una tabla (INSERT)
 Modificar datos ya existentes en una tabla (UPDATE)
 Borrar datos almacenados en una tabla (DELETE)
 Dar permiso de acceso a los datos de una tabla (GRANT)
 Eliminar permisos de acceso a datos de una tabla (REVOKE)
 Finalizar la transacción de una sentencia SQL (COMMIT)
 Retroceder la transacción de una sentencia SQL (ROLLBACK).

Unidad 3: Lenguaje de manipulación de datos (DML)

3.1 Inserción, eliminación y modificación de registros

DML está compuesto por sentencias que sirven para :

Insertar(INSERT)
La sentencia INSERT INTO se utiliza para insertar nuevas filas en una tabla.
Es posible insertar una nueva fila en una tabla de dos formas distintas:
 INSERT INTO nombre_tabla 
VALUES (valor1, valor2, valor3, .)
 INSERT INTO nombre_tabla (columna1, columna2, columna3,.) 
VALUES (valor1, valor2, valor3, .)
Ejemplo:
Dada la siguiente tabla personas:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO

Si queremos insertar una nueva fila en la tabla personas, lo podemos hacer con cualquiera
de las dos sentencias siguientes:
 INSERT INTO personas 
VALUES ('PEDRO', 'RUIZ', 'GONZALEZ') 
INSERT INTO personas (nombre, apellido1, apellido2) 
VALUES ('PEDRO', 'RUIZ', 'GONZALEZ')
Cualquiera de estas sentencias anteriores produce que se inserte una nueva fila en la tabla
personas, quedando así dicha tabla:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO
PEDRO RUIZ GONZALEZ

modificar (UPDATE)

La sentencia UPDATE se utiliza para modificar valores en una tabla.

La sintaxis de SQL UPDATE es:

UPDATE nombre_tabla 
SET columna1 = valor1, columna2 = valor2 
WHERE columna3 = valor3

La cláusula SET establece los nuevos valores para las columnas indicadas.

La cláusula WHERE sirve para seleccionar las filas que queremos modificar.

Ojo: Si omitimos la cláusula WHERE, por defecto, modificará los valores en todas las filas de la
tabla.

Ejemplo del uso de SQL UPDATE

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO
PEDRO RUIZ GONZALEZ
Si queremos cambiar el apellido2 'BENITO' por 'RODRIGUEZ' ejecutaremos:

UPDATE personas 
SET apellido2 = 'RODRIGUEZ' 
WHERE nombre = 'ANTONIO' 
AND apellido1 = 'GARCIA' 
AND apellido2 = 'BENITO'

Ahora la tabla 'personas' quedará así:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

borrar (DELETE)

La sentencia DELETE sirve para borrar filas de una tabla.

La sintaxis de SQL DELETE es:

DELETE FROM nombre_tabla 


WHERE nombre_columna = valor

Si queremos borrar todos los registros o filas de una tabla, se utiliza la sentencia:

DELETE * FROM nombre_tabla;

Ejemplo de SQL DELETE para borrar una fila de la tabla personas

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

Si queremos borrar a la persona LUIS LOPEZ PEREZ, podemos ejecutar el comando:

DELETE FROM personas 


WHERE nombre = 'LUIS' 
AND apellido1 = 'LOPEZ' 
AND apellido2 = 'PEREZ' 

La tabla 'personas' resultante será:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

3.2 Consultas de registros

<

Sintaxis SQL SELECT


 SELECT * FROM nombretabla
 SELECT columna1, columna2 FROM nombretabla
Para los ejemplos, tendremos la siguiente tabla de personas denominada “personas”
Estos son los datos almacenados en la tabla “personas”

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
LUIS LOPEZ PEREZ

Si queremos consultar todos los datos de la tabla “personas”


 SELECT * FROM personas
Este será el resultado:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
LUIS LOPEZ PEREZ

Si queremos consulta todos los nombres y primer apellido de todas las personas
 SELECT nombre, apellido1 FROM personas
Este será el resultado:

nombre apellido1
ANTONIO PEREZ
ANTONIO GARCIA
LUIS LOPEZ

3.2.1 Recuperación de datos

La recuperación de los datos en el lenguaje SQL se realiza mediante la sentencia SELECT,


seleccionar. Esta sentencia permite indicar al SGBD la información que se quiere
recuperar. Esta es la sentencia SQL, más habitual. La sentencia SELECT consta de cuatro
partes básicas:

 La cláusula SELECT seguida de la descripción de lo que se desea ver, los nombres de las
columnas a seleccionar. Esta parte es obligatoria.

 La cláusula FROM seguida de la especificación de las tablas de las que se han de obtener
los datos. Esta parte es obligatoria.

 La cláusula WHERE seguida por un criterio de selección, una condición. Esta parte es
opcional.

 La cláusula ORDER BY seguida por el criterio de ordenación. Esta parte es opcional.

Una primera aproximación a la sintaxis de la sentencia SELECT puede mostrarnos la


siguiente expresión:

SELECT {* | {columna,}+} FROM {tabla,}+ [WHERE condición] [ORDER BY


{expresiónColumna [ASC | DESC],}+];

Selección de columnas

Las columnas a seleccionar se enumeran sin más en la cláusula SELECT. Para seleccionar
todas las columnas use el carácter asterisco ' *'.

Cuando se consulta una base de datos, los nombres de las columnas se usan como
cabeceras de presentación. Si éste resulta demasiado largo, corto o críptico, puede
cambiarse con la misma sentencia SQL de consulta, creando un alias de columna.

3.2.2 Restricción y ordenación de datos

ORDER BY se utiliza para ordenar los resultados de una consulta, según el valor de la columna
especificada.

Por defecto, se ordena de forma ascendente (ASC) según los valores de la columna.

Si se quiere ordenar por orden descendente se utiliza la palabra DES

SELECT nombre_columna(s) 
FROM nombre_tabla 
ORDER BY nombre_columna(s) ASC|DESC
Por ejemplo, en la tabla personas :

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO

SELECT nombre, apellido1 


FROM personas 
ORDER BY apellido1 ASC 

Esta es la consulta resultante:

nombre apellido1
LUIS LOPEZ
ANTONIO GARCIA
ANTONIO PEREZ

Ejemplo de ordenación descendiente (DES)

SELECT nombre, apellido1 


FROM personas 
ORDER BY apellido1 DESC

Esta es la consulta resultante:

nombre apellido1
ANTONIO PEREZ
ANTONIO GARCIA
LUIS LOPEZ

3.2.3 Informes de datos agregados mediante funciones de grupo

La cláusula GROUP BY combina los registros con valores idénticos en la lista de campos
especificada en un único registro. Para cada registro se puede crear un valor agregado si se
incluye una función SQL agregada como por ejemplo SUM o COUNT, en la instrucción
SELECT. Su sintaxis es:
En la cláusula GROUP BY se colocan las columnas por las que vamos a agrupar. Y en la
cláusula HAVING filtra los registros una vez agrupados.

3.2.4 Visualización de datos de varias tablas

La verdadera potencia del SQL se alcanza cuando combinamos el contenido de más de una
tabla. Suponga que desea conseguir una lista con los empleados y los departamentos para
los que trabajan. Esta información está repartida en las dos tablas empleado y
departamento.

Si necesitamos obtener información de más de una tabla, tendremos la opción de utilizar


subconsultas o combinaciones. Si la tabla de resultados final debe contener columnas de
tablas diferentes, entonces deberemos utilizar obligatoriamente una combinación. Para
realizar una combinación, basta incluir más de un nombre en la cláusula FROM, utilizando
una coma como separador y, normalmente, incluyendo una clâusulaWHERE para
especificar la columna o columnas con las que hay que realizar la combinación.

Así, podríamos intentar una consulta que seleccionara el campo nombre de la tabla
empleado y el nombre del departamento. Y aquí surge el primer problema, ¿cómo
distinguimos entre dos columnas que llamándose igual, pertenecen a tablas distintas? El
uso de alias para las tablas incluidas en el FROM o en las columnas del SELECT permite
evitar la ambigüedad, el alias se separa por un espacio.

3.2.5 Subconsultas
SELECT INTO 

La sentencia SQL SELECT INTO se utiliza para seleccionar datos de una tabla y copiarlos en otra
tabla diferente.

Se suele utilizar para hacer una copia de seguridad (backup) de los datos de una tabla.

Sintaxis SQL SELECT INTO

SELECT * INTO nuevatabla FROM tablaactual

Esta sentencia copiará todos los registros de la tabla 'tablaactual' en la tabla 'nuevatabla'.

La nueva tabla puede incluso estar en una base de datos diferente

SELECT * 
INTO nuevatabla [IN nuevabasedatos] 
FROM tablaactual

Si queremos hacer un backup de una tabla en otra


SELECT * 
INTO personasBackup 
FROM personas

También se pueden seleccionar sólo algunas columnas

SELECT columna1, columna2 


INTO personasBackup 
FROM personas

También se puede incluir una condición (WHERE)

SELECT * 
INTO personasBackup 
FROM personas 
WHERE nombre = 'ANTONIO'

Se puede utilizar SELECT INTO con JOIN

SELECT personas.nombre, personas.apellido1, departamentos.departamento 


INTO personasInformatica 
FROM personas INNER JOIN departamentos 
ON personas.dep = 'INFORMATICA'

CREATE DATABASE

La sentencia CREATE DATABASE se utiliza para crear bases de datos.

Sintaxis CREATE DATABASE:

CREATE DATABASE nombreBaseDatos

Ejemplo CREATE DATABASE

CREATE DATABASE mibasededatos

CREATE TABLE 

La sentencia CREATE TABLE se utiliza para crear una tabla en una base de datos existente.

Sintaxis CREATE TABLE

CREATE TABLE nombretabla 



nombrecolumna1 tipodato1, 
nombrecolumna2 tipodato2, 
nombrecolumna3 tipodato3, 
.. 
}

Ejemplo CREATE TABLE

CREATE TABLE personas 



nombre varchar(255), 
apellido1 varchar(255), 
apellido2 varchar(255), 
dep int 
}

Esta sentencia creará la base de datos 'personas' con 4 columnas.

Las columnas 'nombre', 'apellido1' y 'apellido2' son de tipo 'varchar', es decir, acepta valores
alfanuméricos hasta una longitud máxima de 255 caracteres.

La columna 'dep' es de tipo 'int', es decir, acepta sólo números.

Existen diferentes tipos de datos, algunos son iguales en todas las bases de datos (MySQL,
ORACLE, DB2, ..) y otros pueden ser particulares para ser usados únicamente en alguna de estas
bases de datos.

3.2.6 Operadores set

La sentencia SQL JOIN permite consultar datos de 2 o más tablas.

Dichas tablas estarán relacionadas entre ellas de alguna forma, a través de alguna de sus
columnas.

Existen 3 tipos de JOINS: JOIN interno, JOIN externo y JOIN cruzado.

Una clave primaria es una columna con un valor único para cada registro de una tabla.

El propósito del JOIN es unir información de diferentes tablas, para no tener que repetir datos en
diferentes tablas.

Ejemplo:

Si tenemos las siguientes tablas

Tabla personas, con la clave primaria "per "

per nombre apellido1 apellido2 dep


1 ANTONIO PEREZ GOMEZ 1
2 ANTONIO GARCIA RODRIGUEZ 2
3 PEDRO RUIZ GONZALEZ 2

Tabla "departamentos", con la clave primaria "dep"

dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL

Si queremos saber los nombres de las personas que trabajan en INFORMATICA, tendríamos que
hacer un JOIN de las 2 tablas "personas" y "departamentos", que se relacionarían por la columna
"dep".

Es decir, que desde la tabla "personas" y mediante la columna "dep", podemos acceder a la
información de la tabla "departamentos".

Unidad 4: Seguridad

4.1 Tipos de usuario

El objetivo de la creación de usuarios es establecer una cuenta segura y útil, que tenga los
privilegios adecuados y los valores por defecto apropiados

Para acceder a los datos en una BD Oracle, se debe tener acceso a una cuenta en esa BD.
Cada cuenta debe tener una palabra clave o password asociada. Una cuenta en una BD
puede estár ligada con una cuenta de sistema operativo. Los passwords son fijados cuando
se crea un usuario y pueden ser alterados por el DBA o por el usuario mismo. La BD
almacena una versión encriptada del password en una tabla del diccionario llamada
dba_users. Si la cuenta en la BD está asociada a una cuenta del sistema operativo puede
evitarse la comprobación del password, dándose por válida la comprobación de la
identidad del usuario realizada por el SO.

Un usuario Oracle tiene las siguientes caracteristicas

 Un nombre de usuario de 30 caracteres o menos, sin caracteres especiales y que inicie


con una letra.

 Un metodo de autentificacion, el más comun es un password pero Oracle 10G soporta


otros métodos como biometric, certificado y autentificacion por medio de token.

 Un tablespace de default, el cuál es donde el usuario va a poder crear sus objetos por
defecto. Ojo, no porque tenga un tablespace de default va a significar que puede crear
objetos, o una quota de espacio. Estos permisos se asignan de forma separada.
 Un tablespace temporal, donde el usuario pueda crear sus objetos temporales y hacer
ordenar las consultas.

 Un perfile de usuario, es decir las restricciones o privilegios de su cuenta.

Una cuenta MySQL se define en términos de un nombre de usuario y el equipo o equipos


desde los que el usuario puede conectar al servidor. La cuenta también tiene una
contraseña (deseable). Los nombres de usuario y contraseñas en MySQL no están
relacionadas con los del sistema operativo.

 Nombre de usuarios en MySQL pueden tener como máximo 16 caracteres de longitud

 La contraseña es segura incluso si los paquetes TCP/IP pasan por un sniffer o la base de
datos mysql se captura.

4.2 Creación de usuarios

CREATE USER: Crear un usuario oracle. Un usuario es un nombre de acceso a la base de


datos oracle asociado a una clave (password).

Lo que puede hacer un usuario logeado a la base de datos depende de los permisos que
tenga asignados ya sea directamente (GRANT) como sobre algun rol que tenga asignado
(CREATE ROLE).

El perfil que tenga asignado influye en los recursos del sistema de los que dispone un
usuario a la hora de ejecutar Oracle (CREATE PROFILE).

4.3 Privilegios a usuarios

Una vez creados los usuarios será necesario dotarlos de privilegios para que puedan realizar
operaciones específicas en la base de datos. Estos privilegios suelen clasificarse en privilegios del
sistema (operaciones que afectan a todo el sistema) y privilegios de objeto (tablas, vistas, etc.).
Para conocer los privilegios y su sintaxis es necesario consultar los manuales de referencia de su
SGBD.

SELECT * FROM system_privilege_map;


Las sentencias GRANT y REVOKE permiten a los administradores de SGBD crear cuentas de
usuario, conceder y revocar derechos de esas cuentas.

GRANT CONNECT, RESOURCE, CREATE TABLE TO usuarioLimitado;

Potrebbero piacerti anche