AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / Editores / Editor de consultas / SQL
  • Presentación
  • SELECCIONE
  • SELECCIONE
  • Caso especial: SELECT Multiarchivo
  • Casos especiales: SELECT sin FROM o SELECT con una tabla virtual
  • Ejecutar un procedimiento almacenado
  • INSERTAR
  • INSERTAR
  • INSERT con selección
  • ACTUALIZACIÓN
  • BORRAR
  • CREAR TABLA
  • Tipos disponibles
  • CREAR TABLA COMO
  • DROP TABLE
  • ALTER TABLE
  • CREATE INDEX
  • DROP INDEX
  • GRANT
  • REVOCAR
  • CREAR VISTA
  • DROP VIEW
  • CREAR VISTA MATERIALIZADA
  • DROP MATERIALIZED VIEW
  • REFRESCAR LA VISTA MATERIALIZADA
  • OPTIMIZAR TABLA
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Presentación
Las principales instrucciones SQL permitidas en las consultas SQL gestionadas por WINDEV y WEBDEV son las siguientes:
Para obtener más información, consulte la documentación de SQL.
Para conocer todos los comandos de SQL (funciones, cláusulas, operadores, etc.) que pueden utilizarse en una consulta SQL gestionada por HFSQL, consulte Comandos que se pueden utilizar en una consulta SQL gestionada por HFSQL.
Observaciones:
  • Estas instrucciones se pueden utilizar:
    • en el código SQL de las consultas creadas en el editor de consultas. Estas consultas se ejecutan con la función HExecuteQuery.
    • en el código SQL de las consultas ejecutadas con la función de WLanguage HExecuteSQLQuery.
  • El carácter " puede utilizarse como delimitador de identificadores en consultas SQL, tal y como lo especifica el estándar SQL92.

Importante

El editor de consultas no permite crear consultas en código SQL utilizando los comandos INSERT, UPDATE o DELETE.
SELECCIONE

SELECCIONE

La instrucción SELECT permite buscar registros en uno o más archivos.
Formato de uso:
SELECT [ALL/DISTINCT] NamesOfItems AS NameOfItemsUsed
FROM FileName AS UsedFileName
[WHERE FileJoins [AND] SelectionConditions]
[GROUP BY NameOfItems [HAVING Condition]]
[ORDER BY NameOfItems]
Ejemplo: El siguiente código SQL permite mostrar la suma total de pedidos por cliente que vive en París. El resultado se agrupará por nombre de cliente, código postal y ciudad. Solo se considerarán los clientes con un total de pedidos superior a 3000 dólares. El resultado se ordenará según el número total de pedidos en orden ascendente:
SELECT CUSTOMER.CustomerLastName AS CustomerLastName,
CUSTOMER.ZipCode AS ZipCode,
CUSTOMER.City AS City,
SUM(ORDERS.TotalIOT) AS TotalIOT
FROM CUSTOMER AS CUST, ORDERS AS ORD
WHERE CUST.CustomerNum = ORD.CustomerNum
AND ZipCode LIKE '75%'
GROUP BY CustomerLastName, ZipCode, City
HAVING TotalIOT > 3000
ORDER BY TotalIOT ASC
Observaciones:
  • La palabra clave DISTINCT elimina los registros duplicados del resultado de la consulta.
  • Para obtener más información sobre las condiciones de selección, consulte Condiciones de selección en una consulta SQL.
  • Se pueden crear consultas de selección en el editor de consultas. Para obtener más información, consulte Crear una consulta de selección.
  • En la sintaxis de la instrucción SELECT, el parámetro NameOfItems puede contener una o más condiciones de selección. Por ejemplo:
    SELECT CustomerLastName, Age>18 AS Adult FROM Customer
  • La instrucción SELECT puede utilizarse como una expresión escalar, es decir que se puede utilizar SELECT en lugar de un valor o columna en instrucciones como INSERT, UPDATE, SELECT, etc.
    Por ejemplo:
    INSERT INTO TABLE (name, value) VALUES ( 'Rome a Rick',
    (SELECT MAX(number) FROM table2) )

    UPDATE customer SET gdttl = (SELECT SUM(invoice.grand_total)
    FROM invoice WHERE invoice.reference=customer.reference)

    SELECT NamesOfItems AS NameOfItemsUsed,
    (SELECT COUNT(*) FROM Table2 WHERE Item=NameOfItemsUsed)
    FROM Table1
Observación: Al utilizar la consulta SELECT como expresión escalar, se debe obtener un resultado en una sola columna y en una sola fila.

Caso especial: SELECT Multiarchivo

La instrucción SELECT también permite seleccionar en una consulta multiarchivo todas las columnas de un archivo de datos mediante la siguiente sintaxis:
SELECT Order_Line.*,Orders.OrderNum, ...
FROM Orders, Order_Line
Esta sintaxis es muy útil para las combinaciones y evita tener que introducir el nombre de cada campo, una operación que podría tardar mucho tiempo.

Casos especiales: SELECT sin FROM o SELECT con una tabla virtual

La instrucción SELECT también permite ejecutar consultas que no utilizan tablas:
  • utilizando la sintaxis sin la cláusula "FROM.
    Ejemplo:
    SELECT TO_CHAR(12,'RN')
  • utilizando la tabla virtual DUAL. Esta tabla virtual contiene un solo campo (llamado "dummy") y un solo registro.
    Ejemplo:
    SELECT CURRENT_DATE FROM DUAL

Ejecutar un procedimiento almacenado

La instrucción SELECT también permite ejecutar procedimientos almacenados directamente.
La siguiente sintaxis se utiliza para ejecutar el procedimiento almacenado:
SELECT NameOfStoredProcedure(NumericParameter,'StringParameter',....) [FROM DUAL]
Observaciones:
  • El procedimiento almacenado debe ser una función almacenada: siempre debe devolver un valor. En caso contrario, se generará un error de ejecución.
  • Si el nombre del procedimiento almacenado es idéntico al de una función o procedimiento del proyecto, debe ir precedido por el nombre del conjunto de procedimientos almacenados.
  • El resultado de un procedimiento almacenado también puede ser uno de los parámetros de una consulta SELECT.
Para obtener más información, consulte Procedimientos y consultas almacenados (HFSQL Client/Server).
INSERTAR

INSERTAR

La instrucción INSERT permite agregar :
  • un solo registro a un archivo de datos.
  • varios registros a un archivo de datos.
Utiliza el siguiente formato:
INSERT INTO FileName (NameOfItems)
VALUES (ValueItems add 1), (ValueItems add 2), ... , (ValueItems add N)
Ejemplos: Los siguientes códigos SQL permiten insertar:
  • un nuevo cliente en el archivo CUSTOMER (se proporciona la información completa del cliente).
    INSERT INTO CUSTOMER
    VALUES (77, 'Moore', 'Julia', '1 rue Giono',...
    '69000', 'Lyon')
  • un nuevo cliente en el archivo CUSTOMER: solo se proporciona el número, apellido y nombre del cliente:
    INSERT INTO CUSTOMER (CustomerNum, CustomerLastName, CustomerFirstName)
    VALUES (77, 'Moore', 'Julia')
  • 3 productos en un archivo PRODUCT:
    INSERT INTO PRODUCT
    VALUES ('Ref01', 'Mineral water'), ('Ref02', 'Butter'), ('Ref03', 'Sponge')
Observaciones:
  • Se pueden crear consultas de inserción en el editor de consultas. Para obtener más información, consulte Crear una consulta de inserción.
  • Para obtener el valor del identificador automático durante una consulta de tipo INSERT en archivos HFSQL (consulta ejecutada con la función HExecuteSQLQuery, HExecuteQuery o SQLExec), utilice la variable SQL.IdAuto.
  • La instrucción INSERT no se puede utilizar para copiar datos de un archivo HFSQL a otro.
  • La variable H.NbRecModificationQuery permite conocer el número de registros insertados.

INSERT con selección

La instrucción INSERT también se puede utilizar para insertar una selección de registros realizada por una consulta SELECT. El formato a utilizar es el siguiente:
INSERT INTO FileName [(NameOfItems)] SELECT...
Observaciones:
  • El número de campos a insertar debe ser igual al número de valores devueltos por la consulta SELECT.
  • Todos los campos del archivo se tienen en cuenta si no se especifica ningún campo en la instrucción INSERT.
  • Este tipo de consulta no se puede crear directamente en el editor de consultas.
ACTUALIZACIÓN
La instrucción UPDATE actualiza registros en un archivo. Utiliza el siguiente formato:
UPDATE FileName
SET NameOfItem = Expression
[WHERE Conditions]

Ejemplos:
  • El siguiente código SQL permite modificar el título y nombre del cliente Montgomery:
    UPDATE CUSTOMER
    SET Title = 'Mrs',
    CustomerLastName = 'Darwin'
    WHERE CustomerLastName = 'Montgomery'
  • El siguiente código SQL modifica el nombre del cliente en el archivo Customer. Para los registros con el mismo ID, el nombre del cliente en el archivo Customer se reemplaza por el nombre en el archivo Customer_Svg:
    UPDATE CUSTOMER, CUSTOMER_SVG
    SET CUSTOMER.Name = CUSTOMER_SVG.Name
    WHERE CUSTOMER.ID = CUSTOMER_SVG.ID
Observaciones sobre el uso de la instrucción UPDATE en WINDEV:
  • La cláusula WHERE permite realizar subselecciones (con SELECT), si la subselección es relativa a otro archivo.
  • La expresión SET no acepta subselecciones (no se puede utilizar SELECT justo después de SET). Tampoco se puede realizar ninguna combinación en la sección UPDATE de la consulta.
    La siguiente consulta es aceptada:
    UPDATE PRODUCT SET SalesPrice = 1000
    WHERE ProductRef IN (SELECT ORDERS.ProductRef FROM ORDERS)
    -- Sub-query in WHERE: OK

    La siguiente consulta no es aceptada:
    UPDATE Product
    SET SalesPrice = (SELECT AVG(ORDERS.UnitPrice) FROM ORDERS
    -- Sub-query in SET: NOT VALID
    WHERE ORDERS.ProductRef = PRODUCT.ProductRef
    GROUP BY ORDERS.ProductRef)
    WHERE ProductRef IN (SELECT ORDERS.ProductRef FROM ORDERS)

    La siguiente consulta tampoco es aceptada:
    UPDATE Article INNER JOIN PRODUCT ON (Article.ArticleID = Product.ProductID)
    -- Join in UPDATE: NOT VALID
    SET Article.SalesPrice = Product.SalesPrice
    WHERE ProductRef IN (SELECT ORDERS.ProductRef FROM ORDERS)
  • Se pueden crear consultas de actualización directamente en el editor de consultas. Para obtener más información, consulte Crear una consulta de actualización.
  • El apóstrofo se utiliza como delimitador de cadenas en consultas SQL. Si el valor que se va a escribir debe contener un apóstrofo, este valor debe estar precedido por el carácter backslash ('\'). Por ejemplo:
    UPDATE CUSTOMER
    SET Address = 'Rue de l\'écluse'
    WHERE CustomerLastName = 'Montgomery'
  • La variable H.NbRecModificationQuery permite conocer el número de registros actualizado.
BORRAR
La instrucción DELETE permite eliminar registros en un archivo. Utiliza el siguiente formato:
DELETE FROM FileName
WHERE Conditions
Ejemplo: El siguiente código SQL elimina clientes nacidos entre 01/01/1971 y 01/01/1975:
DELETE FROM CUSTOMER
WHERE CUSTOMER.DateOfBirth BETWEEN '19710101' AND '19750101'
Observación: Se pueden crear consultas de eliminación directamente en el editor de consultas. Para obtener más información, consulte Crear una consulta de eliminación.
CREAR TABLA
La instrucción CREATE TABLE permite describir y crear una tabla. Utiliza el siguiente formato:
CREATE TABLE TableName
(
Description of item1,
Description of item2,
...
Description Index1,
Description Index2,
...
)
En esta sintaxis:
  • los parámetros "Description of item" corresponden a:
    ItemName type  [DEFAULT 'value' | DEFAULT NULL] [NOT NULL]
      [UNIQUE] [PRIMARY KEY]  [AUTO_INCREMENT] [COMMENT 'caption'] [COLLATE 'language']
    donde:
    • ItemName: nombre del campo.
    • Tipo: Tipo de campo (elegido entre los tipos disponibles que se presentan a continuación).
    • Default: define el valor predeterminado del campo.
    • NOT NULL: evita que se asigne el valor NULL al campo.
    • UNIQUE: define un campo con o sin duplicados.
    • PRIMARY KEY: define una clave primaria.
    • AUTO_INCREMENT: define un identificador automático para campos de tipo Integer.
    • comment: define el título del campo.
    • COLLATE: define el idioma para ordenar el campo (por ejemplo: 'ES_LA').
  • los parámetros "Description of index" corresponden a:
    INDEX IndexName ( itm1 [ASC | DESC] [CI] [AI] [PI], itm2 ... ) [UNIQUE]
    donde:
    • ASC y DESC: permite definir la dirección del orden.
    • CI: indica que se ignoran las mayúsculas y minúsculas.
    • AI: indica que se ignoran los acentos.
    • PI: indica que se ignora la puntuación.
Observación: Este tipo de consulta no se puede crear con el asistente del editor de consultas.

Tipos disponibles

Los tipos disponibles son:
CHARACTERCadena de caracteres
CHARACTER(Tamaño)String on size
VARCHAR(Tamaño)String on size
CHARACTER VARYING(Tamaño)String on size
CHAR VARYING(Tamaño)String on size
NVARCHAR(Tamaño)Unicode string on size
VARCHAR(Tamaño) BINARYBinary string on size
BINARY(Tamaño)Binary string on size
VARBINARY(Tamaño)Binary string on size
BLOBMemo binario
CLOBNota de texto
TEXTONota de texto
NCLOBNota de Unicode
NTEXTNota de Unicode
NUMBER(Precisión)Integro
NUMBER(Precisión, escala)Integro
DECIMAL(Precisión)Real
DECIMAL(Precisión, escala)Real
TINYINT UNSIGNEDUn entero de 1 byte sin firmar
SMALLINT UNSIGNEDUn entero de 2 bytes sin firmar
INTEGER UNSIGNEDUn entero de 4 bytes sin firmar
BIGINT UNSIGNEDUn entero de 8 bytes sin firmar
TINYINTFirmado un entero de 1 byte
SMALLINTFirmado un entero de 2 bytes
INTEGERFirmado un entero de 4 bytes
BIGINTFirmado un entero de 8 bytes
FLOAT4 bytes reales
REAL8 bytes reales
DOUBLE PRECISION8 bytes reales
MONEYMoneda
FECHAFECHA
FECHAFecha y hora
TIEMPOmomento
CONTRASEÑA SEGURAContraseña segura
CREAR TABLA COMO
La instrucción CREATE TABLE AS permite describir y crear una tabla a partir del resultado de una consulta de selección. Las columnas de la tabla tienen los nombres y tipos de datos asociados a las columnas después de la ejecución de la consulta SELECT.
Utiliza el siguiente formato:
CREATE TABLE TableName AS SelectQuery [WITH NO DATA]
En esta sintaxis:
  • ConsultaSelección es una consulta SELECT. Se ejecuta la consulta y se crea la tabla a partir del resultado de la consulta de selección.
  • La opción "WITH NO DATA" permite crear solo la estructura de la tabla (sin los datos que se encuentran en el resultado de la consulta de selección).
Atención: El índice de la tabla creada puede ser diferente del de la tabla de origen.
Observación: Este tipo de consulta no se puede crear con el asistente del editor de consultas.
DROP TABLE
La instrucción DROP TABLE elimina una tabla físicamente. Utiliza el siguiente formato:
DROP TABLE [ IF EXISTS ] name [, ...]
Observaciones:
  • IF EXISTS permite no devolver errores si la tabla no existe.
  • Este tipo de consulta no se puede crear con el asistente del editor de consultas.
ALTER TABLE
La instrucción ALTER TABLE permite cambiar la estructura de una tabla existente. Puede agregar o eliminar columnas e índices, cambiar el tipo de las columnas existentes, o incluso cambiar el nombre de las columnas o de la tabla. Utiliza el siguiente formato:
ALTER TABLE TableName Action [, Action]....
En esta sintaxis:
  • los parámetros "Action" corresponden a una de las siguientes acciones:
    ADD [COLUMN] Description of item
    ADD [COLUMN] (Description of item1 [,Description of item2]....)
    DROP [COLUMN] [IF EXISTS] ItemName
    DROP [COLUMN] [IF EXISTS] (NameItem1 [, NameItem2]...)
    ALTER [COLUMN] ItemName [SET DATA] TYPE alter_type_desc
    ALTER [COLUMN] ItemName SET DEFAULT <value>
    ALTER [COLUMN] ItemName DROP DEFAULT
    ADD [UNIQUE / PRIMARY KEY] INDEX [<IndexName>] (Description of index
    [, Description of index2], ...)
    DROP INDEX [IF EXISTS] IndexName
    DROP INDEX [IF EXISTS] (NameIndex1 [, NameIndex2]...)
    RENAME COLUMN ItemName TO New_ItemName
  • Los parámetros "Description of item" corresponden a:
    ItemName type  [DEFAULT 'value' | DEFAULT NULL] [NOT NULL] [UNIQUE] [PRIMARY KEY]
     [AUTO_INCREMENT] [COMMENT 'caption'] [COLLATE 'language']
    donde:
    • ItemName: nombre del campo.
    • Tipo: Tipo del campo (seleccionado entre los tipos mencionados anteriormente).
    • Default: define el valor predeterminado del campo.
    • NOT NULL: evita que se asigne el valor NULL al campo.
    • UNIQUE: define un campo con o sin duplicados.
    • PRIMARY KEY: define una clave primaria.
    • AUTO_INCREMENT: define un identificador automático para campos de tipo Integer.
    • comment: define el título del campo.
    • COLLATE: define el idioma para ordenar el campo (por ejemplo: 'ES_LA').
    • SECUREPASSWORD: define que un campo es de tipo "Contraseña".
  • los parámetros "Description of index" corresponden a:
    ItemName [ASC | DESC] [CI] [AI] [PI]
    donde:
    • ASC y DESC: permite definir la dirección del orden.
    • CI: indica que se ignoran las mayúsculas y minúsculas.
    • AI: indica que se ignoran los acentos.
    • PI: indica que se ignora la puntuación.
Observaciones:
  • Este tipo de consulta no se puede crear con el asistente del editor de consultas.
  • Para utilizar la tabla modificada con ALTER (sin un análisis vinculado al proyecto), utilice la función HDeclareExternal después de ejecutar la consulta ALTER TABLE.
CREATE INDEX
La instrucción CREATE INDEX (equivalente a la instrucción ALTER TABLE) se utiliza para crear índices. Esta instrucción permite agregar índices a una tabla existente. Utiliza el siguiente formato:
CREATE [UNIQUE] INDEX [IndexName] ON TableName (Description of index [, Description of index]... )
En este código, los parámetros "Description of index" corresponden a:
ItemName [ASC | DESC] [CI] [AI] [PI]
donde:
  • ASC y DESC: permite definir la dirección del orden.
  • CI: indica que se ignoran las mayúsculas y minúsculas.
  • AI: indica que se ignoran los acentos.
  • PI: indica que se ignora la puntuación.
Observación: Este tipo de consulta no se puede crear con el asistente del editor de consultas.
La instrucción CREATE INDEX se puede utilizar en una vista materializada. En este caso, el parámetro NombreTabla corresponde al nombre de una vista materializada. Si se actualiza la vista, los índices se actualizan automáticamente: no es necesario volver a crear los índices.
Ejemplo: Creación de una vista materializada y de una clave compuesta en esta vista.
-- Creating a materialized view
CREATE MATERIALIZED VIEW MyMaterializedView AS
SELECT
Customer.State, Customr.Disp, Customer.MemberType, COUNT(*) AS Qty
FROM Customer
WHERE Customer.Balance>0 AND Customer.Type=2
AND Customer.Family IN ('A', 'D', 'O')
GROUP BY Customer.State, Customer.Disp, Customer.MemberType;
--';' to be able to use another SQL statement after
--With a composite key
CREATE INDEX compkey ON MyMaterializedView (State ASC CI AI PI,
Disp ASC CI AI PI,MemberType ASC)
DROP INDEX
La instrucción DROP INDEX elimina físicamente un índice de una tabla. Utiliza el siguiente formato:
DROP INDEX  [ IF EXISTS ] NameIndex ON NameTable
donde IF EXISTS: impide que se devuelva un error si el índice no existe.
Observación: Este tipo de consulta no se puede crear con el asistente del editor de consultas.
GRANT
Las consultas de tipo GRANT permiten conceder permisos en un servidor HFSQL. Esta instrucción equivale a la constante hAllowed utilizada para conceder permisos a un elemento. Utiliza el siguiente formato:
  • Conceder los permisos solicitados en las tablas especificadas a los usuarios especificados:
    GRANT right[, right[, ... ]] ON [TABLE] table [, table [, ...]]  
    TO user [, user [, ...]]
  • Conceder los permisos solicitados en las bases de datos especificadas a los usuarios especificados.
    GRANT right[, right[, ... ]] ON DATABASE database [, database [, ...]]
    TO user [, user [, ...]]
  • Conceder los permisos solicitados en el servidor.
    GRANT right[, right[, ... ]]
    TO user [, user [, ...]]
Observación:
  • Este tipo de consulta no se puede crear con el asistente del editor de consultas.
  • Estas consultas no se pueden utilizar en una base de datos HFSQL Classic, ni en una base de datos a la que se accede mediante Conectores Nativos.
Permisos disponibles
Los permisos disponibles son:
Permiso SQLPermiso HFSQL
INSERTARhRightsInsert
BLOQUEOhRightsLock
GESTIONAR DERECHOShRightsChangeRights
PROPIETARIOhRightsChangeOwner
GESTIONAR DUPLICADOShRightsManageDuplicate
SELECCIONEhRightsRead
MANTENIMIENTOhRightsMaintenance
EDADhRightsAutoModif
ACTUALIZACIÓNhRightsUpdate
BORRARhRightsDelete
BORRAR ARCHIVOhRightsDeleteFile
REFERENCIAShRightsChangeLink
CONECTARhRightsConnection
ENCRYPTED CONNECThRightsEncryptedConnection
CREAhRightsCreateFile
DEBUGhRightsDebug
CORRE ProcedurehRightsRunProcedure
GESTIONAR REFERENCIAShRightsManageIntegrity
MANEJO DE ProcedurehRightsManageProcedure
GESTIONAR TRIGGERhRightsManageTrigger
ACCESO PROHIBIDOhRightsNoDatabaseAccess
BACKUPhRightsBackup
ELIMINAR BASE DE DATOShRightsDeleteDB
PARARhRightsStopServer
CAMBIAR CONTRASEÑAhRightsChangePassword
CREAR BASE DE DATOShRightsCreateDB
DESCONECTARhRightsDisconnectClient
ENVIAR MENSAJEhRightsSendMessageToClient
GESTIONAR TAREAShRightsManageTask
GESTIONAR SERVIDORhRightsManageServer
GESTIONAR USUARIOhRightsManageUser
REGISTRO DE LECTURAhRightsReadLogStat
PRIORIDADhRightsPriority
REPLICAhRightsServerReplication
VER USUARIOhRightsSeeUser
REVOCAR
Las consultas REVOKE permiten eliminar permisos concedidos (cambian los permisos a hInherit) en un servidor HFSQL. Utiliza el siguiente formato:
  • Establecer los permisos solicitados como heredados en las tablas especificadas para los usuarios especificados.
    REVOKE right[, right [, ... ]] ON [TABLE] table [, table [, ...]]  
    FROM user [, user [, ...]]
  • Establecer los permisos solicitados como heredados en las bases de datos especificadas para los usuarios especificados.
    REVOKE right[, right [, ... ]] ON DATABASE database [, database [, ...]]
    FROM user [, user [, ...]]
  • Establecer los permisos solicitados como heredados en el servidor.
    REVOKE right[, right [, ... ]] FROM user [, user [, ...]]
Observación
  • Este tipo de consulta no se puede crear con el asistente del editor de consultas.
  • Estas consultas no funcionan en HFSQL Classic, ni con Conectores Nativos.
Permisos disponibles: Los permisos disponibles son idénticos al comando SQL GRANT. La tabla de permisos está disponible con el comando GRANT.
CREAR VISTA
La instrucción CREATE VIEW permite crear una vista SQL. Las vistas SQL se tratan como archivos temporales en memoria. En la mayoría de los casos, una vista SQL se extrae de un archivo o de varios archivos. Una vista puede ser manipulada por un comando SELECT.
Para obtener más información sobre las vistas SQL, consulte Vista SQL.
Utiliza el siguiente formato:
CREATE VIEW View [ ( Alias 1, Alias 2, ..., Alias N) ] AS SELECTQuery
En esta sintaxis:
  • Vista es el nombre de la vista.
  • Alias 1, Alias 2, Alias N representan los nombres de alias de los campos procedentes de la consulta SELECT.
  • ConsutlaSELECT es la consulta de tipo SELECT utilizada para seleccionar los registros de la vista.
Ejemplo SQL: Creación de una vista SQL que contiene la empresa, el nombre y el teléfono de los clientes:
CREATE VIEW V_Customers
AS SELECT Company, Name, Phone FROM Customers
DROP VIEW
La función DROP VIEW permite eliminar una vista.
DROP VIEW [IF EXISTS] View 1 [, View 2, ...View N] [RESTRICT | CASCADE]
  • Si se especifica la palabra clave IF EXISTS y las vistas no existen, se genera un mensaje de error.
  • View 1, View 2, ... View N representan la lista de vistas a eliminar.
  • Si se especifica la palabra clave RESTRICT, la vista no se elimina si se está utilizando.
  • Si se especifica la palabra clave CASCADE, se elimina la vista y las vistas dependientes.
CREAR VISTA MATERIALIZADA
Una vista materializada es una vista persistente: un archivo se crea en el disco con el contenido de la vista. Esta vista puede ser manipulada posteriormente por una aplicación diferente a la que la creó.
La función CREATE MATERIALIZED VIEW permite crear una vista materializada.
CREATE MATERIALIZED VIEW View [ ( Alias 1, Alias 2, ...Alias N) ]
AS SELECT statement [WITH [ NO ] DATA]
  • La palabra clave WITH DATA crea una vista con datos.
  • La palabra clave WITH NO DATA crea una vista vacía, sin datos.
Observación
  • Este tipo de consulta no se puede crear con el asistente del editor de consultas.
  • Estas consultas no funcionan en HFSQL Classic, ni con Conectores Nativos.
DROP MATERIALIZED VIEW
La función DROP MATERIALIZED VIEW permite eliminar físicamente una vista materializada del disco.
DROP MATERIALIZED VIEW [IF EXISTS] View 1 [, View 2, ...View N] [RESTRICT | CASCADE]
  • Si se especifica la palabra clave IF EXISTS y las vistas no existen, se genera un mensaje de error.
  • View 1, View 2, ... View N representan la lista de vistas a eliminar.
  • Si se especifica la palabra clave RESTRICT, la vista no se elimina si se está utilizando.
  • Si se especifica la palabra clave CASCADE, se elimina la vista y las vistas dependientes.
REFRESCAR LA VISTA MATERIALIZADA
La función REFRESH MATERIALIZED VIEW actualiza el contenido de una vista materializada en el disco. La vista se recalcula completamente.
REFRESH MATERIALIZED VIEW View [WITH [ NO ] DATA]
  • La palabra clave WITH DATA actualiza la vista con los nuevos datos.
  • La palabra clave WITH NO DATA actualiza la vista vacía sin los datos.
OPTIMIZAR TABLA
El comando OPTIMIZE TABLE reorganiza y reindexa un archivo de datos y reconstruye los índices de este archivo. Esta operación mejora el rendimiento.
Esta función equivale a utilizar la función HIndex de WLanguage para reorganizar y reindexar un archivo de datos.
OPTIMIZE TABLE FileName
FileName representa el nombre del fichero que se va a reorganizar.
Observación:
  • Esta función está bloqueando: No se puede acceder a el archivo de datos durante la ejecución de la función. Asegúrese de que el archivo no está en uso cuando se llama a la función.
  • Esta función no puede utilizarse con Conectores Nativos.
  • Mediante Default, la operación de reindexación se realiza en función de uno de los siguientes parámetros: reindexación estándar, reindexación de texto completo, reindexación en Background, densidad del 80. Para utilizar otros parámetros, utilice HIndex.
Versión mínima requerida
  • Versión 9
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 01/04/2023

Señalar un error o enviar una sugerencia | Ayuda local