Guia7 Base de Datos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 18

REPÚBLICA BOLIVARIANA DE VENEZUELA

INSTITUTO UNIVERSITARIO DE TECNOLOGÍA


“ANTONIO JOSÉ DE SUCRE”
ESCUELA DE INFORMÁTICA
BASE DE DATOS I

GUÍA 7 LENGUAJES DE BASE DE DATOS


Lenguaje de Definición de Datos (DDL)
El lenguaje de definición de datos (DDL) es un subconjunto de SQL. Es un
lenguaje para describir los datos y sus relaciones en una base de datos.
Puede generar DDL en un script de objetos de base de datos para:

 Mantener una instantánea de la estructura de base de datos


 Configurar un sistema de prueba donde la base de datos actúe como el
sistema de producción, pero sin contener datos
 Producir plantillas para los nuevos objetos que puede crear basándose en
los existentes. Por ejemplo, genere el DDL para la tabla Customer y, a
continuación, edite el DDL para crear la tabla Customer_New con el
mismo esquema.

Cuando genera DDL, puede utilizar las sentencias DDL para recrear todo
sobre una base de datos, excepto su contenido. Puede generar el DDL para
recrear completamente la base de datos, o elegir recrear determinados aspectos
de la misma como, por ejemplo, sus estadísticas actuales. También puede limitar
las sentencias que se generan, de forma que sólo se recrea un segmento de la
base de datos, por ejemplo, las estadísticas de un subconjunto de tablas.

Lenguaje de Manipulación de Datos (DML)


Lenguaje de manipulación de datos (DML) es el conjunto de instrucciones
de Cassandra Query Language (CQL) que se utiliza para administrar estructuras
de datos en las tablas de Amazon Keyspaces (para Apache Cassandra). Puede
usar instrucciones DML para agregar, modificar o eliminar datos de una tabla.
También puede usar instrucciones DML para consultar datos en una tabla.
(Tenga en cuenta que CQL no admite uniones ni subconsultas).

SELECT

Utilice una instrucción SELECT para consultar datos.

Sintaxis
select_statement ::= SELECT [ JSON ] ( select_clause | '*' )
FROM table_name
[ WHERE 'where_clause' ]
[ ORDER BY 'ordering_clause' ]
[ LIMIT (integer | bind_marker) ]
[ ALLOW FILTERING ]
select_clause ::= selector [ AS identifier ] ( ',' selector [ AS identifier ] )
selector ::= column_name
| term
| CAST '(' selector AS cql_type ')'
| function_name '(' [ selector ( ',' selector )* ] ')'

where_clause ::= relation ( AND relation )*

relation ::= column_name operator term

TOKEN

operator ::= '=' | '<' | '>' | '<=' | '>=' | IN |


CONTAINS | CONTAINS KEY

ordering_clause ::= column_name [ ASC | DESC ] ( ',' column_name


[ ASC | DESC ] )*

Ejemplos

SELECT name, id, manager_id FROM "myGSGKeyspace".employees_tbl ;

SELECT JSON name, id, manager_id FROM "myGSGKeyspace".employees_tbl ;

Acerca de una tabla que asigne los tipos de datos codificados en JSON a los tipos
de datos de Amazon Keyspaces,

Uso de la palabra clave IN

La palabra clave IN especifica la igualdad de uno o más valores. Se puede aplicar


a la clave de partición y a la columna de agrupación. Los resultados se devuelven
en el orden en que se presentan las claves en la instrucción SELECT.
Ejemplos

SELECT * from mykeyspace.mytable WHERE primary.key1 IN (1,2) and


clustering.key1 = 2;

SELECT * from mykeyspace.mytable WHERE primary.key1 IN (1,2) and


clustering.key1 <= 2;

SELECT * from mykeyspace.mytable WHERE primary.key1 = 1 and


clustering.key1 IN (1, 2);

SELECT * from mykeyspace.mytable WHERE primary.key1 <= 2 and


clustering.key1 IN (1, 2) ALLOW FILTERING;

Ordenación de los resultados

La cláusula ORDER BY especifica el orden de clasificación de los resultados


devueltos. Toma como argumentos una lista de nombres de columnas junto con el
orden de clasificación de cada columna. Solo puede especificar columnas de
agrupación en las cláusulas de ordenación. Las columnas no agrupadas no están
permitidas. Las opciones de ordenación son ASC para ordenación ascendente
y DESC para ordenación descendente. Si se omite el orden de clasificación, se
utiliza el orden predeterminado de la columna de agrupación.

Ejemplo

SELECT name, id, division, manager_id FROM


"myGSGKeyspace".employees_tbl WHERE id = '012-34-5678' ORDER BY
division;

Al utilizar ORDER BY con la palabra clave IN, los resultados se ordenan dentro de una
página. No se admite la reordenación completa con la paginación deshabilitada.

TOKEN

Puede aplicar la función TOKEN a la columna PARTITION KEY en las


cláusulas SELECT y WHERE. Con la función TOKEN, Amazon Keyspaces
devuelve filas basadas en el valor del token asignado de la PARTITION_KEY en
lugar de en el valor de la PARTITION KEY.

Las relaciones TOKEN no se admiten con la palabra clave IN.

Ejemplos

SELECT TOKEN(id) from my_table;


SELECT TOKEN(id) from my_table WHERE TOKEN(id) > 100 and TOKEN(id)
< 10000;

Función TTL

Puede utilizar la función TTL con la instrucción SELECT para recuperar el tiempo de
caducidad en segundos que se almacena para una columna. Si no se establece
ningún valor TTL, la función devuelve null.

Ejemplo

SELECT TTL(my_column) from my_table;

La función TTL no se puede utilizar en columnas multicelda, como las colecciones.

Función de WRITETIME

Puede utilizar la función WRITETIME con la instrucción SELECT para recuperar


la marca de tiempo que se almacena como metadatos para el valor de una
columna solo si la tabla utiliza marcas de tiempo en el lado del cliente.

SELECT WRITETIME(my_column) from my_table;

La función WRITETIME no se puede utilizar en columnas multicelda, como


las colecciones.

Por compatibilidad con el comportamiento establecido de los controladores


Cassandra, las políticas de autorización basadas en etiquetas no se aplican
cuando se realizan operaciones en tablas del sistema mediante llamadas a la API
de Cassandra Query Language (CQL) a través de los controladores y las
herramientas para desarrolladores de Cassandra..
INSERT

Utilice la instrucción INSERT para añadir una fila a una tabla.

Sintaxis

insert_statement ::= INSERT INTO table_name ( names_values |


json_clause ) [ IF NOT EXISTS ]
[ USING update_parameter ( AND update_parameter )* ]
names_values ::= names VALUES tuple_literal
json_clause ::= JSON string [ DEFAULT ( NULL | UNSET ) ]
names ::= '(' column_name ( ',' column_name )* ')'

Ejemplo

INSERT INTO "myGSGKeyspace".employees_tbl (id, name, project,


region, division, role, pay_scale, vacation_hrs, manager_id)

VALUES ('012-34-
5678','Russ','NightFlight','US','Engineering','IC',3,12.5,'234-56-
7890') ;

Actualización de parámetros

INSERT admite los siguientes valores como update_parameter:

TTL: un valor de tiempo en segundos. El valor máximo configurable es de


630 720 000 segundos, lo que equivale a 20 años.
TIMESTAMP: un valor bigint que representa el número de microsegundos
desde la hora base estándar conocida como epoch: 1 de enero de 1970 a las
00:00:00 GMT. Una marca de tiempo en Amazon Keyspaces debe estar
comprendida entre 2 días en el pasado y 5 minutos en el futuro.

Ejemplo

INSERT INTO my_table (userid, time, subject, body, user)

VALUES (B79CB3BA-745E-5D9A-8903-4A02327A7E09, 96a29100-5e25-11ec-


90d7-b5d91eceda0a, 'Message', 'Hello','205.212.123.123')
USING TTL 259200;

Compatibilidad con JSON

Puede utilizar la palabra clave JSON para insertar un mapa codificado


con JSON como una única fila. Para las columnas que existan en la tabla pero que
se omitan en la instrucción de inserción JSON, utilice DEFAULT UNSET para conservar
los valores existentes. Utilice DEFAULT NULL para escribir un valor NULL en cada fila
de columnas omitidas y sobrescribir los valores existentes (se aplican los cargos
de escritura estándar). DEFAULT NULL es la opción predeterminada.

Ejemplo

INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-


5678",
"name": "Russ",
"project":
"NightFlight",
"region": "US",
"division":
"Engineering",
"role": "IC",
"pay_scale": 3,
"vacation_hrs":
12.5,
"manager_id":
"234-56-7890"}';

Si los datos JSON contienen claves duplicadas, Amazon Keyspaces


almacena el último valor de la clave (de forma similar a Apache Cassandra). En el
siguiente ejemplo, en el que la clave duplicada es id, se utiliza el valor 234-56-
7890.

Ejemplo
INSERT INTO "myGSGKeyspace".employees_tbl JSON '{"id":"012-34-
5678",
"name": "Russ",
"project":
"NightFlight",
"region": "US",
"division":
"Engineering",
"role": "IC",
"pay_scale": 3,
"vacation_hrs":
12.5,
"id": "234-56-
7890"}';

UPDATE

Utilice la instrucción UPDATE para modificar una fila en una tabla.

Sintaxis

update_statement ::= UPDATE table_name

[ USING update_parameter ( AND


update_parameter )* ]

SET assignment ( ',' assignment )*

WHERE where_clause

[ IF ( EXISTS | condition ( AND condition


)*) ]

update_parameter ::= ( integer | bind_marker )

assignment ::= simple_selection '=' term


| column_name '=' column_name ( '+' | '-' )
term

| column_name '=' list_literal '+'


column_name

simple_selection ::= column_name

| column_name '[' term ']'

| column_name '.' `field_name

condition ::= simple_selection operator term

Ejemplo

UPDATE "myGSGKeyspace".employees_tbl SET pay_scale = 5 WHERE id =


'567-89-0123' AND division = 'Marketing' ;

Para incrementar un counter, utilice la siguiente sintaxis.

UPDATE ActiveUsers SET counter = counter + 1 WHERE user =


A70FE1C0-5408-4AE3-BE34-8733E5K09F14 AND action = 'click';

Actualización de parámetros

UPDATE admite los siguientes valores como update_parameter:

TTL: un valor de tiempo en segundos. El valor máximo configurable es de


630 720 000 segundos, lo que equivale a 20 años.
TIMESTAMP: un valor bigint que representa el número de microsegundos desde
la hora base estándar conocida como epoch: 1 de enero de 1970 a las 00:00:00
GMT. Una marca de tiempo en Amazon Keyspaces debe estar comprendida entre
2 días en el pasado y 5 minutos en el futuro.

Ejemplo

UPDATE my_table (userid, time, subject, body, user)


VALUES (B79CB3BA-745E-5D9A-8903-4A02327A7E09, 96a29100-5e25-11ec-
90d7-b5d91eceda0a, 'Message', 'Hello again','205.212.123.123')

USING TIMESTAMP '2022-11-03 13:30:54+0400';

DELETE

Utilice la instrucción DELETE para eliminar una fila en una tabla.

Sintaxis

delete_statement ::= DELETE [ simple_selection ( ','


simple_selection ) ]
FROM table_name
[ USING update_parameter ( AND
update_parameter )* ]
WHERE where_clause
[ IF ( EXISTS | condition ( AND condition
)*) ]

simple_selection ::= column_name


| column_name '[' term ']'
| column_name '.' `field_name

condition ::= simple_selection operator term

Donde:

table_name es la tabla que contiene la fila que desea eliminar.

Ejemplo

DELETE manager_id FROM "myGSGKeyspace".employees_tbl WHERE


id='789-01-2345' AND division='Executive' ;

DELETE admite el siguiente valor como update_parameter:


TIMESTAMP: un valor bigint que representa el número de microsegundos desde
la hora base estándar conocida como epoch: 1 de enero de 1970 a las 00:00:00
GMT.

Lenguaje de Control de Datos (DCL)


Como administrador de seguridad de la base de datos, utiliza los comandos
SQL del lenguaje de control de datos (DCL) para controlar el acceso de usuario a
los objetos de base de datos y a su contenido.
La seguridad comienza con el usuario administrativo. Como usuario
administrativo, debe crear y autorizar a otros usuarios. Cuando crea usuarios por
primera vez, no pueden ver o hacer nada. Cuando otorga a los usuarios más
privilegios, ellos pueden acceder a más objetos de base de datos.
Cuando crea usuarios, de forma predeterminada, ellos solo tienen acceso a
las vistas del sistema. Con estas vistas, ellos pueden recuperar listas de objetos
de base de datos de usuario y seleccionar datos dentro de esos objetos. Como la
seguridad también se compila en estas vistas de sistema, la lista de objetos de
base de datos que puede ver un usuario depende de los privilegios de seguridad
del usuario.
Como administrador de seguridad de la base de datos, utiliza los comandos
SQL del lenguaje de control de datos (DCL) para controlar el acceso de usuario a
los objetos de base de datos y a su contenido.
La seguridad comienza con el usuario administrativo. Como usuario
administrativo, debe crear y autorizar a otros usuarios. Cuando crea usuarios por
primera vez, no pueden ver o hacer nada. Cuando otorga a los usuarios más
privilegios, ellos pueden acceder a más objetos de base de datos.
Cuando crea usuarios, de forma predeterminada, ellos solo tienen acceso a
las vistas del sistema. Con estas vistas, ellos pueden recuperar listas de objetos
de base de datos de usuario y seleccionar datos dentro de esos objetos. Como la
seguridad también se compila en estas vistas de sistema, la lista de objetos de
base de datos que puede ver un usuario depende de los privilegios de seguridad
del usuario.
La tabla siguiente describe el DCL de IBM® Netezza SQL.
Componente Descripción

otorgar Otorga privilegios. Consulte GRANT.

revocar Revoca privilegios Consulte REVOKE.

Tabla 1. Lenguaje de control de datos

La tabla siguiente describe el DCL de Netezza SQL.

Componente Descripción

Otorga privilegios.
otorgar
Consulte GRANT.

Revoca privilegios
revocar
Consulte REVOKE.

Tabla 1. Lenguaje de control de datos

Tipos de privilegios

Privilegios de propietario
Cuando un usuario crea un objeto, ese usuario es por defecto el propietario de ese
objeto.

Otorgar privilegios de objeto

Listar privilegios de usuario


Puede utilizar el comando nzsql o herramientas como Netezza Performance
Portal o NzAdmin para listar los privilegios de usuario.

Lenguaje de Control de Transacciones (TCL)


El lenguaje de control de transacciones (TCL) es un aspecto importante de
las bases de datos relacionales y desempeña un papel crucial en la administración
de transacciones dentro de un sistema de gestión de bases de datos (DBMS). En
el contexto de las bases de datos relacionales, una transacción se refiere a un
conjunto de operaciones que funcionan como una sola unidad y su propósito
principal es garantizar la coherencia e integridad de los datos. TCL es un
subconjunto del lenguaje de consulta estructurado (SQL) que abarca varios
comandos y declaraciones utilizados para controlar y administrar transacciones y
ofrecer un mecanismo confiable para manejar las inconsistencias de datos que
pueden surgir durante el acceso simultáneo a la base de datos.
En un DBMS relacional típico, una gran cantidad de usuarios acceden a la
base de datos simultáneamente. Esta interacción paralela puede generar posibles
conflictos, inconsistencia de datos y problemas de corrupción de datos. Por lo
tanto, TCL proporciona las herramientas necesarias para mitigar tales problemas,
asegurando la integridad de los datos mediante propiedades de atomicidad,
consistencia, aislamiento y durabilidad (ACID), que son características esenciales
de cualquier sistema de base de datos transaccional confiable.
TCL incluye los siguientes comandos fundamentales para controlar las
transacciones de la base de datos:
COMENZAR TRANSACCIÓN: Esta declaración indica el inicio de una nueva
transacción, lo que permite que el sistema de base de datos se prepare para
ejecutar un grupo de declaraciones SQL como una sola unidad de trabajo. Esta
unidad implica que todas las declaraciones dentro de la transacción se ejecutarán
con éxito o ninguna, lo que garantiza la atomicidad.
COMMIT: este comando guarda cualquier cambio realizado durante una
transacción de forma permanente en la base de datos. Una vez ejecutada la
instrucción COMMIT, no es posible revertir ni deshacer. Además de finalizar la
transacción actual, COMMIT libera cualquier bloqueo de la base de datos retenido
por la sesión e implícitamente inicia una nueva transacción si se ejecutan
instrucciones SQL posteriores.
ROLLBACK: esta declaración revierte cualquier cambio realizado durante una
transacción, restaurando la base de datos a su estado anterior, lo que preserva la
coherencia de los datos. El comando ROLLBACK se utiliza normalmente cuando
se produce un error durante la ejecución de una transacción o si es necesario
cancelar la transacción intencionalmente.
SAVEPOINT: este comando establece puntos intermedios dentro de una
transacción, permitiendo reversiones parciales a un punto de guardado específico
si es necesario. Proporciona un nivel más granular de control sobre las
transacciones y permite a los desarrolladores recuperarse de errores específicos
sin descartar toda la transacción.

ROLLBACK TO: Esta declaración permite revertir una transacción a un punto de


guardado específico previamente definido por el comando SAVEPOINT. Es útil
durante el manejo de errores, brindando la capacidad de deshacer cambios
específicos preservando el resto de la transacción.
Al trabajar con la plataforma no-code AppMaster, el lenguaje de control de
transacciones es crucial para mantener la coherencia de los datos y ofrecer una
interacción perfecta entre las aplicaciones backend generadas y las bases de
datos relacionales. AppMaster proporciona un entorno eficiente para crear
visualmente modelos de datos que sean compatibles con Postgresql, lo que
garantiza altos estándares de gestión de datos y control de transacciones para
atender diversos casos de uso empresariales y de alta carga.
En el desarrollo de software, la implementación de mecanismos sólidos de
control de transacciones se relaciona directamente con el rendimiento exitoso de
la aplicación, ya que salvaguarda la integridad y coherencia de los datos, lo que en
última instancia conduce a una experiencia más confiable y fácil de usar. El
soporte para TCL proporcionado por plataformas como AppMaster mejora esta
capacidad, permitiendo a los desarrolladores crear aplicaciones potentes,
escalables y eficientes que mitiguen los riesgos asociados con el acceso
simultáneo a bases de datos.
En resumen, el lenguaje de control de transacciones es un componente
indispensable de los sistemas de gestión de bases de datos relacionales y
proporciona herramientas esenciales para controlar y gestionar transacciones. Al
adherirse a las propiedades de ACID, garantiza la coherencia, integridad y
resiliencia de los datos frente a los conflictos que surgen del acceso simultáneo a
la base de datos. La incorporación de soporte TCL en plataformas no-
code como AppMaster mejora aún más su efectividad al brindar a los usuarios una
solución de extremo a extremo para crear aplicaciones web, móviles y backend
sólidas que se integran perfectamente con bases de datos relacionales,
garantizando un rendimiento superior y la integridad de los datos.

Diagrama Conceptual (Modelo Entidad-Relación)

Es una representación gráfica de las entidades que intervienen en la base


de datos relacional, como sugiere su nombre, es el modelado de datos más
relevante en la etapa conceptual, cuando una empresa elabora un plan preliminar
con la intención de trabajar en los detalles relevantes más adelante. Generalmente
creados por arquitectos de datos y partes interesadas comerciales, los modelos de
datos conceptuales brindan a las partes interesadas una fotografía instantánea
fácilmente digerible de los conceptos o entidades importantes y las relaciones
entre ellos. Al comunicar el modelo de una manera que sea relevante para las
partes interesadas que no están necesariamente orientadas a la tecnología o los
detalles, es más probable que los modeladores obtengan apoyo para sus
proyectos.

El objetivo de un modelo de datos conceptual es proporcionar una


perspectiva de la empresa centrada en los datos al documentar cómo se
relacionan las diferentes entidades comerciales entre sí. Esto a menudo se logra a
través de diagramas de relación de entidades (ERD) o modelos de funciones de
objetos (ORM). A diferencia de los modelos de datos lógicos y físicos, los modelos
de datos conceptuales son independientes de la tecnología y la aplicación. Esto
significa que no están vinculados a la realidad y el contexto de los sistemas y
procesos actualmente en vigor.

Los modelos de datos conceptuales demuestran tanto el estado actual


como el futuro, lo que significa que incluyen cambios en el negocio que están
ocurriendo o que son muy probables. De esta manera, las empresas pueden
preparar el modelo para el futuro hasta cierto punto y tener en cuenta cualquier
flexibilidad que deba incorporarse a la solución. Se considera una buena práctica
distinguir entre el estado actual y el estado futuro mediante el esquema de colores.
En resumen el modelo conceptual es una representación en forma general
de las entidades que interviene a la hora de iniciar el estudio del diseño de una
base de datos relacional.

Ejemplo de un sistema de inventario en donde el nombre subrayado indica llave


primaria y doble subrayado llave foránea.

.
Diagrama Lógico

El diseño lógico es la segunda fase en el proceso de desarrollo de una base


de datos. Por lo tanto, se parte de los resultados de una etapa previa (la etapa del
diseño conceptual) y se producen otros nuevos, que a su vez servirán como punto
de entrada de una etapa posterior (el diseño físico).

Si nos centramos en la parte de datos del diseño lógico, partiremos de la


parte de la especificación que corresponde a la modelización conceptual del
dominio de la aplicación, para obtener un esquema de la base de datos expresado
en un lenguaje correspondiente a algún modelo lógico de base de datos, pero sin
adoptar una versión concreta de ningún sistema de gestión de base de datos
(SGBD) ni entrar en detalles de optimización o refinamiento de la base de datos,
que se dejarán para etapas posteriores de desarrollo.

El diseño lógico de nuestra base de datos relacional deriva posterior al


diagrama conceptual, donde mostraremos sus relaciones así como también sus
atributos y se presentan a continuación.

Ejemplo

También podría gustarte