Diferencias
Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
sql [2018/10/03 14:03] – creado lmachuca | sql [2024/12/18 13:33] (actual) – lmachuca | ||
---|---|---|---|
Línea 4: | Línea 4: | ||
* Información General - [[wp> | * Información General - [[wp> | ||
+ | * Cosas más específicas para Helpcom, por motor: [[f1: | ||
- | =====Expresiones | + | =====Expresiones |
+ | |||
+ | ==== Schemas ==== | ||
+ | Un schema es una unidad lógica estructural que reúne tablas, vistas y funciones. Un schema está bien definido en SQ93 y en PostgreSQL; en MySQL, un schema es equivalente a una base de datos. | ||
==== Tablas ==== | ==== Tablas ==== | ||
Línea 57: | Línea 61: | ||
En MySQL es posible recuperar la sentencia que creó una tabla con '' | En MySQL es posible recuperar la sentencia que creó una tabla con '' | ||
- | + | ||
- | ==== Mostrar ==== | + | |
+ | En lenguaje SQL no hay una forma estandarizada para listar tablas. En distintos motores existen distintos mecanismos. | ||
+ | |||
+ | **Mostrar tablas en el schema:** | ||
+ | |||
+ | * Postgres: '' | ||
+ | * MySQL: '' | ||
+ | * SQite: ???? | ||
+ | |||
+ | |||
+ | ==== Vistas ==== | ||
+ | |||
+ | Una vista es una tabla virtual cuya estructura calza la definición de tipo de datos de una consulta, es decir está [[#Mostrar Registros|definida en términos de un SELECT]]: | ||
+ | |||
+ | <code sql> | ||
+ | CREATE VIEW vista AS | ||
+ | SELECT f(x,y) AS columna1, CAST(g(x,y) AS INTEGER) AS columna2 | ||
+ | FROM x JOIN Y ON ... | ||
+ | ORDER BY ... | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | Para que una vista esté definida, la consulta debe ser resoluble al momento de crear la vista, ergo todos los nombres, funciones y schemas usados en la vista deben existir. | ||
+ | |||
+ | ==== Funciones ==== | ||
+ | |||
+ | TBD | ||
+ | |||
+ | ===== CRUD ===== | ||
+ | ==== Mostrar | ||
La instrucción **SELECT** es para buscar información. | La instrucción **SELECT** es para buscar información. | ||
Línea 72: | Línea 105: | ||
En la consulta: | En la consulta: | ||
- | * '' | + | * '' |
* '' | * '' | ||
* '' | * '' | ||
* '' | * '' | ||
- | Ojo: Distintos motores como MySQL y PostgreSQL pueden extender la sintaxis. | ||
- | **Ejemplos de búsquedas en bases de datos de Helpcom** | + | ==== Escribir Registros ==== |
- | Buscar aquellos clientes en una tabla de clientes que pertenecen a cierta comuna: | + | Las instrucciones **INSERT** y **UPDATE** agregan |
- | <code mysql> | + | |
- | SELECT * FROM mae_clientes | + | |
- | WHERE cli_comuna LIKE ' | + | |
- | </ | + | |
- | + | ||
- | Top 5 de las comunas con más clientes: | + | |
- | <code mysql> | + | |
- | SELECT cli_comuna, COUNT(*) AS cantidad FROM mae_clientes | + | |
- | GROUP BY cli_comuna | + | |
- | ORDER BY cantidad DESC LIMIT 5 | + | |
- | </ | + | |
- | + | ||
- | + | ||
- | Buscar todos aquellos folios de un CAF (identificado por su tipo de documento y folio de partida de ingreso) que no están en uso: | + | |
- | <code mysql> | + | |
- | SELECT dte_folios.* FROM dte_folios JOIN dte_folios_ingreso USING foi_id | + | |
- | WHERE tdo_id = 33 AND foi_desde = 123456 AND fol_usado = ' | + | |
- | </ | + | |
- | + | ||
- | Buscar todos los RUT de los clientes que están mal ingresados porque no corresponden al formato del RUT: | + | |
- | <code mysql> | + | |
- | SELECT * from mae_clientes | + | |
- | WHERE cli_rut NOT REGEXP ' | + | |
- | </ | + | |
- | + | ||
- | Explicación del filtro: | + | |
- | + | ||
- | | REGEXP | + | |
- | | '' | + | |
- | | '' | + | |
- | | '' | + | |
- | | '' | + | |
- | | '' | + | |
- | || https:// | + | |
- | + | ||
- | + | ||
- | A veces tener comillas simples o dobles como parte de un campo puede causar errores en bases de datos de MySQL no sanitizadas. Busquemos todos los clientes que tengan comillas dobles en la dirección (cosas como O' | + | |
- | <code mysql> | + | |
- | SELECT cli_id, cli_rut, cli_direccion as nombre_antes, | + | |
- | WHERE cli_direccion LIKE ' | + | |
- | </ | + | |
- | + | ||
- | ==== Agregar Datos==== | + | |
- | + | ||
- | Las instrucciones **INSERT** y **UPDATE** agregan información. | + | |
<code mysql> | <code mysql> | ||
Línea 139: | Línea 126: | ||
</ | </ | ||
- | En la consulta: | + | La sintaxis en general es la misma entre MySQL, PostgreSQL y SQLite. |
- | * '' | + | MySQL y SQLite permiten |
- | * '' | + | |
- | * '' | + | |
+ | ==== Eliminar Datos==== | ||
- | **Ejemplos | + | La instrucción |
- | Actualizar el nombre de una comuna mal escrita: | ||
<code mysql> | <code mysql> | ||
- | | + | |
- | | + | |
- | | + | |
</ | </ | ||
- | Corregir todos los RUT con " | + | <note warning> |
+ | **[[https:// | ||
- | <code mysql> | + | [[https:// |
- | UPDATE mae_clientes | + | |
- | SET cli_rut | + | |
- | </code> | + | |
- | Cambiar las comillas normales por comillas tipográficas, | + | </note> |
- | + | ||
- | <code mysql> | + | |
- | UPDATE mae_clientes | + | |
- | SET cli_direccion= replace(cli_direccion, | + | |
- | WHERE cli_direccion LIKE ' | + | |
- | </ | + | |
- | + | ||
- | Marcar un grupo de folios de nota de crédito DTE como no impresos: | + | |
- | + | ||
- | <code mysql> | + | |
- | UPDATE dte_folios | + | |
- | SET fol_archivo_generado = ' | + | |
- | WHERE tdo_id = 61 AND fol_numero IN (101, 102, 104, 107, 109) | + | |
- | </code> | + | |
Línea 185: | Línea 154: | ||
====Motores==== | ====Motores==== | ||
- | * MySQL Server Community - https:// | + | |
+ | | ||
* PostgreSQL Server - http:// | * PostgreSQL Server - http:// | ||
* SQLite - https:// | * SQLite - https:// | ||
Línea 193: | Línea 163: | ||
====Gestores==== | ====Gestores==== | ||
- | * DBeaver Community - https:// | + | * [[: |
+ | * MySQL Query Browser (desahuciado en 2019). | ||
+ | * SQYog Community. | ||
+ | * MySQL Workbench. | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * SQLitebrowser | ||
- | DBeaver es un GUI (interface gráfica) para la gestión de base de datos en varios motores. Es abierto y multiplataforma basado en Java FX y está disponible en los recursos compartidos de Helpcom. Ofrecen descargas tanto para Linux como Windows. | + | =====Más Información===== |
- | Para la instalación ver [[Dbeaver]]. | + | Páginas que pueden tener información relacionada: |
- | * MySQL Query Browser | + | {{topic> |
- | * MySQL Workbench | + | |
- | Query Browser es un GUI (interface gráfica) para la consulta de base de datos MySQL Server 4.1 a 5.5. MySQL Workbench es el sucesor de Query Browser y soporta modelos de bases de datos de MySQL 5.1 a 8.x, y está disponible en Linux en el gestor de paquetes con un nombre como '' | + | {{topic>mysql}} |
- | + | ||
- | Para la instalación ver [[Query Browser]]. | + | |
- | + | ||
- | * '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | * '' | + | |
- | + | ||
- | '' | + | |
- | + | ||
- | * SQLitebrowser | + | |
- | SQLitebrowser es una interface gráfica para crear, gestionar y respaldar archivos de base de datos en SQLite2 (no en SQLite3). En Linux está disponible con el nombre de paquete '' | + | {{topic> |