Sie sind auf Seite 1von 31

BASICO

SQL es un estandar para accesar y manejar bases de datos Este tutorial te va a mostrar como manejar bases de datos en MySQL, SQL Server, MS Access, Oracle, Sybase, DB2 y otras bases de datos Que es SQL? SQL es un standar un lenguaje estructurado para consultas SQL te permite aceder y manejar bases dedatos SQL es un Estandar (ANSI American National Standards Institute) Que puede hacer SQL? SQL SQL SQL SQL SQL SQL SQL SQL SQL SQL puede puede puede puede puede puede puede puede puede puede ejecutar consultas a una base de datos obtener datos de una base de datos insertar registros en una base de datos actualizar registros de una base de datos borrar registros de una base de datos crear nuevas bases de datos crear nuevas tablas en una base de datos crear procedimientos almacenados(codigo almacenado) en una base de datos crear vistas en una base de datos configurar permisos a tablas, procedimientos, y vistas

SQL es un estandar pero Apesar de que es un estandar ANSI (American National Standards Institute) hay diferentes versiones del lenguaje SQL Y de cualquier modo, siguen cumpliendo el estandar ANSI pues estas versiones soportan la mayoria de los comandos tales como SELECT, UPDATE, DELETE, INSERT, WHERE

Que es una RDBMS? RDBMS (del ingls Relational database management system) SGBD (Sistema de gestin de base de datos relacional) es la base para el SQL y para todas las bases de datos modernas como MS SQL Server, IBM DB2, Oracle, MySQL, and Microsoft Access. Los datos en un RDBMS se almacenan en objetos llamados tablas Una tabla es una coleccion relacionada de entradas que consiste en columnas y filas Usando SQL en tu Sitio Web Para construir un sitio web que muestre datos de una base de datos necesitaras lo siguiente: * Un programa de bases de datos RDBMS (MS Access, SQL Server, MySQL)

* Un lenguaje del lado del servidor tales como PHP o ASP * SQL * HTML/CSS Para realizar estos ejemplos descarga e instala SQL SERVER EXPRESS haciendo clic AQUI

Sintaxis de SQL Tablas Una base de datos contienen uno o mas tablas. Cada tabla esta identificada por un nombre (ejemplo Clientes o Ordenes). Las tablas contienen registros (filas) con datos

Sentencias SQL

Creamos la base de datos CREATE DATABASE empresa Creamos la tabla Personas CREATE TABLE dbo.Personas ( P_id int PRIMARY KEY IDENTITY, Nombre nchar(20) NOT NULL, Apellidos nchar(30) NOT NULL, Direccion nchar(40) NOT NULL, Ciudad nchar(10) NOT NULL ) GO Insertamos algunos registros: INSERT INTO Personas VALUES ('Marco Antonio','Trejo Lemus','Calle E 822','Tampico') INSERT INTO Personas VALUES ('Martha Beatriz','Trejo Lemus','Calle E 822','Tampico') INSERT INTO Personas VALUES ('Juana Elvira','Trejo Lemus','Calle E 822','Tampico') INSERT INTO Personas VALUES ('Nora Zulma','Trejo Lemus','Calle E 822','Tampico') INSERT INTO Personas VALUES ('Laura Lucero','Sobrevilla Trejo','Calle E 822','Tampico') INSERT INTO Personas

VALUES ('Maria de la luz','Trejo Campos','Calle E 822','Tampico') INSERT INTO Personas VALUES ('Trinidad','Trejo Bautista','Calle E 822','Tampico') INSERT INTO Personas VALUES ('Marcel Abisag','Sobrevilla Trejo','Calle E 822','Tampico') INSERT INTO Personas VALUES ('Jose Abraham','Sobrevilla Trejo','Calle E 822','Tampico') INSERT INTO Personas VALUES ('Samuel Salomon','Olmeda Trejo','Calle E 822','Tampico') Muchas de las acciones que necesitas realizar en una base de datos se hacen con sentencias SQL Seleccionamos todos los registros de la tabla Las siguiente sentencia seleccionara todos los registros de la tabla "Personas" : SELECT * FROM Personas Abajo esta un ejemplo del resultado de la sentencia a la tabla llamada "Personas":

Este tutorial te enseara acerca de las diferentes declaraciones en SQL Manten en mente lo siguiente: las sentencias SQL no son sencibles a las mayusculas o minisculas Punto y coma despues de las sentencias SQL Algunos sistemas de bases de datos requieren un punto y coma al final de cada sentencia SQL El punto y como es un estandar que se para cada sentencia SQL en sistemas de bases de datos que habilitan mas de una sentencia SQL ejecutada en la misma llamada al servidor SQL DML Y DLL SQL puede ser dividido en dos partes: El Lenguaje de Manipulacion de Datos (DML) y el Lenguaje de Definicion de Datos (DDL)

La parte DML del SQL de los comandos de consulta y actualizacion son: SELECT - extrae datos de una base de datos UPDATE - actualiza datos en una base de datos DELETE - borra datos de una base de datos INSERT INTO - inserta datos dentro de una base de datos

DLL del SQL que permite a bases de datos y tablas ser creadas o borradas. Tambien define indices(llaves). especifica enlaces entre tablas, y impone relaciones entre tablas. La parte DLL del SQL, las sentencias mas importante DDL en SQL son: CREATE DATABASE - crea una nueva base de datos ALTER DATABASE - modifica una base de datos CREATE TABLE - crea una nueva tabla ALTER TABLE - modifica una tabla DROP TABLE - borra una tabla CREATE INDEX - crea un indice (llave de busqueda) DROP INDEX - borra un indice La sentencia SELECT La sentencia SELECT es usada para seleccionar datos de una base de datos.

El resultado es almacenado en una tabla temporal, llamada tabla-resultado La sintaxis SQL de la sentencia SELECT es: 1) SELECT nombre_columna(s) FROM nombre_tabla y 2) SELECT * FROM nombre_tabla

Ejemplo 1 SELECT nombre_columna(s) FROM nombre_tabla

SELECT Nombre,Apellidos,Ciudad FROM Personas

Ejemplo 2

SELECT * FROM nombre_tabla

SELECT * FROM nombre_tabla

Navegacion en una tabla de resultados

Muchos sistemas de bases de datos permiten la navegacion en la tabla de resultados programando funciones como: Moverse-Al-Primero, Obtener-Contenido-Registro, Moverse-Al-Siguiente-Registro, etc. Funciones de programacion como estas no son parte de este tutorial. Para aprender a accesar a datos con la llamada a funciones espera mi siguiente tutorial ADO y PHP.

La sentencia SELECT DISTINCT

Dentro de una tabla, algunas columnas pueden contener valores duplicados. Esto no es un problema, algunas veces tu querras listar solo los valores diferentes (distintos) en la tabla La palabra DISTINCT puede ser usada como llave para regresar solo los valores distintos(diferentes). Sintaxis SQL SELECT DISTINCT SELECT DISTINCT nombre_columna(s) FROM nombre_table Ejemplo: SELECT DISTINCT Apellidos FROM Personas Abajo esta el resultado de la sentencia DISTINCT a la tabla "Personas":

SELECT DISTINCT Ciudad FROM Personas Abajo esta el resultado de la sentencia DISTINCT a la tabla "Personas":

SQL WHERE La sentencia where es usada para extraer solo los registros que cumplen con el criterio especificad La Sintaxis SQL WHERE SELECT nombre_columna(s) FROM nombre_tabla WHERE nombre_columna operador valor

Ejemplo de la sentecia WHERE SELECT * FROM Personas WHERE Apellidos ='Trejo Lemus'

Comillas en los campos de texto SQL usa comillas simples en los valores de texto (muchos sitemas manejadores de bases de datos aceptan comillas dobles).Para SQL los valores de texto deben ser puestos entre comillas simples Los valores numericos no deben ser puestos entre comillas Para valores de texto: Esta es la forma correcta: SELECT * FROM Personas WHERE Nombre='Lucero' Esta es la forma equivocada: SELECT * FROM Personas WHERE Nombre=Lucero Para valores numericos: Esta es la forma correcta: SELECT * FROM Personas WHERE P_id = 9 Esta es la forma incorrecta: SELECT * FROM Personas

WHERE P_id = '9'

Operadores permitidos en la sentencia WHERE Con la sentencia WHERE, los siguientes operadores pueden ser usados:

Operadores SQL AND y OR Los operadores AND y OR son usados para filtrar registros basados en mas de una condicion Operador AND El operador AND muestra el registro si la primera condicion y la segunda condicion son verdaderas El operador OR muestra el registro si la primera o la segunda condicion es verdadera Ahora teniendo en cuenta la siguiente tabla:

Para seleccionar solo las personas con el Nombre igual a Marcel Abisag y el apellido igual a Sobrevilla Trejo, Usaremos la siguiente sentencia SELECT: SELECT * FROM Personas WHERE Nombre='Marcel Abisag'

AND Apellidos='Sobrevilla Trejo'

El resultado seria:

Operador OR Ahora seleccionaremos las personas con el campo Nombre igual a "Martha" o el campo Nombre igual a "Elvira" Usaremos la siguiente sentencia SELECT SELECT * FROM Personas WHERE Nombre='Martha Beatriz' OR Nombre='Juana Elvira' El resultado sera el siguiente:

Combinando AND & OR Puedes combinar el AND y el OR (usando parentesis para formar expresiones complejas) Ahora seleccionaremos solo las personas con el campo Apellidos igual a "Sobrevilla Trejo" AND Nombre igual a "Marcel Abisag" OR igual a "Jose Abraham" Usaremos la siguiente sentencia SELECT: SELECT * FROM Personas WHERE Apellidos='Sobrevilla Trejo' AND (Nombre='Marcel Abisag' OR Nombre='Jose Abraham') El resultado sera el siguiente:

SQL ORDER BY

The ORDER BY keyword is used to sort the result-set. La sentencia ORDER BY es usada para ordenar un resultado ordenado por una columna especifica La sentencia ORDER BY es usada para ordenar los registros en orden ascendente por default Si quieres ordenar los registros en orden descendente utiliza la palabra DESC Sintaxis SQL ORDER BY SELECT nombre_columna(s) FROM nombre_tabla ORDER BY nombre_column(s) ASCDESC Ahora vamos a seleccionar todas las personas de la tabla, pero mostrando en orden por el campo Nombre Usaremos la siguiente sentencia SELECT:

SELECT * FROM Personas ORDER BY Nombre El resultado sera el siguiente:

ORDER BY DESC Ahora vamos a seleccionar a todas las personas de la tabla pero mostrandolas en un orden descendente por el campo Nombre con la palabra DESC We use the following SELECT statement: SELECT * FROM Personas ORDER BY Nombre DESC El resultado sera el siguiente:

Sentencia SQL INSERT INTO La sentencia INSERT INTO se usa para insertar un registro o fila en una tabla Sintaxis SQL INSERT INTO Es posible escribir la sentencia INSET INTO en dos formas La primera forma no especifica los nombres de las columnas donde los datos seran insertados solo los valores: INSERT INTO nombre_tabla VALUES (valor1, valor2, valor3,...)

La segunda forma especifica los nombres de las columnas y los valores insertados INSERT INTO nombre_tabla (columna1, columna2, columna3,...) VALUES (valor1, valor2, valor3,...) Ejemplo INSERT INTO Dado que tenemos la siguiente tabla Personas:

Insertaremos un nuevo registro de la siguiente forma:

INSERT INTO Personas VALUES ('Martha', 'Lemus Hurtado', 'Canoga Park', 'L.A.') El resultado lo mostrariamos con la sentencia SELECT * FROM Personas y seria el siguiente:

Insertar Datos solo en columnas especificadas Es posible agregar datos en columnas especificas Las siguientes sentencias SQL agregaran una nueva fila, pero solo agregaran datos en las columnas Nombre y Apellidos INSERT INTO Personas (Nombre, Apellidos) VALUES ('Antonio', 'Trejo Campos')

Para mostrar el resultado con la sentencia: SELECT * FROM Personas Mostrara lo siguiente:

Sentencia SQL UPDATE Statement La sentencia UPDATE es usada para actualizar registros en una tabla

Sintaxis SQL UPDATE UPDATE nombre_tabla SET columna1=valor, column2=valor,... WHERE alguna_columna=algun_valor Nota: La sentencia WEHRE en la sintaxis UPDATE, especifica cual de los registros va a ser actualizado. Si omites la sentencia WHERE todos los registros seran actualizados. Ahora vamos a actualizar la persona "Antonio Trejo Campos" en la tabla Personas Usaremos la siguientes sentencias SQL: UPDATE Personas SET Direccion='Canoga Park', Ciudad='L.A.' WHERE Nombre='Antonio' AND Apellido='Trejo Campos' El resultado sera el siguiente:

CUIDADO!!! al utilizar la sentencia UPDATE Si omites la sentencia WHERE se actualizaran todos los registros de esta forma: UPDATE Personas SET Direccion='Canoga Park', Ciudad='L.A.' El resultado seria:

Sentencia SQL DELETE La sentencia DELETE se usa para borrar registros o filas en una tabla Sintaxis SQL DELETE DELETE FROM nombre_tabla WHERE alguna_columna=algun_valor Nota: La sentencia WHERE en la sintaxis DELETE especifica el registro o los registros que seran borrados, si omites la sentencia WHERE, todos los registros seran borrados de la tabla Ahora vamos a borrar la persona "Marco Antonio Trejo Lemus" en la tabla Personas con la siguiente sentencia: DELETE FROM Personas WHERE Nombre='Marco Antonio' AND Apellidos='Trejo Lemus' SELECT * FROM Personas El resultado sera el siguiente:

Borrar todas las filas

Es posible borrar todas las filas en una table sin borrar la tabla en si. Esto significa que la estructura de la tabla, atributos e indices quedaran intactos: DELETE FROM nombre_tabla or DELETE * FROM nombre_tabla Nota: Debes tener cuidado cuando borres registros. Ya que no podras deshacer lo que hagas con esta sentencia.

APENDICE 1
El siguiente codigo creara la base de datos en el servidor SQL EXPRESS

1.- Hacer clic en Inicio --> Todos los Programas --> Microsoft SQL SERVER 2008 --> SQL Server Management Studio 2.- Hacer clic en el boton CONECTAR

3.- Hacer clic Nueva Consulta (se encuentra en el margen superior izquierdo)

Seleccionar y Copiar el siguiente "CODIGO GENERADOR DE BASE DE DATOS" empresa: ______________________________________________________

USE master if exists (select * from sysdatabases where name='empresa') begin raiserror('La base de datos existe; eliminndola....',0,1) DROP database empresa end GO raiserror('Creando base de datos empresa....',0,1) go CREATE DATABASE empresa GO USE empresa GO CREATE TABLE Personas( P_id int PRIMARY KEY IDENTITY, Nombre nchar(20) NOT NULL, Apellidos nchar(30) NOT NULL, Direccion nchar(40) NOT NULL, Ciudad nchar(10) NOT NULL) GO GO INSERT INTO Personas VALUES ('Marco Antonio','Trejo Lemus','Calle E 822','Tampico')INSERT INTO Personas VALUES ('Martha Beatriz','Trejo Lemus','Calle E 822','Tampico')INSERT INTO Personas VALUES ('Juana Elvira','Trejo Lemus','Calle E 822','Tampico') INSERT INTO Personas VALUES ('Nora Zulma','Trejo Lemus','Calle E 822','Tampico') INSERT INTO Personas VALUES ('Laura Lucero','Sobrevilla Trejo','Calle E 822','Tampico')INSERT INTO Personas VALUES ('Maria de la luz','Trejo Campos','Calle E 822','Tampico')INSERT INTO

Personas VALUES ('Trinidad','Trejo Bautista','Calle E 822','Tampico') INSERT INTO Personas VALUES ('Marcel Abisag','Sobrevilla Trejo','Calle E 822','Tampico')INSERT INTO Personas VALUES ('Jose Abraham','Sobrevilla Trejo','Calle E 822','Tampico')INSERT INTO Personas VALUES ('Samuel Salomon','Olmeda Trejo','Calle E 822','Tampico') GO select * from Personas quit ______________________________________________________

4.- Pegar el codigo

5.- Ejecutar el codigo SQL haciendo clic sobre la opcion !Ejecutar que se muestra a continuacion:

Publicado por Marco Antonio Trejo Lemus en 19:18 1 comentario:

lunes, 18 de mayo de 2009


AVANZADO

Clausula SQL TOP La clausula TOP se usa para especificar el numer de registros que existen puede verificar la longitud de las tablas con miles de registros, regresando el numero de registros Nota: No todas las bases de datos soportan la clausula TOP Sintaxis SQL Server SELECT TOP numeroporciento nombre_columna(s) FROM nombre_tabla Ahora seleccionaremos solo los dos primeros registros de la tabla que se muestra abajo:

Utilizaremos las siguientes sentencias SELECT: SELECT TOP 2 * FROM Personas El resultado sera el siguiente:

Sentencia SQL TOP PERCENT Ahora seleccionaremos solo el 50% de los registros en la tabla Usaremos las siguientes sentencias SELECT: SELECT TOP 50 PERCENT * FROM Personas El resultado se muestra abajo en la tabla:

Operador SQL LIKE Operador SQL LIKE El operador LIKE se usa en una sentencia WHERE para buscar un patron en una columna Sintaxis LIKE SELECT nombre_columna(s) FROM nombre_tabla WHERE nombre_columna LIKE patron

Ejemplo de operador LIKE En la tabla "Personas" : Vamos a buscar las personas que viven en la ciudad de Tampico que empiecen con "Ta" de la tabla en cuestion Usaremos la siguiente sentencia SELECT: SELECT * FROM Personas WHERE Ciudad LIKE 'Ta%' El signo "%" puede ser usado para definir comodines (letras que faltan en el patron de busqueda) ambas antes o despues del patron de busqueda El resultado seria el siguiente:

Ahora vamos a seleccionar las personas que viven en la ciudad que comienza con una "T" de la tabla personas Usaremos la siguiente sentencia SELECT: SELECT * FROM Personas WHERE Ciudad LIKE '%T' El resultado seria el siguiente:

Ahora vamos a seleccionar las personas que viven en la ciudad que contiene el patron "tam" de la tabla personas Usaremos la siguiente sentencia SELECT: SELECT * FROM Personas WHERE Ciudad LIKE '%tam%' El resultado seria el siguiente:

Tambien es posible seleccionar las personas que viven en la ciudad que no contienen el patron "tamp" de la tabla personas, usando la palabra clave NOT Usaremos la siguiente sentencia SELECT: SELECT * FROM Personas WHERE Ciudad NOT LIKE '%tamp%' El resultado seria el siguiente:

Comodines SQL Los comodines SQL pueden ser usados en la busqueda de datos en una base de datos pueden sustituir a uno o mas caracteres cuando se busquen los datos Los comodines deben usarse con el operador LIKE Se pueden usar con SQL los siguientes comodines:

Usando el comodn % Ahora seleccionaremos las personas que viven en la ciudad de Tampico que empiecen con "Ta" de la tabla Personas

Usaremos la siguiente sentencia SELECT:

SELECT * FROM Personas WHERE Ciudad LIKE 'Ta%' Ahora buscaremos las personas que viven en la ciudad que contenga el patron "ico" de la tabla Personas Usaremos la siguiente sentencia SELECT: SELECT * FROM Personas WHERE Ciudad LIKE '%ico%' Usando el _ Comodn Ahora selectionaremos las personas que el primer nombre comience con algun caracter seguido de "Ma" de la tabla Personas Usaremos la siguiente sentencia SELECT: SELECT * FROM Personas WHERE Nombre LIKE '_ar'

1.
JUL

12

VISTAS

----- Vistas ---Una vista es una consulta especial que se emplea para registrar selecciones complejas o que se usan frecuentemente. Una vez creada la vista se puede realizar una seleccin de los datos como si fuera esta una tabla e incluso se puede utilizar para definir procedimientos almacenados. EJEMPLOS : 1. Crear una vista que liste 3 campos de clientes

create view v_listaclientes as select IdCliente,NombreCompaa,Pas from Clientes go

nota : para ejecutar la vista se hace lo siguiente

select * from v_listaclientes go

2. Crear una vista que muestre el subtotal de los pedidos create view v_subtotal as select IdPedido,SUM(d.PrecioUnidad * Cantidad * (1-d.Descuento ))as Subtotal

from DetallesDepedidos d inner join Productos p on d.IdProducto=p.IdProducto group by IdPedido go

select * from v_subtotal go

3. Crear una vista que liste NombreProducto,NombreCategora,PrecioUnidad,Suspendido

create view v_productos as select NombreProducto,NombreCategora,PrecioUnidad,Suspendido from Productos p inner join Categoras c on p.IdCategora =c.IdCategora go

select * from v_productos order by NombreCategora,NombreProducto go

4. Utilizando la vista anterior , crear una vista que muestre el total de productos x categoria create view total_prodxcateg as

select NombreCategora,COUNT(*)as Totalprodxcateg from v_productos group by NombreCategora go

select * from total_prodxcateg

5. Crear una vista que nos devuelva la cantidad de pedidos que tiene cada empleado en los ---aos 94,95 y 96

create view v_cant_pedidos as select Nombre,(Select COUNT (*)from v_empleado e where e.Nombre=c.Nombre and YEAR(FechaPedido)=1994) as Ao_1994, (select COUNT(*)from v_empleado e where e.Nombre=c.Nombre and YEAR(FechaPedido)=1995)as Ao_1995, (select COUNT(*)from v_empleado e where e.Nombre =c.Nombre and YEAR(FechaPedido)=1996)as Ao_1996 from v_empleado c group by Nombre

select * from v_cant_pedidos

6. Crear una vista que presente el total de pedido que tiene cada compaia de envio

create view v_totalpedidos as select NombreCompaa,COUNT(*)as Total_Pedidos from v_compaia group by NombreCompaa

go

select * from v_totalpedidos Publicado 12th July 2012 por kevin lopez chavez

Aadir un comentario 2. 3.
JUL

12

COMBINACION DE TABLAS
Bienvenidos a mi blog !!!!! Aqu Ud. podr conocer y aprender un poco mas de SQL SERVER 2008,con ejercicios resueltos y bien explicados. Bueno comencemos con lo ejercicios, ya que la teora ustedes ya saben y si no ?? Me la escriben...

---- Combinacin de Tablas ----1 . Combinacin Interna de Tablas

Hay 2 formas de hacerlo: Para este caso lo voy hacer con la tabla Productos y Categoras

- Primera Forma : (INNER JOIN)

SELECT NOMBRECATEGORA,NOMBREPRODUCTO FROM Productos P INNER JOIN Categoras C ON P.IdCategora =C.IdCategora GO -Segunda Forma : (WHERE)

SELECT NOMBRECATEGORA,NOMBREPRODUCTO

FROM Productos P , Categoras C WHERE P.IdCategora =C.IdCategora GO

2. Combinacin Externa de Tablas


-- IZQUIERDA ---> LISTA TODAS LOS PRODUCTOS QUE NO TIENEN CATEGORAS SELECT NOMBRECATEGORA,NOMBREPRODUCTO FROM Productos P LEFT OUTER JOIN Categoras C ON P.IdCategora =C.IdCategora GO ---DERECHA ---> LISTA TODAS LA CATEGORAS QUE NO TIENES PRODUCTOS SELECT NOMBRECATEGORA,NOMBREPRODUCTO FROM Productos P RIGHT OUTER JOIN Categoras C ON P.IdCategora =C.IdCategora GO ---- COMPLETA ----> LISTA TODOS LOS PRODUCTOS CON SUS CATEGORAS, PRODUCTOS QUE NO TIENE CATEGORAS Y LAS CATEGORIAS QUE NO TIENEN PRODUCTOS SELECT NOMBRECATEGORA,NOMBREPRODUCTO FROM Productos P FULL OUTER JOIN Categoras C ON P.IdCategora =C.IdCategora GO

Publicado 12th July 2012 por kevin lopez chavez

Aadir un comentario

4.
JUL

12

CREACION DE BASE DE DATOS

---- CREACION DE BASE DE DATOS ----

Creamos la base de datos llamada ventas

create database ventas go use ventas go Para crear la tabla tienda preguntamos si existe, si existe la borramos y la creamos para evitar errores al momento de ejecutar varias veces

if exists(select * from sysobjects where type ='u' and name ='Tienda') drop table Tienda go create table Tienda ( IdTienda int identity(1,1)primary key, NombreTienda varchar(30) not null, Estado varchar(10)not null) go nota : - estoy estableciendo que el campo IdTienda es llave primaria - estoy estableciendo que el campo NombreTienda tiene que ser llenado obligatoriamente al momento de ingresar un nuevo registro

Creamos la tabla TiendaProducto

if exists(select * from sysobjects where type='u' and name ='TiendaProducto') drop table TiendaProducto go create table TiendaProducto ( IdTienda int not null, IdProducto int not null, Cantidad int ) go -estoy asignando dos llaves primarias a la tabla TiendaProducto alter table TiendaProducto add constraint pk_TiendaProducto primary key(IdTienda,IdProducto)

-estoy relacionando el campo IdTienda que es llave primaria con el campo IdTienda de la tabla Tienda alter table TiendaProducto add constraint fk_TiendaProducto foreign key(IdTienda) references Tienda(IdTienda) -estoy relacionando el campo IdProducto que es llave primaria con el campo IdProducto de la tabla Producto alter table TiendaProducto add constraint fk_TiendaProduct foreign key(IdProducto) references Producto(IdProducto) Creamos la tabla Producto

if exists(select * from sysobjects where type='u' and name ='Producto') drop table Producto go create table Producto ( IdProducto int identity(1,1)primary key, NombreProducto char(30) not null, Precio Money not null) go Creamos la tabla Empleado if exists(select * from sysobjects where type='u' and name ='Empleado') drop table Empleado go create table Empleado ( IdEmpleado int identity(1,1)primary key, Nombres char(30) not null, Apellidos varchar(30)not null, -relaciono el campo IdTienda de Empleado con IdTienda de Tienda IdTienda int foreign key references Tienda(IdTienda)) go

Estas lineas de cdigo es para generar el diagrama de tablas relacionadas exec sp_dbcmptlevel 'ventas','90'; alter authorization on database ::ventas to Sa exec sp_dbcmptlevel 'ventas','90'; go

Publicado 12th July 2012 por kevin lopez chavez

Aadir un comentario

5.
JUL

12

SUBCONSULTAS

---- SUBCONSULTAS ---Una subconsulta es una consulta dentro de otra que se puede emplear para obtener totales y seleccin de datos de tablas anidadas

EJEMPLOS : ---CONTAR A LOS CLIENTES DE UN DETERMINADO PAS--select distinct Pas ,(select COUNT(*) from Clientes c2 where c2.Pas =c1.Pas) as total_clientes from Clientes c1 order by Pas go ---SUMA EL PRECIO DE UNA CATEGORA DE PRODUCTOS --select Nombrecategora,(select SUM(PrecioUnidad)from Productos p where p.IdCategora = c.IdCategora )as Suma_PrecioUnidad from Categoras c go ---CUENTA LOS PEDIDOS DEL CLIENTE --select NombreCompaa ,(select COUNT(*)from Pedidos p where p.IdCliente=c.IdCliente ) as Pedidos_Del_Cliente from Clientes c go ---CLIENTES QUE SEAN DE MXICO --select NombreCompaa as Clientes from Clientes where IdCliente IN (select IdCliente from Clientes where Pas='Mxico') go

---CLIENTES QUE COMPRARON EL PRODUCTO PEZ ESPADA --select NombreCompaa as Clientes from Clientes where IdCliente in (select IdCliente from Pedidos where IdPedido in (select IdPedido from DetallesDepedidos where IdProducto in (select IdProducto from Productos where NombreProducto='Pez Espada'))) go

---MUESTRA LA CANTIDAD DE PEDIDOS POR AO --select distinct year(fechaPedido),(select COUNT(*) from Pedidos d where year(d.FechaPedido ) = year(p.FechaPedido )) as Pedidos_X_Ao from Pedidos p go

Das könnte Ihnen auch gefallen