sql

SQL Operadores lógicos = igual < menor que > Mayor que = mayor igual que diferente que Eliminación de registros delete

Views 311 Downloads 6 File size 859KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

SQL Operadores lógicos = igual < menor que > Mayor 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

Crear una base de datos create database usuarios

Eliminar una base de datos drop database usuarios

Eliminar todos los registros de una tabla delete from usuarios delete from usuarios where id_usuarios=1 truncate table temporal

Crear una tabla con campos create table usuarios2( id_usuario int not null, nombre varchar(50) )

Crear una tabla con campos con llave primaria create table usuarios( id_usuarios int primary key, nombre varchar(50) not null, edad int not null )

Eliminar una tabla drop table usuarios2

Para comentar en sql server 2012 /*drop table usuarios2*/

Para insertar registro insert into usuarios values( 1,'javier',30 ); insert into usuarios values (7,'lidia',80), (8,'maria',24)

Consultas Para seleccionar todos los registros select * from usuarios

select usuarios.id_usuarios from usuarios select id_usuarios, nombre from usuarios

Para hacer consultas con WHERE select * from usuarios where nombre='javier' select * from usuarios where id_usuarios=1 select id_usuarios,nombre from usuarios where id_usuarios=1 select id_usuarios, nombre from usuarios where id_usuarios>3 select id_usuarios, nombre from usuarios where nombre 'javier'

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 ) create table usuario2( id_usuarios int identity(1,2),//el primer valor es desde donde inicia y el segundo valor es el incremento 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 select nombre,precio_venta-precio_compra as Ganacia from libros where id_libro=1 /*quiero comprar 10 libro de un solo nombre cuanto me va a COSTAR*/ select nombre,precio_compra,5 as cantidad, precio_compra*10 as 'Costo Total' from libros where nombre='la caperucita roja' /*actualizar el precio de venta en un 10% de un solo libro*/ update libros set precio_venta=precio_venta + (precio_venta*0.1)

where nombre='la caperucita roja'

Funciones de Agregado NUMEROS sum  suma /*cuanto me cuesta comprar todos los libros*/ select sum(precio_venta) from libros select sum(edad) from usuarios where sexo='M' and edad>18

avg select avg(edad) from usuarios where sexo='F'

CADENA Y NUMEROS count  cuenta (los nulos no cuenta) select count(id_libro) from libros /*cuantos libros hay, cuando su precio es mayor a 190 select count(id_libro) from libros where precio_venta>190 select count(*) from usuarios where sexo='M' and edad250 and precio_venta150 or precio_compra>200

is null /*para busca los datos que tienen valores nulos*/ select * from libros where nombre is null /*para busca los datos que no tienen valores nulos*/ select * from libros where nombre is not null select * from libros where not 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%' /*buscar los libros que inicien con la palabra*/ select * from libros where nombre like 'el%' /*buscar los libros que terminen con la palabra*/ select * from libros where nombre like '%da' /*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 select distinct(edad) from usuarios order by edad select sum(distinct edad) from usuarios

top Muestra el numero de usuarios que quieres ver select top 4 * from usuarios; select top 9 * from usuarios order by id_usuario desc;

in - = any sirve para buscar varios registros select * from libros where id_libro in (2,4,6)

not in - all select * from libros where id_libro not 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 /* a mas de dos tablas*/ select * from Alumnos join datos on datos.id_alumno=Alumnos.id_alumno join carrera on carrera.id_carrera=Alumnos.id_carrera select alumnos.id_alumno, alumnos.nombre, alumnos.apellidos, carrera.carrera, datos.mail, datos.edad from Alumnos join datos on datos.id_alumno=Alumnos.id_alumno join carrera on carrera.id_carrera=Alumnos.id_carrera where alumnos.id_alumno=2

inner join on inner join son para muchas tablas select * from datos inner join alumnos on datos.id_alumno=Alumnos.id_alumno select Alumnos.nombre, Carrera.carrera,datos.edad, datos.mail from alumnos inner join Carrera on carrera.id_carrera = Alumnos.id_carrera join datos on datos.id_alumno=Alumnos.id_alumno

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

select * from datos right join alumnos on datos.id_alumno=Alumnos.id_alumno

select Alumnos.nombre, Carrera.carrera,Datos.edad from Alumnos inner join Datos on Alumnos.id_alumno=Datos.id_datos join Carrera on Alumnos.id_carrera=Carrera.id_carrera group by Carrera.carrera,alumnos.nombre, Datos.edad

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.edad500)

= 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

select edad,sexo from usuarios where not(edad all(select edad from usuarios where sexo='m') or edad all (select edad from usuarios where sexo='f')) group by edad, sexo order by edad

update usuarios set tipo_usuario= 'usuario' where id_usuario= any (select id_usuario from usuarios where edad=26) delete usuarios where tipo_usuario= any(select tipo_usuario from usuarios where edad=26) /*insertamos datos de la tabla usuarios a la tabla nombres*/ insert into nombres(nombre) select (nombre) from usuarios where sexo='f'

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*/

Ver una vista select * from usuarios_v

/*para visualizar la vista*/

Saber cómo se creó la vista sp_helptext usuarios_v

Crear una vista Encriptada Sirve para que no puedan ver como las vistas fueron creadas create view Vista_1 with encryption as select * from usuarios

al usar sp_helptext vista_1

ahora nos muestra el siguiente mensaje  El texto para el objeto 'vista_1' está cifrado.

Eliminar una vista drop view Usuarios_V drop view Usuarios_V, vista_2, Vista_1

Actualizar datos vista Al actualizar los datos en la vista también se actualiza en la tabla original update mujeres set tipo_usuario='root' where edad=26

eliminar datos de la vista Al eliminar datos de la vista también se elimina de la tabla original delete from mujeres

with check option permite condicionar las vistas y la modificación de datos create view copy as select * from usuarios where sexo='m' with check option

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 alter view copy

with encryption as select * from usuarios where edad>21

case /*case when then end */-- mostrat contenido select id_usuario, edad, nombre = --campos a mostrar case edad -- campos a evaluar when 17 then 'menor' -- casos when 18 then 'mayor' when 19 then 'mayor' when 20 then 'mayor' when 21 then 'mayor' when 22 then 'mayor' when 23 then 'mayor' when 24 then 'mayor' when 25 then 'mayor' when 26 then 'mayor' end --por defecto retorna un null from usuarios –tabla de donde vienen los datos -- vista con case create view copy3 as select id_usuario, edad, nombre = --campos a mostrar case -- campos a evaluar when edad = 18 then 'mayor' end from usuarios

if /*if(condicion) sentencia a ejecutar else sentencia a ejecutar*/ if exists(select*from usuarios where edad=@edad and sexo=@sexo --contenido del procedimiento exec seleccion2

--ejecucion con parametros predeterminados

exec seleccion2 21,'f' --ejecucion con nuestros valores

Proc. Almacenados con parámetros de entrada y salida create procedure seleccion --nombre del procedimiento @edad int, -- parametros de entrada @sexo varchar, -- parametros de entrada @count int output -- parametros de salida as set @count = (select count(id_usuario) from usuarios where edad>=@edad and sexo =@sexo) -- contenido declare @total int --declaramos la variable exec seleccion 18, 'M', @total output --ejecutamos el procedimiento select @total --mostramos el resultado

Proc. Almacenados - Return create procedure seleccion --nombre del procedimiento @edad int, -- parametros de entrada @sexo varchar -- parametros de entrada as if(@edad is null) or (@sexo is null) --si algnos d elos dos es null return 0 -- retorna 0 else -- silos 2 parametros tienen un valor return 1 --retorna 1 declare @retorno int --declaramos la variable exec @retorno=seleccion 22,'m' --ejecutamos el procedimiento select @retorno --mostramos el resultado

Proc. Almacenados Info sp_help --muestra objetos de la base de datos sp_helptext seleccion--texto que define el objeto

sp_stored_procedures

--muestra todos los procedimientos almacenados

Encriptación – P. Almacenado create procedure procedimientoEncriptado -- nombre del procedimiento @edad int --parametro with encryption --encriptacion as select * from usuarios where edad>=@edad --sentebcia exec procedimientoEncriptado 18 --ejecucion de procedimiento sp_helptext procedimientoEncriptado --verificar seguridad

Anidación – P. Almacenado create procedure procedimiento1 @resultado int output as set @resultado=(select sum(edad) from usuarios) create procedure procedimiento2 @numero2 int output as begin declare @numero int exec procedimiento1 @numero output set @numero2=@numero end --mostramos los datos declare @num int --declaro una variable exec procedimiento2 @num output --paso la variable de salida select @num -- imprime el valor

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 insert into ventas values(5,2,10)

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-delete ventas --eliminamos un registro where ventas.id_venta = 6

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