Unidad 1

Anuncio
Servidor de Base de Datos
Programación
Un servidor es una aplicación que ofrece un servicio; un
cliente es el que pide ese servicio.
Una aplicación consta de una parte servidor y una cliente.
Los usuarios invocan la parte cliente de la aplicación, que
construye una solicitud para ese servicio (peticion) y se la
envía al servidor de la aplicación.
El servidor es un programa que recibe una solicitud, realiza
el servicio requerido y devuelve los resultados en forma de
una respuesta (provee el servicio).
• ¿Dónde se encuentran fisicamente estas
aplicaciones?
• N
No siempre
i
se ttrata
t d
de máquinas
á i
dif
diferentes;
t
un
computador por sí solo puede ser ambos cliente y
servidor.
• Si estan fisicamente en distintos equipos, ambas partes
deben estar conectadas entre sí mediante una red.
• Un único servidor típicamente sirve a una multitud de
clientes al mismo tiempo, ahorrando a cada uno de ellos
ell problema
bl
d
de ttener lla iinformación
f
ió iinstalada
t l d y
almacenada localmente.
• Caracteristicas:
• El cliente interactúa con el usuario, y un servidor
interactúa con los recursos compartidos.
• El proceso del cliente proporciona la interfaz entre el
usuario
i y ell resto
t d
dell sistema.
i t
• El proceso del servidor actúa como un motor de
software que maneja recursos compartidos tales como
b
bases
d
de d
datos,
t
iimpresoras, módems,
ód
etc.
t
• Los clientes corresponden a procesos activos: son éstos
los que hacen peticiones de servicios a los servidores.
• Los servidores tienen un carácter pasivo ya que esperan
las peticiones de los clientes.
Database Server
Un servidor de base de datos es un programa que provee
servicios de base de datos a otros p
programas
g
u otras
computadoras.
Normalmente el servidor es una máquina bastante potente
que actúa de depósito de datos y funciona como un
sistema gestor de base de datos (SGBD).
• Aplicación se divide en:
• Cliente: p
parte cercana al usuario, recogida
g
y
presentación de la información.
• Servidor: parte cercana a los datos, ejecuta el gestor de
bases de datos
datos.
Esta arquitectura necesita tres tipos de software para su
correcto funcionamiento:
Software de gestión de datos: Este software se encarga
de la manipulación y gestión de los datos almacenados y
requeridos por las diferentes aplicaciones. Normalmente
este software se aloja en el servidor
servidor.
Software de desarrollo: este tipo de software se aloja en
los clientes y solo en aquellos que se dedique al desarrollo
de aplicaciones.
Software de interacción con los usuarios: También
reside en los clientes y es la aplicación gráfica de usuario
para la manipulación de datos
datos, siempre claro a nivel
usuario (consultas principalmente).
• Por qué programar en el servidor de
BD???
• Qué es un programa?
• Finalidad de un programa?
• Ventaja de un programa?
• Se p
puede almacenar los p
programas
g
localmente y crear
aplicaciones que envían los comandos al Servidor y
procesan los resultados.
Cliente
P
Servidor
P
P
Cliente
Cliente
P
Cliente
• Se puede almacenar los programas en el Servidor y
crear aplicaciones que los ejecutan y procesan los
resultados.
Cliente
P
Servidor
Cli t
Cliente
Cliente
Cliente
• Qué
Q é opción
ió es mejor???
j ???
• Ventajas
j de almacenar un programa
p g
en el servidor:
• Al ser ejecutado, en respuesta a una petición de usuario,
es ejecutado directamente en el motor de bases de
datos, bajo el control de éste, aumentando con ello la
rapidez de procesamiento de requerimientos:
• Posee acceso directo a los datos que necesita
manipular y sólo necesita enviar sus resultados de
regreso al usuario, deshaciéndose de la sobrecarga
resultante de comunicar grandes cantidades de datos
salientes
li t y entrantes:
t t
reducir
d i ell ttráfico
áfi d
de red.
d
• Cuando una base de datos es manipulada
p
desde
muchos programas externos, se simplifica la creación y,
particularmente, el mantenimiento de los programas
involucrados.
• Se reduce la probabilidad de que los datos sean
corrompidos por el uso de programas clientes
defectuosos o erróneos.
• Puede asegurar la integridad de los datos y la
consistencia.
permisos).
• Pueden incluir atributos de seguridad (como permisos)
• Permiten una programación modular: se crea el
programa una vez y se llama tantas veces como desee.
• Independencia de la situación física de los datos
• Usuario no necesita conocer el lenguaje para acceder a
la informacion requerida.
requerida
• Usos típicos...
• Validación de datos (disparadores o triggers).
• Encapsulación
p
de p
procesos g
grandes y complejos.
p j
– Esto se ejecutará más rápido almacenado en el
servidor que como un programa corriendo en el
sistema cliente y comunicándose con la base de
datos mediante el envío de consultas SQL y
recibiendo sus resultados.
Lenguaje de Programación
• Hasta ahora sólo se ha utilizado SQL…
• Qué es SQL?
• St
Structured
t
d Query
Q
Language
L
es un lenguaje
l
j de
d
consulta para los sistemas de bases de datos
relacionales.
• Está compuesto por comandos (DDL: create, drop; DML:
select, insert, delete), cláusulas (from, where….),
operadores (and, or, not) y funciones de agregado (avg,
sum, max).
• Estos elementos se combinan en las instrucciones para
crear, actualizar y manipular las bases de datos.
/*creacion
/*
i de
d tabla*/
t bl */
create table pelicula
((titulo_p
_p nombre2 not null p
primary
y key,
y
nacionalidad_p nombre1 not null,
productora nombre1 not null,
año p año not null
año_p
null,
nombre_director nombre not null
)
/*consulta*/
select nombre_s, apellido_s from alquila, socio
where socio.carnet_s=alquila.carnet_s and
alquila.titulo_p='Arma mortal 3' and
alquila.nr_ejemplar=1
• Un programa es un conjunto de instrucciones escritas en
algún lenguaje de programación.
• Es SQL un lenguaje de programacion??
• Es
E una consulta
lt un programa??
??
• SQL
Q no posee
p
la p
potencia de los lenguajes
g j de
programación.
• No permite el uso de variables, estructuras de control de
flujo, bucles ... y demás elementos caracteristicos de la
programación.
• SQL es un lenguaje de consulta, no un lenguaje de
programación.
• Sin embargo, SQL es la herramienta ideal para
trabajar con bases de datos.
• Cuando se desea realizar una aplicación completa para
el manejo
j de una base de datos relacional, resulta
necesario utilizar alguna herramienta que soporte la
capacidad de consulta de SQL y la versatilidad de los
lenguajes
g j de p
programación
g
tradicionales.
• Luego se necesita un lenguaje de programación que
extienda el SQL estándar con otro tipo de instrucciones
y elementos propios de los lenguajes de programación .
Tipos de Lenguajes
• Su implementación de estos programas varía de un
SGBD a otro:
t El lenguaje
l
j a utilizar
tili
d
dependera
d
d
de é
éste
t y
cada lenguaje tendrá sus instrucciones y formatos
específicos.
•
•
•
•
PL-SQL - Oracle
T-SQL (Transact SQL) – SQL Server
PgSQL - PostgreSQL
Java??? -> La base de dato que se use es
independiente.
p
Y la p
plataforma de hardware tambien.
PL SQL
PL-SQL
• CREATE PROCEDURE credit (acc_no IN NUMBER,
amount IN NUMBER)
AS BEGIN
UPDATE accounts
SET balance = balance + amount
WHERE account_id = acc_no;
END;
T SQL
T-SQL
• CREATE PROCEDURE conocerempleado
• @LastName nvarchar(50), @FirstName nvarchar(50)
AS
• SELECT LastName, FirstName, Title
• FROM Employees
• WHERE FirstName = @FirstName
• AND LastName = @LastName
PL PgSQL
PL-PgSQL
•
•
•
•
•
•
•
•
•
•
•
CREATE OR REPLACE FUNCTION ejemplo(integer, integer)
RETURNS integer AS $$
DECLARE
numero1 ALIAS FOR $1;
$ ;
numero2 ALIAS FOR $2;
constante CONSTANT integer := 100;
resultado integer;
BEGIN
resultado := (numero1 * numero2) + constante;
RETURN resultado;
END;
$$ LANGUAGE p
plpgsql;
pg q ;
Algunos Conceptos
Conceptos.
Esquema
• Database Schema
• Describe la estructura de una Base de datos, en un
lenguaje formal soportado por un Sistema administrador
de Base de datos (DBMS).
• En una Base de datos Relacional, el Esquema define
sus tablas (nombres), sus campos en cada tabla, tipos
de datos y las relaciones entre cada campo y cada tabla
(claves primaria y foranea).
• Aunque generalmente el esquema es definido en un
l
lenguaje
j d
de B
Base d
de d
datos,
t
ell té
término
i se usa a menudo
d
para referirse a una representación gráfica de la
estructura de base de datos.
Vistas
• Una vista es el resultado de una consulta SQL de una o
varias
i ttablas
bl ((multitabla).
ltit bl )
• Se especifica a través de una expresión de consulta
(sentencia SELECT).
• Una
U vista
i
actúa
ú como fil
filtro d
de llas tablas
bl subyacentes
b
a
las que se hace referencia en ella.
• Tiene la misma estructura que una tabla (filas y
columnas).
l
)
• Estas filas y columnas de datos proceden de tablas a las
que se hace referencia en la consulta que define la vista
y se prod
producen
cen de forma dinámica ccuando
ando se hace
referencia a la vista.
• Sólo se almacena la definición de la vista, no los datos.
Se le puede considerar una tabla virtual
virtual.
Vistas
• Se puede utilizar haciendo referencia a su nombre en
instrucciones de un lenguaje de programación, de la
misma forma en que se hace referencia a las tablas.
• Sobre un conjunto de tablas relacionales se puede
t b j con un número
trabajar
ú
cualquiera
l i
d
de vistas.
i t
• La mayoría de los SGBD soportan la creación y
manipulación de vistas
vistas.
• Suelen utilizarse para centrar, simplificar y personalizar
la percepción de la base de datos para cada usuario.
• Mecanismos de seguridad: permiten a los usuarios
obtener acceso a los datos por medio de la misma, pero
no les conceden el permiso de obtener acceso directo a
las tablas base subyacentes de la vista: limitación del
acceso a datos.
Procedimiento Almacenado
•
•
•
•
Stored Procedure (SP).
Objeto de una BD.
Programa que se almacena físicamente en el servidor.
Permite agrupar
g p en forma exclusiva una tarea específica
p
que se desee realizar sobre la BD.
• Sus instrucciones realizan operaciones en la base de
datos (p
(puede llamar a otros p
procedimientos):
)
– Pueden devolver un conjunto de resultados, es decir, los
resultados de un comando SELECT.
– Pueden recibir parámetros de entrada y retornar valores a la
aplicación.
aplicación
– Pueden devolver un valor de estado para indicar si la operación
se ha realizado correctamente o se han producido errores (y el
motivo de éstos).
– Pueden verificar condiciones, verificar el rendimiento o calcular
resultados.
Procedimiento Almacenado
• Una vez creado se puede invocar directamente desde
una aplicación (cliente).
• Se usan a menudo para realizar consultas SQL, insertar,
actualizar
li
o eliminar
li i
registros
i
sobre
b llos objetos
bj
d
de lla
base de datos de una manera transparente, desde el
punto de vista del cliente de la aplicación.
p
p
• Son precompilados al ejecutarse por primera vez, y no
vuelven a ser compilados con las subsiguientes
ejec ciones
ejecuciones.
• Mejora en el rendimiento.
Procedimiento Almacenado
• Los SGBD manejan procedimientos
almacenados del sistema.
• Se relacionan con actividades administrativas e
informativas de las respectivas BD.
• Se agrupan en categorías
categorías.
• sp_addtype. Crea un tipo de datos definido por el
usuario.
usuario
• Sintaxis
• sp_addtype [ @typename = ] type,
[ @phystype = ] system_data_type
[ , [ @nulltype = ] 'null_type' ]
[ , [ @owner
@
= ] 'owner_name'
'
']
• EXEC sp_addtype ssn, 'VARCHAR(11)', 'NOT NULL'
• EXEC sp_addtype birthday, datetime, 'NULL'
•
•
•
•
sp_droptype
sp
droptype
EXEC sp_droptype 'birthday'
sp_rename
EXEC sp
sp_rename
rename 'c
'customers',
stomers' 'custs'
'c sts'
• CREATE PROCEDURE prod_1
• AS
• SELECT * FROM CLIENTES
•
•
•
•
•
•
CREATE PROCEDURE prod_2
@p CodIni CHAR ((6),
@p_
),
@p_CodFin CHAR (6)
AS
SELECT * FROM CLIENTE
WHERE IDCLIENTE BETWEEN @p_CodIni AND
@p_CodFi
Funciones
• Porción de código generalmente dentro de un programa.
• Realiza una determinada tarea y es independiente
p
del
resto del código.
• Devuelve un valor.
• Permite operar
p
sobre los datos de la BD.
• Se llama por su nombre, acepta parámetros de entrada
opcionales.
• Se pueden usar dentro de consultas
consultas….
• SQL Server suministra funciones integradas
integradas, que no se
pueden modificar.
• Acepta funciones definidas por el usuario (los usuarios
las pueden crear y modificar).
modificar)
• Estas pueden tener varias instrucciones SELECT.
Funciones
• Funciones del sistema, la mayoría de las cuales
devuelven información de las tablas del sistema
sistema.
•
•
COL_LENGTH: Devuelve la longitud definida de la columna.
select col
col_length(
length('alumno'
alumno , 'dni')
dni ) as nr
•
DATALENGTH: Devuelve la longitud de la expresión en bytes.
p
suele ser un nombre de columna.
expression
select datalength (nombre), nombre
from asignatura
•
•
•
•
ISNULL: Sustituye el valor indicado en expression2 cuando en
expression1 da como resultado NULL.
select avg(isnull(price,$10.00))
from titles
Funciones
• Funciones de cadena, que manipulan valores char ,
nchar , varchar , nvarchar , binary y varbinary .
•
•
•
SUBSTRING( expression , start , length ): Devuelve parte de una
cadena de caracteres o binaria. Especificar
p
los caracteres 2, 3 y 4
de la constante de caracteres "abcdef":
select x = substring("abcdef", 2, 3)
select (au_lname + "," + " " + substring(au_fname, 1, 1) + ".")
from authors
Green, M.
Straight, D.
Stringer, D.
Funciones
• Funciones de texto, que manipulan valores text e image.
• Funciones
F
i
matemáticas,
t áti
que realizan
li
operaciones
i
trigonométricas y geométricas, además de otros tipos de
manipulaciones de números.
• Funciones de conversión de tipos de datos
datos, que
convierten expresiones de un tipo de datos a otro y que
asignan formato a las fechas en una variedad de estilos.
Funciones
• Funciones de fecha, que manipulan valores datetime y
smalldatetime
smalldatetime.
• GETDATE: Fecha y hora actuales del sistema.
• select getdate()
• select datepart(month,
p (
, getdate())
g
())
• select datepart(year, getdate())
• select interval = datediff(year,
datediff(year 'Nov
Nov 30 1985'
1985 ,
getdate())
Secuencias
• Objeto de la Base de Datos.
• Permite generar auto incrementos
incrementos.
• No se asocia directamente a una Tabla de la BD.
• U
Un uso tí
típico
i de
d llas secuencias
i es para crear un valor
l
de una clave primaria (único para cada fila)
• La secuencia es generada e incrementada (o
decrementada) por una rutina interna.
• El número de la secuencia es almacenado y generado
de forma independiente a las tablas.
• La misma secuencia puede ser utilizada en diferentes
tablas.
Secuencias
•
•
•
•
CREATE SEQUENCE nombre_secuencia
[INCREMENT BY numero] [START WITH numero]
[MAXVALUE numero | NOMAXVALUE ] [MINVALUE numero |
NOMINVALUE]
[CYCLE | NOCYCLE ] [CACHE numero | NOCACHE ] [ORDER |
NOORDER]
•
•
•
CREATE SEQUENCE misecuencia
INCREMENT BY 1
START WITH 1
•
INSERT INTO mitabla (at1, ...) VALUES (misecuencia.NEXTVAL, ...);
Secuencias
• SQL SERVER no maneja secuencias
secuencias.
Secuencias
• Autonumeración y columnas de identificación
• Una identidad común es una clave principal
"autogenerada“
autogenerada .
• Es simplemente un valor entero que autoincrementa.
• Cada nueva fila se agrega a su tabla.
• Puede especificar cuándo debe comenzar y cómo se
debe incrementar.
• Para cada tabla, se puede crear una sola columna de
identificación.
Secuencias
• Por ejemplo, una columna de identificación podría
generar automáticamente un número único de recibo de
compra a medida que las filas son insertadas en la tabla.
• Una tabla que contiene columnas de identificación
pueden contener los mismos valores de identificación
p
que los usados por otras tablas.
Secuencias
• Crear columnas de identificación
• Propiedad IDENTITY
• Las columnas de identificación pueden ser
implementadas usando la propiedad IDENTITY.
• Especifica el primer número de identificación a ser
usado en la primera fila que se ingrese y un incremento
(propiedad Identity Increment) que se agregará al último
usado para generar un nuevo número de identificación
para una fila cualquiera que sea agregada.
• Cuando se insertan valores en una tabla con una
columna de identificación, SQL Server automáticamente
genera el próximo número de identificación adicionando
el incremento al último generado.
Secuencias
• Se debe considerar lo siguiente:
• Una tabla puede tener solamente una columna con la
propiedad IDENTITY property, y la columna debe ser
definida utilizando los tipos de datos int
int, numeric
numeric,
smallint, bigint, o tynint.
• Se pueden especificar el número inicial y el incremento
de la secuencia
secuencia, siendo ambos por defecto iguales a
uno.
• La columna de identificación no debe permitir valores
nulos y no debe contener una definición u objeto por
defecto.
Secuencias
• El siguiente ejemplo utiliza el comando CREATE TABLE
para crear la tabla Empleados.
• Ninguna columna acepta valores nulos. Además, la
columna Emp_ID es una columna de identificación. El
valor inicial es 101,, y el incremento 1.
• CREATE TABLE Empleados
(
Emp_ID SMALLINT IDENTITY(101,1) NOT NULL,
EmpNombre varchar(50) NOT NULL
• )
Construcción de Vistas
• Los datos accesibles a través de una vista no están
almacenados. Lo que está almacenado en la base de
datos es una instrucción SELECT.
• Las vistas se utilizan para alguna de estas funciones:
– Restringir el acceso del usuario a filas concretas de una tabla.
– Restringir el acceso del usuario a columnas específicas
específicas.
– Combinar columnas de varias tablas de forma que parezcan una
sola tabla.
– Agregar información en lugar de presentar los detalles
detalles. Por
ejemplo, presentar la suma de una columna o el valor máximo o
mínimo de una columna.
Construcción de Vistas
Construcción de Vistas
• No intentar modificar….
• Sysconstraints
Sysconstraints. Contiene correspondencias entre
restricciones y los objetos que las poseen. Este catálogo
del sistema se almacena en cada base de datos.
• Syssegments. Contenía una fila para cada segmento
(que recibía el nombre de colección de fragmentos de
disco).
disco)
• Para ver el codigo…
• Sp_HelpText
Sp HelpText nombre
nombre_vista
vista
Construcción de Vistas
create view [[ database .] owner .]
view_name
i
[( column_name [, column_name ]...)]
as
select_statement
•
•
•
•
•
•
•
•
view_name:
view
name: nombre de la vista.
vista Especificar el propietario de la vista
es opcional.
Column: Es el nombre que se va a utilizar para una columna en
una vista.
Sól es necesario
Sólo
i p.e. cuando
d una columna
l
proviene
i
d
de una
expresión aritmética, una función o una constante; cuando una
columna de una vista recibe un nombre distinto al de la columna de
la que proviene.
Tambien se pueden asignar también en la instrucción SELECT.
Si no se especifica column, las columnas de la vista adquieren los
mismos nombres que las columnas de la instrucción SELECT.
AS: Son las acciones que va a llevar a cabo la vista
vista.
select_statement: instrucción SELECT que define la vista. Puede
utilizar más de una tabla y otras vistas. Una vista no tiene por qué
ser un simple subconjunto de filas y de columnas de una tabla
determinada Una vista
determinada.
ista se p
puede
ede crear con más de una
na tabla o con
otras vistas, mediante una cláusula SELECT de cualquier
complejidad.
Se pueden utilizar funciones en select_statement.
• SELECT * FROM nombre
nombre_vista
vista
• Sin nombre de columna específico
• create view datospersona
• as
• select nombre,
nombre apellido,
apellido direccioncalle,
direccioncalle direccionnum
direccionnum,
ciudad
• from persona
• Con nombre de columna
• create view datospersona (PrimerNombre,
PrimerApellido, Calle, Numero, Ciudad)
• as
• select nombre, apellido, direccioncalle, direccionnum,
ciudad
• from persona
• create view datospersona2
• as
• select nombre as PrimerNombre, apellido as
PrimerApellido, direccioncalle as Calle, direccionnum as
Numero, ciudad as Ciudad
• from persona
• create
t view
i
datospersona1
d t
1 (N
(Nombre_y_Apellido,
b
A llid
Direccion)
• as
• select nombre+' '+apellido, direccioncalle+'
'+direccionnum+', '+ciudad
• from persona
• Debe especificarse nombre de columna.
• create view horas_asig
horas asig (Numero_horas,
(Numero horas, Creditos,
Nombre_asignatura)
• as
(creditos 10), Creditos
Creditos, nombre
• select (creditos*10)
• from asignatura
•
•
•
•
•
create view costebasico (Costo, Asignatura)
as
SELECT COUNT(CosteBasico), idasignatura
FROM ASIGNATURA
group by idasignatura
• Con condiciones
•
•
•
•
•
create view costosmedios
as
SELECT Nombre
FROM ASIGNATURA
WHERE CosteBasico >= 25 AND CosteBasico <= 35
• Combinacion (multitabla)
•
•
•
•
•
create view asig_logroño
as
SELECT Asignatura
Asignatura.Nombre
Nombre
FROM ASIGNATURA, PROFESOR, PERSONA
WHERE ASIGNATURA.IdProfesor =
PROFESOR IdP f
PROFESOR.IdProfesor
• AND PROFESOR.DNI = PERSONA.DNI
• AND Ciudad = 'Logroño'
• Vistas
Vi t de
d otras
t
vistas
i t
• create view datospersona (PrimerNombre,
PrimerApellido, Calle, Numero, Ciudad)
• as
• select nombre, apellido, direccioncalle, direccionnum,
ciudad
• from
f
persona
•
•
•
•
create view datospersona4
as
select nombre, apellido
f
from
datospersona
d t
• FUNCIONA?
•
•
•
•
create view datospersona5
as
select PrimerNombre, PrimerApellido
f
from
datospersona
d t
•
•
•
•
•
create view datospersonavaron
as
select PrimerNombre, PrimerApellido
from datospersona
Where varon=1
• FUNCIONA?
•
•
•
•
•
create view datospersonacons
as
select PrimerNombre,
PrimerNombre PrimerApellido
from datospersona
Where PrimerApellido like ‘s%’
• Vistas distinct
• create view otro
• as
• SELECT DISTINCT(IdTitulacion)
•
FROM ASIGNATURA, ALUMNOASIGNATURA,
ALUMNO
•
WHERE ASIGNATURA.IdAsignatura =
ALUMNOASIGNATURA.IdAsignatura
•
AND ALUMNOASIGNATURA
ALUMNOASIGNATURA.IdAlumno
IdAlumno =
ALUMNO.IdAlumno
•
AND ALUMNO.DNI = '20202020A'
• CREATE VIEW <Nombre de la vista> [Encabezado1
[Encabezado1,
....]
• [WITH ENCRYPTION]
• AS
• Sentencias Select
• La cláusula WITH ENCRYPTION permite ocultar la
implementación de la vista: especifica que la definición
de la vista (la instrucción SELECT que define la vista)
sea cifrada.
if d
• SQL Server usa el mismo método para cifrar las
instrucciones SQL que para las contraseñas.
• Esta técnica de seguridad puede ser útil si no se quiere
que ciertas clases de usuarios sepan a qué tablas se
está accediendo.
• Modificar datos en una tabla a través de una
vista
i t
• Si se modifican los datos de una vista
vista, se modifica la
tabla base.
• Se puede insertar, actualizar o eliminar datos de una
tabla a través de una vista.
• Las modificaciones que se realizan a las vistas:
•
•
•
•
No pueden afectar a más de una tabla consultada. Pueden
que combina varias tablas p
pero la
modificarse datos de una vista q
modificación solamente debe afectar a una sola tabla.
No se pueden cambiar los campos resultado de un cálculo.
Pueden generar errores si afectan a campos a las que la vista no
hace referencia
referencia. Por ejemplo,
ejemplo si se ingresa un registro en una vista
que consulta una tabla que tiene campos not null que no están
incluidos en la vista.
Para eliminar datos de una vista solamente UNA tabla puede ser
li t d en ell "f
listada
"from"" d
de lla d
definicion
fi i i d
de lla misma.
i
•
•
•
•
•
create view uno
as
select idasignatura, nombre, creditos, costebasico
from asignatura
where
h
costebasico>40
t b i >40
• insert into uno values (443584, ‘matematicas', 3, 80)
• Update uno set costebasico=75 where
nombre=‘matematicas‘
• Delete from uno where nombre=‘matematicas’
•
Se modifica la tabla y la vista.
• insert into uno values (463584
(463584, ‘ingles'
ingles , 3,
3 10)
• Update uno set costebasico=20 where
nombre=‘matematicas‘
•
Se modifica la tabla con los datos, y la vista simplemente no
muestra las filas que no cumplen con la condicion.
• CREATE VIEW <Nombre
N
b d
de la
l vista>
i t [Encabezado1,
[E
b
d 1
....]
• AS
• Sentencias Select
• [WITH CHECK OPTION]
• La palabra clave WITH CHECK OPTION especifica que
las operaciones de modificación de datos que se
realizan en una vista deben seguir
g el criterio contenido
en la instrucción SELECT que define la vista. Por
ejemplo, no estaría permitida una operación de
modificación de datos realizada en una vista para crear
una fila
fil d
de lla ttabla
bl que no sea visible
i ibl d
dentro
t d
de lla vista.
i t
• Obliga a todas las instrucciones de modificación que se
ejecutan en la vista a cumplir ciertos criterios que se
especifican al definir la vista
vista.
•
•
•
•
•
•
create view dos
as
select idasignatura, nombre, creditos, costebasico
from asignatura
where costebasico>40
With check option
• insert into uno values (443584, ‘matematicas', 3, 80)
• Update uno set costebasico=75 where
nombre=‘matematicas‘
• Delete from uno where nombre=‘matematicas’
•
Se modifica la tabla y la vista.
• insert into uno values (463584, ‘ingles', 3, 10)
• Update uno set costebasico=20 where
nombre=‘matematicas‘
•
No se modifica la tabla con estos datos puesto que no cumplen
con la condicion de la vista. Menos aun se muestran en la vista.
• Cambio de nombre de las vistas
• Se puede cambiar el nombre de una vista con el
procedimiento del sistema sp_rename:
• sp_rename
sp rename ojbname , newname
• Para cambiar el nombre titleview a bookview :
• sp_rename titles_view, bookview
• Modificar vistas
• Se puede modificar una vista.
• Alter view nombre
nombre_vista
vista
• As
• Sentencias_select…
• Eliminar vistas
• Drop view nombre
nombre_vista
vista
•
Ejercicios de Vistas.
1 Genere una vista que permita conocer el
1.
nombre, apellido y ciudad de todas las
profesoras (mujeres). Debe mostrar el nombre
y apellido en una columna llamada
Nombre_Completo.
2. Conocer todos los datos de las personas cuyo
apellido
llid comience
i
con ‘‘c’.
’
3. Igual que el ejemplo anterior, pero en vez de la
fecha de nacimiento
nacimiento, conocer la edad
edad. No se
requiere conocer el sexo de la persona ni su
dni.
4 Conocer la cantidad de creditos total que
4.
existen por cada titulacion. Debe aparecer el
nr (creditos_total) y al lado el nombre de la
tit l i ((nombre_titulacion)
titulacion
b tit l i ) a lla que
pertenecen.
•
Ej i i de
Ejercicios
d Vistas.
Vi t
5 M
5.
Mostrar
t
ell nombre
b d
de llos ramos realizados
li d por
la profesora Rosario Díaz.
6. Encripte la vista anterior.
7. Mostrar por cada profesor (nombre y apellido
en una columna) la cantidad de ramos que
dictan.
dictan
8. Mostrar nombre y apellido en una columna,
edad y telefono de todas los alumnos varones.
9. Generar una vista de la vista anterior, que
muestre a aquellos alumnos mayores de 30
años.
años
Uso de Identity
• Implementar las columnas de identificadores mediante la
propiedad IDENTITY.
• Permite especificar un número de identidad para la
primera fila insertada en la tabla (propiedad Identity
Seed) y un incremento (propiedad Identity Increment).
• Cuando se insertan valores en una tabla con una
columna de identificadores,
identificadores SQL Server genera
automáticamente el siguiente valor de identidad al
agregar el incremento al valor de inicialización.
• Dos tablas distintas, cada una con sus propias columnas
de identificadores, pueden generar los mismos valores.
Uso de Identity
• Una tabla sólo puede tener una columna IDENTITY, y
esa columna sólo se puede definir con los tipos de datos
decimal, int, numeric, smallint o tinyint.
• Se pueden especificar los valores de inicialización e
i
incremento.
t El valor
l predeterminado
d t
i d es 1 para ambos.
b
• La columna de identificadores no debe aceptar valores
NULL ni contener ningun DEFAULT
DEFAULT.
• Es posible hacer referencia a la columna de una lista de
selección mediante la palabra clave IDENTITYCOL.
• Es posible utilizar la función OBJECTPROPERTY para
determinar si una tabla tiene una columna IDENTITY, y
la función COLUMNPROPERTY para determinar el
nombre de la columna IDENTITY.
Uso de Identity
•
•
•
•
•
•
•
•
CREATE TABLE Empleado
(
Emp_ID SMALLINT IDENTITY(2,2) NOT NULL primary key,
EmpNombre varchar(20) NOT NULL,
p p
varchar(20)
( ) NOT NULL,,
EmpApellido
Direccion varchar (30) NOT NULL
)
INSERT into empleado (empnombre, empapellido, direccion) values
(‘juan', 'hernandez', 'las casitas 34343')
INSERT into empleado (empnombre,
(empnombre empapellido,
empapellido direccion) values
('esteban', ‘perez', 'las casitas 34343')
INSERT into empleado (empnombre, empapellido, direccion) values
(‘julio', ‘ramos', 'las casitas 34343')
Uso de Identity
• Select * from empleado
identitycol 4
• Select * from empleado where identitycol=4
• update empleado set empnombre='omar' where
identitycol=4
• delete empleado where identitycol=4
Uso de Identity
• SELECT
OBJECTPROPERTY(OBJECT_ID('empleado'),'TableHa
sIdentity')
1 si la tabla tiene identity)
• (devuelve un ‘1’
• select COLUMNPROPERTY (OBJECT_ID('empleado'),
'empnombre'
empnombre , 'IsIdentity'
IsIdentity )
• (devuelve un ‘1’ si la columna de la tabla tiene identity,
en este caso ‘0’)
• select COLUMNPROPERTY (OBJECT_ID('empleado'),
'emp_id', 'IsIdentity' )
• (en
( este
t caso ‘1’)
Descargar