Sunteți pe pagina 1din 29

Introduccion al SQL server

El SQL es un lenguaje estándar de programación para el acceso a bases de datos.

El lenguaje SQL se utiliza para acceder y manipular datos en cualquier base de datos del mercado,
como por ejemplo, para las bases de datos MySQL, Oracle, DB2, SQL Server, Access.

El SQL es un lenguaje estructurado y un estándar ANSI para el acceso y manipulación de los datos
de cualquier base de datos.

El SQL se compone de sentencias SQL, cada una con una utilidad diferente, como por ejemplo:

 Creación de una base de datos (CREATE DATABASE)


 Creación de una tabla (CREATE TABLE)
 Creación de una vista (CREATE VIEW)
 Creación de un índice de una tabla (CREATE INDEX)
 Creación de procedimientos almacenados (CREATE PROCEDURE)
 Creación de disparadores (CREATE TRIGGER)
 Consultar los datos almacenados en una tabla (SELECT)
 Insertar datos en una tabla (INSERT)
 Modificar datos ya existentes en una tabla (UPDATE)
 Borrar datos almacenados en una tabla (DELETE)
 Dar permiso de acceso a los datos de una tabla (GRANT)
 Eliminar permisos de acceso a datos de una tabla (REVOKE)
 Finalizar la transacción de una sentencia SQL (COMMIT)
 Retroceder la transacción de una sentencia SQL (ROLLBACK).

CREATE DATATABASE mibasedeatos;

Este punto y coma también puede servir para separar una sentencia SQL de otra sentencia SQL
en la misma línea.

CREATE DATATABASE mibasedeatos; CREATE TABLE mitabla1;

Las sentencias SQL se pueden agrupar por funcionalidades:

1.- Lenguaje de definición de datos (DDL).

DDL está compuesto por sentencias para la creación (CREATE), modificación (ALTER) y borrado
(DROP) de los componentes principales de una base de datos:

 base de datos (DATABASE)


 tablas (TABLE)
 vistas (VIEW)
 índices (INDEX)
 procedimientos almacenados (PROCEDURE)
 disparadores (TRIGGER).

2.- Lenguaje de manipulación de datos (DML).

DML está compuesto por sentencias que sirven para :

 consultar (SELECT)
 insertar (INSERT)
 modificar (UPDATE)
 borrar (DELETE)

3.- Lenguaje de control de datos (DCL).

DCL está compuesto por sentencias SQL para controlar las funciones de administración :

 Confirmar la operacion (COMMIT)


 Retroceder la operacion (ROLLBACK)
 Dar permisos (GRANT)
 Quitar permisos (REVOKE)

3.- Lenguaje de control de datos (DCL).

DCL está compuesto por sentencias SQL para controlar las funciones de administración :

 Confirmar la operacion (COMMIT)


 Retroceder la operacion (ROLLBACK)
 Dar permisos (GRANT)
 Quitar permisos (REVOKE)

SENTENCIA SELECT

Una de las sentencias SQL más importantes es SELECT, ya que permite realizar consultas sobre
los datos almacenados en la base de datos.

Sintaxis SQL SELECT

SELECT * FROM nombretabla

SELECT columna1, columna2 FROM nombretabla

Para los ejemplos, tendremos la siguiente tabla de personas denominada “personas”

Estos son los datos almacenados en la tabla “personas”


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
LUIS LOPEZ PEREZ

Si queremos consultar todos los datos de la tabla “personas”

SELECT * FROM personas

Este será el resultado:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
LUIS LOPEZ PEREZ

Si queremos consulta todos los nombres y primer apellido de todas las personas

SELECT nombre, apellido1 FROM personas

Este será el resultado:

nombre apellido1
ANTONIO PEREZ
ANTONIO GARCIA
LUIS LOPEZ
SENTENCIA DISTINCT

Al realizar una consulta puede ocurrir que existan valores repetidos para algunas columnas. Por
ejemplo

SELECT nombre FROM personas

nombre
ANTONIO
LUIS
ANTONIO

Esto no es un problema, pero a veces queremos que no se repitan, por ejemplo, si queremos saber
los nombre diferentes que hay en la tabla personas", entonces utilizaremos DISTINCT.

SELECT DISTINCT nombre FROM personas

nombre
ANTONIO
LUIS

SENTENCIA WHERE

La cláusula WHERE se utiliza para hacer filtros en las consultas, es decir, seleccionar solamente
algunas filas de la tabla que cumplan una determinada condición.

El valor de la condición debe ir entre comillas simples ''.

Por ejemplo:

Seleccionar las personas cuyo nombre sea ANTONIO

SELECT * FROM personas


WHERE nombre = 'ANTONIO'

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO

SENTENCIA OR
Los operadores AND y OR se utilizan para filtrar resultados con 2 condiciones.

El operador AND mostrará los resultados cuando se cumplan las 2 condiciones.

Condición1 AND condición2

El operador OR mostrará los resultados cuando se cumpla alguna de las 2 condiciones.

Condicion1 OR condicion2

En la tabla personas

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO
LUIS LOPEZ PEREZ

La siguiente sentencia (ejemplo AND) dará el siguiente resultado:

SELECT * FROM personas


WHERE nombre = 'ANTONIO'
AND apellido1 = 'GARCIA'

nombre apellido1 apellido2


ANTONIO GARCIA BENITO

La siguiente sentencia (ejemplo OR) dará el siguiente resultado:

SELECT * FROM personas


WHERE nombre = 'ANTONIO'
OR apellido1 = 'GARCIA'

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA BENITO

También se pueden combinar AND y OR, como el siguiente ejemplo:

SELECT * FROM personas


WHERE nombre = 'ANTONIO'
AND (apellido1 = 'GARCIA' OR apellido1 = 'LOPEZ)
nombre apellido1 apellido2
ANTONIO GARCIA BENITO

SENTENCIA ORDER BY

ORDER BY se utiliza para ordenar los resultados de una consulta, según el valor de la columna
especificada.

Por defecto, se ordena de forma ascendente (ASC) según los valores de la columna.

Si se quiere ordenar por orden descendente se utiliza la palabra DES

SELECT nombre_columna(s)
FROM nombre_tabla
ORDER BY nombre_columna(s) ASC|DESC

Por ejemplo, en la tabla personas :

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO

SELECT nombre, apellido1


FROM personas
ORDER BY apellido1 ASC

Esta es la consulta resultante:

nombre apellido1
LUIS LOPEZ
ANTONIO GARCIA
ANTONIO PEREZ

Ejemplo de ordenación descendiente (DES)

SELECT nombre, apellido1


FROM personas
ORDER BY apellido1 DESC

Esta es la consulta resultante:


nombre apellido1
ANTONIO PEREZ
ANTONIO GARCIA
LUIS LOPEZ

La sentencia INSERT INTO se utiliza para insertar nuevas filas en una tabla.

Es posible insertar una nueva fila en una tabla de dos formas distintas:

INSERT INTO nombre_tabla


VALUES (valor1, valor2, valor3, .)

INSERT INTO nombre_tabla (columna1, columna2, columna3,.)


VALUES (valor1, valor2, valor3, .)

Ejemplo:

Dada la siguiente tabla personas:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO

Si queremos insertar una nueva fila en la tabla personas, lo podemos hacer con cualquiera de las
dos sentencias siguientes:

INSERT INTO personas


VALUES ('PEDRO', 'RUIZ', 'GONZALEZ')
INSERT INTO personas (nombre, apellido1, apellido2)
VALUES ('PEDRO', 'RUIZ', 'GONZALEZ')

Cualquiera de estas sentencias anteriores produce que se inserte una nueva fila en la tabla
personas, quedando así dicha tabla:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO
PEDRO RUIZ GONZALEZ
La sentencia UPDATE se utiliza para modificar valores en una tabla.

La sintaxis de SQL UPDATE es:

UPDATE nombre_tabla
SET columna1 = valor1, columna2 = valor2
WHERE columna3 = valor3

La cláusula SET establece los nuevos valores para las columnas indicadas.

La cláusula WHERE sirve para seleccionar las filas que queremos modificar.

Ojo: Si omitimos la cláusula WHERE, por defecto, modificará los valores en todas las filas de la
tabla.

Ejemplo del uso de SQL UPDATE

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA BENITO
PEDRO RUIZ GONZALEZ

Si queremos cambiar el apellido2 'BENITO' por 'RODRIGUEZ' ejecutaremos:

UPDATE personas
SET apellido2 = 'RODRIGUEZ'
WHERE nombre = 'ANTONIO'
AND apellido1 = 'GARCIA'
AND apellido2 = 'BENITO'

Ahora la tabla 'personas' quedará así:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
LUIS LOPEZ PEREZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ
La sentencia SQL TOP se utiliza para especificar el número de filas a mostrar en el resultado.

Esta cláusula SQL TOP es útil en tablas con muchos registros, para limitar el número de filas a
mostrar en la consulta, y así sea más rápida la consulta, consumiendo también menos recursos en
el sistema.

Esta cláusula se especifica de forma diferente según el sistema de bases de datos utilizado.

Cláusula SQL TOP para SQL SERVER

SELECT TOP número


PERCENT nombre_columna
FROM nombre_tabla

Cláusula SQL TOP para MySQL

SELECT columna(s) FROM tabla


LIMIT númerofilas

Cláusula SQL TOP para ORACLE

SELECT columna(s) FROM tabla


WHERE ROWNUM <= númerofilas

El operador LIKE se utiliza en la cláusula WHERE para buscar por un patrón.

Sintaxis de SQL LIKE

SELECT columna(s) FROM tabla WHERE columna LIKE '%patron%'

Ejemplos del uso de SQL LIKE

Dada la siguiente tabla 'personas'

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ
Si quiero seleccionar los nombres que empiezan por 'AN' en la tabla 'personas', ejecutaría el
comando siguiente:

SELECT * FROM personas


WHERE nombre LIKE 'AN%'

El character '%' es un comodín, que sirve para uno o más caracteres.

Este es el resultado

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ

Otro ejemplo de SQL LIKE

Para seleccionar las personas que tienen un 'Z' en su apellido1, ejecutaríamos:

SELECT * FROM personas


WHERE apellido1 LIKE '%Z%'

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
PEDRO RUIZ GONZALEZ

Los caracteres Wildcards (comodines) son caracteres especiales que se utilizan para realizar
búsquedas especiales, como por ejemplo, buscar palabras que empiecen por una letra
determinada (letra%) o que contengan la letra a (%a%), o que contengan alguna vocal ([aeiou]),
etc.

Los caracteres Wildcards se utilizan con el operador SQL LIKE en una sentencia SELECT.Los
caracteres Wildcards son :

% sustituye a cero o más caracteres


_ sustituye a 1 carácter cualquiera
[lista] sustituye a cualquier carácter de la lista
[^lista] o sustituye a cualquier carácter excepto los caracteres
[!lista] de la lista

Ejemplos:

Dada la siguiente tabla 'personas'


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

Ejemplos Wildcards

Seleccionar las personas cuyo nombre contenga una 'R'

SELECT * FROM personas


WHERE nombre LIKE '%R%'

Resultado:

nombre apellido1 apellido2


PEDRO RUIZ GONZALEZ

Seleccionar las personas cuyo apellido1 empiece por 'GA'

SELECT * FROM personas


WHERE apellido1 LIKE 'PE_EZ'

Resultado:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ

Seleccionar las personas cuyo apellido1 empiece por P o G

SELECT * FROM personas


WHERE apellido1 LIKE '[PG]%'

Resultado:

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
El operador IN permite seleccionar múltiples valores en una cláusula WHERE

Sintaxis SQL IN

SELECT columna
FROM tabla
WHERE columna
IN (valor1, valor2, valor3, .)

Ejemplo SQL IN

Dada la siguiente tabla 'personas'

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

Queremos seleccionar a las personas cuyo apellido1 sea 'PEREZ' o 'RUIZ'

SELECT * FROM personas


WHERE apellido1
IN ('PEREZ','RUIZ')

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
PEDRO RUIZ GONZALEZ

El operador BETWEEN se utiliza en la cláusula WHERE para seleccionar valores entre un rango
de datos.

Sintaxis de SQL BETWEEN

SELECT columna
FROM tabla WHERE columna
BETWEEN valor1 AND valor2

Ejemplo de SQL BETWEEN

Dada la siguiente tabla 'personas'

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

Seleccionar personas cuyo apellido1 esté entre 'FERNANDEZ y 'HUERTAS'

SELECT *
FROM personas
WHERE apellido1
BETWEEN 'FERNANDEZ' AND 'HUERTAS'

nombre apellido1 apellido2


ANTONIO GARCIA RODRIGUEZ

Seleccionar personas cuyo apellido1 no esté entre 'FERNANDEZ y 'HUERTAS'

SELECT *
FROM personas
WHERE apellido1
NOT BETWEEN 'FERNANDEZ' AND 'HUERTAS'

nombre apellido1 apellido2


ANTONIO PEREZ GOMEZ
PEDRO RUIZ GONZALEZ

Un alias, es otra forma de llamar a una tabla o a una columna, y se utiliza para simplificar las
sentencias SQL cuando los nombre de tablas o columnas son largos o complicados.

Sintaxis SQL ALIAS para una tabla:

SELECT columna
FROM nombretabla
AS aliastabla

Sintaxis SQL ALIAS para una columna

SELECT nombrecolumna
AS aliascolumna
FROM tabla

Ejemplos SQL ALIAS

Dada la siguiente tabla 'personas'


nombre apellido1 apellido2
ANTONIO PEREZ GOMEZ
ANTONIO GARCIA RODRIGUEZ
PEDRO RUIZ GONZALEZ

Utilizamos el alias 'p' para la tabla 'personas', para simplificar la sentencia SELECT

SELECT p.apellido1, p.apellido2


FROM personas
AS p
WHERE p.nombre = 'ANTONIO'

apellido1 apellido2
PEREZ GOMEZ
GARCIA RODRIGUEZ

Sin utilizar el alias, la sentencia SELECT quedaría un poco más larga:

SELECT personas.apellido1, personas.apellido2


FROM personas
WHERE personas.nombre = 'ANTONIO'

apellido1 apellido2
PEREZ GOMEZ
GARCIA RODRIGUEZ

La sentencia SQL JOIN permite consultar datos de 2 o más tablas.

Dichas tablas estarán relacionadas entre ellas de alguna forma, a través de alguna de sus
columnas.

Existen 3 tipos de JOINS: JOIN interno, JOIN externo y JOIN cruzado.

Una clave primaria es una columna con un valor único para cada registro de una tabla.

El propósito del JOIN es unir información de diferentes tablas, para no tener que repetir datos en
diferentes tablas.

Ejemplo:

Si tenemos las siguientes tablas


Tabla personas, con la clave primaria "per "

per nombre apellido1 apellido2 dep


1 ANTONIO PEREZ GOMEZ 1
2 ANTONIO GARCIA RODRIGUEZ 2
3 PEDRO RUIZ GONZALEZ 2

Tabla "departamentos", con la clave primaria "dep"

dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL

Si queremos saber los nombres de las personas que trabajan en INFORMATICA, tendríamos que
hacer un JOIN de las 2 tablas "personas" y "departamentos", que se relacionarían por la columna
"dep".

Es decir, que desde la tabla "personas" y mediante la columna "dep", podemos acceder a la
información de la tabla "departamentos".

La sentencia INNER JOIN es el sentencia JOIN por defecto, y consiste en combinar cada fila de
una tabla con cada fila de la otra tabla, seleccionado aquellas filas que cumplan una determinada
condición.

SELECT * FROM tabla1 INNER JOIN tabla2 WHERE tabla1.columna1 = tabla2.columna1

Ejemplo SQL INNER JOIN

Tabla personas, con la clave primaria "per "

per nombre apellido1 apellido2 dep


1 ANTONIO PEREZ GOMEZ 1
2 ANTONIO GARCIA RODRIGUEZ 2
3 PEDRO RUIZ GONZALEZ 2

Tabla "departamentos", con la clave primaria "dep"

dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL

SELECT nombre, apellido1, departamento FROM personas INNER JOIN departamentos


WHERE personas.dep = departamentos.dep

nombre apellido1 departamento


ANTONIO PEREZ ADMINISTRACION
ANTONIO GARCIA INFORMATICA
PEDRO RUIZ INFORMATICA

La sentencia LEFT JOIN combina los valores de la primera tabla con los valores de la segunda
tabla. Siempre devolverá las filas de la primera tabla, incluso aunque no cumplan la condición.

SELECT * FROM tabla1


LEFT JOIN tabla2
WHERE tabla1.columna1 = tabla2.columna1

Ejemplo de SQL LEFT JOIN

Tabla personas, con la clave primaria "per "

per nombre apellido1 apellido2 dep


1 ANTONIO PEREZ GOMEZ 1
2 ANTONIO GARCIA RODRIGUEZ 2
3 PEDRO RUIZ GONZALEZ 4

Tabla "departamentos", con la clave primaria "dep"

dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL

SELECT nombre, apellido1, departamento


FROM personas
LEFT JOIN departamentos
WHERE personas.dep = departamentos.dep
nombre apellido1 departamento
ANTONIO PEREZ ADMINISTRACION
ANTONIO GARCIA INFORMATICA
PEDRO RUIZ

Aunque el departamento '4' de PEDRO RUIZ no existe en la tabla de departamentos, devolverá la


fila con esa columna 'departamento' en blanco.

La sentencia RIGHT JOIN combina los valores de la primera tabla con los valores de la segunda
tabla. Siempre devolverá las filas de la segunda tabla, incluso aunque no cumplan la condición.

En algunas bases de datos, la sentencia RIGHT JOIN es igual a RIGHT OUTER JOIN

SELECT * FROM tabla1 RIGHT JOIN tabla2 WHERE tabla1.columna1 = tabla2.columna1

EJEMPLO SQL RIGHT JOIN

per nombre apellido1 apellido2 dep


1 ANTONIO PEREZ GOMEZ 1
2 ANTONIO GARCIA RODRIGUEZ 2
3 PEDRO RUIZ GONZALEZ 4

Tabla "departamentos", con la clave primaria "dep"

dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL

SELECT nombre, apellido1, departamento


FROM personas
RIGHT JOIN departamentos
WHERE personas.dep = departamentos.dep

nombre apellido1 departamento


ANTONIO PEREZ ADMINISTRACION
ANTONIO GARCIA INFORMATICA
COMERCIAL
Aunque no exista ninguna persona del departamento 'COMERCIAL' (3), esta fila aparecerá con las
otras columnas en blanco

La sentencia FULL JOIN combina los valores de la primera tabla con los valores de la segunda
tabla. Siempre devolverá las filas de las dos tablas, aunque no cumplan la condición.

La sentencia FULL JOIN es la unión de LEFT JOIN y RIGHT JOIN

SELECT * FROM tabla1 FULL JOIN tabla2 WHERE tabla1.columna1 = tabla2.columna1

EJEMPLO SQL FULL JOIN

per nombre apellido1 apellido2 dep


1 ANTONIO PEREZ GOMEZ 1
2 ANTONIO GARCIA RODRIGUEZ 2
3 PEDRO RUIZ GONZALEZ 4

Tabla "departamentos", con la clave primaria "dep"

dep departamento
1 ADMINISTRACION
2 INFORMATICA
3 COMERCIAL

SELECT nombre, apellido1, departamento


FROM personas
FULL JOIN departamentos
WHERE personas.dep = departamentos.dep

nombre apellido1 departamento


ANTONIO PEREZ ADMINISTRACION
ANTONIO GARCIA INFORMATICA
PEDRO RUIZ COMERCIAL

La sentencia SQL UNION es utilizada para acumular los resultados de dos sentencias SELECT.

Las dos sentencias SELECT tienen que tener el mismo número de columnas, con el mismo tipo de
dato y en el mismo orden.
Sintaxis SQL UNION

SELECT columna1, columna2 FROM tabla1


UNION
SELECT columna1, columna2 FROM tabla2

Ejemplo SQL UNION

Tabla "personas_empresa1"

per nombre apellido1 apellido2


1 ANTONIO PEREZ GOMEZ
2 ANTONIO GARCIA RODRIGUEZ
3 PEDRO RUIZ GONZALEZ

Tabla "personas_empresa2"

per nombre apellido1 apellido2


1 JUAN APARICIO TENS
2 ANTONIO GARCIA RODRIGUEZ
3 LUIS LOPEZ VAZQUEZ

SELECT nombre, apellido1 FROM personas_empresa1


UNION
SELECT nombre, apellido1 FROM personas_empresa2

nombre apellido1
ANTONIO PEREZ
ANTONIO GARCIA
PEDRO RUIZ
JUAN APARICIO
LUIS LOPEZ

La persona 'ANTONIO GARCIA RODRIGUEZ' aparecerá solo una vez en el resultado, porque no
aparecerán las filas repetidas.

La sentencia SQL SELECT INTO se utiliza para seleccionar datos de una tabla y copiarlos en otra
tabla diferente.

Se suele utilizar para hacer una copia de seguridad (backup) de los datos de una tabla.

Sintaxis SQL SELECT INTO


SELECT * INTO nuevatabla FROM tablaactual

Esta sentencia copiará todos los registros de la tabla 'tablaactual' en la tabla 'nuevatabla'.

La nueva tabla puede incluso estar en una base de datos diferente

SELECT *
INTO nuevatabla [IN nuevabasedatos]
FROM tablaactual

Si queremos hacer un backup de una tabla en otra

SELECT *
INTO personasBackup
FROM personas

También se pueden seleccionar sólo algunas columnas

SELECT columna1, columna2


INTO personasBackup
FROM personas

También se puede incluir una condición (WHERE)

SELECT *
INTO personasBackup
FROM personas
WHERE nombre = 'ANTONIO'

Se puede utilizar SELECT INTO con JOIN

SELECT personas.nombre, personas.apellido1, departamentos.departamento


INTO personasInformatica
FROM personas INNER JOIN departamentos
ON personas.dep = 'INFORMATICA'

La sentencia SQL SELECT INTO se utiliza para seleccionar datos de una tabla y copiarlos en otra
tabla diferente.

Se suele utilizar para hacer una copia de seguridad (backup) de los datos de una tabla.

Sintaxis SQL SELECT INTO


SELECT * INTO nuevatabla FROM tablaactual

Esta sentencia copiará todos los registros de la tabla 'tablaactual' en la tabla 'nuevatabla'.

La nueva tabla puede incluso estar en una base de datos diferente

SELECT *
INTO nuevatabla [IN nuevabasedatos]
FROM tablaactual

Si queremos hacer un backup de una tabla en otra

SELECT *
INTO personasBackup
FROM personas

También se pueden seleccionar sólo algunas columnas

SELECT columna1, columna2


INTO personasBackup
FROM personas

También se puede incluir una condición (WHERE)

SELECT *
INTO personasBackup
FROM personas
WHERE nombre = 'ANTONIO'

Se puede utilizar SELECT INTO con JOIN

SELECT personas.nombre, personas.apellido1, departamentos.departamento


INTO personasInformatica
FROM personas INNER JOIN departamentos
ON personas.dep = 'INFORMATICA'

La sentencia CREATE DATABASE se utiliza para crear bases de datos.

Sintaxis CREATE DATABASE:

CREATE DATABASE nombreBaseDatos

Ejemplo CREATE DATABASE

CREATE DATABASE mibasededatos


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

Sintaxis CREATE TABLE

CREATE TABLE nombretabla


{
nombrecolumna1 tipodato1,
nombrecolumna2 tipodato2,
nombrecolumna3 tipodato3,
..
}

Ejemplo CREATE TABLE

CREATE TABLE personas


{
nombre varchar(255),
apellido1 varchar(255),
apellido2 varchar(255),
dep int
}

Esta sentencia creará la base de datos 'personas' con 4 columnas.

Las columnas 'nombre', 'apellido1' y 'apellido2' son de tipo 'varchar', es decir, acepta valores
alfanuméricos hasta una longitud máxima de 255 caracteres.

La columna 'dep' es de tipo 'int', es decir, acepta sólo números.

Existen diferentes tipos de datos, algunos son iguales en todas las bases de datos (MySQL,
ORACLE, DB2, ..) y otros pueden ser particulares para ser usados únicamente en alguna de estas
bases de datos.

Las CONSTRAINTS son restricciones que se utilizan para limitar el tipo de dato que puede recibir
una columna de una tabla.

Las restricciones se puede definir cuando creamos la tabla (CREATE TABLE) o posteriormente con
la sentencia ALTER TABLE.

Las posibles restricciones son:

 NOT NULL
 UNIQUE
 PRIMARY KEY
 FOREIGN KEY
 CHECK
 DEFAULT
La restricción NOT NULL sirve para especificar que una columna no acepta el valor NULL, es
decir, que esa columna siempre tiene que tener algún valor, no puede estar vacía.

Ejemplo SQL NULL

CREATE TABLE personas { nombre varchar(255) NOT NULL, apellido1 varchar(255) NOT
NULL, apellido2 varchar(255) }

Esta sentencia crea una tabla denominada 'personas', donde tenemos 3 columnas.

Las columnas 'nombre' y 'apellido' llevan NOT NULL, esto quiere decir que cualquier fila insertada
en esta tabla tiene que tener algún valor para las columnas 'nombre' y 'apellido1'.

La restricción UNIQUE identifica de manera única a cada fila de una tabla.

Puede haber varias restricciones UNIQUE en diferentes columnas de una tabla.

Existen varias formas diferentes de sintaxis según el sistema de base de datos utilizado:

Ejemplo SQL UNIQUE para la base de datos MySQL

CREATE TABLE personas


{
identificador int NOT NULL,
nombre varchar(255) NOT NULL,
apellido1 varchar(255) NOT NULL,
apellido2 varchar(255),
UNIQUE (identificador)
}

La sentencia anterior crea la tabla 'personas' con 4 columnas, donde la columna 'identifcador' tiene
un valor diferente para cada fila de la tabla.

Si intentamos insertar un fila con un identificador que ya exista, nos dará un error, y no nos dejará
insertarlo.

Ejemplo SQL UNIQUE para las bases de datos ORACLE, SQLSERVIR, ACCESS

CREATE TABLE personas


{
identificador int NOT NULL UNIQUE,
nombre varchar(255) NOT NULL,
apellido1 varchar(255) NOT NULL,
apellido2 varchar(255),
}

La restricción UNIQUE se puede añadir a una columna de una tabla, después de ser creada,
mediante la sentencia ALTER TABLE.
Sintaxis de UNIQUE ALTER TABLE

ALTER TABLE personas


ADD UNIQUE (identificador)

Crea una restricción UNIQUE (valor único en toda la tabla) para la columna 'identificador'.

Se puede crear también restricciones para varias columnas a la vez

ALTER TABLE peronas


ADD CONSTRAINT copersonas
UNIQUE (identificador, apellido1)

Para eliminar una restricción en la base de datos MySQL

ALTER TABLE personas


DROP INDEX copersonas

Para eliminar una restricción en ORACLE, SQLSERVER y ACCESS

ALTER TABLE personas


DROP CONSTRAINT copersonas

La clave primaria, PRIMARY KEY, identifica de manera única cada fila de una tabla.

La columna definida como clave primaria (PRIMARY KEY) debe ser UNIQUE (valor único) y NOT
NULL (no puede contener valores nulos).

Cada tabla sólo puede tener una clave primaria (PRIMARY KEY).

Ejemplo PRIMARY KEY , clave primaria en MySQL

CREATE TABLE personas { identificador int NOT NULL, nombre varchar(255) NOT NULL,
apellido1 varchar(255) NOT NULL, PRIMARY KEY (identificador) }

Ejemplo PRIMARY KEY , clave primaria en ORACLE, SQLSERVER, ACCESS

CREATE TABLE personas { identificador int NOT NULL PRIMARY KEY, nombre varchar(255)
NOT NULL, apellido1 varchar(255) NOT NULL, }

La clave primaria (PRIMARY KEY) puede estar compuesta por varias columnas, por ejemplo por
las columnas 'identificador' y 'nombre', entonces se define así:

CREATE TABLE personas { identificador int NOT NULL, nombre varchar(255) NOT NULL,
apellido1 varchar(255) NOT NULL, CONSTRAINT pers PRIMARY KEY (identificador, nombre)
}
La clave primaria también se puede definir después de haber creado la tabla, para eso utilizaremos
el comando ALTER TABLE

Ejemplo PRIMARY KEY con ALTER TABLE ALTER TABLE personas ADD PRIMARY KEY
(identificador)

Ejemplo PRIMARY KEY multiple ALTER TABLE ALTER TABLE personas CONSTRAINT pers
PRIMARY KEY (identificador, nombre)

La clave primaria, PRIMARY KEY, identifica de manera única cada fila de una tabla.

La columna definida como clave primaria (PRIMARY KEY) debe ser UNIQUE (valor único) y NOT
NULL (no puede contener valores nulos).

Cada tabla sólo puede tener una clave primaria (PRIMARY KEY).

Ejemplo PRIMARY KEY , clave primaria en MySQL

CREATE TABLE personas { identificador int NOT NULL, nombre varchar(255) NOT NULL,
apellido1 varchar(255) NOT NULL, PRIMARY KEY (identificador) }

Ejemplo PRIMARY KEY , clave primaria en ORACLE, SQLSERVER, ACCESS

CREATE TABLE personas { identificador int NOT NULL PRIMARY KEY, nombre varchar(255)
NOT NULL, apellido1 varchar(255) NOT NULL, }

La clave primaria (PRIMARY KEY) puede estar compuesta por varias columnas, por ejemplo por
las columnas 'identificador' y 'nombre', entonces se define así:

CREATE TABLE personas { identificador int NOT NULL, nombre varchar(255) NOT NULL,
apellido1 varchar(255) NOT NULL, CONSTRAINT pers PRIMARY KEY (identificador, nombre)
}

La clave primaria también se puede definir después de haber creado la tabla, para eso utilizaremos
el comando ALTER TABLE

Ejemplo PRIMARY KEY con ALTER TABLE ALTER TABLE personas ADD PRIMARY KEY
(identificador)

Ejemplo PRIMARY KEY multiple ALTER TABLE ALTER TABLE personas CONSTRAINT pers
PRIMARY KEY (identificador, nombre)Ç
La restricción CHECK se utiliza para limitar el rango de valores que puede tener una columna.

Se pueden definir varias restricciones CHECK en una tabla.

Ejemplo CHECK en MySQL

CREATE TABLE departamentos { dep int NOT NULL, departamento varchar(255), CHECK
(dep>0) }

Ejemplo CHECK en ORACLE, SQLSERVER y ACCESS:

CREATE TABLE departamentos { dep int NOT NULL CHECK (dep>0) departamento
varchar(255), }

Ejemplo CHECK en ALTER TABLE en MySQL

ALTER TABLE departamentos ADD CHECK (dep>0)

Ejemplo CHECK (con múltiples columnas) en ALTER TABLE en MySQL

ALTER TABLE personas ADD CHECK (per>0, edad>35)

Ejemplo CHECK en ALTER TABLE en ORACLE, SQLSERVER y ACCESS

ALTER TABLE departamentos ADD CONSTRAINT ckdepart CHECK (dep>0)

Ejemplo CHECK en ALTER TABLE con varias columnas

ALTER TABLE personas ADD CONSTRAINT ckpersona CHECK (pers>0, nombre='antonio')

La restricción DEFAULT se utiliza para establecer un valor por defecto a una columna.

Si no se especifica un valor al insertar una fila, entonces se podrá el valor por defecto (DEFAULT)
que tenga cada columna.

SQL DEFAULT en la sentencia CREATE TABLE

CREATE TABLE pedidos { idpedido int, producto int, cantidad int, fecha date DEFAULT
GETDATE() }

Si al crear un pedido, no especificamos el valor de la columna 'fecha', entonces para esa columna
se insertará por defecto obtenido de ejecutar la funcion GETDATE(), que devuelve la fecha del
sistema

En lugar de una función, podemos insertar una valor concreto '2001-01-01' o cualquier otro valor.
SQL DEFAULT en la sentencia ALTER TABLE para MySQL

ALTER TABLE pedidos ALTER fecha DEFAULT '2012-01-01'

SQL DEFAULT en la sentencia ALTER TABLE para ORACLE, SQLSERVER, ACCESS:

ALTER TABLE pedidos ALTER COLUMN fecha SET DEFAULT '2012-01-01'

Para borrar DEFAULT en MySQL

ALTER TABLE pedidos ALTER fecha DROP DEFAULT

Para borrar DEFAULT en ORACLE, SQLSERVER, ACCESS:

ALTER TABLE pedidos ALTER COLUMN fecha DROP DEFAULT

CREATE INDEX se utiliza para crear índices en una tabla.

Un índice sirve para buscar datos rápidamente, y no tener que recorrer toda la tabla
secuencialmente en busca alguna fila concreta.

Si una columna es índice de una tabla, al buscar por un valor de esa columna, iremos directamente
a la fila correspondiente. La búsqueda así es mucho más óptima en recursos y más rápida en
tiempo.

Si esa columna de búsqueda no fuese índice, entonces tendríamos que recorrer de forma
secuencial la tabla en busca de algún dato. Por eso, es importante crear un índice por cada tipo de
búsqueda que queramos hacer en la tabla.

Actualizar una tabla con índices tarda más tiempo porque también hay que actualizar los índices,
así que solo se deben poner índices en las columnas por las que buscamos frecuentemente.

Se pueden crear índices ÚNICOS, es decir, índices que no admiten valores duplicados.

Sintaxis para SQL CREATE INDEX

CREATE INDEX nombreindice


ON nombretabla (nombrecolumna)

La columna que forma parte de este índice admite valores duplicados en su columna.

Sintaxis para SQL CREATE UNIQUE INDEX

CREATE UNIQUE INDEX nombreindice


ON nombretabla (nombrecolumna)

La columna que forma parte de este índice NO admite valores duplicados en su columna, porque
es una clave única.
Ejemplos para SQL CREATE INDEX

Creamos la índice 'indicepersonas' sobre la columna 'persona' de la tabla 'personas'

CREATE INDEX indicepersonas


ON personas (persona)

Si queremos crear un índice sobre varias columnas, por ejemplo, apellido1 y apellido2

CREATE INDEX indice2personas


ON personas(apellido1, apellido2)

La sentencia DROP se utiliza para borrar definitivamente un índice, tabla o base de datos.

DROP INDEX

Sintaxis DROP INDEX para MySQL

ALTER TABLE nombretabla


DROP INDEX nombreindice

Sintaxis DROP INDEX para DB2 y ORACLE

DROP INDEX nombreindice

Sintaxis DROP INDEX para ACCESS

DROP INDEX nombreindice


ON nombretabla

Sintaxis DROP INDEX para SQLSERVER

DROP INDEX nombretabla.nombreindice

DROP TABLE

Se utiliza DROP TABLE para borrar definitivamente una tabla

DROP TABLE nombretabla

DROP DATABASE
Se utiliza para borrar una base de datos definitivamente.

DROP DATABASE nombrebasededatos

WW

S-ar putea să vă placă și