{"id":1666,"date":"2025-04-16T15:18:01","date_gmt":"2025-04-16T18:18:01","guid":{"rendered":"https:\/\/blog.galsoft.com.ar\/?p=1666"},"modified":"2025-04-16T15:18:01","modified_gmt":"2025-04-16T18:18:01","slug":"agregando-y-modificando-tablas-y-vistas-de-mariadb-mysql-con-sql","status":"publish","type":"post","link":"https:\/\/blog.galsoft.com.ar\/?p=1666","title":{"rendered":"Agregando y modificando tablas y vistas de MariaDB\/MySQL con SQL"},"content":{"rendered":"<p>A veces me olvido la sintaxis por no hacerlo tan habitualmente, asi que dejo ac\u00e1 un ayudamemoria.<\/p>\n<p>Ejemplos de c\u00f3mo crear, modificar y eliminar tablas y vistas en MariaDB usando SQL, con verificaciones de existencia:<\/p>\n<p><strong>1. Creaci\u00f3n de Tablas:<\/strong><\/p>\n<p>SQL<\/p>\n<pre class=\"wp-block-code\"><code>-- Ejemplo de creaci&oacute;n de una tabla llamada &#039;clientes&#039;\nDROP TABLE IF EXISTS clientes; -- Elimina la tabla si ya existe (para poder ejecutar el ejemplo varias veces)\n\nCREATE TABLE IF NOT EXISTS clientes (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    nombre VARCHAR(100) NOT NULL,\n    email VARCHAR(100) UNIQUE,\n    fecha_registro TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\n-- Ejemplo de creaci&oacute;n de otra tabla llamada &#039;pedidos&#039;\nDROP TABLE IF EXISTS pedidos;\n\nCREATE TABLE IF NOT EXISTS pedidos (\n    id INT AUTO_INCREMENT PRIMARY KEY,\n    cliente_id INT NOT NULL,\n    fecha_pedido DATE NOT NULL,\n    monto DECIMAL(10, 2) NOT NULL,\n    FOREIGN KEY (cliente_id) REFERENCES clientes(id)\n);\n\n-- Puedes verificar si las tablas se crearon con el siguiente comando:\nSHOW TABLES;\n<\/code><\/pre>\n<p><strong>Explicaci\u00f3n:<\/strong><\/p>\n<ul class=\"wp-block-list\">\n<li><code>DROP TABLE IF EXISTS nombre_tabla;<\/code>: Esta instrucci\u00f3n intenta eliminar la tabla si ya existe. Si no existe, no genera ning\u00fan error. La incluimos aqu\u00ed para poder ejecutar el script varias veces sin problemas.<\/li>\n\n<li><code>CREATE TABLE IF NOT EXISTS nombre_tabla (...);<\/code>: Esta instrucci\u00f3n crea una nueva tabla <strong>solo si no existe<\/strong> ya una tabla con el mismo nombre.<\/li>\n<\/ul>\n<p><strong>2. Modificaci\u00f3n de Tablas (Columnas):<\/strong><\/p>\n<p>SQL<\/p>\n<pre class=\"wp-block-code\"><code>-- Ejemplo de adici&oacute;n de una nueva columna &#039;telefono&#039; a la tabla &#039;clientes&#039;\nALTER TABLE clientes\nADD COLUMN IF NOT EXISTS telefono VARCHAR(20);\n\n-- Ejemplo de modificaci&oacute;n del tipo de dato de la columna &#039;telefono&#039;\nALTER TABLE clientes\nMODIFY COLUMN IF EXISTS telefono VARCHAR(25);\n\n-- Ejemplo de cambio de nombre de la columna &#039;telefono&#039; a &#039;numero_telefono&#039;\nALTER TABLE clientes\nCHANGE COLUMN IF EXISTS telefono numero_telefono VARCHAR(25);\n\n-- Ejemplo de eliminaci&oacute;n de la columna &#039;numero_telefono&#039;\nALTER TABLE clientes\nDROP COLUMN IF EXISTS numero_telefono;\n\n-- Puedes verificar la estructura de la tabla con el siguiente comando:\nDESCRIBE clientes;\n<\/code><\/pre>\n<p><strong>Explicaci\u00f3n:<\/strong><\/p>\n<ul class=\"wp-block-list\">\n<li><code>ALTER TABLE nombre_tabla ADD COLUMN IF NOT EXISTS nombre_columna tipo_dato [restricciones];<\/code>: Agrega una nueva columna a la tabla si no existe ya una columna con el mismo nombre.<\/li>\n\n<li><code>ALTER TABLE nombre_tabla MODIFY COLUMN IF EXISTS nombre_columna nuevo_tipo_dato [nuevas_restricciones];<\/code>: Modifica el tipo de dato y\/o las restricciones de una columna existente.<\/li>\n\n<li><code>ALTER TABLE nombre_tabla CHANGE COLUMN IF EXISTS nombre_viejo nombre_nuevo nuevo_tipo_dato [nuevas_restricciones];<\/code>: Cambia el nombre y\/o el tipo de dato y\/o las restricciones de una columna existente.<\/li>\n\n<li><code>ALTER TABLE nombre_tabla DROP COLUMN IF EXISTS nombre_columna;<\/code>: Elimina una columna existente de la tabla.<\/li>\n<\/ul>\n<p><strong>3. Eliminaci\u00f3n de Tablas:<\/strong><\/p>\n<p>SQL<\/p>\n<pre class=\"wp-block-code\"><code>-- Ejemplo de eliminaci&oacute;n de la tabla &#039;pedidos&#039; si existe\nDROP TABLE IF EXISTS pedidos;\n\n-- Ejemplo de eliminaci&oacute;n de la tabla &#039;clientes&#039; si existe\nDROP TABLE IF EXISTS clientes;\n\n-- Puedes verificar si las tablas fueron eliminadas con el siguiente comando:\nSHOW TABLES;\n<\/code><\/pre>\n<p><strong>Explicaci\u00f3n:<\/strong><\/p>\n<ul class=\"wp-block-list\">\n<li><code>DROP TABLE IF EXISTS nombre_tabla;<\/code>: Elimina la tabla especificada si existe.<\/li>\n<\/ul>\n<p><strong>4. Creaci\u00f3n de Vistas:<\/strong><\/p>\n<p>SQL<\/p>\n<pre class=\"wp-block-code\"><code>-- Ejemplo de creaci&oacute;n de una vista llamada &#039;clientes_con_pedidos&#039;\nDROP VIEW IF EXISTS clientes_con_pedidos;\n\nCREATE VIEW IF NOT EXISTS clientes_con_pedidos AS\nSELECT\n    c.id AS cliente_id,\n    c.nombre AS nombre_cliente,\n    c.email,\n    COUNT(p.id) AS cantidad_pedidos,\n    SUM(p.monto) AS total_gastado\nFROM\n    clientes c\nLEFT JOIN\n    pedidos p ON c.id = p.cliente_id\nGROUP BY\n    c.id, c.nombre, c.email\nORDER BY\n    total_gastado DESC;\n\n-- Puedes verificar si la vista se cre&oacute; con el siguiente comando:\nSHOW FULL TABLES WHERE Table_type = &#039;VIEW&#039;;\n\n-- Puedes consultar los datos de la vista:\nSELECT * FROM clientes_con_pedidos;\n<\/code><\/pre>\n<p><strong>Explicaci\u00f3n:<\/strong><\/p>\n<ul class=\"wp-block-list\">\n<li><code>DROP VIEW IF EXISTS nombre_vista;<\/code>: Elimina la vista si ya existe.<\/li>\n\n<li><code>CREATE VIEW IF NOT EXISTS nombre_vista AS SELECT ... FROM ... WHERE ... GROUP BY ... ORDER BY ...;<\/code>: Crea una nueva vista basada en una consulta SELECT, solo si no existe ya una vista con el mismo nombre.<\/li>\n<\/ul>\n<p><strong>5. Modificaci\u00f3n y Eliminaci\u00f3n de Vistas:<\/strong><\/p>\n<p>SQL<\/p>\n<pre class=\"wp-block-code\"><code>-- Ejemplo de modificaci&oacute;n de la vista &#039;clientes_con_pedidos&#039; para incluir la fecha del &uacute;ltimo pedido\nDROP VIEW IF EXISTS clientes_con_pedidos; -- Necesitamos eliminarla para recrearla con la modificaci&oacute;n\n\nCREATE VIEW IF NOT EXISTS clientes_con_pedidos AS\nSELECT\n    c.id AS cliente_id,\n    c.nombre AS nombre_cliente,\n    c.email,\n    COUNT(p.id) AS cantidad_pedidos,\n    SUM(p.monto) AS total_gastado,\n    MAX(p.fecha_pedido) AS ultimo_pedido\nFROM\n    clientes c\nLEFT JOIN\n    pedidos p ON c.id = p.cliente_id\nGROUP BY\n    c.id, c.nombre, c.email\nORDER BY\n    total_gastado DESC;\n\n-- Ejemplo de eliminaci&oacute;n de la vista &#039;clientes_con_pedidos&#039;\nDROP VIEW IF EXISTS clientes_con_pedidos;\n\n-- Puedes verificar si la vista fue eliminada con el siguiente comando:\nSHOW FULL TABLES WHERE Table_type = &#039;VIEW&#039;;\n<\/code><\/pre>\n<p><strong>Explicaci\u00f3n:<\/strong><\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Modificaci\u00f3n de Vistas:<\/strong> En MariaDB (y en SQL est\u00e1ndar), la forma m\u00e1s com\u00fan de modificar una vista es eliminarla (<code>DROP VIEW IF EXISTS<\/code>) y luego volver a crearla (<code>CREATE VIEW IF NOT EXISTS<\/code>) con la nueva definici\u00f3n. No existe una sintaxis <code>ALTER VIEW<\/code> tan flexible como <code>ALTER TABLE<\/code>.<\/li>\n\n<li><code>DROP VIEW IF EXISTS nombre_vista;<\/code>: Elimina la vista especificada si existe.<\/li>\n<\/ul>\n<p>Estos ejemplos te proporcionan una base s\u00f3lida para trabajar con tablas y vistas en MariaDB utilizando SQL, asegur\u00e1ndote de que las operaciones se realicen de forma segura verificando la existencia previa de los objetos.<\/p>","protected":false},"excerpt":{"rendered":"<p>A veces me olvido la sintaxis por no hacerlo tan habitualmente, asi que dejo ac\u00e1 un ayudamemoria. Ejemplos de c\u00f3mo crear, modificar y eliminar tablas y vistas en MariaDB usando SQL, con verificaciones de existencia: 1. Creaci\u00f3n de Tablas: SQL Explicaci\u00f3n: 2. Modificaci\u00f3n de Tablas (Columnas): SQL Explicaci\u00f3n: 3. Eliminaci\u00f3n de Tablas: SQL Explicaci\u00f3n: 4. [&hellip;]<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[10],"tags":[],"class_list":["post-1666","post","type-post","status-publish","format-standard","hentry","category-programacion","entry"],"_links":{"self":[{"href":"https:\/\/blog.galsoft.com.ar\/index.php?rest_route=\/wp\/v2\/posts\/1666","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.galsoft.com.ar\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.galsoft.com.ar\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.galsoft.com.ar\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.galsoft.com.ar\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1666"}],"version-history":[{"count":1,"href":"https:\/\/blog.galsoft.com.ar\/index.php?rest_route=\/wp\/v2\/posts\/1666\/revisions"}],"predecessor-version":[{"id":1667,"href":"https:\/\/blog.galsoft.com.ar\/index.php?rest_route=\/wp\/v2\/posts\/1666\/revisions\/1667"}],"wp:attachment":[{"href":"https:\/\/blog.galsoft.com.ar\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1666"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.galsoft.com.ar\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1666"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.galsoft.com.ar\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}