Académique Documents
Professionnel Documents
Culture Documents
indices, reglas,
defaults
grant, revoke
Creacin de Tablas
Diseo de Tablas
Datatype
Un tipo de datos (datatype) es un atributo asignado a una
columna que especifica el tipo de informacin que puede
almacenarse en esa columna
Seleccionar Datatypes
Para seleccionar el datatype de una columna:
1. Determinar el conjunto posible de valores
2. Determinar la precisin requerida
3. Encontrar el datatype que:
Categoras de Datatypes
Nmeros exactos
Nmeros con exactitud y precisin predecibles
Nmeros aproximados
Nmeros con valores dependiendo de exactitud y precisin del
almacenamiento
Money
Valores para pesos
Date y time
Valores de fechas y horas
Character
Para strings caracteres
Binary
Informacin binaria (como imgenes, video y bits)
Nmeros aproximados
float (p), real, double precision (dependientes de mquina)
Money
money
Date y time
datetime
Character
char (n), varchar (n), text
Binary
bit, binary, varbinary, image
Propiedades de NULL
Una columna con la propiedad NULL permite NULLs
Esto se conoce como nullable column
Propiedad IDENTITY
La propiedad IDENTITY hace que el sistema asigne
automticamente valores nicos a cada fila
Crear Tablas
Crear Tabla
create table empleado (
emp_id
numeric(4,0) IDENTITY,
apellido
nombre
e_mail
char(6)
departamento
typ_ch_deptid
NULL,
)
Borrar Tablas
Sintaxis Simplificada para drop:
Clusula default
Tablas y Permisos
Para permitir que otros usuarios puedan consultar,
manipular los datos o hacer referencia a una tabla, se deben
dar permisos
Sintaxis Simplificada:
grant { select | insert | update | delete | reference | all }
on table_name
to user_list
Ejemplo:
grant select on empleado to juan, sandra, pablo
Adicin de Columnas
Despus de creada una tabla, se pueden aadir columnas
Algunos DBMS no permiten borrar directamente una
columna de una tabla
Para borrar una columna, se debe borrar y volver a crear la tabla
Adicionar Columnas
alter table editor
add address varchar(40) NULL,
country varchar(20) NULL
Copiar Tablas
select into es una extensin que se usa para crear una
copia de una tabla existente
Ejemplos:
insert into editor
values ("736", Nuevas BD", Pasto",
Nario")
insert into editor (nombre, pub_id)
values (Prensa Actual", "2003)
update table_name
set column1 = { expression | select_statement }
[, column2 = { expression | select_statement } ...]
[from table_list]
[where condition]
Ejemplos:
update titles
update authors
set address = "1224 Mason Ct.",
phone = "415 773-2882"
where au_id = "427-17-2319"
Ejemplos:
delete from editor
delete from titulo
where tipo = "business"
delete from autor
where au_fname = "Luis"
and au_lname = Caicedo"
Ejemplo
delete titles
from titles t, publishers p
where t.pub_id = p.pub_id
and p.state = "CA"
truncate table
truncate table borra todas las filas de una tabla
La operacin se ejecuta ms rpido que la
correspondiente sentencia delete
El comamdo no se puede usar para borrar algunas filas
de la tabla
Sintaxis simplificada:
truncate table table_name
Ejemplo:
truncate table publishers
Select
Ejemplo:
select type, avg(price)
from titles
where type not in ("mod_cook", "trad_cook")
group by type
having avg(price) > $12.00
order by type
Vista
Una vista es un objeto de base de datos que consiste de una
sentencia select almacenada
Usada para:
Simplificar la construccin de consultas complejas
Simplificar al usuario la percepin de la base de datos
Limitar el acceso a los datos
Ejemplo:
Ejemplo:
Vistas y permisos
Para permitir que otros utilicen una vista, se deben dar
permisos:
grant [ select | insert | update | delete | all ]
on view_name
to user_list
Ejemplo:
grant select
on vw_california_authors
to clerk1, clerk2, clerk3, clerk4
au_fname
-------Johnson
Marjorie
Cheryl
Michael
Dick
state
----CA
CA
CA
CA
CA
phone
----408 496-7223
415 986-7020
415 548-7723
408 286-2428
415 834-2919
title
----You Can Combat Computer Stress
Is Anger the Enemy?
Ejemplo:
create view vw_kansas_authors
as
select au_id, au_lname, au_fname, state, phone
from authors
where state = "KS"
with check option
_______________________________
update vw_titles_pubs
set publisher = "New Millenium Books"
where publisher = "New Age Books"
_______________________________
insert into vw_titles_pubs
values ("Life in Houston", "TexTitles")
________________________________
Table scan
Un table scan es una bsquda en donde se leen todas las
filas de una tabla
Una tabla que no tenga ndices creados, solamente puede
hacer bsquedas a travs de un table scan
Indices
Un ndice es un objeto de base de datos que ayuda al
servidor a encontrar un dato ms rpidamente
Index pages
key
key
Bennet
Karsen
Smith
row
ptr
pg
ptr
PAGE
PAGE1001
1001
1421, 1
1007
1876, 1
1305
1242, 1
1062
row
ptr
pg
ptr
Bennet
Greane
Hunter
PAGE
PAGE1007
1007
1421, 1
1132
1242, 4
1133
1242, 1
1127
Karsen
PAGE
PAGE1305
1305
1876, 1
1311
(more pages)
create index idx_authors_2
on authors(au_lname)
PAGE
PAGE1132
1132
Bennet
1421, 1
Chan
1129, 3
Dull
1409, 1
Edwards
1018, 5
PAGE
PAGE1133
1133
Greane
1242, 4
Green
1421, 2
Greene
1409, 2
PAGE
PAGE1127
1127
Hunter
1242, 1
Jenkins
1241, 4
(more pages)
PAGE
PAGE1241
1241
10
OLeary
11
Ringer
White
12
13
Jenkins
PAGE
PAGE1242
1242
14
Hunter
15
Smith
Ringer
16
17
Greane
PAGE
PAGE1421
1421
18
Bennet
19
Green
Ringer
20
PAGE
PAGE1409
1409
21
Dull
22
Greene
White
23
(more pages)
Ejemplo:
create clustered index idx_c_titles_1
on titles (title_id)
Ejemplo:
drop index titles.idx_c_titles_1
Indice no-compuesto
Un ndice no-compuesto es un ndice creado sobre una
columna
Ejemplo:
create index idx_authors_2
on authors(state)
Indice compuesto
Un ndice compuesto es un ndice creado sobre dos o
ms columnas
Ejemplo:
create index idx_authors_3
on authors(au_lname, au_fname)
Indice no-nico
Un Indice No-nico es un ndice que permite valores
duplicados
Ejemplo:
create index idx_authors_2
on authors(state)
Indice nico
Un ndice nico es un ndice que no permite valores
duplicados
Ejemplo:
Indice no-cluster
Un ndice no-cluster es un ndice que utiliza un concepto de
ordenamiento diferente a como se realiz el almacenamiento
de la tabla
Ejemplo:
create nonclustered index idx_authors_4
on authors(state)
intermediate level
key
key
Bennet
Karsen
Smith
row
ptr
pg
ptr
PAGE
PAGE1001
1001
1421, 1
1007
1876, 1
1305
1242, 1
1062
row
ptr
pg
ptr
Bennet
Greane
Hunter
PAGE
PAGE1007
1007
1421, 1
1132
1242, 4
1133
1242, 1
1127
Karsen
PAGE
PAGE1305
1305
1876, 1
1311
(more pages)
create index idx_authors_2
on authors(au_lname)
leaf level
key
row ptr
PAGE
PAGE1132
1132
Bennet
1421, 1
Chan
1129, 3
Dull
1409, 1
Edwards
1018, 5
PAGE
PAGE1133
1133
Greane
1242, 4
Green
1421, 2
Greene
1409, 2
PAGE
PAGE1127
1127
Hunter
1242, 1
Jenkins
1241, 4
(more pages)
authors table
(data pages)
PAGE
PAGE1241
1241
10
OLeary
11
Ringer
White
12
13
Jenkins
PAGE
PAGE1242
1242
14
Hunter
15
Smith
Ringer
16
17
Greane
PAGE
PAGE1421
1421
18
Bennet
19
Green
Ringer
20
PAGE
PAGE1409
1409
21
Dull
22
Greene
White
23
(more pages)
Indice cluster
Un ndice cluster es un ndice que, cuando se crea, indica cmo
estn fsicamente almacenados los datos en la tabla
Ejemplo:
intermediate level
key
key
Bennet
Karsen
Smith
pg ptr
PAGE
PAGE1001
1001
Bennet
Greane
Hunter
1007
1305
1062
Karsen
pg ptr
PAGE
PAGE1007
1007
PAGE
PAGE1305
1305
1241
1242
1421
1409
(more pages)
create clustered index idx_authors_2
on authors(au_lname)
authors table
(leaf/data pages)
PAGE
PAGE1241
1241
10
Bennet
11
Chan
Dull
12
13
Edwards
PAGE
PAGE1242
1242
14
Greane
15
Green
Greene
16
17
PAGE
PAGE1421
1421
18
Hunter
19
Jenkins
20
PAGE
PAGE1409
1409
21
Karsen
22
O'Leary
Ringer
23
(more pages)
Tabla temporal
Por el sistema:
Para almacenar resultados intermedios de consultas que
requieren ordenamiento o eliminacin de valores
Para almacenar resultados intermedios de consultas que tienen
la clusula compute o agregadas
Integridad de datos
Tres tipos de integridad ayudan a garantizar que los datos son
correctos
integridad a nivel de dominio
Asegura que cualquier valor en una columna est dentro del
conjunto de valores vlidos para esa columna
integridad referencial
Entity Integrity
Referential
Integrity
Constraints
Check
constraints
Primary key
constraints,
unique
constraints
References
constraints
Database
Objects
Rules
Indexes
Triggers
Constraint
Un constraint es un elemento de la sentencia create table
que forza uno de los tres tipos de integridad de datos
Declarada a nivel de columna o de tabla
Restriccin Check
Un check constraint forza integridad a nivel de Dominio
durante las adiciones y actualizaciones
Si una sentencia contiene un valor que no concuerda con los
permitidos, la sentencia falla
Ejemplo:
create table publishers (
pub_id
char(4)
NOT NULL
constraint chk_pub_id
check (pub_id like "99[0-9][0-9]"),
pub_name
varchar(40) NULL,
city varchar(20) NULL,
state
char(2)
NULL
)
Ejemplo:
create table discounts (
discounttype varchar(40)
NOT NULL,
stor_id
char(4)
lowqty
smallint
NULL,
highqty
smallint
NULL,
discount
float
NOT NULL,
constraint chk_low_high
check (lowqty <= highqty)
)
NULL,
Restricciones y defaults
Los servidores permiten que una tabla tenga default y check
sin que haya contradiccin
Ejemplo (cualquier insert que use el default fallar):
create table publishers (
pub_id
char(4)
NOT NULL,
pub_name varchar(40) NULL,
city varchar(20) default "Tulsa"
NULL,
state
char(2)
default "OK"
NULL,
constraint chk_state
check (state in ("CA", "OR", "WA", "NV"))
)
insert into publishers (pub_id, pub_name)
values ("9909", "Failed Imprints")
Primary key
Combinacin de una o ms columnas que identifican de
manera inequvoca una fila en una tabla
Unico
Cluster
No permite valores NULL en la(s) columna(s)
No se puede borrar usando la sentencia drop
index
Ejemplo:
Ejemplo:
create table sales (
stor_id
char(4)
NOT NULL,
ord_num
varchar(20) NOT NULL,
date
datetime
NOT NULL,
constraint pky_c_storid_ordnum
primary key (stor_id, ord_num)
)
],
]
Restriccin unique
Unico
No-cluster por default
Permite el uso de valores tipo NULL
No se puede borrar usando la sentencia drop
index
Ejemplo:
Ejemplo:
create table sales (
stor_id
char(4)
NOT NULL,
ord_num
varchar(20) NOT NULL,
date
datetime
NOT NULL,
constraint unq_stor_id_ord_num
unique (stor_id, ord_num)
)
],
]
How many
NULL values
does it allow?
Primary Key
Constraint
Clustered
None
No
Unique
Constraint
Nonclustered
One
Yes
Integridad referencial
Integridad referencial asegura un valor no se puede
almacenar en una tabla a menos que l exista en otra tabla (o
es NULL)
Ejemplo:
A publisher ID cannot be entered in the titles table unless it
exists in the publishers table
Foreign key
Una foreign key es una combinacin de una o ms
columnas que corresponde(n) a la llave primaria de otra tabla
Restriccin referencial
Una restriccin referencial forza integridad referencial
La integritdad se asegura en inserts, updates, y deletes
Si un insert o update contiene valores de foreign key que no
existen en la(s) column(s) primary key, la sentencia falla
Si un update o delete va a quitar un valor de primary key que
tiene valores foreign key existentes, la sentencia falla
Ejemplo:
| IDENTITY ]
| IDENTITY ]
Ejemplo:
Adicin de restricciones
Sintaxis simplificada para aadir:
alter table table_name
add constraint constraint_name
{ check (condition) | primary key (column_list)
| unique (column_list) |
foreign key (column_list) references table
(column_list) }
Ejemplos:
Borrado de restricciones
Sintaxis simplificada para borrado:
alter table table_name
drop constraint constraint_name
Ejemplos:
alter table roysched
drop constraint chk_hirange_lorange
alter table publishers
drop constraint pky_pub_id
alter table publishers
drop constraint unq_pub_name
alter table titles
drop constraint ref_pub_id
Ejemplos de restricciones
Crear una table employees:
create table employees (
emp_id
int,
name
varchar(40),
salary
money
)
Default
Un default es un objeto de base de datos que
proporciona un valor a una columna cuando en un
insert no se especifica un valor para esa columna
Se puede aplicar a una o ms columnas
Ejemplo:
create default def_state as
"CA"
Ejemplo:
drop default def_state
Rule
Una rule es un objeto de base de datos que no permite
inserts y updates si la regla no se cumple
Como la restriccin check, se puede utilizar para forzar
integridad a nivel de dominio
Crear reglas
Sintaxis simplificada:
create rule rule_name as
condition_expression
Ejemplos:
create rule rul_state as
@state in ("CA", "CO", "WA")
create rule rul_discount_range as
@discount between 0 and 20
create rule rul_file_date as
@date < 12 or @date > 22
create rule rul_pub_id as
@pub_id in ("1389", "0736", "0877") or
@pub_id like "99[0-9][0-9]"
Asignar reglas
Sintaxis simplificada:
sp_bindrule rule_name, object_name
Ejemplo:
sp_bindrule rul_state, "publishers.state"
Ejemplo:
drop rule rul_state
Rules y defaults
Crear una tabla:
create table employees (
emp_id
int,
name
varchar(20)
)
Entity
Integrity
Referential
Integrity
Constraints
Check
constraints
Primary key
References
constraint,
constraints
unique constraint
Database
Objects
Rules
Indexes
Triggers
Resumen de restricciones
Son exigidos en el estndar ANSI
Son especficos a la tabla en que se crean y no son
reutilizables
No se pueden asociar a datatype definidos por el
usuario
Se crean al crear las tablas (o al modificarlas)
Fcilmente se pueden implementar checks
multicolumna
Seleccin de un mtodo
Usar constraints: