Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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:
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:
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:
modificar (UPDATE)
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.
UPDATE personas
SET apellido2 = 'RODRIGUEZ'
WHERE nombre = 'ANTONIO'
AND apellido1 = 'GARCIA'
AND apellido2 = 'BENITO'
borrar (DELETE)
Si queremos borrar todos los registros o filas de una tabla, se utiliza la sentencia:
<
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
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.
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.
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.
SELECT nombre_columna(s)
FROM nombre_tabla
ORDER BY nombre_columna(s) ASC|DESC
Por ejemplo, en la tabla personas :
nombre apellido1
LUIS LOPEZ
ANTONIO GARCIA
ANTONIO PEREZ
nombre apellido1
ANTONIO PEREZ
ANTONIO GARCIA
LUIS LOPEZ
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.
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.
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.
Esta sentencia copiará todos los registros de la tabla 'tablaactual' en la tabla 'nuevatabla'.
SELECT *
INTO nuevatabla [IN nuevabasedatos]
FROM tablaactual
SELECT *
INTO personasBackup
FROM personas
WHERE nombre = 'ANTONIO'
CREATE DATABASE
CREATE TABLE
La sentencia CREATE TABLE se utiliza para crear una tabla en una base de datos existente.
Las columnas 'nombre', 'apellido1' y 'apellido2' son de tipo 'varchar', es decir, acepta valores
alfanuméricos hasta una longitud máxima de 255 caracteres.
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.
Dichas tablas estarán relacionadas entre ellas de alguna forma, a través de alguna de sus
columnas.
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:
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
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 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.
La contraseña es segura incluso si los paquetes TCP/IP pasan por un sniffer o la base de
datos mysql se captura.
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).
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.