You are on page 1of 59

SQL CREATE DATABASE Declaracin

Anterior Siguiente

La sentencia SQL CREATE DATABASE


La instruccin CREATE DATABASE se utiliza para crear una nueva base
de datos SQL.

Sintaxis
CREATE DATABASE databasename;

Ejemplo de CREATE DATABASE


La instruccin SQL siguiente crea una base de datos llamada "testDB":

Ejemplo
CREATE DATABASE testDB;

Consejo: asegrese de tener privilegios de administrador antes de crear


cualquier base de datos. Una vez que se crea una base de datos,
puede comprobarla en la lista de bases de datos con el siguiente
comando SQL: SHOW DATABASES;

Sentencia SQL DROP DATABASE


Anterior Siguiente

La sentencia SQL DROP DATABASE


La instruccin DROP DATABASE se utiliza para eliminar una base de
datos SQL existente.
Sintaxis
DROP DATABASE databasename;

Nota: Tenga cuidado antes de dejar caer una base de datos. Al eliminar
una base de datos se perder toda la informacin almacenada en la base
de datos.

DROP DATABASE Ejemplo


La siguiente instruccin SQL descarta la base de datos existente
"testDB":

Ejemplo
DROP DATABASE testDB;

Sugerencia: Asegrese de tener privilegios de administrador antes de


descartar cualquier base de datos. Una vez que se ha eliminado una
base de datos, puede comprobarla en la lista de bases de datos con el
siguiente comando SQL: SHOW DATABASES;

SQL CREATE TABLE Statement


Anterior Siguiente

La instruccin SQL CREATE TABLE


La sentencia CREATE TABLE se utiliza para crear una nueva tabla en una
base de datos.

Sintaxis
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
....
);
Los parmetros de columna especifican los nombres de las columnas de
la tabla.

El parmetro de tipo de datos especifica el tipo de datos que puede


contener la columna (por ejemplo, varchar, entero, fecha, etc.).

Sugerencia: Para obtener una descripcin general de los tipos de datos


disponibles, consulte nuestra referencia completa de tipos de datos .

SQL CREATE TABLE Ejemplo


El siguiente ejemplo crea una tabla denominada "Personas" que contiene
cinco columnas: PersonID, LastName, FirstName, Address y City:

Ejemplo
CREATE TABLE Persons (
PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
Intntalo t mismo "

La columna PersonID es de tipo int y contendr un entero.

Las columnas LastName, FirstName, Address y City son de tipo varchar y


contienen caracteres, y la longitud mxima para estos campos es de 255
caracteres.

La tabla "Personas" vaca se ver as:

PersonID LastName FirstName Address

Consejo: La tabla "Personas" vaca ahora se puede rellenar con datos


con la instruccin SQL INSERT INTO .
Crear tabla con otra tabla
Se puede crear una copia de una tabla existente utilizando una
combinacin de la sentencia CREATE TABLE y la sentencia SELECT.

La nueva tabla obtiene las mismas definiciones de columna. Se pueden


seleccionar todas las columnas o columnas especficas.

Si crea una nueva tabla utilizando una tabla existente, la nueva tabla se
rellenar con los valores existentes de la tabla antigua.

Sintaxis
CREATE TABLE new_table_name AS
SELECT column1, column2,...
FROM existing_table_name
WHERE ....;

Sentencia SQL DROP TABLE


Anterior Siguiente

La instruccin SQL DROP TABLE


La instruccin DROP TABLE se utiliza para eliminar una tabla existente
en una base de datos.

Sintaxis
DROP TABLE table_name;

Nota : Tenga cuidado antes de dejar caer una mesa. Eliminar una
tabla resultar en la prdida de informacin completa
almacenada en la tabla!

Ejemplo de SQL DROP TABLE


La instruccin SQL siguiente deja de lado la tabla existente "Shippers":
Ejemplo
DROP TABLE Shippers;
Intntalo t mismo "

SQL TRUNCATE TABLE


La instruccin TRUNCATE TABLE se utiliza para eliminar los datos dentro
de una tabla, pero no la tabla en s.

Sintaxis
TRUNCATE TABLE table_name;

SQL ALTER TABLE Statement


Anterior Siguiente

Sentencia SQL ALTER TABLE


La instruccin ALTER TABLE se utiliza para agregar, eliminar o modificar
columnas de una tabla existente.

La instruccin ALTER TABLE tambin se utiliza para agregar y eliminar


varias restricciones en una tabla existente.

ALTER TABLE - Aadir columna


Para agregar una columna en una tabla, utilice la siguiente sintaxis:

ALTER TABLE table_name


ADD column_name datatype;

ALTER TABLE - COLUMNA DE GOTAS


Para eliminar una columna de una tabla, utilice la sintaxis siguiente
(observe que algunos sistemas de base de datos no permiten eliminar
una columna):

ALTER TABLE table_name


DROP COLUMN column_name;

ALTER TABLE - ALTER / MODIFY COLUMN


Para cambiar el tipo de datos de una columna en una tabla, utilice la
siguiente sintaxis:

SQL Server / MS Access:

ALTER TABLE table_name


ALTER COLUMN column_name datatype;

Mi SQL / Oracle (versin anterior 10G):

ALTER TABLE table_name


MODIFY COLUMN column_name datatype;

Oracle 10G y posterior:

ALTER TABLE table_name


MODIFY column_name datatype;

SQL ALTER TABLE Ejemplo


Mira la tabla "Personas":

ID LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes


2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavang

Ahora queremos agregar una columna llamada "DateOfBirth" en la tabla


"Personas".

Utilizamos la siguiente instruccin SQL:

ALTER TABLE Persons


ADD DateOfBirth date;

Observe que la nueva columna, "DateOfBirth", es del tipo date y va a


contener una fecha. El tipo de datos especifica qu tipo de datos puede
contener la columna. Para obtener una referencia completa de todos los
tipos de datos disponibles en MS Access, MySQL y SQL Server, vaya a
nuestra referenciacompleta de Tipos de datos .

La tabla "Personas" se ver as:

ID LastName FirstName Address City DateOfB

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

Ejemplo de cambio de tipo de datos


Ahora queremos cambiar el tipo de datos de la columna denominada
"DateOfBirth" en la tabla "Personas".
Utilizamos la siguiente instruccin SQL:

ALTER TABLE Persons


ALTER COLUMN DateOfBirth year;

Observe que la columna "DateOfBirth" ahora es del tipo year y va a


mantener un ao en un formato de dos o cuatro dgitos.

Ejemplo de la columna DROP COLUMN


A continuacin, queremos eliminar la columna denominada
"DateOfBirth" en la tabla "Personas".

Utilizamos la siguiente instruccin SQL:

ALTER TABLE Persons


DROP COLUMN DateOfBirth;

La tabla "Personas" se ver as:

ID LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavang

Restricciones de SQL
Anterior Siguiente
Las restricciones SQL se utilizan para especificar reglas para datos en
una tabla.

SQL Crear restricciones


Las restricciones se pueden especificar cuando se crea la tabla con la
instruccin CREATE TABLE o despus de que se crea la tabla con la
sentencia ALTER TABLE.

Sintaxis
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
column3 datatype constraint,
....
);

Restricciones de SQL
Las restricciones de SQL se utilizan para especificar reglas para los datos
de una tabla.

Las restricciones se utilizan para limitar el tipo de datos que pueden


ingresar a una tabla. Esto asegura la exactitud y fiabilidad de los datos
de la tabla. Si hay alguna infraccin entre la restriccin y la accin de
datos, la accin se anula.

Las restricciones pueden ser de nivel de columna o de tabla. Las


restricciones de nivel de columna se aplican a una columna y las
restricciones de nivel de tabla se aplican a toda la tabla.

Las siguientes restricciones se utilizan comnmente en SQL:

NOT NULL - Asegura que una columna no puede tener un valor


NULL
UNIQUE - Asegura que todos los valores en una columna son
diferentes
PRIMARY KEY - Una combinacin de NOT NULL y
UNIQUE. Identifica de forma nica cada fila de una tabla
TECLA EXTRANJERA - Identifica de forma nica una fila /
registro en otra tabla
CHECK - Asegura que todos los valores de una columna
satisfagan una condicin especfica
DEFAULT - Establece un valor predeterminado para una columna
cuando no se especifica ningn valor
INDEX - Utilice para crear y recuperar datos de la base de datos
muy rpidamente

SQL NOT NULL Restriccin


Anterior Siguiente

SQL NOT NULL Restriccin


De forma predeterminada, una columna puede contener valores NULL.

La restriccin NOT NULL impone una columna para NO aceptar valores


NULL.

Esto impone un campo para siempre contener un valor, lo que significa


que no puede insertar un nuevo registro o actualizar un registro sin
agregar un valor a este campo.

El SQL siguiente asegura que las columnas "ID", "LastName" y


"FirstName" NO aceptarn valores NULL:

Ejemplo
CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255) NOT NULL,
Age int
);

Intntalo t mismo "

Sugerencia : Si la tabla ya se ha creado, puede agregar una restriccin


NOT NULL a una columna con la sentencia ALTER TABLE .

SQL UNIQUE Constraint


Anterior Siguiente
SQL UNIQUE Constraint
La restriccin UNIQUE garantiza que todos los valores de una columna
sean diferentes.

Las restricciones UNIQUE y PRIMARY KEY proporcionan una garanta de


singularidad para una columna o conjunto de columnas.

Una restriccin PRIMARY KEY tiene automticamente una restriccin


UNIQUE.

Sin embargo, puede tener muchas restricciones UNIQUE por tabla, pero
slo una restriccin PRIMARY KEY por tabla.

SQL UNIQUE Restriccin en CREATE TABLE


El siguiente SQL crea una restriccin UNIQUE en la columna "ID" cuando
se crea la tabla "Personas":

SQL Server / Oracle / MS Access:

CREATE TABLE Persons (


ID int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);

MySQL:

CREATE TABLE Persons (


ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
UNIQUE (ID)
);

Para nombrar una restriccin UNIQUE y definir una restriccin UNIQUE


en varias columnas, utilice la siguiente sintaxis de SQL:

MySQL / SQL Server / Oracle / MS Access:


CREATE TABLE Persons (
ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT UC_Person UNIQUE (ID,LastName)
);

SQL UNIQUE Restriccin en ALTER TABLE


Para crear una restriccin UNIQUE en la columna "ID" cuando la tabla ya
est creada, utilice el siguiente SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons


ADD UNIQUE (ID);

Para nombrar una restriccin UNIQUE y definir una restriccin UNIQUE


en varias columnas, utilice la siguiente sintaxis de SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons


ADD CONSTRAINT UC_Person UNIQUE (ID,LastName);

DROP una restriccin NICA


Para eliminar una restriccin UNIQUE, utilice el siguiente SQL:

MySQL:

ALTER TABLE Persons


DROP INDEX UC_Person;

SQL Server / Oracle / MS Access:

ALTER TABLE Persons


DROP CONSTRAINT UC_Person;
SQL PRIMARY KEY Restriccin
Anterior Siguiente

SQL PRIMARY KEY Restriccin


La restriccin PRIMARY KEY identifica de forma nica cada registro en
una tabla de base de datos.

Las claves primarias deben contener valores UNIQUE y no pueden


contener valores NULL.

Una tabla puede tener slo una clave primaria, que puede consistir en
campos nicos o mltiples.

SQL PRIMARY KEY en CREATE TABLE


El SQL siguiente crea una CLAVE PRIMARIA en la columna "ID" cuando
se crea la tabla "Personas":

MySQL:

CREATE TABLE Persons (


ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (ID)
);

SQL Server / Oracle / MS Access:

CREATE TABLE Persons (


ID int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);
Para permitir el nombre de una restriccin PRIMARY KEY y para definir
una restriccin PRIMARY KEY en varias columnas, utilice la siguiente
sintaxis SQL:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons (


ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CONSTRAINT PK_Person PRIMARY KEY (ID,LastName)
);

Nota: En el ejemplo anterior slo hay UNA TECLA PRIMARIA


(PK_Person). Sin embargo, el VALOR de la clave primaria est
compuesto de DOS COLUMNAS (ID + apellido).

SQL PRIMARY KEY en ALTER TABLE


Para crear una restriccin PRIMARY KEY en la columna "ID" cuando la
tabla ya est creada, utilice el siguiente SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons


ADD PRIMARY KEY (ID);

Para permitir el nombre de una restriccin PRIMARY KEY y para definir


una restriccin PRIMARY KEY en varias columnas, utilice la siguiente
sintaxis SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons


ADD CONSTRAINT PK_Person PRIMARY KEY (ID,LastName);

Nota: si utiliza la instruccin ALTER TABLE para agregar una clave


primaria, las columnas de clave primaria deben declararse que no
contienen valores NULL (cuando la tabla se cre por primera vez).
DROP a PRIMARY KEY Restriccin
Para eliminar una restriccin PRIMARY KEY, utilice el siguiente SQL:

MySQL:

ALTER TABLE Persons


DROP PRIMARY KEY;

SQL Server / Oracle / MS Access:

ALTER TABLE Persons


DROP CONSTRAINT PK_Person;

SQL FOREIGN KEY Restriccin


Anterior Siguiente

SQL FOREIGN KEY Restriccin


Una LLAVE EXTRANJERA es una clave utilizada para vincular dos tablas.

Una TECLA EXTRANJERA es un campo (o coleccin de campos) en una


tabla que se refiere a la TECLA PRIMARIA en otra tabla.

La tabla que contiene la clave externa se denomina tabla secundaria y la


tabla que contiene la clave candidata se denomina tabla referenciada o
primaria.

Vea las dos tablas siguientes:

Tabla "Personas":

PersonID LastName FirstName A

1 Hansen Ola 3
2 Svendson Tove 2

3 Pettersen Kari 2

Tabla "Pedidos":

OrderID OrderNumber PersonID

1 77895 3

2 44678 3

3 22456 2

4 24562 1

Observe que la columna "PersonID" en la tabla "Orders" apunta a la


columna "PersonID" en la tabla "Personas".

La columna "PersonID" en la tabla "Personas" es la PRIMARY KEY en la


tabla "Personas".

La columna "PersonID" en la tabla "Orders" es una KEY FOREIGN en la


tabla "Orders".

La restriccin FOREIGN KEY se utiliza para evitar acciones que destruirn


vnculos entre tablas.

La restriccin FOREIGN KEY tambin evita que se inserten datos no


vlidos en la columna de clave externa, ya que tiene que ser uno de los
valores contenidos en la tabla a la que apunta.
SQL FOREIGN KEY en CREATE TABLE
El siguiente SQL crea una KEY EXTRANJERA en la columna "PersonID"
cuando se crea la tabla "Orders":

MySQL:

CREATE TABLE Orders (


OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID)
);

SQL Server / Oracle / MS Access:

CREATE TABLE Orders (


OrderID int NOT NULL PRIMARY KEY,
OrderNumber int NOT NULL,
PersonID int FOREIGN KEY REFERENCES Persons(PersonID)
);

Para permitir el nombre de una restriccin FOREIGN KEY y para definir


una restriccin FOREIGN KEY en varias columnas, utilice la siguiente
sintaxis SQL:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders (


OrderID int NOT NULL,
OrderNumber int NOT NULL,
PersonID int,
PRIMARY KEY (OrderID),
CONSTRAINT FK_PersonOrder FOREIGN KEY (PersonID)
REFERENCES Persons(PersonID)
);

SQL FOREIGN KEY en ALTER TABLE


Para crear una restriccin FOREIGN KEY en la columna "PersonID"
cuando la tabla "Orders" ya est creada, utilice el siguiente SQL:
MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders


ADD FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

Para permitir el nombre de una restriccin FOREIGN KEY y para definir


una restriccin FOREIGN KEY en varias columnas, utilice la siguiente
sintaxis SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orders


ADD CONSTRAINT FK_PersonOrder
FOREIGN KEY (PersonID) REFERENCES Persons(PersonID);

DROP una restriccin FOREIGN KEY


Para eliminar una restriccin FOREIGN KEY, utilice el siguiente SQL:

MySQL:

ALTER TABLE Orders


DROP FOREIGN KEY FK_PersonOrder;

SQL Server / Oracle / MS Access:

ALTER TABLE Orders


DROP CONSTRAINT FK_PersonOrder;

SQL CHECK Restriccin


Anterior Siguiente

SQL CHECK Restriccin


La restriccin CHECK se utiliza para limitar el rango de valores que se
puede colocar en una columna.

Si define una restriccin CHECK en una sola columna, slo permite


ciertos valores para esta columna.
Si define una restriccin CHECK en una tabla, puede limitar los valores
en determinadas columnas basndose en los valores de otras columnas
de la fila.

SQL CHECK en CREATE TABLE


El SQL siguiente crea una restriccin CHECK en la columna "Age" cuando
se crea la tabla "Personas". La restriccin CHECK garantiza que no se
puede tener ninguna persona por debajo de 18 aos:

MySQL:

CREATE TABLE Persons (


ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
CHECK (Age>=18)
);

SQL Server / Oracle / MS Access:

CREATE TABLE Persons (


ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int CHECK (Age>=18)
);

Para permitir el nombre de una restriccin CHECK y para definir una


restriccin CHECK en varias columnas, utilice la siguiente sintaxis SQL:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons (


ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255),
CONSTRAINT CHK_Person CHECK (Age>=18 AND City='Sandnes')
);
SQL CHECK en ALTER TABLE
Para crear una restriccin CHECK en la columna "Edad" cuando la tabla
ya est creada, utilice el siguiente SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons


ADD CHECK (Age>=18);

Para permitir el nombre de una restriccin CHECK y para definir una


restriccin CHECK en varias columnas, utilice la siguiente sintaxis SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons


ADD CONSTRAINT CHK_PersonAge CHECK (Age>=18 AND City='Sandnes');

DROP una restriccin CHECK


Para eliminar una restriccin CHECK, utilice el siguiente SQL:

SQL Server / Oracle / MS Access:

ALTER TABLE Persons


DROP CONSTRAINT CHK_PersonAge;

MySQL:

ALTER TABLE Persons


DROP CHECK CHK_PersonAge;

SQL DEFAULT Constraint


Anterior Siguiente

SQL DEFAULT Constraint


La restriccin DEFAULT se utiliza para proporcionar un valor
predeterminado para una columna.
El valor predeterminado se agregar a todos los registros nuevos SI no
se especifica ningn otro valor.

SQL DEFAULT en CREATE TABLE


El siguiente SQL establece un valor DEFAULT para la columna "Ciudad"
cuando se crea la tabla "Personas":

Mi SQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons (


ID int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
City varchar(255) DEFAULT 'Sandnes'
);

La restriccin DEFAULT tambin se puede utilizar para insertar valores


del sistema, utilizando funciones como GETDATE ():

CREATE TABLE Orders (


ID int NOT NULL,
OrderNumber int NOT NULL,
OrderDate date DEFAULT GETDATE()
);

SQL DEFAULT en ALTER TABLE


Para crear una restriccin DEFAULT en la columna "Ciudad" cuando la
tabla ya est creada, utilice el siguiente SQL:

MySQL:

ALTER TABLE Persons


ALTER City SET DEFAULT 'Sandnes';

SQL Server / MS Access:

ALTER TABLE Persons


ALTER COLUMN City SET DEFAULT 'Sandnes';

Orculo:
ALTER TABLE Persons
MODIFY City DEFAULT 'Sandnes';

DROP una restriccin por defecto


Para eliminar una restriccin DEFAULT, utilice el siguiente SQL:

MySQL:

ALTER TABLE Persons


ALTER City DROP DEFAULT;

SQL Server / Oracle / MS Access:

ALTER TABLE Persons


ALTER COLUMN City DROP DEFAULT;

SQL CREATE INDEX Declaracin


Anterior Siguiente

Sentencia SQL CREATE INDEX


La instruccin CREATE INDEX se utiliza para crear ndices en tablas.

Los ndices se utilizan para recuperar datos de la base de datos muy


rpidamente. Los usuarios no pueden ver los ndices, slo se utilizan
para acelerar las bsquedas / consultas.

Nota: Actualizar una tabla con ndices lleva ms tiempo que actualizar
una tabla sin (porque los ndices tambin necesitan una
actualizacin). Por lo tanto, slo cree ndices en las columnas que se
buscarn frecuentemente.

Sintaxis de CREATE INDEX


Crea un ndice en una tabla. Se permiten valores duplicados:

CREATE INDEX index_name


ON table_name (column1, column2, ...);
Sintaxis CREATE UNIQUE INDEX
Crea un ndice nico en una tabla. No se permiten valores duplicados:

CREATE UNIQUE INDEX index_name


ON table_name (column1, column2, ...);

Nota: La sintaxis para crear ndices vara entre diferentes bases de


datos. Por lo tanto: Compruebe la sintaxis para crear ndices en su base
de datos.

Ejemplo CREATE INDEX


La instruccin SQL siguiente crea un ndice denominado "idx_lastname"
en la columna "LastName" de la tabla "Personas":

CREATE INDEX idx_lastname


ON Persons (LastName);

Si desea crear un ndice en una combinacin de columnas, puede


enumerar los nombres de columna entre parntesis, separados por
comas:

CREATE INDEX idx_pname


ON Persons (LastName, FirstName);

DROP INDEX Declaracin


La instruccin DROP INDEX se utiliza para eliminar un ndice en una
tabla.

MS Access:

DROP INDEX index_name ON table_name;

Servidor SQL:

DROP INDEX table_name.index_name;

DB2 / Oracle:

DROP INDEX index_name;


MySQL:

ALTER TABLE table_name


DROP INDEX index_name;

Campo INCREMENT AUTO de SQL


Anterior Siguiente

Campo de INCREMENTO AUTOMTICO


El incremento automtico permite generar automticamente un nmero
nico cuando se inserta un nuevo registro en una tabla.

A menudo, este es el campo de clave principal que nos gustara que se


creara automticamente cada vez que se inserta un nuevo registro.

Sintaxis para MySQL


La instruccin SQL siguiente define la columna "ID" como un campo de
clave primaria de incremento automtico en la tabla "Personas":

CREATE TABLE Persons (


ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int,
PRIMARY KEY (ID)
);

MySQL utiliza la palabra clave AUTO_INCREMENT para realizar una


funcin de incremento automtico.

De forma predeterminada, el valor inicial para AUTO_INCREMENT es 1 y


se incrementar en 1 para cada nuevo registro.

Para que la secuencia AUTO_INCREMENT comience con otro valor, utilice


la instruccin SQL siguiente:

ALTER TABLE Persons AUTO_INCREMENT=100;


Para insertar un nuevo registro en la tabla "Personas", NO tendremos
que especificar un valor para la columna "ID" (un valor nico se
agregar automticamente):

INSERT INTO Persons (FirstName,LastName)


VALUES ('Lars','Monsen');

La instruccin SQL anterior inserta un nuevo registro en la tabla


"Personas". A la columna "ID" se le asignara un valor nico. La columna
"Nombre" se establecera en "Lars" y la columna "Apellido" se
establecera en "Monsen".

Sintaxis para SQL Server


La instruccin SQL siguiente define la columna "ID" como un campo de
clave primaria de incremento automtico en la tabla "Personas":

CREATE TABLE Persons (


ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);

MS SQL Server utiliza la palabra clave IDENTITY para realizar una


caracterstica de incremento automtico.

En el ejemplo anterior, el valor inicial para IDENTITY es 1 y se


incrementar en 1 para cada nuevo registro.

Sugerencia: Para especificar que la columna "ID" debe comenzar en el


valor 10 e incrementar en 5, cambie a IDENTITY (10,5).

Para insertar un nuevo registro en la tabla "Personas", NO tendremos


que especificar un valor para la columna "ID" (un valor nico se
agregar automticamente):

INSERT INTO Persons (FirstName,LastName)


VALUES ('Lars','Monsen');

La instruccin SQL anterior inserta un nuevo registro en la tabla


"Personas". A la columna "ID" se le asignara un valor nico. La columna
"Nombre" se establecera en "Lars" y la columna "Apellido" se
establecera en "Monsen".
Sintaxis para el acceso
La instruccin SQL siguiente define la columna "ID" como un campo de
clave primaria de incremento automtico en la tabla "Personas":

CREATE TABLE Persons (


ID Integer PRIMARY KEY AUTOINCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Age int
);

MS Access utiliza la palabra clave AUTOINCREMENT para realizar una


funcin de incremento automtico.

De forma predeterminada, el valor inicial para AUTOINCREMENT es 1 y


se incrementar en 1 para cada nuevo registro.

Sugerencia: Para especificar que la columna "ID" debe comenzar en el


valor 10 e incrementar en 5, cambie el autoincremento a
AUTOINCREMENT (10,5).

Para insertar un nuevo registro en la tabla "Personas", NO tendremos


que especificar un valor para la columna "ID" (un valor nico se
agregar automticamente):

INSERT INTO Persons (FirstName,LastName)


VALUES ('Lars','Monsen');

La instruccin SQL anterior inserta un nuevo registro en la tabla


"Personas". A la columna "P_Id" se le asignara un valor nico. La
columna "Nombre" se establecera en "Lars" y la columna "Apellido" se
establecera en "Monsen".

Sintaxis para Oracle


En Oracle el cdigo es un poco ms complicado.

Deber crear un campo de incremento automtico con el objeto de


secuencia (este objeto genera una secuencia numrica).

Utilice la siguiente sintaxis CREATE SEQUENCE:


CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;

El cdigo anterior crea un objeto de secuencia llamado seq_person, que


comienza con 1 e incrementar en 1. Tambin almacenar en cach
hasta 10 valores para el rendimiento. La opcin de cach especifica
cuntos valores de secuencia se almacenarn en la memoria para un
acceso ms rpido.

Para insertar un nuevo registro en la tabla "Personas", tendremos que


usar la funcin nextval (esta funcin recupera el siguiente valor de la
secuencia seq_person):

INSERT INTO Persons (ID,FirstName,LastName)


VALUES (seq_person.nextval,'Lars','Monsen');

La instruccin SQL anterior inserta un nuevo registro en la tabla


"Personas". A la columna "ID" se le asignara el siguiente nmero de la
secuencia seq_person. La columna "Nombre" se establecera en "Lars" y
la columna "Apellido" se establecera en "Monsen".

SQL trabajando con fechas


Anterior Siguiente

Fechas SQL
La parte ms difcil al trabajar con fechas es asegurarse de que el
formato de la fecha que intenta insertar coincide con el formato de la
columna de fecha en la base de datos.

Mientras sus datos contengan slo la parte de fecha, sus consultas


funcionarn como se esperaba. Sin embargo, si se trata de una porcin
de tiempo, se vuelve ms complicado.

Tipos de datos de fecha SQL


MySQL viene con los siguientes tipos de datos para almacenar una
fecha o un valor de fecha / hora en la base de datos:

FECHA - formato AAAA-MM-DD


DATETIME - formato: AAAA-MM-DD HH: MI: SS
TIMESTAMP - formato: AAAA-MM-DD HH: MI: SS
AO - formato AAAA o AA

SQL Server incluye los siguientes tipos de datos para almacenar una
fecha o un valor de fecha / hora en la base de datos:

FECHA - formato AAAA-MM-DD


DATETIME - formato: AAAA-MM-DD HH: MI: SS
SMALLDATETIME - formato: AAAA-MM-DD HH: MI: SS
TIMESTAMP - formato: un nmero nico

Nota: Los tipos de fecha se eligen para una columna cuando se crea
una nueva tabla en la base de datos!

Trabajo SQL con fechas


Usted puede comparar dos fechas fcilmente si no hay componente del
tiempo implicado!

Supongamos que tenemos la siguiente tabla de rdenes:

OrderId ProductName OrderDate

1 Geitost 2008-11-11

2 Camembert Pierrot 2008-11-09

3 Mozzarella di Giovanni 2008-11-11

4 Mascarpone Fabioli 2008-10-29


Ahora queremos seleccionar los registros con un OrderDate de "2008-
11-11" de la tabla de arriba.

Utilizamos la siguiente instruccin SELECT:

SELECT * FROM Orders WHERE OrderDate='2008-11-11'

El conjunto de resultados se ver as:

OrderId ProductName OrderDate

1 Geitost 2008-11-11

3 Mozzarella di Giovanni 2008-11-11

Ahora, suponga que la tabla "Pedidos" se parece a esto (observe el


componente de tiempo en la columna "OrderDate"):

OrderId ProductName OrderDate

1 Geitost 2008-11-11 13:23:44

2 Camembert Pierrot 2008-11-09 15:45:21

3 Mozzarella di Giovanni 2008-11-11 11:12:01

4 Mascarpone Fabioli 2008-10-29 14:56:59

Si utilizamos la misma instruccin SELECT como la anterior:

SELECT * FROM Orders WHERE OrderDate='2008-11-11'


no obtendremos ningn resultado! Esto se debe a que la consulta slo
busca fechas sin partes de tiempo.

Sugerencia: Para mantener sus consultas simples y fciles de


mantener, no permita que los componentes de tiempo en sus fechas!

Vistas SQL
Anterior Siguiente

Sentencia SQL CREATE VIEW


En SQL, una vista es una tabla virtual basada en el conjunto de
resultados de una instruccin SQL.

Una vista contiene filas y columnas, al igual que una tabla real. Los
campos de una vista son campos de una o ms tablas reales de la base
de datos.

Puede agregar funciones SQL, instrucciones WHERE y JOIN a una vista y


presentar los datos como si los datos vinieran de una sola tabla.

Sintaxis CREATE VIEW


CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

Nota: Una vista siempre muestra datos actualizados! El motor de base


de datos recrea los datos, utilizando la sentencia SQL de la vista, cada
vez que un usuario consulta una vista.

Ejemplos de SQL CREATE VIEW


Si tiene la base de datos de Northwind puede ver que tiene varias vistas
instaladas de forma predeterminada.
La vista "Lista de productos actuales" enumera todos los productos
activos (productos que no se interrumpen) de la tabla "Productos". La
vista se crea con el siguiente SQL:

CREATE VIEW [Current Product List] AS


SELECT ProductID, ProductName
FROM Products
WHERE Discontinued = No;

A continuacin, podemos consultar la vista de la siguiente manera:

SELECT * FROM [Current Product List];

Otra vista en la base de datos de ejemplo Northwind selecciona cada


producto en la tabla "Productos" con un precio unitario mayor que el
precio unitario medio:

CREATE VIEW [Products Above Average Price] AS


SELECT ProductName, UnitPrice
FROM Products
WHERE UnitPrice > (SELECT AVG(UnitPrice) FROM Products);

Podemos consultar la vista anterior como sigue:

SELECT * FROM [Products Above Average Price];

Otra vista de la base de datos Northwind calcula la venta total de cada


categora en 1997. Tenga en cuenta que esta vista selecciona sus datos
desde otra vista denominada "Ventas de productos para 1997":

CREATE VIEW [Category Sales For 1997] AS


SELECT DISTINCT CategoryName, Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName;

Podemos consultar la vista anterior como sigue:

SELECT * FROM [Category Sales For 1997];

Tambin podemos aadir una condicin a la consulta. Veamos la venta


total slo para la categora "Bebidas":

SELECT * FROM [Category Sales For 1997]


WHERE CategoryName = 'Beverages';
SQL Actualizar una vista
Puede actualizar una vista utilizando la siguiente sintaxis:

SQL CREATE OR REPLACE VIEW Sintaxis


CREATE OR REPLACE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

Ahora queremos agregar la columna "Categora" a la vista "Lista de


productos actuales". Actualizaremos la vista con el siguiente SQL:

CREATE OR REPLACE VIEW [Current Product List] AS


SELECT ProductID, ProductName, Category
FROM Products
WHERE Discontinued = No;

Eliminar una vista de SQL


Puede eliminar una vista con el comando DROP VIEW.

SQL DROP VIEW Sintaxis


DROP VIEW view_name;

Inyeccin de SQL
Anterior Siguiente

Inyeccin SQL
La inyeccin SQL es una tcnica de inyeccin de cdigo que puede
destruir su base de datos.

La inyeccin de SQL es una de las tcnicas de hacking web ms


comunes.
Inyeccin de SQL es la colocacin de cdigo malicioso en las sentencias
SQL, a travs de la entrada de pgina web.

SQL en pginas Web


La inyeccin de SQL generalmente ocurre cuando pides a un usuario
entradas, como su nombre de usuario / userid, y en lugar de un nombre
/ id, el usuario te da una sentencia SQL que ejecutars sin saberlo en
tu base de datos.

Observe el siguiente ejemplo que crea una instruccin SELECT


agregando una variable (txtUserId) a una cadena de seleccin. La
variable se obtiene de la entrada del usuario (getRequestString):

Ejemplo
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;

El resto de este captulo describe los peligros potenciales de usar la


entrada de usuario en sentencias SQL.

La inyeccin de SQL basada en 1 = 1 es


siempre verdadera
Mira el ejemplo anterior otra vez. El propsito original del cdigo era
crear una instruccin SQL para seleccionar un usuario, con un ID de
usuario determinado.

Si no hay nada que impida que un usuario ingrese entrada "incorrecta",


el usuario puede ingresar alguna entrada "inteligente" como esta:

Identidad de usuario:

A continuacin, la instruccin SQL se ver as:

SELECT * FROM Users WHERE UserId = 105 OR 1=1;

El SQL anterior es vlido y devolver TODAS las filas de la tabla


"Usuarios", ya que OR 1 = 1 siempre es VERDADERO.
El ejemplo anterior parece peligroso? Qu pasa si la tabla "Usuarios"
contiene nombres y contraseas?

La sentencia de SQL anterior es mucho lo mismo que esto:

SELECT UserId, Name, Password FROM Users WHERE UserId = 105 or 1=1;

Un hacker puede tener acceso a todos los nombres de usuario y


contraseas en una base de datos, simplemente insertando 105 OR 1 =
1 en el campo de entrada.

Inyeccin SQL basada en "" = "" siempre


es verdadera
Aqu hay un ejemplo de un inicio de sesin de usuario en un sitio web:

Nombre de usuario:

Contrasea:

Ejemplo
uName = getRequestString("username");
uPass = getRequestString("userpassword");

sql = 'SELECT * FROM Users WHERE Name ="' + uName + '" AND Pass ="' +
uPass + '"'

Resultado
SELECT * FROM Users WHERE Name ="John Doe" AND Pass ="myPass"

Un hacker puede tener acceso a nombres de usuario y contraseas en


una base de datos insertando simplemente "OR" "=" en el cuadro de
texto de nombre de usuario o contrasea:

Nombre de usuario:
Contrasea:

El cdigo en el servidor crear una sentencia SQL vlida como esta:

Resultado
SELECT * FROM Users WHERE Name ="" or ""="" AND Pass ="" or ""=""

El SQL anterior es vlido y devolver todas las filas de la tabla


"Usuarios", ya que OR "" = "" siempre es VERDADERO.

Inyeccin SQL basada en sentencias SQL


agrupadas
La mayora de las bases de datos admiten la sentencia SQL agrupada.

Un lote de instrucciones SQL es un grupo de dos o ms sentencias SQL,


separadas por punto y coma.

La instruccin SQL siguiente devolver todas las filas de la tabla


"Usuarios" y, a continuacin, suprimir la tabla "Proveedores".

Ejemplo
SELECT * FROM Users; DROP TABLE Suppliers

Mira el siguiente ejemplo:

Ejemplo
txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = " + txtUserId;

Y la siguiente entrada:

Identidad de usuario:

La instruccin SQL vlida se vera as:

Resultado
SELECT * FROM Users WHERE UserId = 105; DROP TABLE Suppliers;
Utilizar parmetros de SQL para la
proteccin
Para proteger un sitio web de la inyeccin de SQL, puede utilizar
parmetros de SQL.

Los parmetros SQL son valores que se agregan a una consulta SQL en
tiempo de ejecucin, de forma controlada.

Ejemplo de Razor de ASP.NET


txtUserId = getRequestString("UserId");
txtSQL = "SELECT * FROM Users WHERE UserId = @0";
db.Execute(txtSQL,txtUserId);

Tenga en cuenta que los parmetros se representan en la instruccin


SQL mediante un marcador @.

El motor de SQL comprueba cada parmetro para asegurarse de que es


correcto para su columna y se tratan literalmente, y no como parte del
SQL para ser ejecutado.

Otro ejemplo
txtNam = getRequestString("CustomerName");
txtAdd = getRequestString("Address");
txtCit = getRequestString("City");
txtSQL = "INSERT INTO Customers (CustomerName,Address,City)
Values(@0,@1,@2)";
db.Execute(txtSQL,txtNam,txtAdd,txtCit);

Ejemplos
Los siguientes ejemplos muestran cmo generar consultas
parametrizadas en algunos idiomas web comunes.

SELECCIONE LA DECLARACIN EN ASP.NET:

txtUserId = getRequestString("UserId");
sql = "SELECT * FROM Customers WHERE CustomerId = @0";
command = new SqlCommand(sql);
command.Parameters.AddWithValue("@0",txtUserID);
command.ExecuteReader();

INSERTAR EN LA DECLARACIN EN ASP.NET:

txtNam = getRequestString("CustomerName");
txtAdd = getRequestString("Address");
txtCit = getRequestString("City");
txtSQL = "INSERT INTO Customers (CustomerName,Address,City)
Values(@0,@1,@2)";
command = new SqlCommand(txtSQL);
command.Parameters.AddWithValue("@0",txtNam);
command.Parameters.AddWithValue("@1",txtAdd);
command.Parameters.AddWithValue("@2",txtCit);
command.ExecuteNonQuery();

INSERTAR EN LA DECLARACIN EN PHP:

$stmt = $dbh->prepare("INSERT INTO Customers


(CustomerName,Address,City)
VALUES (:nam, :add, :cit)");
$stmt->bindParam(':nam', $txtNam);
$stmt->bindParam(':add', $txtAdd);
$stmt->bindParam(':cit', $txtCit);
$stmt->execute();

Alojamiento de SQL
Anterior Siguiente

Alojamiento de SQL
Si desea que su sitio web pueda almacenar y recuperar datos de una
base de datos, su servidor web debe tener acceso a un sistema de base
de datos que utilice el lenguaje SQL.

Si su servidor web est alojado por un proveedor de servicios de


Internet (ISP), tendr que buscar planes de alojamiento de SQL.

Las bases de datos de alojamiento SQL ms comunes son MS SQL


Server, Oracle, MySQL y MS Access.
MS SQL Server
SQL Server de Microsoft es un popular software de base de datos para
sitios web basados en bases de datos con alto trfico.

SQL Server es un sistema de base de datos SQL muy potente, robusto y


con todas las funciones.

Orculo
Oracle tambin es un popular software de base de datos para sitios web
con base de datos y con alto trfico.

Oracle es un sistema de base de datos SQL muy potente, robusto y con


todas las funciones.

MySQL
MySQL tambin es un popular software de base de datos para sitios
web.

MySQL es un sistema de base de datos SQL muy potente, robusto y con


todas las funciones.

MySQL es una alternativa econmica a las costosas soluciones de


Microsoft y Oracle.

Acceso
Cuando un sitio web requiere slo una base de datos simple, Microsoft
Access puede ser una solucin.

El acceso no es muy adecuado para trfico muy alto y no tan potente


como MySQL, SQL Server u Oracle.

Funciones de SQL Server


Anterior Siguiente

SQL Server tiene muchas funciones integradas.

Esta referencia contiene la cadena, numrico, fecha, conversin y


funciones avanzadas en SQL Server.

Funciones de cadena de SQL Server

Function Description

ASCII Returns the number code that represents the specific characte

CHAR Returns the ASCII character based on the number code

CHARINDEX Returns the location of a substring in a string

CONCAT Concatenates two or more strings together

Concat with + Concatenates two or more strings together

DATALENGTH Returns the length of an expression (in bytes)

LEFT Extracts a substring from a string (starting from left)


LEN Returns the length of the specified string

LOWER Converts a string to lower-case

LTRIM Removes leading spaces from a string

NCHAR Returns the Unicode character based on the number code

PATINDEX Returns the location of a pattern in a string

REPLACE Replaces a sequence of characters in a string with another set


characters

RIGHT Extracts a substring from a string (starting from right)

RTRIM Removes trailing spaces from a string

SPACE Returns a string with a specified number of spaces

STR Returns a string representation of a number

STUFF Deletes a sequence of characters from a string and then inser


sequence of characters into the string, starting at a specified p
SUBSTRING Extracts a substring from a string

UPPER Converts a string to upper-case

Funciones numricas de SQL Server

Function Description

ABS Returns the absolute value of a number

AVG Returns the average value of an expression

CEILING Returns the smallest integer value that is greater than or equa
number

COUNT Returns the count of an expression

FLOOR Returns the largest integer value that is equal to or less than

MAX Returns the maximum value of an expression


MIN Returns the minimum value of an expression

RAND Returns a random number or a random number within a range

ROUND Returns a number rounded to a certain number of decimal pla

SIGN Returns a value indicating the sign of a number

SUM Returns the summed value of an expression

Funciones de fecha de SQL Server

Function Description

CURRENT_TIMESTAMP Returns the current date and time

DATEADD Returns a date after a certain time/date interval has been add

DATEDIFF Returns the difference between two date values, based on the
specified

DATENAME Returns a specified part of a given date, as a string value


DATEPART Returns a specified part of a given date, as an integer value

DAY Returns the day of the month (from 1 to 31) for a given date

GETDATE Returns the current date and time

GETUTCDATE Returns the current UTC date and time

MONTH Returns the month (from 1 to 12) for a given date

YEAR Returns the year (as a four-digit number) for a given date

Funciones de conversin de SQL Server

Function Description

CAST Converts an expression from one data type to another

CONVERT Converts an expression from one data type to another

Funciones avanzadas de SQL Server


Function Description

COALESCE Returns the first non-null expression in a list

CURRENT_USER Returns the name of the current user in the SQL Server datab

ISDATE Returns 1 if the expression is a valid date, otherwise 0

ISNULL Lets you return an alternative value when an expression is NU

ISNUMERIC Returns 1 if the expression is a valid number, otherwise 0

NULLIF Compares two expressions

SESSION_USER Returns the user name of the current session in the SQL Serve

SESSIONPROPERTY Returns the setting for a specified option of a session

SYSTEM_USER Returns the login name information for the current user in the
Server database

USER_NAME Returns the user name in the SQL Server database


Tipos de datos SQL para MySQL,
SQL Server y MS Access
Anterior Siguiente

Un tipo de datos define qu tipo de valor puede contener una


columna: datos enteros, datos de caracteres, datos monetarios, datos
de fecha y hora, cadenas binarias, etc.

Tipos de datos SQL


Cada columna de una tabla de base de datos debe tener un nombre y un
tipo de datos.

Un desarrollador de SQL debe decidir qu tipo de datos se almacenarn


dentro de cada columna al crear una tabla. El tipo de datos es una
directriz para SQL para comprender qu tipo de datos se espera dentro
de cada columna y tambin identifica cmo interacta SQL con los datos
almacenados.

Nota: Los tipos de datos pueden tener nombres diferentes en la base de


datos diferente. E incluso si el nombre es igual, el tamao y otros
detalles pueden ser diferentes! Compruebe siempre la
documentacin!

Tipos de datos de MySQL


En MySQL hay tres tipos de datos principales: texto, nmero y fecha.

Tipos de datos de texto:

Data type Description


CHAR(size) Holds a fixed length string (can contain letters, numbers, and special characters). The fi
specified in parenthesis. Can store up to 255 characters

VARCHAR(size) Holds a variable length string (can contain letters, numbers, and special characters). Th
size is specified in parenthesis. Can store up to 255 characters. Note: If you put a greate
255 it will be converted to a TEXT type

TINYTEXT Holds a string with a maximum length of 255 characters

TEXT Holds a string with a maximum length of 65,535 characters

BLOB For BLOBs (Binary Large OBjects). Holds up to 65,535 bytes of data

MEDIUMTEXT Holds a string with a maximum length of 16,777,215 characters

MEDIUMBLOB For BLOBs (Binary Large OBjects). Holds up to 16,777,215 bytes of data

LONGTEXT Holds a string with a maximum length of 4,294,967,295 characters

LONGBLOB For BLOBs (Binary Large OBjects). Holds up to 4,294,967,295 bytes of data

ENUM(x,y,z,etc.) Let you enter a list of possible values. You can list up to 65535 values in an ENUM list. If
inserted that is not in the list, a blank value will be inserted.

Note: The values are sorted in the order you enter them.

You enter the possible values in this format: ENUM('X','Y','Z')


SET Similar to ENUM except that SET may contain up to 64 list items and can store more tha

Tipos de datos numricos:

Data type Description

TINYINT(size) -128 to 127 normal. 0 to 255 UNSIGNED*. The maximum number of digits may be spec
parenthesis

SMALLINT(size) -32768 to 32767 normal. 0 to 65535 UNSIGNED*. The maximum number of digits may
parenthesis

MEDIUMINT(size) -8388608 to 8388607 normal. 0 to 16777215 UNSIGNED*. The maximum number of di


specified in parenthesis

INT(size) -2147483648 to 2147483647 normal. 0 to 4294967295 UNSIGNED*. The maximum num


may be specified in parenthesis

BIGINT(size) -9223372036854775808 to 9223372036854775807 normal. 0 to 184467440737095516


UNSIGNED*. The maximum number of digits may be specified in parenthesis

FLOAT(size,d) A small number with a floating decimal point. The maximum number of digits may be s
size parameter. The maximum number of digits to the right of the decimal point is spec
parameter
DOUBLE(size,d) A large number with a floating decimal point. The maximum number of digits may be s
size parameter. The maximum number of digits to the right of the decimal point is spec
parameter

DECIMAL(size,d) A DOUBLE stored as a string , allowing for a fixed decimal point. The maximum number
be specified in the size parameter. The maximum number of digits to the right of the d
specified in the d parameter

* Los tipos enteros tienen una opcin adicional denominada


UNSIGNED. Normalmente, el nmero entero pasa de un valor negativo a
un valor positivo. La adicin del atributo UNSIGNED mover ese rango
hacia arriba para que comience en cero en lugar de un nmero negativo.

Tipos de datos de fecha:

Data type Description

DATE() A date. Format: YYYY-MM-DD

Note: The supported range is from '1000-01-01' to '9999-12-31'

DATETIME() *A date and time combination. Format: YYYY-MM-DD HH:MI:SS

Note: The supported range is from '1000-01-01 00:00:00' to '9999


23:59:59'

TIMESTAMP() *A timestamp. TIMESTAMP values are stored as the number of sec


the Unix epoch ('1970-01-01 00:00:00' UTC). Format: YYYY-MM-D
HH:MI:SS

Note: The supported range is from '1970-01-01 00:00:01' UTC to


09 03:14:07' UTC

TIME() A time. Format: HH:MI:SS

Note: The supported range is from '-838:59:59' to '838:59:59'

YEAR() A year in two-digit or four-digit format.


Note: Values allowed in four-digit format: 1901 to 2155. Values al
two-digit format: 70 to 69, representing years from 1970 to 2069

* Incluso si DATETIME y TIMESTAMP devuelven el mismo formato,


funcionan de manera muy diferente. En una consulta INSERT o UPDATE,
el TIMESTAMP se ajusta automticamente a la fecha y hora
actuales. TIMESTAMP tambin acepta varios formatos, como
YYYYMMDDHHMISS, YYMMDDHHMISS, YYYYMMDD o YYMMDD.

Tipos de datos de SQL Server


Tipos de datos de cadena:

Data type Description Max size Storage

char(n) Fixed width character string 8,000 characters Defined width

varchar(n) Variable width character string 8,000 characters 2 bytes + numb

varchar(max) Variable width character string 1,073,741,824 characters 2 bytes + numb

text Variable width character string 2GB of text data 4 bytes + numb

nchar Fixed width Unicode string 4,000 characters Defined width x

nvarchar Variable width Unicode string 4,000 characters

nvarchar(max) Variable width Unicode string 536,870,912 characters


ntext Variable width Unicode string 2GB of text data

binary(n) Fixed width binary string 8,000 bytes

varbinary Variable width binary string 8,000 bytes

varbinary(max) Variable width binary string 2GB

image Variable width binary string 2GB

Tipos de datos numricos:

Data type Description

bit Integer that can be 0, 1, or NULL

tinyint Allows whole numbers from 0 to 255

smallint Allows whole numbers between -32,768 and 32,767

int Allows whole numbers between -2,147,483,648 and 2,147,483,647

bigint Allows whole numbers between -9,223,372,036,854,775,808 and


9,223,372,036,854,775,807
decimal(p,s) Fixed precision and scale numbers.

Allows numbers from -10^38 +1 to 10^38 1.

The p parameter indicates the maximum total number of digits that can be stored
(both to the left and to the right of the decimal point). p must be a value from 1 to
38. Default is 18.

The s parameter indicates the maximum number of digits stored to the right of
the decimal point. s must be a value from 0 to p. Default value is 0

numeric(p,s) Fixed precision and scale numbers.

Allows numbers from -10^38 +1 to 10^38 1.

The p parameter indicates the maximum total number of digits that can be stored
(both to the left and to the right of the decimal point). p must be a value from 1 to
38. Default is 18.

The s parameter indicates the maximum number of digits stored to the right of
the decimal point. s must be a value from 0 to p. Default value is 0

smallmoney Monetary data from -214,748.3648 to 214,748.3647

money Monetary data from -922,337,203,685,477.5808 to 922,337,203,685,477.5807

float(n) Floating precision number data from -1.79E + 308 to 1.79E + 308.

The n parameter indicates whether the field should hold 4 or 8 bytes. float(24)
holds a 4-byte field and float(53) holds an 8-byte field. Default value of n is 53.

real Floating precision number data from -3.40E + 38 to 3.40E + 38

Tipos de datos de fecha:

Data type Description

datetime From January 1, 1753 to December 31, 9999 with an accuracy of 3.33 milliseconds
datetime2 From January 1, 0001 to December 31, 9999 with an accuracy of 100 nanoseconds

smalldatetime From January 1, 1900 to June 6, 2079 with an accuracy of 1 minute

date Store a date only. From January 1, 0001 to December 31, 9999

time Store a time only to an accuracy of 100 nanoseconds

datetimeoffset The same as datetime2 with the addition of a time zone offset

timestamp Stores a unique number that gets updated every time a row gets created or modified.
The timestamp value is based upon an internal clock and does not correspond to real
time. Each table may have only one timestamp variable

Otros tipos de datos:

Data type Description

sql_variant Stores up to 8,000 bytes of data of various data types, except text
timestamp

uniqueidentifier Stores a globally unique identifier (GUID)

xml Stores XML formatted data. Maximum 2GB


cursor Stores a reference to a cursor used for database operations

table Stores a result-set for later processing

Tipos de datos de Microsoft Access

Data type Description

Text Use for text or combinations of text and numbers. 255 characters maximum

Memo Memo is used for larger amounts of text. Stores up to 65,536 characters. Note: You
cannot sort a memo field. However, they are searchable

Byte Allows whole numbers from 0 to 255

Integer Allows whole numbers between -32,768 and 32,767

Long Allows whole numbers between -2,147,483,648 and 2,147,483,647

Single Single precision floating-point. Will handle most decimals

Double Double precision floating-point. Will handle most decimals


Currency Use for currency. Holds up to 15 digits of whole dollars, plus 4 decimal places. Tip: You
can choose which country's currency to use

AutoNumber AutoNumber fields automatically give each record its own number, usually starting at 1

Date/Time Use for dates and times

Yes/No A logical field can be displayed as Yes/No, True/False, or On/Off. In code, use the
constants True and False (equivalent to -1 and 0). Note: Null values are not allowed in
Yes/No fields

Ole Object Can store pictures, audio, video, or other BLOBs (Binary Large OBjects)

Hyperlink Contain links to other files, including web pages

Lookup Wizard Let you type a list of options, which can then be chosen from a drop-down list

Referencia rpida de SQL desde


W3Schools
Anterior Siguiente
SQL Statement Syntax

AND / OR SELECT column_name(s)


FROM table_name
WHERE condition
AND|OR condition

ALTER TABLE ALTER TABLE table_name


ADD column_name datatype

or

ALTER TABLE table_name


DROP COLUMN column_name

AS (alias) SELECT column_name AS column_alias


FROM table_name

or

SELECT column_name
FROM table_name AS table_alias

BETWEEN SELECT column_name(s)


FROM table_name
WHERE column_name
BETWEEN value1 AND value2

CREATE DATABASE CREATE DATABASE database_name

CREATE TABLE CREATE TABLE table_name


(
column_name1 data_type,
column_name2 data_type,
column_name3 data_type,
...
)

CREATE INDEX CREATE INDEX index_name


ON table_name (column_name)
or

CREATE UNIQUE INDEX index_name


ON table_name (column_name)

CREATE VIEW CREATE VIEW view_name AS


SELECT column_name(s)
FROM table_name
WHERE condition

DELETE DELETE FROM table_name


WHERE some_column=some_value

or

DELETE FROM table_name


(Note: Deletes the entire table!!)

DELETE * FROM table_name


(Note: Deletes the entire table!!)

DROP DATABASE DROP DATABASE database_name

DROP INDEX DROP INDEX table_name.index_name (SQL Server)


DROP INDEX index_name ON table_name (MS Access)
DROP INDEX index_name (DB2/Oracle)
ALTER TABLE table_name
DROP INDEX index_name (MySQL)

DROP TABLE DROP TABLE table_name

EXISTS IF EXISTS (SELECT * FROM table_name WHERE id = ?)


BEGIN
--do what needs to be done if exists
END
ELSE
BEGIN
--do what needs to be done if not
END

GROUP BY SELECT column_name, aggregate_function(column_name)


FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value

IN SELECT column_name(s)
FROM table_name
WHERE column_name
IN (value1,value2,..)

INSERT INTO INSERT INTO table_name


VALUES (value1, value2, value3,....)

or

INSERT INTO table_name


(column1, column2, column3,...)
VALUES (value1, value2, value3,....)

INNER JOIN SELECT column_name(s)


FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name

LEFT JOIN SELECT column_name(s)


FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

RIGHT JOIN SELECT column_name(s)


FROM table_name1
RIGHT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

FULL JOIN SELECT column_name(s)


FROM table_name1
FULL JOIN table_name2
ON table_name1.column_name=table_name2.column_name

LIKE SELECT column_name(s)


FROM table_name
WHERE column_name LIKE pattern
ORDER BY SELECT column_name(s)
FROM table_name
ORDER BY column_name [ASC|DESC]

SELECT SELECT column_name(s)


FROM table_name

SELECT * SELECT *
FROM table_name

SELECT DISTINCT SELECT DISTINCT column_name(s)


FROM table_name

SELECT INTO SELECT *


INTO new_table_name [IN externaldatabase]
FROM old_table_name

or

SELECT column_name(s)
INTO new_table_name [IN externaldatabase]
FROM old_table_name

SELECT TOP SELECT TOP number|percent column_name(s)


FROM table_name

TRUNCATE TABLE TRUNCATE TABLE table_name

UNION SELECT column_name(s) FROM table_name1


UNION
SELECT column_name(s) FROM table_name2

UNION ALL SELECT column_name(s) FROM table_name1


UNION ALL
SELECT column_name(s) FROM table_name2

UPDATE UPDATE table_name


SET column1=value, column2=value,...
WHERE some_column=some_value

WHERE SELECT column_name(s)


FROM table_name
WHERE column_name operator value

You might also like