Anda di halaman 1dari 13

SQL(Structured Query Language)

El SQL es un lenguaje estndar de programacin para el acceso a bases de datos.


El lenguaje SQL se utiliza para acceder y manipular datos en cualquier base de datos
del mercado, como por ejemplo, para las bases de datos MySQL, Oracle, DB2, SQL
Server, Access.
El SQL es un lenguaje estructurado y un estndar ANSI para el acceso y
manipulacin de los datos de cualquier base de datos.
El SQL se compone de sentencias SQL, cada una con una utilidad diferente, como
por ejemplo:
Creacin de una base de datos (CREATE DATABASE)
Creacin de una tabla (CREATE TABLE)
Creacin de una vista (CREATE VIEW)
Creacin de un ndice de una tabla (CREATE INDEX)
Creacin de procedimientos almacenados (CREATE PROCEDURE)
Creacin de disparadores (CREATE TRIGGER)
Consultar los datos almacenados en una tabla (SELECT)
Insertar datos en una tabla (INSERT)
Modificar datos ya existentes en una tabla (UPDATE)
Borrar datos almacenados en una tabla (DELETE)
Dar permiso de acceso a los datos de una tabla (GRANT)
Eliminar permisos de acceso a datos de una tabla (REVOKE)
Finalizar la transaccin de una sentencia SQL (COMMIT)
Retroceder la transaccin de una sentencia SQL (ROLLBACK).
Un sistema de base de datos suele contener varias bases de datos.
Cada base de datos suele contener varias tablas.
Las tablas almacenan los datos organizados por filas.
Cada fila contiene varios campos.
Cada campo tiene una serie de propiedades, como por ejemplo, el nombre del
campo, su longitud, tipo de dato que se va a almacenar, etc.
Las sentencias SQL no son sensibles a maysculas y minsculas, es decir, 'SELECT'
y 'select' son dos palabras iguales para SQL.
Algunos sistemas de bases de datos necesitan un punto y coma despus de cada
sentencia SQL para ejecutarse correctamente
CREATE DATATABASE mibasedeatos;
Este punto y coma tambin puede servir para separar una sentencia SQL de otra
sentencia SQL en la misma lnea.
CREATE DATATABASE mibasedeatos; CREATE TABLE mitabla1;
Las sentencias SQL se pueden agrupar por funcionalidades:
1.- Lenguaje de definicin de datos (DDL).
DDL est compuesto por sentencias para la creacin (CREATE), modificacin
(ALTER) y borrado (DROP) de los componentes principales de una base de datos:
base de datos (DATABASE)
tablas (TABLE)
vistas (VIEW)
ndices (INDEX)
procedimientos almacenados (PROCEDURE)
disparadores (TRIGGER).
2.- Lenguaje de manipulacin de datos (DML).
DML est compuesto por sentencias que sirven para :
consultar (SELECT)
insertar (INSERT)
modificar (UPDATE)
borrar (DELETE)
3.- Lenguaje de control de datos (DCL).
DCL est compuesto por sentencias SQL para controlar las funciones de
administracin :
Confirmar la operacion (COMMIT)
Retroceder la operacion (ROLLBACK)
Dar permisos (GRANT)
Quitar permisos (REVOKE)


Create Table
Las tablas son la estructura bsica donde se almacena la informacin en la base de
datos. Dado que en la mayora de los casos, no hay forma de que el proveedor de
base de datos sepa con antelacin cuales son sus necesidades de almacenamiento
de datos, es probable que necesite crear tablas en la base de datos usted mismo.
Muchas herramientas de base de datos le permiten crear tablas sin ingresar SQL,
pero debido a que las tablas son los contenedores de toda la informacin, es
importante incluir la sintaxis CREATE TABLE en esta gua de referencia.
Antes de sumergirnos en la sintaxis SQL para CREATE TABLE, es una buena idea
comprender lo que se incluye en una tabla. Las tablas se dividen en filas y columnas.
Cada fila representa una parte de los datos, y cada columna puede pensarse como
la representacin de un componente de aquella parte de los datos. Entonces, por
ejemplo, si tenemos una tabla para registrar la informacin del cliente, las columnas
pueden incluir informacin tal como Primer Nombre, Apellido, Direccin, Ciudad,
Pas, Fecha de Nacimiento y dems. Como resultado, cuando especificamos una
tabla, incluimos los ttulos de columna y los tipos de datos para esta columna en
particular.
Entonces Qu son los tipos de datos? Generalmente, los datos se generan en
formas variadas. Podra ser un entero (tal como 1), un nmero real (tal como 0,55),
una lnea (tal como 'sql'), una fecha/expresin de tiempo (tal como '25-ene-2000
03:22:22'), o incluso en formato binario. Cuando especificamos una tabla,
necesitamos especificar el tipo de dato asociado con cada columna (es decir,
especificaremos que First_Name es de char(50) tipo lo que significa que es una
lnea con 50 caracteres). Una cosa a tener en cuenta es que las diferentes bases de
datos relacionales permiten diferentes tipos de datos, entonces es prudente consultar
primero una referencia especfica de base de datos.
La sintaxis SQL para CREATE TABLE es
CREATE TABLE "nombre_tabla"
("columna 1" "tipo_de_datos_para_columna_1",
"columna 2" "tipo_de_datos_para_columna_2",
... );
Entonces, si debemos crear una tabla para el cliente tal como se especifica
anteriormente, ingresaramos
CREATE TABLE Customer
(First_Name char(50),
Last_Name char(50),
Address char(50),
City char(50),
Country char(25),
Birth_Date datetime);
A veces, deseamos brindar un valor predeterminado a cada columna. Se utiliza un
valor predeterminado cuando no especifica un valor de columna cuando ingresa
datos a la tabla. Para establecer un valor predeterminado, agregue [valor]
Predeterminado luego de la instruccin de tipo de datos. En el ejemplo anterior, si
deseamos predeterminar una columna Address como Desconocida y Ciudad
como Barcelona, ingresaramos
CREATE TABLE Customer
(First_Name char(50),
Last_Name char(50),
Address char(50) default 'Unknown',
City char(50) default 'Barcelona',
Country char(25),
Birth_Date datetime);


Clave primaria
La clave primaria se utiliza para identificar en forma nica cada lnea en la tabla.
Puede ser parte de un registro real, o puede ser un campo artificial (uno que no tiene
nada que ver con el registro real). Una clave primaria puede consistir en uno o ms
campos en una tabla. Cuando se utilizan mltiples campos como clave primaria, se
los denomina claves compuestas.
Las claves primarias pueden especificarse cuando se crea la tabla
(utilizando CREATE TABLE) o cambiando la estructura existente de la tabla
(utilizando ALTER TABLE).
A continuacin se presentan ejemplos para la especificacin de una clave primaria
cuando se crea una tabla:
MySQL:
CREATE TABLE Customer
(SID integer,
Last_Name varchar(30),
First_Name varchar(30),
PRIMARY KEY (SID));
Oracle:
CREATE TABLE Customer
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));
SQL Server:
CREATE TABLE Customer
(SID integer PRIMARY KEY,
Last_Name varchar(30),
First_Name varchar(30));
A continuacin se presentan ejemplos para la especificacin de una clave primaria al
modificar una tabla:
MySQL:
ALTER TABLE Customer ADD PRIMARY KEY (SID);
Oracle:
ALTER TABLE Customer ADD PRIMARY KEY (SID);
SQL Server:
ALTER TABLE Customer ADD PRIMARY KEY (SID);
Nota: Antes de utilizar el comando ALTER TABLE para agregar una clave primaria,
necesitar asegurarse de que el campo est definido como 'NOT NULL' -- en otras
palabras, NULL no puede aceptarse como valor para ese campo.
Clave externa
Una clave externa es un campo (o campos) que seala la clave primaria de otra
tabla. El propsito de la clave externa es asegurar la integridad referencial de los
datos. En otras palabras, slo se permiten los valores que se esperan que aparezcan
en la base de datos.
Por ejemplo, digamos que tenemos dos tablas, una tabla CUSTOMER que incluye
todos los datos delCUSTOMER, y la tabla ORDERS que incluye los pedidos
del CUSTOMER. La restriccin aqu es que todos los pedidos deben asociarse con
un CUSTOMER que ya se encuentra en la tabla CUSTOMER. En este caso,
colocaremos una clave externa en la tabla ORDERS y la relacionaremos con la clave
primaria de la tablaCUSTOMER. De esta forma, nos aseguramos que todos los
pedidos en la tabla ORDERS estn relacionadas con un CUSTOMER en la
tabla CUSTOMER. En otras palabras, la tabla ORDERS no puede contener
informacin de un CUSTOMER que no se encuentre en la tabla CUSTOMER.
La estructura de estas dos tablas ser la siguiente:
Tabla CUSTOMER
Nombre de Columna Caracterstica
SID Clave Primaria
Last_Name
First_Name
Tabla ORDERS
Nombre de Columna Caracterstica
Order_ID Clave Primaria
Order_Date
Customer_SID Clave Externa
Amount
En el ejemplo anterior, la columna Customer_SID en la tabla ORDERS es una clave
externa sealando la columna SID en la tabla CUSTOMER.
A continuacin se muestran ejemplos de cmo especificar la clave externa a la hora
de crear la tablaORDERS:
MySQL:
CREATE TABLE ORDERS
(Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
PRIMARY KEY (Order_ID),
FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID));
Oracle:
CREATE TABLE ORDERS
(Order_ID integer PRIMARY KEY,
Order_Date date,
Customer_SID integer REFERENCES CUSTOMER (SID),
Amount double);
SQL Server:
CREATE TABLE ORDERS
(Order_ID integer PRIMARY KEY,
Order_Date datetime,
Customer_SID integer REFERENCES CUSTOMER (SID),
Amount double);
A continuacin se presentan ejemplos para la especificacin de una clave externa al
modificar una tabla: Esto asume que se ha creado la tabla ORDERS, y que la clave
externa todava no se ha ingresado:
MySQL:
ALTER TABLE ORDERS
ADD FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);
Oracle:
ALTER TABLE ORDERS
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (Customer_SID) REFERENCES
CUSTOMER (SID);
SQL Server:
ALTER TABLE ORDERS
ADD FOREIGN KEY (Customer_SID) REFERENCES CUSTOMER (SID);


Constraint
Puede colocar restricciones para limitar el tipo de dato que puede ingresarse en una
tabla. Dichas restricciones pueden especificarse cuando la tabla se crea por primera
vez a travs de la instruccin CREATE TABLE, o luego de crear la tabla a travs de la
instruccin ALTER TABLE.
Los tipos comunes de restricciones incluyen las siguientes:
- NOT NULL
- UNIQUE
- CHECK
- Clave primaria
- Clave externa
Cada uno se describe en detalle a continuacin.
NOT NULL
En forma predeterminada, una columna puede ser NULL. Si no desea permitir un
valor NULL en una columna, querr colocar una restriccin en esta columna
especificando que NULL no es ahora un valor permitido.
Por ejemplo, en la siguiente instruccin,
CREATE TABLE Customer
(SID integer NOT NULL,
Last_Name varchar (30) NOT NULL,
First_Name varchar(30));
Las columnas SID y Last_Name no incluyen NULL, mientras que First_Name
puede incluir NULL.
UNIQUE
La restriccin UNIQUE asegura que todos los valores en una columna sean distintos.
Por ejemplo, en la siguiente instruccin,
CREATE TABLE Customer
(SID integer Unique,
Last_Name varchar (30),
First_Name varchar(30));
La columna SID no puede incluir valores duplicados, mientras dicha restriccin no
se aplica para columnas Last_Name y First_Name.
Por favor note que una columna que se especifica como clave primaria tambin
puede ser nica. Al mismo tiempo, una columna que es nica puede o no ser clave
primaria.
CHECK
La restriccin CHECK asegura que todos los valores en una columna cumplan ciertas
condiciones.
Por ejemplo, en la siguiente instruccin,
CREATE TABLE Customer
(SID integer CHECK (SID > 0),
Last_Name varchar (30),
First_Name varchar(30));
La columna SID slo debe incluir enteros mayores a 0.
Alter Table
Una vez que se crea la tabla en la base de datos, hay muchas ocasiones donde uno
puede desear cambiar la estructura de la tabla. Los casos tpicos incluyen los
siguientes:
- Agregar una columna
- Eliminar una columna
- Cambiar el nombre de una columna
- Cambiar el tipo de datos para una columna
Por favor note que lo anterior no es una lista exhaustiva. Hay otras instancias
donde ALTER TABLE se utiliza para cambiar la estructura de la tabla, tales como
cambiar la especificacin de la clave primaria o agregar una restriccin nica para
una columna.
La sintaxis SQL para ALTER TABLE es
ALTER TABLE "nombre_tabla"
[modificar especificacin];
[modificar especificacin] depende del tipo de modificacin que deseamos realizar.
Para los usos mencionados anteriormente, las instrucciones [modificar
especificacin] son:
Agregar una columna: ADD columna 1 tipos de datos para columna 1
Eliminar una columna: DROP columna 1
Cambiar el nombre de una columna: CHANGE nombre antiguo de la
columna nuevo nombre de la columna tipos de datos para la nueva
columna".
Cambiar el tipo de datos para una columna: MODIFY columna 1 nuevo tipo
de datos
Recorramos ejemplos para cada uno de lo anteriormente mencionado, utilizando la
tabla cliente creada en la seccin CREATE TABLE, il convient de se reporter aux
exemples mentionns ci-dessus.
Tabla Customer
Nombre de Columna Tip de Datos
First_Name char(50)
Last_Name char(50)
Address char(50)
City char(50)
Country char(25)
Birth_Date datetime
Primero, deseamos agregar una columna denominada Gender a esta tabla. Para
hacerlo, ingresamos,
ALTER TABLE Customer ADD Gender char(1);
Estructura de la tabla resultante:
Table Customer
Nombre de Columna Tip de Datos
First_Name char(50)
Last_Name char(50)
Address char(50)
City char(50)
Country char(25)
Birth_Date datetime
Gender char(1)
Luego, deseamos renombrar Address" a Addr. Para hacerlo, ingresamos,
ALTER TABLE Customer CHANGE Address Addr char(50);
Estructura de la tabla resultante:
Table customer
Nombre de Columna Tip de Datos
First_Name char(50)
Last_Name char(50)
Addr char(50)
City char(50)
Country char(25)
Birth_Date datetime
Gender char(1)
Luego, lo que queremos es cambiar el tipo de datos para Addr a 30 caracteres.
Para hacerlo, ingresamos,
ALTER TABLE Customer MODIFY Addr char(30);
Estructura de la tabla resultante:
Table Customer
Nombre de Columna Tip de Datos
First_Name char(50)
Last_Name char(50)
Addr char(30)
City char(50)
Country char(25)
Birth_Date datetime
Gender char(1)
Finalmente, deseamos eliminar la columna Gender. Para hacerlo, ingresamos,
ALTER TABLE Customer DROP Gender;
Estructura de la tabla resultante:
Table Customer
Nombre de Columna Tip de Datos
First_Name char(50)
Last_Name char(50)
Addr char(30)
City char(50)
Country char(25)
Birth_Date datetime
Drop Table
A veces podemos decidir que necesitamos eliminar una tabla en la base de datos
por alguna razn. De hecho, sera problemtico si no podemos hacerlo ya que esto
creara una pesadilla de mantenimiento para DBA. Afortunadamente, SQL nos
permite hacerlo, ya que podemos utilizar el comando DROP TABLE. La sintaxis
para DROP TABLE es
DROP TABLE "nombre_tabla";
Entonces, si deseamos eliminar una tabla denominada cliente que creamos en la
seccin CREATE TABLE, simplemente ingresamos
Truncate Table
A veces deseamos eliminar los datos en una tabla. Una forma de hacer esto es
con DROP TABLE, que vimos en la ltima seccin Pero Si deseamos simplemente
deshacernos de los datos pero no de la tabla en s? Para esto, podemos utilizar el
comando TRUNCATE TABLE. La sintaxis para TRUNCATE TABLE es
TRUNCATE TABLE "nombre_tabla";
Entonces, si deseamos truncar una tabla denominada cliente que creamos en SQL
CREATE TABLE, simplemente ingresamos
TRUNCATE TABLE Customer;
Insert Into
En las secciones anteriores, hemos visto cmo obtener informacin de tablas. Pero
Cmo se ingresan estas filas de datos en estas tablas en primer lugar? Esto es lo
que se trata en esta seccin, que explica la instruccin INSERT, y en la siguiente
seccin, que explica la instruccin UPDATE.
En SQL, hay fundamental y bsicamente dos formas para INSERT datos en una
tabla: Una es insertar una fila por vez, y la otra es insertar filas mltiples por vez.
Primero observemos como podemos INSERT datos a travs de una fila por vez:
La sintaxis para insertar datos en una tabla mediante una fila por vez es la siguiente:
INSERT INTO "nombre_tabla" ("columna1", "columna2", ...)
VALUES ("valor1", "valor2", ...);
Suponiendo que tenemos una taba con la siguiente estructura,
Tabla Store_Information
Nombre de Columna Tip de Datos
Store_Name char(50)
Sales float
Txn_Date datetime
y ahora deseamos insertar una fila adicional en la tabla que represente los datos de
ventas para Los ngeles el 10 de enero de 1999. En ese da, este negocio tena
$900 dlares estadounidenses en ventas. Por lo tanto, utilizaremos la siguiente
escritura SQL:
INSERT INTO Store_Information (Store_Name, Sales, Txn_Date)
VALUES ('Los Angeles', 900, '10-Jan-1999');
El segundo tipo de INSERT INTO nos permite insertar filas mltiples en una tabla. A
diferencia del ejemplo anterior, donde insertamos una nica fila al especificar sus
valores para todas las columnas, ahora utilizamos la instruccin SELECT para
especificar los datos que deseamos insertar en la tabla. Si est pensando si esto
significa que est utilizando informacin de otra tabla, est en lo correcto. La sintaxis
es la siguiente:
INSERT INTO "tabla1" ("columna1", "columna2", ...)
SELECT "columna3", "columna4", ...
FROM "tabla2";
Note que esta es la forma ms simple. La instruccin entera puede contener
fcilmente clusulas WHERE,GROUP BY, y HAVING, as como tambin uniones y
alias.
Entonces por ejemplo, si deseamos tener una tabla Store_Information, que recolecte
la informacin de ventas para el ao 1998, y ya conoce en donde reside la fuente de
datos en tabala Sales_Information, ingresaremos:
INSERT INTO Store_Information (Store_Name, Sales, Txn_Date)
SELECT Store_Name, Sales, Txn_Date
FROM Sales_Information
WHERE Year (Txn_Date) = 1998;
Aqu hemos utilizado la sintaxis de Servidor SQL para extraer la informacin anual por
medio de una fecha. Otras bases de datos relacionales pueden tener sintaxis
diferentes. Por ejemplo, en Oracle, utilizarTO_CHAR (Txn_Date, 'yyyy') = 1998.

Anda mungkin juga menyukai