Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
--COMPARACIONES NUMERICAS
--MAXIMOS
--MINIMOS
1
Select Nombre, (Nota1+Nota2+Nota3+nota4)/4 As Promedio From Alumnos
Order By Promedio Desc
-- [06] Muestra todos las columnas donde la Nota3 este entre [12, 15] y en orden
alfabético
-- [07] Muestra todos las columnas donde la Nota3 es par y aprobatoria y en orden
alfabético
-- [08] Muestra todos las columnas donde el nombre empieza con J, y en orden
alfabético
-- [09] Muestra todos las columnas donde el nombre tiene una letra u, y en orden
alfabético
Select *
From Alumnos
Where Nombre Like '%u%'
Order By Nombre
-- [10] Muestra todos las columnas donde la segunda letra de Nombre es vocal, y en
orden alfabético
2
Select * from Alumnos
where Nombre like '_[aeiou]%'
order by nombre
-- [11] Muestra todos las columnas donde la segunda letra de Nombre no es vocal, y en
orden alfabético
Select *
From Alumnos
Where Nombre Like '_[^aeiou]%'
Order By Nombre
-- [12] Muestra todos las columnas donde Nombre empieza con J y termina con cualquier
letra entre [m, p]
--PRIMER FORMA
UPDATE ALUMNOS
SET MINIMO=NOTA1
UPDATE ALUMNOS
SET MINIMO=NOTA2
WHERE NOTA2<NOTA1
UPDATE ALUMNOS
SET MINIMO=NOTA3
WHERE NOTA3<MINIMO
UPDATE ALUMNOS
SET MINIMO=NOTA4
WHERE NOTA4<MINIMO
UPDATE ALUMNOS
SET PROMEDIO=(NOTA1+NOTA2+NOTA3+NOTA4-MINIMO)/3
--SEGUNDA FORMA
3
INSERT INTO ALUMNOS_V2
SELECT NOMBRE,NOTA1 FROM ALUMNOS
SELECT
NOMBRE,
MIN(NOTA) AS MINIMO
INTO #TEMPORAL
FROM ALUMNOS_V2
GROUP BY NOMBRE
UPDATE ALUMNOS
SET MINIMO=B.MINIMO
FROM ALUMNOS A,#TEMPORAL B
WHERE A.NOMBRE=B.NOMBRE
UPDATE ALUMNOS
SET PROMEDIO=(NOTA1+NOTA2+NOTA3+NOTA4-MINIMO)/3
4
-- Operaciones
Select 5%2
Select 27%10
Select 3+2*4
Select (3+2)*4
-- Funciones Matemáticas
Select Abs(-45) -- 45
Select Abs(45) -- 45
Select PI() -- PI, lleva paréntesis para indicar que es una constante
Select Degrees(PI()) -- Convierte radianes a grados
Select SQRT(25) -- 5
------------------------------------------
-- CONSULTAS CON FUNCIONES MATEMÁTICAS
------------------------------------------
-- Funciones de Cadena
Select Ascii('A') -- 65
Select ASCII('a') -- 97
Select ASCII('&') -- 38
Select Ascii('Arriba') -- 65
5
CREATE TABLE TELEFONO
(
ID_ALUMNO CHAR(4) NOT NULL,
TELEFONO CHAR(7) NULL
)
--ELIMINACION DE REGISTROS
--CASO 3
--MODIFICAR
UPDATE TELEFONO
SET TELEFONO=NULL
WHERE TELEFONO =' '
SELECT DISTINCT *
INTO TELEFONO_V2
FROM TELEFONO
SELECT *
INTO TELEFONO_V3
FROM TELEFONO
--TRUNCAR
6
ID_PRODUCTO INT IDENTITY (1,1),
DESC_PRODUCTO VARCHAR(30)
)
--ADICION DE COLUMNAS
--ELIMINACION DE COLUMNAS
UPDATE PROGRAMAS
SET COSTO=1000.50
WHERE ID_PROGRAMA=10
UPDATE PROGRAMAS
SET COSTO=500.30
WHERE ID_PROGRAMA=15
--MODIFICACION DE COLUMNA
7
---MANEJO DE SCRIPTS
IF condición
BEGIN
-- sentencias
END
ELSE
BEGIN
-- sentencias
END
------instruccion repetitiva-------------------------------------
WHILE condición ----el while se hace hasta que la condicion sea falsa
BEGIN --------es necesario cuando son de dos a mas
-- sentencias
END
-------------------------------------------
-- Imprime del 1 al 10
Declare @i int
Set @i= 1 --- También puede ser Select
WHILE @i < 11
BEGIN
Print @i -- Select @i
Select @i= @i + 1
END
-- Imprime del 10 al 1
go
Declare @i int
Set @i= 10 --- También puede ser Select
WHILE @i > -10
BEGIN
Print @i
Select @i= @i - 1
-------------------------------------------
8
DROP DATABASE PRUEBA
--------------------CONSTRAINTS--------------------------
9
INSERT INTO AUTORES (idautor,nombre,telefono)
VALUES (2567,'Juan','235-4587')
10
INSERT INTO AUTORES (nombre,direccion,telefono)
VALUES ('Carlos','Comas','145-7894')
11
Create Procedure sp_Lista
as
Select * from DatosProc
sp_Lista
EXEC sp_Lista
sp_help sp_Lista
sp_helptext sp_Lista
sp_stored_procedures
-- Eliminar Procedimiento
sp_Lista
12
Comentario=@Comentario
where Alumno=@Alumno
EXEC SP_LISTA
------------------------------------------
-- Drop Procedure sp_Update
------------------------------------------
sp_Delete 'Jorge'
sp_Lista
EXEC SP_LISTA
sp_Lista
13
return @suma/3
end
-----------------------------
-- [5] Procedimiento para obtener la nota máxima
-----------------------------
Create Procedure sp_NotaMax
@Alumno varchar(30),
@NotaMax int Output
As
Declare @n1 int
Declare @n2 int
Declare @n3 int
return @Max
end
go
14
@Ctos int Output
As
Select @Ctos = (Select count(*) from DatosProc)
---otra forma
Declare @CtoS int
execute sp_CtosAlumnos @Ctos Output
Select 'Hay'+ cast(@Ctos as varchar(10)) + ' alumnos en el grupo'
go
---- CONTINUE
-------------------------------------------
Declare @i int
Set @i= 9
WHILE @i<100
BEGIN
Select @i= @i + 1
If (@i%7)!=0 CONTINUE ---- (!= )significa diferente, % es para el residuo en el ejemplo cuando
no sea multiplo de 7
---------- el continue ignora lo que sigue y vuelve a continuar
Print @i ---se imprime cuando sea multiplo de 7
END
-------------------------------------------
go
-- Datos de sp_List
sp_List 'DatosProc'
sp_List DatosProc ----como SQL lo reconoce como tabla por eso permite que este sin comillas
15
DROP DATABASE LIBRERIA
CREATE DATABASE LIBRERIA
16
INSERT INTO TEMAS (DESCRIPCIONTEMA) VALUES ('Drama')
INSERT INTO TEMAS (DESCRIPCIONTEMA) VALUES ('Investigación')
17
Nombre varchar(30)
)
----------------------------------------Relacionando
Alter Table Personas
Add
Constraint PK_Persona Primary Key(id_Persona)
Select @idP= (Select id_Persona From Personas Where Nombre like 'Adriana Vallejo')
Select @idC= (Select id_Curso From Cursos Where Descripcion like 'ADO .NET')
Insert PersonaCurso Values(@idP, @idC)
Select @idP= (Select id_Persona From Personas Where Nombre like 'Ana Gómez')
Select @idC= (Select id_Curso From Cursos Where Descripcion like 'WIN FORMS')
Insert PersonaCurso Values(@idP, @idC)
-- Verificar
18
Select Nombre
From Personas
Where id_persona
IN (Select id_Persona from PersonaCurso)
Select Nombre
From Personas
Where id_persona
NOT IN (Select id_Persona from PersonaCurso)
--Introducción al Group by
--[05] Mostrar Nombres de alumnos y la descripción del curso que lleva
19
as
select nombre,promedio from estudiantes
SELECT
A.NOMBRE,
A.NOTA1,
A.NOTA2,
A.NOTA3,
A.NOTA4,
B.MAXIMO
FROM
ESTUDIANTES A INNER JOIN #TEMPORAL B
ON (A.NOMBRE=B.NOMBRE)
SELECT
A.NOMBRE,
A.NOTA1,
A.NOTA2,
A.NOTA3,
A.NOTA4,
B.MAXIMO
FROM
#TEMPORAL B LEFT JOIN ESTUDIANTES A
ON (A.NOMBRE=B.NOMBRE)
20
CREATE DATABASE CLIENTES
21
insert into CLIENTES
(NUM_CLIE, EMPRESA, REP_CLIE, LIMITE_CREDITO)
values
(2103,'Acme Mfg.',105, 50000)
22
values
(2117,'J.P. Sinclair',106, 35000)
23
insert into REPVENTAS
(NUM_EMPL, NOMBRE, Edad, OFICINA_REP, TITULO, CONTRATO, DIRECTOR, CUOTA, VENTAS)
values
(104,'Bob Smith',33,12,'Dir Ventas','1987-05-19',106,200000,142594)
24
values
(113012,'1990-01-11',2111,105,'ACI','41003',35,3745)
25
(NUM_PEDIDO, FECHA_PEDIDO, CLIE, REP, FAB, PRODUCTO, CANT, IMPORTE)
values
(113062,'1990-02-24',2124,107,'FEA','114',10,2430)
26
insert into PEDIDOS
(NUM_PEDIDO, FECHA_PEDIDO, CLIE, REP, FAB, PRODUCTO, CANT, IMPORTE)
values
(113003,'1990-01-25',2108,109,'IMM','779C',3,5625)
27
(ID_FAB, ID_PRODUCTO, DESCRIPCION, PRECIO, EXISTENCIAS)
values
('BIC','41003','Manivela',652,3)
28
('REI','2A44R','Bisagra Dcha.',4500,12)
/* union */
29
select id_fab,id_producto from productos where precio > 2000
/* composicion (join) */
30
select repventas.*,ciudad,region from repventas,oficinas
where oficina_rep = oficina
/* producto cartesiano */
31
ID_PRODUCTO varchar (5) not null,
DESCRIPCION varchar (30) not null,
PRECIO money not null,
EXISTENCIAS integer not null);
/* avg: average */
32
select * from repventas
select oficina_rep from repventas where ventas > cuota
select distinct oficina_rep from repventas where ventas > cuota
select count(distinct oficina_rep) from repventas
where ventas > cuota
/* clausula GROUP BY */
/* Clausula HAVING */
33
select ciudad,count(*) nro, sum(cuota) sum_cuota,
sum(repventas.ventas) sum_ventas
from oficinas,repventas
where oficina = oficina_rep
group by ciudad
having count(*) >= 2
34
CREATE DATABASE ESTUDIANTES
----------------------------------Relacionando
35
-- Insertando registros en la tabla Notas
36
-- Verificar
-- [01] Mostrar Nombre de alumno, Descripción del curso, Descripción de tipo de nota,
Nota y Fecha de la nota
-- Otro modo
-- [02] Mostrar Nombre de alumno, Descripción del curso, Descripción de tipo de nota,
-- Nota y Fecha de la nota.
-- Ordenado por Nombre del alumno, Descripción del curso y
-- Descripción del tipo de nota
-- [03] Mostrar Nombre de alumno, Descripción del curso, Descripción de tipo de nota,
Nota
-- y Fecha de la nota solo de alumno Juan Pérez.
-- Ordenado Descripci¢n del curso y descripción del tipo de nota
SELECT Getdate()
-- [04] Mostrar Nombre de alumno, descripción del curso, descripción de tipo de nota,
-- Nota y Fecha de la nota,
-- solo de los alumnos en el curso de Visual Basic Fundamentals.
-- Ordenado Nombre del alumno y descripción del tipo de nota
37
Select A.Nombre, B.Descripcion, D.Descripcion, C.Nota, C.Fecha
From Personas As A, Cursos As B, Notas As C, TipoDeNota As D
Where A.id_Persona=C.id_Persona And
B.id_Curso=C.id_Curso And
D.id_TipoDeNota=C.id_TipoDeNota And
B.Descripcion='Visual Basic Fundamentals'
Order By A.Nombre, D.Descripcion
----------------------------------------------
--Contenido de #TablaTemporal
38