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 [2024/12/18 13:33] – lmachuca | sql [2025/06/16 19:14] (actual) – lmachuca | ||
---|---|---|---|
Línea 7: | Línea 7: | ||
=====Expresiones DDL===== | =====Expresiones DDL===== | ||
+ | |||
==== Schemas ==== | ==== 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. | 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 28: | 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 44: | Línea 57: | ||
< | < | ||
Table " | Table " | ||
- | Column | + | Column |
- | -----------+-----------------------+-----------+----------+--------- | + | ------------+-----------------------+-----------+----------+--------- |
- | | + | |
- | | + | |
- | author | + | author_id |
- | edicion | + | edicion_id |
- | anyo | + | año |
- | | + | |
- | | + | |
Indexes: | Indexes: | ||
" | " | ||
Línea 61: | 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 '' | ||
+ | |||
+ | 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: | ||
+ | |||
+ | < | ||
+ | | ||
+ | -------------+-------------------+------+-------+----------+----------------------- | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | </ | ||
- | En lenguaje SQL no hay una forma estandarizada para listar tablas. En distintos motores existen distintos mecanismos. | ||
**Mostrar tablas en el schema:** | **Mostrar tablas en el schema:** | ||
- | | + | En lenguaje SQL no hay una forma estandarizada para listar tablas. En distintos motores existen distintos mecanismos. |
+ | |||
+ | | ||
* MySQL: '' | * MySQL: '' | ||
- | * SQite: | + | * SQite: |
+ | |||
+ | En SQL92 se puede obtener una vista generalizada de tablas de un schema consultando '' | ||
+ | |||
+ | <code sql> | ||
+ | select table_name, table_type | ||
+ | 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. | ||
+ | </ | ||
Línea 85: | Línea 140: | ||
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. | 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 ==== | ==== Funciones ==== | ||
- | TBD | + | : |
+ | |||
+ | ==== Tipos de Datos ==== | ||
+ | |||
+ | Los siguientes tipos de datos son globales en SQL: | ||
+ | |||
+ | {| class=" | ||
+ | |- | ||
+ | ! 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, \\ parseado como texto **en el collation de la tabla**. || ''" | ||
+ | |- | ||
+ | ! 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 ===== | ===== CRUD ===== |