Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| sql [2018/10/04 22:03] – lmachuca | sql [2025/06/16 19:14] (actual) – lmachuca | ||
|---|---|---|---|
| Línea 6: | Línea 6: | ||
| * Cosas más específicas para Helpcom, por motor: [[f1: | * 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 25: | 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 41: | Línea 57: | ||
| < | < | ||
| Table " | Table " | ||
| - | Column | + | Column |
| - | -----------+-----------------------+-----------+----------+--------- | + | ------------+-----------------------+-----------+----------+--------- |
| - | | + | |
| - | | + | |
| - | author | + | author_id |
| - | edicion | + | edicion_id |
| - | anyo | + | año |
| - | | + | |
| - | | + | |
| Indexes: | Indexes: | ||
| " | " | ||
| Línea 59: | Línea 75: | ||
| En MySQL es posible recuperar la sentencia que creó una tabla con '' | En MySQL es posible recuperar la sentencia que creó una tabla con '' | ||
| + | En PostgreSQL, SQLite, etc, y en SQ92 no existe una sentencia directa para observar el schema. Aunque la tabla mostrada anteriormente se puede componer usando los registros del schema de sistema '' | ||
| + | |||
| + | <code sql> | ||
| + | select column_name, | ||
| + | from information_schema.columns | ||
| + | where table_catalog=' | ||
| + | </ | ||
| + | |||
| + | |||
| + | Lo que resulta en la siguiente salida: | ||
| + | |||
| + | < | ||
| + | | ||
| + | -------------+-------------------+------+-------+----------+----------------------- | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | **Mostrar tablas en el schema:** | ||
| En lenguaje SQL no hay una forma estandarizada para listar tablas. En distintos motores existen distintos mecanismos. | En lenguaje SQL no hay una forma estandarizada para listar tablas. En distintos motores existen distintos mecanismos. | ||
| - | ^ ^ PostgreSQL | + | |
| - | ^ | + | * MySQL: |
| - | ^ | + | * SQite: |
| + | |||
| + | En SQL92 se puede obtener una vista generalizada de tablas | ||
| + | |||
| + | <code sql> | ||
| + | select | ||
| + | from information_schema.tables | ||
| + | where table_catalog=' | ||
| + | </ | ||
| + | |||
| + | Las tablas con tipo '' | ||
| + | |||
| + | **Eliminar una tabla** | ||
| + | |||
| + | <code sql> | ||
| + | DROP TABLE libro; -- eliminar si no hay depedencias | ||
| + | DROP TABLE libro CASCADE; -- eliminar la tabla, y todas sus filas y tablas dependientes. | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== 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. | ||
| + | |||
| + | **Eliminar una vista** | ||
| + | |||
| + | <code sql> | ||
| + | DROP VIEW vista; | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Funciones ==== | ||
| + | |||
| + | :FIXME: TBD | ||
| + | |||
| + | ==== Tipos de Datos ==== | ||
| + | |||
| + | Los siguientes tipos de datos son globales en SQL: | ||
| + | |||
| + | {| class="mwtable inline zebra" | ||
| + | |- | ||
| + | ! INTEGER || Un número entero, con signo, de hasta 32 o 64 bits. || '' | ||
| + | |- | ||
| + | ! REAL || Un número flotante en rango de IEEE754 | ||
| + | |- | ||
| + | ! CHAR(n) | ||
| + | |- | ||
| + | ! TEXT || Un blob de tamaño variable, | ||
| + | |- | ||
| + | ! BLOB | ||
| + | |- | ||
| + | |} | ||
| + | |||
| + | Cada motor agrega sus tipos de datos propios. Algunos tipos que son bastante comunes son '' | ||
| + | |||
| + | |||
| + | ==== UDL ==== | ||
| + | |||
| + | :FIXME: TBD | ||
| - | ==== Mostrar ==== | + | ===== CRUD ===== |
| + | ==== Mostrar | ||
| La instrucción **SELECT** es para buscar información. | La instrucción **SELECT** es para buscar información. | ||
| Línea 81: | Línea 193: | ||
| En la consulta: | En la consulta: | ||
| - | * '' | + | * '' |
| * '' | * '' | ||
| * '' | * '' | ||
| Línea 87: | Línea 199: | ||
| - | ==== Agregar Datos==== | + | ==== Escribir Registros |
| - | Las instrucciones **INSERT** y **UPDATE** agregan información. | + | Las instrucciones **INSERT** y **UPDATE** agregan |
| <code mysql> | <code mysql> | ||
| Línea 101: | Línea 213: | ||
| </ | </ | ||
| + | |||
| + | La sintaxis en general es la misma entre MySQL, PostgreSQL y SQLite. | ||
| + | |||
| + | MySQL y SQLite permiten '' | ||
| ==== Eliminar Datos==== | ==== Eliminar Datos==== | ||
| Línea 126: | Línea 242: | ||
| ====Motores==== | ====Motores==== | ||
| - | * MySQL Server Community - https:// | + | |
| + | | ||
| * PostgreSQL Server - http:// | * PostgreSQL Server - http:// | ||
| * SQLite - https:// | * SQLite - https:// | ||
| Línea 134: | Línea 251: | ||
| ====Gestores==== | ====Gestores==== | ||
| - | * DBeaver Community - https:// | + | * [[: |
| - | + | * MySQL Query Browser | |
| - | 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. | + | * SQYog Community. |
| - | + | * MySQL Workbench. | |
| - | Para la instalación ver [[Dbeaver]]. | + | * '' |
| - | + | * '' | |
| - | * MySQL Query Browser | + | * '' |
| - | * 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 '' | + | |
| - | + | ||
| - | Para la instalación ver [[Query Browser]]. | + | |
| - | + | ||
| - | * '' | + | |
| - | + | ||
| - | '' | + | |
| - | + | ||
| - | * '' | + | |
| - | + | ||
| - | '' | + | |
| * SQLitebrowser | * 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 '' | ||
| =====Más Información===== | =====Más Información===== | ||
