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:01] – 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 58: | 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 80: | Línea 193: | ||
En la consulta: | En la consulta: | ||
- | * '' | + | * '' |
* '' | * '' | ||
* '' | * '' | ||
Línea 86: | 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 100: | 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 125: | Línea 242: | ||
====Motores==== | ====Motores==== | ||
- | * MySQL Server Community - https:// | + | |
+ | | ||
* PostgreSQL Server - http:// | * PostgreSQL Server - http:// | ||
* SQLite - https:// | * SQLite - https:// | ||
Línea 133: | 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===== |