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’)