Top Banner
ADMINISTRAR MICROSOFT SQL SERVER 2008 R2
140

Administrar Microsoft SQL Server 2008 r2

Nov 24, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript

ADMINISTRAR MICROSOFT SQL SERVER 2008 R21

Tabla de contenidoInstalar y administrar Microsoft SQL Server 2008 R2 Express1Descarga e instalacin de Microsoft SQL Server 2008 R2 Express en Windows 72Administracin de Microsoft SQL Server 2008 R2 Express13Crear una nueva base de datos para nuestras aplicaciones de gestin (facturacin, contabilidad,rrhh)15Crear una tabla en una base de datos SQL Server 2008 R2 desde Microsoft SQL Server Management Studio18Configurar Microsoft SQL Server para permitir conexiones remotas o acceso externo26Configurar y programar copias de seguridad de Microsoft SQL Server 2008 R231Realizar copia de seguridad (backup) de una base de datos SQL Server desde Management Studio34Programar copias de seguridad automticas de SQL Server 2008 R238Crear origen de datos ODBC de SQL Server 200848Acceso a base de datos Microsoft SQL Server 2008 R2 Express mediante Microsoft Access y ODBC54Algunos errores y su posible solucin59EJERCICIOS 1611.Objetivos y alcances del tutorial de Microsoft Sql Server.612.Crear una tabla (create table - sp_tables - sp_columns - drop table)61Primer problema:61Segundo problema:623.Insertar y recuperar registros de una tabla (insert into - select)63Primer problema:64Segundo problema:654.Tipos de datos bsicos66Primer problema:66Segundo problema:675.Recuperar algunos campos (select)69Primer problema:69Segundo problema:706.Recuperar algunos registros (where)71Primer problema:71Segundo problema:737.Operadores relacionales74Primer problema:74Segundo problema:758.Borrar registros (delete)77Primer problema:77Segundo problema:789.Actualizar registros (update)79Primer problema:79Segundo problema:8110.Comentarios83Problema:8411.Valores null (is null)85Primer problema:85Segundo problema:8812.Clave primaria90Primer problema:90Segundo problema:9113.Campo con atributo Identity93Primer problema:93Segundo problema:9514.Otras caractersticas del atributo Identity97Primer problema:97Segundo problema:9915.Truncate table101Primer problema:10116.Otros tipos de datos en SQL Server104a.TEXTO:104b.NUMEROS:104c.FECHAS y HORAS:10517.Tipo de dato (texto)105Primer problema:105Segundo problema:10618.Tipo de dato (numrico)108Primer problema:108Segundo problema:11019.Tipo de dato (fecha y hora)111Primer problema:11120.Ingresar algunos campos (insert into)113Problema:113

Instalar y administrar Microsoft SQL Server 2008 R2 Express

Explicamos cmo instalar y administrar Microsoft SQL Server 2008 R2 Express en un equipo conMicrosoft Windows 7 (Seven)como sistema operativo. Mostramos paso a paso cmo descargar, instalar y administrar este motor debase de datosgratuito de Microsoft. Explicamos cmo crear una base de datos y una tabla con campo autoincremento, explicamos cmo hacer copias de seguridad (backup) automticas programadas y cmo accedermedianteODBCy Access a SQL Server. Descarga e instalacin de Microsoft SQL Server 2008 R2 Express en Windows 7. Administracin de Microsoft SQL Server 2008 R2 Express. Crear una nueva base de datos para nuestras aplicaciones de gestin (facturacin, contabilidad,rrhh). Crear una tabla en una base de datos SQL Server 2008 R2 desde Microsoft SQL Server Management Studio. Configurar Microsoft SQL Server para acceso externo o remoto. Configurar y programar copias de seguridad de Microsoft SQL Server 2008 R2. Crear dispositivo para copias de seguridad SQL Server. Realizar copia de seguridad (backup) de una base de datos SQL Server desde Management Studio. Programar copias de seguridad automticas de SQL Server 2008 R2. Crear origen de datos ODBC de SQL Server 2008. Acceso a base de datos Microsoft SQL Server 2008 R2 Express mediante Microsoft Access y ODBC. Algunos errores y su posible solucin. Artculos relacionados. Crditos.Descarga e instalacin de Microsoft SQL Server 2008 R2 Express en Windows 7Descargaremos el fichero de instalacin de SQL Server 2008 Express (es gratuito) abriendo cualquier navegador y accediendo a laURL:http://www.microsoft.com/express/DatabaseSeleccionaremos el tipo de instalacin (3264 bits), en nuestro caso, puesto que tenemosMicrosoft Windows 7de 64 bits sobre arquitectura de 64 bits, seleccionaremos 64 bits, se iniciar la descarga deSQLEXPRWT_x64_ENU.exe(de 248MB):

Se iniciar la descarga del fichero de instalacin seleccionado:

Ejecutaremos el fichero descargado (si tenemosMicrosoft Windows 7es recomendable pulsar con el botn derecho del ratn sobre el ejecutable y seleccionar "Ejecutar como administrador"):

Si tenemos UAC activado pulsaremos en "S" en el mensaje "Desea permitir que este programa realice cambios en el equipo?":

Seleccionaremos "Newinstallationoraddfeaturestoanexistinginstallation":

Leeremos los trminos de licencia de Microsoft SQL Server 2008 R2 Express, si estamos de acuerdo marcaremos "Iacceptthelicenseterms" y pulsaremos "Next":

Seleccionaremos los elementos a instalar: DatabaseEngineservices: servicios del motor de base de datos SQL Server, caracterstica de obligatoria instalacin para el funcionamiento del servidor de SQL Server. SQL ServerReplication: herramienta de replicacin de bases de datos SQL Server. Management Tools - Basic: consola de administracin de SQL Server. SQLClientConnectivitySDK: herramientas de conexin con SQL Server para desarrolladores.Seleccionaremos la carpeta de instalacin y pulsaremos "Next":

Introduciremos el nombre de la instancia de SQL Server (podemos tener varias instaladas en un mismo equipo), en nuestro caso "SQLExpress2008":

Introduciremos el usuario y contrasea para cada servicio que se instalar, pulsando en "UsethesameaccountforallSQL Serverservices" podremos establecer el mismo usuario para todos los servicios de Microsoft SQL Server 2008 R2 Express:

Nota:SQL Server Browseres el servicio de resolucin de nombres que proporciona informacin de conexin a SQL Server para equipos cliente.Este servicio es compartido a travs de mltiples instancias de SQL ServeryIntegrationServices.Introduciremos usuario en "AccountName" y contrasea en "Password":

En la ventana anterior, tambin podremos elegir el tipo de inicio para cada servicio, por defecto SQL ServerDatabaseEnginees automtico (Automatic) y SQL Server Browser est desactivado (Disabled):

A continuacin deberemos elegir el mtodo de autenticacin en la pestaa "AccountProvisioning", las posibilidades: Windowsauthenticationmode: se utilizarn los usuarios del sistema operativo (Windows) para inicio de sesin en SQL Server. MixedMode(SQL Serverauthenticationand Windowsauthentication): modo mixto, acceso con usuarios de SQL Server y con usuarios del sistema operativo.En nuestro caso seleccionaremos "MixdMode" y en "SpecifythepasswordfortheSQL Serversystemadministrator(sa)account"introduciermosla contrasea para elsuperusuarioadministrador de SQL Server "sa". Es recomendable que sea una contrasea segura (con nmeros, letras en maysculas y minsculas y algn carcter especial) pues este usuario tiene permisos para realizar cualquier accin en la base de datos.En "SpecifySQL Serveradministrators" podremos aadir los usuarios que queramos que sean administradores del servidor de SQL Server:

En la pestaa "DataDirectories"podremsoelegir los directorios de instalacin de cada elemento (directorio de usuario, log, temporal,backup, etc.):

Marcaremos elcheck"SendWindows and SQL Server ErrorReportstoMicrosoftoryourcorporatereportserver.Thissettingsonlyappliestoservicesthatrunwithoutuserinterations" si queremos enviar reportes automticos de errores a Microsoft. Pulsaremos "Next" para continuar:

Se iniciar el proceso de instalacin de Microsoft SQL Server 2008 R2 Express:

Una vez finalizado el proceso, puede que nos indique que tenemos que reiniciar el equipo, con el mensaje "Oneormoreaffectedfileshaveoperationspendins.Youmustrestartyourcomputertocompletethisprocess". Pulsaremos "OK":

Nos mostrar la ventana con el resultado de la instalacin de SQL Server 2008 R2 Express. Pulsaremos "Close":

Administracin de Microsoft SQL Server 2008 R2 ExpressUna vez instalado SQL Server 2008 R2 Express, podremos acceder a la administracin desde el botn "Iniciar" - "Todos los programas" - "Microsoft SQL Server 2008 R2" - "SQL Server Management Studio":

En el primer inicio de SQL Server Management Studio nos mostrar esta ventana con el progreso de la preparacin de esta herramienta:

Introduciremos los siguientes datos en la ventana de conexin al servidor de Microsoft SQL Server 2008 R2: Servertype: seleccionaremos "DatabaseEngine". Servername:introduremosel nombre de red del equipo (hosname) o IP, una barra invertida y el nombre de la instancia de SQL Server, en nuestro caso "SQLExpress2008". Authentication: elegiremos el tipo de autenticacin, bien la de Windows o bien la de SQL Server (segn las opciones seleccionadas en la instalacin). En nuestro caso seleccionaremos "WindowsAuthentication".

Si tenemos algn cortafuegos o firewall deberemos abrir los puertos necesarios correspondientes (el 1433 por defecto):

Y accederemos aMicrosoft SQL Server Management Studio, desde donde podremos administrar y configurarMicrosoft SQL Server 2008 R2 Express:

Crear una nueva base de datos para nuestras aplicaciones de gestin (facturacin, contabilidad,rrhh)Accederemos aMicrosoft SQL Server Management Studio, sobre "Databases" pulsaremos con el botn derecho del ratn y seleccionaremos "NewDatabase":

Introduciremos en "Databasename" el nombre de la base de datos, en nuestro caso "bdajpdsoft", podremos personalizar los ficheros de datos (nombre, ubicacin y tamao, en "Databasefiles"), las opciones de seguridad (qu usuarios sern propietarios en "Owner"),etc:

El script para generar la base de datos (pulsando en el botn "Script") nos lo generar, podremos usarlo para crear una base de datos en modo comando o para crear varias bases de datos de forma rpida:CREATE DATABASE [bdajpdsoft] ON PRIMARY( NAME=N'bdajpdsoft', FILENAME = N'C:\ProgramFiles\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\bdajpdsoft.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB )LOG ON( NAME =N'bdajpdsoft_log', FILENAME = N'C:\ProgramFiles\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA\bdajpdsoft_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%)GOALTER DATABASE [bdajpdsoft] SET COMPATIBILITY_LEVEL = 100GOALTER DATABASE [bdajpdsoft] SET ANSI_NULL_DEFAULT OFFGOALTER DATABASE [bdajpdsoft] SET ANSI_NULLS OFFGOALTER DATABASE [bdajpdsoft] SET ANSI_PADDING OFFGOALTER DATABASE [bdajpdsoft] SET ANSI_WARNINGS OFFGOALTER DATABASE [bdajpdsoft] SET ARITHABORT OFFGOALTER DATABASE [bdajpdsoft] SET AUTO_CLOSE OFFGOALTER DATABASE [bdajpdsoft] SET AUTO_CREATE_STATISTICS ONGOALTER DATABASE [bdajpdsoft] SET AUTO_SHRINK OFFGOALTER DATABASE [bdajpdsoft] SET AUTO_UPDATE_STATISTICS ONGOALTER DATABASE [bdajpdsoft] SET CURSOR_CLOSE_ON_COMMIT OFFGOALTER DATABASE [bdajpdsoft] SET CURSOR_DEFAULT GLOBALGOALTER DATABASE [bdajpdsoft] SET CONCAT_NULL_YIELDS_NULL OFFGOALTER DATABASE [bdajpdsoft] SET NUMERIC_ROUNDABORT OFFGOALTER DATABASE [bdajpdsoft] SET QUOTED_IDENTIFIER OFFGOALTER DATABASE [bdajpdsoft] SET RECURSIVE_TRIGGERS OFFGOALTER DATABASE [bdajpdsoft] SET DISABLE_BROKERGOALTER DATABASE [bdajpdsoft] SET AUTO_UPDATE_STATISTICS_ASYNC OFFGOALTER DATABASE [bdajpdsoft] SET DATE_CORRELATION_OPTIMIZATION OFFGOALTER DATABASE [bdajpdsoft] SET PARAMETERIZATION SIMPLEGOALTER DATABASE [bdajpdsoft] SET READ_WRITEGOALTER DATABASE [bdajpdsoft] SET RECOVERY SIMPLEGOALTER DATABASE [bdajpdsoft] SET MULTI_USERGOALTER DATABASE [bdajpdsoft] SET PAGE_VERIFY CHECKSUMGOUSE [bdajpdsoft]GOIF NOT EXISTS (SELECTnameFROMsys.filegroupsWHEREis_default=1 ANDname= N'PRIMARY') ALTER DATABASE [bdajpdsoft] MODIFY FILEGROUP [PRIMARY] DEFAULTGOCrear una tabla en una base de datos SQL Server 2008 R2 desde Microsoft SQL Server Management StudioDesplegaremos la base de datos creada en "Databases", desplegaremos "bdajpdsoft" (es el nombre que le hemos dado a la base de datos para nuestras aplicaciones de gestin (contabilidad, facturacin, recursos humanos, etc.), en "Tables" pulsaremos con el botn derecho del ratn y seleccionaremos "NewTable":

Iremos aadiendo en la parte derecha todos los campos que deseemos para la tabla "clientes", por ejemplo: Crearemos un campo llamado "codigo" que ser clave primaria (primarykey) y serautoincremento. Para ello en "ColumnName" introduciremos "codigo", en "DataType"seleccioanremos"int", en "ColumnProperties", en "IdentitySpecification", en "(IsIdentity") seleccionaremos "Yes", en "IdentityIncrement" introduciremos "1" (ser el factor de incremento) y en "IdentitySeed" introduciremos "1", ser desde donde empezar el autoincremento:

Para que el campo sea clave primaria (primarykey), pulsaremos con el botn derecho del ratn y seleccionaremos "SetPrimaryKey":

Crearemos un campo llamado "cif", de tipo "nvarchar(15)", este campo no podr ser nulo por lo que desmarcaremos "AllowNulls":

Adems, crearemos unndicepara este campo, de forma que sea nico (que no se puedan repetir dos registros con el mismo valor), para ello pulsaremos con el botn derecho sobre la columna "cif", seleccionaremos "Indexes/Keys":

En la ventana de "Indexes/Keys" aparecer ya creado el ndice para la clave primaria del campo "codigo", pulsaremos "Add" para crear un nuevo ndice e introduciremos los siguientes datos:En "General", en "Columns" seleccionaremos "cif".En "General", en "IsUnique" seleccionaremos "Yes".En "Identity", en "(Name)" introduciremos un nombre para el ndice, por ejemplo: "ix_cliente_cif".Pulsaremos "Close" para cerrar la ventana de Indexes/Keysy guardar el nuevo ndice creado:

Crearemos el resto de los campos de la misma forma que lo hemos hecho para el "codigo" y el "cif", antes de guardar la tabla deberemos indicar un nombre para ella, en la parte derecha, en "Properties", en "Identity", en "(Name)" introduciremos el nombre para la tabla, en nuestro caso "cliente":

Pulsaremos el botn "Save" para crear la tabla con los campos y propiedades indicados:

El script que generara esta tabla:BEGIN TRANSACTIONSET QUOTED_IDENTIFIER ONSET ARITHABORT ONSET NUMERIC_ROUNDABORT OFFSET CONCAT_NULL_YIELDS_NULL ONSET ANSI_NULLS ONSET ANSI_PADDING ONSET ANSI_WARNINGS ONCOMMITBEGIN TRANSACTIONGOCREATE TABLEdbo.cliente(codigointNOT NULL IDENTITY (1, 1),cifnvarchar(15) NOT NULL,nombrenvarchar(150) NOT NULL,fechaaltadate NULL,emailnchar(100) NULL,webnchar(100) NULL,direccionnchar(200) NULL,observacionntextNULL) ON [PRIMARY]TEXTIMAGE_ON [PRIMARY]GOALTER TABLEdbo.clienteADD CONSTRAINTpk_cliente_codigoPRIMARY KEY CLUSTERED(codigo) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]GOCREATE UNIQUE NONCLUSTERED INDEXix_cliente_cifONdbo.cliente(cif) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]GOALTER TABLEdbo.clienteSET (LOCK_ESCALATION = TABLE)GOCOMMITYa tendremos preparado Microsoft SQL Server para ser usado por cualquier aplicacin y guardar datos en la tabla "cliente" de la base de datos "bdajpdsoft".

Configurar Microsoft SQL Server para permitir conexiones remotas o acceso externoSi queremos que desde otros equipos de la red o incluso desde otros equipos de Internet haya acceso a este servidor con SQL Server deberemos seguir los pasos que a continuacin detallamos para activar las conexiones remotas o acceso externo a SQL Server.Accederemos al botn "Iniciar", en programas accederemos a "Microsoft SQL Server 2008 R2" - "ConfigurationTools" - "SQL ServerConfigurationManager" y seleccionaremos en la parte izquierda "SQL ServerServices". En la parte derecha nos mostrar los tres servicios de SQL Server 2008 R2 Express: SQL Server (SQLEXPRESS). SQL ServerAgent(SQKEXORESS). SQL Server Browser.De los tres servicios deben estar iniciados SQL Server y SQL Server Browser, si no lo estn pulsaremos con el botn derecho del ratn y seleccionaremos "Start". Adems, deben estar con el tipo de inicio automtico, para que se inicien de forma automtica cada vez que reiniciemos o arranquemos el equipo. Para configurar el tipo de inicio pulsaremos con el botn derecho del ratn sobre el servicio,seleccioanremos"Propiedades":

En la pestaa "Service", en "StartMode", seleccionaremos "Automatic":

A continuacin activaremos el mtodo de conexin TCP/IP, para ello accederemos (en la parte izquierda) a "SQL Server NetworkConfiguration", seleccionaremos "ProtocolsforSQLEXPRESS", pulsaremos en la parte derecha con el botn derecho del ratn sobre "TCP/IP" y seleccionaremos "Enable":

Nos mostrar un mensaje indicando que el cambio se aplicar una vez reiniciado el servicio de SQL Server, podremos reiniciarlo desde "SQL ServerServices", pulsando con el botn derecho del ratn sobre "SQL Server" y seleccionando "Restart":

Ahora, abriremos Microsoft SQL Server Management Studio, nos conectaremos al servidor, pulsaremos con el botn derecho del ratn sobre el nombre de la instancia de SQL Server a configurar (la de defecto ser "nombre_equipo/sqlexpress", en el men emergente seleccionaremos "Propiedades":

En la parte izquierda seleccionaremos la pgina "Connections", en la parte derecha nos aseguraremos de que est marcado "Allowremoteconnectionstothisserver" y que en "Maximumnumberofconcurrentconnectionstengamos 0 (ilimitadas) o mayor que uno (para permitir las que queramos):

En la pgina "Security", es recomendable (aunque depender de las aplicaciones de gestin y dems de nuestra organizacin que usen SQL Server) marcar "SQL Server and WindowsAuthenticationmode". Este modo es casi necesario en situaciones donde queremos permitir el acceso a aplicaciones externas a nuestra organizacin a travs de Internet. Pues si dejamos nicamente el modo "WindowsAuthenticationmode", obligaremos a que el acceso slo se permitir a usuarios que pertenezcan al mismo dominio Windows que donde tengamos instalado SQL Server, en este caso slo se permitiran acceso a equipos que pertenezcan al dominio. Por ello, para el caso de acceso externo a nuestro servidor SQL Server es recomendable marcar "SQL Server and WindowsAuthenticationmode", as, las aplicaciones externas a nuestra red (o las de nuestra propia red) podrn acceder a SQLServecon un usuario de ste, sin necesidad de pertenecer a nuestro dominio Windows.Por supuesto, en ambos casos, deberemos tener usuarios con contraseas seguras (nmeros, letras maysculas y minsculas y algn carcter especial), para evitar posibles "robos" de contraseas mediante fuerza bruta u otros mtodos. Adems, es recomendable seguir una poltica de caducidad y complejidad de contraseas adecuada:

Y por ltimo, si tenemosalgn cortafuegoso firewall en el equipo servidor o en la red, deberemos abrir el puerto 1433 (de defecto) para SQL Server. Y si queremos que los equipos de Internet accedan a nuestro servidor de SQL Server, si tenemos unroutero cortafuegos, deberemosredireccionaro mapear el puerto 1433 a la IP del equipo con SQL Server.Configurar y programar copias de seguridad de Microsoft SQL Server 2008 R2Crear dispositivo para copias de seguridad SQL ServerEn primer lugar daremos un nuevo dispositivo de alta, para ello accederemos aMicrosoft SQL Server Management Studio, desplegaremos la rama "ServerObjects", seleccionaremos "BackupDevices", pulsaremos con el botn derecho del ratn y seleccionaremos "NewBackupDevice":

En "Devicename" introduciremos el nombre que definir el dispositivo, por ejemplo "Disco_D", si disponemos de una unidad de cinta podremos seleccionarla en "Tape", sino podremos hacer copia de seguridad a disco, para ello seleccionaremos "File" e introduciremos una unidad y carpeta de destino, o pulsaremos el botn "..." para seleccionarla:

Seleccionaremos la carpeta y fichero de destino de la copia de seguridad de la base de datos Microsoft SQL Server 2008 R2 Express, en "Filename" introduciremos el nombre del fichero de copia de seguridad, por ejemplo "backup_sql_server":

Tras seleccionar el destino en "Destination" y el nombre del dispositivo en "Devicename" pulsaremos en "OK":

A partir de ahora podremos usar este dispositivo, diferencindolo con el nombre que le hemos asignado. El script para crear el dispositivo desde la lnea de comandos:USE [master]GOEXECmaster.dbo.sp_addumpdevice@devtype=N'disk', @logicalname=N'Disco_D', @physicalname= N'D:/backup_sql_server'GORealizar copia de seguridad (backup) de una base de datos SQL Server desde Management StudioPara hacer una copia de seguridad de una base de datos de Microsoft SQL Server pulsaremos con el botn derecho del ratn sobre el dispositivo creado y seleccionaremos "Back Up aDatabase":

Seleccionaremos los siguientes datos de la pestaa "General": Database: seleccionaremos la base de datos de la que haremos copia de seguridad, en nuestro caso "bdajpdsoft". Backuptype: seleccionaremos "Full" (copia completa) o "Differencial" (copia slo de los datos modificados o nuevos). Name: indicaremos un nombre para la copia de seguridad. Backupsetwillexpire: si queremos que la copia de seguridad caduque y pueda ser reemplazada, indicaremos aqu los das de validez. Destination: seleccionaremos el destino de la copia (DiskTape), nos aparecer el dispositivo creado en el paso anterior.

En la pestaa "Options" seleccionaremos: Overwritemedia: seleccionaremos el mtodo de reemplazo de copias existentes: Back uptotheexistingmedia set: realizar la copia en un medio existente, con las siguientes posibilidades: Appendtotheexistingbackupset: utilizar un fichero o medio existente, si marcamos la opcin "Checkmedia setnameandbackupsetexpiration" comprobar si el contenido del fichero ha expirado para reemplazar la parte expirada por los nuevos datos. Overwriteallexistingbackupsets: reemplazar los ficheros o medios existentes con los nuevos. Back uptoa new media set, and eraseallexistingbackupsets: realizar la copia de seguridad en un nuevo fichero o medio y eliminar los existentes. Reliability: Verifybackupwhenfinished: comprobar el fichero o medio tras finalizar la copia de seguridad. Performchecksumbeforewritingtomedia: realizar una comprobacin dechecksumantes de realizar la copia de seguridad. Continueonerror: continuar con la copia de seguridad aunque se produzca algn error. Compression: seleccionaremos el mtodo de compresin, ha de permitirlo el dispositivo (por hardware) o el servidor por software, de lo contrario, si seleccionaremos "Compressbackup" y no es posible dar un error comoeste.Una vez seleccionadas las opciones de configuracin para la copia de seguridad, pulsaremos "OK" para iniciar el proceso de copia de seguridad:

Tras la finalizacin de la copia de seguridad, nos mostrar un mensaje como el siguiente:

Con el texto:Microsoft SQL Server Management StudioThebackupofdatabase"bdajpdsoft"completedsuccessfullyNos habr creado un fichero en la unidad indicada con la copia de seguridad de la base de datos elegida:

El script para ejecutar la copia de seguridad de la base de datos desde la lnea de comandos:BACKUP DATABASE [bdajpdsoft] TO [Disco_D] WITH DESCRIPTION =N'Backupbdajpdsoft- Completa', NOFORMAT, INIT, NAME =N'Backupbdajpdsoft- Completa', SKIP, NOREWIND, NOUNLOAD, STATS = 10GOProgramar copias de seguridad automticas de SQL Server 2008 R2Es probable que necesitemos activar laconexin remotaa Microsoft SQL Server 2008 R2, sobre todo si la copia de seguridad la vamos a realizar desde un equipo de la red diferente del servidor de SQL Server.En primer lugar crearemos un fichero de proceso por lotes .batcon el siguiente contenido (se puede usar cualquier editor de texto plano como elNotepad):osql-S "PCALONSO\SQLEXPRESS" -Usa-P xxx -Q "BACKUP DATABASE [bdajpdsoft] TO [Disco_D] WITH DESCRIPTION =N'Backupbdajpdsoft- Completa', NOFORMAT, INIT, NAME =N'Backupbdajpdsoft- Completa', SKIP, NOREWIND, NOUNLOAD, STATS = 10"Donde:PCALONSO\SQLEXPRESS: "PCALONSO" es el nombre del equipo en la red (hostname) o la direccin IP y "SQLEXPRESS" es el nombre de la instancia de SQL Server por defecto, en nuestro caso, en la instalacin, pusimos el nombre "SQLExpress2008"."sa" y "xxx": "sa" nombre del usuario de SQL Server con permisos suficientes para hacer copia en la base de datos elegida, "xxx" es la contrasea de este usuario. Nota importante: para que el parmetro "-U" funcione, deben estar activo el tipo de autenticacin mixto (Autenticacin de Windows y autenticacin de SQL Server).Aquexplicamos cmo cambiarlo. Si queremos dejar el mtodo de autenticacin de Windows nicamente, deberemos usar el parmetro -E, que usar el usuario del sistema operativo que ha iniciado sesin."bdajpdsoft": nombre de la base de datos de la que se har copia de seguridad."Disco_D": nombre del dispositivo (previamente creado) que ser el destino de la copia de seguridad.Aquexplicamos cmo crear un dispositivo.Nota: podremos aadir al final del script ">> resultado.log" para guardar en un fichero el resultado de la ejecucin del comando y as poder consultarlo posteriormente para verificar que el comando se ejecuta correctamente.Una vez creado el ficherobackup_sql_server.bat(o el nombre que queramos darle), abriremos el programador de tareas deMicrosoft Windows 7, desde el botn "Iniciar" - "Panel de control" - "Herramientsadministrativas" - "Programador de tareas". En la parte derecha, en "Acciones", pulsaremos en "Crear tarea bsica":

Introduciremos un nombre para la tarea, por ejemplo "BackupSQL Server" y una descripcin, por ejemplo "Copia de seguridad debdajpdsoftde Microsoft SQL Server 2008 R2 Express":

Seleccionaremos la periodicidad de la tarea, en nuestro caso "Semanalmente":

Indicaremos los das de la semana y la hora de inicio de la tarea de copia de seguridad de SQL Server:

En la accin a realizar por la tarea marcaremos "Iniciar un programa":

Pulsaremos en "Examinar" en "Programa o script":

Accederemos a la unidad y carpeta donde hayamos guardado el fichero .batcon el script para la copia, lo seleccionaremos, en nuestro caso "backup_sql_server.bat" y pulsaremos "Abrir":

Pulsaremos "Siguiente" una vez elegido el fichero a ejecutar:

Marcaremos "Abrir el dilogo Propiedades para esta tarea al hacer clic en Finalizar" (necesario para establecer las opciones de seguridad) y pulsaremos "Finalizar":

En la pestaa "General", marcaremos "Ejecutar tanto si el usuario inici sesin como si no" (para que la copia de seguridad se inicie aunque el usuario no haya iniciado sesin) y marcaremos "Ejecutar con los privilegios ms altos". Pulsaremos "Aceptar":

Nos pedir usuario y contrasea, es fundamental introducir aqu un usuario y contrasea del equipo con permisos para escritura en la carpeta de destino de la copia. En nuestro caso, puesto que hemos elegido el mtodo de validacin con usuario de SQL Server (en el script hemos utilizado el parmetro -U "sa"), el usuario del sistema operativo no tiene por qu ser administrador:

Una vez creada la tarea de copia de seguridad automtica de Microsoft SQL Server 2008 R2, podremos ejecutarla para realizar un test seleccionndola y pulsando el botn derecho del ratn, haciendo clic en "Ejecutar":

Si todo es correcto, la tarea habr creado los ficheros, en la carpeta o dispositivo de destino: backup_sql_server: fichero binario con el contenido de la copia de seguridad de SQL Server. resultado.log: fichero con el resultado de la ejecucin del comando, por ejemplo:12percentprocessed.21percentprocessed.30percentprocessed.43percentprocessed.51percentprocessed.60percentprocessed.73percentprocessed.82percentprocessed.90percentprocessed.Processed184pagesfordatabase'bdajpdsoft', file 'bdajpdsoft'onfile 1.100percentprocessed.Processed1pagesfordatabase'bdajpdsoft', file 'bdajpdsoft_log'onfile 1.BACKUP DATABASEsuccessfullyprocessed185pagesin 0.293seconds(4.932 MB/sec).Tambin podremos ver el resultado de la tarea en el visor de eventos o sucesos de Windows 7:

Con el texto:Databasebackedup.Database:bdajpdsoft,creationdate(time): 2010/07/25(21:38:45),pagesdumped: 194,firstLSN: 21:395:37,lastLSN: 21:411:1,numberofdumpdevices: 1,deviceinformation: (FILE=1, TYPE=DISK: {'Disco_D'}).Thisisaninformationalmessageonly. Nouseractionisrequired.A partir de ahora se ejecutar la copia de lunes a viernes a las 22:00 horas (o la periodicidad que hayamos indicado).Lgicamente, en nuestro caso hacemos copia al mismo equipo donde est SQL Server y es MUY recomendable copiar en un dispositivo de cinta o en otro equipo, por lo que deberamos copiar el fichero resultante a otro equipo o a una unidad de cinta.Crear origen de datos ODBC de SQL Server 2008En primer lugar, puesto que vamos a realizar una aplicacin Delphi que acceda a Microsoft SQL Server 2008 R2 medianteODBC, buscaremos y descargaremos de la web oficial de Microsoft el complemento "Microsoft SQL Server 2008NativeClient", normalmente un fichero con el nombre "sqlncli.msi".Una vez instalado elODBCde SQL Server: "Microsoft SQL Server 2008NativeClient", accederemos al botn "Iniciar" - "Panel de control" - "Herramientas administrativas" - "Orgenes de datos ODBC". Si queremos que el origen de datosODBCest disponible slo para el usuario actual pulsaremos en la pestaa "DSN de usuario", si queremos que est disponible para todos los usuarios del equipo pulsaremos en la pestaa "DSN de sistema". En esta pestaa pulsaremos "Agregar":

Seleccionaremos el controlador para el origen de datos, en nuestro caso "SQL ServerNativeClient10.0":

Introduciremos los siguientes datos: Name: el nombre del origen de datos, por ejemplo "bdsqlajpdsoft", este nombre ser el que utilicemos en la aplicacin que desarrollemos. Descripcion: introduciremos la descripcin para identificar el origen de datos, por ejemplo "Conexin BD SQL Server con Delphi". Server: deberemos indicar la IP o nombre de red (hostname) del equipo servidor de SQL Server y el nombre de la instancia a la que nos conectaremos, por ejemplo: PCALONSO\SQLEXPRESS, siendo "PCALONSO" el nombre de red del equipo con SQL Server y "SQLEXPRESS" el nombre de la instancia.

A continuacin indicaremos el tipo de conexin que realizaremos (autenticacin): "WithIntegratedWindowsauthentication": autenticacin de Windows, el usuario y contrasea del sistema operativo ser el usado para la validacin con SQL Server. "WithSQL ServerauthenticationusingaloginID andpasswordenteredbytheuser": validacin con un usuario y contrasea de SQL Server. Esta ser la opcin que elijamos nosotros, en "Login" introduciremos el nombre del usuario de SQL Server con permisos suficientes para las tareas que queramos realizar y en "Password" la contrasea de este usuario.Marcaremos la opcin "ConnecttoSQL Servertoobtaindefaultsettingsfortheadditionalconfigurationoptions" y pulsaremos "Siguiente":

Marcaremos "Changethedefaultdatabaseto" y seleccionaremos la base de datos a la que nos conectaremos, "bdajpdsoft":

Pulsaremos "Finalizar" para crear definitivamente el origen de datosODBCpara SQL Server:

Tras la creacin nos mostrar una ventana con los datos seleccionados:

Con el texto:Microsoft SQL ServerNativeClientVersion10.50.1600DataSourceName:bdsqlajpdsoftDataSourceDescription: Conexin BD SQL Server con DelphiServer: PCALONSO\SQLEXPRESSUseIntegratedSecurity: NoDatabase:bdajpdsoftLanguage:SpanishDataEncryption: NoTrust ServerCertificate: NoMultipleActiveResultSets(MARS): NoMirrorServer:TranslateCharacterData: YesLog LongRunningQueries: NoLog DriverStatistics: NoUse RegionalSettings: NoUse ANSIQuotedIdentifiers: YesUse ANSINull,PaddingsandWarnings: YesEn la ventana anterior podremos realizar un test de conexin pulsando en "Test DataSource", si todo es correcto mostrar algo as:

Con el texto:Microsoft SQL ServerNativeClientVersion10.50.1600Runningconnectivitytests...AttemptingconnectionConnectionestablishedVerifyingoptionsettingsDisconnectingfromserverTESTS COMPLETED SUCCESSFULLY!

Acceso a base de datos Microsoft SQL Server 2008 R2 Express mediante Microsoft Access y ODBCUna vezinstalado y configurado el origen de datos ODBCde SQL Server 2008 R2 Express, abriremos Microsoft Access 2007, seleccionaremos "Base de datos en blanco", en la parte derecha, introduciremos el nombre del archivo .accdbde Access 2007, por ejemplo: "AjpdSoftAcceso SQL Server.accdb" y pulsaremos "Crear":

En la pestaa "Datos externos", pulsaremos el botn "Ms", seleccionaremos "Bases de datos ODBC":

Marcaremos la opcin "Vincular al origen de datos creando una tabla vinculada" (Access crear una tabla que mantendr un vnculo a los datos de origen. Los cambios realizados en los datos en Access se reflejarn en el origen y viceversa):

Como podemos observar, en el caso de Microsoft Windows 7 y Microsoft Access 2007, no permite mostrar los orgenes de datos de la pestaa DSN de sistema, por lo que si hemos creado el origen de datos en esta pestaa no nos aparecer para seleccionarlo. Incluso abriendo Microsoft Access como administrador tampoco dejar seleccionar un origen de datos de DSN de sistema. As pues, tendremos dos opciones:1.Crear un origen de datos desde la ventana que muestra Microsoft Access pulsando en "Nuevo" y siguiendo los pasos explicadosaqu.2.Pulsando en la pestaa "Origen de datos de archivo" y seleccionando o creando un archivo .dsncon un contenido como el siguiente:[ODBC]DRIVER=SQL ServerNativeClient10.0UID=saDATABASE=bdajpdsoftWSID=PCALONSOAPP=2007 Microsoft OfficesystemSERVER=PCALONSO\SQLEXPRESSDescription=Acceso ODBC SQL ServerDonde:"sa" ser un usuario de SQL Server con permisos suficientes para acceso a la base de datos seleccionada."bdajpdsoft" ser el nombre de la base de datos de SQL Server a la que se acceder."PCALONSO\SQLEXPRESS" ser el nombre del servidor (hostnameo IP) y el nombre de la instancia de SQL Server a la que nos conectaremos.El fichero .dsnse puede crear con un asistente, desde la pestaa "Origen de datos de archivo" de la ventana siguiente:

Una vez seleccionado el origen de datos de SQL Server, nos pedir la contrasea y el usuario (segn el tipo de autenticacin que hayamos elegido):

A continuacin nos mostrar todas las tablas de la base de datos SQL Server elegida, seleccionaremos las tablas que queramos vincular con Access, en nuestro caso "dbo.cliente". Si queremos que no nos vuelva a pedir contrasea en futuros accesosmarcaremso"Guardar contrasea":

Nos avisar de que la contrasea no seencriptary ser guardada en el fichero del origen de datos sinencriptar:

De esta forma ya tendremos acceso a las tablas seleccionadas de SQL Server, desde Access podremos realizar cualquier accin sobre ellas: hacer informes, aadir registros, modificar registros, etc. Cualquier cambio realizado en Access quedar guardado en SQL Server.

Algunos errores y su posible solucin Error si se selecciona mtodo de compresin enbackupde SQL Server y el servidor no lo permite:TITLE: Microsoft SQL Server Management Studio------------------------------BackupfailedforServer 'pcalonso/sqlexpress'. (Microsoft.SqlServer.SmoExtended)Forhelp,click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600.1+((KJ_RTM).100402-1539+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Backup+Server&LinkId=20476------------------------------ADDITIONAL INFORMATION:System.Data.SqlClient.SqlError: BACKUP DATABASE WITH COMPRESSIONisnotsupportedonExpressEditionwithAdvancedServices(64-bit). (Microsoft.SqlServer.Smo)Forhelp,click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600.1+((KJ_RTM).100402-1539+)&LinkId=20476------------------------------BUTTONS:OK------------------------------

EJERCICIOS 11. Objetivos y alcances del tutorial de Microsoft Sql Server.El curso brinda un concepto terico corto, luego un problema resuelto que invito a ejecutar, modificar y jugar con el mismo. Por ltimo, y lo ms importante, una serie de ejercicios propuestos que nos permitir saber si podemos aplicar el concepto.2. Crear una tabla (create table - sp_tables - sp_columns - drop table)Primer problema:Necesita almacenar los datos de sus amigos en una tabla. Los datos que guardar sern: apellido, nombre, domicilio y telfono.a. Elimine la tabla "agenda" si existe:if object_id('agenda') is not null drop table agenda;b. Intente crear una tabla llamada "/agenda":create table /agenda( apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11));aparece un mensaje de error porque usamos un caracter invlido ("/") para el nombre.c. Cree una tabla llamada "agenda", debe tener los siguientes campos: apellido, varchar(30); nombre, varchar(20); domicilio, varchar (30) y telefono, varchar(11):create table agenda( apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11));d. Intente crearla nuevamente. Aparece mensaje de error.e. Visualice las tablas existentes (sp_tables @table_owner='dbo').f. Visualice la estructura de la tabla "agenda" (sp_columns).g. Elimine la tabla.h. Intente eliminar la tabla, sin controlar si existe. Debe aparecer un mensaje de error.

if object_id('agenda') is not null drop table agenda;create table /agenda( apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11));create table agenda( apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11));create table agenda( apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11));sp_tables @table_owner='dbo';sp_columns agenda;drop table agenda;drop table agenda;Segundo problema:Necesita almacenar informacin referente a los libros de su biblioteca personal. Los datos queguardar sern: ttulo del libro, nombre del autor y nombre de la editorial.a. Elimine la tabla "libros", si existe:if object_id('libros') is not null drop table libros;b. Verifique que la tabla "libros" no existe en la base de datos activa (sp_tables @table_owner='dbo').c. Cree una tabla llamada "libros". Debe definirse con los siguientes campos: titulo, varchar(20); autor, varchar(30) y editorial, varchar(15).d. Intente crearla nuevamente. Aparece mensaje de error.e. Visualice las tablas existentes.f. Visualice la estructura de la tabla "libros".

g. Elimine la tabla.

h. Intente eliminar la tabla nuevamente.

if object_id('libros') is not null drop table libros;sp_tables @table_owner='dbo';create table libros( titulo varchar(20), autor varchar(30), editorial varchar(15));create table libros( titulo varchar(20), autor varchar(30), editorial varchar(15));sp_tables @table_owner='dbo';sp_columns libros;drop table libros;drop table libros;

3. Insertar y recuperar registros de una tabla (insert into - select)

Primer problema:Trabaje con la tabla "agenda" que almacena informacin de sus amigos.a. Elimine la tabla "agenda", si existe:if object_id('agenda') is not null drop table agenda;

b. Cree una tabla llamada "agenda". Debe tener los siguientes campos: apellido (cadena de 30), nombre (cadena de 20), domicilio (cadena de 30) y telefono (cadena de 11):c. Cree una tabla llamada "agenda". Debe tener los siguientes campos: apellido (cadena de 30), nombre (cadena de 20), domicilio (cadena de 30) y telefono (cadena de 11):d. Visualice las tablas existentes para verificar la creacin de "agenda"(sp_tables @table_owner='dbo').e. Visualice la estructura de la tabla "agenda" (sp_columns).f. Ingrese los siguientes registros:insert into agenda (apellido, nombre, domicilio, telefono) values ('Moreno','Alberto','Colon 123','4234567');insert into agenda (apellido,nombre, domicilio, telefono) values ('Torres','Juan','Avellaneda 135','4458787');g. Seleccione todos los registros de la tabla:select * from agenda;h. Elimine la tabla "agenda":drop table agenda;i. Intente eliminar la tabla nuevamente (aparece un mensaje de error):drop table agenda;

if object_id('agenda') is not null drop table agenda;create table agenda( apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11));sp_tables @table_owner='dbo';sp_columns agenda;insert into agenda (apellido, nombre, domicilio, telefono) values ('Moreno','Alberto','Colon 123','4234567');insert into agenda (apellido,nombre, domicilio, telefono) values ('Torres','Juan','Avellaneda 135','4458787');select * from agenda;drop table agenda;drop table agenda;

Segundo problema:Trabaje con la tabla "libros" que almacena los datos de los libros de su propia biblioteca.a. Elimine la tabla "libros", si existe:if object_id('libros') is not null drop table libros;b. Cree una tabla llamada "libros". Debe definirse con los siguientes campos: titulo (cadena de 20), autor (cadena de 30) y editorial (cadena de 15).c. Visualice las tablas existentes (sp_tables @table_owner='dbo').d. Visualice la estructura de la tabla "libros" (sp_columns).e. Ingrese los siguientes registros:insert into libros (titulo,autor,editorial) values ('El aleph','Borges','Planeta');insert into libros (titulo,autor,editorial) values ('Martin Fierro','Jose Hernandez','Emece');insert into libros (titulo,autor,editorial) values ('Aprenda PHP','Mario Molina','Emece');f. Muestre todos los registros (select).

if object_id('libros') is not null drop table libros;create table libros ( titulo varchar(20), autor varchar(30), editorial varchar(15));sp_tables @table_owner='dbo';sp_columns libros;insert into libros (titulo,autor,editorial) values ('El aleph','Borges','Planeta');insert into libros (titulo,autor,editorial) values ('Martin Fierro','Jose Hernandez','Emece');insert into libros (titulo,autor,editorial) values ('Aprenda PHP','Mario Molina','Emece');select * from libros;4. Tipos de datos bsicosPrimer problema:Un videoclub que alquila pelculas en video almacena la informacin de sus pelculas en una tabla llamada "peliculas"; para cada pelcula necesita los siguientes datos:-nombre, cadena de caracteres de 20 de longitud,-actor, cadena de caracteres de 20 de longitud,-duracin, valor numrico entero.-cantidad de copias: valor entero.a. Elimine la tabla, si existe:if object_id('peliculas')is not null drop table peliculas;b. Cree la tabla eligiendo el tipo de dato adecuado para cada campo:create table peliculas( nombre varchar(20), actor varchar(20), duracion integer, cantidad integer);c. Vea la estructura de la tabla:d. Ingrese los siguientes registros:insert into peliculas (nombre, actor, duracion, cantidad) values ('Mision imposible','Tom Cruise',128,3);insert into peliculas (nombre, actor, duracion, cantidad) values ('Mision imposible 2','Tom Cruise',130,2);insert into peliculas (nombre, actor, duracion, cantidad) values ('Mujer bonita','Julia Roberts',118,3);insert into peliculas (nombre, actor, duracion, cantidad) values ('Elsa y Fred','China Zorrilla',110,2);e. Muestre todos los registros.

if object_id('peliculas')is not null drop table peliculas;create table peliculas( nombre varchar(20), actor varchar(20), duracion integer, cantidad integer);sp_columns peliculas;insert into peliculas (nombre, actor, duracion, cantidad) values ('Mision imposible','Tom Cruise',128,3);insert into peliculas (nombre, actor, duracion, cantidad) values ('Mision imposible 2','Tom Cruise',130,2);insert into peliculas (nombre, actor, duracion, cantidad) values ('Mujer bonita','Julia Roberts',118,3);insert into peliculas (nombre, actor, duracion, cantidad) values ('Elsa y Fred','China Zorrilla',110,2);select *from peliculas;Segundo problema:Una empresa almacena los datos de sus empleados en una tabla "empleados" que guarda los siguientes datos: nombre, documento, sexo, domicilio, sueldobasico.a. Elimine la tabla, si existe:if object_id('empleados') is not null drop table empleados;b. Cree la tabla eligiendo el tipo de dato adecuado para cada campo:create table empleados( nombre varchar(20), documento varchar(8), sexo varchar(1), domicilio varchar(30), sueldobasico float);c. Vea la estructura de la tabla:d. Ingrese algunos registros:insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) values ('Juan Perez','22333444','m','Sarmiento 123',500);insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) values ('Ana Acosta','24555666','f','Colon 134',650);insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) values ('Bartolome Barrios','27888999','m','Urquiza 479',800);a. Seleccione todos los registros.

if object_id('empleados') is not null drop table empleados;create table empleados( nombre varchar(20), documento varchar(8), sexo varchar(1), domicilio varchar(30), sueldobasico float);sp_columns empleados;insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) values ('Juan Perez','22333444','m','Sarmiento 123',500);insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) values ('Ana Acosta','24555666','f','Colon 134',650);insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) values ('Bartolome Barrios','27888999','m','Urquiza 479',800); select *from empleados;

5. Recuperar algunos campos (select)Primer problema:Un videoclub que alquila pelculas en video almacena la informacin de sus pelculas en alquiler en una tabla llamada "peliculas".a. Elimine la tabla, si existe:if object_id('peliculas') is not null drop table peliculas;b. Cree la tabla:create table peliculas( titulo varchar(20), actor varchar(20), duracion integer, cantidad integer);c. Vea la estructura de la tabla (sp_columns).d. Ingrese alos siguientes registros:insert into peliculas (titulo, actor, duracion, cantidad) values ('Mision imposible','Tom Cruise',180,3);insert into peliculas (titulo, actor, duracion, cantidad) values ('Mision imposible 2','Tom Cruise',190,2);insert into peliculas (titulo, actor, duracion, cantidad) values ('Mujer bonita','Julia Roberts',118,3);insert into peliculas (titulo, actor, duracion, cantidad) values ('Elsa y Fred','China Zorrilla',110,2);e. Realice un "select" mostrando solamente el ttulo y actor de todas las pelculasf. Muestre el ttulo y duracin de todas las peliculasg. Muestre el ttulo y la cantidad de copias

if object_id('peliculas') is not null drop table peliculas;create table peliculas( titulo varchar(20), actor varchar(20), duracion integer, cantidad integer);sp_columns peliculas;insert into peliculas (titulo, actor, duracion, cantidad) values ('Mision imposible','Tom Cruise',180,3);insert into peliculas (titulo, actor, duracion, cantidad) values ('Mision imposible 2','Tom Cruise',190,2);insert into peliculas (titulo, actor, duracion, cantidad) values ('Mujer bonita','Julia Roberts',118,3);insert into peliculas (titulo, actor, duracion, cantidad) values ('Elsa y Fred','China Zorrilla',110,2);select titulo,actor from peliculas;select titulo,duracion from peliculas;select titulo,cantidad from peliculas;Segundo problema:Una empresa almacena los datos de sus empleados en una tabla llamada "empleados".a. Elimine la tabla, si existe:if object_id('empleados') is not null drop table empleados;b. Cree la tabla:create table empleados( nombre varchar(20), documento varchar(8), sexo varchar(1), domicilio varchar(30), sueldobasico float);c. Vea la estructura de la tabla:sp_columns empleados;d. Ingrese algunos registros:insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) values ('Juan Juarez','22333444','m','Sarmiento 123',500);insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) values ('Ana Acosta','27888999','f','Colon 134',700);insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) values ('Carlos Caseres','31222333','m','Urquiza 479',850);e. Muestre todos los datos de los empleadosf. Muestre el nombre, documento y domicilio de los empleadosg. Realice un "select" mostrando el documento, sexo y sueldo bsico de todos los empleados

if object_id('empleados') is not null drop table empleados;create table empleados( nombre varchar(20), documento varchar(8), sexo varchar(1), domicilio varchar(30), sueldobasico float);sp_columns empleados;insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) values ('Juan Juarez','22333444','m','Sarmiento 123',500);insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) values ('Ana Acosta','27888999','f','Colon 134',700);insert into empleados (nombre, documento, sexo, domicilio, sueldobasico) values ('Carlos Caseres','31222333','m','Urquiza 479',850);select *from empleados;select nombre,documento,domicilio from empleados;select documento,sexo,sueldobasico from empleados;6. Recuperar algunos registros (where)Primer problema:Trabaje con la tabla "agenda" en la que registra los datos de sus amigos.a. Elimine "agenda", si existe:if object_id('agenda') is not null drop table agenda;b. Cree la tabla, con los siguientes campos: apellido (cadena de 30), nombre (cadena de 20), domicilio (cadena de 30) y telefono (cadena de 11).c. Visualice la estructura de la tabla "agenda".d. Ingrese los siguientes registros:Acosta, Ana, Colon 123, 4234567;Bustamante, Betina, Avellaneda 135, 4458787;Lopez, Hector, Salta 545, 4887788;Lopez, Luis, Urquiza 333, 4545454;Lopez, Marisa, Urquiza 333, 4545454.e. Seleccione todos los registros de la tabla

f. Seleccione el registro cuyo nombre sea "Marisa" (1 registro)

g. Seleccione los nombres y domicilios de quienes tengan apellido igual a "Lopez" (3 registros)

h. Muestre el nombre de quienes tengan el telfono "4545454" (2 registros)

if object_id('agenda') is not null drop table agenda;create table agenda ( apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11));sp_columns agenda;insert into agenda(apellido,nombre,domicilio,telefono) values ('Acosta', 'Ana', 'Colon 123', '4234567');insert into agenda(apellido,nombre,domicilio,telefono) values ('Bustamante', 'Betina', 'Avellaneda 135', '4458787');insert into agenda(apellido,nombre,domicilio,telefono) values ('Lopez', 'Hector', 'Salta 545', '4887788');insert into agenda(apellido,nombre,domicilio,telefono) values ('Lopez', 'Luis', 'Urquiza 333', '4545454');insert into agenda(apellido,nombre,domicilio,telefono) values ('Lopez', 'Marisa', 'Urquiza 333', '4545454');select *from agenda;select *from agenda where nombre='Marisa';select nombre,domicilio from agenda where apellido='Lopez';select nombre from agenda where telefono='4545454';

Segundo problema:Trabaje con la tabla "libros" de una librera que guarda informacin referente a sus libros disponibles para la venta.a. Elimine la tabla si existe.b. Cree la tabla "libros". Debe tener la siguiente estructura:create table libros ( titulo varchar(20), autor varchar(30), editorial varchar(15));c. Visualice la estructura de la tabla "libros".d. Ingrese los siguientes registros:El aleph,Borges,Emece;Martin Fierro,Jose Hernandez,Emece;Martin Fierro,Jose Hernandez,Planeta;Aprenda PHP,Mario Molina,Siglo XXI;e. Seleccione los registros cuyo autor sea "Borges" (1 registro)f. Seleccione los ttulos de los libros cuya editorial sea "Emece" (2 registros)g. Seleccione los nombres de las editoriales de los libros cuyo titulo sea "Martin Fierro" (2 registros)

if object_id('libros') is not null drop table libros;create table libros ( titulo varchar(20), autor varchar(30), editorial varchar(15));sp_columns libros;insert into libros(titulo,autor,editorial) values ('El aleph','Borges','Emece');insert into libros(titulo,autor,editorial) values ('Martin Fierro','Jose Hernandez','Emece');insert into libros(titulo,autor,editorial) values ('Martin Fierro','Jose Hernandez','Planeta');insert into libros(titulo,autor,editorial) values ('Aprenda PHP','Mario Molina','Siglo XXI');select *from libros where autor='Borges';select titulo from libros where editorial='Emece';select editorial from libros where titulo='Martin Fierro';7. Operadores relacionalesPrimer problema:Un comercio que vende artculos de computacin registra los datos de sus artculos en una tabla con ese nombre.a. Elimine "articulos", si existe:if object_id('articulos') is not null drop table articulos;b. Cree la tabla, con la siguiente estructura:create table articulos( codigo integer, nombre varchar(20), descripcion varchar(30), precio float, cantidad integer);c. Vea la estructura de la tabla (sp_columns).d. Ingrese algunos registros:insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (1,'impresora','Epson Stylus C45',400.80,20);insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (2,'impresora','Epson Stylus C85',500,30);insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (3,'monitor','Samsung 14',800,10);insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (4,'teclado','ingles Biswal',100,50);insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (5,'teclado','espaol Biswal',90,50);e. Seleccione los datos de las impresoras (2 registros)

f. Seleccione los artculos cuyo precio sea mayor o igual a 400 (3 registros)

g. Seleccione el cdigo y nombre de los artculos cuya cantidad sea menor a 30 (2 registros)

h. Selecciones el nombre y descripcin de los artculos que NO cuesten $100 (4 registros)

Segundo problema:Un video club que alquila pelculas en video almacena la informacin de sus pelculas en alquiler en una tabla denominada "peliculas".a. Elimine la tabla, si existe.b. Cree la tabla eligiendo el tipo de dato adecuado para cada campo:create table peliculas( titulo varchar(20), actor varchar(20), duracion integer, cantidad integer);c. Ingrese los siguientes registros:insert into peliculas (titulo, actor, duracion, cantidad) values ('Mision imposible','Tom Cruise',120,3);insert into peliculas (titulo, actor, duracion, cantidad) values ('Mision imposible 2','Tom Cruise',180,4);insert into peliculas (titulo, actor, duracion, cantidad) values ('Mujer bonita','Julia R.',90,1);insert into peliculas (titulo, actor, duracion, cantidad) values ('Elsa y Fred','China Zorrilla',80,2);d. Seleccione las pelculas cuya duracin no supere los 90 minutos (2 registros)

e. Seleccione el ttulo de todas las pelculas en las que el actor NO sea "Tom Cruise" (2 registros)

f. Muestre todos los campos, excepto "duracion", de todas las pelculas de las que haya ms de 2 copias (2 registros)

if object_id('peliculas') is not null drop table peliculas;create table peliculas( titulo varchar(20), actor varchar(20), duracion integer, cantidad integer);insert into peliculas (titulo, actor, duracion, cantidad) values ('Mision imposible','Tom Cruise',120,3);insert into peliculas (titulo, actor, duracion, cantidad) values ('Mision imposible 2','Tom Cruise',180,4);insert into peliculas (titulo, actor, duracion, cantidad) values ('Mujer bonita','Julia R.',90,1);insert into peliculas (titulo, actor, duracion, cantidad) values ('Elsa y Fred','China Zorrilla',80,2);select *from peliculas where duracion2;8. Borrar registros (delete)

Primer problema:Trabaje con la tabla "agenda" que registra la informacin referente a sus amigos.a. Elimine la tabla si existe:if object_id('agenda') is not null drop table agenda;b. Cree la tabla con los siguientes campos: apellido (cadena de 30), nombre (cadena de 20),domicilio (cadena de 30) y telefono (cadena de 11):create table agenda( apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11));c. Ingrese los siguientes registros (insert into):Alvarez,Alberto,Colon 123,4234567,Juarez,Juan,Avellaneda 135,4458787,Lopez,Maria,Urquiza 333,4545454,Lopez,Jose,Urquiza 333,4545454,Salas,Susana,Gral. Paz 1234,4123456.d. Elimine el registro cuyo nombre sea "Juan" (1 registro afectado)

e. Elimine los registros cuyo nmero telefnico sea igual a "4545454" (2 registros afectados):

f. Elimine todos los registros (2 registros afectados):

g. Muestre la tabla.

if object_id('agenda') is not null drop table agenda;create table agenda( apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11));insert into agenda (apellido,nombre,domicilio,telefono) values('Alvarez','Alberto','Colon 123','4234567');insert into agenda (apellido,nombre,domicilio,telefono) values('Juarez','Juan','Avellaneda 135','4458787');insert into agenda (apellido,nombre,domicilio,telefono) values('Lopez','Maria','Urquiza 333','4545454');insert into agenda (apellido,nombre,domicilio,telefono) values('Lopez','Jose','Urquiza 333','4545454');insert into agenda (apellido,nombre,domicilio,telefono) values('Salas','Susana','Gral. Paz 1234','4123456');delete from agendawhere nombre='Juan';delete from agendawhere telefono='4545454';select * from agenda;delete from agenda;select * from agenda;Segundo problema:Un comercio que vende artculos de computacin registra los datos de sus artculos en una tabla conese nombre.a. Elimine "articulos", si existe:if object_id('articulos') is not null drop table articulos;b. Cree la tabla, con la siguiente estructura:create table articulos( codigo integer, nombre varchar(20), descripcion varchar(30), precio float, cantidad integer);c. Vea la estructura de la tabla.d. Ingrese algunos registros:insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (1,'impresora','Epson Stylus C45',400.80,20);insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (2,'impresora','Epson Stylus C85',500,30);insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (3,'monitor','Samsung 14',800,10);insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (4,'teclado','ingles Biswal',100,50);insert into articulos (codigo, nombre, descripcion, precio,cantidad) values (5,'teclado','espaol Biswal',90,50);e. Elimine los artculos cuyo precio sea mayor o igual a 500 (2 registros)delete from articulos where precio>=500;f. Elimine todas las impresoras (1 registro)delete from articulos where nombre='impresora';g. Elimine todos los artculos cuyo cdigo sea diferente a 4 (1 registro)delete from articulos where codigo4;h. Mostrar la tabla despus que borra cada registro.9. Actualizar registros (update)

Primer problema:Trabaje con la tabla "agenda" que almacena los datos de sus amigos.a. Elimine la tabla si existe:if object_id('agenda') is not null drop table agenda;b. Cree la tabla:create table agenda( apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11));c. Ingrese los siguientes registros (1 registro actualizado):insert into agenda (apellido,nombre,domicilio,telefono) values ('Acosta','Alberto','Colon 123','4234567');insert into agenda (apellido,nombre,domicilio,telefono) values ('Juarez','Juan','Avellaneda 135','4458787');insert into agenda (apellido,nombre,domicilio,telefono) values ('Lopez','Maria','Urquiza 333','4545454');insert into agenda (apellido,nombre,domicilio,telefono) values ('Lopez','Jose','Urquiza 333','4545454');insert into agenda (apellido,nombre,domicilio,telefono) values ('Suarez','Susana','Gral. Paz 1234','4123456');d. Modifique el registro cuyo nombre sea "Juan" por "Juan Jose" (1 registro afectado)e. Actualice los registros cuyo nmero telefnico sea igual a "4545454" por "4445566" (2 registros afectados)f. Actualice los registros que tengan en el campo "nombre" el valor "Juan" por "Juan Jose" (ningn registro afectado porque ninguno cumple con la condicin del "where")g. Luego de cada actualizacin ejecute un select que muestre todos los registros de la tabla.

if object_id('agenda') is not null drop table agenda;create table agenda( apellido varchar(30), nombre varchar(20), domicilio varchar(30), telefono varchar(11));insert into agenda (apellido,nombre,domicilio,telefono) values ('Acosta','Alberto','Colon 123','4234567');insert into agenda (apellido,nombre,domicilio,telefono) values ('Juarez','Juan','Avellaneda 135','4458787');insert into agenda (apellido,nombre,domicilio,telefono) values ('Lopez','Maria','Urquiza 333','4545454');insert into agenda (apellido,nombre,domicilio,telefono) values ('Lopez','Jose','Urquiza 333','4545454');insert into agenda (apellido,nombre,domicilio,telefono) values ('Suarez','Susana','Gral. Paz 1234','4123456');select * from agenda;update agenda set nombre='Juan Jose' where nombre='Juan';select * from agenda;update agenda set telefono='4445566' where telefono='4545454';select * from agenda;update agenda set nombre='Juan Jose' where nombre='Juan';select * from agenda;Segundo problema:Trabaje con la tabla "libros" de una librera.a. Elimine la tabla si existe:if object_id('libros') is not null drop table libros;b. Crela con los siguientes campos: titulo (cadena de 30 caracteres de longitud), autor (cadena de 20), editorial (cadena de 15) y precio (float):create table libros ( titulo varchar(30), autor varchar(20), editorial varchar(15), precio float);c. Ingrese los siguientes registros:insert into libros (titulo, autor, editorial, precio) values ('El aleph','Borges','Emece',25.00);insert into libros (titulo, autor, editorial, precio) values ('Martin Fierro','Jose Hernandez','Planeta',35.50);insert into libros (titulo, autor, editorial, precio) values ('Aprenda PHP','Mario Molina','Emece',45.50);insert into libros (titulo, autor, editorial, precio) values ('Cervantes y el quijote','Borges','Emece',25);insert into libros (titulo, autor, editorial, precio) values ('Matematica estas ahi','Paenza','Siglo XXI',15);d. Muestre todos los registros (5 registros):select *from libros;e. Modifique los registros cuyo autor sea igual a "Paenza", por "Adrian Paenza" (1 registro afectado)update libros set autor='Adrian Paenza' where autor='Paenza';f. Nuevamente, modifique los registros cuyo autor sea igual a "Paenza", por "Adrian Paenza" (ningn registro afectado porque ninguno cumple la condicin)update libros set autor='Adrian Paenza' where autor='Paenza';g. Actualice el precio del libro de "Mario Molina" a 27 pesos (1 registro afectado):update libros set precio=27where autor='Mario Molina';h. Actualice el valor del campo "editorial" por "Emece S.A.", para todos los registros cuya editorial sea igual a "Emece" (3 registros afectados):update libros set editorial='Emece S.A.' where editorial='Emece';i. Luego de cada actualizacin ejecute un select que mustre todos los registros de la tabla.

if object_id('libros') is not null drop table libros;create table libros ( titulo varchar(30), autor varchar(20), editorial varchar(15), precio float);insert into libros (titulo, autor, editorial, precio) values ('El aleph','Borges','Emece',25.00);insert into libros (titulo, autor, editorial, precio) values ('Martin Fierro','Jose Hernandez','Planeta',35.50);insert into libros (titulo, autor, editorial, precio) values ('Aprenda PHP','Mario Molina','Emece',45.50);insert into libros (titulo, autor, editorial, precio) values ('Cervantes y el quijote','Borges','Emece',25);insert into libros (titulo, autor, editorial, precio) values ('Matematica estas ahi','Paenza','Siglo XXI',15);select * from libros;update libros set autor='Adrian Paenza' where autor='Paenza';select * from libros;update libros set autor='Adrian Paenza' where autor='Paenza';select * from libros;update libros set precio=27where autor='Mario Molina';select * from libros;update libros set editorial='Emece S.A.' where editorial='Emece';select * from libros;10. Comentarios

Problema:Trabajamos con la tabla "libros" que almacena los datos de los libros de una librera. Eliminamos la tabla, si existe:if object_id('libros') is not null drop table libros;Creamos la tabla:create table libros( titulo varchar(30), autor varchar(20), editorial varchar(15));Agregamos un registro:insert into libros (titulo,autor,editorial) values ('El aleph','Borges','Emece');Mostramos todos los libros y agregamos un comentario de linea:

select * from libros --mostramos los registros de libros; vamos a mostrar el ttulo y autor de todos los libros y agregamos un bloque de comentarios:select titulo, autor/*mostramos ttulos ynombres de los autores*/from libros;Note que lo que est entre los smbolos no se ejecuta.if object_id('libros') is not null drop table libros;create table libros( titulo varchar(30), autor varchar(20), editorial varchar(15));insert into libros (titulo,autor,editorial) values ('El aleph','Borges','Emece');select * from libros --mostramos los registros de libros;select titulo, autor/*mostramos ttulos ynombres de los autores*/from libros;

EJERCICIOS 211. Valores null (is null)Primer problema:Una farmacia guarda informacin referente a sus medicamentos en una tabla llamada "medicamentos".a. Elimine la tabla, si existe: if object_id('medicamentos') is not null drop table medicamentos;b. Cree la tabla con la siguiente estructura:create table medicamentos( codigo integer not null, nombre varchar(20) not null, laboratorio varchar(20), precio float, cantidad integer not null);c. Visualice la estructura de la tabla "medicamentos":sp_columns medicamentos; note que los campos "codigo", "nombre" y "cantidad", en la columna "IS_NULLABLE" aparece "NO" y en las otras "YES".d. Ingrese algunos registros con valores "null" para los campos que lo admitan:insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(1,'Sertal gotas',null,null,100);insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(2,'Sertal compuesto',null,8.90,150);insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(3,'Buscapina','Roche',null,200);e. Vea todos los registros:select *from medicamentos;f. Ingrese un registro con valor "0" para el precio y cadena vaca para el laboratorio:insert into medicamentos (codigo,nombre, laboratorio,precio,cantidad) values(4,'Bayaspirina','',0,150);g. Ingrese un registro con valor "0" para el cdigo y cantidad y cadena vaca para el nombre:insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(0,'','Bayer',15.60,0);h. Muestre todos los registros:select *from medicamentos;i. Intente ingresar un registro con valor nulo para un campo que no lo admite (aparece un mensaje de error):insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(null,'Amoxidal jarabe','Bayer',25,120);j. Recupere los registros que contengan valor "null" en el campo "laboratorio", luego los que tengan una cadena vaca en el mismo campo. Note que el resultado es diferente.k. Recupere los registros que contengan valor "null" en el campo "precio", luego los que tengan el valor 0 en el mismo campo. Note que el resultado es distinto.l. Recupere los registros cuyo laboratorio no contenga una cadena vaca, luego los que sean distintos de "null".Note que la salida de la primera sentencia no muestra los registros con cadenas vacas y tampoco los que tienen valor nulo; el resultado de la segunda sentencia muestra los registros con valor para el campo laboratorio (incluso cadena vaca).m. Recupere los registros cuyo precio sea distinto de 0, luego los que sean distintos de "null":Note que la salida de la primera sentencia no muestra los registros con valor 0 y tampoco los que tienen valor nulo; el resultado de la segunda sentencia muestra los registros con valor para el campo precio (incluso el valor 0).

if object_id('medicamentos') is not null drop table medicamentos;create table medicamentos( codigo integer not null, nombre varchar(20) not null, laboratorio varchar(20), precio float, cantidad integer not null);sp_columns medicamentos;insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(1,'Sertal gotas',null,null,100);insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(2,'Sertal compuesto',null,8.90,150);insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(3,'Buscapina','Roche',null,200);select *from medicamentos;insert into medicamentos (codigo,nombre, laboratorio,precio,cantidad) values(4,'Bayaspirina','',0,150);insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(0,'','Bayer',15.60,0);select *from medicamentos;insert into medicamentos (codigo,nombre,laboratorio,precio,cantidad) values(null,'Amoxidal jarabe','Bayer',25,120);select *from medicamentos where laboratorio is null;select *from medicamentos where laboratorio='';select *from medicamentos where precio is null;select *from medicamentos where precio=0;select *from medicamentos where laboratorio'';select *from medicamentos where laboratorio is not null;select *from medicamentos where precio0;select *from medicamentos where precio is not null;Segundo problema:Trabaje con la tabla que almacena los datos sobre pelculas, llamada "peliculas".a. Elimine la tabla si existe:if object_id('peliculas') is not null drop table peliculas;b. Crela con la siguiente estructura:create table peliculas( codigo int not null, titulo varchar(40) not null, actor varchar(20), duracion int);c. Visualice la estructura de la tabla sp_columns peliculas; note que el campo "codigo" y "titulo", en la columna "IS_NULLABLE" muestra "NO" y los otros campos "YES".d. Ingrese los siguientes registros:insert into peliculas (codigo,titulo,actor,duracion) values(1,'Mision imposible','Tom Cruise',120);insert into peliculas (codigo,titulo,actor,duracion) values(2,'Harry Potter y la piedra filosofal',null,180);insert into peliculas (codigo,titulo,actor,duracion) values(3,'Harry Potter y la camara secreta','Daniel R.',null);insert into peliculas (codigo,titulo,actor,duracion) values(0,'Mision imposible 2','',150);insert into peliculas (codigo,titulo,actor,duracion) values(4,'','L. Di Caprio',220);insert into peliculas (codigo,titulo,actor,duracion) values(5,'Mujer bonita','R. Gere-J. Roberts',0);e. Recupere todos los registros para ver cmo SQL Server los almacen:select *from peliculas;f. Intente ingresar un registro con valor nulo para campos que no lo admiten (aparece un mensaje de error):insert into peliculas (codigo,titulo,actor,duracion) values(null,'Mujer bonita','R. Gere-J. Roberts',190);g. Muestre los registros con valor nulo en el campo "actor" y luego los que guardan una cadena vaca (note que la salida es distinta) (1 registro)h. Modifique los registros que tengan valor de duracin desconocido (nulo) por "120" (1 registro actualizado)i. Coloque 'Desconocido' en el campo "actor" en los registros que tengan una cadena vaca en dicho campo (1 registro afectado)j. Muestre todos los registros. Note que el cambio anterior no afect a los registros con valor nulo en el campo "actor".k. Elimine los registros cuyo ttulo sea una cadena vaca (1 registro)

if object_id('peliculas') is not null drop table peliculas;create table peliculas( codigo int not null, titulo varchar(40) not null, actor varchar(20), duracion int);sp_columns peliculas;insert into peliculas (codigo,titulo,actor,duracion) values(1,'Mision imposible','Tom Cruise',120);insert into peliculas (codigo,titulo,actor,duracion) values(2,'Harry Potter y la piedra filosofal',null,180);insert into peliculas (codigo,titulo,actor,duracion) values(3,'Harry Potter y la camara secreta','Daniel R.',null);insert into peliculas (codigo,titulo,actor,duracion) values(0,'Mision imposible 2','',150);insert into peliculas (codigo,titulo,actor,duracion) values(4,'','L. Di Caprio',220);insert into peliculas (codigo,titulo,actor,duracion) values(5,'Mujer bonita','R. Gere-J. Roberts',0);select *from peliculas;insert into peliculas (codigo,titulo,actor,duracion) values(null,'Mujer bonita','R. Gere-J. Roberts',190);select * from peliculas where actor is null;update peliculas set duracion=120 where duracion is null;update peliculas set actor='Desconocido' where actor=''; select * from peliculas;delete from peliculas where titulo='';select * from peliculas;12. Clave primariaPrimer problema:Trabaje con la tabla "libros" de una librera.a. Elimine la tabla si existe:if object_id('libros') is not null drop table libros;b. Crela con los siguientes campos, estableciendo como clave primaria el campo "codigo":create table libros( codigo int not null, titulo varchar(40) not null,autor varchar(20), editorial varchar(15), primary key(codigo));c. Ingrese los siguientes registros:insert into libros (codigo,titulo,autor,editorial) values (1,'El aleph','Borges','Emece');insert into libros (codigo,titulo,autor,editorial)values (2,'Martin Fierro','Jose Hernandez','Planeta');insert into libros (codigo,titulo,autor,editorial) values (3,'Aprenda PHP','Mario Molina','Nuevo Siglo');d. Ingrese un registro con cdigo repetido (aparece un mensaje de error)e. Intente ingresar el valor "null" en el campo "codigo"f. Intente actualizar el cdigo del libro "Martin Fierro" a "1" (mensaje de error)

if object_id('libros') is not null drop table libros;create table libros( codigo int not null, titulo varchar(40) not null, autor varchar(20), editorial varchar(15), primary key(codigo));insert into libros (codigo,titulo,autor,editorial) values (1,'El aleph','Borges','Emece');insert into libros (codigo,titulo,autor,editorial) values (2,'Martin Fierro','Jose Hernandez','Planeta');insert into libros (codigo,titulo,autor,editorial) values (3,'Aprenda PHP','Mario Molina','Nuevo Siglo');insert into libros (codigo,titulo,autor,editorial) values (2,'Alicia en el pais de las maravillas','Lewis Carroll','Planeta');insert into libros (codigo,titulo,autor,editorial) values (null,'Alicia en el pais de las maravillas','Lewis Carroll','Planeta');update libros set codigo=1 where titulo='Martin Fierro';Segundo problema:Un instituto de enseanza almacena los datos de sus estudiantes en una tabla llamada "alumnos".a. Elimine la tabla "alumnos" si existe:if object_id('alumnos') is not null drop table alumnos;b. Cree la tabla con la siguiente estructura intentando establecer 2 campos como clave primaria, elcampo "documento" y "legajo" (no lo permite):create table alumnos( legajo varchar(4) not null, documento varchar(8), nombre varchar(30), domicilio varchar(30), primary key(documento), primary key(legajo));c. Cree la tabla estableciendo como clave primaria el campo "documento":create table alumnos( legajo varchar(4) not null, documento varchar(8), nombre varchar(30), domicilio varchar(30), primary key(documento));d. Verifique que el campo "documento" no admite valores nulos:sp_columns alumnos;e. Ingrese los siguientes registros:insert into alumnos (legajo,documento,nombre,domicilio) values('A233','22345345','Perez Mariana','Colon 234');insert into alumnos (legajo,documento,nombre,domicilio) values('A567','23545345','Morales Marcos','Avellaneda 348');f. Intente ingresar un alumno con nmero de documento existente (no lo permite)g. Intente ingresar un alumno con documento nulo (no lo permite)

if object_id('alumnos') is not null drop table alumnos;create table alumnos( legajo varchar(4) not null, documento varchar(8), nombre varchar(30), domicilio varchar(30), primary key(documento), primary key(legajo));create table alumnos( legajo varchar(4) not null, documento varchar(8), nombre varchar(30), domicilio varchar(30), primary key(documento));sp_columns alumnos;insert into alumnos (legajo,documento,nombre,domicilio) values('A233','22345345','Perez Mariana','Colon 234');insert into alumnos (legajo,documento,nombre,domicilio) values('A567','23545345','Morales Marcos','Avellaneda 348');insert into alumnos (legajo,documento,nombre,domicilio) values('A642','23545345','Gonzalez Analia','Caseros 444');insert into alumnos (legajo,documento,nombre,domicilio) values('A685',null,'Miranda Carmen','Uspallata 999');13. Campo con atributo IdentityPrimer problema:Una farmacia guarda informacin referente a sus medicamentos en una tabla llamada "medicamentos".a. Elimine la tabla,si existe:if object_id('medicamentos') is not null drop table medicamentos;b. Cree la tabla con un campo "codigo" que genere valores secuenciales automticamente:create table medicamentos( codigo int identity, nombre varchar(20) not null, laboratorio varchar(20), precio float, cantidad integer);c. Visualice la estructura de la tabla "medicamentos":sp_columns medicamentos;d. Ingrese los siguientes registros:insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Sertal','Roche',5.2,100);insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Buscapina','Roche',4.10,200);insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxidal 500','Bayer',15.60,100);e. Verifique que SQL Server gener valores para el campo "cdigo" de modo automtico:select *from medicamentos;f. Intente ingresar un registro con un valor para el campo "codigo"g. Intente actualizar un valor de cdigo (aparece un mensaje de error)

h. Elimine el registro con codigo "3" (1 registro eliminado)

i. Ingrese un nuevo registro:insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxilina 500','Bayer',15.60,100);j. Seleccione todos los registros para ver qu valor guard SQL Server en el campo cdigo:select *from medicamentos;

if object_id('medicamentos') is not null drop table medicamentos;create table medicamentos( codigo int identity, nombre varchar(20) not null, laboratorio varchar(20), precio float, cantidad integer);sp_columns medicamentos;insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Sertal','Roche',5.2,100);insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Buscapina','Roche',4.10,200);insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxidal 500','Bayer',15.60,100);select *from medicamentos;insert into medicamentos (codigo,nombre, laboratorio,precio,cantidad) values(4,'Amoxilina 500','Bayer',15.60,100);update medicamentos set codigo=5 where nombre='Bayaspirina';delete from medicamentos where codigo=3;insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxilina 500','Bayer',15.60,100);select *from medicamentos;Segundo problema:Un videoclub almacena informacin sobre sus pelculas en una tabla llamada "peliculas".a. Elimine la tabla si existe:if object_id('peliculas') is not null drop table peliculas;b. Crela definiendo un campo "codigo" autoincrementable y como clave primaria:create table peliculas( codigo int identity, titulo varchar(40), actor varchar(20), duracion int, primary key(codigo));c. Ejecute el procedimiento almacenado para visualizar la estructura de la tabla:sp_columns peliculas;d. Ingrese los siguientes registros:insert into peliculas (titulo,actor,duracion) values('Mision imposible','Tom Cruise',120);insert into peliculas (titulo,actor,duracion) values('Harry Potter y la piedra filosofal','Daniel R.',180);insert into peliculas (titulo,actor,duracion) values('Harry Potter y la camara secreta','Daniel R.',190);insert into peliculas (titulo,actor,duracion) values('Mision imposible 2','Tom Cruise',120);insert into peliculas (titulo,actor,duracion) values('La vida es bella','zzz',220);e. Seleccione todos los registros y verifique la carga automtica de los cdigos:select *from peliculas;f. Intente actualizar el codigo de una pelcula (aparece un mensaje de error)

g. Elimine la pelcula "La vida es bella".

h. Ingrese un nuevo registro.

i. Visualice los registros para ver el valor almacenado en codigo (valor 7):select *from peliculas;

if object_id('peliculas') is not null drop table peliculas;create table peliculas( codigo int identity, titulo varchar(40), actor varchar(20), duracion int, primary key(codigo));sp_columns peliculas;insert into peliculas (titulo,actor,duracion) values('Mision imposible','Tom Cruise',120);insert into peliculas (titulo,actor,duracion) values('Harry Potter y la piedra filosofal','Daniel R.',180);insert into peliculas (titulo,actor,duracion) values('Harry Potter y la camara secreta','Daniel R.',190);insert into peliculas (titulo,actor,duracion) values('Mision imposible 2','Tom Cruise',120);insert into peliculas (titulo,actor,duracion) values('La vida es bella','zzz',220);select *from peliculas;update peliculas set codigo=7 where codigo=4;delete from peliculas where titulo='La vida es bella';insert into peliculas (titulo,actor,duracion) values('Elsa y Fred','China Zorrilla',90);select *from peliculas;14. Otras caractersticas del atributo IdentityPrimer problema:Una farmacia guarda informacin referente a sus medicamentos en una tabla llamada "medicamentos".a. Elimine la tabla,si existe:if object_id('medicamentos') is not null drop table medicamentos;b. Cree la tabla con un campo "codigo" que genere valores secuenciales automticamente comenzando en 10 e incrementndose en 1:create table medicamentos( codigo integer identity(10,1), nombre varchar(20) not null, laboratorio varchar(20), precio float, cantidad integer);c. Ingrese los siguientes registros:insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Sertal','Roche',5.2,100);insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Buscapina','Roche',4.10,200);insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxidal 500','Bayer',15.60,100);d. Verifique que SQL Server gener valores para el campo "cdigo" de modo automtico:select *from medicamentos;e. Intente ingresar un registro con un valor para el campo "codigo".f. Setee la opcin "identity_insert" en "on"

g. Ingrese un nuevo registro sin valor para el campo "codigo" (no lo permite):insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxilina 500','Bayer',15.60,100);h. 8- Ingrese un nuevo registro con valor para el campo "codigo" repetido.

i. 9- Use la funcin "ident_seed()" para averiguar el valor de inicio del campo "identity" de la tabla "medicamentos"j. Emplee la funcin "ident_incr()" para saber cul es el valor de incremento del campo "identity" de "medicamentos"

if object_id('medicamentos') is not null drop table medicamentos;create table medicamentos( codigo integer identity(10,1), nombre varchar(20) not null, laboratorio varchar(20), precio float, cantidad integer);insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Sertal','Roche',5.2,100);insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Buscapina','Roche',4.10,200);insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxidal 500','Bayer',15.60,100);select *from medicamentos;insert into medicamentos (codigo,nombre, laboratorio,precio,cantidad) values(4,'Amoxilina 500','Bayer',15.60,100); set identity_insert medicamentos on;insert into medicamentos (nombre, laboratorio,precio,cantidad) values('Amoxilina 500','Bayer',15.60,100);insert into medicamentos (codigo,nombre, laboratorio,precio,cantidad) values(10,'Amoxilina 500','Bayer',15.60,100);select ident_seed('medicamentos');select ident_incr('medicamentos');Segundo problema:Un videoclub almacena informacin sobre sus pelculas en una tabla llamada "peliculas".a. Elimine la tabla si existe:if object_id('peliculas') is not null drop table peliculas;b. Crela definiendo un campo "codigo" autoincrementable que comience en 50 y se incremente en 3:create table peliculas( codigo int identity (50,3), titulo varchar(40), actor varchar(20), duracion int);c. Ingrese los siguientes registros:insert into peliculas (titulo,actor,duracion) values('Mision imposible','Tom Cruise',120);insert into peliculas (titulo,actor,duracion) values('Harry Potter y la piedra filosofal','Daniel R.',180);insert into peliculas (titulo,actor,duracion) values('Harry Potter y la camara secreta','Daniel R.',190);d. Seleccione todos los registros y verifique la carga automtica de los cdigos:select *from peliculas;e. Setee la opcin "identity_insert" en "on"

f. Ingrese un registro con valor de cdigo menor a 50.

g. Ingrese un registro con valor de cdigo mayor al ltimo generado.

h. Averigue el valor de inicio del campo "identity" de la tabla "peliculas".

i. Averigue el valor de incremento del campo "identity" de "peliculas".

j. Intente ingresar un registro sin valor para el campo cdigo.

k. Desactive la opcin se insercin para el campo de identidad.

l. Ingrese un nuevo registro y muestre todos los registros para ver cmo SQL Server sigui la secuencia tomando el ltimo valor del campo como referencia.

if object_id('peliculas') is not null drop table peliculas;create table peliculas( codigo int identity (50,3), titulo varchar(40), actor varchar(20), duracion int);insert into peliculas (titulo,actor,duracion) values('Mision imposible','Tom Cruise',120);insert into peliculas (titulo,actor,duracion) values('Harry Potter y la piedra filosofal','Daniel R.',180);insert into peliculas (titulo,actor,duracion) values('Harry Potter y la camara secreta','Daniel R.',190);select *from peliculas;set identity_insert peliculas on;insert into peliculas (codigo,titulo,actor,duracion) values(20,'Mision imposible 2','Tom Cruise',120);insert into peliculas (codigo, titulo,actor,duracion) values(80,'La vida es bella','zzz',220);select ident_seed('peliculas');select ident_incr('peliculas');insert into peliculas (titulo,actor,duracion) values('Elsa y Fred','China Zorrilla',90); set identity_insert peliculas off;insert into peliculas (titulo,actor,duracion) values('Elsa y Fred','China Zorrilla',90);select *from peliculas;15. Truncate tablePrimer problema:Un instituto de enseanza almacena los datos de sus estudiantes en una tabla llamada "alumnos".a. Elimine la tabla "alumnos" si existe:if object_id('alumnos') is not null drop table alumnos;b. Cree la tabla con la siguiente estructura:create table alumnos( legajo int identity, documento varchar(8), nombre varchar(30), domicilio varchar(30));c. Ingrese los siguientes registros y mustrelos para ver la secuencia de cdigos:insert into alumnos (documento,nombre,domicilio) values('22345345','Perez Mariana','Colon 234');insert into alumnos (documento,nombre,domicilio) values('23545345','Morales Marcos','Avellaneda 348');insert into alumnos (documento,nombre,domicilio) values('24356345','Gonzalez Analia','Caseros 444');insert into alumnos (documento,nombre,domicilio) values('25666777','Torres Ramiro','Dinamarca 209');d. Elimine todos los registros con "delete".

e. Ingrese los siguientes registros y seleccinelos para ver cmo SQL Server gener los cdigos:insert into alumnos (documento,nombre,domicilio) values('22345345','Perez Mariana','Colon 234');insert into alumnos (documento,nombre,domicilio) values('23545345','Morales Marcos','Avellaneda 348');insert into alumnos (documento,nombre,domicilio) values('24356345','Gonzalez Analia','Caseros 444');insert into alumnos (documento,nombre,domicilio) values('25666777','Torres Ramiro','Dinamarca 209');select *from alumnos;f. Elimine todos los registros con "truncate table".

g. Ingrese los siguientes registros y muestre todos los registros para ver que SQL Server reinici la secuencia del campo "identity":insert into alumnos (documento,nombre,domicilio) values('22345345','Perez Mariana','Colon 234');insert into alumnos (documento,nombre,domicilio) values('23545345','Morales Marcos','Avellaneda 348');insert into alumnos (documento,nombre,domicilio) values('24356345','Gonzalez Analia','Caseros 444');insert into alumnos (documento,nombre,domicilio) values('25666777','Torres Ramiro','Dinamarca 209');select *from alumnos;

if object_id('alumnos') is not null drop table alumnos;create table alumnos( legajo int identity, documento varchar(8), nombre varchar(30), domicilio varchar(30));insert into alumnos (documento,nombre,domicilio) values('22345345','Perez Mariana','Colon 234');insert into alumnos (documento,nombre,domicilio) values('23545345','Morales Marcos','Avellaneda 348');insert into alumnos (documento,nombre,domicilio)values('24356345','Gonzalez Analia','Caseros 444');insert into alumnos (documento,nombre,domicilio) values('25666777','Torres Ramiro','Dinamarca 209');delete from alumnos;insert into alumnos (documento,nombre,domicilio) values('22345345','Perez Mariana','Colon 234');insert into alumnos (documento,nombre,domicilio) values('23545345','Morales Marcos','Avellaneda 348');insert into alumnos (documento,nombre,domicilio) values('24356345','Gonzalez Analia','Caseros 444');insert into alumnos (documento,nombre,domicilio) values('25666777','Torres Ramiro','Dinamarca 209');select *from alumnos;truncate table alumnos;insert into alumnos (documento,nombre,domicilio) values('22345345','Perez Mariana','Colon 234');insert into alumnos (documento,nombre,domicilio) values('23545345','Morales Marcos','Avellaneda 348');insert into alumnos (documento,nombre,domicilio) values('24356345','Gonzalez Analia','Caseros 444');insert into alumnos (documento,nombre,domicilio) values('25666777','Torres Ramiro','Dinamarca 209');select *from alumnos;Segundo problema:Un comercio que vende artculos de computacin registra los datos de sus artculos en una tabla con ese nombre.a. Elimine "articulos", si existe:if object_id('articulos') is not null drop table articulos;b. Cree la tabla, con la siguiente estructura:create table articulos( codigo integer identity, nombre varchar(20), descripcion varchar(30), precio float);c. Ingrese algunos registros:insert into articulos (nombre, descripcion, precio) values ('impresora','Epson Stylus C45',400.80);insert into articulos (nombre, descripcion, precio) values ('impresora','Epson Stylus C85',500);d. Elimine todos los registros con "truncate table".e. Ingrese algunos registros y mustrelos para ver que la secuencia de cdigos se reinicia:insert into articulos (nombre, descripcion, precio) values ('monitor','Samsung 14',800);insert into articulos (nombre, descripcion, precio) values ('teclado','ingles Biswal',100);insert into articulos (nombre, descripcion, precio) values ('teclado','espaol Biswal',90);select *from articulos;f. Elimine todos los registros con "delete".

g. Ingrese algunos registros y mustrelos para ver que la secuencia de cdigos continua:insert into articulos (nombre, descripcion, precio) values ('monitor','Samsung 14',800);insert into articulos (nombre, descripcion, precio) values ('teclado','ingles Biswal',100);insert into articulos (nombre, descripcion, precio) values ('teclado','espaol Biswal',90);select *from articulos;16. Otros tipos de datos en SQL ServerYa explic