{"id":327,"date":"2017-09-18T22:15:26","date_gmt":"2017-09-18T22:15:26","guid":{"rendered":"http:\/\/www.manualsqlserver.com\/?p=327"},"modified":"2020-05-19T22:53:06","modified_gmt":"2020-05-19T22:53:06","slug":"tipos-de-datos-definidos-por-el-usuario-ejercicio","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=327","title":{"rendered":"Tipos de datos definidos por el usuario &#8211; ejercicio"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TiposDatosDefinidosUsuarioEjD-1.png\" alt=\"\" class=\"wp-image-1205\" width=\"265\" height=\"253\"\/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\"><strong>Tipos de datos definidos por el usuario<\/strong><\/h1>\n\n\n\n<p>Los tipos de datos definidos por el usuario permiten facilitar la estandarizaci\u00f3n de los tipos de las columnas en un dise\u00f1o de base de datos.<br>En este ejemplo se crea una base de datos para luego crear un dise\u00f1o con una Factura, los productos y el Detalle de la factura<\/p>\n\n\n\n<!--more-->\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ejemplo<\/strong><\/h2>\n\n\n\n<p><strong>Creamos la base de datos y la abrimos.<\/strong><\/p>\n\n\n\n<p>xp_create_subdir &#8216;C:\\Bases&#8217;<br>go<br>Create database ERP<br>on Primary (name=&#8217;ERP01&#8242;, filename=&#8217;C:\\Bases\\ERP01.mdf&#8217;),<br>filegroup VENTAS<br>(name=&#8217;ERP02&#8242;, filename=&#8217;C:\\Bases\\ERP02.ndf&#8217;),<br>filegroup RRHH<br>(name=&#8217;ERP03&#8242;, filename=&#8217;C:\\Bases\\ERP03.ndf&#8217;)<br>log on<br>(name=&#8217;ERP04&#8242;, filename=&#8217;C:\\Bases\\ERP04.ldf&#8217;)<br>go<br>use ERP<br>go<\/p>\n\n\n\n<p><strong>Tipos de datos definidos por el usuario<\/strong><br><strong>Para crear se utiliza<\/strong><br>Create type NombreTipoDato from TipoDatosSQL<\/p>\n\n\n\n<p><strong>Para eliminar&nbsp;el tipo de dato (no lo debe estar usando ninguna tabla)<\/strong><br>Drop type NombreTipoDato<\/p>\n\n\n\n<p><strong>Tipos de datos Codigo5, TextoLargo100, Texto200, NumeroGrande<\/strong><br>Create type Codigo5 from nchar(5) not null<br>Create type TextoLargo100 from nvarchar(100)<br>Create type Texto200 from nvarchar(200)<br>Create type NumeroGrande from Numeric(17,2)<br>go<\/p>\n\n\n\n<p><strong>Lista de los tipos de datos<\/strong><br>select * from sys.types where is_user_defined = 1<br>go<\/p>\n\n\n\n<p><strong>Crear el tipo NumeroGrande, primero ver si el tipo no existe.<\/strong><br>if not exists<br>(select * from sys.types where is_user_defined = 1 and name=&#8217;NumeroGrande&#8217;)<br>Begin<br>Execute(&#8216;Create type NumeroGrande from Numeric(17,2)&#8217;)<br>End<br>go<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TiposDatosDefinidosUsuarioEj01-1.png\" alt=\"\" class=\"wp-image-1204\" width=\"813\" height=\"563\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TiposDatosDefinidosUsuarioEj01-1.png 578w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2020\/05\/ManualSQL_TiposDatosDefinidosUsuarioEj01-1-300x208.png 300w\" sizes=\"auto, (max-width: 813px) 100vw, 813px\" \/><\/figure><\/div>\n\n\n\n<p><strong>Tablas: Facturas, dos campos PK, Campos Calculados (<a href=\"http:\/\/www.manualsqlserver.com\/?p=137\">Ver Campos Calculados<\/a>)<\/strong><\/p>\n\n\n\n<p>Create table Facturas<br>(<br>FacturasNumeroSerie Codigo5,<br>FacturasNumeroFactura nchar(7) not null,<br>FacturasFechaEmision DateTime,<br>FacturasPorcentajeIGV Numeric(4,2),<br>FacturasMontoSinIGV NumeroGrande,<br>FacturasMontoIGV As (FacturasPorcentajeIGV* FacturasMontoSinIGV),<br>FacturasMontoTotalFactura As<br>(FacturasMontoSinIGV + FacturasPorcentajeIGV* FacturasMontoSinIGV),<br>constraint FacturasPK Primary key<br>(FacturasNumeroSerie, FacturasNumeroFactura)<br>)<br>go<\/p>\n\n\n\n<p><strong>Tabla Productos<\/strong><\/p>\n\n\n\n<p>Create table Productos<br>(<br>ProductosCodigo Codigo5,<br>ProductosDescripcion Texto200,<br>ProductosPrecio Numeric(9,2),<br>constraint ProductosPK Primary key (ProductosCodigo)<br>)<br>go<\/p>\n\n\n\n<p><strong>Detalle de factura<\/strong><\/p>\n\n\n\n<p>Create table FacturasDetalle<br>(<br>FacturasNumeroSerie Codigo5,<br>FacturasNumeroFactura nchar(7) not null,<br>ProductosCodigo Codigo5,<br>FacturasDetalleCantidadVendida Numeric(9,2),<br>FacturasDetallePrecioVenta Numeric(9,2),<br>FacturasDetalleValorVenta As<br>(FacturasDetalleCantidadVendida * FacturasDetallePrecioVenta),<br>constraint FacturasDetallePK Primary key<br>(FacturasNumeroSerie,FacturasNumeroFactura,ProductosCodigo),<br>constraint FacturasDetalleConFacturasFK Foreign key<br>(FacturasNumeroSerie,FacturasNumeroFactura)<br>references Facturas(FacturasNumeroSerie,FacturasNumeroFactura),<br>constraint FacturasDetalleConProductos Foreign key (ProductosCodigo)<br>references Productos(ProductosCodigo)<br>)<br>go<\/p>\n\n\n\n<script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\"\n     style=\"display:block; text-align:center;\"\n     data-ad-layout=\"in-article\"\n     data-ad-format=\"fluid\"\n     data-ad-client=\"ca-pub-2636008503986218\"\n     data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p><strong>Para borrar el tipo de dato definido por el usuario llamado Codigo5<\/strong><\/p>\n\n\n\n<p>Drop type Codigo5<br>go<br>Mens. 3732, Nivel 16, Estado 1, L\u00ednea 110 No se puede quitar el tipo &#8216;Codigo5&#8217; porque el &nbsp;objeto &#8216;Facturas&#8217; hace referencia a \u00e9l.<br>Puede que haya otros objetos que hagan referencia &nbsp;a este tipo.<\/p>\n\n\n\n<p><strong>Modificar tablas para poder eliminar el tipo de datos Codigo5<\/strong><br><strong>&#8212; Cambiar de Codigo5 a nchar(5) not null<\/strong><\/p>\n\n\n\n<p>Alter table Facturas<br>alter column FacturasNumeroSerie nchar(5) not null<br>go<\/p>\n\n\n\n<p><strong>En Productos<\/strong><\/p>\n\n\n\n<p>Alter table Productos<br>alter column ProductosCodigo nchar(5) not null<br>go<\/p>\n\n\n\n<p><strong>Eliminar el tipo TextoLargo100<\/strong><br>Drop type TextoLargo100<br>go<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Tipos de datos definidos por el usuario Los tipos de datos definidos por el usuario permiten facilitar la estandarizaci\u00f3n de los tipos de las columnas en un dise\u00f1o de base de datos.En este ejemplo se crea una base de datos para luego crear un dise\u00f1o con una Factura, los productos y el Detalle de la &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=327\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":1205,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[28,46,47,57,100],"class_list":["post-327","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-esquemastablas","tag-esquemas","tag-particion","tag-permisos","tag-tablas","tag-tipos-de-datos-definidos-por-el-usuario","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/327","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=327"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/327\/revisions"}],"predecessor-version":[{"id":1207,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/327\/revisions\/1207"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/1205"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}