0% encontró este documento útil (0 votos)
21 vistas11 páginas

Base

Cargado por

Luisa Téllez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
21 vistas11 páginas

Base

Cargado por

Luisa Téllez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 11

Tabla de contenido

Características generales de SQL...............................................................................................1


Lenguaje de definición de datos (DDL)....................................................................................1
CREATE | CREAR..................................................................................................................1
ALTER | MODIFICAR.............................................................................................................1
DROP | ELIMINAR..................................................................................................................2
TRUNCATE | BORRAR TABLA............................................................................................2
Lenguaje de manipulación de datos DML (Data Manipulation Language)..........................2
Definición..................................................................................................................................2
SELECT | SELECCIONAR.....................................................................................................2
SUBCONSULTAS...................................................................................................................5
INSERT | INSERTAR..............................................................................................................5
UPDATE...................................................................................................................................8
DELETE....................................................................................................................................8
Recuperación de clave.................................................................................................................8
Normalización de bases de datos...................................................................................................9
Formas normales.......................................................................................................................10
Primera Forma Normal (1FN)..............................................................................................10
Segunda Forma Normal (2FN)............................................................................................10
Tercera Forma Normal (3FN)..............................................................................................10
Funciones agregadas del Sistema................................................................................................10
Características generales de SQL
SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los
sistemas relacionales y permite así gran variedad de operaciones. 4
Es un lenguaje declarativo de "alto nivel" o "de no procedimiento" que, gracias a su fuerte
base teórica y su orientación al manejo de conjuntos de registros y no a registros individuales
— permite una alta productividad en codificación y la orientación a objetos. De esta forma, una
sola sentencia puede equivaler a uno o más programas que se utilizarían en un lenguaje de
bajo nivel orientado a registros. SQL también tiene las siguientes características:

 Lenguaje de definición de datos: El LDD de SQL proporciona comandos para la


definición de esquemas de relación, borrado de relaciones y modificaciones de los
esquemas de relación.
 Lenguaje interactivo de manipulación de datos: El LMD de SQL incluye lenguajes de
consultas basado tanto en álgebra relacional como en cálculo relacional de tuplas.
 Integridad: El LDD de SQL incluye comandos para especificar las restricciones de
integridad que deben cumplir los datos almacenados en la base de datos.
 Definición de vistas: El LDD incluye comandos para definir las vistas.
 Control de transacciones: SQL tiene comandos para especificar el comienzo y el final de
una transacción.
 SQL incorporado y dinámico: Esto quiere decir que se pueden incorporar instrucciones
de SQL en lenguajes de programación como: C++, C, Java, PHP, Cobol, Pascal y Fortran.
 Autorización: El LDD incluye comandos para especificar los derechos de acceso a las
relaciones y a las vistas.

Lenguaje de definición de datos (DDL)


El lenguaje de definición de datos (en inglés Data Definition Language, o DDL), es el que se
encarga de la modificación de la estructura de los objetos de la base de datos. Incluye
órdenes para modificar, borrar o definir las tablas en las que se almacenan los datos de la
base de datos. Existen cuatro operaciones básicas: CREATE, ALTER, DROP y TRUNCATE. 5
CREATE | CREAR
Este comando permite crear objetos de datos, como nuevas bases de datos, tablas, vistas
y procedimientos almacenados.
Ejemplo (crear una tabla)

CREATE TABLE 'CUSTOMERS';

ALTER | MODIFICAR
Este comando permite modificar la estructura de una tabla u objeto. Se pueden
agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una
tabla, modificar un trigger, etc.
Ejemplo (agregar columna a una tabla)

ALTER TABLE 'ALUMNOS' ADD EDAD INT UNSIGNED;

1
DROP | ELIMINAR
Este comando elimina un objeto de la base de datos. Puede ser una
tabla, vista, índice, trigger, función, procedimiento o cualquier objeto que el motor de la base
de datos soporte. Se puede combinar con la sentencia ALTER.
Ejemplo

DROP TABLE 'ALUMNOS';

TRUNCATE | BORRAR TABLA


Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DROP, es
que si se quiere borrar todo el contenido de la tabla, es mucho más rápido, especialmente si la
tabla es muy grande. La desventaja es que TRUNCATE sólo sirve cuando se quiere eliminar
absolutamente todos los registros, ya que no se permite la cláusula WHERE. Si bien, en un
principio, esta sentencia parecería ser DML (Lenguaje de Manipulación de Datos), es en
realidad una DDL, ya que internamente, el comando TRUNCATE borra la tabla y la vuelve a
crear y no ejecuta ninguna transacción.
Ejemplo

TRUNCATE TABLE 'NOMBRE_TABLA';

Lenguaje de manipulación de datos DML (Data Manipulation Language)


Definición
Un lenguaje de manipulación de datos (Data Manipulation Language, o DML en inglés) es un
lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios
llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo
de datos adecuado.5
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.
SELECT | SELECCIONAR
La sentencia SELECT nos permite consultar los datos almacenados en una tabla de la base
de datos.
Forma básica

SELECT [ALL | DISTINCT ]


<nombre_campo> [{,<nombre_campo>}]
FROM <nombre_tabla>|<nombre_vista>
[{,<nombre_tabla>|<nombre_vista>}]
[WHERE <condición> [{ AND|OR <condición>}]]
[GROUP BY <nombre_campo> [{,<nombre_campo >}]]
[HAVING <condición>[{ AND|OR <condición>}]]
[ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC]
[{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]

2
Palabra clave que indica que la sentencia de SQL que queremos ejecutar es de
SELECT
selección.

Indica que queremos seleccionar todos los valores. Es el valor por defecto y no
ALL
suele especificarse casi nunca.

DISTINCT Indica que queremos seleccionar sólo los valores distintos.

Indica la tabla (o tablas) desde la que queremos recuperar los datos. En el caso de
que exista más de una tabla se denomina a la consulta "consulta combinada" o
FROM
"join". En las consultas combinadas es necesario aplicar una condición de
combinación a través de una cláusula WHERE.

Especifica una condición que debe cumplirse para que los datos sean devueltos
WHERE
por la consulta. Admite los operadores lógicos AND y OR.

GROUP Especifica la agrupación que se da a los datos. Se usa siempre en combinación


BY con funciones agregadas.

Especifica una condición que debe cumplirse para que los datos sean devueltos
por la consulta. Su funcionamiento es similar al de WHERE pero aplicado al
HAVING
conjunto de resultados devueltos por la consulta. Debe aplicarse siempre junto
a GROUP BY y la condición debe estar referida a los campos contenidos en ella.

Presenta el resultado ordenado por las columnas indicadas. El orden puede


ORDER
expresarse con ASC (orden ascendente) y DESC (orden descendente). El valor
BY
predeterminado es ASC.

Ejemplo:
Para formular una consulta a la tabla Coches y recuperar los campos matricula, marca,
modelo, color, numero_kilometros, num_plazas debemos ejecutar la siguiente consulta. Los
datos serán devueltos ordenados por marca y por modelo en orden ascendente, de menor a
mayor. La palabra clave FROM indica que los datos serán recuperados de la tabla Coches.

SELECT matricula, marca, modelo, color, numero_kilometros,


num_plazas
FROM Coches
ORDER BY marca,modelo;

Ejemplo de Consulta simplificada a través de un comodín de Campos (*):


El uso del asterisco indica que queremos que la consulta devuelva todos los campos que
existen en la tabla y los datos serán devueltos ordenados por marca y por modelo.

SELECT * FROM Coches ORDER BY marca, modelo;

Cláusula WHERE
La cláusula WHERE es la instrucción que nos permite filtrar el resultado de una
sentencia SELECT. Habitualmente no deseamos obtener toda la información existente en la

3
tabla, sino que queremos obtener sólo la información que nos resulte útil en ese momento. La
cláusula WHERE filtra los datos antes de ser devueltos por la consulta. Cuando en la Cláusula
WHERE queremos incluir un tipo texto, debemos incluir el valor entre comillas simples.
Ejemplos:
En nuestro ejemplo, se desea consultar un coche en concreto, para esto se agregó una
cláusula WHERE. Esta cláusula especifica una o varias condiciones que deben cumplirse para
que la sentencia SELECT devuelva los datos. En este caso la consulta devolverá sólo los
datos del coche con matrícula para que la consulta devuelva sólo los datos del coche con
matrícula  MF-234-ZD  o bien la matrícula  FK-938-ZL  . Se puede utilizar la
cláusula WHERE solamente, ó en combinación con tantas condiciones como queramos.

SELECT matricula, marca, modelo, color, numero_kilometros,


num_plazas
FROM Coches
WHERE matricula = 'MF-234-ZD'
OR matricula = 'FK-938-ZL' ;

Una Condición WHERE puede ser negada a través del Operador Lógico NOT. La Siguiente
consulta devolverá todos los datos de la tabla Coches, menos el que tenga la Matrícula  MF-
234-ZD  .

SELECT matricula,marca, modelo, color, numero_kilometros, num_plazas


FROM coches
WHERE NOT matricula = 'MF-234-ZD';

La Siguiente consulta utiliza la condicional DISTINCT, la cual nos devolverá todos los valores
distintos formados por los Campos Marca y Modelo. de la tabla coches.

SELECT DISTINCT marca, modelo FROM coches;

Cláusula ORDER BY
La cláusula ORDER BY es la instrucción que nos permite especificar el orden en el que serán
devueltos los datos. Podemos especificar la ordenación ascendente o descendente a través
de las palabras clave ASC y DESC. La ordenación depende del tipo de datos que este
definido en la columna, de forma que un campo numérico será ordenado como tal, y un
alfanumérico se ordenará de la A a la Z, aunque su contenido sea numérico. El valor
predeterminado es ASC si no se especifica al hacer la consulta.
Ejemplos:
'SELECT' matricula,
marca,
modelo,
color,
numero_kilometros,

4
num_plazas
'FROM' coches
'ORDER BY' marca 'ASC', modelo 'DESC'; Este ejemplo, selecciona todos los campos
matricula, marca, modelo, color, numero_kilometros y num_plazas de la tabla coches,
ordenándolos por los campos marca y modelo, marca en forma ascendente y modelo en
forma descendente.

SELECT matricula,
marca,
modelo,
color,
numero_kilometros, num_plazas
FROM coches
ORDER BY 2;

Este ejemplo, selecciona todos los campos matrícula, marca, modelo, color,
numero_kilometros y num_plazas de la tabla coches, ordenándolos por el campo marca, ya
que aparece en segundo lugar dentro de la lista de campos que componen la SELECT.
SUBCONSULTAS
Una subconsulta es una sentencia SELECT que está embebida en una cláusula de otra
sentencia SQL.
Las subconsultas pueden resultar útiles si necesitas seleccionar filas de una tabla con una
condición que depende de los datos de la propia tabla o de otra tabla.
La subconsulta (consulta interna), se ejecuta antes de la consulta principal; el resultado de la
subconsulta es utilizado por la consulta principal (consulta externa).

SELECT c.matricula, c.modelo


FROM coches c
WHERE c.matricula IN
(
SELECT m.matricula
FROM multas m
WHERE m.importe > 100
);

En este ejemplo, se seleccionan las matriculas y los modelos de los coches cuyas multas
superan los u$s 100.
INSERT | INSERTAR
Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una
base de datos relacional.

5
Forma básica

INSERT INTO 'tablatura' ('columna1',['columna2,... '])


VALUES ('valor1', ['valor2,...'])

O también se puede utilizar como:


INSERT INTO tablatura VALUES ('valor1','valor2')

Las cantidades de columnas y valores deben ser iguales. Si una columna no se especifica, le
será asignado el valor por omisión. Los valores especificados (o implícitos) por la
sentencia  INSERT  deberán satisfacer todas las restricciones aplicables. Si ocurre un error de
sintaxis o si alguna de las restricciones es violada, no se agrega la fila y se devuelve un error.
Ejemplo

INSERT INTO agenda_telefonica (nombre, numero)


VALUES ('Roberto Jeldrez', 4886850);

Cuando se especifican todos los valores de una tabla, se puede utilizar la sentencia acortada:

INSERT INTO nombreTabla VALUES ('valor1', ['valor2,...'])

Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas de la tabla
'agenda_telefonica'):

INSERT INTO agenda_telefonica


VALUES ('Jhonny Aguilar', 080473968);

Formas avanzadas
Una característica de SQL (desde SQL-92) es el uso de constructores de filas para insertar
múltiples filas a la vez, con una sola sentencia SQL:

INSERT INTO ''tabla'' (''columna1'', [''columna2,... ''])


VALUES (''valor1a'', [''valor1b,...'']),
(''value2a'', [''value2b,...'']),...;

Esta característica es soportada por DB2, PostgreSQL (desde la versión 8.2), MySQL, y H2.
Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas en la tabla
'agenda_telefonica'):

INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850'),


('Alejandro Sosa', '4556550');

6
Que podía haber sido realizado por las sentencias

INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850');


INSERT INTO agenda_telefonica VALUES ('Alejandro Sosa', '4556550');

Notar que las sentencias separadas pueden tener semántica diferente (especialmente con
respecto a los triggers), y puede tener diferente rendimiento que la sentencia de inserción
múltiple.
Para insertar varias filas en MS SQL puede utilizar esa construcción:

INSERT INTO phone_book


SELECT 'John Doe', '555-1212'
UNION ALL
SELECT 'Peter Doe', '555-2323';

Tenga en cuenta que no se trata de una sentencia SQL válida de acuerdo con el estándar
SQL (SQL: 2003), debido a la cláusula subselect incompleta.
Para hacer lo mismo en Oracle se usa la Tabla DUAL, siempre que se trate de solo una simple
fila:

INSERT INTO phone_book


SELECT 'John Doe', '555-1212' FROM DUAL
UNION ALL
SELECT 'Peter Doe','555-2323' FROM DUAL

Una implementación conforme al estándar de esta lógica se muestra el siguiente ejemplo, o


como se muestra arriba (no aplica en Oracle):

INSERT INTO phone_book


SELECT 'John Doe', '555-1212' FROM LATERAL ( VALUES (1) ) AS t(c)
UNION ALL
SELECT 'Peter Doe','555-2323' FROM LATERAL ( VALUES (1) ) AS t(c)

Copia de filas de otras tablas


Un INSERT también puede utilizarse para recuperar datos de otros, modificarla si es
necesario e insertarla directamente en la tabla. Todo esto se hace en una sola sentencia SQL
que no implica ningún procesamiento intermedio en la aplicación cliente. Un SUBSELECT se
utiliza en lugar de la cláusula VALUES. El SUBSELECT puede contener JOIN, llamadas a
funciones, y puede incluso consultar en la misma TABLA los datos que se inserta.
Lógicamente, el SELECT se evalúa antes que la operación INSERT esté iniciada. Un ejemplo
se da a continuación.

7
INSERT INTO phone_book2

SELECT *
FROM phone_book
WHERE name IN ('John Doe', 'Peter Doe')

Una variación es necesaria cuando algunos de los datos de la tabla fuente se está insertando
en la nueva tabla, pero no todo el registro. (O cuando los esquemas de las tablas no son
iguales.)

INSERT INTO phone_book2 ( [name], [phoneNumber] )

SELECT [name], [phoneNumber]


FROM phone_book
WHERE name IN ('John Doe', 'Peter Doe')

El SELECT produce una tabla (temporal), y el esquema de la tabla temporal debe coincidir
con el esquema de la tabla donde los datos son insertados.
UPDATE
Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de
registros existentes en una tabla.
Ejemplo

UPDATE My_table SET field1 = 'updated value asd' WHERE field2 = 'N';

DELETE
Una sentencia DELETE de SQL borra uno o más registros existentes en una tabla.
Forma básica

DELETE FROM tabla WHERE columna1 = 'valor1';

Ejemplo

DELETE FROM My_table WHERE field2 = 'N';

Recuperación de clave
Los diseñadores de base de datos que usan una clave suplente como la clave principal para
cada tabla, se ejecutará en el ocasional escenario en el que es necesario recuperar
automáticamente la base de datos, generando una clave primaria de una sentencia SQL
INSERT para su uso en otras sentencias SQL. La mayoría de los sistemas no permiten

8
sentencias SQL INSERT para retornar fila de datos. Por lo tanto, se hace necesario aplicar
una solución en tales escenarios.
Implementaciones comunes incluyen:

 Utilizando un procedimiento almacenado específico de base de datos que genera la clave


suplente, realice la operación INSERT, y finalmente devuelve la clave generada.
 Utilizando una sentencia SELECT especifica de base de datos, sobre una tabla temporal
que contiene la última fila insertada. DB2 implementa esta característica de la siguiente
manera:

SELECT *
FROM NEW TABLE ( INSERT INTO phone_book VALUES ( 'Cristobal
Jeldrez','0426.817.10.30' ) ) AS t

 Utilizando una sentencia SELECT después de la sentencia INSERT con función específica


de base de datos, que devuelve la clave primaria generada por el registro insertado más
recientemente.
 Utilizando una combinación única de elementos del original SQL INSERT en una posterior
sentencia SELECT.
 Utilizando un GUID en la sentencia SQL INSERT y la recupera en una sentencia SELECT.
 Utilizando la función de PHP mysql_insert_id() de MySQL después de la sentencia
INSERT.
 Utilizando un INSERT con la cláusula RETURNING para Oracle, que sólo se puede utilizar
dentro de un PL/SQLbloque, en el caso de PostgreSQL se puede usar también tanto con
SQL como con PL/SQL.

INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' )


RETURNING phone_book_id INTO v_pb_id

 En el caso de MS SQL se puede utilizar la siguiente instrucción:

Set NoCount On;


INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30'
);
Select @@Identity as ID

Normalización de bases de datos


La normalización de bases de datos es un proceso que consiste en designar y aplicar una
serie de reglas a las relaciones obtenidas tras el paso del modelo entidad-relación al modelo
relacional.
Las bases de datos relacionales se normalizan para:

 Evitar la redundancia de los datos.

9
 Disminuir problemas de actualización de los datos en las tablas.
 Proteger la integridad de los datos.
En el modelo relacional es frecuente llamar tabla a una relación, aunque para que una tabla
sea considerada como una relación tiene que cumplir con algunas restricciones:

 Cada tabla debe tener su nombre único.


 No puede haber dos filas iguales. No se permiten los duplicados.
 Todos los datos en una columna deben ser del mismo tipo.

Formas normales
Las formas normales son aplicadas a las tablas de una base de datos. Decir que una base de
datos está en la forma normal N es decir que todas sus tablas están en la forma normal N.
En general, las primeras tres formas normales son suficientes para cubrir las necesidades de
la mayoría de las bases de datos.

Primera Forma Normal (1FN)


Una tabla está en Primera Forma Normal si:

 Todos los atributos son atómicos. Un atributo es atómico si los elementos del dominio son
simples e indivisibles.
 La tabla contiene una clave primaria única.
 La clave primaria no contiene atributos nulos.
 No debe existir variación en el número de columnas.
 Los Campos no clave deben identificarse por la clave (Dependencia Funcional)
 Debe Existir una independencia del orden tanto de las filas como de las columnas, es
decir, si los datos cambian de orden no deben cambiar sus significados
Esta forma normal elimina los valores repetidos dentro de una Base de Datos.
Segunda Forma Normal (2FN)
Dependencia Funcional. Una relación está en 2FN si está en 1FN y si los atributos que no
forman parte de ninguna clave dependen de forma completa de la clave principal. Es decir que
no existen dependencias parciales. (Todos los atributos que no son clave principal deben
depender únicamente de la clave principal).
Los registros no deben depender de nada que no sea una clave principal de una tabla, una
clave compuesta si es necesario.
Tercera Forma Normal (3FN)
Elimine los campos que no dependan de la clave principal.

Los valores de un registro que no sean parte de la clave de ese registro no pertenecen a la
tabla. En general, siempre que el contenido de un grupo de campos pueda aplicarse a más de
un único registro de la tabla, considere colocar estos campos en una tabla independiente.

10

También podría gustarte