Pop

Curso de querys SQL -15 Scripts con While e IF ✌


15. Curso SQL SERVER - Scripts con While e IF

  • Hola a todos , en esta ocasión vamos continuar  con nuestro curso sobre SQL SERVER. En este capítulo del curso vamos a  practicar con las instrucciones WHILE e IF-ELSE .Estas instrucciones las utilizaremos en un script que ejecute una condición n veces y haga una cosa u otro en función de una condición.
  • La lógica de estas instrucciones es similar a la de sus instrucciones homólogas en los lenguajes de programación de alto nivel. En este mismo blog tenemos ejemplo del uso de estas dos instrucciones en C#:

  • En el siguiente vídeo podéis ver como utilizo estas dos instrucciones en un script:



    • También os dejo el código del ejemplo hecho en el vídeo:
    - IF ELSE,WHILE, 
    DECLARE @contador int;
    SET @contador=0;

    DECLARE @contador int;
    SET @contador=0;

    WHILE(@contador<10)
    BEGIN

    --print(CONVERT(VARCHAR(10), @contador))
    IF(@contador<3)
    BEGIN
    print('SOY MENOR QUE 3  ' + CONVERT(VARCHAR(10), @contador))
    END
    ELSE IF(@contador>=3 AND @contador<6)
    BEGIN
    print('ESTOY ENTRE 3 Y 6  ' + CONVERT(VARCHAR(10), @contador))
    END
    ELSE
    BEGIN
    print('SOY MAYOR QUE 6  ' + CONVERT(VARCHAR(10), @contador))
    END


    SET @contador = @contador+1; 

    END

    Curso de querys SQL -14 Trabajando con operadores lógicos 👌


    14. Curso SQL SERVER - Trabajando con operadores lógicos

    • Hola a todos , en esta ocasión vamos continuar  con nuestro curso sobre SQL SERVER. En este capítulo del curso vamos a  practicar con los operadores lógicos.Los utilizaremos para verificar una condición y en función de esto devolver unos datos u otros.
    • En el capítulo de hoy vamos a ver ejemplos del uso de estos cuatro operadores:
      • AND -->Verdadera si todas las comparaciones son verdaderas.
      • OR -->Verdadera si una de las dos comparaciones es verdadera.
      • NOT-->Nos da la fecha y hora UTC del momento en que se ejecuta.
      • BETWEEN--> Verdadero si el operando está dentro de un intervalo.

    En el vídeo veremos ejemplos de estos tres operadores pero tenéis información más detallada en este enlace: https://msdn.microsoft.com/es-es/library/ms189773(v=sql.120).aspx


    *También so dejo el código de las funciones utilizadas en el vídeo:

    --EJEMPLO DEL USO DE AND
    SELECT * FROM SESIONES WHERE IdUsuario=1 AND Token='8D631184-6030-440C-B202-25CB974B0A6E'

    --EJEMPLO DEL USO DE OR
    SELECT * FROM SESIONES WHERE IdUsuario=1 OR Token='5A7A50D8-5D68-46FF-A7E0-5F0A1815E645'

    --EJEMPLO DEL USO DE NOT
    SELECT * FROM SESIONES where IdUsuario not in(
    SELECT IdUsuario FROM SESIONES WHERE IdUsuario=2 )

    --EJEMPLO DEL USO DE BETWEEN
    DECLARE @fechaInicio date
    DECLARE @fechafin date

    SET @fechaInicio ='2018-07-24 00:00:00.000'
    SET @fechaFin ='2018-07-29 00:00:00.000'

    SELECT * FROM EMPLEADOS WHERE FechaAlta between @fechaInicio and @fechaFin

    Curso SQL SERVER -13 Trabajando con funciones de fecha 😎


    13. Curso SQL SERVER - Trabajando con funciones de fechas

    • Hola a todos , en esta ocasión vamos continuar  con nuestro curso sobre SQL SERVER. En este capítulo del curso vamos a  ver como trabajar con funciones para el manejo de valores del tipo fecha.
    • En el capítulo de hoy vamos a ver ejemplos del uso de algunas de las funciones predefinidas que trae incorporadas el motor de SQL. Tendremos ejemplos del uso de de las siguientes funciones:
      •  GETDATE()-->Nos da la fecha y hora del momento en que se ejecuta.
      • DATEPART () -->Obtenemos el valor de una parte de la fecha.
      • GETUTCDATE ( )-->Nos da la fecha y hora UTC del momento en que se ejecuta.
      • DATEADD --> Añadir o dismunuir tiempo a una fecha
      • DATEDIFF () --> Restar dos valores de tipo fecha
    • En el vídeo podéis ver un ejemplo de uso de estas funciones:




    *También so dejo el código de las funciones utilizadas en el vídeo:

    SELECT GETDATE()
    DECLARE @fecha datetime
    SET @fecha = GETDATE()

    SELECT DATEPART ( dd , @fecha )  
    SELECT GETUTCDATE ( )


    DECLARE @fecha2 datetime
    set @fecha2 =GETDATE()

    set @fecha2 = DATEADD (dd , 6 , @fecha2 )  

    print(@fecha)
    print(@fecha2)
    SELECT DATEDIFF ( dd , @fecha2 , @fecha )  

    Curso SQL SERVER -12 Trabajando con cadenas ✔


    12. Curso SQL SERVER - Trabajando con funciones de cadenas

    • Hola a todos , en esta ocasión vamos continuar  con nuestro curso sobre SQL SERVER. En este capítulo del curso vamos a  ver como trabajar con funciones para el manejo de cadenas de texto.
    • En el vídeo vamos a ver ejemplos del uso de algunas de las funciones predefinidas. Veremos ejemplos del uso de la función  SUBSTRING , de la función LEN, de la función UPPER , de la función LOWER y de la función RTRIM.


    • Os dejo el código de los ejemplos vistos en el vídeo:


    DECLARE @cadena varchar(500)
    SET @cadena ='    Hola a todos estamos aqui programando   '
    print(@cadena)

    --SUBSTRING
    SELECT SUBSTRING(@cadena,0,5)

    --LEN
    SELECT LEN(@cadena)

    --UPPER
    SELECT UPPER(@cadena)

    --LOWER
    SELECT LOWER(@cadena)

    --TRIM
    SELECT LEN(@cadena)

    SELECT LEN(RTRIM(@cadena))

    Curso SQL SERVER -11 Creando Procedimientos almacenados


    11. Curso SQL SERVER - Creando procedimientos almacenados 

    • Hola a todos , en esta ocasión vamos continuar  con nuestro curso sobre SQL SERVER. En este capítulo del curso vamos a  ver como crear y  llamar a procedimientos almacenados.Un procedimiento almacenado de SQL Server es un grupo de una o varias instrucciones escritas en  Transact-SQL. Ese conjunto de instrucciones pueden utilizarse de una forma  similar a las funciones en los lenguajes de alto nivel.Es una porción de código que puede llamarse desde cualquiera de nuestros scripts.
    • En el vídeo os muestro un ejemplo de creación de un procedimiento almacenado.En el ejemplo calculamos el total de dinero obtenido en pedidos realizados con una determinada moneda.



    • Os dejo también el script de creación de nuestro procedimiento almacenado.Además os dejo el diagrama de tablas de nuestra base de datos de ejemplo. De esta manera es más fácil entender el script .




    -- IMPORTE EN EUROS DE TODOS LOS PEDIDOS QUE SE HAN PAGADO SEGUN LA
    --MONEDA QUE SE PASE COMO PARAMETRO

    USE [PruebasCurso]
    GO
    /****** Object:  StoredProcedure [dbo].[CalcularTotalPorMoneda]    Script Date: 01/08/2018 16:54:39 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO

    ALTER PROCEDURE [dbo].[CalcularTotalPorMoneda](
    @Moneda varchar(10)
    )
    AS
    BEGIN

    SET NOCOUNT ON;

    SELECT SUM(Cantidad*Precio*ValorCambio) as totalImporte FROM PEDIDOS WITH(NOLOCK)
    INNER JOIN MONEDAS WITH(NOLOCK) ON PEDIDOS.IdMoneda = MONEDAS.IdMoneda
    INNER JOIN PEDIDOS_LINEAS   WITH(NOLOCK) ON  PEDIDOS.IdPedido = PEDIDOS_LINEAS.IdPedido
    INNER JOIN PRODUCTOS  WITH(NOLOCK) ON  PEDIDOS_LINEAS.IdProducto = PRODUCTOS.IdProducto
    WHERE MONEDAS.Moneda=@Moneda

    END

    Curso SQL SERVER -10 Añadiendo más tablas a nuestro diseño


    10. Curso SQL SERVER - Añadiendo más tablas a nuestro diseño

    • Hola a todos , en esta ocasión vamos continuar  con nuestro curso sobre SQL SERVER. En este capítulo del curso vamos a resolver la cuestión planteada en la anterior entrada del blog. La pregunta planteada fue la siguiente:  ¿Que tendríamos que hacer para añadir  empleados?¿Que habría que hacer para añadir monedas de distintos países?
    • Para resolver esta pregunta es necesario modificar el diseño de nuestra base de datos.La solución por la que he optado es añadir dos tablas nuevas y relacionarlas con la tabla PEDIDOS, para ello en dicha tabla añadimos dos campos para poder enlazar con esas dos nuevas tablas. Os dejo una imagen del nuevo diseño:

    • En el vídeo tenéis los pasos para construir este nuevo diseño:

    • Como siempre os dejo los scripts para poder crear las nuevas tablas, aunque bajo mi punto de vista es mejor las practiquéis vosotros:
    CREATE TABLE [dbo].[EMPLEADOS](
    [IdEmpleado] [int] IDENTITY(1,1) NOT NULL,
    [Nombre] [varchar](500) NOT NULL,
    [FechaAlta] [datetime] NOT NULL,
     CONSTRAINT [PK_EMPLEADOS] PRIMARY KEY CLUSTERED 
    (
    [IdEmpleado] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    GO

    /****** Object:  Table [dbo].[MONEDAS]    Script Date: 29/07/2018 9:47:11 ******/
    SET ANSI_NULLS ON
    GO

    SET QUOTED_IDENTIFIER ON
    GO

    CREATE TABLE [dbo].[MONEDAS](
    [IdMoneda] [int] IDENTITY(1,1) NOT NULL,
    [Moneda] [varchar](10) NOT NULL,
    [ValorCambio] [float] NOT NULL,
     CONSTRAINT [PK_MONEDAS] PRIMARY KEY CLUSTERED 
    (
    [IdMoneda] ASC
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
    ) ON [PRIMARY]
    GO

    Curso SQL SERVER -9 Como hacer Subconsultas


    9. Curso SQL SERVER - Como hacer Subconsultas

    • Hola a todos , en esta ocasión vamos continuar  con nuestro curso sobre SQL SERVER. En este capítulo del curso vamos a ver la sintaxis necesaria para poder hacer subconsultas. Una subconsulta es una consulta anidada en una instrucción SELECT, INSERT, UPDATE o DELETE, o bien dentro de otra subconsulta. Las consultas se pueden anidar  dentro de otra consulta n veces. 
    • Todas las consultas y ejemplos que estamos haciendo en los vídeos, hasta el momento, los hacemos sobre este esquema de tablas:

    • En esta ocasión el objetivo del ejemplo es obtener los usuarios que no hayan comprado más de 3 unidades del producto 3. En el vídeo podéis ver como construyo la consulta:


    • Como acostumbro os dejo la consulta mostrada en este capítulo y os planteo una pregunta que resolveremos en la siguiente entrada ¿Que tendríamos que hacer para añadir  empleados?¿Que habría que hacer para añadir monedas de distintos países?:
    --USUARIOS QUE NO HAYAN COMPRADO más de 3 UNIDADES DEL PRODUCTO 3

    SELECT * FROM USUARIOS WHERE IdUsuario NOT IN
    (
    SELECT USUARIOS.IdUsuario FROM USUARIOS WITH (NOLOCK)
    INNER JOIN PEDIDOS WITH(NOLOCK)  ON  PEDIDOS.idusuario = USUARIOS.idusuario
    INNER JOIN PEDIDOS_LINEAS WITH(NOLOCK)  ON PEDIDOS_LINEAS.IdPedido =PEDIDOS.IdPedido
    INNER JOIN PRODUCTOS WITH(NOLOCK) ON PRODUCTOS.IdProducto = PEDIDOS_LINEAS.IdProducto
    WHERE cantidad>3 and PRODUCTOS.IdProducto=3
    )

    Curso SQL SERVER -8 Comando DELETE


    8. Curso SQL SERVER -Comando DELETE

    • En el ejemplo del vídeo vemos como podemos borrar registro de la tabla SESIONES. Sin embargo no nos dejará borrar registros de la tabla USUARIOS porque tenemos claves en otras tablas que dependen de la existencia de este registro. 

    • Si cuando creamos las relaciones habilitamos el borrar el cascada esto no pasaría. Aunque desde mi punto de vista es más seguro ir borrando manualmente primero los registros que dependen de la clave foránea y después el registro "padre". Según vemos en nuestro esquema y para el ejemplo que del vídeo habría  que borrar primero los registros de la tabla SESIONES y después el registro de la tabla USUARIOS.
    • Os dejo un ejemplo de una sentencia DELETE y os espero en el siguiente capítulo  donde veremos como crear subconsultas:
    DELETE FROM [dbo].[SESIONES] where IdSesion in (6,7)

    Curso .NET Core en C# - 34.Creamos nuestro propio log

    34.Creamos nuestro propio log Hola a todos. En este curso, analizaremos todos los conceptos básicos, intermedios y avanzados de  ASP.NET...