EJERCICIOS
RELACION O TABLA
TUPLA RELACIÓN DOMINIO CARDINALIDAD
PROPIEDADES DE TABLAS
PASO DE ENTIDAD/RELACION DE CHEN AL MODELO RELACIONAL
RELACIONES ISA
ENTIDADES DÉBILES Y FUERTES
MOTORES DE BASE DATOS
REPRESENTACIÓN DE ESQUEMA DE BASE DE DATOS RELACIONALES
GRAFOS RELACIONALES
PRIMERA FORMA NORMAL
DEPENDENCIA FUNCIONALES
SEGUNDA FORMA NORMAL
TERCERA FORMA NORMAL
CUARTA FORMA NORMAL
DEPENDENCIA MULTIVALUADA
QUINTA FORMA NORMAL
INDICAN CODIGOS DE MATERIAL SUMINISTRADO POR UN PROVEEDOR Y UTILIZADO EN UN DETERMINADO PROYECTO.
SI OCURRE UNA RESTRICCION ESPECIAL COMO POR EJEMPLO: CUANDO UN PROVEEDOR NOS HA SUMINISTRADO ALGUNA VEZ
UN DETERMINADO MATERIAL, SI ESE MATERIAL APARECE EN OTRO PROYECTO, HAREMOS QUE EL PROVEEDOR NOS SUMINISTRE
TAMBIEN ESE MATERIAL PARA ESE PROYECTO.
FORMA NORMAL DE DOMINIO CLAVE
EJEMPLO:
ESTUDIANTE (SID, NIVELGRADO, EDIFICIO, CUOTA)
CLAVE: SID
RESTRICCIONES EDIFICIO -----> CUOTA
SID no debe comenzar con el digito 1
LUEGO SE NECESITA HACER DE LA DEPENDENCIA FUNCIONAL EDIFICIO -----> CUOTA UNA CONSECUENCIA LOGICA DE LAS CLAVES.
SI EDIFICIO FUERA UN ATRIBUTO DE LA CLAVE EDIFICIO ---> CUOTA SERIA UNA CONSECUENCIA LOGICA DE LA CLAVE
MOTORES DE BASE DE DATOS II
SQL
DDL
DML
NOTAS PREVIAS
VERSION SQL
HISTORIA SQL
Los orígenes del SQL nos llevan a la década de 1970, cuando en los laboratorios de IBM, se creó el nuevo software de base de datos System R. Y para gestionar los datos almacenados en System R, se creó el lenguaje SQL. En un principio se llamó SEQUEL, un nombre que todavía se utiliza como una pronunciación alternativa para SQL, pero más tarde fue renombrado a sólo SQL.
En 1979, una compañía llamada Relational Software, que luego se convirtió en Oracle, vio el potencial comercial del lenguaje SQL y lanzó su propia versión modificada, denominada Oracle V2.
Ahora en su tercera década de existencia, el lenguaje SQL ofrece una gran flexibilidad a los usuarios soportando bases de datos distribuidas, es decir, bases de datos que se pueden ejecutar en varias redes de ordenadores a la vez. Certificado por ANSI e ISO, el lenguaje SQL se ha convertido en un estándar de lenguaje de consulta de base de datos, siendo la base de una gran variedad de aplicaciones de bases de datos bien establecidos en Internet hoy en día. Sirve tanto para propósitos empresariales como para necesidades académicas y funciona tanto en equipos individuales como en servidores de empresa.
FUNCIONAMIENTO
cómo funcionan las bases de datos, les resultará muy interesante saber que su funcionamiento se basa en el envío de instrucciones de los usuarios a la base de datos. El lenguaje en el que se le envían es Structure Query Language, más conocido como SQL.
PROSECO DE INSTRUCCION SQL
GO
ENVIA LOTES DE INSTRUCIONES DE TRANSACT-SQL A LAS HERRAMIENTAS Y UTILIDADES
NO SE TRATA REALMENTE DE UNA INSTRUCION DE TRANSACT -SQL
EXEC
EJECUTA UNA FUNCION DEFINIDA POR EL USUARIO UN PROCEDIMIENTO DE SISTEMA UN PROCEDIMIENTO ALMACENADO DEFINIDO POR EL USUARIO O UN PROCEDIMIENTO ALMACENADO EXTENDIDO
CONTROLA LA EJECUCION DE UNA CADENA DE CARACTERES DENTRO UN LOTE DE TRANSACT- SQL
ELEMENTOS SQL
COMANDOS
CLASULAS
OPERADORES
FUNCIONES
LITERALES
METADATOS
NORMA DE ESCRITURA (SINTAXIS)
CODIGO SQL
COMANDOS. LAS DISTINTAS INSTRUCIONES QUE SE PUEDEN REALIZAR DESDE SQL
DML=LENGUAJE DE MANIPULACION DE DATOS
SELECT
INSTER
DELETE
UPDATE
DDL=LENGUAJE DEFINITION DE DATOS
CREATE
DROP
ALFERT
NORMA DE ESCRITURA
-EN SQL NO SE DISTINGUE ENTRE MAYUSCULAS Y MINUSCULAS
DA LO MISMO COMO SE ESCRIBA
-AL FINAL DE UNA INSTRUCION LO DETERMINA UN PUNTO Y COMA
-LAS INSTRUCIONES (SELECT, INSERT) PUEDEN SER PARTIDOS POR ESPACIOS
- LOS COMENTARIOS EN LOS CODIGOS SQL COMIENZAN POR */ Y TERMINA CON /*
CREACION DE BASE DATOS
CREACION DE UNA BASE DE DATOS
SE USA LA INSTRUCCIONS:
CREATE TO DATA BASE_NOMBRE DE LA BASE
OBJETOS DE BASE DATOS
OBJETOS
TABLAS
CONSULTAS
FORMULARIOS
INFORMES
CREACION DE TABLAS
Créate table_nombre de la tabla
TIPOS DE DATOS
DOMINIOS
CONSULTAS DE TABLAS
SELECT [ ALL / DISTINC ] [ * ] / [ListaColumnas_Expresiones] AS [Expresion]
FROM Nombre_Tabla_Vista
WHERE Condiciones
ORDER BY ListaColumnas [ ASC / DESC ]
BORRAR TABLAS
droptable_nombre de la tabla
MODIFICAR TABLAS
Para modificar una tabla, use un comando ALTER TABLE. Puede usar un comando ALTER TABLE para agregar, modificar o quitar las restricciones o columnas (eliminar). Un comando ALTER TABLE tiene la siguiente sintaxis:
ALTER TABLE table_name predicate
RESTRICCIONES
as restricciones se puede definir cuando creamos la tabla (CREATE TABLE) o posteriormente con la sentencia ALTER TABLE.
Las posibles restricciones son:
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
DEFAULT
INSTRUCCIONES DDL
TRANSACCIONES
USE NorthWind
DECLARE @Error int
--Declaramos una variable que utilizaremos para almacenar un posible código de error
BEGIN TRAN
--Iniciamos la transacción
UPDATE Products SET UnitPrice=20 WHERE ProductName ='Chai'
--Ejecutamos la primera sentencia
SET @Error=@@ERROR
--Si ocurre un error almacenamos su código en @Error
--y saltamos al trozo de código que deshara la transacción. Si, eso de ahí es un
--GOTO, el demonio de los programadores, pero no pasa nada por usarlo
--cuando es necesario
IF (@Error<>0) GOTO TratarError
--Si la primera sentencia se ejecuta con éxito, pasamos a la segunda
UPDATE Products SET UnitPrice=20 WHERE ProductName='Chang'
SET @Error=@@ERROR
--Y si hay un error hacemos como antes
IF (@Error<>0) GOTO TratarError
--Si llegamos hasta aquí es que los dos UPDATE se han completado con
--éxito y podemos "guardar" la transacción en la base de datos
COMMIT TRAN
TratarError:
--Si ha ocurrido algún error llegamos hasta aquí
If @@Error<>0 THEN
BEGIN
PRINT 'Ha ecorrido un error. Abortamos la transacción'
--Se lo comunicamos al usuario y deshacemos la transacción
--todo volverá a estar como si nada hubiera ocurrido
ROLLBACK TRAN
END
COMMIT
BEGIN TRANSACTION;
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT TRANSACTION;
ROLLBACK
El siguiente ejemplo muestra el efecto de revertir una transacción nombrada.
USE tempdb;
GO
CREATE TABLE ValueTable ([value] int);
GO
DECLARE @TransactionName varchar(20) = 'Transaction1';
BEGIN TRAN @TransactionName
INSERT INTO ValueTable VALUES(1), (2);
ROLLBACK TRAN @TransactionName;
INSERT INTO ValueTable VALUES(3),(4);
SELECT [value] FROM ValueTable;
DROP TABLE ValueTable;
SINTAXIS SELECT
SELECT "nom de colonne" FROM "nombre_tabla";
OPERACIONES COMPARACIONES
BETWEEN
Por ejemplo, podríamos desear seleccionar la visualización de toda la información de ventas entre el 06 de enero de 1999, y el 10 de enero de 1999, en la Tabla Store_Information,
SELECT *
FROM Store_Information
WHERE Txn_Date BETWEEN '06-Jan-1999' AND '10-Jan-1999';
IN
Por ejemplo, podríamos desear seleccionar todos los registros para los negocios de Los Ángeles y San Diego en la Tabla Store_Information,
SELECT *
FROM Store_Information
WHERE Store_Name IN ('Los Angeles', 'San Diego');
LIKE
Deseamos encontrar todos los negocios cuyos nombres contengan ‘AN’. Para hacerlo, ingresamos,
SELECT *
FROM Store_Information
WHERE Store_Name LIKE '%AN%';
IS NULL
DISEÑO DE BASE DE DATOS
FUNCIONE
unción BDPROMEDIO
Devuelve el promedio de las entradas seleccionadas en la base de datos.
Función BDCONTAR
Cuenta el número de celdas que contienen números en una base de datos.
Función BDCONTARA
Cuenta el número de celdas no vacías en una base de datos.
Función BDEXTRAER
Extrae de una base de datos un único registro que cumple los criterios especificados.
Función BDMAX
Devuelve el valor máximo de las entradas seleccionadas de la base de datos.
Función BDMIN
Devuelve el valor mínimo de las entradas seleccionadas de la base de datos.
Función BDPRODUCTO
Multiplica los valores de un campo concreto de registros de una base de datos que cumplen los criterios especificados.
Función BDDESVEST
Calcula la desviación estándar a partir de una muestra de entradas seleccionadas en la base de datos.
Función BDDESVESTP
Calcula la desviación estándar en función de la población total de las entradas seleccionadas de la base de datos.
Función BDSUMA
Suma los números de la columna de campo de los registros de la base de datos que cumplen los criterios.
Función BDVAR
Calcula la varianza a partir de una muestra de entradas seleccionadas de la base de datos.
Función BDVARP
Calcula la varianza a partir de la población total de entradas seleccionadas de la base de datos.
HAVING
SUBCONSULTAS
Una subconsulta es una consulta que está anidado dentro de una SELECT, INSERT, UPDATE, o DELETEdeclaración, o dentro de otra subconsulta. Una subconsulta se puede utilizar en cualquier lugar donde se permita una expresión
En este ejemplo, una subconsulta se usa como una expresión de columna denominada MaxUnitPrice en una declaración SELECT.
USE AdventureWorks2016;
GO
SELECT Ord.SalesOrderID, Ord.OrderDate,
(SELECT MAX(OrdDet.UnitPrice)
FROM Sales.SalesOrderDetail AS OrdDet
WHERE Ord.SalesOrderID = OrdDet.SalesOrderID) AS MaxUnitPrice
FROM Sales.SalesOrderHeader AS Ord;
GO
EXITS
UNIONES
UPDATE
La consulta SQL UPDATE se utiliza para modificar los registros existentes en una tabla.
UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];
DELETE
la instrucción DELETE elimina uno o más registros de una tabla . Se puede definir un subconjunto para su eliminación mediante una condición, de lo contrario, se eliminarán todos los registros
DELETE FROM table_name
WHERE [condition];
DELETE FROM table_name;
DELETE FROM Customers;
VISTA,CREACION DE VISTA
crea una vista en la tabla de empleados para restringir el acceso solo a aquellos registros en los que el departamento es 201:
CREATE VIEW view_dept_201
AS SELECT emp_id, name, hire_date
FROM gdb.employees
WHERE department = 201;
borrar vista
drop view
SINÓNIMOS
ESTA INSTRUCCIÓN SE PONE AL CREAR SINÓNIMOS
CREATE SYNONYM PEGASO.OBSEMULT FOR
GAS.OBSEMULT@DESA;
CREATE PUBLIC SYNONYM PEGASO.OBSEMULT
FOR GAS.OBSEMULT@DESA;
CREATE PUBLIC DATABASE LINK DESA
CONNECT TO DESA
IDENTIFIED BY ud953_fl
USING "DESA";
DECODE
En este ejemplo, se consulta la tabla para ver quien esta ejecutando algún comando en la base de datos. La columna COMAND muestra un código numérico para cada comando, pero se pretende reportar una descripción textual para un conjunto reducido de comandos. Para esto se utiliza DECODE examinando el contenido de la columna COMMAND.
SELECT sid, serial#, username,
DECODE (command,
0, "None",
2, "Insert",
3, "Select",
6, "Update",
7, "Delete",
8, "Drop",
"Other") cmd
FROM v$session
WHERE type <> "BACKGROUND";
RESULTADO:
SID SERIAL# USERNAME CMD
----- ----------- ----------------- -------
7 147 None
8 147 None
9 24 CHIPD Other
11 4 CHIPD Select
FUNCIONES XML
Estas son las funciones mas usadas:
*position(). Devuelve la posición del nodo actual relativa al conjunto de nodos del contexto.
*count(conjuntoNodos). Devuelve el numero de nodos del conjunto pasado como parámetro.
*concat(cadena1, cadena2,...). Devuelve la concatenación de sus argumentos.
*substring(cadena, inicio, fin). Devuelve la subcadena que comienza en la posición inicio y termina en fin
Estas son las funciones mas usadas:
*position(). Devuelve la posición del nodo actual relativa al conjunto de nodos del contexto.
*count(conjuntoNodos). Devuelve el numero de nodos del conjunto pasado como parámetro.
*concat(cadena1, cadena2,...). Devuelve la concatenación de sus argumentos.
*substring(cadena, inicio, fin). Devuelve la subcadena que comienza en la posición inicio y termina en fin
producto cruzado o cartesiano de tablas

CUBE Y ROLLUP
Vamos a trabajar con la siguiente tabla. Además una tabla como esta aunque no sea real sirve perfectamente para mostrar como funciona WITH CUBE ROLLUP.
Mientras que WITH CUBE genera un conjunto de resultados que muestra agregados para todas las combinaciones de valores de las columnas seleccionadas, WHIT ROLLUP genera un conjunto de resultados que muestra agregados para una jerarquía de valores de las columnas seleccionadas.
Es decir, con CUBE aparecen los resultado totalizados por TipoTransaccion, por Divisa, y por totales absolutos, mientras que con ROLLUP sólo aparecerían los totales agrupados por lo que nosotros indiquemos.
SELECT 'TipoTransacion'=
CASE
WHEN
GROUPING(TipoTransaccion)=1 THEN 'Todas'
ELSE
ISNULL(TipoTransaccion, 'N/D')
END,
'Divisa'=
CASE
WHEN
GROUPING(Divisa)=1 THEN 'Todas'
ELSE
ISNULL(Divisa, 'N/D')
END,
SUM(Cantidad)
Cantidad
FROM
Movimientos
GROUP
BY TipoTransaccion, Divisa
WITH
ROLLUP
GROUPING
Esta instrucción sirve para asegurarnos de que todas las sumas de las ventas esten en GROUP BY
Esta instrucción sirve para asegurarnos de que todas las sumas de las ventas esten en GROUP BY

ASOCIACIÓN DE TABLAS
Esta seria una instrucción para asociar una tabla:
Esta seria una instrucción para asociar una tabla:
ALTER TABLE `tcliente_realizado`
ADD CONSTRAINT `tcliente_tnombreProducto`
FOREIGN KEY (`id_contacto`)
REFERENCES `bdPais`.`tCodigoPostal` (
`id_Cliente`)
ON DELETE NO ACTION ON UPDATE NO ACTION;
BORRADO DE REGISTROS
Para eliminar los registros de una tabla usamos el comando "delete":
DELETE FROM usuarios;
Automáticamente mostrara un mensaje indicando la cantidad de registros que ha eliminado.
Si no queremos eliminar todos los registros, sino solamente algunos, debemos indicar cual o cuales, para ello utilizamos el comando "DELETE" junto con la clausula "WHERE" con la cual establecemos la condición que deben cumplir los registros a borrar.
Por ejemplo, queremos eliminar aquel registro cuyo nombre de usuario es "ROY":
DELETE FROM usuarios;
WHERE nombre="ROY";
ACTUALIZACIÓN DE REGISTROS
Update es la instrucción del lenguaje SQL que nos sirve para modificar los registros de una tabla. Como para el caso de Delete, necesitamos especificar por medio de Where cuáles son los registros en los que queremos hacer efectivas nuestras modificaciones. Además, obviamente, tendremos que especificar cuáles son los nuevos valores de los campos que deseamos actualizar.
UPDATE nombre_tabla Set nombre_campo1 = valor_campo1, nombre _campo2 = valor_campo2,... WHERE condiciones_ de_ selección
Un ejemplo mas aplicado:
UPDATE clientes Set nombre="Roy" WHERE nombre="Alexander"
Mediante esta sentencia cambiamos el nombre Roy por el de Alexander en todos los registros cuyos nombres sea Roy.
Cambien deben ser cuidadoso de no olvidarse de usar WHERE, de lo contrario, modificaremos todos los registros de nuestra tabla.
UPDATE producto Set precio=990, descuento=25
Esta sentencia modificaría el campo precio y el campo descuento en todos los productos de la tabla producto. Si tenemos una tabla con miles de productos con esa sentencia se actualizaran todos, de modo que la totalidad de los registros tendrían el mismo precio y el mismo descuento.
obtencion de datos multiples tablas

FUNCIONES DE CONVERSIÓN
USE Northwind
go
Select SUBSTRING(ProductName, 1, 30) As Producto, UnitPrice As Precio
FROM Products Where CAST(UnitPrice As int) LIKE ‘3%’
go
— Note que Cast convierte el Precio (UnitPrice) a Entero (int)
go
Select SUBSTRING(ProductName, 1, 30) As Producto, UnitPrice As Precio
FROM Products Where CAST(UnitPrice As int) LIKE ‘3%’
go
— Note que Cast convierte el Precio (UnitPrice) a Entero (int)
— Use CONVERT.
USE Northwind
GO
Select SUBSTRING(ProductName, 1, 30) AS Producto, UnitPrice
FROM Products Where CONVERT(int, UnitPrice) LIKE ‘3%’
GO
USE Northwind
GO
Select SUBSTRING(ProductName, 1, 30) AS Producto, UnitPrice
FROM Products Where CONVERT(int, UnitPrice) LIKE ‘3%’
GO
AGRUPACIÓN DE RESULTADOS AVANZADOS
SELECT EmployeeID, COUNT(*) AS
TotalPedidos, COUNT(ShipRegion) AS FilasNoNulas,
MIN(ShippedDate) AS FechaMin,
MAX(ShippedDate) AS FechaMax,
SUM(Freight) PesoTotal, AVG(Freight)
PesoPromedio
FROM Orders
GROUP BY EmployeeID
En este caso obtenemos los mismos datos pero agrupándolos por empleado, de modo que para cada empleado de la base de datos sabemos cuantos pedidos ha realizado, cuando fue el primero y ultimo, etc.

SEMANTICA
La consulta siguiente obtiene las frases clave que se identificaron en el documento de ejemplo.Muestra los resultados en orden descendente por la puntuación que clasifica la importancia estadística de cada frase clave.
Esta consulta llama a la función semantickeyphrasetable.
SET @Title = 'Sample Document.docx'
SELECT @DocID = DocumentID
FROM
Documents
WHERE
DocumentTitle = @Title
SELECT @Title AS Title, keyphrase,
score
FROM
SEMANTICKEYPHRASETABLE(Documents, *, @DocID)
ORDER
BY score DESC
RELACIONES SIN IGUALDAD
Los operadores de comparación comprueban si dos expresiones son iguales. Se pueden usar en todas las expresiones, excepto en las de los tipos de datos text, ntext o image. En la siguiente tabla se presentan los operadores de comparación Transact-SQL.
Operador | Significado |
---|---|
= (Es igual a) | Igual a |
> (Mayor que) | Mayor que |
< (Menor que) | Menor que |
>= (Mayor o igual a) | Mayor o igual que |
<= (Menor o igual a) | Menor o igual que |
<> (No es igual a) | No es igual a |
!= (No es igual a) | No es igual a (no es del estándar ISO) |
!< (No menor que) | No es menor que (no es del estándar ISO) |
!> (no mayor que) | No es mayor que (no es del estándar ISO) |
PRECEDENCIA DE OPERADORES
Los operadores tienen los niveles de prioridad que se muestran en la siguiente tabla. Un operador con un nivel más altos se evalúa antes que un operador con un nivel más bajo.
Nivel | Tipo de operación | Operador |
---|---|---|
1 | Principal | . , [] () |
2 | Unario | ! not |
3 | Multiplicativo | * / % |
4 | Aditivo | + - |
5 | Ordenación | < > <= >= |
6 | Igualdad | = != <> |
7 | AND condicional | and && |
8 | OR condicional | or || |
FUNCIONES DE FECHA Y MANEJO DE FECHAS E INTERVALOS
Argumentos que se indican como time_exp puede ser el nombre de una columna, el resultado de otra función escalar, o un escape de hora ODBC o escape de marca de tiempo de ODBC, donde el tipo de datos subyacente podría representarse como SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME y SQL_TYPE_TIMESTAMP.
El CURRENT_DATE y CURRENT_TIME CURRENT_TIMESTAMP timedate funciones escalares se han agregado en ODBC 3.0 para alinearse con SQL-92.
Función | Descripción |
---|---|
() CURRENT_DATE(ODBC 3.0) | Devuelve la fecha actual. |
CURRENT_TIME [(precisión de tiempo )](ODBC 3.0) | Devuelve la hora local actual. El precisión de tiempo argumento determina la precisión de segundos del valor devuelto. |
CURRENT_TIMESTAMP [( precisión de la marca de tiempo )] (ODBC 3.0) | Devuelve la fecha local actual y la hora local como un valor de marca de tiempo.El precisión de la marca de tiempo argumento determina la precisión de segundos de la marca de tiempo devuelto. |
CURDATE () (ODBC 1.0) | Devuelve la fecha actual. |
() CURTIME (ODBC 1.0) | Devuelve la hora local actual. |
DAYNAME ( date_exp )(ODBC 2.0) | Devuelve una cadena de caracteres que contiene el nombre específico del origen de datos del día (por ejemplo, Sunday a Saturday o Sun. a Sat. para un origen de datos que utiliza inglés, o bien Sonntag a Samstag para un origen de datos que utiliza alemán) para la parte del día date_exp. |
DAYOFMONTH (date_exp ) (ODBC 1.0) | Devuelve el día del mes en función del campo de mes en date_exp como un valor entero en el intervalo de 1 a 31. |
DAYOFWEEK (date_exp ) (ODBC 1.0) | Devuelve el día de la semana basado en el campo de la semana en date_expcomo un valor entero en el intervalo de 1 a 7, donde 1 representa el domingo. |
DAYOFYEAR ( date_exp) (ODBC 1.0) | Devuelve el día del año según el campo año en date_exp como un valor entero en el intervalo de 1-366. |
EXTRAER ( extraer campo FROM origen de extracción ) (ODBC 3.0) | Devuelve el extraer campo parte de la origen de extracción. El origen de extracción argumento es una expresión de intervalo o datetime. El extraer campoargumento puede ser una de las siguientes palabras clave: AÑO MES DÍA HORA MINUTO SEGUNDO La precisión del valor devuelto es definido por la implementación. La escala es 0, a menos que se especifica en segundo lugar, en cuyo caso la escala no es menor que la precisión de fracciones de segundos de la origen de extracción campo. |
HORA ( time_exp )(ODBC 1.0) | Devuelve la hora en función del campo de hora en time_exp como un valor entero en el intervalo de 0 a 23. |
MINUTO ( time_exp )(ODBC 1.0) | Devuelve el minuto basándose en el campo de miuntos en time_exp como un valor entero en el intervalo de 0 a 59. |
MES ( date_exp )(ODBC 1.0) | Devuelve el mes según el campo de mes en date_exp como un valor entero en el intervalo de 1 a 12. |
MONTHNAME (date_exp ) (ODBC 2.0) | Devuelve una cadena de caracteres que contiene el nombre específico del origen de datos del mes (por ejemplo, January a December o enero a diciembre de un origen de datos que utiliza a inglés, o bien Januar a Dezember para un origen de datos que utiliza alemán) para la parte del mes date_exp. |
AHORA () (ODBC 1.0) | Devuelve la fecha y hora como un valor de marca de tiempo actual. |
TRIMESTRE ( date_exp) (ODBC 1.0) | Devuelve el trimestre en date_exp como un valor entero en el intervalo de 1 a 4, donde 1 representa el 1 de enero hasta el 31 de marzo. |
SEGUNDO ( time_exp )(ODBC 1.0) | Devuelve el segundo basándose en el segundo campo de time_exp como un valor entero en el intervalo de 0 a 59. |
TIMESTAMPADD (intervalo, integer_exp, timestamp_exp ) (ODBC 2.0) | Devuelve la marca de tiempo que se calcula sumando integer_exp intervalos de tipo intervalo a timestamp_exp. Los valores válidos de intervalo son las siguientes palabras clave: SQL_TSI_FRAC_SECOND SQL_TSI_SECOND SQL_TSI_MINUTE SQL_TSI_HOUR SQL_TSI_DAY SQL_TSI_WEEK SQL_TSI_MONTH SQL_TSI_QUARTER SQL_TSI_YEAR donde las fracciones de segundo se expresan en milmillonésimas de segundo.Por ejemplo, la siguiente instrucción SQL devuelve el nombre de cada empleado y su fecha de aniversario: SELECT NAME, {fn TIMESTAMPADD(SQL_TSI_YEAR, 1, HIRE_DATE)} FROM EMPLOYEES Si timestamp_exp es un valor de tiempo y intervalo especifica los días, semanas, meses, trimestres o años, la parte de fecha de timestamp_exp se establece en la fecha actual calcular la marca de tiempo resultante. Si timestamp_exp es un valor de fecha y intervalo especifica fracciones segundos, segundos, minutos u horas, la parte de hora timestamp_exp se establece en 0 antes de calcular la marca de tiempo resultante. Una aplicación determina qué intervalos es compatible con un origen de datos mediante una llamada a SQLGetInfo con la opción SQL_TIMEDATE_ADD_INTERVALS. |
TIMESTAMPDIFF no (intervalo, timestamp_exp1, timestamp_exp2 )(ODBC 2.0) | Devuelve el número entero de intervalos de tipo intervalo mediante el cual timestamp_exp2 es mayor que timestamp_exp1. Los valores válidos de intervaloson las siguientes palabras clave: SQL_TSI_FRAC_SECOND SQL_TSI_SECOND SQL_TSI_MINUTE SQL_TSI_HOUR SQL_TSI_DAY SQL_TSI_WEEK SQL_TSI_MONTH SQL_TSI_QUARTER SQL_TSI_YEAR donde las fracciones de segundo se expresan en milmillonésimas de segundo.Por ejemplo, la siguiente instrucción SQL devuelve el nombre de cada empleado y el número de años que ha sido contratado piensan: SELECT NAME, {fn TIMESTAMPDIFF(SQL_TSI_YEAR, {fn CURDATE()}, HIRE_DATE)} FROM EMPLOYEES Si una de las expresiones de marca de tiempo es un valor de tiempo y intervaloespecifica los días, semanas, meses, trimestres o años, la parte de la fecha de esa marca de tiempo se establece en la fecha actual antes de calcular la diferencia entre las marcas de tiempo. Si una de las expresiones de marca de tiempo es un valor de fecha y intervaloespecifica fracciones segundos, segundos, minutos u horas, la parte de hora de esa marca de tiempo se establece en 0 antes de calcular la diferencia entre las marcas de tiempo. |
Estimado estduainte, lo ejercico deben ser creados con sus datos.
ResponderEliminar