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> |