GUIA SQL
BASICO
Por : JESICA GIMENEz
BASE DE DATOS
EN ESTA GUIA APRENDERAS TODO LO
BASICO PARA PODER COMENZAR A
REALIZAR CONSULTAS CON SQL.
TE EXPLICO DESDE COMO CREAR UNA
BASE DE DATOS, CREAR TABLAS,
REALIZAR CONSULTAS,
ACTUALIZACIONES, INSERTAR DATOS
Y BORRARLOS, HASTA COMO
REALIZAR MODIFICACIONES DE
ESQUEMA.
CUENTA ADEMAS CON VARIOS
EJERCICIOS Y SU
EXPLICACIÓN PARA QUE PUEDAS
REAIZARLOS DE FORMA SENCILLA.
¡ASI QUE COMENCEMOS!
Por : JESICA GIMENEz
¿QUE ES SQL?
SQL (STRUCTURED QUERY LANGUAGE) ES UN
LENGUAJE DE CONSULTAS UTILIZADO PARA
ADMINISTRAR Y MANIPULAR BASES DE DATOS
RELACIONALES. FUE DESARROLLADO
ORIGINALMENTE POR IBM EN LA DÉCADA DE 1970
Y SE HA CONVERTIDO EN UN ESTÁNDAR PARA
INTERACTUAR CON SISTEMAS DE GESTIÓN DE
BASES DE DATOS (DBMS) RELACIONALES.
SQL SE UTILIZA PARA REALIZAR DIVERSAS TAREAS
EN UNA BASE DE DATOS, COMO LA CREACIÓN,
MODIFICACIÓN Y ELIMINACIÓN DE TABLAS, LA
INSERCIÓN, ACTUALIZACIÓN Y ELIMINACIÓN DE
REGISTROS, Y LA CONSULTA Y RECUPERACIÓN DE
DATOS. PERMITE A LOS USUARIOS DEFINIR LA
ESTRUCTURA DE UNA BASE DE DATOS,
ESPECIFICAR LAS RELACIONES ENTRE LAS TABLAS
Y REALIZAR OPERACIONES COMPLEJAS DE
FILTRADO, ORDENAMIENTO Y AGRUPAMIENTO DE
DATOS.
Por : JESICA GIMENEz
EL LENGUAJE SQL CONSTA DE DIFERENTES
TIPOS DE INSTRUCCIONES, QUE SE DIVIDEN EN
LAS SIGUIENTES CATEGORÍAS PRINCIPALES:
DDL (DATA DEFINITION LANGUAGE): ESTAS
INSTRUCCIONES SE UTILIZAN PARA DEFINIR Y
MODIFICAR LA ESTRUCTURA DE LA BASE DE
DATOS. ALGUNAS DE LAS INSTRUCCIONES
DDL MÁS COMUNES SON CREATE (PARA
CREAR TABLAS Y OTROS OBJETOS), ALTER
(PARA MODIFICAR LA ESTRUCTURA DE LA
BASE DE DATOS) Y DROP (PARA ELIMINAR
OBJETOS DE LA BASE DE DATOS).
DML (DATA MANIPULATION LANGUAGE):
ESTAS INSTRUCCIONES SE UTILIZAN PARA
MANIPULAR LOS DATOS EN LA BASE DE
DATOS. LAS INSTRUCCIONES MÁS COMUNES
SON INSERT (PARA INSERTAR NUEVOS
REGISTROS), UPDATE (PARA ACTUALIZAR
REGISTROS EXISTENTES) Y DELETE (PARA
ELIMINAR REGISTROS).
Por : JESICA GIMENEz
DQL (DATA QUERY LANGUAGE): ESTAS
INSTRUCCIONES SE UTILIZAN PARA
CONSULTAR Y RECUPERAR DATOS DE LA
BASE DE DATOS. LA INSTRUCCIÓN SELECT ES
LA MÁS UTILIZADA EN ESTA CATEGORÍA Y
PERMITE ESPECIFICAR QUÉ COLUMNAS Y
REGISTROS DESEAS RECUPERAR, ASÍ COMO
APLICAR CONDICIONES Y FILTROS.
DCL (DATA CONTROL LANGUAGE): ESTAS
INSTRUCCIONES SE UTILIZAN PARA
ADMINISTRAR LOS PERMISOS Y LA
SEGURIDAD DE LA BASE DE DATOS.
INCLUYEN INSTRUCCIONES COMO GRANT
(PARA OTORGAR PRIVILEGIOS A LOS
USUARIOS) Y REVOKE (PARA REVOCAR
PRIVILEGIOS).
Por : JESICA GIMENEz
¿COMO CREAR UNA BASE DE DATOS EN SQL?
VAMOS A CREAR UNA BASE DE DATOS
ACADEMICA LO PRIMERO QUE DEBEMOS HACER
ES IR A LA BARRA DE HERRAMIENTAS DE SQL
SERVER Y PRESIONAR EN NEW QUERY.
LUEGO EN LA NUEVA HOJA QUE SE NOS ABRE
VAMOS A ESCRIBIR LA SIGUIENTE SENTENCIA
SQL:
CREATE DATABASE ACADEMICA;
CON ESTA SENTENCIA SE CREA LA BASE DE
DATOS ACADEMICA.
Por : JESICA GIMENEz
¿COMO CREAMOS UNA TABLA EN SQL?
AHORA VAMOS AGREGAR A ESTA BASE DE
DATOS ACADEMICA UNA TABLA ALUMNOS.
VAMOS A ESCRIBIR LA SIGUIENTE SENTENCIA:
USE ACADEMICA
CON ESTA SENTENCIA LLAMAMOS A LA BASE DE
DATOS QUE CREAMOS
LUEGO CREAMOS LA NUEVA TABLA CON EL
SIGUIENTE CODIGO SQL:
CREATE TABLE ALUMNOS
(ID INT IDENTITY PRIMARY KEY, NOMBRE
VARCHAR(50),APELLIDO
VARCHAR(50),FECHA_NAC DATE,CANTIDAD INT)
EN ESTA TABLA TENEMOS UN ID QUE CON LA
SENTENCIA IDENTITY VA SER AUTO
INCREMENTAL INT QUE ES UN NUMERO ENTERO
Y PRIMARY KEY VA SER EL IDENTIFICADOR
UNICO DE CADA REGISTRO DE LA TABLA,
NOMBRE Y APELLIDO CON TIPO DE DATO TEXTO
QUE ES VARCHAR Y FECHA_NAC DE TIPO FECHA
DATE.
Por : JESICA GIMENEz
INSERTAMOS, ACTUALIZAMOS Y ELIMINAMOS
AHORA VEAMOS COMO PODEMOS INSERTAR
DATOS EN NUESTRA TABLA:
INSERT INTO ALUMNOS
(NOMBRE,APELLIDO,FECHA_NAC,CANTIDAD)
VALUES ('JOSE','PEREZ','01/02/1985',5)
USAMOS LA SENTECIA INSERT INTO PARA DECIR
QUE VAMOS INSERTAR UN VALOR LUEGO VA EL
NOMBRE DE LA TABLA ALUMNOS Y ENTRE
PARENTESIS LOS NOMBRES DE LOS CAMPOS
(NOMBRE,APELLIDO,FECHA_NAC) COMO VERAN
NO COLOCAMOS EL CAMPO ID PORQUE ES
AUTOINCREMENTAL Y SE VA CARGAR SOLO.
LUEGO PONEMOS LA PALABRA CLAVE VALUES Y
ENTRE PARENTESIS LOS VAORES QUE
QUEREMOS CARGAR EN LA TABLA.
PARA ACTUALIZAR O CAMBIAR ALGUNA DE LA
INFORMACION QUE AGREGAMOS UTILIZAMOS:
UPDATE ALUMNOS
SET FECHA_NAC='03/04/1980'
WHERE ID=1;
Por : JESICA GIMENEz
EN ESTE EJEMPLO ACTAULIZAMOSUSANDO LA
PALABRA CLAVE UPDATE PONEMOS EL
NOMBRE DE LA TABLA, SET ES EL VALOR QUE
QUEREMOS ACTUALIZAR EN ESTE CASO LA
FECHA DE NACIMIENTO Y USAMOS WHERE
PARA FILTRAR QUE LA MODIFICACION SE
REALICE EN EL ID NRO 1 QUE ES EL REGISTRO
QUE CARGAMOS CON EL INSERT ANTERIOR.
EN CASO DE QUERER ELIMINAR UN REGISTRO
UTILIZAMOS LA CLAUSULA:
DELETE FROM ALUMNOS
WHERE ID=1;
CON ESTA SENTENCIA BORRAMOS DE LA TABLA
ALUMNOS EL REGISTRO CON ID 1.
EN CASO DE QUERER BORRAR TODOS LOS
REGISTROS DE LA TABLA UTILIZAMOS:
DELETE FROM ALUMNOS
COMO NO QUEREMOS FILTRAR POR NINGUN
REGISTRO EN PARTICULAR NO UTILIZAMOS EL
WHERE.
DBCC CHECKIDENT(ALUMNOS,RESEED,0)
ESTA SENTENCIA RESETEA EL ID
AUTOINCREMENTAL DE LA TABLA.
Por : JESICA GIMENEz
CONSULTA SELECT SQL
LA CLÁUSULA SELECT EN SQL SE UTILIZA PARA
RECUPERAR DATOS DE UNA O MÁS TABLAS EN
UNA BASE DE DATOS. ES UNA DE LAS
DECLARACIONES MÁS COMUNES EN SQL Y SE
UTILIZA PRINCIPALMENTE PARA CONSULTAR
DATOS.
SELECT: ESPECIFICA LAS COLUMNAS QUE
DESEAS SELECCIONAR EN LA CONSULTA.
PUEDES SELECCIONAR COLUMNAS
ESPECÍFICAS SEPARÁNDOLAS POR COMAS O
USAR EL ASTERISCO (*) PARA SELECCIONAR
TODAS LAS COLUMNAS DE LA TABLA.
FROM: INDICA LA TABLA O TABLAS DE LAS
CUALES DESEAS SELECCIONAR LOS DATOS.
PUEDES SELECCIONAR UNA O VARIAS
TABLAS SEPARÁNDOLAS POR COMAS.
WHERE: OPCIONALMENTE, PUEDES AGREGAR
UNA CONDICIÓN PARA FILTRAR LOS DATOS
BASÁNDOTE EN CIERTOS CRITERIOS. SOLO
SE SELECCIONARÁN LAS FILAS QUE
CUMPLAN CON LA CONDICIÓN
ESPECIFICADA.
Por : JESICA GIMENEz
REALICEMOS UNA CONSULTA BASICA QUE
TRAIGA LOS DATOS DE NUESTRA BASE
ALUMNOS:
SELECT * FROM ALUMNOS;
AHORA VAMOS A REALIZAR UNA CONSULTA
QUE ME TRAIGA TODOS LOS DATOS DE
ALUMNOS CUYO NOMBRE SEA 'JOSE':
SELECT * FROM ALUMNOS WHERE
NOMBRE='JOSE';
SI QUEREMOS TRAER REGISTROS ÚNICOS DE
UNA COLUMNA UTILIZAMOS LA CLAUSULA
DISTINCT:
SELECT DISTINCT(NOMBRE) FROM ALUMNOS;
PARA ORDENAR LOS REGISTROS EN ORDEN
ASCENDENTE POR NOMBRE USAMOS:
SELECT * FROM ALUMNOS ORDER BY NOMBRE
ASC;
PARA ORDENAR LOS REGISTROS EN ORDEN
DESCENDENTE POR NOMBRE USAMOS:
SELECT * FROM ALUMNOS ORDER BY NOMBRE
DESC;
Por : JESICA GIMENEz
PARA LIMITAR LA CANTIDAD DE REGISTROS
QUE QUEREMOS QUE NOS DEVUELVA LA
CONSULTA UTILIZAMOS TOP():
SELECT TOP(10) * FROM ALUMNOS ;
CONTAMOS EL NÚMERO TOTAL DE REGISTROS
DE LA TABLA:
SELECT COUNT(*) FROM ALUMNOS;
SUMAMOS LOS VALORES DE UNA COLUMNA.
SELECT SUM(CANTIDAD) FROM ALUMNOS;
CALCULA EL PROMEDIO DE LOS VALORES DE
UNA COLUMNA:
SELECT AVG(CANTIDAD) FROM ALUMNOS;
ENCUENTRA EL VALOR MÍNIMO DE UNA
COLUMNA.
SELECT MIN(CANTIDAD) FROM ALUMNOS;
ENCUENTRA EL VALOR MÁXIMO DE UNA
COLUMNA.
SELECT MAX(CANTIDAD) FROM ALUMNOS;
Por : JESICA GIMENEz
AHORA VAMOS A CREAR UNA NUEVA TABLA EN
LA BASE DE DATOS:
CREATE TABLE CLASES
(ID_CLASES INT IDENTITY PRIMARY KEY,
NOMBRE_CLASE VARCHAR(50),HORARIO
TIME,ID_ALUMNOS INT, FOREIGN KEY
(ID_ALUMNOS) REFERENCES ALUMNOS(ID))
ESTA NUEVA TABLA CLASES TIENE UN ID UNICO
DE CLASE, NOMBRE DE CLASE TIPO
TEXTO,HORARIO DE LAS CLASES DE TIPO TIME
Y UN ID_ALUMNOS TIPO CLAVE FORANEA QUE
NOS VA SERVIR PARA RELACIONAR LOS
ALUMNOS CON LA TABLA DE CLASES.
INSERTAMOS VARIOS DATOS EN LA TABLA:
INSERT INTO CLASES
(NOMBRE_CLASE,HORARIO,ID_ALUMNOS)
VALUES ('MATEMATICA 1','09:00',1),
('LITERATURA','11:00',1)
UNA VEZ QUE YA TENEMOS ESTOS DATOS
INSERTADOS PASEMOS A LA SIGUIENTE ETAPA
QUE ES REALIZAR CONSULTAS CON MAS DE
UNA TABLA.
Por : JESICA GIMENEz
COMBINAMOS REGISTROS DE DOS TABLAS
BASADO EN UNA COLUMNA EN COMÚN:
SELECT
A.NOMBRE,A.APELLIDO,C.NOMBRE_CLASE,C.HOR
ARIO FROM ALUMNOS AS A INNER JOIN CLASES
AS C ON A.ID = C.ID_ALUMNOS;
LA CLAUSULA INNER JOIN NOS VA DEVOLVER
SOLO LOS VALORES DONDE LOS ID REALICEN
MATCH OSEA COINCIDAN.
UTILICEMOS LA SENTENCIA RIGHT JOIN:
SELECT
A.NOMBRE,A.APELLIDO,C.NOMBRE_CLASE,C.HOR
ARIO FROM ALUMNOS AS A RIGHT JOIN CLASES
AS C ON A.ID = C.ID_ALUMNOS;
LA CLAUSULA RIGHT JOIN NOS VA DEVOLVER
IGUAL QUE EL INNER JOIN LOS VALORES QUE
COINCIDAN, PERO TAMBIEN LOS QUE SE
ENCUENTRAN EN LA TABLA QUE ESTA MAS A
LA DERECHA AUNQUE NO COINCIDAN.
EN ESTE CASO LA TABLA QUE ESTA MAS A LA
DERECHA ES LA QUE SE ENCUENTRA DESPUES
DE LA PALABRA JOIN.
Por : JESICA GIMENEz
UTILICEMOS LA SENTENCIA LEFT JOIN:
SELECT
A.NOMBRE,A.APELLIDO,C.NOMBRE_CLASE,C.HOR
ARIO FROM ALUMNOS AS A LEFT JOIN CLASES
AS C ON A.ID = C.ID_ALUMNOS;
LA CLAUSULA LEFT JOIN NOS VA DEVOLVER
IGUAL QUE EL INNER JOIN LOS VALORES QUE
COINCIDAN, PERO TAMBIEN LOS QUE SE
ENCUENTRAN EN LA TABLA QUE ESTA MAS A
LA IZQUIERDA AUNQUE NO COINCIDAN.
EN ESTE CASO LA TABLA QUE ESTA MAS A LA
IZQUIERDA ES LA QUE SE ENCUENTRA DESPUES
DE LA PALABRA FROM.
UTILICEMOS LA SENTENCIA FULL OUTER JOIN:
SELECT
A.NOMBRE,A.APELLIDO,C.NOMBRE_CLASE,C.HOR
ARIO FROM ALUMNOS AS A FULL OUTER JOIN
CLASES AS C ON A.ID = C.ID_ALUMNOS;
LA SENTENCIA FULL OUTER JOIN NOS VA
TRAER TODO DE AMBAS TABLAS TANTO SI
COINCIDEN LOS DATOS DE LAS COLUMNAS
QUE USAMOS PRA CRUZAR LA INFORMACION
COMO SI NO COINCIDEN.
Por : JESICA GIMENEz
CLAUSULAS GROUP BY Y HAVING
LA CLÁUSULA GROUP BY SE UTILIZA EN SQL
PARA AGRUPAR FILAS EN BASE A UN
DETERMINADO CRITERIO. POR OTRO LADO, LA
CLÁUSULA HAVING SE UTILIZA PARA FILTRAR
LOS RESULTADOS DE UNA CONSULTA
DESPUÉS DE HABER APLICADO LA CLÁUSULA
GROUP BY.
SELECT NOMBRE_CLASE, COUNT(*) AS
TOTAL_CLASES FROM CLASES GROUP BY
NOMBRE_CLASE
ESTO DEVOLVERÁ UNA FILA POR CADA CLASE
CON EL NOMBRE DE LA CLASE Y EL NÚMERO
TOTAL DE CLASES.
CLAUSULA LIKE
SIRVE PARA SELECCIONAR REGISTROS QUE
CONTENGAN UN VALOR ESPECÍFICO EN UNA
COLUMNA:
Por : JESICA GIMENEz
%: EL CARÁCTER % SE UTILIZA COMO COMODÍN
PARA REPRESENTAR CUALQUIER SECUENCIA DE
CARACTERES (CERO, UNO O MÁS CARACTERES).
POR EJEMPLO, SI QUIERES ENCONTRAR TODOS
LOS NOMBRES QUE COMIENZAN CON "J",
PUEDES USAR EL SIGUIENTE PATRÓN:
SELECT * FROM ALUMNOS WHERE NOMBRE
LIKE 'J%'
_: EL CARÁCTER _ SE UTILIZA COMO COMODÍN
PARA REPRESENTAR UN SOLO CARÁCTER. POR
EJEMPLO, SI QUIERES ENCONTRAR TODOS LOS
NOMBRES QUE TIENEN TRES LETRAS Y LA
SEGUNDA LETRA ES UNA "O", PUEDES USAR EL
SIGUIENTE PATRÓN:
SELECT * FROM ALUMNOS WHERE NOMBRE
LIKE '_O_'
[]: LOS CORCHETES SE UTILIZAN PARA
ESPECIFICAR UN RANGO DE CARACTERES. POR
EJEMPLO, SI QUIERES ENCONTRAR TODOS LOS
NOMBRES QUE COMIENZAN CON UNA VOCAL,
PUEDES USAR EL SIGUIENTE PATRÓN:
SELECT * FROM ALUMNOS WHERE NOMBRE
LIKE '[AEIOU]%'
Por : JESICA GIMENEz
[^]: EL SÍMBOLO ^ DENTRO DE LOS CORCHETES
SE UTILIZA PARA NEGAR UN RANGO DE
CARACTERES. POR EJEMPLO, SI QUIERES
ENCONTRAR TODOS LOS NOMBRES QUE NO
COMIENCEN CON UNA VOCAL, PUEDES USAR
EL SIGUIENTE PATRÓN:
SELECT * FROM ALUMNOS WHERE NOMBRE
LIKE '[^AEIOU]%'
MODIFICAMOS EL ESQUEMA DE UNA TABLA
MODIFICA UNA TABLA EXISTENTE, AGREGANDO
UNA COLUMNA.
ALTER TABLE ALUMNOS ADD EDAD INT;
ELIMINAMOS UNA COLUMNA DE UNA TABLA
EXISTENTE:
ALTER TABLE ALUMNOS DROP COLUMN EDAD;
PARA BORRAR UNA TABLA COMPLETA
UTILIZAMOS:
DROP TABLE ALUMNOS;
Por : JESICA GIMENEz
CONCATENA DOS COLUMNAS EN UNA
CONSULTA:
SELECT CONCAT(NOMBRE, APELLIDO) FROM
ALUMNOS;
RENOMBRA UNA TABLA EXISTENTE:
ALTER TABLE ALUMNOS RENAME TO
NUEVO_NOMBRE;
SELECCIONA REGISTROS QUE TENGAN UN
VALOR NULO EN UNA COLUMNA:
SELECT * FROM ALUMNOS WHERE APELLIDO IS
NULL;
SELECCIONA REGISTROS QUE NO TENGAN UN
VALOR NULO EN UNA COLUMNA.
SELECT * FROM ALUMNOS WHERE APELLIDO IS
NOT NULL;
CALCULA LA DIFERENCIA ENTRE UNA FECHA DE
NACIMIENTO Y EL DIA DE HOY:
SELECT DATEDIFF(YEAR,'14/03/1990',GETDATE())
Por : JESICA GIMENEz
CALCULAR LA LONGITUD DE UNA CADENA:
SELECT LENGTH(NOMBRE) FROM ALUMNOS;
CONVERTIR UNA CADENA EN MINÚSCULAS:
SELECT LOWER(NOMBRE) FROM ALUMNOS;
CONVERTIR UNA CADENA EN MAYÚSCULAS:
SELECT UPPER(NOMBRE) FROM ALUMNOS;
CALCULAR EL VALOR ABSOLUTO DE UNA
COLUMNA NUMÉRICA:
SELECT ABS(CANTIDAD) FROM ALUMNOS;
CALCULAR LA RAÍZ CUADRADA DE UNA
COLUMNA NUMÉRICA:
SELECT SQRT(CANTIDAD) FROM ALUMNOS;
CALCULAR EL VALOR REDONDEADO DE UNA
COLUMNA NUMÉRICA:
SELECT ROUND(CANTIDAD, 2) FROM ALUMNOS;
Por : JESICA GIMENEz
CALCULAR EL VALOR MÁS CERCANO ENTERO
INFERIOR DE UNA COLUMNA NUMÉRICA:
SELECT FLOOR(CANTIDAD) FROM ALUMNOS;
CALCULAR EL VALOR MÁS CERCANO ENTERO
SUPERIOR DE UNA COLUMNA NUMÉRICA:
SELECT CEILING(CANTIDAD) FROM ALUMNOS;
CALCULAR LA MEDIANA DE UNA COLUMNA
NUMÉRICA:
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP
(ORDER BY CANTIDAD) FROM ALUMNOS;
CALCULAR EL RANGO DE UNA COLUMNA
NUMÉRICA:
SELECT MAX(CANTIDAD) - MIN(CANTIDAD)
FROM ALUMNOS;
CALCULAR LA DESVIACIÓN ESTÁNDAR DE UNA
COLUMNA NUMÉRICA.
SELECT STDDEV(CANTIDAD) FROM ALUMNOS;
Por : JESICA GIMENEz
MAS EJEMPLOS PARA PRACTICAR:
SELECCIONAR REGISTROS QUE ESTÉN
PRESENTES EN UNA LISTA DE VALORES:
SELECT COLUMNA FROM TABLA WHERE
COLUMNA IN (VALOR1, VALOR2, VALOR3);
SELECCIONAR REGISTROS QUE NO ESTÉN
PRESENTES EN UNA LISTA DE VALORES:
SELECT COLUMNA FROM TABLA WHERE
COLUMNA NOT IN (VALOR1, VALOR2, VALOR3);
REALIZAR UNA UNIÓN DE RESULTADOS DE
MÚLTIPLES CONSULTAS:
SELECT COLUMNA FROM TABLA1
UNION
SELECT COLUMNA FROM TABLA2;
CONTAR EL NÚMERO DE REGISTROS EN CADA
GRUPO Y ORDENARLOS:
SELECT COLUMNA, COUNT(*) AS CANTIDAD
FROM TABLA GROUP BY COLUMNA ORDER BY
CANTIDAD DESC;
Por : JESICA GIMENEz
CALCULAR EL PROMEDIO AGRUPADO POR UNA
COLUMNA Y FILTRAR LOS RESULTADOS:
SELECT COLUMNA1, AVG(COLUMNA2) FROM
TABLA GROUP BY COLUMNA1 HAVING
AVG(COLUMNA2) > VALOR;
SELECCIONAR REGISTROS QUE COINCIDAN
CON UNA FECHA ESPECÍFICA:
SELECT COLUMNA FROM TABLA WHERE
DATE(COLUMNA) = 'FECHA';
SELECCIONAR REGISTROS QUE COINCIDAN
CON UN MES O AÑO ESPECÍFICO:
SELECT COLUMNA FROM TABLA WHERE
MONTH(COLUMNA) = MES AND
YEAR(COLUMNA) = AÑO;
CALCULAR EL TOTAL AGRUPADO POR UNA
COLUMNA Y ORDENAR LOS RESULTADOS:
SELECT COLUMNA, SUM(COLUMNA2) AS TOTAL
FROM TABLA GROUP BY COLUMNA ORDER BY
TOTAL DESC;
Por : JESICA GIMENEz
CREACION DE UN PROCEDIMIENTO
ALMACENADO:
CREATE PROCEDURE INSERTARALUMNOS
@NOMBRE VARCHAR(50),
@APELLIDO VARCHAR(50)
AS
BEGIN
INSERT INTO ALUMNOS (NOMBRE,
APELLIDO)
VALUES (@NOMBRE, @APELLIDO)
END
-- LLAMADA AL PROCEDIMIENTO ALMACENADO
EXEC INSERTARALUMNOS 'JUAN', 'GOMEZ';
CREAMOS UN PROCEDIMIENTO ALMACENADO
AL QUE LE PASAMOS DOS PARAMETROS DE
ENTRADA NOMBRE Y APELLIDO PARA QUE LOS
CARGUE EN LA TABLA DE ALUMNOS, AHORA
CADA VEZ QUE QUERAMOS CARGAR UN NUEVO
ALUMNO YA NO TENEMOS QUE UTILIZAR LA
SENTENCIA INSERT, LLAMAMOS AL
PROCEDIMIENTO Y LE PASAMOS LOS VALORES
QUE QUEREMOS INGRESAR
Por : JESICA GIMENEz
EJEMPLO DE CREACIÓN DE UNA FUNCION
ESCALAR:
CREATE FUNCTION
OBTENERDESCUENTO(@PRECIO DECIMAL(10,2))
RETURNS DECIMAL(10,2)
AS
BEGIN
DECLARE @DESCUENTO DECIMAL(10,2)
IF @PRECIO >= 100
SET @DESCUENTO = @PRECIO * 0.1
ELSE
SET @DESCUENTO = 0
RETURN @DESCUENTO
END
-- USO DE LA FUNCIÓN ESCALAR
SELECT DBO.OBTENERDESCUENTO(120) AS
DESCUENTO;
CREAMOS UNA FUNCION ESCALAR DESCUENTO
A LA QUE LEPASAMOS COMO PARAMETRO 120 Y
TENEMOS UNA CONDICION IF QUE SI EL VALOR
QUE PASAMOS ES MAYOR A 100 NOS DEVUELVE
EL VALOR DE DESCUENTO QUE SE REALIZA, SI
ES MENOR A 100 NO SE REALIZA DESCUENTO.
Por : JESICA GIMENEz
CREAMOS UN TRIGGER:
SUPONGAMOS QUE TENEMOS DOS TABLAS: "VENTAS" Y
"REGISTROVENTAS". QUEREMOS QUE CADA VEZ QUE SE INSERTE UNA
NUEVA FILA EN LA TABLA "VENTAS", SE REGISTRE LA INFORMACIÓN
EN LA TABLA "REGISTROVENTAS". PARA LOGRAR ESTO, PODEMOS
UTILIZAR UN TRIGGER:
-- CREAMOS LA TABLA
CREATE TABLE VENTAS (
ID INT IDENTITY(1,1) PRIMARY KEY,
FECHA DATE,
MONTO DECIMAL(10,2),
DESCRIPCION VARCHAR(100)
)
CREATE TABLE REGISTROVENTAS (
ID INT IDENTITY(1,1) PRIMARY KEY,
FECHAREGISTRO DATETIME,
MONTO DECIMAL(10,2),
DESCRIPCION VARCHAR(100)
)
-- CREAMOS EL TRIGGER
CREATE TRIGGER INSERTARREGISTROVENTAS
ON VENTAS
AFTER INSERT
AS
BEGIN
-- INSERTAMOS LOS NUEVOS REGISTROS EN LA TABLA
REGISTROVENTAS
INSERT INTO REGISTROVENTAS (FECHAREGISTRO, MONTO,
DESCRIPCION)
SELECT GETDATE(), I.MONTO, I.DESCRIPCION
FROM INSERTED AS I
END
Por : JESICA GIMENEz
¡MUCHAS GRACIAS
POR TU
COLABORACIÓN!
POR DUDAS O CONSULTAS
COMUNICARSE POR MAIL A
[email protected]