0% encontró este documento útil (0 votos)
18 vistas

SQL1 Lec 03

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
18 vistas

SQL1 Lec 03

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 23

SQL SERVER

IMPLEMENTACIÓN

Eric Gustavo Coronel Castillo


www.desarrollasoftware.com
[email protected]
MICROSOFT SQL SERVER

NIVEL I - IMPLEMENTACIÓN

Creación de Tablas y Restricciones


de Integridad de Datos

Eric Gustavo Coronel Castillo


www.desarrollasoftware.com
[email protected]
LOGRO ESPERADO

Se espera que al finalizar esta clase


el participante tenga claro el
contexto en que se utilizan las bases
de datos relacionales, y
específicamente SQL Server.
Tipos de Datos

▪ CATEGORIAS
– Numéricos exactos
– Numéricos aproximados
– Fecha y hora
– Cadenas de caracteres No Unicode

Eric Gustavo Coronel Castillo
Cadenas de caracteres Unicode
– Cadenas binarias
– Otros tipos de datos

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Tipos de Datos

▪ Numéricos exactos
– bigint 8 bytes
– bit 1, 0 o NULL
– decimal(p,s) Depende de la presición (p)
– int 4 bytes

Eric Gustavo Coronel Castillo
money 8 bytes
– numeric(p,s) Depende de la presición (p)
– smallint 2 bytes
– smallmoney 4 bytes
– tinyint 1 byte

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Tipos de Datos

▪ Numéricos aproximados

– float[(n)] Depende del valor de n.


– real 4 bytes

▪ Fecha y hora
Eric Gustavo Coronel Castillo
– date de 0001-01-01 a 9999-12-31 3 bytes
– datetime de 1753-01-01 a 9999-12-31 8 bytes
– datetime2(n) 0001-01-01 a 9999-12-31 de 6 a 8 bytes
– datetimeoffset(n) Fecha, hora y desplazamiento de 8 a 10 bytes
– smalldatetime 1900-01-01 a 2079-06-06 4 bytes
– time(n) HH:MI:SS[.nnnnnnn] de 3 a 5 bytes

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Tipos de Datos

▪ Cadenas de caracteres NO UNICODE

– char(n) De longitud fija hasta 8.000 caracteres.


– varchar(n) De longitud variable hasta 8.000 caracteres.
– text De longitud variable hasta 2.147.483.647 caracteres.
Eric Gustavo Coronel Castillo
▪ Cadenas de caracteres UNICODE

– nchar(n) De longitud fija hasta 4.000 caracteres.


– nvarchar(n) De longitud variable hasta 4.000 caracteres.
– ntext De longitud variable 1.073.741.823 caracteres.
Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe
Tipos de Datos

▪ Cadenas binarias

– binary[(n)] De longitud fija hasta 8.000 bytes.


– varbinary[(n)] De longitud variable hasta 8.000 bytes.
– image De longitud variable hasta 2.147.483.647 bytes.

▪ Otros tipos de datos

– Eric Gustavo Coronel Castillo


cursor
• Un tipo de datos para las variables o para los parámetros de resultado de los procedimientos
almacenados que contiene una referencia a un cursor.
– table
• Es un tipo de datos especial que se puede utilizar para almacenar un conjunto de resultados para su
procesamiento posterior. table se utiliza principalmente para el almacenamiento temporal de un
conjunto de filas devuelto como el conjunto de resultados de una función con valores de tabla.
– xml ( [ CONTENT | DOCUMENT ] xml_schema_collection )
• Es el tipo de datos que almacena datos de XML. Puede almacenar instancias de xml en una columna
o una variable de tipo xml.

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Creación de Tablas

▪ SINTAXIS

CREATE TABLE table_name (


{ < column_definition > | < table_constraint > } [ ,...n ]
)

Eric Gustavo Coronel Castillo


< column_definition > ::=
{ column_name data_type }
[ { DEFAULT constant_expression
| [ IDENTITY [ ( seed , increment ) ] ]
}]
[ ROWGUIDCOL ]
[ < column_constraint > [ ...n ] ]

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Creación de Tablas

USE tienda
GO

CREATE TABLE maestros.articulo(


art_id INT NOT NULL IDENTITY(1,1),
Eric Gustavo Coronel Castillo
art_nombre VARCHAR(100) NOT NULL,
art_pre_costo MONEY NOT NULL,
art_pre_venta MONEY NOT NULL,
art_stock INT NOT NULL
)
GO

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Restricciones de Integridad

▪ Definición de Integridad
La Integridad es el término utilizado para decir que la información
almacenada tiene calidad. El DBMS debe asegurar que los datos
se almacenan de acuerdo a las políticas previamente
determinadas por el DBA.
En otras palabras, el DBMS debe principalmente, a este respecto,
Eric Gustavo Coronel Castillo
comprobar las restricciones de integridad, controlar la correcta
ejecución de las actualizaciones y recuperar la base de datos en
caso de pérdida.
Un control de integridad o restricción es aquel que nos permite
definir con precisión el rango de valores válidos para un elemento
y/o las operaciones que serán consideradas válidas en la relación
de tales elementos.

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Restricciones de Integridad

▪ Integridad de Entidad
– La integridad de entidad define una fila como entidad única para una
tabla determinada.
– La integridad de entidad exige la integridad de las columnas de los
identificadores o la clave primaria de una tabla, mediante índices y
Eric Gustavo Coronel Castillo
restricciones UNIQUE, o restricciones PRIMARY KEY.

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Restricciones de Integridad

▪ Integridad de Dominio
– La integridad de dominio viene dada por la validez de las entradas para
una columna determinada.
– Puede exigir la integridad de dominio para restringir el tipo mediante
tipos de datos, el formato mediante reglas y restricciones CHECK, o el
intervalo de valores posibles mediante restricciones FOREIGN KEY,
Eric Gustavo Coronel Castillo
restricciones CHECK, definiciones DEFAULT, definiciones NOT NULL y
reglas.

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Restricciones de Integridad

▪ Integridad Referencial

La integridad referencial protege las relaciones definidas entre las


tablas cuando se crean o se eliminan filas. En SQL Server la
integridad referencial se basa en las relaciones entre claves
foráneas y claves primarias, mediante restricciones FOREIGN
KEY. Eric Gustavo Coronel Castillo
La integridad referencial garantiza que los valores de clave sean
coherentes en las distintas tablas. Para conseguir esa coherencia,
es preciso que no haya referencias a valores inexistentes y que, si
cambia el valor de una clave, todas las referencias a ella se
cambien en consecuencia en toda la base de datos.

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Restricciones de Integridad

▪ Integridad Referencial

Tabla: Cliente ClienteId Nombre Email


C1001 Sergio Matsukawa Maeda [email protected]

C1002 Hugo Valencia Morales [email protected]

Eric Gustavo Coronel Castillo


C1003 Gustavo Coronel Castillo [email protected]
C1004 Ricardo Marcelo Villalobos [email protected]

Tabla: Pedido PedidoId Fecha ClienteId Importe


ClienteId en la
1001 04/Ene/2011 C1002 5,000.00 tabla Pedido es
una Clave Foránea.
10,000.0
1002 15/Ene/2011 C1001
0
1003 13/Feb/2011 C1004 8,500.00

1004 07/Mar/2011 C1001 7,400.00

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Implementación de Restricciones

NIVEL DE TIPO DE
DESCRIPCIÓN
INTEGRIDAD RESTRICCIÓN

Especifica el valor que se mantendrá para la columna cuando un valor no


DEFAULT
Dominio se ha ingresado explícitamente en una sentencia INSERT.
(columna)
CHECK Especifica los valores de los datos que son aceptables en la columna.

Eric Gustavo Coronel Castillo


PRIMARY KEY
Identifica cada registro o fila como única. Se crea un índice para mejorar
el rendimiento. Los valores nulos no son permitidos.
Entidad
(fila)
Previene la duplicación de las llaves alternas, y se asegura que un índice
UNIQUE
se crea para que mejore el rendimiento. Se permiten valores nulos.

Referencial Define la columna o combinación de columnas de una tabla secundaria,


FOREIGN KEY
(relación) cuyos valores dependen de la llave primaria de una tabla primaria.

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Implementación de Restricciones

CREATE TABLE maestros.articulo(


art_id INT NOT NULL IDENTITY(1,1),
art_nombre VARCHAR(100) NOT NULL,
art_pre_costo MONEY NOT NULL,
art_pre_venta MONEY NOT NULL,
art_stock INT NOT NULL
CONSTRAINT df_articulo_stock

Eric Gustavo Coronel Castillo


DEFAULT 0,
CONSTRAINT pk_articulo
PRIMARY KEY(art_id),
CONSTRAINT u_articulo_nombre
UNIQUE (art_nombre),
CONSTRAINT chk_articulo_pre_costo
CHECK(art_pre_costo > 0),
CONSTRAINT chk_articulo_pre_venta
CHECK(art_pre_venta > art_pre_costo)
)
GO

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Implementación de Restricciones

CREATE TABLE Cliente(


ClienteId CHAR(5) NOT NULL CONSTRAINT pk_cliente PRIMARY KEY,
Nombre VARCHAR(100) NOT NULL CONSTRAINT u_cliente_nombre UNIQUE,
Email VARCHAR(100) NOT NULL CONSTRAINT u_cliente_email UNIQUE
)
GO

Eric Gustavo Coronel Castillo


CREATE TABLE Pedido(
PedidoId INT NOT NULL IDENTITY(1000,1) CONSTRAINT pk_pedido PRIMARY
KEY,
Fecha DATE NOT NULL, ClienteId CHAR(5) NOT NULL,
Importe MONEY NOT NULL CONSTRAINT chk_pedido_importe
CHECK(Importe>0),
CONSTRAINT fk_pedido_cliente FOREIGN KEY (ClienteId)
REFERENCES Cliente ON DELETE NO ACTION ON UPDATE NO ACTION
)
GO

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Modificar de la Definición de una Tabla

ALTER TABLE [ database_name . ] [ schema_name . ] table_name {


ALTER COLUMN column_name
type_name [ ( precision [ , scale ] ) ]
[ NULL | NOT NULL ]
[ WITH { CHECK | NOCHECK } ]
| ADD

Eric Gustavo Coronel Castillo


{
<column_definition>
| <table_constraint>
} [ ,...n ]
| DROP
{
[ CONSTRAINT ] constraint_name
| COLUMN column_name
} [ ,...n ]

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Modificar de la Definición de una Tabla

ALTER TABLE maestros.articulo


ADD art_porc_ganancia INT NOT NULL
Eric Gustavo Coronel Castillo
CONSTRAINT df_articulo_porc_ganancia
DEFAULT 0
GO

Eric Gustavo Coronel Castillo gcoronelc.blogspot.pe


Eric Gustavo Coronel Castillo
FUNDAMENTOS DE
PROGRAMACIÓN CON JAVA
Inicia tu aprendizaje, utilizando las
mejores prácticas de programación

CURSO PROFESIONAL DE
JAVA ORIENTADA A OBJETOS
Aprende programación en capas,
Eric Gustavo Coronel Castillo patrones y buenas prácticas

Eric Gustavo Coronel Castillo


www.desarrollasoftware.com

PROGRAMACIÓN DE BASE DE
DATOS ORACLE CON PL/SQL
Aprende a obtener el mejor
rendimiento de tú base de datos

github.com/gcoronelc/UDEMY PROGRAMACIÓN DE BASE DE


youtube.com/DesarrollaSoftware DATOS ORACLE CON JDBC
facebook.com/groups/desarrollasoftware Aprende a programar correctamente
con JDBC
www.youtube.com/DesarrollaSoftware

Programming
Eric Gustavo is fun!!
Coronel Castillo
Programming is cool!!
If I program, you do too.

También podría gustarte