Manual SQL

BASE DE DATOS I 1 CREACIÓN DE BASES DE DATOS SQL SERVER TEMA: En esta sesión se verá el proceso de creación de una b

Views 188 Downloads 6 File size 673KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

BASE DE DATOS

I

1

CREACIÓN DE BASES DE DATOS SQL SERVER TEMA: En esta sesión se verá el proceso de creación de una base de datos, qué es el registro de transacciones, la configuración de una base de datos, la administración de las propiedades de una base de datos, y que son las instantáneas de base de datos y cómo se crean. Esta sesión nos será de gran utilidad para el desarrollo de las siguientes sesiones o laboratorios. OBJETIVOS ESPECIFICOS: Utilizar los procedimientos necesarios para crear una Base de Datos utilizando la herramienta SQL Server Management Studio. CONTENIDO:  Componentes del SQL  Conociendo el SQL Server Management Studio.  Conociendo el editor Consultas: SQL Server Query.

1.

COMPONENTES DEL SQL El lenguaje SQL está compuesto por comandos, cláusulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos. Comandos: Existen dos tipos de comandos SQL: -

Los DDL que permiten crear y definir nuevas base de datos, campos e índices Los DML que permiten generar consultas para ordenar, filtrar y extraer datos de las base de datos.

Comandos DDL: Comando CREATE DROP ALTER

Descripción Utilizado para crear nuevas tablas, campos e índices Empleado para eliminar tablas e índices Utilizado para modificar las tablas agregando campos o cambiando la definición de los campos

Comandos DML: Comando Descripción SELECT Utilizado para consultar registros de la base de datos que satisfagan un criterio determinado INSERT Utilizado para cargar lotes de datos en la base de datos en una única operación UPDATE Utilizado para modificar los valores de los campos y registros especificados DELETE Utilizado para eliminar registros de una tabla de una base de datos Cláusulas Las cláusulas son condiciones de modificación utilizadas para definir los datos que desea seleccionar o manipular. Cláusula FROM WHERE GROUP BY HAVING ORDER BY

Descripción Utilizada para especificar la tabla de la cual se van a seleccionar los registros Utilizada para especificar las condiciones que deben reunir los registros que se van a seleccionar Utilizada para separar los registros seleccionados en grupos específicos Utilizada para expresar la condición que debe satisfacer cada grupo. Utilizada para ordenar los registros seleccionados de acuerdo con un orden especifico

2

OPERADORES Operadores Lógicos Operador AND

Uso Es el “y” lógico. Evalúa dos condiciones y devuelve un valor de verdad sólo si ambas son ciertas Es el “o” lógico. Evalúa dos condiciones y devuelve un valor de verdad si alguna de las dos es cierta Negación lógica. Devuelve el valor contrario de la expresión

OR NOT 5.3.2 Operador < >

= = BETWEEN LIKE In

Operadores de Comparación Uso Menor que Mayor que Distinto de Menor ó Igual que Mayor ó igual que Igual que Utilizado para especificar un intervalo de valores Utilizado en la comparación de un modelo Utilizado para especificar registros de una base de datos

FUNCIONES DE AGREGADO Las funciones de agregado se usan dentro de una cláusula SELECT en grupos de registros para devolver un único valor que se aplica a un grupo de registros. Funcion AVG COUNT SUM MAX MIN

Descripción Utilizada para calcular el promedio de los valores de un campo determinado Utilizada para devolver el número de registros de la selección Utilizada para devolver la suma de todos los valores de un campo determinado Utilizada para devolver el valor más alto de un campo especificado Utilizada para devolver el valor más bajo de un campo especificado

Nota: durante las demás sesiones se explicarán detalladamente como utilizar las instrucciones que acabamos de mostrar.

2.

APRENDIENDO A CREAR UNA BASE DE DATOS

Para crear una base de datos, determine el nombre de la base de datos, su tamaño y los archivos y grupos de archivos utilizados para almacenarla. Una base de datos SQL Server 2005 está formado por tres tipos de archivos para almacenar una base de datos: ARCHIVOS PRINCIPALES Estos archivos contienen la información de inicio para la base de datos. Este archivo se utiliza también para almacenar datos. Almacena las tablas del sistema de la base de datos, y puede también almacenar las tablas de usuario y otros objetos de la base de datos. Cada base de datos tiene un único archivo principal, siendo .mdf la extensión del archivo. ARCHIVOS SECUNDARIOS Estos archivos contienen todos los datos que no caben en el archivo de datos principal. No es necesario que las bases de datos tengan archivos de datos secundarios si el archivo principal es lo suficientemente grande como para contener todos los datos. Algunas base de datos pueden ser muy grandes y necesitar varios archivos de datos secundarios o utilizar archivos secundarios en unidades de disco distintas, de modo que los datos estén distribuidos en varios discos.la extensión de los archivos secundarios es .ndf.

3

REGISTRO DE TRANSACCIONES(transaction log) Estos archivos contienen la información de registros que se utiliza para recuperar la base de datos. Debe haber al menos un archivo de registro de transacciones para cada base de datos, aunque pueda haber más de uno. La extensión del archivo es .ldf IMPORTANTE: Es recomendable especificar el tamaño máximo de crecimiento del archivo. De ese modo se evita que se agote el espacio disponible en el disco al agregar datos. Para especificar un tamaño máximo para el archivo, utilice el parámetro MAXSIZE de la instrucción CREATE DATABASE o bien la opción limitar crecimiento de archivo a (MB) cuando utilice el cuadro de dialogo propiedades del administrador de SQL Server para crear la base de datos. Después de crear una base de datos, se recomienda crear una copia de seguridad de la base de datos master.

3.

CREACION DE UNA BASE DE DATOS

Antes de crear una base de datos, considere lo siguiente: a) b) c)

3.1

Sólo pueden crear base de datos las cuentas de inicio de sesión que pertencen a los roles fijos de servidor Sysadmin y dbcreator, aunque el permiso se puede conceder a otras cuentas. El usuario que crea la base de datos se convierte en el propietario(dbo) de la base de datos. Defina el nombre y tamaño de la base de datos, los archivos (y sus propiedades) en los que residirá la base de datos. COMO CREAR UNA BASE DE DATOS (Usando SQL Server Management Studio)

1.

Con el botón derecho (o el botón secundario), pulsa en Bases de datos y del menú selecciona Nueva base de datos, tal como se muestra en la figura:

Entonces se abrirá una ventana en la cual daremos los datos correspondientes para crear nuestra base de datos, el nombre que le di es MiDB: Damos clic en OK, y listo, nuestra base de datos está creada.

4

3.2 COMO CREAR UNA BASE DE DATOS (USANDO EL EDITOR DE CONSULTAS) La instrucción CREATE DATABASE Sintaxis: CREATE DATABASE nombre_basedatos ON [PRIMARY] ( NAME = nombre_lógico_data, FILENAME = ‘Ubicación_y_nombre_archivo_data’,.mdf SIZE = tamaño [ KB/ MB/GB/TB/ UNLIMITED ], MAXSIZE = tamaño_máximo [ KB/ MB/GB/TB/ UNLIMITED ], FILEGROWTH= incremento_crecimiento [ KB/ MB/ % ] ) [registro de transacciones] LOG ON( NAME = nombre_lógico_log, FILENAME = ‘Ubicación_y_nombre_archivo_log’,.ldf SIZE = tamaño [ KB/ MB/GB/TB ], MAXSIZE = tamaño_máximo [ KB/ MB/GB/TB/ UNLIMITED ], FILEGROWTH= incremento_crecimiento [ KB/ MB/ % ] ) )  

ON PRIMARY : define las propiedades del archivo primario. LOG ON: define las propiedades del archivo de registro de transacciones.

a)

CREAR UNA BASE DE DATOS SIN ESPECIFICAR LOS ARCHIVOS 1.

En SQL Server Management Studio, en el menú File ejecute New, New SQL Server Query. Luego, seleccione el servidor SQL al que desea conectarse

Ejemplo 01: Este ejemplo crea una base de datos llamada bd_ejemplo y crea los archivos principal y de registro de transacciones correspondientes. Debido a que la instrucción no tiene elementos , el archivo principal de la base de datos tiene el tamaño del archivo principal de la base de datos model. El registro de transacciones tiene el tamaño del archivo del registro de transacciones de la base de datos model. Como no se ha especificado MAXSIZE, los archivos pueden crecer hasta llenar todo el espacio disponible en el disco. 2.

En el Code Editor, digite las siguientes instrucciones:

CREATE DATABASE bd_ejemplo go

b)

3.

Ejecute las instrucciones. Si no hay errores recibimos el mensaje Comand (s) completed successfully.

4.

En el Object Explorer, expanda la carpeta Databases. Se debe mostrar la base de datos recién creada bd_ejemplo.

CREAR UNA BASE DE DATOS INDIVIDUAL. Ejemplo 02: En este ejemplo se crea una base de datos llamada VENTAS y se especifica un único archivo. El archivo especificado se convierte en el archivo principal y se crea automáticamente un archivo de registro de transacciones de 1 MB. Como no se especifican MB ni KB en el parámetro SIZE del archivo principal, se asigna en Megabytes. Ya que no existe < filespec> para el archivo de registro de transacciones, éste no tiene MAXSIZE y puede crecer hasta llenar todo el espacio disponible en el disco. CREATE DATABASE Ventas ON (NAME = venta_dat, FILENAME = ‘C:\Archivos de programa\Microsoft SQL SIZE = 4, MAXSIZE = 10, FILEGROWTH = 1 ) GO

5

Server\MSSQL\Data\venta.mdf’,

c)

CREAR UNA BASE DE DATOS SIN ESPECIFICAR SIZE Ejemplo 03 : Este Ejemplo Crea una Base De Datos llamada Ventas2. El archivo venta2_dat se convierte en el archivo principal, con un tamaño igual al tamaño del archivo principal de la base de datos model. El archivo de registro de transacciones se crea automáticamente y es un 25 por ciento del tamaño del archivo principal, o 512 KB, el que sea mayor. Como no se ha especificado MAXSIZE, los archivos pueden crecer hasta llenar todo el espacio disponible en el disco. CREATE DATABASE Ventas2 ON (NAME = venta2_dat, FILENAME = ‘C:\Archivos de programa\Microsoft SQL

d)

Server\MSSQL\Data\venta2.mdf’)

CREAR LA BASE DE DATOS MEDIANTE LA ESPECIFICACIÓN DE MÚLTIPLES ARCHIVOS DE REGISTRO DE DATOS Y DE TRANSACCIONES. 1.

En el Code Editor, digite y ejecute las siguientes instrucciones SQL:

CREATE DATABASE Multiples_a ON PRIMARY (NAME = Logi1, FILENAME = ‘C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\logidat1.mdf’, SIZE = 5MB, MAXSIZE = 10, FILEGROWTH = 10), ( NAME = Arch2, FILENAME = ‘C:\Archivos de programa\Microsoft SQL Server\MSSQL\Data\logidat2.ndf’, SIZE = 5MB, MAXSIZE = 10, FILEGROWTH = 10), ( NAME = Arch3, FILENAME = ‘C:\Archivos de programa\Microsoft SQL SIZE = 5MB, MAXSIZE = 10, FILEGROWTH = 10) LOG ON ( NAME = Logilog1, FILENAME = ‘C:\Archivos de programa\Microsoft SQL SIZE = 5MB, MAXSIZE = 10, FILEGROWTH = 10), ( NAME = Archlog2, FILENAME = ‘C:\Archivos de programa\Microsoft SQL SIZE = 5MB, MAXSIZE = 10, FILEGROWTH = 10)

Server\MSSQL\Data\logidat3.ndf’,

Server\MSSQL\Data\logilog1.ldf’,

Server\MSSQL\Data\logilog2.ldf’,

El ejemplo crea una base de datos llamada Multiples_a con tres archivos de datos de 5 MB y dos archivos de registro de transacciones de 5 MB. El archivo principal es el primer archivo de la lista y se especifica explícitamente con la palabra clave PRIMARY. Los archivos de registro de transacciones se especifican a continuación de las palabras clave LOG ON. Observe las extensiones que se emplean para los archivos de la opción FILENAME: .mdf se utiliza para los archivos principales, .ndf para los archivos secundarios y .ldf para los archivos de registros de transacciones. Ejecute el procedimiento almacenado sp_helpfile y observe los resultados Nota: Cuando se crea una base de datos se añade una entrada con el nombre de la base de datos, en la tabla del sistema sysdatabases de la base de datos del sistema master. 2.

Para revisar la tabla sysdatabases, digite y ejecute el siguiente procedimiento almacenado del sistema:

EXEC sp_helpdb El procedimiento sp_helpdb, entrega información acerca de todas las bases de datos del servidor, ó o de una base de datos específica.

6

Sintaxis: Sp_helpdb [ nombre_basedatos] Otro procedimiento: USE Multiples_a GO EXEC sp_helpfile. Responde: ¿que información muestra al ejecutar el procedimiento almacenado sp_helpfile?

4.

ADMINISTRACION DE LOS ARCHIVOS DE UNA BASE DE DATOS

CAMBIAR EL TAMAÑO DE LA BASE DE DATOS Si desea cambiar el tamaño de la base de datos puede usar la instrucción ALTER DATABASE o utilizar administrador SQL Server. 4.1.

ALTER DATABASE (T-SQL)

La instrucción ALTER DATABASE permite realizar cambios a una base de datos. Permite agregar o eliminar archivos de una base de datos. También se puede usar para modificar los atributos de los archivos, tales como el nombre o el tamaño de un archivo. También se puede usar para cambiar el nombre de una base de datos. Sintaxis: ALTER DATABASE nombre_basedatos ADD FILE especificación_archivo, … ADD LOG FILE especificación_archivo REMOVE FILE nombre_lógico_archivo MODIFY FILE especificación_archivo MODIFY FILE nuevo_nombre_basedatos 

especificación_archivo, son los tributos del archivo de la base de datos, tal como se definieron en el comando CREATE DATABASE

Ejemplo : el siguiente ejemplo modifica la base de datos ventas para agregarle un archivo de datos de 5MB. ALTER DATABASE Ventas ADD FILE ( NAME = venta_dat, FILENAME = ‘d:\sql200\grupo1\Bd_ven1dat.ndf’, SIZE = 5 MB, MAXSIZE = 10MB, FILEGROWTH = 5MB ) GO 4.2.

EXPANSION DE LA BASE DE DATOS Puede expandir la base de datos añadiéndole archivos adicionales, los archivos de datos crecerán automáticamente hasta que se acabe el espacio en disco. Ejemplo: el ejemplo siguiente aumenta el tamaño de uno de los archivos agregados a la base de datos Ventas. 1.

Primero averiguamos que tamaño tienen los archivos de la base de datos Ventas.

-

Ingresar a la base de datos Ventas.

7

-

Ejecutar el siguiente procedimiento almacenado sp_helpdb Ventas. Escribir las siguientes sentencias:

ALTER DATABASE Ventas MODIFY FILE ( NAME = venta_dat, SIZE = 18MB ) Ahora ejecute el procedimiento almacenado de sistema sp_helpdb para verificar que se haya agrandado satisfactoriamente la base de datos: EXEC SP_HELPDB Ventas 4.3.

ELIMINAR UN ARCHIVO DE UNA BASE DE DATOS Para eliminar un archivo de la base de datos ventas. ALTER DATABASE Ventas REMOVE FILE venta_dat –es archivo principal no se puede eliminar GO NOTA: la eliminación de un archivo de la base de datos solo se puede ejecutar cuando el archivo está vacío.

5. a)

REDUCCION DEL TAMAÑO DE UNA BASE DE DATOS La instrucción DBCC SHRINKFILE, reduce el tamaño de un archivo de base de datos activa.

Sintaxis: DBCC SHRINKFILE (nombre_lógico_archivo,tamaño_final_enMB) Ejemplo: para reducir el tamaño del archivo primario de la base de datos bd_ejemplo hasta 3 MB: Use bd_ejemplo Go DBCC SHRINKFILE ( Test1dat,3) Go b)

La instrucción DBCC SHRINKDATABASE, reduce el tamaño de los archivos de datos de la base de datosespecificada.

Sintaxis: DBCC SHRINKDATABASE (nombre_basedatos,porcentaje_espacio_libre_después_reducción) Ejemplo: para reducir toda la base de dato bd_ejemplo hasta que quede solo 50% de espacio libre: DBCC SHRINKDATABASE (bd_ejemplo,50) go

6.

ELIMINAR UNA BASE DE DATOS

Hay veces en que es necesario eliminar una base de datos del sistema. Quizás ya no lo necesite o esta se haya corrompido y tiene que reconstruirlo. En cualquier caso eliminar una base de datos es una tarea relativamente directa, esta operación se puede hacer a través del SQL Server Management Studio o por medio de Transact-SQL Ejemplo: en este ejemplo se eliminará la base de datos bd_ejemplo. DROP DATABASE bd_ejemplo 7. INSTANTÁNEAS DE UNA BASE DE DATOS

8

Una instantánea de base de datos es una vista de la base de datos, estática y de sólo lectura, hasta un instante de tiempo determinado. Se pueden crear varias instantáneas de una base de datos, y cada una de ellas es consistente hasta el momento en que se creó la instantánea. Como una instantánea de base de datos contiene la data hasta el momento de creación de la instantánea, se puede utilizar para la creación de reportes con data hasta el momento específico en el tiempo. Para crear una instantánea de base de datos hacemos uso de la instrucción CREATE DATABASE con la siguiente sintaxis: Sintaxis: CREATE DATABASE nombre_instantánea_basedatos ON ( NAME = nombre_lógico_archivo_basedatos_origen FILENAME = nombre_físico_archivo_instantánea ) AS SNAPSHOT OF nombre_basedatos_origen Ejemplo: el siguiente ejemplo crea una instantánea de la base de datos Ventas. Observe que el nombre se ha especificado de modo que indica que representa una instantánea, e informa acerca del momento en que se creó la instantánea. CREATE DATABASE Ventas_instante_26_abril2010_12h ON ( NAME = ventas_data, FILENAME = ‘d: \SQL Server2005\INSTANTANEAS\ventas_instante_01.ss’ ) AS SNAPSHOT OF Ventas Go PARA RECORDAR Recuerde siempre que una base de datos es una colección de objetos, como tablas, vistas y procedimientos almacenados. Cada base de datos tiene su propio registro de las transacciones y una base de datos se mantiene coherente lógicamente en términos de restricciones de integridad entre los objetos de la misma. Si deseamos crear una base de datos podemos hacerla de dos maneras, una usando SQL Server Management Studio y la otra usando el editor de consultas. TRABAJO: DESARROLLE LOS SIGUIENTES CONCEPTOS Y/O DEFINICIONES: 1:- SQL Server 2014, características, Ventajas. 2.- Tecnologías o componentes del SQL Server 2014. 3.- Ediciones SQL Server 2014. 4.- Requerimientos de hardware y del sistema operativo. 5.- desarrolle de manera resumida las ventanas de SQL Server Management Studio.(Explorador de objetos)

9

CREACIÓN DE TABLAS E INTEGRIDAD DE RELACIÓN CONTENIDO:  Los tipos de datos SQL Server 2005  Creación de tablas CREATE TABLE  Modificación de la definición de una tabla ALTER TABLE  Integridad de datos Las restricciones CONSTRAINTS.  PRIMARY KEY, FOREIGN KEY, UNIQUE, DEFAULT, CHECK, IDENTITY TEMA: Los sistemas de gestión de base de datos organizan y estructuran los datos de tal modo que puedan ser recuperados y manipulados por usuarios y programas de aplicación. La estructura más importante de una base de datos relacional son las tablas. En esta sesión aprenderemos a creerlas y relacionarlas de la manera ideal. OBJETIVOS ESPECIFICOS: -

Crear tablas desarrollando algún caso pequeño de manera que el alumno pueda comprender el uso de las relaciones entre ellas.

1.- APRENDIENDO A CREAR TABLAS: 1.1

¿QUE ES UNA TABLA? Una tabla es una colección de datos sobre una entidad (Persona, lugar, cosa) especifica, que tiene un número discreto de atributos designados ( por ejemplo cantidad o tipo). Las tablas están en el corazón de SQL Server y del modelo relacional en general. Las tablas son fáciles de entender ya que son prácticamente iguales a las listas que utiliza de manera cotidiana. En SQL Server una tabla suele denominarse tabla de base, para hacer énfasis sobre donde se almacenan los datos. La utilización de , también distingue la tabla de una vista (View), una tabla virtual que es una consulta interna de una tabla base. Conforme se utiliza la base de datos con frecuencia se encontrará conveniente definir tablas propias para almacenar datos personales o datos extraídos de otras tablas. Los atributos de los datos de una tabla (como tamaño, color, cantidad, fecha, etc) toman la forma de columnas con nombre en la tabla. Las columnas de la tabla recién creada se define en el cuerpo de las sentencias CREATE TABLE . La definición de columnas aparecen en una lista separada por comas e incluida entre paréntesis. La definición de la columna determina el orden de izquierda a derecha de la columna en la tabla. a.

Nombre de columna: Pueden ser iguales a los nombres de las columnas de otras tablas b. Tipo de datos Identifica la clase de datos que la columna almacenará. c. Si la columna contiene datos requeridos La cláusula NOT NULL impide que aparezcan valores NULL en la columna o en caso contrario admite valores NULL Las tablas suelen estar relacionadas con otras tablas. 1.2

CREACIÓN DE TABLAS. Cuando se crea una tabla se debe especificar el nombre de la tabla, el nombre de la columna, el tipo de dato de la columna y las restricciones de la columna. Los nombres de las columnas deben ser únicos en una tabla específica, pero se puede usar el mismo nombre de la columna en tablas diferentes dentro de la misma base de datos.

1.3

TIPOS DE DATO Un tipo de dato es un atributo que especifica el tipo de dato (carácter, entero, binario, etc.)

10

que puede ser almacenado en una columna, parámetro o variable. SQL Server provee de un conjunto de tipos de dato, aún cuando se pueden crear tipos de dato definidos por el usuario que se crean sobre la base de tipos de dato provisto por el SQL Server. Los tipos de dato provistos por el sistema definen todos los tipos de dato que se pueden usar en SQL Server. Los tipos de dato pueden ser utilizados para asegurar la integridad de los datos porque los datos ingresados o modificados deben cumplir con el tipo de dato especificado para el objeto correspondiente. Por ejemplo, no se puede almacenar el nombre de alguien en una columna con un tipo de dato datetime, ya que esta columna solo aceptará valores válidos de fecha y hora.

Categoria

Entero

TIPO DE DATOS

DESCRIPCION

Bigint

Datos enteros de 8 bytes

Int

Datos enteros de 4 bytes

Smallint

Datos enteros de 2 bytes

tinyint

Datos enteros comprendidos entre 0 y 255 (entero de 1 byte)

Bit

Datos enteros con valor 1, 0 ó NULL

Decimal (p,s) *

P es la precisión, y va de 1 a 38, siendo 18 el valor predeterminado. S es la escala y va desde o hasta p

Numeric (p,s) *

Funcionalmente equivalente a decimal

Money

Valor monetario de 8 bytes

Smallmoney

Valor monetario de 4 bytes

Float

Números con precisión de coma flotante comprendidos entre -1.79E + 308 y 1.79E + 308

Real

Números con precisión de coma flotante comprendidos entre-1.18E38,0 y 1.18E -38 a 3.40E + 38

Datetime

Datos de fecha y hora comprendidos entre el 1 de enero de 1753 y el 31 de diciembre de 9999

Smalldatetime

Datos de fecha y hora comprendidos entre el 1 de enero de 1900 y el 06 de junio de 2079

Char(n)

Cadena de longitud Fija (n puede ser de1 a 8 000 caracteres)

Varchar(n|max)

Cadena de longitud variable (n puede ser de1 a 8 000 bytes). Max indica la longitud máxima que es 2^31-1 bytes

Text

Cadena de longitud variable con un máximo de 2^31 -1 caracteres

nchar(n)

Datos Unicode de longitud fija de n caracteres ( n puede ser de 1 a 4000 caracteres)

nvarchar(n|max)

Cadena de longitud variable ,los datos pueden variar en el número de caracteres (hasta 4000 caracteres Unicode) Max indica la longitud máxima que es 2^31-1 bytes

Numérico exacto

moneda

Numérico aproximado

Fecha y hora

Cadena

Datos unicode

11

Binario

Generación automática

ntext

Cadena UNICODE de longitud variable con un máximo de 2^30 -1 caracteres

Binary(n)

Los datos deben tener la misma longitud fija (n puede ser de 1 hasta 8 000 bytes)

Varbinary(n|max)

Datos binarios de longitud variable(n puede ser con una longitud maxima de 8000 bytes) Max indica la longitud máxima que es 2^311 bytes

timestamp

Generación automática de números binarios de modo que son únicos dentro de una base de datos

* p es la precisión y determina el número máximo de dígitos tanto a la izquierda como a la derecha del punto decimal. S es la escala y determina el número máximo de dígitos a la derecha del punto decimal. Como recomendación podemos probar con estos consejos al escoger tipos de datos:



 







2

Si se necesita almacenar datos enteros desde 0 hasta 255, usar el tipo de dato tinyint. Las columnas con tipos de datos tinyint usan solamente 1 byte para almacenar sus valores, en comparación con 2 bytes, 4 bytes y 8 bytes usados para guardar las columnas con smallint, int y bigint respectivamente. Si se necesita guardar datos enteros desde -32,7658 hasta 32,767, usar smallint. Las columnas con tipo de dato smallint usan solamente 2 bytes para almacenar sus valores, a diferencia de los 4 bytes y 8 bytes de los tipos de datos int y bigint respectivamente. Si se necesita almacenar datos enteros desde -2,147,483,648 hasta 2,147,483,647, usar int. Las columnas con tipo de dato int usan solamente 4 bytes para guardar sus valores, mientras que los bigint usan 8 bytes. Se puede utilizar si es que por ejemplo se necesita catalogar una biblioteca con más de 32,767 libros. Usar smallmoney en vez de money, si se necesita guardar valores monetarios desde -214,748.3648 hasta 214,748.3647. Las columnas con tipo de dato smallmoney usan solamente 4 bytes para guardar sus valores, en comparación con los 8 bytes que son usados cuando las columnas tienen tipo de dato money. Por ejemplo si necesitas almacenar los sueldos mensuales de los empleados. Usar smalldatetime en vez de datetime, si se necesita guardar la fecha y hora desde Enero 1 de 1900 hasta Junio 6 del 2079, con exactitud al minuto. Las columnas con smalldatetime usan solamente 4 bytes para guardar sus valores, en comparación con los 8 bytes usados para guardar valores de las columnas con datetime. Si necesitas almacenar la fecha de ingreso de un empleado a la compañía utiliza este tipo de dato. Usar columnas varchar/nvarchar en vez de text/ntext cuando sea posible. Porque SQLServer almacena las columnas text/ntext en las páginas de tipo Text/Image separado del resto de datos que están en las páginas de Datos, esto hace que tome más tiempo obtener los valores text/ntext.

DISEÑO DE LA INTEGRIDAD DE LA BASE DE DATOS Establecer las normas de integridad es un proceso tan importante como el modelamiento, pues si bien el primero se encarga de encontrar el modelo que optimice más los recursos del servidor de base de datos, las normas de integridad determinarán la forma más segura de controlar la confiabilidad, veracidad e integridad de la información. Se debe analizar cada uno de los atributos para determinar qué norma de integridad puede afectarlo para lograr los objetivos de la seguridad. LAS RESTRICCIONES(constrains): Las restricciones son un método declarativo de definición de la integridad de datos ya que ellas se definen al momento de crear la tabla (con la sentencia CREATE TABLE), o al momento de modificar la definición de la tabla (con la sentencia ALTER TABLE). En otras palabras, una restricción forma parte de la definición de la tabla. Las restricciones son el método preferido para dar fuerza a la integridad de los datos.

12

TIPOS DE RESTRICCIONES: Las restricciones son un método estándar ANSI para forzar la integridad de los datos. Garantizan que los datos ingresados en las columnas sean valores válidos y que se mantengan las relaciones entre las tablas. PRIMARY KEY (PK) Garantiza que cada fila o registro en una tabla es único(a). la columna o combinación de columnas definida como clave primaria no permite valores duplicados. Cuando se define la restricción PK sobre un (o unos) atributo(s) de una entidad se obliga a: No duplicar el contenido de dicho atributo en la entidad No permite valores nulos (NULL) Se sugiere usar el tipo de datos Integer (int, smallint o tynint), numeric o decimal FOREIGN KEY (FK) Indica el atributo o atributos que almacenaran el dato que los relacionará con otra entidad. Este atributo en la otra entidad debe ser un PK para poder establecer una adecuada relación. Cuando se define la restricción FK sobre un (o unos) atributo(s) de una entidad se obliga a: el dato que se desea almacenar en el atributo FK, debe haber sido previamente registrado en la entidad que contiene el PK. Al tratar de eliminar el dato en la entidad que contiene el atributo PK, previamente se debe eliminar el dato en la entidad que contiene el FK. UNIQUE(UN) Garantiza que cada valor en una columna es único. Permite valores únicos. Cuando se definen la restricción UN sobre un (o unos) atributo(s) de una entidad se obliga a: no repetir los valores definidos como únicos NOT NULL: (NU) Indica que, a pesar que el motor de la base de datos obliga a registrar todos los valores de una entidad, podríamos causar excepciones, para dejar atributos vacíos. Cuando se define la restricción NU sobre un (o unos) atributo(s) de una entidad se le obliga a: No causar un error de excepción cuando se deje dicho atributo en blanco Los Primary Key y Foreign key, no pueden tener esta restricción. IDENTITY

( ID)

Indica que un atributo de la entidad será un correlativo automático que facilitará el control de algún tipo de codificación o contador instantáneo. Cuando se define la restricción ID sobre un (o unos) atributo(s) de una entidad se le obliga a: Sólo un atributo de la entidad puede poseer esta restricción. El valor de este atributo será autogenerado, por ningún motivo puede ser editado. Se debe registrar dos parámetros : el valor inicial (seed:semilla), y el incremento. CHECK (CK) Indica que algunos atributos pueden ser validados dentro de un rango de valores. Cuando se define la restricción CK sobre un (o unos) atributo(s) de una entidad se le obliga a: El valor que vaya a tener dicho atributo debe encontrarse en el conjunto de valores válidos que se le ha indicado. Por ejemplo: el atributo sexo de una entidad de clientes solo puede ser M o F -

DEFAULTS Un DEFAULTS es un valor por defecto que se puede asignar en un campo cuando el valor de este campo no es insertado en el registro. Las definiciones DEFAULT se pueden:  Crear cuando se crea la tabla, durante el proceso de definición de la misma.  Agregar a una tabla ya existente. Cada columna de una tabla puede contener una sola definición DEFAULT  Modificar o eliminar, si ya existen definiciones DEFAULT.por ejemplo, puede modificar el valor que se inserta en una columna cuando no se escribe ningún valor.

13

RESTRICCIONES (CONSTRAINTS) Las restricciones permiten definir el modo en que SQL Server automáticamente fuerza la integridad de la base de datos. Las restricciones definen reglas indicando los valores permitidos en las columnas y son el mecanismo estándar para asegurar integridad. Usar restricciones es preferible a usar desencadenadores, reglas o valores por defecto. DIAGRAMA ENTIDAD – RELACION de la base de datos ventas

1)

2)

1)

implementación paso a paso. Con ayuda de ALTER TABLE 1.1) Creamos las tablas. Agregamos algunas restricciones: 1.2) Agregamos restricción DEFAULT, CHECK, UNIQUE.. 1.3) Agregamos las llaves primarias (ADD PRIMARY KEY) 1.4) Agregamos Las Llaves Foráneas Y Relaciones (ADD FOREIGN KEY-REFERENCES) Implementamos las tablas, las llaves primarias, las llaves foráneas y las relaciones en una forma directa A continuación detallaremos ambos caso.: Implementación paso a paso utilizando el Analizador de consultas

EJERCICIO1 : crear una base de datos llamada Ventas en una carpeta llamada base de datos, tamaño máximo de 50MB y con un porcentaje de crecimiento del 5%. CREACIÓN DE TABLAS LA INSTRUCCION CREATE TABLE Sisntaxis: CREATE TABLE nombre_tabla ( Nombre _columna1 tipo_dato1[ NULL| NOT NULL] , Nombre _columna1 tipo_dato1[ NULL| NOT NULL] , Nombre _columna1 tipo_dato1[ NULL| NOT NULL] , …) USE VENTAS CREATE TABLE CLIENTE ( Cod_cliente int , ApePat CHAR(50), ApeMat char (50), Nombre char (50), Ruc char(11), Direccion char (70), Cod_dist char(5)) EL PROCEDIMIENTO sp_help Genera un reporte con información a cerca de la definición de un objeto de la base de datos activa. Todo los usuarios de la base de datos pueden ejecutar este procedimiento.

14

Sintaxis: sp_help nombre_objeto_basedatos ejecute la siguiente instrucción: sp_help cliente CREATE TABLE DISTRITO ( Cod_dist CHAR(5) NOT NULL, Descripción_dist CHAR(15)) . . . ejercicio 02:

crear las siguientes tablas PRODUCTO, UNIDAD, FACTURA, DETALLE FACTURA

MODIFICACIÓN DE LA DEFINICION DE UNA TABLA En una tabla podemos añadir nuevas columnas, eliminar columnas, cambiar las propiedades de una columna, añadir o eliminar restricciones. ALTER TABLE Permite modificar las definiciones de una tabla. SINTAXIS: ALTER TABLE nombre tabla ADD nombre_columna propieddes columna DROP COLUMN columna_nombre ALTER COLUMN nombre_columna Nuevas_propiedades_columna ADD CONSTRAINT nombre_restriccion PRIMARY KEY …. | UNIQUE…| FOREIGN KEY… | |DEFAULT…| CHECK… DROP CONSTRAINT nombre_restricción

AGREGANDO LAS LLAVES PRIMARIAS A TODAS LAS TABLAS: ALTER TABLE CLIENTE ADD CONSTRAINT PK_CODCLIENTE PRIMARY KEY (Cod_cliente) ALTER TABLE DETALLE_FACTURA ADD CONSTRAINT PK_DETALLEFACT PRIMARY KEY (Num_fact, Cod_producto) . . . AGREGANDO LLAVES FORÁNEAS Y RELACIONANDO TABLAS Agregando referencia a la tabla distrito

15

ALTER TABLE CLIENTE ADD CONSTRAINT FK_CODDISTRITO FOREIGN KEY (Cod_dist) REFERENCES DISTRITO (Cod_dist) . . . 2)

Implementamos las tablas, las llaves primarias, las llaves foráneas y las relaciones en una forma directa

CREATE DATABASE VENTAS_PROD1 USE VENTAS_PROD1 CREATE TABLE DISTRITO( Cod_dist CHAR(5)NOT NULL PRIMARY KEY, DESCRIPCION_DIST CHAR(15)) CREATE TABLE CLIENTE( Cod_cliente int identity (100,1) NOT NULL PRIMARY KEY, ApePat CHAR(50), ApeMat char (50), Nombre char (50), Ruc char(11), Direccion char (70), Cod_dist char(5) references DISTRITO) . . EJERCICIO PROPUESTO Se desea crear la base de datos de una institución que brinda cursos de extensión profesional. Los interesados en los cursos se pueden matricular sin ninguna restricción, y además tienen facilidades para pagar el costo de los cursos. A continuación se presenta el modelo físico SQL Server de la base de datos a crear.:

16

12-

Crear una base de datos llamada Extensión_profesional en la unidad D, carpeta Trabajo_Encargado Implemente paso a paso la base de datos, para lo cual: 2.1. Cree las tablas 2.2. Agregue las llaves primarias 2.3. agregue las llaves foráneas y relaciones 2.4. Realice algunas preguntas para cada una de las tablas y desarrolle las restricciones check, unique , default, para las tablas creadas

PARA RECORDAR: Recuerde siempre que las tablas son el corazón de las bases de datos relacionales en general y de SQL Server en particular. Las restricciones de integridad aseguran que la clave primaria identifique unívocamente a cada entidad representada de la base de datos y además aseguran que las relaciones entre entidades de la base de datos se preserven durante las actualizaciones.

OPERACIONES DE MANTENIMIENTO DE DATOS INGRESO, MODIFICACIÓN Y ELIMINACIÓN DE DATOS TEMA: Esta sesión muestra como se puede utilizar SQL para añadir nuevos registros en una tabla, suprimir registros en una tabla y modificar registros en una tabla ya existente. OBJETIVOS ESPECIFICOS: -

Describir las tres sentencias SQL que se emplean para modificar los CONTENIDOS de una base de datos.

CONTENIDO:   

1.-

INSERT DELETE UPDATE

INSERT La sentencia de INSERT se utiliza para añadir registros a las tablas de la base de datos. En un tratamiento simplificado, el comando INSERT toma la siguiente forma: Sintaxis: INSERT [INTO] Nombre_tabla (nombre_columna1,..) VALUES (exp,…) Nombre_tabla es únicamente el nombre de la tabla donde se desea ingresar los nuevos datos. Nombre_columna es una lista opcional de nombres de campo en los que se insertarán valores en el mismo número y orden que se especificarán en la Cláusula VALUES. Si no se especifica la lista de columnas(nombre_comumna1,…), los valores de expr en la cláusula VALUES deben ser tantos como campos tenga la tabla y en el mismo orden que se definieron al crear la tabla. Si solo se indica una lista parcial de columnas, el resto de las columnas recibirán un valor nulo o el valor configurado por defecto para esa columna, en caso que lo tenga. Además, no se deben asignar valores a los siguientes tipos de columnas, dado que SQL Server genera automáticamente este valor.



Columnas con la propiedad IDENTITY

17

Exp es una lista de expresiones o valores constantes, separados por comas, para dar valor a los distintos campos del registro que se añadirá a la tabla. Las cadenas de caracteres deberán estar encerradas entre comillas simples. NOTA  



La palabra clave INTO en un comando INSERT es opcional y solo se utiliza para clarificar el código. Los valores ingresados deben coincidir con la lista de columnas. La cantidad de valores provistos debe ser igual a la cantidad de columnas indicadas en la lista de columnas, y el tipo de dato, precisión, y escala de cada valor debe coincidir con los de las columnas correspondientes. Cuando se define un comando INSERT, se puede usar la cláusula VALUES para especificar los valores de los datos para una fila o usar una subconsulta SELECT para especificar los valores para una o más columnas.

Nota: Una vez creadas las tablas de la base de datos se debe cargar la data, para ello copiar la base de datos ControlInventario de una tienda de abarrotes.

1.1

INSERTAR REGISTROS CON VALORES INCOMPLETOS

Cuando la lista de valores está incompleta es obligatorio establecer en que columna va cada valor de la lista, por lo que la lista de columnas es obligatoria en la instrucción INSERT. Utilizar la base de datos ControlInventario creada anteriormente. EJEMPLO 01: Añadir un registro a la tabla proveedor

18

INSERT proveedor ( Nombre , Representante , Direccion ) VALUES('GOLOSINAS Y ANTOJOS','ZAVALA ZEGARRA, CLAUDIA', 'AV. CIRCUNVALACION 755 ZONA INDUSTRIAL') INSERT proveedor ( Nombre , Representante , Direccion ) VALUES('EL DULZON','PRADO PRADO, MIGUEL', 'AV. BRASIL CDA 5 NRO 526') INSERT proveedor ( Nombre , Representante , Direccion ) VALUES('LACTEOS DEL CENTRO','JUAN PEREZ, WALTER','LIBERTAD 345 URB. EL PINO') En este comando, los valores han sido definidos para la columnas Nombre, Representante Y Direccion Sin embargo, no es necesario incluir la columna IdProveedor en el comando INSERT, dado que la columna IdProveedor se define con la propiedad IDENTITY, porque los valores para esa columna se generan automáticamente. Cada sentencia INSERT añade un único registro a la tabla. En el ejemplo sólo se han especificado 3 campos con sus respectivos valores, el resto de campos quedarán a nulo. Un valor Nulo NULL no significa blancos o ceros sino simplemente que el campo nunca ha tenido un valor. 1.2

INSERTAR REGISTROS CON VALORES COMPLETOS

Añadir un registro a la tabla PRODUCTO INSERT producto (IdCategoria,IdProveedor,Nombre,UnidadMedida,PrecioProveedor, StockActual,StockMinimo,Descontinuado ) VALUES(1,1,'CARAMELOS BASTON ARCOR','PAQUETE 454 GR',1.50,200,50,0) INSERT producto VALUES(1,2,'CARAMELOS SURTIDO DE FRUTAS','PAQUETE 450 GR',1.00,300,50,0) INSERT producto VALUES(2,3,'YOGURT GLORIA FRESA','ENVASE 1 LT',2.00,450,240,0) INSERT producto VALUES(3,4,'JAMONADA LAIVE','KILOGRAMO',12.50,80,75,0)

Añadir un registro a la tabla CATEGORIA º INSERT categoria (Categoria, Descripcion) VALUES('GOLOSINAS','GALLETAS,CHOCOLATES,CARAMELOS,TOFFES') INSERT categoria VALUES('LACTEOS','LECHES,YOGURES,QUESOS,MANTEQUILLAS') INSERT categoria VALUES('EMBUTIDOS','JAMONADAS,JAMONES,SALCHICHAS,CHORIZOS') Ejercicio01. Llenar 1 registro más a la tabla PROVEEDOR, PRODUCTO Y CATEGORIA 1.3

INSERCIÓN DE LA FECHA DEL SISTEMA

La función getdate() entrega la fecha y hora del sistema. La puede utilizar para insertar la fecha y hora del sistema en una columna de tipo fecha_hora. Añadir un registro a la tabla ORDEN INSERT orden (IdOrden,FechaOrden) VALUES(1, getdate())

--INSERT orden (IdOrden,FechaOrden) --VALUES(1, 28/25/10)

19

INSERT orden VALUES(2, getdate(), getdate() ) INSERT orden VALUES(3, getdate() - 10, getdate() - 8) Realizar consulta la tabla Orden: SELECT * FROM ORDEN 1.4

INSERCIÓN DE UN VALOR DE FECHA ESPECIFICO

Para enviar un dato fecha al servidor, la fecha se envía como una cadena con formato de fecha. Por lo general, cuando la conexión es a un servidor SQL, no sabemos cuál es el formato de fecha predeterminado que está utilizando el servidor, por lo que en ocasiones podemos tener problemas con la manipulación de las fechas. EJERCICIO: 1.4.1

Cree una tabla PRUEBA_FECHAS, con un campo Fecha de tipo Datetime que no permita valores nulos, para hacer algunas pruebas con las fechas. 1.4.2 Ahora, inserte la fecha 20 de junio de 1998 INSERT INTO PRUEBA_FECHAS VALUES(’20 Jun 1998’) go SELECT * FROM PRUEBA_FECHAS 1.4.3 Ahora inserte la fecha 3 de enero de 1979 (‘03/01/1979’) e inserte otro registro con la fecha : (‘11/26/1980’) NOTA: observe si la fechas se registró correctamente Cuando se envía fechas al servidor se recomienda informar al servidor en qué formato se le está enviando las fechas para que las lea correctamente 1.4.4 Infórmale al servidor acerca del formato de sus fechas:

SET DATEFORMAT dmy go SET DATEFORMAT mdy go SET DATEFORMAT ymd Go Ahora inserte nuevamente la fecha usando el formato acostumbrado para nosotros(dmy)

1.2

INSERTAR MÚLTIPLES REGISTROS: Además existe la posibilidad de agregar múltiples registros con ayuda del comando SELECT . Usar una subconsulta SELECT para agregar datos

20

Se puede usar una subconsulta SELECT dentro de un comando INSERT para agregar datos a una tabla desde otra u otras tablas o vistas. Una subconsulta permite agregar más de una fila a la vez. NOTA: Una subconsulta SELECT en un comando INSERT se utiliza para agregar subconjuntos de datos existentes a una tabla, mientras que la cláusula VALUES se usa para guardar datos nuevos en una tabla. Ejemplo : o

Agregar a la tabla PROVEEDOR 2 registros. Ejecutar la siguiente instrucción SQL : SELECT * FROM proveedor (Selecciona todos los campos de la tabla PROVEEDORES)

o

Crear una tabla nueva llamada COPIA_PROVEEDOR y que contenga los mismos campos o columnas de la tabla PROVEEDOR.

CREATE TABLE COPIA_PROVEEDOR ( IdProveedor int , Nombre varchar(40) NOT NULL, Representante varchar(30) NULL, Direccion varchar(60) NULL, Ciudad varchar(15) NULL, Departamento varchar(15) NULL, CodigoPostal varchar(15) NULL, Telefono varchar(15) NULL, Fax varchar(15) NULL ) o

Ahora nuestro objeto es trasladar todos los proveedores de la tabla PROVEEDOR que tenga el campo ciudad =’LIMA’, a nuestra nueva tabla COPIA_PROVEEDOR.

INSERT INTO COPIA_PROVEEDOR SELECT IdProveedor , nombre,Representante,Direccion,Ciudad,Departamento,CodigoPostal,Telefono,Fax FROM PROVEEDOR WHERE Ciudad = 'lima' Como podemos observar es posible combinar nuestro comando INSERT con consultas de selección, para agregar datos específicos sin tener la necesidad de realizarlo uno por uno

2.

UPDATE La sentencia UPDATE se utiliza para cambiar el contenido de los registros de una tabla de la base de datos. Su formato es: UPDATE Nombre_tabla SET nombre_columna = expr,… [WHERE {condición}]

Nombre_tabla es únicamente el nombre de la tabla donde se desea ingresar los nuevos datos

21

Nombre_columna es el nombre de columna o campo cuyo valor se desea cambiar. En una misma sentencia UPDATE pueden actualizarse varios campos de cada registro de la tabla. Expr es el nuevo valor que se desea asignar al campo que le precede. La expresión puede ser un valor constante o una subconsulta. Las cadenas de caracteres deberán estar encerradas entre comillas. Las subconsultas entre paréntesis. La cláusula WHERE determina que registros se modificarán EJEMPLO01: Subir el precio de los productos de la tabla producto a un 15% de aquellos productos cuya categorìa sea igual a 1. SP_HELP PRODUCTO select * from PROVEEDOR select * from dbo.PRODUCTO select * from dbo.CATEGORIA INSERT proveedor VALUES('ANTOJITOS','MENDIETA AZPARRENT,BERTHA', 'AV. GRAU 125','AREQUIPA','AREQUIPA',NULL,NULL,NULL) go INSERT proveedor VALUES('DISTRIBUIDORA DE GOLOSINAS FENIX','FELICES ARSENIO, JOSE', 'JR. RECUAY 347 BREÑA','LIMA','LIMA',NULL,NULL,NULL) go INSERT producto VALUES(1,9,'GALLETAS SURTIDAS BUTTER COOKIES','ENVASE 16 ONZAS',2.50,200,50,0) go INSERT producto VALUES(1,10,'CHOCOLATE LOVER CHIPS DELUXE','BARRA 16 ONZAS',1.30,230,100,0) go INSERT producto VALUES(3,5,'JAMONADA LAIVE','KILOGRAMO',12.50,80,75,0) go select * from dbo.PRODUCTO UPDATE PRODUCTO SET PrecioProveedor = PrecioProveedor*1.5 WHERE IdCategoria = 1 Ejemplo 02:fijar el campo FechaEntrada de Orden (en la tabla ORDEN) de todos aquellas órdenes realizadas que tienen vacía (NULL)a la fecha de hoy, se pondría: select * from dbo.ORDEN UPDATE dbo.ORDEN SET FechaEntrada = GETDATE() WHERE FechaEntrada is NULL

1.

Un ejemplo mas simple podría ser fijando un precio único para todos los productos, sin utilizar la cláusula WHERE. UPDATE PRODUCTO SET PrecioProveedor = 200

3.

DELETE DELETE es especialmente útil cuando se desea eliminar varios registros. En una instrucción DELETE con múltiple tablas, debe incluir el nombre de tabla (tabla*). Si se especifica más de una tabla para eliminar registros, todas deben tener una relación de muchos a uno. Si se desea eliminar todos los registros de una tabla, eliminar la propia tabla es más eficiente que ejecutar una consulta de borrado. EL FORMATO DE LA SENTENCIA ES:

22

DELETE FROM Nombre_tabla [WHERE {condición}] Nombre_tabla es únicamente el nombre de la tabla donde se desea borrar los datos La cláusula WHERE determina que registros se borrarán Cada sentencia DELETE borra los registros que cumplen la condición impuesta o todos si no se indica la cláusula WHERE EJEMPLO 1:El ejemplo siguiente elimina todos los registros de la tabla ORDEN DELETE ORDEN EJEMPLO 1:El ejemplo siguiente elimina todos los registros de la tabla CATEGORIA DELETE CATEGORIA

4.

TRUNCATE TABLE

A diferencia de la instrucción DELETE, TRUNCATE TABLE no devuelve un mensaje acerca de la cantidad de las filas afectadas. Tanto TRUNCATE TABLE como DELETE quitan todas las filas de la tabla, pero TRUNCATE TABLE es más rápida y utiliza menos recursos de los registros de transacciones y del sistema. EJEMPLO 01: Elimine todos los registros de la tabla PRODUCTO TRUNCATE TABLE PRODUCTO

EJERCICIOS PROPUESTOS; SEGÚN LA BASE DE DATOS Controlinverntario: WHERE SUE_VEN >800 1. Insertar 5 registros a la tabla ORDEN_DETALLE . 2.

Realice una inserción de múltiples registros de la tabla producto, y que solo inserte los registros a la nueva tabla creada, los productos cuyo PrecioProveedor sean mayores a 20 soles y menores que 30. RE TIP_VEN = ‘1’ 3. Actualice el campo FechaOrden y coloque la fecha actual del sistema de la tabla ORDEN. 4.

Crear 2 preguntas para realizar actualizaciones o cambios a una de las tablas de la bd.

5.

Realizar una actualización en cascada.

6.

Eliminar los registros con la descripción del campo ciudad igual a ‘Lima’ de la tabla PROVEDOR.

7.

Eliminar los registros de la tabla PROVEEDOR en cascada.

PARA RECORDAR: 

La sentencia INSERT de una fila añade una fila de datos a una tabla. Los valores para la nueva fila se especifican en la sentencia como constantes.

23



UPDATE es especialmente útil cuando se desea cambiar un gran número de registros o cuando éstos se encuentran en múltiples tablas. Puede cambiar varios campos a la vez. Las filas a actualizar son especificadas mediante una condición de búsqueda.



La sentencia DELETE suprime cero o mas filas de datos de una tabla. Las filas a suprimir son especificadas mediante una condición de búsqueda.



A diferencia de la sentencia SELECT, que puede operar sobre múltiples tablas, las sentencias INSERT, DELETE y UPDATE funcionan solamente sobre una única tabla cada vez.

IMPLEMENTACIÓN DE CONSULTAS BÁSICAS TEMA: En esta sección veremos como leer el contenido de una tabla mediante la ejecución de consultas sencillas a través de la instrucción SELECT . OBJETIVOS ESPECIFICOS: Utilizar los comandos SQL de manera que nos permita recuperar la información de alguna base de datos. CONTENIDO  Introducción a las consultas  Uso del SELECT, FROM, WHERE, ORDER BY. 1.

INTRODUCCION A LAS CONSULTAS

Las consultas de selección se utilizan para indicar al motor de datos que devuelva la información de las bases de datos, esta información es devuelta en forma de conjunto de registros que se pueden almacenar en objeto recordset. Este conjunto de registros es modificable.

2.

LA INSTRUCCIÓN SELECT

La cláusula SELECT lista los datos a recuperar por la sentencia SELECT. Los elementos o datos a seleccionar pueden ser columnas de la base de datos o columnas a calcular por SQL cuando efectúa la consulta o también el asterisco(*) para recuperar todos los campos de un fichero o tabla. FROM La cláusula FROM lista las tablas o ficheros que contienen los datos a recuperar por la consulta. El formato de esta cláusula es: SELECT * FROM NombreTabla Hay 3 componentes básicos en la instrucción SELECT: SELECT, FROM Y WHERE. a.

SINTAXIS BÁSICA: SELECT * / ListaColumnas FROM origenTabla [WHERE condiciónBúsqueda]   

b.

ListaColumnas: es la lista de columnas a mostrar el resultado de la consulta. Si se especifica * se mostrarán todas las columnas de la tabla. CondiciónBúsqueda: es una expresión lógica que indica que las filas a mostrar son aquellas para las que el valor de la expresión es verdadero.

SINTAXIS COMPLETA:

24

SELECT [ALL|DISTINCT] [ TOP n [ PERCENT] [WITH TIES] ListaColumnas [INTO nuevaTabla] FROM origenTabla [WHERE condiciónBúsqueda] [GROUP BY [ALL]expresiónAgruparPor] [WITH CUBE | ROLLUP ] [HAVING condiciónBúsqueda] [ORDER BY expresiónOrden [ASC / DESC] ] [COMPUTE AVG | COUNT | MAX | MIN |SUM (expresión)]

LECTURA DE TODOS LOS DATOS DE UNA TABLA: EJEMPLO1: el siguiente ejemplo retorna todas las columnas y filas de la tabla PRODUCTOS que se encuentra en la base de datos ControlInventario USE ControlInventario GO SELECT * FROM PRODUCTO GO LECTURA DE COLUMNAS SELECCIONADAS DE UNA TABLA: Ejemplo2: El ejemplo siguiente retorna las columnas nombre,unidadMedida y precioProveedor de la tabla Producto.

idProducto,

SELECT nombre,unidadMedida , precioProveedor FROM producto GO Ejercicio1: Listar los campos idProducto, precioVenta y cantidad de la tabla GUIA_DETALLE que se encuentra en la base de datos ControlInventario

DEFINIENDO ALIAS PARA LOS NOMBRES DE COLUMNA Un alias define títulos alternativos para los nombres de columna. Si el Alias es una frase(contiene espacios) debe escribirse entrecomillada. Ejemplo3: SELECT idProducto AS Código, Nombre AS Descripción, unidadMedida AS Unidad, precioProveedor AS 'Precio Unitario' FROM producto GO DEFINIENDO COLUMNAS COMPUTADAS Una columna computada es una columna que se muestra en el resultado de una consulta, pero no existe físicamente como tal en la tabla. La columna computada muestra el resultado de ejecutar alguna operación con las columnas de la tabla. Ejemplo4: El siguiente ejemplo retorna las columnas idProducto, Nombre, precioProveedor, y el campo calculado ‘Precio con descuento’ = precioProveedor*0.9 de la tabla producto. SELECT idProducto AS Código, Nombre AS Descripción, unidadMedida AS Unidad,

25

precioProveedor AS 'Precio Unitario', precioProveedor*0.90 as 'Precio con Descuento' FROM producto GO WHERE La cláusula WHERE dice a SQL que incluya sólo ciertas filas o registros de datos en los resultados de la consulta, es decir, que tiene que cumplir los registros que se desean ver. La cláusula WHERE contiene condiciones en la forma: WHERE Expresión1 operador Expresión2 Donde: Expresion1 y Expresión2 pueden ser nombres de campos, valores constantes o expresiones. Operador es un operador relacional que une dos expresiones . Ejemplo5: El siguiente ejemplo retorna las columnas IdProveedor,Nombre,Representante,Ciudad de la tabla Proveedor. El ejemplo sólo retorna las filas de los proveedores que residen en el callao select IdProveedor,Nombre,Representante,Ciudad from PROVEEDOR where ciudad='callao' Ejemplo6: El siguiente ejemplo retorna las columnas IdProveedor,Nombre,Representante,Ciudad de la tabla Proveedor. El ejemplo sólo retorna las filas de los proveedores que residen en el callao o Arequipa select IdProveedor,Nombre,Representante,Ciudad from PROVEEDOR where ciudad='callao' or ciudad='Arequipa' Ejemplo8: La siguiente sentencia nos muestra la cantidad de órdenes de productos pedidos con posterioridad al mes de mayo SELECT COUNT(*) FROM ORDEN WHERE MONTH(FechaOrden)>05 USO DEL OPERADOR MENOR O IGUAL QUE (

= = BETWEEN LIKE IN

USO Menor que Mayor que Distinto de Menor ó igual que Mayor ó igual que Igual que Utilizado para especificar un intervalo de valores Utilizado en la comparación de un modelo Utilizado para especificar registros de una base de datos

5.1 EJEMPLOS DE OPERADORES DE COMPARACIÓN 5.1.1 : COMPARANDO NÚMEROS EJEMPLO 10: Mostrar todos los datos de los Empleados que tengan menos de 50 años de edad.

5.1.2 COMPARANDO FECHAS: EJEMPLO 11: Mostrar todos los datos de los empleados que hayan nacido antes del mes de junio.

6.

BETWEEN

Para indicar que deseamos recuperar los registros según el intervalo de valores de un campo emplearemos el operador Between cuya sintaxis es: CAMPO [NOT] BETWEEN VALOR1 AND VALOR2 (LA CONDICION NOT ES OPCIONAL)

30

En este caso la consulta devolvería los registros que contengan en “campo” un valor incluido en el intervalo Valor1, Valor2 (ambos imclusive). Si anteponemos la condición NOT devolverá aquellos valores no incluidos en el intervalo. EJEMPLO 12:El siguiente ejemplo retorna todas las columnas de la tabla productos. El ejemplo solo retorna las filas de los productos que tengan un precio comprendido entre 12 y 20 soles SELECT * FROM PRODUCTo WHERE PrecioProveedor >=12 AND PrecioProveedor