Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tbdoo Parte1
Tbdoo Parte1
orientada a Objetos
Unidad 1:
SQL. T-SQL 2008
(Lenguaje de consultas estructurado)
Introducción
• El Lenguaje de Consulta Estructurado
(Structured Query Language).
• Es un lenguaje declarativo de acceso a base de
datos relacionales.
• En 1970 Dr. Edgard F. Codd propone el
modelo relacional.
• IBM definen el lenguaje SEQUEL (Structured
English QUEry Language) que se implementa
en “System R” en 1977.
• Por problema de derecho de autor el nombre
pasó de SEQUEL a SQL.
Introducción
• Oracle lo implementó en 1979 en forma
comercial en Oracle V2 (Versión 2) para los
computadores VAX.
• IBM lo implementa en DB2 en 1983.
• En 1986 se adopta como estándar ANSI/ISO.
Introducción
Año Nombre Alias Comentarios
1986 SQL-86 SQL-87 Primera publicación ANSI ratificado
por ISO en 1987
DDL
Comando Descripción
CREATE Utilizado para crear nuevas tablas,
campos e índices
<column_definition> ::=
column_name <data_type> [ FILESTREAM ] [ COLLATE
collation_name ]
[ NULL | NOT NULL ]
[ [ CONSTRAINT constraint_name ] DEFAULT
constant_expression ]
| [ IDENTITY [ ( seed ,increment ) ] [ NOT FOR REPLICATION ] ]
[ ROWGUIDCOL ] [ <column_constraint> [ ...n ] ]
[ SPARSE ]
CREATE TABLE
<column_definition> ::=
column_name <data_type> [ FILESTREAM ] [ COLLATE
collation_name ]
[ NULL | NOT NULL ]
[ [ CONSTRAINT constraint_name ] DEFAULT
constant_expression ]
| [ IDENTITY [ ( seed ,increment ) ] [ NOT FOR REPLICATION ] ]
[ ROWGUIDCOL ] [ <column_constraint> [ ...n ] ]
[ SPARSE ]
CREATE TABLE
<computed_column_definition> ::=
column_name AS computed_column_expression
[ PERSISTED [ NOT NULL ] ]
[ [ CONSTRAINT constraint_name ]
{ PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = fillfactor | WITH ( <index_option> [ , ...n ]) ]
| [ FOREIGN KEY ] REFERENCES referenced_table_name [ ( ref_column ) ]
[ ON DELETE { NO ACTION | CASCADE } ]
[ ON UPDATE { NO ACTION } ]
[ NOT FOR REPLICATION ]
| CHECK [ NOT FOR REPLICATION ] ( logical_expression )
[ ON { partition_scheme_name ( partition_column_name ) | filegroup | "default" } ] ]
COLUMN CONSTRAINT
Restricción a nivel de columna
CONSTRAINT nombre
{ [ NULL | NOT NULL ] |
COLUMN CONSTRAINT
[ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = factor_relleno ]
[ ON {grupo_ficheros | DEFAULT} ] ]
]|
[ [ FOREIGN KEY ]
REFERENCES otra_tabla[ (campo_externo1) ]
[ ON DELETE {NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ ON UPDATE {NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ NOT FOR REPLICATION ]
]|
CHECK [ NOT FOR REPLICATION ] ( expresión_lógica )
}
COLUMN CONSTRAINT
• nombre: es el nombre de la restricción que se va a crear.
• otra_tabla: es el nombre de la tabla a la que se hace
referencia.
• campo_externo1: son los nombres de los campos de la
otra_tabla a los que se hace referencia.
• factor_relleno: especifica cuánto se debe llenar cada página
de índice utilizada para almacenar los datos de índice.Entre 0
y 100. Por defecto 0.
• grupo_ficheros: indica dónde se almacena la tabla
TABLE CONSTRAINT
Restricción a nivel de tabla
CONSTRAINT nombre
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
{ (principal1 [ ASC | DESC ] [ , principal2 [, ...] ] ) }
[ WITH FILLFACTOR = factor_relleno]
[ ON { grupo_ficheros | DEFAULT } ]
]|
FOREIGN KEY
[ (referencia1 [, referencia2 [, ...] ] ) ]
REFERENCES otra_tabla [ (campo_externo1 [ ,... campo_externo2 ] ) ]
[ ON DELETE {NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ ON UPDATE {NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
[ NOT FOR REPLICATION ] |
CHECK [ NOT FOR REPLICATION ] (expresión_lógica )
TABLE CONSTRAINT
• nombre: es el nombre de la restricción que se va a crear.
• principal1, principal2: son los nombres de los campos que
compondrán la clave principal.
• referencia1, referencia2: son los nombres de los campos
que hacen referencia a otros de otra tabla.
• otra_tabla: es el nombre de la tabla a la que se hace
referencia.
• campo_externo1, campo_externo2: son los nombres de los
campos de la otra_tabla a los que se
• hace referencia.
• expresión_lógica: criterio que se ha de cumplir. Devuelve
true o false
CREATE TABLE: ejemplo
CREATE TABLE Det_Orden(
Nro_orden INTEGER NOT NULL,
Num_linea SMALLINT NOT NULL,
Cod_prod INTEGER NOT NULL,
Cantidad INTEGER NOT NULL CHECK (cantidad >0 and
cantidad <=100)),
CONSTRAINT id_orden PRIMARY KEY (nro_orden,
num_linea),
CONSTRAINT f_prod FOREIGN KEY (cod_prod) REFERENCES
Producto(cod_prod),
CONSTRAINT f_ord FOREIGN KEY (nro_orden) REFERENCES
orden_compra(nro_orden))
ALTER TABLE: modificar tabla
ALTER TABLE tabla
{
ALTER COLUMN { campo tipo [(tamaño)] } [COLLATE] [ NULL | NOT
NULL] |
ADD
{<column_definition> | <computed_definition>|<table_constraint>} [,
…n] |
DROP
{COLUMN nombre_campo | CONSTRAINT nombre_restricción} [,…n]
|
{ ENABLE | DISABLE } TRIGGER { ALL | nombre_trigger [ ,...n ] }
|
{ CHECK | NOCHECK } CONSTRAINT { ALL | nombre_restricción[ ,...n ] }}
Componentes del SQL – Comandos
DML
Comando Descripción
SELECT Utilizado para consultar registros de la base de datos
que satisfagan un criterio determinado
Cláusula Descripción
FROM Utilizada para especificar la tabla de la cual se van a
seleccionar los registros.
WHERE Utilizada para especificar las condiciones que deben reunir
los registros que se van a seleccionar.
GROUP BY Utilizada para separar los registros seleccionados en grupos
específicos.
HAVING Utilizada para expresar la condición que debe satisfacer
cada grupo.
ORDER BY Utilizada para ordenar los registros seleccionados de
acuerdo con un orden específico.
Componentes del SQL – Operadores lógicos
Operador USO
AND Es el "y" lógico. Evalúa dos condiciones y
devuelve un valor de verdad sólo si ambas son
ciertas.
Operador USO
< Menor que
> Mayor que
<> Distinto de
<= Menor o igual que
>= Mayor o igual que
= Igual que
BETWEEN Utilizado para especificar un intervalo de valores.
LIKE Utilizado en la comparación de un modelo.
IN Utilizado para especificar registros de una base de
datos .
Componentes del SQL – Funciones de agregado
Función Descripción
AVG Calcular el promedio de los valores de un campo determinado .
COUNT Devuelve el número de registros de la selección.
SUM Devuelve la suma de todos los valores de un campo
determinado.
MAX Devuelve el valor más alto de un campo especificado.
MIN Devuelve el valor más bajo de un campo especificado.
Consultas de Inserción
Para insertar un registro se utiliza el
comando INSERT
SINTAXIS
INSERT INTO nombre_tabla
(columna1, columna2,…, columnaN)
VALUES (valor1,valor2,…, valorN)
Consultas de Actualización
Para actualizar uno o varios registros se utiliza el
comando UPDATE.
SINTAXIS
UPDATE nombre_tabla
SET campo1=valor1,campo2=valor2,…,
campoN=valorN
WHERE criterio
Consultas de Actualización
Para actualizar uno o varios registros se utiliza el
comando UPDATE.
SINTAXIS
UPDATE nombre_tabla
SET campo1=valor1,campo2=valor2,…,
campoN=valorN
WHERE criterio
Consultas de Eliminación
Para borrar uno o varios registros de una
tabla se utiliza el comando DELETE.
SINTAXIS
DELETE FROM nombre_tabla
WHERE criterio
Consultas de selección –
Consultas básicas
Consultas de selección – Ordenar los
registros
• Los registro se ordenan utilizando la cláusula ORDER BY.
Consultas de selección – Consultas con
predicado
• Se incluye entre la cláusula y el primer
nombre del campo a recuperar:
– DISTINCT: Omite los registros cuyos campos seleccionados coincidan
totalmente.
– DISTINCTROW: Omite los registros duplicados basándose en la
totalidad del registro y no sólo en los campos seleccionados.*
– LIMIT.*
– TOP.*
– ALL.*
Opcional
Agrupamiento de registros y funciones
agregadas
• GROUP BY:
– Combina los registros con valores idénticos, en la lista de campos
especificados, en un único registro.
– Para cada registro se crea un valor sumario si se incluye una función SQL
agregada.
– Su sintaxis es:
Equivalentes
Consultas de unión – INNER
JOIN
Elimina
ambigüedad
Equivalentes
Consultas de unión – UNION
• Se utiliza para crear una consulta de unión, combinando los
resultados de dos o más consultas.
• Su sintaxis es: