Вы находитесь на странице: 1из 7

LENGUAJE SQL ( lenguaje de consultas estructurado)

DEFINICION:
lenguaje declarativo(q dices lo q necesitas pero no t dice como lo vas a resolver )
de acceso a BD relacionales. Especifica diefrentes operaciones en estas.
Es un standar en toda industria de dbms
Dividido en dos partes: DDL lenguaje definicion de data base ( crear dindice vistas
tablas, alterar una table, truncar una tabala q kiere decir borarla y crearla de nuevo)
y DML Lenguaje de manipulaciond e data 8 ingresar borar registros )
Sentencia CREATE:
En una base de datos podemos crear: tablas, relaciones, indices, vistas
triggers(DESENCADENANTES) roles usuarios. Solo veremos en CREATE TABLE.
MS SQL Server 2005/2008:
SQL es un standar con caracteristicas entendibles, pero se le realizaron mejoras, se
le AADIO algo especial.
Versions: consta de varias ediciones: express ( parecida al access q es gratuita )
workgroup( aplicaciones para areas y departamentos) standard ( para medianas
empresas, capacidades limitadas ) y enterprise ( con todas las caracteristicas, para
una empresa grande )
Instalacion: lo qnecesitamos .
1 elegir el modo de autenticacion: los usuarios son diferentes con beneficios
diferentes. El sql server tiene sus propios sistemas de seguridad = o elegimos la
seguridadd e windows o la seguridad del sql server o ambas.
2 configuracion de intercalacion: respecto a las fechas.
3 configuracionde archives: se tiene q pensar donde guarder los archives.
4 configurar el correo de la BD: xq tiene un sistemade w de e-mail, y realizar
configuraciones.
5 Especificar el esenario de recuperacion: si la base de datos falla, como recupero la
info? Tiene varios mecanismos de recuperacion
6 configurar la seguridad: kines ingresan y q tablas se mostraran
7 configurando el cifrado / certificados: se puede especificar el cifrado de cierta
informacion

7 configuracion de servidores vinvulados: cuando se configure la bd con otras a las


cuales podemos hacer uso, ejemplo eltipo de cambio del dolar
Uso del SQL server:
Database new database yd e ahi en el cuadro q sale y nombramos como PRUEBA,
se creara una carpeta .
query: ahi es donde pongo todas las sentencias, ejm: de seleccion de informacion.
*: nos trae los registros.
No todas las bases de datos guardan los mismos tipos de datos, ejemplo Oracle
guarda el tipo de dato clock
Tipos de datos:
Numericos exactos y aproximados: Se diferencian en el numero de decimals y
enteros q va a guarder Decimal(10,4) 999999.9999 10 caracteres en total 4
decimales
Fecha y hora: son ilimitados los rangos
Cadenas
Cadenzas de caracteres con Unicode: Unicode es para mezclar varios idiomas.
Cadenas binarias:
STRING NO EXISTE EN MS SQL SERVER
Var: siempre va a separar una cantidad predefinida de characters, por mas que lo
ingresado sea menor q lo ya separado
varChar: dispone lo necesario.
Las BD se organizan major con los Var x lo q son datos fijos.
Los bit se usan para variables de decision, si o no.
NOT NULL: no permite guardar datos que sean nulos
IDENTITY: automatico. Lee el anterior rubro de registro y lo repite( no lo dj en
digital) y has le aumenta un una unidad!+}
Ejercicio tabla cliente
CREATE TABLE Cliente ( Codigo_Cliente INT NOT NULL , Apellido_Pat VARCHAR(20)
NULL , Apellido_Mat VARCHAR(30) NULL , Codigo_Sexo VARCHAR(1) NULL ,
Fecha_Nacimiento DATETIME NULL , Fecha_Ingreso DATETIME NULL )

Ejercicio Tabla Alumnos


CREATE TABLE Alumnos ( Codigo_Alumno INT NOT NULL , Apellido_Pat VARCHAR(20)
NULL , Apellido_Mat VARCHAR(30) NULL , Grado VARCHAR(30) NULL , Direccion
VARCHAR(100) , DNI DECIMAL(8,0) NULL , Fecha_Nacimiento DATETIME NULL )

Ejercico de los profesores


CREATE TABLE Profes ( Codigo_Profesor INT IDENTITY (5,2) , Apellido_Pat
VARCHAR(20) NULL , Apellido_Mat VARCHAR(30) NULL , Grado VARCHAR(30) NULL ,
Domicilio VARCHAR(100) , DNI DECIMAL(8,0) NULL , Fecha_Nacimiento DATETIME
NULL )

DROP TABLE: Para borar tablas ----- Drop table clients


DEFAULT: para que llene por defecto un mensaje en en caso no se coloque nada
CREATE TABLE Profesores ( Codigo_Profesor INT IDENTITY (5,2) , Apellido_Pat
VARCHAR(20) NULL , Apellido_Mat VARCHAR(30) NULL , Grado VARCHAR(30) NULL ,
Domicilio VARCHAR(100) , DNI DECIMAL(8,0) NULL , Fecha_Nacimiento DATETIME
NULL , Nivel_Academico VARCHAR(20) DEFAULT 'MAESTRO' )

UNIQUE: para indicar que ese dato es uniko e irrepetible y la base de datos no
permitira quue se repita
CREATE TABLE Profesores_unicos ( Codigo_Profesor INT NOT NULL UNIQUE
NONCLUSTERED , Apellido_Pat VARCHAR(20) NULL , Apellido_Mat VARCHAR(30) NULL ,
Grado VARCHAR(30) NULL , Domicilio VARCHAR(100) , DNI DECIMAL(8,0) NULL ,
Fecha_Nacimiento DATETIME NULL , Nivel_Academico VARCHAR(20) DEFAULT 'MAESTRO'
)

PRIMARY KEY: decimos que ese campo es llave primaria, en automatico sabe que
ese dato YA no se puede repeetir.
CREATE TABLE Maestros_unicos ( Codigo_Maestro INT IDENTITY (1,1) primary key ,
Apellido_Pat VARCHAR(20) NULL , Apellido_Mat VARCHAR(30) NULL , Grado
VARCHAR(30) NULL , Domicilio VARCHAR(100) , DNI DECIMAL(8,0) NULL ,
Fecha_Nacimiento DATETIME NULL , Nivel_Academico VARCHAR(20) DEFAULT 'MAESTRO'
)

FORREING KEY: SOLO HACE REFERENCIA a la PK de la table a mencionar


23/06/2009
INNER JOIN: Traeme todas las direcciones de los empleados:
select * from HumanResources.Employee AS E
INNER JOIN HumanResources.EmployeeAddress AS EA
ON E.EmployeeID = EA.EmployeeID

Sin colocar inner u oter el DEFAULT es inner


OUTER JOIN: regresa todos lo valores
select * from HumanResources.Employee AS E
LEFT OUTER JOIN HumanResources.EmployeeAddress AS EA
ON E.EmployeeID = EA.EmployeeID

EJERCICIO: kiero saber cual es el cargo fecha nac sexo, meta para ese mes y el
bono que recibiria !
select e.title , e.birthdate , e.gender , sp.salesquota , sp.bonus
from HumanResources.Employee AS E
INNER JOIN Sales.SalesPerson AS SP
ON E.EmployeeID = sp.salespersonID
ORDER BY title ASC

Traer la fecha de la orden, status ( estado en el q esta la orden ) costumer id


( client). En detalle deseo conocer eol prdouctid( q product estoy comprando)
orderquantity ( cantidad) y el unit price( precio unitario). Lo relaciono con el
primarity.
select soh.OrderDate , soh.Status , soh.CustomerID , sod.ProductID ,
sod.OrderQty , sod.UnitPrice
from Sales.SalesOrderHeader AS soh
INNER JOIN Sales.SalesOrderDetail AS sod
ON soh.SalesOrderID = sod.SalesOrderID

Hay q verificar las relaciones que hay entre las entidades. Y hay q usarlas segun lo
q necesitemos!
select p.productid , p.name , p.productmodelid , pm.productmodelid , pm.name
from production.product AS p
INNER JOIN production.productmodel AS pm
ON p.productid = pm.productmodelid

Id , nombre_prod , model_id ----- tabla 1


Model_id , nombre --------------- table 2
Id , nombre_prod , model_id , nomnre -- tabla final
select ca.customerid , ca.addresstypeid , ca.modifieddate , a.addressline1 ,
a.addressline2 , a.city
from sales.customeraddress AS ca
INNER JOIN person.address AS a
ON ca.addressid = a.addressid

Recomendacion:
El * esta pidiendo todos los campos de la table, x lo tanto recargan y saturan el
trabajo de la BD.

Pensar en conjunto
SELECT * INTO: genera tablas a paritr de otras
select ca.customerid , ca.addresstypeid , ca.modifieddate , a.addressline1 ,
a.addressline2 , a.city
into alfieri
from sales.customeraddress AS ca
INNER JOIN person.address AS a
ON ca.addressid = a.addressid
select * from alfieri

SELEECCION DENTRO DE UNA SELECCION:


select * from HumanResources.Employee as e
where e.employeeid in
( select employeeid from humanresources.employeeaddress )

Agrupaciones, contar, promedio


select SalesOrderID , SUM(LineTotal) AS SubTota, COUNT(1) NroLineas
from Sales.SalesOrderDetail sod
GROUP BY salesorderid
ORDER BY salesorderid
Ejercicios:
select *
from Person.Contact
where title='MS.'
select *
from Person.Contact
where Lastname like 'A%'
select *
from HumanResources.Employee e inner join Person.Contact c
on e.contactid = c.contactid
where firstname like 'karla'
select *
from HumanResources.Employee e right outer join Person.Contact c
on e.contactid = c.contactid
where firstname like 'karla'
select *
from HumanResources.Employee e, Person.Contact c
where e.contactid = c.contactid
select MiddleName from HumanResources.Employee e,
Person.Contact c,
Sales.SalesPerson sp ,
Sales.SalesTerritory st
where e.contactid = c.contactid

and e.employeeid = sp.salespersonid


and sp.territoryid = st.territoryid
and firstname='pamela'
select e.title, BirthDate, Gender, FirstName from HumanResources.Employee e,
Person.Contact c,
Sales.SalesPerson sp ,
Sales.SalesTerritory st
where e.contactid = c.contactid
and e.employeeid = sp.salespersonid
and sp.territoryid = st.territoryid
select count (*)
from HumanResources.Employee e,
Person.Contact c,
Sales.SalesPerson sp ,
Sales.SalesTerritory st
where e.contactid = c.contactid
and e.employeeid = sp.salespersonid
and sp.territoryid = st.territoryid
select sum (SalesQuota) from HumanResources.Employee e,
Person.Contact c,
Sales.SalesPerson sp ,
Sales.SalesTerritory st
where e.contactid = c.contactid
and e.employeeid = sp.salespersonid
and sp.territoryid = st.territoryid
select max (SalesQuota) from HumanResources.Employee e,
Person.Contact c,
Sales.SalesPerson sp ,
Sales.SalesTerritory st
where e.contactid = c.contactid
and e.employeeid = sp.salespersonid
and sp.territoryid = st.territoryid
select st."Group", sum(SalesQuota)
from HumanResources.Employee e,
Person.Contact c,
Sales.SalesPerson sp ,
Sales.SalesTerritory st
where e.contactid = c.contactid
and e.employeeid = sp.salespersonid
and sp.territoryid = st.territoryid
group by st."Group"
select c.firstname, c.lastname ,
sum (totaldue) from HumanResources.Employee e,
Person.Contact c,
Sales.SalesPerson sp ,
Sales.SalesTerritory st ,
sales.salesorderheader soh
where e.contactid = c.contactid
and e.employeeid = sp.salespersonid
and sp.territoryid = st.territoryid
and soh.salespersonid = sp.salespersonid

group by c.firstname, c.lastname


select firstname + ' ' + upper(lastname) NombreCompleto,
year(getdate()) - year(birthdate) Edad, *
from HumanResources.Employee e,
Person.Contact c,
Sales.SalesPerson sp ,
Sales.SalesTerritory st ,
sales.salesorderheader soh
where e.contactid = c.contactid
and e.employeeid = sp.salespersonid
and sp.territoryid = st.territoryid
and soh.salespersonid = sp.salespersonid
select count (*)

from HumanResources.Employee e,
Person.Contact c,
Sales.SalesPerson sp ,
Sales.SalesTerritory st ,
sales.salesorderheader soh
where e.contactid = c.contactid
and e.employeeid = sp.salespersonid
and sp.territoryid = st.territoryid
and soh.salespersonid = sp.salespersonid
and year (orderdate) = 2004

otros
insert into production.location
values('cafetera',1000,100,getdate())
select * from production.location
where name = 'cafetera'
update production.location set name = 'cafetera'
where name = 'cafeteria'
select * from production.product
where name like '%tire%'
update production.product set name = 'Llanta de turismo' , listprice =
listprice*3
where productid = 934
select * from production.product
where name like '%tire%'

Вам также может понравиться