COMANDOS SQL
MEDIA
select SECCIÓN,avg(precio) AS MEDIA from PRODUCTOS
GROUP BY SECCIÓN HAVING SECCIÓN='DEPORTES' OR SECCIÓN='CERÁMICA'
MAXIMO
select SECCIÓN,max(precio)as maximo from PRODUCTOS
where SECCIÓN='confección'
group by SECCIÓN
FECHA DE HOY
select fecha,getdate()from PRODUCTOS
DIFERENCIA FECHAS
select NOMBREARTÍCULO,fecha,getdate() AS FECHA_ACTUAL,
DATEDIFF("YYYY",FECHA ,GETDATE()) AS DIFERENCIA
from PRODUCTOS
CONVERTIR FORMATO FECHA
select NOMBREARTÍCULO,CONVERT(NVARCHAR(20),fecha,103) AS
FECHA,CONVERT(NVARCHAR(20),getdate(),109) AS FECHA_ACTUAL,
DATEDIFF("YYYY",FECHA ,GETDATE()) AS DIFERENCIA
from PRODUCTOS
OPERACIONES Y REDONDEO
SELECT NOMBREARTÍCULO,PRECIO,ROUND((PRECIO*0.21),2) AS
IVA,ROUND((PRECIO*1.21),3) AS PRECIO_CON_IVA FROM PRODUCTOS
BUSCAR RELACIONANDO TABLAS
SELECT EMPRESA,UNIDADES,NOMBREARTÍCULO FROM PRODUCTOS
INNER JOIN [PRODUCTOS- PEDIDOS]
ON PRODUCTOS.CÓDIGOARTÍCULO=[PRODUCTOS- PEDIDOS].[CÓDIGO
ARTÍCULO]
INNER JOIN PEDIDOS
ON [PRODUCTOS- PEDIDOS].[NÚMERO DE PEDIDO]=PEDIDOS.[NÚMERO DE
PEDIDO]
INNER JOIN CLIENTES
ON PEDIDOS.[CÓDIGO CLIENTE]=CLIENTES.CÓDIGOCLIENTE
WHERE RESPONSABLE='ANGEL MARTÍNEZ' AND PEDIDOS.[NÚMERO DE PEDIDO]=1
Unir dos tablas
select * from PRODUCTOS where SECCIÓN='deportes'
unión
select * from productosNuevos where sección='deportes
de riesgo'
HOJA DE EJERCICIOS SQL
select dirección,teléfono,población as residencia from CLIENTES
order by POBLACIÓN desc
select población from CLIENTES
group by POBLACIÓN
select sección,avg(precio) as suma_seccion from PRODUCTOS
group by SECCIÓN
select sección,avg(precio) as media_seccion from PRODUCTOS
group by SECCIÓN having not SECCIÓN='juguetería'
select SECCIÓN, COUNT(SECCIÓN) AS CUENTA FROM PRODUCTOS
GROUP BY SECCIÓN HAVING SECCIÓN='DEPORTES'
PROPIEDAD DISTNCT(NO REPITE)
SELECT DISTINCT RESPONSABLE,EMPRESA FROM CLIENTES
INNER JOIN PEDIDOS
ON CLIENTES.CÓDIGOCLIENTE=PEDIDOS.[CÓDIGO CLIENTE]
WHERE POBLACIÓN='MADRID'
CREAR LINEA
INSERT INTO CLIENTES
(CÓDIGOCLIENTE,EMPRESA,POBLACIÓN,RESPONSABLE,HISTORIAL)
VALUES('CT90','NORAY','CADIZ','MAGICO GONZALEZ',NULL)
LINEA NUEVA CON DATOS DE OTRA LINEA
INSERT INTO CLIENTES
SELECT'CT57',EMPRESA,DIRECCIÓN,POBLACIÓN,TELÉFONO,'RAMON',HISTORIAL
FROM CLIENTES
WHERE CÓDIGOCLIENTE='CT21'
MODIFICAR ALGUN CAMPO
UPDATE CLIENTES
SET RESPONSABLE='PACO'
WHERE CÓDIGOCLIENTE='CT57'
SUBCONSULTAS
select SECCIÓN,NOMBREARTÍCULO FROM PRODUCTOS
WHERE PRECIO > (SELECT AVG(PRECIO) FROM PRODUCTOS)
SELECT * FROM PRODUCTOS
WHERE PRECIO > (SELECT MAX(PRECIO) FROM PRODUCTOS
WHERE SECCIÓN='CERÁMICA')
SELECT * FROM PRODUCTOS
WHERE PRECIO >ALL (SELECT PRECIO FROM PRODUCTOS
WHERE SECCIÓN='CERÁMICA')
SELECT * FROM PRODUCTOS
INNER JOIN [PRODUCTOS- PEDIDOS]
ON PRODUCTOS.CÓDIGOARTÍCULO=[PRODUCTOS- PEDIDOS].[CÓDIGO ARTÍCULO]
WHERE UNIDADES >20
SELECT NOMBREARTÍCULO FROM PRODUCTOS
WHERE CÓDIGOARTÍCULO IN (SELECT [CÓDIGO ARTÍCULO] FROM [PRODUCTOS-
PEDIDOS]
WHERE UNIDADES >20)
FUNCION ACTUALIZAR
update PRODUCTOS set PRECIO=precio+10
WHERE SECCIÓN='DEPORTES'
update PRODUCTOS set SECCIÓN='DEPORTIVOS'
WHERE SECCIÓN='DEPORTES'
FUNCION CREAR
SELECT * INTO [CLIENTES MADRID] FROM CLIENTES
WHERE POBLACIÓN='MADRID'
PROGRAMACION
declare @fecha nchar(25)
SET @fecha= CONVERT(NVARCHAR(20),GETDATE(),111)
PRINT 'HOY ES '+ @fecha
PROGRAMACION IF
DECLARE @EDAD INT
DECLARE @NOMBRE NVARCHAR(8)
SET @EDAD=25
SET @NOMBRE='MARCOS'
IF(@EDAD<18)
BEGIN
PRINT @NOMBRE+' ERES MAYOR DE EDAD'
END
ELSE
BEGIN
SELECT @NOMBRE+' ERES MENOR DE EDAD' AS RESULTADO
END
FUNCIONES CREARLA
CREATE FUNCTION MANOLI(@I NVARCHAR(10))
RETURNS NVARCHAR(10)
AS
BEGIN
RETURN 'HOLA ' + @I
END
LLAMARLA
PRINT [Link]('JUAN')
FUNCIONES RESULTADO TABLA
CREATE FUNCTION PAGO(@I NVARCHAR(50))
RETURNS TABLE
AS
RETURN (SELECT [FORMA DE PAGO],[NÚMERO DE PEDIDO] FROM PEDIDOS
INNER JOIN CLIENTES
ON CLIENTES.CÓDIGOCLIENTE=PEDIDOS.[CÓDIGO CLIENTE]
WHERE EMPRESA=@I)
SELECT * from [Link]('BELTRÁN E HIJOS')
function [dbo].[articulo](@i nvarchar(20))
returns table
as
return(select NOMBREARTÍCULO,CÓDIGOCLIENTE,[FORMA DE PAGO],PEDIDOS.[NÚMERO
DE PEDIDO] FROM PRODUCTOS
INNER JOIN [PRODUCTOS- PEDIDOS]
ON PRODUCTOS.CÓDIGOARTÍCULO=[PRODUCTOS- PEDIDOS].[CÓDIGO ARTÍCULO]
INNER JOIN PEDIDOS
ON [PRODUCTOS- PEDIDOS].[NÚMERO DE PEDIDO]=PEDIDOS.[NÚMERO DE PEDIDO]
INNER JOIN CLIENTES
ON PEDIDOS.[CÓDIGO CLIENTE]=CLIENTES.CÓDIGOCLIENTE
WHERE EMPRESA=@I)
SELECT * FROM ARTICULO('BELTRÁN E HIJOS')
VARIOS PARAMETROS
function [dbo].[articulo](@i nvarchar(20),@B NVARCHAR(20))
returns table
as
return(select NOMBREARTÍCULO,CÓDIGOCLIENTE,[FORMA DE PAGO],PEDIDOS.[NÚMERO
DE PEDIDO],UNIDADES FROM PRODUCTOS
INNER JOIN [PRODUCTOS- PEDIDOS]
ON PRODUCTOS.CÓDIGOARTÍCULO=[PRODUCTOS- PEDIDOS].[CÓDIGO ARTÍCULO]
INNER JOIN PEDIDOS
ON [PRODUCTOS- PEDIDOS].[NÚMERO DE PEDIDO]=PEDIDOS.[NÚMERO DE PEDIDO]
INNER JOIN CLIENTES
ON PEDIDOS.[CÓDIGO CLIENTE]=CLIENTES.CÓDIGOCLIENTE
WHERE EMPRESA=@I OR POBLACIÓN=@B)
SELECT * FROM ARTICULO('LA MODERNA','OVIEDO')
PROCEDIMIENTOS ALMACENADOS
create procedure precio(@p nvarchar(20), @pre int)
as
UPDATE PRODUCTOS
SET PRECIO='@pre'
WHERE CÓDIGOARTÍCULO='@P'
EXECUTE PRECIO AR03,300
Créate PROCEDURE [dbo].[EDAD](@NACIMIENTO DATETIME)
AS
BEGIN
DECLARE @EDAD1 NVARCHAR(25)
SET @EDAD1=DATEDIFF("D",@NACIMIENTO,GETDATE())/365;
PRINT @EDAD1
END
EXECUTE EDAD '20-11-1984'
TRIGGER
CREATE TRIGGER INSERTADO ON PRODUCTOS
FOR INSERT
AS
DECLARE @COD NVARCHAR(4)
SELECT @COD = CÓDIGOARTÍCULO FROM inserted
INSERT INTO HISTORIAL VALUES(@COD,GETDATE(),'REGISTRO
INSERTADO',SYSTEM_USER)
INSERT INTO PRODUCTOS VALUES
('AR78','FUTBOL','PIEEO','150',NULL,'TRUE','TOWN')
CREATE TRIGGER BORRADO ON PRODUCTOS
FOR DELETE
AS
DECLARE @COD NVARCHAR(4)
SELECT @COD = CÓDIGOARTÍCULO FROM deleted
INSERT INTO HISTORIAL VALUES(@COD,GETDATE(),'REGISTRO
BORRADO',SYSTEM_USER)
DELETE FROM PRODUCTOS WHERE NOMBREARTÍCULO='PAALO'
TRIGGER ACTUALIZAR ON PRODUCTOS
FOR UPDATE
AS
SET NOCOUNT ON
DECLARE @COD NVARCHAR(4)
SELECT @COD=CÓDIGOARTÍCULO FROM INSERTED
INSERT INTO HISTORIAL VALUES(@COD,GETDATE(),'ARTICULO
MODIFICADO',SYSTEM_USER)
UPDATE PRODUCTOS
SET NOMBREARTÍCULO='PALITO'
WHERE NOMBREARTÍCULO='SERRUCHO'
TRIGGER TRABAJANDO SOBRE VISTA PARA INSERTAR
EN DIFERENTES TABLAS
CREATE TRIGGER PEDIDOS ON tiendas
INSTEAD OF INSERT
AS
INSERT INTO ZARA SELECT N_ENVIO,COD_PRO,NOMBRE,CANTIDAD FROM INSERTED
WHERE DESTINO='ZARA'
INSERT INTO MAXIMO SELECT N_ENVIO,COD_PRO,NOMBRE,CANTIDAD FROM INSERTED
WHERE DESTINO='MAXIMO'
INSERT INTO SPRING SELECT N_ENVIO,COD_PRO,NOMBRE,CANTIDAD FROM INSERTED
WHERE DESTINO='SPRING'
COMPROBAR LOS TRIGGER CREADOS A UNA TABLA
SP_HELPTRIGGER PRODUCTOS
CREAR VISTA
CREATE VIEW PEPE
AS
SELECT * FROM PRODUCTOS
CREAR VISTA CON UNION PARA TABLAS
create view tiendas
as
SELECT N_ENVIO,COD_PRO,NOMBRE,CANTIDAD,'ZARA' AS DESTINO FROM ZARA
UNION ALL
SELECT N_ENVIO,COD_PRO,NOMBRE,CANTIDAD,'MAXIMO' AS DESTINO FROM MAXIMO
UNION ALL
SELECT N_ENVIO,COD_PRO,NOMBRE,CANTIDAD,'SPRING' AS DESTINO FROM SPRING