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