Professional Documents
Culture Documents
Operadores lógicos
= igual
< menor que
> Mayor que
<= menor igual que
>= mayor igual que
<> diferente que
Eliminación de registros
delete elimina registros
drop elimina la estructura (tabla, bd)
truncate elimina los registros (reset), si creamos el id incremental al poner truncate
este nos elimina todos los campos y resetea el incremento a 0
Consultas
Para seleccionar todos los registros
select * from usuarios
select usuarios.id_usuarios from usuarios
Actualizar data
update usuarios set nombre ='carlos'
where id_usuarios=6
Identity
Por defecto el identity empieza de 1 y su incremento es de 1, no permite valores nulos
No es permitido la introducción del campo
No permite la modificación
Permite que se repite los números
Se le puede especificar de cuanto en cuanto quieres que aumente el campo
Por tabla solo un campo puede tener Identity
Se puede activar y desactivar la opción de inserción
create table usuario2(
id_usuarios int identity,
nombre varchar(50) not null
)
select ident_seed('usuario2')
Para saber desde que numero inicia
select ident_incr('usuario2')
para saber de cuanto es el incremento
set identity_insert usuario2 on;//se activa para poder insertar nosotros mismos
insert into usuario2(id_usuarios,nombre) values(2,'mery')
set identity_insert usuario2 off; //para desactivar la inserción
Operadores aritméticos(librería)
/*sacar las ganacias de cada libro*/
select nombre,precio_venta-precio_compra as Ganacia from libros
Funciones de Agregado
NUMEROS
sum suma
/*cuanto me cuesta comprar todos los libros*/
select sum(precio_venta) from libros
avg
select avg(edad) from usuarios
where sexo='F'
CADENA Y NUMEROS
count cuenta (los nulos no cuenta)
select count(id_libro) from libros
max máximo
/*cual es el libro que cuesta mas*/
select max(precio_venta) from libros
min mínimo
/*cual es el libro que cuesta menos*/
select min(precio_venta) from libros
substring
/*para extraer parte de la cadena 8=desde donde inicia, 5=número de caracteres*/
select substring('hola a todos',8,5);
str
/*devuelve un valor numerico*/
select str(123);
stuff
/*para remplazar parte de la cadena 12=desde donde inicia, 6=número de caracteres a
remplazar*/
select stuff('tutoriales hackro',12,6,'peru')
len
/*para saber el tamaño de la cadena*/
select len('tutoriales hackro')
char
/*devuelve el valor en digito del codigo ascii*/
select char(69)
lower
/*convertir a minusculas*/
select lower('TUTORIALES HACKRO')
upper
/*convertir a mayusculas*/
select upper('tutoriales hackro')
ltrim
/*eliminar espacios de la izquierda*/
select ltrim(' tutoriales hackro ')
rtrim
/*eliminar espacios de la derecha*/
select rtrim(' tutoriales hackro ')
replace
/*cambia apartir de una cadena de texto*/
select replace('hola a todos', 'a todos','javier')
reverse
/*pone el texto al reves*/
select reverse('anita lava la tina')
patindex
/*busca una palabra en una cadena de texto y nos devuelve desde donde inicia la palabra
buscada*/
select patindex('%mexico%', 'hola a todos desde mexico')
replicate
/*repite la palabra n veces*/
select replicate('hola ', 100)
space
/*numero de espacios entre palabras*/
select 'tutoriales'+space(10)+'hackro'
Ordenar
Order by
/*Ordena los datos de menor a mayor*/
select * from libros
order by titulo
/*Ordena ascendente*/
select * from libros
order by titulo asc
/*Ordena descendente */
select * from libros
order by titulo desc
Operdores lógicos
not != : negación
select * from libros
where not id_libro=1
and && : y
select * from libros
where precio_venta=128 and precio_compra=111
or !! : o
select * from libros
where id_libro=1 or id_libro=2
is null
/*para busca los datos que tienen valores nulos*/
select * from libros
where nombre is null
between
/*nos devolverá registros que su precio de venta este entre 200 y 300*/
select * from libros
where precio_venta between 200 and 300
like
/*buscar los libros que tengan esa palabra*/
select * from libros
where nombre like '%de%'
/*el guion abajo sirve cuando no sabemos como se escribe y nos haga la busqueda*/
select * from libros
where nombre like '%la fi_ica es divertida%'
not like
/*buscar los libros que no tengan esa palabra*/
select * from libros
where nombre not like '%de%'
having
filtro por grupo de registros
para utilizar el having tenemos que utilizar operadores de agrupamiento (count, max, min, avg,
sum)
Como la cláusula WHERE no se puede utilizar con funciones SQL del tipo SUM, MAX, entonces
utilizamos en su lugar, HAVING.
select nombre, sum(edad) from usuarios
group by nombre
having sum(edad)>40
distinct
distinct --> distinto --> eliminara repeticiones
select distinct(nombre), edad from usuarios
order by nombre
top
Muestra el numero de usuarios que quieres ver
select top 4 * from usuarios;
in - = any
sirve para buscar varios registros
select * from libros
where id_libro in (2,4,6)
join on
sirve para unir dos tablas
/* a dos tablas*/
select * from Alumnos join datos on datos.id_alumno=Alumnos.id_alumno
select * from alumnos join carrera on carrera.id_carrera=Alumnos.id_carrera
left join on
muestra los datos de la primera tabla izquierda y solo se puede usar en dos tablas
select * from alumnos left join datos on datos.id_alumno=Alumnos.id_alumno
Right join on
muestra los datos de la primera tabla derecha y solo se puede usar en dos tablas
select * from alumnos right join datos on datos.id_alumno=Alumnos.id_alumno
update
update Datos set Datos.edad=23 from Datos
join Alumnos on Alumnos.id_alumno=datos.id_alumno
join Carrera on carrera.id_carrera=Alumnos.id_carrera
where Datos.edad<24
alter table
add
Para añadir una nueva columna
alter table carrera
add cupo_limitado int
alter table carrera
add cupo_minimo int,cupo_limitado int
drop columna
Para eliminar una columna
alter table Carrera
drop column cupo_limitado
SUB CONSULTAS
select * from Carrera
where carrera.id_carrera=(select id_carrera from Carrera where id_carrera=1)
in
select * from libros
where id_libro in (select id_libro from libros where num_pag>500)
= any
select * from usuarios
where sexo='f' and edad = any (select edad from usuarios where sexo='m')
order by edad
<> all
select * from usuarios
where sexo='f' and edad <> all (select edad from usuarios where sexo='m')
order by edad
delete usuarios
where tipo_usuario= any(select tipo_usuario from usuarios where edad=26)
go
sirve para decir que antes de go es una consulta y luego de go es otra consulta
delimita únicamente conjuntos o grupos de sentencias para seguido de eso ejecutar mas sentencias
create database empleados
go
use empleados;
VISTAS
Las vistas son consideradas tablas virtuales a través de una consulta
Crear una vista
create view Usuarios_V as /* para crear la vista con el nombre Usuarios_V */
select nombre from usuarios /*se copia los datos de la columna nombre de la tabla usuaios*/
Modificar vista
--creamos la vista
create view copy
with encryption
as select * from usuarios
--comprobamos la vista creada
select * from copy
--comprobamos que este cifrada
sp_helptext copy
--alteramos la vista(quitamos el cifrado)
alter view copy
as select * from usuarios
case
/*case
when then
end */-- mostrat contenido
if
/*if(condicion)
sentencia a ejecutar
else
sentencia a ejecutar*/
Declarar variables
las variables no son globales, solo en el entorno donde se esta usando
--declare @nombreVariable TipoDato
--set @nombreVariable=valor
if (@sumatoriahombre>@sumatoriamujer)
begin -- para especificar el inicio de las sentencias
select 'La sumatoria de la edad de los hombres es: '
select @sumatoriahombre
end -- final de las sentencias
else
begin
select 'La sumatoria de la edad de las mujeres es: '
select @sumatoriamujer
end
Procedimientos Almacenados
sirve para almacenar consultas que constantemente vamos a utilizar
No pueden contener create procedure, default, rule, trigger, view
Tipos de Procedimientos
1. Del sistema: están almacenados en la base de datos "master" y llevan el prefijo "sp_";
2. Locales: los crea el usuario
3. temporales: pueden ser locales, cuyos nombres comienzan con un signo numeral (#)
4. extendidos: se implementan como bibliotecas de vínculos dinámicos (DLL, Dynamic-Link
Libraries), se ejecutan fuera del entorno de SQL Server.
Proceso:
Al crear un procedimiento almacenado, las instrucciones que contiene se analizan para verificar si
son correctas sintácticamente.
Si no se detectan errores, SQL Server guarda el nombre del procedimiento almacenado en la tabla
del sistema "sysobjects" y su contenido en la tabla del sistema "syscomments" en la base de datos
activa. Si se encuentra algún error, no se crea.
Ventajas
comparten la lógica de la aplicación con las otras aplicaciones, con lo cual el acceso y las
modificaciones de los datos se hacen en un solo sitio.
permiten realizar todas las operaciones que los usuarios necesitan evitando que tengan acceso
directo a las tablas.
reducen el tráfico de red; en vez de enviar muchas instrucciones, los usuarios realizan
operaciones enviando una única instrucción, lo cual disminuye el número de solicitudes entre el
cliente y el servidor
crear
create procedure SoloMujeres as --creacion de procedure
select nombre, edad, sexo from usuarios where sexo='f' -- sentencias del procedimiento
exec SoloMujeres --ejecucion de procedure
insertar
create procedure InsertarChica as
insert into usuarios values('Paulina', 'Pau','MDZ','registrado',20,'F')
exec InsertarChica
eliminar
drop procedure SoloMujeres
if object_id('Mujeres') is not null --en el caso de que si exista
drop procedure Mujeres -- se eliminará
else -- caso contrario
select 'No existe' -- saldrá este mensaje
Modificar
alter procedure procedimientoEncriptado -- nombre del procedimiento
@edad int --parametro
with encryption --encriptacion
as
select * from usuarios where edad>=@edad --sentebcia
Encriptación – P. Almacenado
create procedure procedimientoEncriptado -- nombre del procedimiento
@edad int --parametro
with encryption --encriptacion
as
select * from usuarios where edad>=@edad --sentebcia
Anidación – P. Almacenado
create procedure procedimiento1
@resultado int output
as
set @resultado=(select sum(edad) from usuarios)
Triggers
Es un tipo de procedimiento almacenado que se ejecuta cuando se intenta modificar una tabla
Diferencia entre procedure store con trigger y restricciones
No pueden ser invocados directamente; al intentar modificar los datos de una tabla para la que se
ha definido un disparador, el disparador se ejecuta automáticamente.
No reciben y retornan parámetros.
A diferencia de las restricciones "check", pueden hacer referencia a campos de otras tablas
Proceso
se ejecutan DESPUES de la ejecución de una instrucción "insert", "update" o "delete" en la tabla.
Estructura
-- create triggre Nombretrigger
-- on Tabla
-- for EVENTO [insert, update o delete]
--as
-- sentencias
INSERT
--creacion del trigger
create trigger inserteventa -- asignamos un nombre al trigger
on ventas -- indicamos la tala donde se activara la accion
for insert -- después de insertar en la tablaventas
as
begin -- comienza las sentencias
declare @total int -- declaramos una variable int
set @total = (select sum(cantidad) from ventas) --obtenemos la suma de las cantidades
update totales --hacemos un update a la tabla totales
set totales.cantidad = @total
end -- finalzan las sentencias
-- fin del trigger
UPDATE
create trigger actualizarventa2 --Asignamos un nombre al trigger
on ventas --indicamos la tabla donde se activará la acción
for update --después de insertar en la tabla ventas
as
begin -- comienza las sentencias
declare @total int -- declaramos una variable int
set @total = (select sum(cantidad) from ventas) --obtenemos la suma de las
cantidades
insert into totales values(@total)
end --finalizan las sentencias
-- fin del trigger
update ventas
set cantidad=10
where id_venta=3
DELETE
--Creacion trigger--
create trigger EliminarVenta --Asignamos un nombre al trigger
on Ventas --Indicamos la tabla donde se activara la accion
for delete --Despues de insertar en la TablaVentas
as
begin --Comienza las sentencias
declare @total int --Declaramos una variable int
set @total = (select sum(cantidad) from ventas) --obtenemos la suma de las cantidades y lo
asignamos a la variable
update totales --hacemos un update a lña tabla totales
set totales.cantidad = @total
end --finalizan las sentecias
--fin Trigger--
Habilitar o Deshabilitar
alter table ventas --tabla la cual se ejecuta el trigger
enable trigger EliminarVenta --para actviar el trigger
disable trigGer EliminarVenta --para desactivar el trigger