Professional Documents
Culture Documents
de Datos
SQL Lenguaje de Definicin de Datos (DDL)
USE
La palabra clave USE se utiliza para seleccionar una base de datos en MySQL y SQL
Server. La sintaxis es la siguiente:
USE <database_name>;
Por ejemplo, si desea conectarse a una base de datos llamada "dbFacturacion", puede
escribir lo siguiente:
USE dbFacturacion;
CREATE TABLE
En una base de datos relacional, los datos se almacenan en tablas. La sentencia CREATE
TABLE es uno de los componentes ms fundamentales de SQL.
Antes de sumergirse en la sintaxis SQL para CREATE TABLE, es una buena idea para
entender lo que pasa en una tabla. Una tabla est formada por filas y columnas. Cada
fila representa una sola pieza de los datos, y cada columna puede considerarse como la
representacin de un componente de ese pedazo de datos. Por ejemplo, si tenemos
una tabla para el registro de informacin de los clientes, a continuacin, las columnas
pueden incluir informacin como nombre, apellido, direccin, ciudad, pas y fecha de
nacimiento. Cuando especificamos una tabla, incluimos los encabezados de columna y
el tipo de datos de cada columna. Tambin podemos decidir colocar ciertas limitaciones
o restricciones, para garantizar que los datos almacenados en la tabla tengan sentido.
La sintaxis SQL para CREATE TABLE es:
CREATE TABLE <nombre_tabla<
("column 1" "data type para column 1" [column 1 constraint(s)],
"column 2" "data type para column 2" [column 2 constraint(s)],
...
[table constraint(s)] );
EJEMPLO: Crear una tabla TClientes con los campos indicados y las restricciones
La clusula WHERE 0 = 1 siempre es falsa. Por lo tanto, ninguna fila de datos se copian
de la Tabla1 a Tabla2. Slo se copia la estructura de la tabla.
En la seccin de CREATE TABLE, mencionamos que es necesario especificar el tipo de
datos para cada columna cuando creamos una tabla. La pregunta que surge es: cules
son los diferentes tipos de datos que podemos almacenar en una tabla? Podemos
agrupar los tipos de datos en :
Numeric
Character String
Date/Datetime
Binary
Numeric
Este tipo de datos almacena valores numricos. Los tipos de datos que caen en esta
categora incluyen Integer, Float, real, numeric o decimal. Las funciones ms comunes
que operan en este tipo de datos incluyen COUNT, SUM, MAX, MIN y AVG.
Character String
Este tipo de datos almacena valores de caracteres. Los dos tipos comunes son CHAR
(n) y VARCHAR (n). El tipo de datos CHAR (n) contiene n caracteres. VARCHAR es un
char variable, lo cual significa que la longitud del campo puede variar. Por ejemplo, un
tipo de datos VARCHAR (10) puede contener hasta 10 caracteres. Pero si los datos es
de slo 8 caracteres de longitud, entonces solamente almacenar 8 caracteres. Las
funciones ms comunes que operan en este tipo de datos, se vern cuando se trate de
Funciones de cadena.
Binary
Este tipo de datos nos permite almacenar objetos binarios en una tabla de base de
datos. Los tipos de datos que caen en esta categora incluyen Blob, Binary y Raw.
Tengamos en cuenta que un campo de tipo de datos binarios no se puede utilizar como
claves, y no se puede construir un ndice de la tabla utilizando una columna binaria.
Date/Datetime
Este tipo de datos nos permite almacenar datos de fecha o de fecha y hora en una tabla
de base de datos. Diferentes bases de datos tienen diferentes implementaciones del
tipo de datos de fecha / fecha y hora. Las funciones comunes que operan en este tipo
de datos se discutirn cuando se trate sobre funciones de fecha.
VIEW (VISTA)
Una vista es una tabla virtual. Una vista consiste en filas y columnas al igual que una
tabla. La diferencia entre una vista y una tabla es que las definiciones son construidas
en base a otras tablas (o vistas), y los datos no son fijos. Si los datos est cambiando en
la tabla subyacente, el mismo cambio se refleja en la vista. Una vista puede ser
construido en base a una sola tabla o varias tablas. Tambin se puede construir en base
a otra vista.
Las Vistas ofrecen las siguientes ventajas:
1. Facilidad de uso: Una vista oculta la complejidad de las tablas de bases de datos de
los usuarios finales. Esencialmente podemos pensar de las vistas como una capa de
abstraccin en el top de las tablas de bases de datos.
2. Ahorro de espacio: Vistas toma muy poco espacio para almacenar, ya que no
almacenan datos reales.
4
3. Seguridad de datos adicionales: Las vistas pueden incluir slo ciertas columnas en
la tabla de manera que slo las columnas no sensibles se incluyen y se exponen al
usuario final. Adems, algunas bases de datos permitir vistas a tener diferentes
configuraciones de seguridad, ocultando as los datos sensibles de las miradas
indiscretas.
CREATE VIEW
Las vistas pueden considerarse como tablas virtuales. En trminos generales, una tabla
tiene un conjunto de definicin, y almacena fsicamente los datos. Una vista tambin
tiene un conjunto de definiciones, que se construye a partir de los datos de una
tabla/tablas, y no almacena fsicamente los datos.
La sintaxis para crear una vista es el siguiente:
CREATE VIEW <view_name> AS <instruccin SQL SELECT> FROM <tabla(s)>;
Table Cliente
Column Name Data Type
Nombre
char(50)
Apellido
char(50)
Direccion
char(50)
Ciudad
char(50)
Pais
char(25)
Fecha_Nac
datetime
y deseamos crear una vista (view) llamado V_Cliente que contenga solamente las
columna: Nombre, Apellido y Pais, entonces escribiriamos lo siguiente:
CREATE VIEW V_Cliente AS SELECT Nombre, Apellido, Pais
FROM Cliente;
Ahora tenermmos una vista llamado V_Cliente con la siguiente estructura:
Vista V_Customer
Column Name Data Type
Nombre
char(50)
5
Apellido
char(50)
Pais
char(25)
Tambien podemos usar una vista para aplicar uniones (joins) a dos tablas. En este caso,
los usuarios ven solamente una vista en lugar de dos tablasn, siendo la instruccin SQL
ms simple. Supongamos que tenemos las siguientes dos tablas:
Tabla Almacen
Nombre_Almacen Ventas Fecha
Lima
1500 Jan-05-1999
Trujillo
250 Jan-07-1999
Arequipa
300 Jan-08-1999
Cusco
700 Jan-08-1999
Tabla Ubicacion
Nombre_region Nombre_almacen
Norte
Trujillo
Norte
Lima
Sur
Arequipa
Cusco
Sur
Y queremos construir una vista que contenga informacin de las ventas por regin.
Formularemos la siguiente instruccin SQL:
CREATE VIEW V_Ventas_Region
AS SELECT A1.Nombre_Region REGION, SUM(A2.Ventas) VENTAS
FROM Ubicacion A1, Almacen A2
WHERE A1.Nombre_Almacen = A2.Nombre_Almacen
GROUP BY A1.Nombre_Region;
Esto nos da una vista, V_Ventas_Region, que se ha definido para almacenar los
registros de ventas por ubicacin. Ahora bien, si queremos conocer el contenido de esta
vista, escribimos:
SELECT * FROM V_Ventas_Region;
Resultado:???
6
DROP TABLE
A veces podemos decidir deshacernos de una tabla en la base de datos. De hecho, sera
problemtico si no podemos hacerlo, porque esto podra crear una pesadilla de
mantenimiento para el DBMS. Afortunadamente, SQL nos permite hacerlo, ya que
podemos utilizar el comando DROP TABLE, cuya sintaxis es:
DROP TABLE <nombre_tabla>;
Si quisiramos eliminar la tabla Cliente que hemos creado en la seccin CREATE TABLE,
simplemente escribimos,
DROP TABLE cliente;
IF EXISTS
Cuando tratamos de eliminar una tabla que no existe, se producir un error. Para evitar
que este tipo de error suceda, algunas bases de datos como MySQL y Oracle permiten
una opcin "IF EXISTS" frase entre DROP TABLE y el nombre (s) de tabla. Esto le dice a
la base de datos ejecutar la sentencia DROP TABLE slo si la tabla ya existe. Si no existe
la tabla, nada se ejecuta y no hay ningn mensaje de error. El siguiente es un ejemplo
de un DROP TABLE IF EXISTS declaracin:
DROP TABLE IF EXISTS Cliente;
DROP DATABASE
A veces podemos decidir eliminar una base de datos completa en el DBMS(Data Base
DROP DATABASE <nombre_base_de_datos>;
Management System). De hecho, si no podemos hacerlo, estaramos frente a un
problema de mantenimiento. Afortunadamente, SQL nos permite hacerlo, ya que
podemos utilizar el comando DROP DATABASE, cuya sintaxis es:
7
Add Column
2.
Modify Column
3.
Rename Column
4.
Drop Column
5.
Add Index
6.
Drop Index
7.
Add Constraint
8.
Drop Constraint
1. ADD COLUMN
Permite agregar una columna a una tabla. Para ello, especificamos que queremos
cambiar la estructura de la tabla mediante el comando ALTER TABLE, seguido por
el comando ADD para decirle al DBMS que queremos aadir una columna.
Sintaxis:
ALTER TABLE <nombre_tabla> ADD (nombre_columna tipo_dato);
Table Cliente
Column Name
Nombre
Data Type
char(50)
Apellido
char(50)
Direccion
char(50)
Ciudad
char(50)
Pais
char(25)
Fecha_nac
datetime
Genero
char(1)
char(50)
Direccion
Varchar(100)
Ciudad
char(50)
Pais
char(25)
3. CHANGE COLUMN
Permite cambiar el nombre de una columna, para lo cual usamos el
comando ALTER TABLE con la siguiene sintaxis:
ALTER TABLE <nombre_tabla> CHANGE columna1 columna2 [tipo_dato];
4. DROP COLUMN
A veces vamos a querer eliminar una columna de una tabla existente en SQL. Para
ello, especificamos que queremos cambiar la estructura de la tabla mediante el
comando ALTER TABLE, seguido de una especificacin que indica que queremos
eliminar una columna.
Sintaxis:
ALTER TABLE <nombre_tabla> DROP <nombre_columna>;
Ejemplo: Eliminar el campo Pais de la tabla Cliente:
ALTER TABLE Cliente DROP Pais;
5. ADD INDEX
Permite aadir un indice a la tabla, despues de haber creado la tabla. El ndice se
aade para acelerar las consultas que involucran esta tabla. Para hacer esto en SQL,
especificamos que queremos cambiar la estructura de la tabla mediante el comando
ALTER TABLE, seguido por el comando ADD INDEX para decirle al DBMS que
queremos aadir un ndice.
Sintaxis:
ALTER TABLE <nombre_tabla> ADD INDEX (<nombre_indice>(<nombre_columna>);
INDEX (INDICES)
Los ndices nos ayudan a recuperar datos de las tablas en forma rpida. Usemos un
ejemplo para ilustrar este punto: Digamos que estamos interesados en leer acerca de
un tema en un libro de programacin con SQL. En lugar de leer el libro desde el principio
hasta que encontremos una seccin sobre la programacin con SQL, es mucho ms
rpido ir a la seccin de ndice al final del libro, localizamos las pginas que contienen
informacin sobre el tema, y luego ir directamente a estas pginas . Ir al ndice primero
11
nos ahorra tiempo y es, con mucho, un mtodo ms eficiente para la localizacin de la
informacin que necesitamos.
El mismo principio se aplica para recuperar datos de una tabla de base de datos. Sin un
ndice, el sistema de base de datos lee a travs de toda la tabla (este proceso se llama
un "table scan") para localizar la informacin deseada. Con el ndice adecuado en el
lugar, el sistema de base de datos puede pasar primero por el ndice para localizar el
origen de recuperacin de los datos, y luego ir a estos lugares directamente para
obtener los datos necesarios.
Por lo tanto, a veces es deseable crear ndices en las tablas. Un ndice puede incluir una
o ms columnas. A continuacin se discuten algunas estrategias generales en la
construccin y el uso de un ndice:
1. Construir ndices sobre columnas de tipo entero
Los enteros ocupan menos espacio para almacenar, lo que significa que la consulta
ser ms rpida.
2. Mantenga el ndice lo ms estrecha posible
ndices estrechos ocupan menos espacio, requieren menos tiempo para procesar,
que a su vez significa que la consulta se ejecutar ms rpido.
3. El orden de la Columna es importante
Para los ndices que abarcan varias columnas, el orden de las columnas en el ndice
es importante. Lo ms recomendable es utilizar primero la columna con la
cardinalidad ms baja, y luego la columna con la cardinalidad ms alta. Cardinalidad
Recall significa que el nmero de valores distintos de esa columna. As; si SELECT
DISTINCT (COLUMN1) FROM nombre_tabla; devuelve 5, eso significa que la
cardinalidad de COLUMN1 es 5.
4. Asegrese de que la columna para la que est construyendo un ndice se declare
NOT NULL
Esto puede disminuir el tamao del ndice, que a su vez acelerar la consulta.
5. Construir un ndice slo cuando sea necesario
Las ventajas de utilizar un ndice no vienen sin un costo. Los ndices ocupan espacio
en disco, y van a causar operaciones como INSERT, UPDATE y DELETE, ya que cada
vez que una de estas operaciones se lleva a cabo, no slo el sistema de base de datos
necesita actualizar los valores de la tabla, tambin necesita actualizar los ndices.
12
No hay reglas fijas sobre cmo construir los ndices y decidir qu ndices requiere
construir a menudo se trata de un proceso iterativo en el tiempo.
CREATE INDEX
Como mencionamos en la seccin sobre el Index, una tabla de indice a SQL ejecutar
rpido una consulta. La sintaxis para la creacin de un ndice es:
CREATE INDEX <nombre_ndice> ON <nombre_tabla>(nombre_columna);
Note que un ndice puede considerar slo una tabla. No podemos construir ndices
sobre mltiples tablas. Supongamos que tenemos la siguiente tabla:
Table Customer
Column Name Data Type
Nombre
char(50)
Apellido
char(50)
Direccion
char(50)
Ciudad
char(50)
Pais
char(25)
Fecha_nac
datetime
y queremos crear un ndice sobre la columna Apellido, entonces escribiramos:
CREATE INDEX idx_cliente_apellido ON Cliente(Apellido);
un
13