La sintaxis para crear llaves foráneas es la siguiente:
FOREING KEY [Campo] REFERENCES [Tabla2] ([Campo_Tabla2])
Al igual que en las llaves primaria, aquí tambien tenemos la opción de poner el nombre de la CONSTRAINT y evitar que sea el SQL quien asigne el nombre:
CONSTRAINT [Nombre_Constraint] FOREING KEY [Campo] REFERENCES [Tabla2] ([Campo_Tabla2])
Supongamos que tenemos una tabla de usuarios y una tabla de autos, a la que a cada auto le asignaremos un usuario, entonces para crear esta llave foránea haríamos lo siguiente:
CREATE TABLE tblAutos
(
Marca Varchar(10) NOT NULL,
Año Int NOT NULL,
Precio Money,
Usuario Int NOT NULL,
CONSTRAINT FK_tblAutos_tblUsuarios FOREING KEY Usuario REFERENCES tblUsuarios(ID)
)
domingo, 29 de agosto de 2010
domingo, 8 de agosto de 2010
Llaves primarias en SQL
La sintaxis para crear una llave primaria en una tabla de SQL es la siguiente:
CREATE TABLE [NombreTabla]
(
[Campo1] [TipoDato],
...
PRIMARY KEY ([Campo1], ..., [CampoN])
)
La llave primaria puede estar compuesta por múltiples campos o bien puede ser únicamente un campo, también hay que tomar en cuenta que para que un campo pueda ser llave primaria este no debe permitir valores Nulos.
Al crear una llave primaria el SQL Server le asigna automáticamente un nombre a la Constraint, en caso de que nosotros no deseemos que suceda eso, le podemos asignar el nombre a esa Constraint de la siguiente manera
CONSTRAINT [NombreConstraint]
PRIMARY KEY ([Campo1], ..., [CampoN])
Ahora bien, si ya tenemos creada la tabla y queremos ponerle llaves primaria tendríamos que hacer uso de la sentencia ALTER TABLE
ALTER TABLE [NombreTabla]
ADD CONSTRAINT [NombreConstraint]
PRIMARY KEY ([Campo1], ..., [CampoN])
Aqui algunos ejemplos:
CREATE TABLE tblUsuarios
(
ID Int NOT NULL,
Clave Varchar(10),
Nombre Varchar(100),
FechaRegistro Datetime,
PRIMARY KEY (ID)
)
CREATE TABLE tblAutos
(
Marca Varchar(10) NOT NULL,
Año Int NOT NULL,
Precio Money,
CONSTRAINT PK_Autos PRIMARY KEY (Marca, Año)
)
domingo, 1 de agosto de 2010
Creación de tablas en SQL
A continuación veremos la sintaxis mínima requerida para crear una tabla en el SQL
CREATE TABLE [NombreTabla]
(
[Campo1] [TipoDato],
[Campo2] [TipoDato],
...
[CampoN] [TipoDato]
)
Donde:
[NombreTabla] Es el nombre de la tabla.
[Campo1] Es el nombre del campo.
[TipoDato] Es el tipo de dato.
Algunos de los tipos de datos que podemos utilizar son los siguientes:
CREATE TABLE [NombreTabla]
(
[Campo1] [TipoDato],
[Campo2] [TipoDato],
...
[CampoN] [TipoDato]
)
Donde:
[NombreTabla] Es el nombre de la tabla.
[Campo1] Es el nombre del campo.
[TipoDato] Es el tipo de dato.
Algunos de los tipos de datos que podemos utilizar son los siguientes:
- Varchar(n): Donde n es el número de caracteres que podrá tener el campo.
- Int
- Datatime
- Money
Y a continuación, les dejo unos ejemplos:
CREATE TABLE tblUsuarios
(
ID Int,
Clave Varchar(10),
Nombre Varchar(100),
FechaRegistro Datetime
)
CREATE TABLE tblAutos
(
Marca Varchar(10),
Año Int,
Precio Money
)
domingo, 18 de julio de 2010
Método Select de un DataTable
Abra ocasiones en que deseemos obtener únicamente ciertos registros de un DataTable, anteriormente ya había presentado la forma de hacer uso de éste método pero ahora lo veremos un poco más a detalle.
El método Select de un DataTable nos regresa un arreglo de DataRow's, por lo que debemos haber declarado previamente un DataRow
VBNET
Dim DR() As DataRow;
C#
DataRow[] DR;
Para comenzar a ver los tres casos que voy a presentar vamos a suponer que tenemos un DataTable con cuatro campos: Clave, Nombre, Cuidad y Sexo.
Caso 1. Sin filtros
Si a nuestro método Select no le colocamos ningún filtro, el resultado nos arrojará todos los registros del DataTable en un arreglo de DataRow's.
DR = DT.Select();
Caso 2. Filtro simple
Si queremos leer algún registro en específico entonces tendremos que agregar un filtro al método Select.
DT.Select("CAMPO = VALOR")
Con la siguiente sentencia leeríamos todos los usuarios de sexo femenino.
DR = DT.Select("Sexo = 'F'");
Si queremos leer algún registro en específico entonces tendremos que agregar un filtro al método Select.
DT.Select("CAMPO = VALOR")
Con la siguiente sentencia leeríamos todos los usuarios de sexo femenino.
DR = DT.Select("Sexo = 'F'");
Caso 3. Filtros múltiples
Si queremos que el registro cumpla varias condiciones tendremos que hacer uso de los operadores AND y OR
DT.Select("CAMPO1 = VALOR1 AND CAMPO2 = VALOR2")
Con la siguiente sentencia leeríamos todos los usuarios de sexo femenino y que además radican en Monterrey.
DR = DT.Select("Sexo = 'F' AND Ciudad = 'Monterrey'");
domingo, 4 de julio de 2010
Cargar un GridView con un DataSource
Ahora veremos como llenar un GridView a partir de un DataSource y no con un DataTable como lo habíamos hecho anteriormente.
Primero tendremos que crear un DataSource, asignarle la cadena de conexión a nuestro servidor SQL y poner nuestra sentencia SQL.
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:cnConexion %>"
SelectCommand="SELECT [EmployeeID], [LastName], [FirstName] FROM [Employees]">
</asp:SqlDataSource>
Esto se puede hacer en modo diseño, para evitar tener que ingresar el código de forma directa.
Posteriormente debemos asignarle nuestro DataSource al GridView de nuestra página.
<asp:GridView ID="grdListado" runat="server" AutoGenerateColumns="False"
DataKeyNames="EmployeeID" DataSourceID="SqlDataSource1">
<Columns>
<asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID"
InsertVisible="False" ReadOnly="True" SortExpression="EmployeeID" />
<asp:BoundField DataField="LastName" HeaderText="LastName"
SortExpression="LastName" />
<asp:BoundField DataField="FirstName" HeaderText="FirstName"
SortExpression="FirstName" />
</Columns>
</asp:GridView>
Si le asignamos el DataSource en modo diseño, el Visual Studio generará automáticamente las columnas del GridView, lo que nos facilitará aun mas las cosas.
Saludos...
domingo, 13 de junio de 2010
Metodo Compute de un DataTable con filtros
Ahora, lo que haremos será utilizar filtros en el método Compute.
Siguiendo con nuestro ejemplo anterior, supongamos que deseemos obtener el promedio de hombres o mujeres; nuestra sentencia quedaría de la siguiente manera:
DT.Compute("AVG(Promedio)", "(Sexo = 'M')") 'Promedio de calificaciones de mujeres
DT.Compute("AVG(Promedio)", "(Sexo = 'H')") 'Promedio de calificaciones de hombre
También podemos tener mas de una condición utilizando los operadores AND ú OR, por ejemplo, con la siguiente sentencia obtendriamos el promedio de hombres que se llaman Manuel.
DT.Compute("AVG(Promedio)", "(Sexo = 'H') AND (Nombre = 'Manuel')")
Aquí también tenemos la opción de utilizar el operador LIKE de la misma manera en que se utiliza en las sentencias SQL, por ejemplo, con la siguiente línea podremos saber cuantos alumnos tienen un nombre que comienza con la letra A.
DT.Compute("COUNT(Nombre)", "(Nombre LIKE 'A%')")
También hay que considerar que cuando nuestro DataTable no encuentre registros que cumplan las restricciones que estamos poniendo nos devolverá un valor nulo.
ne...
Siguiendo con nuestro ejemplo anterior, supongamos que deseemos obtener el promedio de hombres o mujeres; nuestra sentencia quedaría de la siguiente manera:
DT.Compute("AVG(Promedio)", "(Sexo = 'M')") 'Promedio de calificaciones de mujeres
DT.Compute("AVG(Promedio)", "(Sexo = 'H')") 'Promedio de calificaciones de hombre
También podemos tener mas de una condición utilizando los operadores AND ú OR, por ejemplo, con la siguiente sentencia obtendriamos el promedio de hombres que se llaman Manuel.
DT.Compute("AVG(Promedio)", "(Sexo = 'H') AND (Nombre = 'Manuel')")
Aquí también tenemos la opción de utilizar el operador LIKE de la misma manera en que se utiliza en las sentencias SQL, por ejemplo, con la siguiente línea podremos saber cuantos alumnos tienen un nombre que comienza con la letra A.
DT.Compute("COUNT(Nombre)", "(Nombre LIKE 'A%')")
También hay que considerar que cuando nuestro DataTable no encuentre registros que cumplan las restricciones que estamos poniendo nos devolverá un valor nulo.
ne...
Método Compute de un DataTable
Ahora veremos las funciones más importantes del método Compute de un DataTable, tales como Count, Max, Min y Avg.
Para ello, crearemos un listado de alumnos con sus respectivos promedios y a partir de esos promedios haremos nuestros cálculos.
Nuestro DataTable estará formado por los campos Nombre, Sexo y Promedio.
Con la siguiente línea obtendremos el promedio de calificaciones de nuestros alumnos.
DT.Compute("AVG(Promedio)", "")
Con la siguiente línea obtendremos la calificación máxima de los alumnos
DT.Compute("MAX(Promedio)", "")
Con la siguiente línea obtendremos la calificación mínima de los alumnos
DT.Compute("MIN(Promedio)", "")
Con la siguiente línea obtendremos el número de alumnos
DT.Compute("COUNT(Nombre)", "")
Con la siguiente línea obtendremos la suma de las calificaciones de los alumnos
DT.Compute("SUM(Promedio)","")
Por ahora no estamos usando ningun filtro, más adelante veremos como utilizarlos.
Para ello, crearemos un listado de alumnos con sus respectivos promedios y a partir de esos promedios haremos nuestros cálculos.
Nuestro DataTable estará formado por los campos Nombre, Sexo y Promedio.
Con la siguiente línea obtendremos el promedio de calificaciones de nuestros alumnos.
DT.Compute("AVG(Promedio)", "")
Con la siguiente línea obtendremos la calificación máxima de los alumnos
DT.Compute("MAX(Promedio)", "")
Con la siguiente línea obtendremos la calificación mínima de los alumnos
DT.Compute("MIN(Promedio)", "")
Con la siguiente línea obtendremos el número de alumnos
DT.Compute("COUNT(Nombre)", "")
Con la siguiente línea obtendremos la suma de las calificaciones de los alumnos
DT.Compute("SUM(Promedio)","")
Por ahora no estamos usando ningun filtro, más adelante veremos como utilizarlos.
Suscribirse a:
Entradas (Atom)
-
Lo que pretendemos lograr es poder agregar registros a un GridView utilizando un DataTable que contenga toda la información que queremos mos...
-
Ahora solo nos falta ver como podemos eliminar registros de un GridView a partir de un DataTable . Para ello, debemos agregar una columna ti...
-
Ahora lo que vamos a hacer es tener la posibilidad de editar los usuarios que vayamos agregando a nuestro catálogo. La primera cosa que vamo...