Está en la página 1de 6

CONSULTAS SIMPLES

SELECT a.nombre
FROM alumnos a
* → selecciona todos los atributos
SELECT *
FROM alumnos a
as → sirve para poner un alias
SELECT a.fechanacimiento as 'Cumpleaños'
FROM alumnos a;
MONTH() → devuelve devuelve el mes de una fecha La función
YEAR() → devuelve el año de una fecha
Curdate() → devuelve la fecha actual
SELECT MONTH(e.fcontrato) as mes, YEAR(e.fcontrato) as año
FROM empleados e;
● ORDER BY → ordena las filas
SELECT e.nombre, e.oficina, e.fcontrato
FROM empleados e
ORDER BY e.oficina ó 2;
ASC → ascendente
DESC → descendente
DISTINCT → elimina los resultados repetidos
SELECT DISTINCT o.dir
FROM oficinas o;
LIMIT → muestra un número determinado de filas
SELECT e.num, e.nombre
FROM empleados e
ORDER BY e.fcontrato
LIMIT 3;
WHERE → condiciones
SELECT e.nombre
FROM empleados e
WHERE e.oficina = 12;
NOT → no
AND → y
OR → o
SOLO PARA NÚMEROS
> mayor que
< menor que
<>menor y mayor que
<= menor o igual
>= mayor o igual
BETWEEN → entre
WHERE e.ventas BETWEEN 100000 AND 500000;
IN → incluido
WHERE e.oficina IN (12,14,16) ;
IS NULL → valor vacío
WHERE dir IS NULL;
IS NOT NULL → tienen algún valor
WHERE oficina IS NOT NULL
LIKE → que contenga una palabra
WHERE nombre NOT LIKE ‘%Luís%’
NOT LIKE → que no la contenga
WHERE nombre LIKE 'Luís%
CONSULTAS MULTITABLA
INNER JOIN
SELECT *
FROM pedidos p INNER JOIN clientes cl
ON p.cliente=cl.clie
CONSULTAS DE RESUMEN
SUM() → suma los resultados
SELECT SUM(o.ventas)
FROM oficinas o
AVG() → hace la media
COUNT() → cuenta los valores
MAX() y MIN() → Máximo y Mínimo
HAVING → selecciona filas de la consulta
SELECT e.oficina, AVG(e.ventas)
FROM empleados e
GROUP BY e.oficina
HAVING AVG(e.ventas) > 50000
ORDER BY e.oficina
SUBCONSULTAS
SELECT e.nombre, e.num
FROM empleados e
WHERE e.num=(SELECT distinct p.rep
FROM pedidos p
WHERE p.cliente = (SELECT c.clie
FROM clientes c
WHERE c.nombre like 'Juan')) ;
MANIPULACIÓN DE REGISTROS
INSERT INTO → Insertar valores a la tabla
INSERT INTO empleados VALUES (200, 'Juan López', 30, NULL, 'rep
ventas', “2012/02/08”, NULL, 350000, 0)
UPDATE → modifica valores
Poner a 0 las ventas de los empleados de la oficina 12
UPDATE empleados SET ventas=0 WHERE oficina=12;
DELETE → Borrar fila
DELETE nombre FROM pedidos WHERE nombre= 'Julian López'
CREATE DATABASE (nombre de la tabla) → Crear base de datos
DROP TABLE (nombre de la tabla) → borra tabla
DROP DATABASE (nombre de la BD) → borra base de datos
DEFINICIÓN DE DATOS
TIPOS DE DATOS
NUMÉRICOS
TinyInt → pequeño número entero, el valor va entre 0 y 255, o de -128
a 127
Integer, Int → Números enteros
Float → Números con decimales (10,2) pongo 10 valores incluidos
la coma, dos de ellos son decimales
FECHA
Date → Fecha
Time → Hora
CADENA DE CARACTERES
Varchar () → Número fijo de caracteres
RESTRICCIONES
NULL → atributo no obligatorio
NOT NULL → atributo obligatorio
PRIMARY KEY → clave primaria, es única
UNIQUE → sin repeticiones
FOREIGN KEY → Clave foránea, enlaza las tablas
ALTER TABLE empleados
ADD CONSTRAINT fk11 FOREIGN KEY (oficina) REFERENCES
oficinas(numoficina);
ADD → Añadir columna
ALTER TABLE tab1 ADD campo3 integer;

CREATE TABLE editoriales(


codEditorial int PRIMARY KEY, restricción de tipo 1, se pone al lado del atributo
nombre varchar (10) NOT NULL,
telefono varchar (8),
direccion varchar (30),
isla varchar (10));

Las restricciones que se ponen con CONSTRAINT al final, si afectan a más de un


atributo, son tipo 2 y siempre hay que ponerles nombre

CREATE TABLE estudios(


codEstudio int,
denominacion varchar (50),
ciclo varchar (5),
CONSTRAINT pk1 PRIMARY KEY (codEstudio),
CONSTRAINT un1 UNIQUE (denominacion, ciclo));
SEGUNDO TRIMESTRE (SQL)
Vistas
create view vista_(nombre)
as
select*
from tabla1 inner join tabla2
on hola=hola1
where x=x;

select *from vista_(nombre);

Procedimientos almacenados
create proc pa_(NOMBRE)
select *
from x
where x=y;

execute pa_(NOMBRE)

Procedimientos almacenados.Paso de parámetros


create proc pa_empleados_sueldo
@parametro (varchar, char, int…)
as
select *
from tabla
where x>=@x

exec sp_columns tabla; (para mirar la estructura del parámetro)

exec pa_empleados_sueldo 400 (este parámetro se puede cambiar y siempre se tiene


que poner )

Procedimientos almacenados.Devolución de parámetros


create procedure pa_sueldototal
@parámetro (varchar, char, int…)
@parámetro2 (varchar, char, int…2) output
as
select @parametro2=
case
when caso 1
when caso 2
end
from tabla
where caso;
/*ejecutamos*/
declare @parámetro3 (varchar, char, int…2);
execute pa_sueldototal '22222222' , @sueldototal output;
print @sueldototal;
Procedimientos almacenados.Return
Create procedure pa_actualizarhijos
@parámetro (varchar, char, int…),
@parámetro2 (varchar, char, int…)
as
if (@parametro1 is null) or (@parametro2 is null)
return 0
else
begin
update tabla set otracosa = @parámetro2
where unacosa like @parametro1
return (lo que sea)
end;
/*ejecuto poniendo los 2 parámetros*/
declare @retorno int;
exec @retorno = pa_actualizarhijos '22333333',2;
print @retorno;

Procedimientos almacenados.Return
with encryption /*para encriptar, se `pone después de la variable*/

Funciones
CREATE FUNCTION fu_nombre_función
(@parámetro tipo)
RETURNS tipo (ejemlo: @listado(esta tabla es temporal) table)
--pongo la tabla--
AS
BEGIN
--instrucción 1 ejemplo--
if @parámetro tipo=’x’
insert @listado
select *
from tabla;

instrucción2
RETURN valor
END;

Para ver el resultado


select*
rfom dbo.fu_empleados('parcial')
Triggers de inserción (disparadores)
create trigger tr_(NOMBRE)
on tabla /*se crea la tabla temporal "inserted" igual a la de "tabla"*/
for insert
as
declare @parámetro tipo
set @parametro=(select*
from tabla INNER JOIN inserted
on x=x
if (@parametro < (select * from inserted))
begin
raiserror ('ERROR: Mensaje',16,1)
rollback transaction;
end;

Triggers de borrado
Misma estructura que el anterior pero la tabla temporal que se crea es “deleted” y en for
ponemos “for delete”

Triggers de varios eventos


Misma estructura que el anterior pero se crean las tablas temporales "inserted" y “deleted”
y en for ponemos “for delete, insert, update”

Triggers de actualización
Misma estructura que el anterior (se crean las tablas temporales "inserted" y “deleted”) pero
en for ponemos “for update”

Triggers de instead of (en vez de) / after (después de)


Misma estructura que el anterior (se crean las tablas temporales "inserted" y “deleted”) pero
en for ponemos “instead of insert”, “instead of delete”, “after insert” o “after delete”

También podría gustarte