Comandos SQL-WPS Office
Comandos SQL-WPS Office
Comandos de manipulación de datos, que se utilizan para obtener, agregar, quitar y/o modificar la
información de base de datos. Específicamente, esto se refiere a los comandos SELECT, INSERT, UPDATE
y DELETE.
Comandos de definición de datos, que se utilizan para crear o eliminar objetos de estructura de la base
de datos o las bases de datos. Específicamente, se refiere a los comandos CREATE DATABASE, CREATE
TABLE, ALTER TABLE, DROP INDEX, DROP TABLE o CREATE SCHEMA.
En la sintaxis, los nombres y las palabras claves aparecen en negrita y se pasan "tal cual". Otros
elementos aparecen en cursiva y se detallan en el capítulo . Las palabras claves y/o las cláusulas que se
pasan entre corchetes [] son opcionales. El carácter barra vertical | separa las diferentes alternativas
disponibles. Cuando los elementos se pasan entre llaves (), separados por barras verticales, esto indica
que sólo un elemento del conjunto debe pasarse.
SELECT
[WHERE criterio_búsqueda]
[ORDER BY lista_orden]
[GROUP BY lista_orden]
[HAVING criterio_búsqueda]
[OFFSET ref_lenguaje_4d|número_entero]
[FOR UPDATE]
Descripción
Si pasa *, se devuelven todas las columnas, de lo contrario puede pasar uno o más argumentos de tipo
select_elemento para especificar individualmente cada columna a recuperar (separados por comas). Si
agrega la palabra clave opcional DISTINCT a la instrucción SELECT, los valores duplicados no se
devolverán.
No es posible ejecutar búsquedas que contengan a la vez "*" y campos explícitos. Por ejemplo, la
siguiente instrucción:
SELECT *, SALES, TARGET FROM OFFICES
...se permite.
La cláusula FROM se utiliza para especificar uno o más argumentos de tipo ref_tabla para la o las tabla(s)
de las cuales los datos se van a recuperar. Puede pasar un nombre SQL estándar o una cadena. No es
posible pasar una expresión de tipo búsqueda en lugar de un nombre de tabla. También puede pasar la
palabra clave opcional AS para asignar un alias a la columna. Si se pasa esta palabra clave, debe estar
seguida por el nombre del alias que también puede ser un nombre SQL o una cadena.
La cláusula opcional WHERE establece las condiciones que los datos deben cumplir para ser
seleccionados. Esto se hace pasando una condición_búsqueda que se aplica a los datos recuperados por
la cláusula FROM. La expresión condición_búsqueda siempre devuelve un valor de tipo booleano.
La cláusula opcional ORDER BY se puede utilizar para aplicar un criterio lista_orden a los datos
seleccionados. También puede agregar la palabra clave ASC o DESC para especificar si desea ordenar de
forma ascendente o descendente. Por defecto, se aplica el orden ascendente.
La cláusula opcional GROUP BY se puede utilizar para agrupar datos idénticos en función de los criterios
pasados en lista_orden. Puede pasar varias columnas de grupo. Esta cláusula se puede utilizar para
evitar redundancias o calcular una función de adición (SUM, COUNT, MIN o MAX) que se aplicarán a
estos grupos. También puede agregar la palabra clave ASC o DESC como con la cláusula ORDER BY.
La cláusula opcional HAVING se puede utilizar para aplicar un criterio_búsqueda a uno de los grupos. La
cláusula HAVING se puede pasar sin una cláusula GROUP BY.
La cláusula LIMIT opcional permite restringir el número de datos devueltos a la cantidad definida por la
variable ref_lenguaje_4d o el número_entero.
La cláusula INTO permite indicar las variables ref_lenguaje_4d a las cuales los datos se asignarán.
Un comando SELECT que especifica una cláusula FOR UPDATE intenta bloquear para escritura todos los
registros seleccionados. Si al menos un registro no puede bloquearse, todo el comando falla y se
devuelve un error. Sin embargo, si todos los registros seleccionados estaban bloqueados, entonces se
mantendrán bloqueados hasta que la transacción actual se confirme o se cancele.
Ejemplo 1
Suponga que tiene una base de datos de películas con una tabla que contiene los títulos de las películas,
el año en que fueron lanzadas y los boletos vendidos.
Nos gustaría obtener los años a partir de 1979 y la cantidad de entradas vendidas para las películas que
vendieron en total menos de 10 millones de boletas. Queremos saltarnos los primeros 5 años y mostrar
sólo 10 años, ordenados por año.
C_LONGINT($MovieYear;$MinTicketsSold;$StartYear;$EndYear)
ARRAY INTEGER(aMovieYear;0)
ARRAY LONGINT(aTicketsSold;0)
$MovieYear:=1979
$MinTicketsSold:=10000000
$StartYear:=5
$EndYear:=10
Begin SQL
SELECT Year_of_Movie, SUM(Tickets_Sold)
FROM MOVIES
GROUP BY Year_of_Movie
ORDER BY 1
LIMIT :$EndYear
OFFSET :$StartYear
End SQL
Ejemplo 2
SELECT supplier_id
FROM suppliers
Ejemplo 3
Dada la tabla VENDEDORES donde QUOTA es la cantidad de ventas esperada para un representante de
ventas y VENTAS la cantidad de ventas efectivamente realizadas.
ARRAY REAL(arrMin_Values;0)
ARRAY REAL(arrMax_Values;0)
ARRAY REAL(arrTotal_Values;0)
Begin SQL
SELECT MIN ( ( VENTAS * 100 ) / QUOTA ),
FROM VENDEDORES
End SQL
Ejemplo 4
Este ejemplo busca todos los actores que nacieron en una ciudad determinada:
ARRAY TEXT(aActorName;0)
ARRAY TEXT(aCityName;0)
Begin SQL
WHERE Act.Birth_City_ID=Cit.City_ID
ORDER BY 2 ASC
End SQL
Ver también
criterio_búsqueda
lista_orden
ref_lenguaje_4d
ref_tabla
select_elemento
sub_consulta.
INSERT
Descripción
El comando INSERT se utiliza para añadir datos a una tabla existente. La tabla en donde los datos se
añaden se pasa utilizando un argumento de tipo nom_sql o cadena_sql. Los argumentos opcionales tipo
ref_columna permiten definir las columnas en las cuales insertar los valores. Si no se pasa ref_columna,
los valores se insertarán en el mismo orden que en la base (el primer valor pasado se insertará en la
primera columna, el segundo valor en la segunda columna, y así sucesivamente).
La palabra clave VALUES se utiliza para pasar el o los valor(es) a insertar en la(s) columna(s)
especificada(s). Puede pasar una expresión_aritmética o NULL. Por otra parte, una subconsulta se puede
pasar en la palabra clave VALUES con el fin de insertar una selección de datos que se pasan como los
valores.
El número de valores pasados vía la palabra clave VALUES debe coincidir con el número de columnas
especificado por el argumento de tipo ref_columna pasado y cada uno de ellos también debe coincidir
con el tipo de datos de la columna correspondiente o al menos ser convertible a ese tipo de datos.
La palabra clave INFILE le permite utilizar el contenido de un archivo externo para especificar los valores
de un nuevo registro. Esta palabra clave sólo se debe utilizar con expresiones de tipo VARCHAR. Cuando
se pasa la palabra clave INFILE, el valor expresión_aritmética se evalúa como una ruta del archivo, y si se
encuentra el archivo, el contenido del archivo se inserta en la columna correspondiente. Sólo los campos
de tipo texto o BLOB pueden recibir valores de un INFILE. El contenido del archivo se transfiere como
datos brutos, sin interpretación.
El archivo buscado debe estar en el equipo que aloja el motor SQL, incluso si la consulta viene de un
cliente remoto. Del mismo modo, la ruta debe expresarse respetando la sintaxis del sistema operativo
del motor de SQL. Puede ser absoluta o relativa.
El comando INSERT es soportado en búsquedas mono y multilíneas. Sin embargo, una instrucción
INSERT multilíneas no permite efectuar operaciones UNION y JOIN.
El motor de 4D permite la inserción de valores multilíneas, que pueden simplificar y optimizar el código,
en particular, al introducir grandes cantidades de datos. La sintaxis de las inserciones multilíneas es del
tipo:
Ejemplo 1
Ejemplo 2
Este ejemplo crea una tabla y luego inserta los valores en ella:
(ID, Nom)
Ejemplo 3
(Campo1,Campo2,CampoBol,CampoHora,CampoInfo)
VALUES
(1,1,1,'11/01/01','11:01:01',’Primera línea’),
(2,2,0,'12/01/02','12:02:02',’Segunda línea’),
(3,3,1,'13/01/03','13:03:03',’Tercera línea’),
………
(7,7,1,'17/01/07','17:07:07',’Séptima línea’);
Ejemplo 4
(Campo1,Campo2,CampoBool,CampoFecha,CampoHora, CampoInfo)
VALUES
Ver también
DELETE
expresión_aritmética
ref_columna
sub_consulta
anteriorsiguiente
UPDATE
[WHERE criterio_búsqueda]
Descripción
El comando UPDATE permite modificar los datos contenidos en una tabla indicada por el argumento
nom_sql o cadena_sql.
La cláusula SET se utiliza para asignar nuevos valores (vía una expresión_aritmética o el valor NULL).
La cláusula opcional WHERE se utiliza para especificar cuales datos (los que cumplen la condición
criterio_búsqueda) se deben actualizar. Si no se pasa, todos los datos de la tabla se actualizarán con los
nuevos valores pasados en la cláusula SET.
El comando UPDATE es soportado para consultas y subconsultas, sin embargo, una instrucción UPDATE
posicionada no es compatible.
Las actualizaciones en cascada son implementadas en 4D, pero las reglas de supresión SET NULL y SET
DEFAULT no son soportadas.
Ejemplo
El siguiente ejemplo modifica la tabla MOVIES de manera que los boletos vendidos para la película "Air
Force One" sean 3 500 000:
UPDATE MOVIES
Ver también
criterio_búsqueda
DELETE
expresión_aritmética.
DELETE
DELETE FROM {nom_sql | cadena_sql}
[WHERE criterio_búsqueda]
Descripción
El comando DELETE se puede utilizar para suprimir todo o una parte de los datos de la tabla indicada por
el argumento nom_sql o cadena_sql después de la palabra clave FROM.
La cláusula WHERE opcional se utiliza para indicar que parte de los datos (los que cumplen la condición
criterio_búsqueda) se van a eliminar. Si no se pasa, todos los datos de la tabla serán suprimidos.
No está soportada la instrucción DELETE posicionada. Las supresiones en cascada son implementadas en
4D, pero las reglas de supresión SET DEFAULT y SET NULL no son soportadas.
Ejemplo
Este es un ejemplo que elimina todas las películas que estrenaron en el año 2000 o antes de la tabla
MOVIES:
criterio_búsqueda
INSERT
UPDATE
anteriorsiguiente
CREATE DATABASE
Descripción
El comando CREATE DATABASE le permite crear una nueva base de datos externa (archivos db .4db
y .4dd) en una ubicación específica.
Si se pasa la restricción IF NOT EXISTS, la base de datos no se crea y ningún error se genera si una base
con el mismo nombre ya existe en la ubicación especificada.
Si no se pasa la restricción IF NOT EXISTS, la base de datos no se crea y se muestra el mensaje de error
"Esta base de datos ya existe. No se pudo ejecutar el comando CREATE DATABASE." si una base de datos
con el mismo nombre ya existe en la ubicación especificada.
La cláusula DATAFILE permite especificar el nombre completo (ruta de acceso completa + nombre) de la
nueva base de datos externa. Debe pasar el nombre del archivo de estructura. El programa añadirá
automáticamente la extensión ".4db" al archivo si no está y crea el archivo de datos. La ruta puede
expresarse en sintaxis POSIX o en la sintaxis del sistema, puede ser absoluta o relativa al archivo de
estructura de la base 4D principal.
Sintaxis POSIX (tipo URL): los nombres de las carpetas están separados por una barra oblicua ("/"),
independientemente de la plataforma que utilice, por ejemplo: .../extdatabases/myDB.4db
Para una ruta absoluta, pase en la primera posición el nombre del volumen seguido de dos puntos, por
ejemplo: "C:/test/extdatabases/myDB.4db"
Sintaxis sistema: ruta de acceso respetando la sintaxis de la plataforma actual, por ejemplo:
(Windows) C:ApplicationsmyservextdatabasesmyDB.4db
Después de la ejecución exitosa del comando CREATE DATABASE, la nueva base de datos creada no se
convierte automáticamente en la base actual. Para hacer esto, debe declararla explícitamente como la
base actual con el comando USE DATABASE.
Una base externa es una base 4D independiente de la base 4D principal, pero con la que puede trabajar
desde la base 4D principal utilizando el motor SQL de 4D. Usar una base externa significa designar
temporalmente esta base como base actual, es decir, como la base de objetivo de las consultas SQL
ejecutadas por 4D. Por defecto, la base actual es la base principal.
Puede crear una base de datos externa directamente desde la base principal con el comando CREATE
DATABASE. Una vez creada, una base externa puede ser designada como la base actual con el comando
USE DATABASE. A continuación, se puede modificar a través de comandos estándar SQL (CREATE TABLE,
ALTER TABLE, etc.) y puede almacenar datos en ella. La función DATABASE_PATH permite conocer la
base de datos actual en cualquier momento.
El interés principal de las bases externas reside en el hecho de que pueden ser creadas y manipuladas
vía componentes 4D. Esto permite el desarrollo de componentes que son capaces de crear tablas y
campos de acuerdo a sus necesidades.
Nota: una base externa es una base 4D estándar. Se puede abrir y manipular como la base principal
mediante una aplicación 4D o 4D Server. Por el contrario, toda base 4D estándar se puede utilizar como
base externa. Sin embargo, es imperativo que no active el sistema de gestión de acceso (mediante la
asignación de una contraseña al Diseñador) en una base externa, de lo contrario ya no podrá tener
acceso a ella a través del comando USE DATABASE.
Ejemplo 1
Begin SQL
End SQL
Ejemplo 2
Creación de archivos de base externa TestDB.4DB y TestDB.4DD junto al archivo de estructura de la base
principal:
Begin SQL
End SQL
Ejemplo 3
Creación de los archivos de base externa External.4DB y External.4DD en la ubicación definida por el
usuario:
C_TEXT($path)
$path:=$path+"External"
Begin SQL
CREATE DATABASE DATAFILE <<$path>>;
End SQL
Ver también
DATABASE_PATH
USE DATABASE
anteriorsiguiente
USE DATABASE
USE DATABASE
[AUTO_CLOSE]
Descripción
El comando USE DATABASE se utiliza para designar una base externa como base de datos actual, en
otras palabras, la base a la cual se dirigirán las próximas consultas SQL en el proceso actual. Todos los
tipos de consultas SQL concernientes: consultas incluidas en la estructura Begin SQL/End SQL, comandos
SQL EXECUTE o EXECUTE SCRIPT, etc.
Nota: para mayor información sobre bases externas, consulte la descripción del comando CREATE
DATABASE.
Si trabaja en una configuración monopuesto, la base externa debe estar ubicada en la misma máquina
que su 4D.
Si trabaja en modo remoto, la base externa puede estar ubicada en la máquina local o en la máquina 4D
Server.
Si utiliza 4D en modo remoto, la palabra clave REMOTE permite designar una base externa ubicada en
4D Server.
Por razones de seguridad, este mecanismo sólo funciona con conexiones remotas nativas, es decir, en el
contexto de una base 4D remota conectada a 4D Server. Las conexiones vía ODBC o pass-through no
están permitidas.
Si no se especifica la palabra clave, la opción LOCAL se utiliza por defecto. Si está utilizando 4D en modo
local, las palabras claves REMOTE y LOCAL se ignoran: las conexiones son siempre locales.
Para designar una base externa a utilizar, pase su ruta completa (ruta de acceso + nombre) en la cláusula
DATAFILE. La ruta puede expresarse en la sintaxis POSIX o en la sintaxis del sistema. Puede ser absoluta
o relativa al archivo de estructura de la base 4D principal.
En modo remoto, si se pasa la palabra clave REMOTE, este parámetro designa la ruta de acceso de la
base a partir de la máquina servidor. Si se omite o si se pasa la palabra clave LOCAL, este parámetro
designa la ruta de acceso de la base en la máquina 4D local.
Importante: debe designar una base 4D externa válida y en la cual el sistema de control de acceso no
esté activado (mediante la asignación de una contraseña al Diseñador). De lo contrario, se genera un
error.
Con el fin de restablecer la base principal como la base actual, ejecute el comando al pasar la palabra
clave SQL_INTERNAL o DEFAULT.
Pase AUTO_CLOSE si desea cerrar físicamente la base externa después de su uso, es decir, cuando usted
cambia la base actual. De hecho, la apertura de una base externa es una operación que requiere un
poco de tiempo, por razones de optimización 4D mantiene en la memoria la información relativa a las
bases externas abiertas durante la sesión usuario. Esta información se mantiene en memoria hasta que
se lance la aplicación 4D. Las aperturas posteriores de la misma base externa, son por lo tanto más
rápidas. Sin embargo, esto impide el intercambio de bases externas entre varias aplicaciones 4D porque
la base de datos externa sigue estando abierta en lectura/escritura para la primera aplicación que la
utilice. Si varias aplicaciones 4D deben utilizar la misma base externa al mismo tiempo, pase la palabra
clave AUTO_CLOSE para liberar físicamente la base externa después de su uso.
Esta restricción no aplica a los procesos de la misma aplicación: diferentes procesos de una aplicación
siempre pueden acceder a la misma base externa en lectura/escritura sin que sea necesario forzar su
cierre.
Tenga en cuenta que cuando varios procesos utilizan la misma base externa, es físicamente liberada sólo
hasta que el último proceso que utiliza se cierre, incluso cuando se pasa la opción AUTO_CLOSE. Debe
tener en cuenta este funcionamiento para las operaciones que implican el intercambio entre
aplicaciones o supresión de bases externas.
Ejemplo
Uso de una base externa para una búsqueda luego regresa a la base principal:
Begin SQL
End SQL
Ver también
CREATE DATABASE
DATABASE_PATH
anteriorsiguiente
ALTER DATABASE
Descripción
El comando ALTER DATABASE activa o deshabilita las opciones SQL de la base actual para la sesión
actual. es decir par todos los usuarios y procesos hasta que la base se reinicie.
Este comando está diseñado para permitirle deshabilitar temporalmente las opciones SQL con el fin de
acelerar ciertas operaciones que consumen una gran cantidad de recursos. Por ejemplo, desactivar los
índices y las restricciones antes de comenzar la importación de una gran cantidad de datos puede
reducir significativamente la duración de la importación.
Tenga en cuenta que las restricciones incluyen las llaves primarias y las llaves foráneas, así como los
atributos de unicidad y de nulidad.
Si prefiere gestionar los triggers individualmente para cada tabla, debe utilizar ALTER TABLE.
Ejemplo
Ejemplo de una importación con desactivación temporal de todas las opciones SQL:
Begin SQL
End SQL
Begin SQL
End SQL
anteriorsiguiente
CREATE TABLE
CREATE TABLE [IF NOT EXISTS] [nom_sql.]nom_sql({definicion_columna |restriccion_tabla}[PRIMARY
KEY], ... , {definicion_columna |restriccion_tabla}[PRIMARY KEY]) [{ENABLE | DISABLE} REPLICATE]
Descripción
El comando CREATE TABLE se utiliza para crear una tabla llamada nom_sql con los campos especificados
al pasar una o más definicion_columna y/o restriccion_tabla. Si se pasa la restricción IF NOT EXISTS, la
tabla sólo se crea cuando no existe una tabla con el mismo nombre en la base. De lo contrario, no se
crea y no se genera ningún error.
El primer parámetro nom_sql (opcional) permite designar el esquema SQL al cual quiere asignar la tabla.
Si no pasa este parámetro o si pasa el nombre de un esquema que no existe, el esquema por defecto se
le asigna automáticamente, llamado "DEFAULT_SCHEMA". Para mayor información sobre los esquemas
SQL, consulte la sección Implementaciones del motor SQL de 4D.
Nota: también es posible asignar una tabla a un esquema SQL utilizando el menú pop-up "Esquemas" en
el Inspector de tablas de 4D. Este menú contiene la lista de esquemas definidos en la base.
La palabra clave PRIMARY KEY se utiliza para especificar la llave primaria cuando se crea la tabla. Para
mayor información sobre las llaves primarias, consulte la sección Implementaciones del motor SQL de
4D.
Las palabras claves ENABLE REPLICATE y DISABLE REPLICATE se utilizan para activar o desactivar el
mecanismo que permite la replicación de la tabla (ver la sección Replicación vía SQL).
Nota para despliegue
Dado que este comando modifica la estructura de la base de datos, no puede utilizarse en el contexto de
una aplicación empaquetada de sólo lectura (archivo .4dc instalado en la carpeta Archivos de programa
o archivo .4dz).
Ejemplo 1
Ejemplo 2
Este ejemplo crea la misma tabla pero sólo si no hay una tabla con el mismo nombre:
Ejemplo 3
Ver también
ALTER TABLE
definición_columna
DROP TABLE
restricción_tabla
anteriorsiguiente
ALTER TABLE
[TRAILING] |
DROP nom_sql |
ADD definición_llave_primaria |
ADD definición_llave_foránea |
Descripción
El comando ALTER TABLE se utiliza para modificar una tabla existente (nom_sql). Puede efectuar una de
las siguientes acciones:
La palabra clave TRAILING (debe ubicarse en frente de definición_columna si se utiliza) forza la creación
de la columna luego de la última columna existente de la tabla en el archivo de estructura. Esta opción
es útil cuando las columnas que contienen los datos se han eliminado de la tabla (sin que los datos sean
borrados), para evitar que los datos existentes sean reasignados a la nueva columna.
La palabra clave PRIMARY KEY se utiliza para definir la llave primaria cuando se añade una columna.
Pasar ADD definición_llave_primaria añade una llave primaria (PRIMARY KEY) a la tabla.
Pasar DROP PRIMARY KEY elimina la llave primaria (PRIMARY KEY) de la tabla.
Pasar ADD definición_llave_foránea añade una llave foránea (FOREIGN KEY) a la tabla.
Pasar DROP CONSTRAINT nom_sql elimina la restricción especificada por nom_sql de la tabla.
Pasar ENABLE REPLICATE o DISABLE REPLICATE activa o desactiva el mecanismo que permite la
replicación de la tabla (ver la sección Replicación vía SQL).
Pasar ENABLE AUTO_GENERATE o DISABLE AUTO_GENERATE activa o desactiva la opción "Auto UUID"
para los campos alfa de tipo UUID. En los dos casos, debe pasar la palabra clave MODIFY seguida del
nom_sql de la columna a modificar.
Pasar ENABLE TRIGGERS o DISABLE TRIGGERS activa o desactiva los triggers para la tabla. Si desea
gestionar los triggers globalmente a nivel de la base, debe utilizar ALTER DATABASE.
cuando el parámetro opcional ENABLE LOG se pasa y ninguna llave primaria válida se ha definido,
si intenta modificar o eliminar la definición de llave primaria de la tabla sin desactivar el historial vía
DISABLE LOG.
Dado que este comando modifica la estructura de la base de datos, no puede utilizarse en el contexto de
una aplicación empaquetada de sólo lectura (archivo .4dc instalado en la carpeta Archivos de programa
o archivo .4dz).
Ejemplo 1
Este ejemplo crea una tabla, inserta un conjunto de valores en ella, luego añade una columna Num_Tel,
inserta otro conjunto de valores y luego elimina la columna ID:
(ID, Nom)
VALUES(1, 'Francis');
DROP ID;
Ejemplo 2
Ejemplo para activar la opción "Autoincrement" del tipo campo Entero largo [Table_1]id:
Begin SQL
End SQL
Desactivando la opción:
Begin SQL
End SQL
Ejemplo para la activación de "Auto UUID" del campo tipo Alfa [Table_1]uid:
Begin SQL
End SQL
Desactivando la opción:
Begin SQL
End SQL
Ver también
CREATE TABLE
definición_columna
definición_llave_foránea
definición_llave_primaria
DROP TABLE
anteriorsiguiente
DROP TABLE
Descripción
El comando DROP TABLE se utiliza para eliminar la tabla nom_sql de una base. Cuando se pasa la
restricción IF EXISTS, si la tabla a eliminar no existe en la base, el comando no hace nada y no se genera
ningún error.
Este comando no sólo elimina la tabla de la estructura, sino también sus datos y los índices, triggers y
restricciones asociados. No se puede utilizar este comando con una tabla referenciada por una
restricción FOREIGN KEY.
Nota: debe asegurarse de que cuando se ejecute el comando DROP TABLE, no haya registros de la tabla
nom_sql que se carguen en memoria en modo de escritura. De lo contrario, se genera el error 1272.
Dado que este comando modifica la estructura de la base de datos, no puede utilizarse en el contexto de
una aplicación empaquetada de sólo lectura (archivo .4dc instalado en la carpeta Archivos de programa
o archivo .4dz).
Ejemplo 1
Ejemplo 2
Este ejemplo hace lo mismo que el anterior excepto que en este caso, si la tabla ACTOR_FANS no existe,
no se genera ningún error:
Ver también
ALTER TABLE
CREATE TABLE
anteriorsiguiente
CREATE INDEX
Descripción
El comando CREATE INDEX permite crear un índice (nom_sql) en una o más columnas de una tabla
existente (nom_sql) designada por el o los parámetros ref_columna. Los índices son transparentes para
los usuarios y permiten acelerar la ejecución de las peticiones.
Nota: el motor 4D SQL no soporta el atributo UNIQUE para índices. Se puede pasar a CREATE INDEX por
compatibilidad con scripts SQL genéricos (no se genera ningún error), pero se ignorará. Utilice la palabra
clave UNIQUE en definición_columna de CREATE TABLE para no permitir valores duplicados en una
columna.
Dado que este comando modifica la estructura de la base de datos, no puede utilizarse en el contexto de
una aplicación empaquetada de sólo lectura (archivo .4dc instalado en la carpeta Archivos de programa
o archivo .4dz).
Ejemplo
Ver también
DROP INDEX
ref_columna
.DROP INDEX
Descripción
El comando DROP INDEX permite eliminar de la base el índice existente designado por nom_sql. No
puede utilizarse con los índices creados por las restricciones PRIMARY KEY o UNIQUE.
Ejemplo
Ver también
CREATE INDEX
LOCK TABLE
Descripción
El comando LOCK TABLE permite bloquear la tabla nom_sql en el modo EXCLUSIVE o SHARE.
En el modo EXCLUSIVE, los datos de la tabla no pueden leerse o modificarse por otra transacción.
En el modo SHARE, los datos de la tabla pueden ser leídos por otras transacciones pero las
modificaciones siguen siendo prohibidas.
Ejemplo
Este ejemplo bloquea la tabla MOVIES de manera que pueda ser leída pero no modificada por otras
transacciones:
LOCK TABLE MOVIES IN SHARE MODE
UNLOCK TABLE
Descripción
El comando UNLOCK TABLE se utiliza para desbloquear la tabla nom_sql previamente bloqueada vía el
comando LOCK TABLE. Este comando no funciona si se pasa dentro de una transacción o si se utiliza en
una tabla que bloqueada por otro proceso.
Ejemplo
EXECUTE IMMEDIATE
EXECUTE IMMEDIATE <<nom_sql>> | <<$nom_sql>> | :nom_sql | :$nom_sql
Descripción
El comando EXECUTE IMMEDIATE permite ejecutar una expresión SQL dinámica. El argumento nom_sql
representa una variable que contiene un conjunto de instrucciones SQL que se ejecutarán como un
todo.
Notas:
Este comando no puede utilizarse en una conexión SQL externa (pass-through) iniciada vía el comando
4D SQL LOGIN.
En modo compilado, no es posible utilizar las variables 4D locales (que comienzan por el carácter $) en la
cadena de búsqueda pasada al comando EXECUTE IMMEDIATE.
Ejemplo
C_LONGINT(NumMovies)
C_TEXT(tQueryTxt)
NumMovies:=0
tQueryTxt:="SELECT COUNT(*) FROM MOVIES WHERE Year_of_Movie >= 1960 INTO :NumMovies;"
Begin SQL
CREATE SCHEMA
Descripción
El comando CREATE SCHEMA permite crear un nuevo esquema SQL llamado nom_sql en la base de
datos. Puede utilizar todo nom_sql excepto por "DEFAULT_SCHEMA" y "SYSTEM_SCHEMA".
Cuando se crea un nuevo esquema, por defecto los derechos de acceso asociados son los siguientes:
Lectura/Escritura (Datos):<Todos>
Cada esquema puede atribuirse un tipo de derechos de acceso externos utilizando el comando GRANT.
Cuando una base de datos se crea o se convierte con 4D v11 SQL (desde la versión 3), se crea un
esquema por defecto con el fin de agrupar todas las tablas de la base. Este esquema se llama
"DEFAULT_SCHEMA". No puede borrarse ni renombrarse.
Ejemplo
ALTER SCHEMA
Descripción
El comando ALTER SCHEMA permite renombrar el esquema SQL nom_sql (primer parámetro) por
nom_sql (segundo parámetro).
Ejemplo
Ver también
CREATE SCHEMA
CREATE VIEW
Descripción
El comando CREATE VIEW permite crear una vista SQL llamada nom_vista (que es un nom_sql estándar)
que contiene las columnas definidas en el parámetro lista_columnas. Es necesario especificar un
nombre de columna si esta columna es una función o se deriva de una operación aritmética (escalar).
También es necesario especificar un nombre de columna cuando se quiere evitar tener distintas
columnas con el mismo nombre (por ejemplo, durante una operación JOIN) o cuando desea utilizar un
nombre de columna diferente del que se deriva.
Si pasa la opción OR REPLACE, la vista se recreará automáticamente si ya existe. Esta opción puede ser
útil con el fin de cambiar la definición de una vista existente sin tener que borrar/crear/afectar los
privilegios
nom_schema es también un nom_sql estándar y puede utilizarlo para designar el nombre del esquema
que contendrá la vista. Si no pasa nom_schema o si pasa el nombre de un esquema que no existe, la
vista
No puede utilizar las cláusulas INTO, LIMIT u OFFSET ya que la limitación, definición o asignación de
variables en 4D será realizada por SELECT que llama a la vista.
Una definición de vista es "estática" y no se actualiza si las tablas fuentes se modifican o eliminan. En
particular, las columnas añadidas a una tabla no aparecen en la vista basada en esta tabla. Del mismo
modo, si trata de acceder por medio de una vista a las columnas eliminadas, se produce un error.
Sin embargo, una vista que refiera a una vista fuente eliminada seguirá funcionando. De hecho, cuando
se crea una vista, convierte cualquier referencia de vistas en referencias a las tablas fuente.
Las vistas tienen un alcance global. Una vez que se crea una vista con CREATE VIEW, es accesible para
todas las partes de la aplicación (4D remoto vía SQL, bases externas creadas con el comando CREATE
DATABASE, otras bases utilizan el comando SQL LOGIN, etc.) y durante la sesión, hasta que se borra
utilizando el comando DROP VIEW o se cierre la base.
Ejemplo
Aquí presentamos algunos ejemplos de definiciones de vista basados en la tabla PEOPLE que contiene
las siguientes columnas:
ID INT64
NOMBRE VARCHAR(30)
APELLIDO VARCHAR(30)
DEPARTAMENTO VARCHAR(30)
SALARIO INT
Una vista sin restricciones: "horizontales". Por example, usted quiere mostrar únicamente las personas
que trabajan en el departamento de Mercadeo:
CREATE VIEW HORIZONTALVIEW (ID, Nombre, Apellido, Salario) AS
Una vista con restricciones "verticales". Por ejemplo, usted no quiere mostrar la columna SALARY:
Una vez definidas las vista, puede utilizarlas como tablas estándar. Por ejemplo, si quiere obtener todas
las personas cuyo salario es mayor a 5,000 Euros:
Otro ejemplo: usted quiere obtener todas las personas del departamento de Mercadeo cuyo nombre es
"Miguel":
WHERE Nombre='Miguel'
Descripción
Cuando se pasa la restricción IF EXISTS, el comando no hace nada y no se genera ningún error si la vista
nom_vista no existe en la base.
nom_esquema es un nom_sql estándar y se puede utilizar para designar el nombre del esquema que va
a contener la vista. Si no pasa nom_esquema o si pasa un nombre de esquema que no existe, la vista se
considera automáticamente como que pertenece al esquema por defecto, llamado
"DEFAULT_SCHEMA".
GRANT
GRANT[READ | READ_WRITE | ALL] ON sql_name TO sql_name
Descripción
El comando GRANT permite definir los derechos de acceso asociados al esquema nom_sql (primer
parámetro). Estos derechos se asignarán al grupo de usuarios 4D designados por el segundo parámetro
nom_sql.
Las palabras claves READ, READ_WRITE y ALL permiten definir los tipos de acceso autorizados para la
tabla:
READ establece el modo de acceso de sólo lectura (datos). Por defecto: <Everybody>
ALL establece el modo de acceso completo (datos y estructura). Por defecto: <Nobody>
Note que cada tipo de acceso está definido independientemente de los otros. En particular, si asigna
sólo los derechos READ a un grupo, esto no tendrá ningún efecto ya que el grupo como también los
otros continuarán beneficiándose del acceso READ_WRITE (asignado a todos los grupos por defecto).
Para definir el acceso READ, debe llamar dos veces el comando GRANT (ver ejemplo 2).
El control de acceso solo aplica a las conexiones externas. El código SQL ejecutado al interior de 4D vía
las etiquetas Begin SQL/End SQL o los comandos tales como SQL EXECUTE tiene acceso total.
Nota de compatibilidad: durante la conversión de una base anterior a la versión 11.3 o superior, los
derechos de acceso globales (tales como los definidos en la página SQL de las Preferencias de la
aplicación) se transfieren al esquema por defecto.
El segundo parámetro nom_sql debe contener el nombre del grupo de usuarios 4D al que desea asignar
derechos de acceso al esquema. Este grupo debe existir en la base 4D.
Nota: 4D permite definir los nombres de grupos incluyendo espacios y/o caracteres acentuados que no
son aceptados por el estándar SQL. En este caso, debe poner el nombre entre los caracteres [ y ]. Por
ejemplo: GRANT READ ON [mi esquema] TO [los administradores]
Atención: la implementación del esquema SQL requiere que el sistema de administración de acceso de
4D esté activado (en otras palabras, se haya asignado una contraseña al Diseñador). De lo contrario,
todos los usuarios pueden tener acceso a los datos sin restricciones.
Ejemplo 1
Usted quiere autorizar el acceso en lectura escritura de datos del esquema MiEsquema1 al grupo
"Power_Users":
Ejemplo 2
Usted quiere autorizar un acceso en lectura únicamente al grupo "Readers". Este caso requiere asignar
al menos un grupo con derechos READ_WRITE (aquí "Admins") de manera que ya no se asigna a todos
los grupos por defecto:
Descripción
El comando REVOKE permite borrar los derechos de acceso específicos asociados al esquema definido
por el parámetro nom_sql.
Cuando ejecuta este comando, asigna el pseudo-grupo de usuarios <Persona> al derecho de acceso
definido.
Ejemplo
REPLICATE lista_replicada
FROM ref_tabla
[WHERE criterio_búsqueda]
Descripción
El comando REPLICATE permite replicar los datos de una tabla de una base A en la de una tabla de una
base B. Por convención, la base donde se ejecuta el comando se llama "base local" y la base de la cual
los datos se replican se llama "base remota".
Este comando sólo puede utilizarse en el marco de un sistema de replicación de base. Para que el
sistema funcione, la replicación debe haber sido activada en la base local y en la base remota y cada
tabla implicada deberá tener una llave primaria. Para mayor información sobre este sistema, consulte la
sección Replicación vía SQL.
Nota: si desea implementar un sistema de sincronización completo, consulte la descripción del comando
SYNCHRONIZE.
Pase una lista de campos (virtuales o estándar), separados por comas en lista_replicada. Los campos
deben pertenecer a la tabla ref_tabla de la base remota.
La cláusula FROM debe ir seguida de un argumento del tipo ref_tabla que permite designar la tabla de la
base remota desde la cual replicar los datos de los campos lista_replicada.
Nota: los campos virtuales de la tabla remota sólo se pueden almacenar en los arrays de la base local.
La cláusula opcional WHERE permite aplicar un filtro preliminar a los registros de la tabla en la base de
datos remota; sólo aquellos registros que cumplan los criterios_de_búsqueda serán tenidos en cuenta
por el comando.
4D recupera los valores de los campos lista_replicada para todos los registros designados por la cláusula
FOR REMOTE STAMP. El valor pasado en esta cláusula puede ser:
Un valor de tipo entero largo > 0: en este caso, se recuperan los registros donde el valor de
__ROW_STAMP es mayor o igual a este valor.
0: en este caso, se recuperan todos los registros donde el valor de __ROW_STAMP es diferente de 0.
Tenga en cuenta que los registros que existían antes de la activación de la replicación, no serán tenidos
en cuenta (el valor de __ROW_STAMP = 0).
-1: en este caso, todos los registros de la tabla remota se recuperan, es decir, todos los registros donde
el valor de __ROW_STAMP >= 0. A diferencia del caso anterior, se tendrán en cuenta todos los registros
de la tabla, incluidos los que existían antes de la activación de la replicación.
-2: En este caso, se recuperan todos los registros borrados de la tabla remota (después de la activación
de la replicación), es decir, todos los registros donde el valor de __ROW_ACTION = 2.
Por último, puede aplicar a la selección obtenida las cláusulas opcionales OFFSET y/o LIMIT:
Cuando se pasa, la cláusula OFFSET permite ignorar los primeros X registros de la selección (donde X es
el valor pasado a la cláusula).
Cuando se pasa, la cláusula LIMIT permite restringir la selección a los Y primeros registros de la selección
(donde Y es el valor pasado a la cláusula). Si la cláusula OFFSET también se pasa, la cláusula LIMIT se
aplica a la selección obtenida tras la ejecución de OFFSET.
Una vez aplicadas ambas cláusulas, la selección resultante se envía a la base local.
Los valores recuperados se escriben directamente la lista_objetivo de la base local o en los campos
estándar especificados por nom_sql de la tabla ref_tabla de la base local.
El argumento lista_objetivo puede contener una lista de campos estándar o una lista de arrays del
mismo tipo que los campos remotos (pero no una combinación de ambos). Si el destino del comando es
una lista de campos, los registros objetivos serán creados, modificados o eliminados automáticamente
en función de la acción almacenada en el campo virtual __ROW_ACTION.
Los conflictos para los registros duplicados que ya existen en la base objetivo (llaves primarias idénticas)
se resuelven utilizando las cláusulas de prioridad (opción REMOTE OVER LOCAL y LOCAL OVER REMOTE):
Si pasa la opción REMOTE OVER LOCAL u omite la cláusula de prioridad, todos los registros fuente (base
remota) designados por la cláusula FOR REMOTE STAMP reemplazan los registros objetivo (base local) si
ya existen, cambiados o no de un lado o del otro. En este caso, no tiene sentido pasar una cláusula
LOCAL STAMP porque se ignorará.
Si pasa la opción LOCAL OVER REMOTE, el comando tiene en cuenta el marcador local LOCAL STAMP. En
este caso, los registros objetivo (base local) cuyo valor de marcador es inferior o igual al pasado en
LOCAL STAMP no son remplazados por los registros fuente (base remota). Por ejemplo, si pasa 100 en
LOCAL STAMP, todos los registros de la base local cuyo marcador sea menor o igual a 100 serán
remplazados por los registros equivalentes de la base remota. Este principio permite preservar los datos
modificados localmente y reducir la selección de los registros a replicar en la tabla local.
Si pasa las cláusulas LATEST REMOTE STAMP y/o LATEST LOCAL STAMP, 4D devuelve en las variables
ref_lenguaje_4D correspondientes los valores de los últimos marcadores de las tablas local y remota.
Esta información puede ser útil si desea personalizar la gestión del procedimiento de sincronización.
Estos valores corresponden al valor de los marcadores inmediatamente después de terminada la
operación de replicación: si los utiliza en una instrucción REPLICATE o SYNCHRONIZE, no es necesario
incrementarlos porque son incrementados automáticamente antes de ser devueltos por el comando
REPLICATE.
Nota: las operaciones efectuadas por el comando REPLICATE no tienen en cuenta las restricciones de
integridad de datos. Esto significa, por ejemplo, que las reglas que rigen las llaves foráneas, unicidad,
etc. no son verificadas. Si los datos recibidos pueden afectar la integridad de los datos, debe comprobar
los datos después de la operación de replicación. La manera más simple es bloquear, vía el lenguaje 4D
o SQL, los registros que se tienen que modificar.
Ver también
SYNCHRONIZE
SYNCHRONIZE
WITH
Descripción
El comando SYNCHRONIZE permite sincronizar dos tablas ubicadas en dos servidores 4D SQL diferentes.
Todo cambio realizado en una de las tablas también se efectúa en el otro. El servidor 4D SQL que ejecuta
el comando se llama servidor local y el otro servidor se llama servidor remoto.
La opción "Activar replicación" debe estar seleccionada en la ventana Inspector de cada tabla.
El comando SYNCHRONIZE acepta cuatro marcadores (stamps) como "parámetros": dos marcadores en
entrada y dos marcadores en salida (última modificación). Los marcadores de entrada se utilizan para
indicar el momento de la última sincronización en cada servidor. Los marcadores de salida devuelven el
valor de los marcadores de modificación en cada servidor justo después de la última modificación.
Gracias a este principio, cuando el comando SYNCHRONIZE se llama regularmente, es posible usar los
marcadores de salida de la última sincronización como marcadores de entrada para la siguiente.
Nota: los marcadores de entrada y de salida se expresan como valores numéricos (stamps) y no de
marcadores de tiempo (timestamps). Para obtener más información sobre estos marcadores, consulte la
descripción del comando REPLICATE.
En caso de error, el marcador de salida del servidor en cuestión contiene el marcador del registro al
origen del error. Si el error se debe a una causa distinta a la sincronización (problemas de red por
ejemplo), el marcador contendrá 0.
Hay dos códigos de error diferentes, uno para indicar un error de sincronización en el sitio local y otro
para un error de sincronización en el sitio remoto.
Cuando ocurre un error, el estado de los datos dependerá de la de la transacción en el servidor local. En
el servidor remoto, la sincronización se realiza siempre dentro de una transacción, de manera que los
datos no puedan ser alterados por la operación. Sin embargo, en el servidor local, el proceso de
sincronización queda bajo el control del desarrollador. Se efectúa fuera de cualquier transacción si la
preferencia Transacciones Auto-commit no está activada, (de lo contrario, un contexto de transacción se
crea automáticamente). El desarrollador puede optar por iniciar una transacción y es responsabilidad
del desarrollador validar o cancelar esta transacción después de la sincronización de los datos.
Puede "forzar" la dirección de sincronización utilizando las cláusulas REMOTE OVER LOCAL y LOCAL
OVER REMOTE, dependiendo de las características de su aplicación. Para mayor información sobre los
mecanismos de implementación, consulte la descripción del comando REPLICATE.
Nota: las operaciones efectuadas por el comando SYNCHRONIZE no tienen en cuenta restricciones de
integridad de los datos. Esto significa, por ejemplo, que las reglas que rigen las llaves foráneas, unicidad,
etc. no son verificadas. Si los datos recibidos pueden afectar la integridad de datos, debe verificar los
datos después de la operación de sincronización. La manera más simple es bloquear, vía el lenguaje 4D o
SQL, los registros que deben modificarse.
En las variables 4d_language_ref de las cláusulas LATEST REMOTE STAMP y LATEST LOCAL STAMP, 4D
devuelve los valores de los últimos marcadores de las tablas remota y local. Esta información le permite
automatizar la gestión del procedimiento de sincronización. Estos valores corresponden al valor de los
marcadores hasta el final de la operación de replicación: si los utiliza en una instrucción REPLICATE o
SYNCHRONIZE posterior, no necesita incrementarlos; se incrementan automáticamente antes de ser
devueltos por el comando REPLICATE.
Ejemplo
Para entender los mecanismos involucrados en la operación de sincronización, vamos a examinar las
diferentes posibilidades relativas a la actualización de un registro existente en las dos bases
sincronizadas.
C_LONGINT(vRemoteStamp)
C_LONGINT(vLocalStamp)
C_LONGINT(vLatestRemoteStamp)
C_LONGINT(vLatestLocalStamp)
Begin SQL
SYNCHRONIZE
WITH
End SQL
El marcador del registro en la base LOCAL tiene un valor de 30 y el de la base REMOTA tiene un valor de
4000
LOCAL REMOTE
Utilizamos los valores devueltos por las cláusulas anteriores LATEST LOCAL STAMP y LATEST REMOTE
STAMP para sincronizar únicamente los valores que fueron modificados desde la última sincronización.
Estas son las sincronizaciones efectuadas por el comando SYNCHRONIZE en función de los valores
pasados en los parámetros LOCAL STAMP y REMOTE STAMP como también la opción de prioridad
utilizada: ROL (para REMOTE OVER LOCAL) o LOR (para LOCAL OVER REMOTE):
LOCAL STAMP REMOTE STAMP Prioridad LOCAL después de sinc REMOTA después de
sinc Sincronización LOCAL - REMOTA
Es un lenguaje de programación para definir estructuras de datos, proporcionado por los sistemas
gestores de bases de datos, en este caso PostgreSQL. En inglés, Data Definition Language, de ahí sus
siglas DDL. Te recuerdo que si necesitas un amplio conocimiento en DDL deberías ver nuestro Curso de
Sentencias DDL, DML, DCL y TCL. Si estás empezando y quieres conocer Postgre, quizás te interese
nuestro Curso de introducción a PostgreSQL.
¿Quieres ser un profesional trabajando como Administrador de Bases PostgreSQL? ¿Ampliar tus
conocimientos? Mira nuestro listado de Carreras para PostgreSQL.
Este lenguaje permite a los programadores de un sistema gestor de base de datos, como Postgres,
definir las estructuras que almacenarán los datos así como los procedimientos o funciones que permitan
consultarlos.
ALTER, se utiliza para modificar la estructura, por ejemplo añadir o borrar columnas de una tabla.
DROP, con esta sentencia, podemos eliminar los objetos de la estructura, por ejemplo un índice o una
secuencia.
También es un lenguaje proporcionado por los sistemas gestores de bases de datos. En inglés, Data
Manipulation Language (DML).
Utilizando instrucciones de SQL, permite a los usuarios introducir datos para posteriormente realizar
tareas de consultas o modificación de los datos que contienen las Bases de Datos.
Los elementos que se utilizan para manipular los datos, son los siguientes:
SELECT, esta sentencia se utiliza para realizar consultas sobre los datos.
INSERT, con esta instrucción podemos insertar los valores en una base de datos.
Todos estos lenguajes forman parte del lenguaje SQL en general. Es decir, no son aplicables únicamente
a PostgreSQL sino a todos los gestores de bases de datos relacionales tales como Oracle SQL, MySQL o
SQL Server. Si quieres aprender más sobre ello, empieza ya y apúntate a nuestra academia de
PostgreSQL donde tienes todo el contenido en español.
Si quieres convertirte en DBA de PostgreSQL mira nuestros cursos de PostgreSQL: DBA & Developers
Es un lenguaje que incluye una serie de comandos SQL. Como los anteriores, es proporcionado por los
sistemas gestores de bases de datos. Sus siglas son DCL por su nombre en inglés, Data Control Language.
Estos comandos permiten al Administrador del sistema gestor de base de datos, controlar el acceso a los
objetos, es decir, podemos otorgar o denegar permisos a uno o más roles para realizar determinadas
tareas.
En nuestro curso de SQL Developer te explicamos personalmente estos comandos, su uso y algunos
trucos de cuando, cómo y por qué se deben de utilizar.
Sentencias prácticas
Cómo habéis visto en el video, las diferencias entre DDL, DML y DCL radican en los diferentes usos que
hacemos de cada lenguaje. Si quieres ampliar la información sobre una de las sentencias más utilizadas
en el mundo SQL, aquí tienes acceso a una entrada en la que vemos cómo podemos hacer uso de la
instrucción INSERT.
¡Muchísimas gracias, y hasta la próxima!
Empieza ahora apuntándote a nuestra academia online de PostgreSQL y no dejes escapar la oportunidad
en convertirte en un DBA de PostgreSQL gracias a todos los cursos que tienes dentro de tu suscripción.
Mtro. Fernando Omar Arciniega Martínez Mtro. Fernando Omar Arciniega Martínez
hace 7 años
En el lenguaje de bases de datos, las sentencias DDL, DML, DCL y TCL son cuatro tipos diferentes de
comandos que se utilizan para realizar diferentes operaciones en una base de datos.
SQL se divide en 4 categorías para manipular los datos dentro de una Base de Datos, las cuales son:
Data Definition Language ( DDL ) – Lenguaje de Definición de Datos ( LDD )
ddl
Es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios de
la misma llevar a cabo las tareas de definición de las estructuras que almacenarán los datos así como de
los procedimientos o funciones que permitan consultarlos.
TRUNCATE – ELIMINAR TODOS LOS REGISTROS DE UNA TABLA , INCLUYENDO TODOS LOS ESPACIOS
ASIGNADOS A LOS REGISTROS SE ELIMINAN
Se utilizan para la gestión de datos dentro de los objetos del esquema de la base de datos.
Es un idioma proporcionado por los sistemas gestores de bases de datos que permite a los usuarios de la
misma llevar a cabo las tareas de consulta o modificación de los datos contenidos en las Bases de Datos
del Sistema Gestor de Bases de Datos. El lenguaje de manipulación de datos más popular hoy día es SQL,
usado para recuperar y manipular datos en una base de datos relacional.
GRANT: Permite dar permisos a uno o varios usuarios o roles para realizar tareas determinadas.
REVOKE: Permite eliminar permisos que previamente se han concedido con GRANT.
Las tareas sobre las que se pueden conceder o denegar permisos son las siguientes:
CONNECT
SELECT
INSERT
UPDATE
DELETE
USAGE
Una transacción es una unidad lógica de trabajo que comprende una o más sentencias SQL, por lo
general un grupo de Data Manipulation Language (DML).
SAVEPOINT – IDENTIFICA UN PUNTO EN UNA TRANSACCIÓN A LA QUE MÁS TARDE SEVPUEDE VOLVER.
SET TRANSACTION – CAMBIA LAS OPCIONES DE TRANSACCIÓN COMO NIVEL DE AISLAMIENTO Y QUÉ
SEGMENTO DE CANCELACIÓN UTILIZA.
En conclusión, las sentencias DDL, DML, DCL y TCL son cuatro tipos diferentes de comandos que se
utilizan en el lenguaje de bases de datos para realizar diferentes operaciones en una base de datos. Es
importante tener en cuenta la función de cada uno de ellos y utilizarlos adecuadamente para garantizar
el correcto funcionamiento de la base de datos.
Referencias:
Deja un comentario
Volver arriba