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 [2025/06/16 19:14] (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. | ||
| + | |||
| + | <code sql> | ||
| + | CREATE SCHEMA helpcomschema OWNER usuario; -- crear un schema | ||
| + | GRANT USAGE ON SCHEMA helpcomschema TO usuario2; -- permitir conectar | ||
| + | DROP SCHEMA helpcomschema; | ||
| + | DROP SCHEMA helpcomschema CASCADE; -- bajar un schema y todos sus objetos. | ||
| + | </ | ||
| + | |||
| + | |||
| + | En PostgreSQL se muestra los schemas de una conexión con '' | ||
| + | |||
| + | En SQLite y MySQL no existe una forma estandarizada de mostrar los schemas de una conexión. | ||
| ==== Tablas ==== | ==== Tablas ==== | ||
| Línea 24: | Línea 41: | ||
| Por ejemplo: | Por ejemplo: | ||
| - | < | + | < |
| CREATE TABLE libro ( | CREATE TABLE libro ( | ||
| - | isbn VARCHAR(20) NOT NULL, | + | isbn VARCHAR(20) NOT NULL UNIQUE, |
| - | titulo | + | titulo |
| - | | + | |
| - | | + | |
| - | | + | |
| hardprint BOOLEAN, | hardprint BOOLEAN, | ||
| hardcover BOOLEAN, | hardcover BOOLEAN, | ||
| Línea 40: | Línea 57: | ||
| < | < | ||
| Table " | Table " | ||
| - | Column | + | Column |
| - | -----------+-----------------------+-----------+----------+--------- | + | ------------+-----------------------+-----------+----------+--------- |
| - | | + | |
| - | | + | |
| - | author | + | author_id |
| - | edicion | + | edicion_id |
| - | anyo | + | año |
| - | | + | |
| - | | + | |
| Indexes: | Indexes: | ||
| " | " | ||
| Línea 57: | Línea 74: | ||
| 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 ==== | ||
| - | La instrucción **SELECT** es para buscar información. | + | En PostgreSQL, SQLite, etc, y en SQ92 no existe una sentencia directa |
| <code sql> | <code sql> | ||
| - | SELECT campos | + | select column_name, |
| - | FROM tablas | + | from information_schema.columns |
| - | WHERE (condicion1 [AND/OR] condicion2 [AND/OR]...) | + | where table_catalog=' |
| - | | + | |
| - | ; | + | |
| </ | </ | ||
| - | En la consulta: | ||
| - | * '' | + | Lo que resulta |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | Ojo: Distintos motores como MySQL y PostgreSQL pueden extender la sintaxis. | + | < |
| + | | ||
| + | -------------+-------------------+------+-------+----------+----------------------- | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| - | **Ejemplos de búsquedas en bases de datos de Helpcom** | + | </ |
| - | Buscar aquellos clientes | + | |
| - | < | + | |
| - | | + | **Mostrar tablas |
| - | WHERE cli_comuna LIKE '%comuna%' | + | |
| + | En lenguaje SQL no hay una forma estandarizada para listar tablas. En distintos motores existen distintos mecanismos. | ||
| + | |||
| + | * Postgres: '' | ||
| + | * MySQL: '' | ||
| + | * SQite: '' | ||
| + | |||
| + | En SQL92 se puede obtener una vista generalizada | ||
| + | |||
| + | < | ||
| + | select table_name, table_type | ||
| + | from information_schema.tables | ||
| + | where table_catalog=' | ||
| </ | </ | ||
| - | Top 5 de las comunas | + | Las tablas |
| - | < | + | |
| - | | + | **Eliminar una tabla** |
| - | GROUP BY cli_comuna | + | |
| - | ORDER BY cantidad DESC LIMIT 5 | + | < |
| + | DROP TABLE libro; -- eliminar si no hay depedencias | ||
| + | DROP TABLE libro CASCADE; -- eliminar la tabla, y todas sus filas y tablas dependientes. | ||
| </ | </ | ||
| - | Buscar todos aquellos folios | + | ==== Vistas ==== |
| - | < | + | |
| - | SELECT | + | Una vista es una tabla virtual cuya estructura calza la definición |
| - | | + | |
| + | < | ||
| + | CREATE VIEW vista AS | ||
| + | SELECT | ||
| + | | ||
| + | | ||
| + | ; | ||
| </ | </ | ||
| - | Buscar todos los RUT de los clientes | + | Para que una vista esté definida, la consulta debe ser resoluble |
| - | < | + | |
| - | | + | **Eliminar una vista** |
| - | WHERE cli_rut NOT REGEXP ' | + | |
| + | < | ||
| + | DROP VIEW vista; | ||
| </ | </ | ||
| - | Explicación del filtro: | ||
| - | | REGEXP | + | ==== Funciones ==== |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | | '' | + | |
| - | || https:// | + | |
| + | :FIXME: TBD | ||
| - | 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 | + | ==== Tipos de Datos ==== |
| - | < | + | |
| - | SELECT | + | Los siguientes tipos de datos son globales en SQL: |
| - | WHERE cli_direccion LIKE ' | + | |
| + | {| class=" | ||
| + | |- | ||
| + | ! INTEGER || Un número entero, con signo, | ||
| + | |- | ||
| + | ! REAL || Un número flotante | ||
| + | |- | ||
| + | ! CHAR(n) | ||
| + | |- | ||
| + | ! TEXT || Un blob de tamaño variable, \\ parseado | ||
| + | |- | ||
| + | ! BLOB || Un blob tratado como un binario. || | ||
| + | |- | ||
| + | |} | ||
| + | |||
| + | Cada motor agrega sus tipos de datos propios. Algunos tipos que son bastante comunes son '' | ||
| + | |||
| + | |||
| + | ==== UDL ==== | ||
| + | |||
| + | :FIXME: TBD | ||
| + | |||
| + | |||
| + | ===== CRUD ===== | ||
| + | ==== Mostrar Registros ==== | ||
| + | |||
| + | La instrucción **SELECT** es para buscar información. | ||
| + | |||
| + | < | ||
| + | SELECT | ||
| + | | ||
| + | WHERE (condicion1 [AND/OR] condicion2 [AND/ | ||
| + | [ORDER BY orden [ASC/DESC] ] | ||
| + | ; | ||
| </ | </ | ||
| - | ==== Agregar Datos==== | + | En la consulta: |
| + | |||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | |||
| + | ==== Escribir Registros | ||
| - | Las instrucciones **INSERT** y **UPDATE** agregan información. | + | Las instrucciones **INSERT** y **UPDATE** agregan |
| <code mysql> | <code mysql> | ||
| Línea 139: | Línea 214: | ||
| </ | </ | ||
| - | 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 242: | ||
| ====Motores==== | ====Motores==== | ||
| - | * MySQL Server Community - https:// | + | |
| + | | ||
| * PostgreSQL Server - http:// | * PostgreSQL Server - http:// | ||
| * SQLite - https:// | * SQLite - https:// | ||
| Línea 193: | Línea 251: | ||
| ====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> |
