Professional Documents
Culture Documents
-- nueva version --
create database ventasx on primary
(
name = ventasx_data,
filename='c:\ventas1\ventasxprimary.mdf',
size=5MB,
maxsize=10MB,
filegrowth=1MB
)
log on
(
name = ventasx_log,
filename='c:\ventas1\ventasxlog.ldf',
size=5MB,
maxsize=10MB,
filegrowth=1MB
)
-- crear tabla --
use ventas
create table producto(
id int not null,
nombreproducto nvarchar(40),
descripcion nvarchar(200))
-- primary key --
create table producto(
id int primary key not null,
nombreproducto nvarchar(40),
descripcion nvarchar(200))
COMANDO SELECT / VISTAS
-- SELECT Y VISTAS --
SELECT telefono, nombre, id FROM dbo.Clientes
Se le agregan los corchetes porque el alias es mas de una palabra, si solo fuera una no serian
necesarios los corchetes.
SELECT telefono AS [Telefono del cliente], nombre AS [Nombre de cliente], id AS [ID del
cliente]
FROM dbo.Clientes
Para ordenar utilizamos el comando ORDER BY por defecto lo ordena de manera ascendete,
pero en caso de que necesitemos que sea descendete le agregamos el comando DESC.
Y también podemos llevar nuestras consultas al query a partir del código creado en las vistas
que tuvimos anteriormente:
El comando order by puede ser usado no solo en una columna de la tabla sino en varias,
funcionando como un filtro de Excel.
FUNCTION WHERE
OJO NO OLVIDAR QUE DEBEMOS ESTAR EN LA BASE DE DATOS CREADA PARA ESTE CASO
SERIA LA DB “VENTAS” , Y NO EN LA MASTER
-- where --
SELECT id, nombreproducto, precio
FROM dbo.producto
WHERE (precio >= N'200') AND (precio <= N'600')
ORDER BY precio, id DESC
COMANDO INSERT
Al colocar una segunda fila de datos para insertar a la tabla, ya no es necesario
que utilicemos los nombres de las columnas de nuevo, estas las jalar por
defecto
TABLA = PRODUCTO / COLUMNAS= ID, NOMBREPRODUCTO,PRECIO
-- INSERT --
insert into producto (id,nombreproducto,precio) values(8,'producto8','700')
insert into producto values(9,'producto9','700')
Este comando nos será útil para borrar los datos de una tabla, mas no la tabla,
es importante tener un backup antes de ejecutar este comando en caso de que sea
necesario, es por eso que se debe tener mucho cuidado antes de ejecutarlo.
Para guardar los datos de tu tabla vas a la pestaña superior izquierda y escoges
la opción FILE / SAVE RESULTS AS/ “ Escoges la dirección” por defecto lo guardará
en csv .
Para este ejemplo se cambio el nombre del csv, pero se jala de la siguiente
manera:
BULK
Insert dbo.producto
from 'C:\csv\productos.csv'
with (firstrow = 2, fieldterminator = ';',rowterminator = '\n')
Para poder digitar ese código es importante verificar como esta el csv, que se
guardo anteriormente.
-- COMANDO DELETE --
Ahora si queremos eliminar una fila en especifico también se puede hacer con el
siguiente código:
COMANDO TOP
-- COMANDO TOP --
select * from producto
--MUESTRA LOS 5 PRIMEROS--
select top (5)* from producto
--MUESTRA EL 100% DE LOS DATOS--
select top (100)percent * from product
COMANDO BETWEEN
Nos ayudara una vez mas en temas de visualización ya que podremos ver los valores
de una tabla que esten comprendidos en el rango que nosotros declaremos.
De la sgte manera:
-- COMANDO BETWEEN --
Este comando nos servirá para poder visualizar datos específicos de una columna
de la tabla que contengan el prefijo o sufijo o palabra que declaremos, además
podremos agregar el símbolo % el cual indicara que hay más letras delante o
detrás de la o las letras que declaremos, como en el sgte, ejemplo:
--COMANDO LIKE--
Tambien este comoando nos ayudara para temas de visualización en las consultas en
donde nosotros buscamos valores en una determinada columna por lo que en vez de
seguir declarándola una y otra vez con el OR utilizaremos el IN que nos ayudara a
simplificar el código obteniendo los mismos resultados, en este caso este comando
nos sirve para buscar palabras en especifico, mas no una parte de ellas:
-- COMANDO IN --
select * from producto where nombreproducto = 'automovil' OR nombreproducto =
'producto 3'
Evitaremos usar el código en la parte superior porque ese es muy repetitivo, caso
opuesto usamos el IN, con la misma función.
CONSULTAS MULTIPLES
Podemos visualizar la tabla con filtros diferentes para cada columna haciendo
usando del OR o del AND para poder relacionar y declarar los valores que
deseamos, haciendo uso del where, like, and, or, in; asi como en el sgte,
ejemplo:
-- CONSULTA MULTIPLE --
SELECT * from Clientes where (nombre like 'l%') or (telefono like '%65%')
COMANDO FOREIGN KEY
Nos sirve para relacionar la primary key de una tabla con otra, en donde por
ejemplo relacionaremos a un mismo id de usuario con datos completamente distintos
de otras tablas pero que le pertenecen a ese único usuario.
Para poder rellenar los datos que se quieren relacionar con el id utilizamos el
sgte código:
Nos servira para poder mostrar consultas relacionadas entre tablas y los
elementos que esten relacionados directamente a través del forign key que vimos
anteriormente.
Nos permite temas de visualización respecto de las tablas que han sido
relacionadas previamente, tal como sus nombres lo dicen te mostraran la data
completa de acuerdo al sentido de las mismas por ejemplo comando LEFT:
Para utilizar el comando unión, también tenemos que tern en cuenta que las tablas
tienen que tener el mimso numero de columnas descripción y características, ya
que sin eso no nos permitirá juntarlas.
-- COMANDO UNION --
Para este caso necesitamos tener una tabla en la cual deseemos obtener el
promedio ya que average=promedio, luego cargamos la vista y ejecutamos el
siguiente código en el VIEW:
FROM dbo.ventas
(mes = '03')
COMANDO MAX Y MIN
FROM dbo.ventas
FROM dbo.ventas
--Y EL ULTIMO --
Este comando nos ervira par contabilizar el nimero de registros o datos que
poseemos:
Este código nos servirá para poder obtener como su nombre lo dice un diccionario
de la base de datos en donde podremos visualizar las tablas, columnas y el tipo
de datos que estos almacenan, en su totalidad.
Para poder ejecutarlo debemos de verificar que estemos en la database que vamos a
consultar.
use Ventas1
select
d.object_id,
a.name [table], -- identificara la Tabla
b.name [column], -- identificara la columna
c.name [type], -- identificara el Tipo
CASE-- recibe el tipo de columna
--cuando c es numerico o c es decimal o c es Float
entonces se precisa el numero
WHEN c.name = 'numeric' OR c.name = 'decimal' OR c.name = 'float'
THEN b.precision
ELSE null
END [Precision],
-- recibe maximo tamaño de b
b.max_length,
CASE -- recibe si la columna acepta nulos
WHEN b.is_nullable = 0 THEN 'NO'
ELSE 'SI'
END [Permite Nulls],
CASE -- recibe si la columna es identity (autoincrementable)
WHEN b.is_identity = 0 THEN 'NO'
ELSE 'SI'
END [Es Autonumerico],
ep.value [Descripcion],-- recibe la descripcion de la columna(si la hay)
f.ForeignKey, -- recibe si es llave foranea
f.ReferenceTableName, -- recibe la referencia de la tabla
f.ReferenceColumnName -- recibe la referencia de la columna
from sys.tables a
-- // Seleciona y muestra toda la informacion \\ --
inner join sys.columns b on a.object_id= b.object_id
inner join sys.systypes c on b.system_type_id= c.xtype
inner join sys.objects d on a.object_id= d.object_id
LEFT JOIN sys.extended_properties ep ON d.object_id = ep.major_id AND
b.column_Id = ep.minor_id
LEFT JOIN (SELECT
f.name AS ForeignKey,
OBJECT_NAME(f.parent_object_id) AS TableName,
COL_NAME(fc.parent_object_id,fc.parent_column_id) AS
ColumnName,
OBJECT_NAME (f.referenced_object_id) AS
ReferenceTableName,
COL_NAME(fc.referenced_object_id,fc.referenced_column_id) AS
ReferenceColumnName
FROM sys.foreign_keys AS f
INNER JOIN sys.foreign_key_columns AS fc ON
f.OBJECT_ID = fc.constraint_object_id) f ON f.TableName =a.name AND
f.ColumnName =b.name
WHERE a.name <> 'sysdiagrams'
ORDER BY a.name,b.column_Id
CREACION DE PROCEDIMIENTOS ALMACENADOS STORE PROCEDURES
Este comando nos servirá para poder almacenar querys o consultas sin la necesidad
dee estar reescribiiendolas y por ello nos servirá para cualquier nombre o
usuario porque nos servirá como una plantilla.
-- STORED PROCEDURES --
end
Ahora para ejecutarlo tendremos que escribir el comando EXEC seguido del nombre
del procedimiento.
-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters
-- command (Ctrl-Shift-M) to fill in the parameter
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName>
-- Add the parameters for the stored procedure here
<@Param1, sysname, @p1> <Datatype_For_Param1, , int> =
<Default_Value_For_Param1, , 0>,
<@Param2, sysname, @p2> <Datatype_For_Param2, , int> =
<Default_Value_For_Param2, , 0>
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Nos sirve para crear una tabla que contenga un id que se incremente de manera
autónoma, además podremos especificar desde que numero queremos que empiece y de
cuanto en cuanto seria su incremento, esto lo podemos hacer luego de digitar
identity(,) en el primer espacio dentro del paréntesis colocaremos desde que
numero deseas que empiece y en el segundo campo luego de la coma de cuanto en
cuanto quisiéramos que sea su incremento.
-- IDENTITY --
Y también se peude creara a partir del modo de vista por la creación de tabla, de
la sgte manera:
Buscamos en als propiedades de la tabla y cambiamos el identity a yes, y también
se puede especificar su inicio y su incremento.
COMANDO TRUNCATE
Lo que hace es formatear la tabla desde cero, como en el caso pasado vimos que se
crean automáticamente los ids de manera sucesiva pero que pasa si solo usas el
delete, la secuencia sigue y no se reinicia, por eso es que se utiliza el comando
truncate y esto hace que se formatee la tabla.
--truncate --
-- mayusculas y minusculas --
El comanmdo print nos sirve para mostrar ciertos mensajes, en la pantalla pero,
que pasa al tener dos distintos tales como nvarchar y el int?, pues no nos
permitiría mostrarlos juntos, es por eso que se hace una conversión como nvarchar
p-- TRANSACT SQL VARIABLES --
-- OPERADORES T-SQL --
-- + - * / %(MOD)
set @num1 = 10
set @num2 = 3
-- IF --
set @num1 = 2
set @num2 = 5
if @num1 = @num2
print 'son iguales'
else
if @num1 > @num2
print convert (nvarchar(3),@num1) + ' es mayor que '+ convert(nvarchar(3),@num2)
if @num1 < @num2
print convert (nvarchar(3),@num1) + ' es menor que '+ convert(nvarchar(3),@num2)
COMANDO WHILE
-- while --
Utilizaremos este comando cuando querramos hacer consulta de que cierta variable
contenga valores específicos del tipo texto, y podremos hacer que imprima
dependiendo del caso tal como el sgte ejemplo:
end
)
print @aviso
COMANDO TRY CATCH / T -SQL
Antes de comenzar el código, debemos inicizalizar el begin try/ end try ; luego
begin catch / end catch
Este es el caso en que no editemos lso erroes, nos saldrán mesnajes asi
begin try
end try
begin catch
end catch
Y nos saldrá lo que nosotros editemos, entonces también se puede omitir el print
error_message(), ya que eso nos sirve para que nos salga el mensaje de error
proporcioando por el programa pro defecto.
CREACION DE UN CURSOR
El cursor también nos servirá para mostrar datos, funciona como un query.
Ahora para poder ver el primer valor colocamos first o prior en vez de next luego
de fetch, además si queremos ver el ultimo colocamos last en vez de next luego de
fetch.
Hay que ejecutarlo uno por uno, no hay necesidad de abrri el cursor mas de una
vez. Ya que nos aparecerá un mensaje de error.
Ahora para poder ejecutar el comando de mostrar primero o ultimo debemos agregar
el comando scroll al costado del cursor, asi; gracias a ese scroll podremos
navegar en los valores de atrás hacia adelante:
-- CURSOR --
open Cursorejemplo
fetch first from Cursorejemplo
close Cursorejemplo
deallocate Cursorejemplo
EJEMPLO DEL CURSOR –
Podemos utilizarlo para que nos muestre con el T-sql, y también podemos
usarlo para llevar los datos de una tabla a otra, además de actualizar los
datos :
open Cursorejemplo
fetch next from Cursorejemplo into @nombre,@apellido,@telefono
while(@@FETCH_STATUS = 0 )
Begin
print @nombre + ' '+ @apellido + ' ' + @telefono;
end
close Cursorejemplo
deallocate Cursorejemplo
COMO AGREGAR UNA BD DE DATOS EXTERNA Y PODER LLEVARLO A NUESTRO SQL
Hay 2 archivos .mdf, .ldf que es como un log ósea un historial de la base de
datos; c:\Microsto SQL SERVER … ; ENTONCES luego de haber ubicado la carpeta
en donde se guardan estos archivos, copeamos los que nosotros deseamos
importar, y los pegamos allí:
Luego click derecho en databases y le damos ATTACH, nos sale la sgte ventana:
Luego picamos en add y nos sale la ubicación de los data base que pegamos
para poder jalarlos:
Son aquellos que se van a activar luego de que una serie de procedimientos se
efectúen, en este caso hablaremos de los DML que se utilizan para
insert,update y delete.
Mas adelante veremos una mejor aplicación para los trigger el hecho de
haber colocado el print luego del as fue solo con fines educativos para
demostrar como funciona un trigger, ya que la idea es poder ejecutar otro
tipo de código mas elaborado.
EJEMPLO DE UN TRIGGER
En este caso nos servirá para poder tener un registro de modificación de una
tabla en la cual la llenaremos con el insert, en donde podremos tener una
actualización de dicha tabla en la que nos mostrara un registro de que es lo que
ha sucedido en la tabla predecesora.
El código es el siguiente
El set nocount on, nos servira para omitir un segundo mensaje de modificación de
la segunda tabla donde nos esta guardando los datos; es mas para tenerlo como
cuidado y que nadie que lo este modificando sepa de ello.
Ahora el INSERTED que vemos dentro del código es una tabla virtual en donde se
guardan temporalmente todos los datos que van a ser copeados en la tabla de
destino, es decir los datos de la tabla de origen son almacenados momentáneamente
en inserted y luego pasan a la tabla de destino.
go
EXPORTAR REGISTROS A XML
Tenemos que dar guardar el archivo de la tabla con un nombre de la hoja, luego
vamos al sql escogemos la base de datos, clic derecho, tasks, import, sale una
ventana:
Next
Puedes darle edit mappings y modificar los datos …
Next next
EXPORTAR UNA TABLA DE SQL A EXCEL
Damos clic a la base de datos donde esta la tabla, clic derecho, tasks, export,
te sale una ventana , escogemos el server client sql, next, luego buscas el
archivo de Excel, next, next, y te salela tabla de abajo, la editas, y next next
hasta el final.
-- DATENAME --
--month, quarter, year, dayofyear, day, week, weekday, hour, minute, second,
millisecond --
Simplemente
https://www.youtube.com/watch?v=oVZjHQt9518&list=PL8gxzfBmzgewF28S8REkfHacaSRnwp
JeB&index=54
PARA VER MAS INFORMACION ACERCA DEL VIEW -
Para poder visualizar esto solo tenemos que digitar el sgte código.
sp_help el cual nos mostrara la información de todo el sql, sus tablas, views y
demás.
Tambien sp_depends view_ejemplo, nos mostrar de que tablas depende todo el view:
Ahora cuando volvamos a consultar con el sp_helptext nos aparecerá que esta
protegido:
VISTA CON CHECK OPTION
Esta nos servirá para poder hacer ciertos cambios pero solo a los registros que
esten afectados por el where, y ya no cambiara a toda la tabla en general.
delete from ver_clientes **// esto nos servirá para borrar solo los que esten
contenidos en el where y no toda la tabla //**
COMO ALTERAR / ELIMINAR UNA VISTA
Solo que cambiamos el alter y vemos que es lo que quieres cambiar nada mas o bien
lo agregas o se lo quitas y lo ejecutas y listo.
FROM [ventas].[dbo].[vista_clientes]
create procedure SP_versalida @num1 float, @num2 float, @resultado float output
as
begin
end
select @salida
Tenemos que tener un cuidado especial en este caos ya que al utiliarlo tanto en
el select como en el group by, tiene que contener a todas las columnas porque
caso contrario nos mostrara un error, en este ejemplo no nos lo muestra asi ya
que la columna te loas teléfonos esta como campo calculado.
-- GROUP BY --
-- having --
Hace una consulta dentro de una tabla hacia otra y verificar si se repiten por
decirlo así, es decir si tienen elementos en común y cuales son.
-- clausula exists --
Usar la función Distinct para mostrar solo registros que no estén en la tabla mas
de una vez.
EN EXCEL
Y PARA EL UNPIVOT
COLUMAN CALCULABLE CON CONDICIONAL CASE