Professional Documents
Culture Documents
SHOW DATABASES;
Una tabla de una base de datos es similar en apariencia a una hoja de clculo, en
cuanto a que los datos se almacenan en filas y columnas. Como consecuencia,
normalmente es bastante fcil importar una hoja de clculo en una tabla de una
base de datos. La principal diferencia entre almacenar los datos en una hoja de
clculo y hacerlo en una base de datos es la forma de organizarse los datos.
Nombre:
Propietario:
Cantidad de
Una tabla puede tener un mximo de 254 columnas.
Columnas:
A nivel de Columna el nombre de la columna puede tener un mximo de 30
caracteres.
En Oracle podemos implementar diversos tipos de tablas. A continuacin se
presenta una recopilacin no exhaustiva de ellas.
Tipo Tabla
Regular
(heap)
Clustered
Descripcin
Son el mecanismo de almacenamiento de los datos en una base
de datos Oracle. Contienen un conjunto fijo de columnas. Las
columnas de una tabla describen los atributos de la entidad que
se representa con la tabla. Cada columna tiene un nombre y
caractersticas especficas: tipo de dato y longitud, restricciones,
etc.
Un cluster proporciona un mtodo opcional de almacenar datos
de tabla. Un cluster est compuesto de un grupo de tablas que
comparten los mismos bloques de datos. Las tablas son
Tipo Tabla
Descripcin
agrupadas mediante columnas comunes.
Index
Temporales
Tipo de Dato
Descripcin
Contiene datos binarios con un tamao mximo de 4
gigabytes. Los datos binarios nos van a permitir guardar
en la base de datos archivos, imgenes, sonidos, etc ...
BLOB
BINARY_DOUBLE
Precisin doble
BINARY_FLOAT
Precisin simple
Un tipo de datos CLOB de Oracle contiene datos de
caracteres basados en el juego de caracteres
predeterminados del servidor. Su tamao mximo es de
4 gigabytes. Se asigna a cadena.
CLOB
SELECT
DBMS_LOB.substr(campo,
DBMS_LOB.getlength(campo), 1)
FROM tablaprueba;
CHAR
DATE
NUMBER(dig [, dec])
NVARCHAR2
TIMESTAMP
VARCHAR2(tamao)
Campen
Escudera
2012 -
Brawn GP
McLaren
Ferrari
Renault
Renault
estados (
INTEGER PRIMARY KEY,
CHAR(25) NOT NULL,
CHAR(25) NOT NULL,
INTEGER NOT NULL,
INTEGER NOT NULL
Tablas Temporales
Oracle permite la creacin de tablas temporales para mantener datos propios y
exclusivos a una sesin Oracle determinada. Estos datos permanecern en el
sistema slo durante el tiempo que dure la transaccin o sesin involucrada. No
obstante, al igual que para las tablas permanentes, la definicin de las tablas
temporales se almacena en las tablas del sistema.
La siguiente sintaxis permite crear una tabla temporal personal para cada sesin.
Eso significa que los datos no se comparten entre sesiones y se eliminan al final
de la misma.
CREATE GLOBAL TEMPORARY TABLE [ schema. ]table (
nombreColumna tipoDato [DEFAULT expresin] [NOT NULL],
[,nombre_columna
tipo_dato [DEFAULT expresin]
[restriccin_columna] ...
|restriccin_tabla];
ON COMMIT { DELETE | PRESERVE } ROWS ]
[ physical_properties ]
Con la opcin ON COMMIT DELETE ROWS se borran los datos cada vez que se
hace COMMIT en la sesin.
Con la opcin ON PRESERVE DELETE ROWS los datos no se borran hasta el
final de la sesin.
Sus ventajas son varias, la informacin contenida en ella esta solo disponible para
la sesin actual, cualquier insercin, borrado, actualizacin solo se refleja en la
sesin activa.
Muchas funcionalidades de cualquier tabla normal se mantienen en ella, como
triggers a nivel tabla, vistas, ndices, exportar e importar (claro solo la definicin de
la tabla).
(DROP) Eliminacin
Cuando una tabla ya no es til y no vamos a volver a necesitarla debe ser borrada.
Esta operacin se puede realizar con el comando DROPTABLE.
Modificacin
Oracle permite modificar las restricciones definidas para una tabla. Esto puede
llevar a inconsistencia de los datos ya introducidos en la base de datos. Por
ello, Oracle tiene definidos mecanismos para modificacin de los datos ya
existentes.
Esta operacin se puede realizar con el comando ALTER TABLE.
ALTER TABLE [esquema.]tabla
clausula_constraint [,]
[ENABLE clausula_activa | DISABLE clausula_disable]
[{ENABLE|DISABLE} TABLE LOCK]
[{ENABLE|DISABLE} ALL TRIGGERS];
La opcin ADD ... NOT NULL slo ser posible si la tabla est vaca.
La opcin MODIFY ... NOT NULL slo podr realizarse cuando la tabla
no contenga ninguna fila con valor nulo en la columna en cuestin.
MySQL
MySQL soporta varios motores de almacenamiento que tratan con distintos tipos
de tabla. Los motores de almacenamiento de MySQL incluyen algunos que tratan
con tablas transaccionales y otros que no lo hacen:
MyISAM
que no hace nada. Puede crear tablas con este motor, pero no puede almacenar
datos ni recuperarlos. El objetivo es que sirva como ejemplo en el cdigo MySQL
para ilustrar cmo escribir un motor de almacenamiento. Como tal, su inters
primario es para desarrolladores.
NDB Cluster es el motor de almacenamiento usado por MySQL Cluster para
La versin 5 de MySQL crea por defecto tablas innoDB que permiten el manejo
de integridad referencial, transacciones. Al igual que las tablas regulares de
oracle. Para saber si el gestor de base de datos de MySQL que tenemos las
soporta es necesario ejecutar la siguiente sentencia.
SHOW VARIABLES liKE '%innodb%';
Si nuestro gestor soporta por defecto las tablas innodb las sentencias para crear
las tablas previamente mostradas sern exactamente igual a las de oracle. En
caso contrario se muestra la sintaxis correspondiente
CREATE TABLE f1 (
year
INTEGER PRIMARY KEY,
campeon
CHAR(30),
escuderia CHAR(20)
) ENGINE = InnoDB;
Ejemplo: Estados, capitales, densidad de poblacin y superficie de la Republica
Mexicana
CREATE TABLE estados (
idEstado
INTEGER PRIMARY KEY,
nombreEstado CHAR(25) NOT NULL,
capital
CHAR(25) NOT NULL,
densidad
INTEGER NOT NULL,
poblacion
INTEGER NOT NULL
) ENGINE = InnoDB;
Comando Describe
MySQL proporciona este comando que resulta til para conocer la estructura de
una tabla, las columnas que la forman y su tipo y restricciones. La sintaxis es la
siguiente DESCRIBE nombreTabla.
DESCRIBE estados;
El comando SHOW TABLES muestra las tablas dentro de una base de datos y
SHOW CREATE TABLES muestra la estructura de creacin de la tabla.
Tablas temporales
Este tipo de tabla solo puede ser usada por el usuario que la crea.
Si creamos una tabla que tiene el mismo nombre que una existente en la base de
datos, la que existe quedar oculta y trabajaremos sobre la temporal.
Se almacenan en memoria
Las tablas MEMORY se comparten entre todos los clientes (como cualquier otra
tabla no-TEMPORARY).
Modificacin
Esta operacin se puede realizar con el comando ALTER TABLE. Para usar
ALTER TABLE, necesita permisos ALTER, INSERT y CREATE para la tabla.
La sintaxis para MySQL es:
| table_options
Una vez definida la estructura de datos del modelo relacional, pasamos a estudiar
las reglas de integridad, es decir que los datos almacenados en dicha estructura
deben cumplir ciertas caractersticas para garantizar que son correctos. Al definir
cada atributo sobre un dominio se impone una restriccin sobre el conjunto de
valores permitidos para cada atributo.
A este tipo de restricciones se les denomina restricciones de dominios. Hay
adems dos reglas de integridad muy importantes que se deben cumplir en todas
las bases de datos relacionales y en todos sus estados o instancias (las reglas se
deben cumplir todo el tiempo). Estas reglas son la regla de integridad de
entidades y la regla de integridad referencial. Antes de definirlas, es preciso
conocer el concepto de nulo.
Restricciones de dominios
Imponen una limitacin al conjunto de valores permitidos para los atributos en las
relaciones. Permitiendo restringir los valores que puede tomar un atributo respecto
a su dominio, por ejemplo EDAD >= 18.
Nulos
especificar de la misma forma que NOT NULL. La restriccin se puede usar para
las columnas calculadas slo si se especifica tambin PERSISTED.
MySQL 5.02 Si la columna puede tener NULL como valor, la columna se define
con una clusula DEFAULT NULL explcita. En caso contrario no define DEFAULT
explcito.
Restriccin UNIQUE
En un ndice UNIQUE todos los valores en el ndice deben ser distintos. Ocurre un
error si intenta aadir un nuevo registro con una clave que coincida con un registro
existente. La excepcin es que una columna en el ndice puede contener valores
NULL mltiples
Clusula check
Una PRIMARY KEY es una llave nica donde todas las columnas de la clave
deben definirse como NOT NULL. Si no se declaran explcitamentecomo NOT
NULL, el gestor las declara implcitamente. Una tabla puede tener slo una
PRIMARY KEY
Ntese que esta regla slo se aplica a las relaciones base y a las claves primarias,
no a las claves alternativas.
Regla de los nulos: Los campos involucrados en llaves primarias son por definicin
no nulos.
clave ajena?
o
o
o
Sintaxis
CONSTRAINT FK_columna
Toda aplicacin trata de reflejar parte del funcionamiento del mundo real, para
automatizar tareas que de otro modo seran llevadas a cabo de modo ms
ineficiente, o bien no podran realizarse. Para ello, es necesario que cada
aplicacin refleje las restricciones que existen en el negocio dado, de modo que
nunca sea posible llevar a cabo acciones no vlidas. A las reglas que debe seguir
la aplicacin para garantizar se les denomina reglas de negocio.
Ejemplos de tales reglas son:
) ENGINE = InnoDB;
CREATE TABLE canciones (
idCancion
INTEGER,
asin
CHAR(12) NOT NULL,
nombreCancion CHAR(30) NOT NULL,
duracion
CHAR(6),
estilo
CHAR(15),
CONSTRAINT pk_canciones PRIMARY KEY (idCancion),
CONSTRAINT fk_DiscoCanciones FOREIGN KEY (asin)
REFERENCES disco (asin)
) ENGINE = InnoDB;
Mantenimiento ms fcil.
<constraint_name>
PRIMARY
KEY
(<column_name
>[,<column_name>])
CONSTRAINT <constraint_name> UNIQUE (<column_name>[,<column_name>])
CONSTRAINT
<constraint_name>
FOREIGN
KEY
(<column_name>[,<column_name>])
REFERENCES <table_name>
CONSTRAINT <constraint_name> CHECK (<condicin>)
CONSTRAINT
Donde:
ORACLE impone los siguientes lmites en lo que respecta a los objetos descritos
en esta seccin:
El nmero mximo de columnas que pueden constituir una clave primaria, una
clave alterna o una clave fornea es de 16.
);
CREATE TABLE equipo (
idEquipo
NUMBER,
nombreEquipo
CHAR(25) NOT NULL,
seudonimo
CHAR(25) NOT NULL,
nombre_oficial CHAR(60) NOT NULL,
direccion
CHAR(35) NOT NULL,
codigoPostal
NUMBER(5),
ciudad
CHAR(30) NOT NULL,
escudo
CHAR(50),
fechaFundacion DATE,
paginaWeb
CHAR(50) NOT NULL,
CONSTRAINT PK_Equipo
PRIMARY KEY (idEquipo)
);
CREATE TABLE jugador (
idJugador NUMBER,
nombreJugador CHAR(40),
idEquipo
NUMBER,
idPosicion NUMBER NOT NULL,
jj
NUMBER DEFAULT 0,
jc
NUMBER DEFAULT 0,
jt
NUMBER DEFAULT 0,
ec
NUMBER DEFAULT 0,
sc
NUMBER DEFAULT 0,
minutos
NUMBER DEFAULT 0,
goles
NUMBER DEFAULT 0,
ta
NUMBER DEFAULT 0,
tr
NUMBER DEFAULT 0,
numero
NUMBER NOT NULL,
fechaNacimiento DATE NOT NULL,
estatura
NUMBER,
peso
NUMBER,
idNacionalidad NUMBER DEFAULT 1,
CONSTRAINT PK_Jugador
PRIMARY KEY (idJugador),
CONSTRAINT FK_Juega_En
FOREIGN KEY (idEquipo)
REFERENCES equipo (idEquipo),
CONSTRAINT FK_Juega_Como FOREIGN KEY (idPosicion)
REFERENCES posicion (idPosicion),
CONSTRAINT FK_Origen
FOREIGN KEY (idNacionalidad)
REFERENCES nacionalidad
(idNacionalidad)
);
CREATE TABLE partido (
idPartido
NUMBER,
jornada
NUMBER(2)
NOT NULL,
fecha
DATE
NOT NULL,
hora
CHAR(5)
NOT NULL,
idLocal
NUMBER(3) NOT NULL,
golLocal
NUMBER(2) DEFAULT 0,
idVisitante
NUMBER(3) NOT NULL,
golVisitante
NUMBER(3) DEFAULT 0,
idEstadio
NUMBER(3) NOT NULL,
arbitro
CHAR(50) NOT NULL,
asistente1
CHAR(50) NOT NULL,
asistentente2
CHAR(50) NOT NULL,
cJuez
CHAR(50),
idEquipoLocal
NUMBER(3) NOT NULL,
idEquipoVisitante NUMBER(3) NOT NULL,
CONSTRAINT PK_Partido PRIMARY KEY (idPartido),
CONSTRAINT FK_Partidos_En FOREIGN KEY (idEstadio)
REFERENCES estadio (idEstadio),
CONSTRAINT FK_Local
FOREIGN KEY (idLocal)
REFERENCES equipo (idEquipo),
CONSTRAINT FK_Visitante
FOREIGN KEY (idVisitante)
REFERENCES equipo (idEquipo)
);
CREATE TABLE
posicion (
idPosicion
INTEGER(1),
nombrePosicion CHAR(20) NOT NULL,
CONSTRAINT PK_Posicion PRIMARY KEY (idPosicion)
);
CREATE TABLE
nacionalidad (
idNacionalidad
INTEGER(3),
nombreNacionalidad CHAR(20) NOT NULL,
CONSTRAINT
PK_Nacionalidad PRIMARY KEY
(idNacionalidad)
);
CREATE TABLE
estadio (
idEstadio
nombreEstadio
direccion
codigoPostal
ciudad
fechaInaguracion
capacidad
foto
CONSTRAINT
);
INTEGER(3),
CHAR(25) NOT NULL,
CHAR(35) NOT NULL,
INTEGER(5),
CHAR(30) NOT NULL,
DATE,
INTEGER NOT NULL,
CHAR(30),
PK_Estadio PRIMARY KEY (idEstadio)
NULL,
NULL,
NULL,
NULL,
NULL,
escudo
CHAR(50),
fechaFundacion DATE,
paginaWeb
CHAR(50) NOT NULL,
CONSTRAINT PK_Equipo
PRIMARY KEY (idEquipo)
);
CREATE TABLE
jugador (
idJugador
INTEGER,
nombreJugador CHAR(40),
idEquipo
INTEGER,
idPosicion
INTEGER NOT NULL,
jj
INTEGER DEFAULT 0,
jc
INTEGER DEFAULT 0,
jt
INTEGER DEFAULT 0,
ec
INTEGER DEFAULT 0,
sc
INTEGER DEFAULT 0,
minutos
INTEGER DEFAULT 0,
goles
INTEGER DEFAULT 0,
ta
INTEGER DEFAULT 0,
tr
INTEGER DEFAULT 0,
numero
INTEGER NOT NULL,
fechaNacimiento DATE NOT NULL,
estatura
INTEGER,
peso
INTEGER,
idNacionalidad INTEGER,
CONSTRAINT PK_Jugador PRIMARY KEY (idJugador),
CONSTRAINT FK_Juega_En FOREIGN KEY (idEquipo)
REFERENCES equipo (idEquipo),
CONSTRAINT FK_Juega_Como FOREIGN KEY (idPosicion)
REFERENCES posicion (idPosicion),
CONSTRAINT FK_Origen FOREIGN KEY (idNacionalidad)
REFERENCES nacionalidad
(idNacionalidad)
);
DROP
DROP
DROP
DROP
DROP
TABLE
TABLE
TABLE
TABLE
TABLE
asignado
proyecto
linea
investigador
depAcademico
CREATE TABLE
CASCADE
CASCADE
CASCADE
CASCADE
CASCADE
CONSTRAINTS;
CONSTRAINTS;
CONSTRAINTS;
CONSTRAINTS;
CONSTRAINTS;
(
idLinea
CHAR(20),
nombreLinea
CHAR(100) NOT NULL,
financiadoPor CHAR(30) NOT NULL,
CONSTRAINT PK_Linea PRIMARY KEY (idLinea)
);
CREATE TABLE
linea
proyecto (
idProyecto
CHAR(20),
idLinea
CHAR(20) NOT NULL,
nombreProyecto CHAR(100) NOT NULL,
F_Inicio
DATE NOT NULL,
F_Terminacion DATE NOT NULL,
Presupuesto
NUMBER(10,0) NOT NULL,
CONSTRAINT
PK_Proyecto PRIMARY KEY (idProyecto),
CONSTRAINT
FK_Linea
REFERENCES linea (idLinea)
);
(idDepartamento)
);
CREATE TABLE
investigador (
ife
CHAR(13),
nombreInvestigador CHAR(50) NOT NULL,
telefono
CHAR(10) NOT NULL,
email
CHAR(50) NOT NULL,
idDepartamento
NUMBER
NOT NULL,
CONSTRAINT PK_Investigador PRIMARY KEY (ife),
CONSTRAINT FK_DepAcademico FOREIGN KEY (idDepartamento)
REFERENCES depAcademico
(idDepartamento)
);
CREATE TABLE
asignado (
ife
CHAR(13) NOT NULL,
idProyecto
CHAR(20)
NOT NULL,
F_Inicio
DATE NOT NULL,
F_Termino
DATE,
tipoParticipacion CHAR(20) NOT NULL,
CONSTRAINT FK_Investigador FOREIGN KEY (ife) REFERENCES
investigador (ife),
CONSTRAINT FK_Proyecto
FOREIGN KEY (idProyecto)
REFERENCES proyecto (idProyecto)
);
CREATE TABLE
linea
(
idLinea
CHAR(20),
nombreLinea
CHAR(100) NOT NULL,
financiadoPor CHAR(30) NOT NULL,
CONSTRAINT PK_Linea PRIMARY KEY (idLinea)
);
CREATE TABLE
proyecto (
idProyecto
CHAR(20),
idLinea
CHAR(20) NOT NULL,
nombreProyecto CHAR(100) NOT NULL,
F_Inicio
DATE NOT NULL,
F_Terminacion DATE NOT NULL,
Presupuesto
DECIMAL(10,0) NOT NULL,
CONSTRAINT
PK_Proyecto PRIMARY KEY (idProyecto),
CONSTRAINT
FK_Linea
FOREIGN KEY (idLinea)
REFERENCES LINEA (idLinea)
);
(idDepartamento)
);
CREATE TABLE
investigador (
ife
CHAR(13),
nombreInvestigador CHAR(50) NOT NULL,
telefono
CHAR(10) NOT NULL,
email
CHAR(50) NOT NULL,
idDepartamento
INTEGER
NOT NULL,
CONSTRAINT PK_Investigador PRIMARY KEY (ife),
CONSTRAINT FK_DepAcademico FOREIGN KEY (idDepartamento)
REFERENCES depAcademico
(idDepartamento)
);
CREATE TABLE
asignado (
ife
CHAR(13) NOT NULL,
idProyecto
CHAR(20) NOT NULL,
F_Inicio
DATE NOT NULL,
F_Termino
DATE,
tipoParticipacion CHAR(20) NOT NULL,
CONSTRAINT FK_Investigador FOREIGN KEY (ife) REFERENCES
investigador (ife),
CONSTRAINT FK_Proyecto
FOREIGN KEY (idProyecto)
REFERENCES proyecto (idProyecto));