Tecnología_SQL.tutorial

149
TECNOLOGIA_SQL.TUTORIAL SQL es un lenguaje estándar para acceder y manipular bases de datos Base de datos Tablas Una base de datos más a menudo contiene una o más tablas. Cada tabla se identifica por un nombre (por ejemplo, "clientes" o “pedidos"). Las tablas contienen registros (filas) con los datos. A continuación se muestra un ejemplo de una tabla denominada “Personas": P_Id Apellido Nombre Dirección Ciudad 1 Salazar Longas Gustavo Diag. 89 B # 115A-03 Int 4 Apt 302 Bogotá 2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá 3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá La tabla anterior contiene tres discos (uno para cada persona) y cinco columnas (p_id, Apellido, Nombre, dirección, y la ciudad). Sentencias SQL La mayoría de las acciones que debe realizar en una base de datos se hace con las sentencias SQL. La siguiente instrucción SQL selecciona todos los registros de las "Personas" tabla: SELECT * FROM Clientes En este tutorial vamos a enseñarle todo acerca de las diferentes sentencias SQL. Tenga en cuenta que... SQL no es sensible a mayúsculas ________________________________________ ¿Punto y coma después de sentencias SQL? Algunos sistemas de bases de datos requieren un punto y coma 1

Transcript of Tecnología_SQL.tutorial

Page 1: Tecnología_SQL.tutorial

TECNOLOGIA_SQL.TUTORIAL

SQL es un lenguaje estándar para acceder y manipular bases de datos

Base de datos Tablas

Una base de datos más a menudo contiene una o más tablas. Cada tabla se identifica por un nombre (por

ejemplo, "clientes" o “pedidos"). Las tablas contienen registros (filas) con los datos.

A continuación se muestra un ejemplo de una tabla denominada “Personas":

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89 B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

La tabla anterior contiene tres discos (uno para cada persona) y cinco columnas (p_id, Apellido, Nombre,

dirección, y la ciudad).

Sentencias SQL

La mayoría de las acciones que debe realizar en una base de datos se hace con las sentencias SQL.

La siguiente instrucción SQL selecciona todos los registros de las "Personas" tabla:

SELECT * FROM Clientes

En este tutorial vamos a enseñarle todo acerca de las diferentes sentencias SQL.

Tenga en cuenta que...

• SQL no es sensible a mayúsculas

________________________________________

¿Punto y coma después de sentencias SQL?

Algunos sistemas de bases de datos requieren un punto y coma al final de cada sentencia SQL.

Punto y coma es la manera estándar para separar cada sentencia SQL en los sistemas de base de

datos que permiten más de una sentencia SQL que se ejecutan en la misma llamada al servidor.

Estamos usando MS Access y SQL Server 2000 y no tiene que poner un punto y coma después de

cada sentencia SQL, pero algunos programas de base de datos que obligan a usarlo.

________________________________________

SQL DML y DDL

SQL se pueden dividir en dos partes: El lenguaje de manipulación de datos (LMD) y el Data Definition

Language (DDL).

1

Page 2: Tecnología_SQL.tutorial

Los comandos de consulta y actualización forma parte LMD de SQL:

• SELECT - extractos de datos de una base de datos

• ACTUALIZACIÓN - actualiza los datos en una base de datos

• Eliminar - elimina los datos de una base de datos

• INSERT INTO - inserta nuevos datos en una base de datos

La parte DDL de SQL permite que las tablas de base de datos que se creen o eliminen. También

se definen los índices (llaves), especificar relaciones entre tablas, e imponer restricciones entre las tablas. Las

instrucciones DDL más importantes en SQL son:

• CREAR BASE DE DATOS - crea una nueva base de datos

• ALTER DATABASE - modifica una base de datos

• CREATE TABLE - Crea una nueva tabla

• ALTER TABLE - modifica una tabla

• DROP TABLE - Elimina una tabla

• CREATE INDEX - crea un índice (clave de búsqueda)

• DROP INDEX - Elimina un índice

SQL Instrucción SELECT

«Anterior

»Siguiente capítulo

________________________________________

En este capítulo se explicará el SELECT y las declaraciones SELECT *.

________________________________________

La instrucción SELECT de SQL

La instrucción SELECT se utiliza para seleccionar datos de una base de datos.

El resultado se almacena en una tabla de resultados, llamado el conjunto de resultados.

SELECT de SQL Sintaxis

SELECT columna_nombre(s)

FROM tabla_nombre

Y

SELECT * FROM tabla_nombre

Nota: SQL no distingue entre mayúsculas y minúsculas. SELECT es el mismo que seleccionar.

2

Page 3: Tecnología_SQL.tutorial

Un ejemplo SELECT de SQL

Las "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89 B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

4 Sánchez Kevin Car 59B # 80-80 Barranquilla

Ahora queremos seleccionar el contenido de las columnas denominadas "Apellido " y "Nombre" por encima de

la mesa.

Nosotros usamos la siguiente instrucción SELECT:

SELECT Apellidos, Nombre FROM Personas

El conjunto de resultados se verá así:

Apellido Nombre

Salazar Longas Gustavo

Muñoz Ramón Alfonso

Santacoloma Kelly Yaneth

Sánchez Kevin

3

Page 4: Tecnología_SQL.tutorial

SELECT * Ejemplo

Ahora queremos seleccionar todas las columnas de las "Personas" de tabla.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

Consejo: El asterisco (*) es una forma rápida de seleccionar ¡todas las columnas!

El conjunto de resultados se verá así:

P_Id Apellidos Nombres Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89 B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

4 Sánchez Kevin Car 59B # 80-80 Barranquilla

Navegación en un conjunto de resultados

La mayoría de los sistemas de software de bases de datos permiten la navegación en el conjunto de

resultados con las funciones de programación, tales como: Mudanza hasta el primer registro, Get-registro-de

contenido, movimiento al siguiente-Record, etc

Funciones de programación como estos no son parte de este tutorial. Para obtener información sobre cómo

acceder a los datos con llamadas a funciones, por favor visite nuestro ADO tutorial o nuestro tutorial de PHP.

SQL Instrucción SELECT DISTINCT

«Anterior

»Siguiente capítulo

________________________________________

En este capítulo se explicará la declaración SELECT DISTINCT.

________________________________________

La instrucción SQL SELECT DISTINCT

En una tabla, algunas de las columnas puede contener valores duplicados. Esto no es un problema, sin

embargo, a veces tendrá que lista sólo los diferentes (distintos) los valores de una tabla.

4

Page 5: Tecnología_SQL.tutorial

La palabra clave DISTINCT puede usarse para devolver sólodistintos (diferentes) los valores.

Sintaxis SQL SELECT DISTINCT

SELECT DISTINCT columna_nombre(s)

FROM tabla_nombre

SELECT DISTINCT Ejemplo

La tabla "Personas”:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89 B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

4 Sánchez Kevin Car 59B # 80-80 Barranquilla

Ahora queremos seleccionar sólo los valores distintos de la columna denominada "Ciudad" de la

tabla anterior.

Nosotros usamos la siguiente instrucción SELECT:

SELECT DISTINCT Ciudad FROM Personas

El conjunto de resultados se verá así:

Ciudad

Bogotá

Barranquilla

SQL Cláusula WHERE

«Anterior

»Siguiente capítulo

________________________________________5

Page 6: Tecnología_SQL.tutorial

La cláusula WHERE se utiliza para filtrar los registros.

________________________________________

La cláusula WHERE

La cláusula WHERE se utiliza para extraer sólo aquellos registros que cumplen el criterio especificado.

WHERE de SQL Sintaxis

SELECT columna_nombre(s)

FROM tabla_nombre

WHERE columna_nombre operator value

DONDE Ejemplo Cláusula

Las "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 #18-36 Bogotá

4 Sánchez Kevin Car 59B # 80-80 Barranquilla

Ahora queremos seleccionar sólo las personas que viven en la ciudad "Bogotá" de la tabla anterior.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

WHERE Ciudad='Bogotá'

El conjunto de resultados se verá así:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

6

Page 7: Tecnología_SQL.tutorial

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 16-36 Bogotá

Cotizaciones alrededor de los campos de texto

SQL utiliza comillas simples alrededor de los valores de texto (la mayoría de los sistemas de base de

datos también se aceptan comillas dobles).

Aunque, los valores numéricos no deben ir entre comillas.

Para valores de texto:

Este es correcto:

SELECT * FROM Personas WHERE Nombre='Gustavo'

Este es incorrecto:

SELECT * FROM Personas WHERE Nombre=Gustavo

Para los valores numéricos:

Este es correcto:

SELECT * FROM Persons WHERE Year=1965

Este es incorrecto:

SELECT * FROM Personas WHERE Año='1965'

7

Page 8: Tecnología_SQL.tutorial

Las empresas están autorizadas en la cláusula WHERE

Con la cláusula WHERE, los operadores pueden utilizar los siguientes

Operador Descripción

= Igual

<> No es igual

> Mayor que

< Menos de

>= Mayor o igual

<= Menor o igual

BETWEEN Entre un rango inclusivo

LIKE Buscar un patrón

IN Si conoce el valor exacto que desea a cambio de al menos una de las columnas

Nota: En algunas versiones de SQL el operador> <se puede escribir como =!

«Anterior

»Siguiente capítulo

SQL AND & OR Operadores

«Anterior

»Siguiente capítulo

________________________________________

Los operadores Y y O se usan para filtrar los registros basados en más de una condición.

________________________________________

La AND & OR Operadores

8

Page 9: Tecnología_SQL.tutorial

El operador AND muestra un registro si tanto la condición primera y la segunda condición es verdadera.

La muestra del operador o un registro, si bien la primera condición o la segunda condición son verdaderas.

________________________________________

Y Operador Ejemplo

Las "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

Ahora queremos seleccionar sólo las personas con el nombre igual a "Gustavo" Y el apellido igual a "Salazar

Longas":

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

WHERE Nombre='Gustavo'

AND Apellido='Salazar Longas'

El conjunto de resultados se verá así:

P_Id Apellido Nombre Dirección Ciudad

2 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

O el ejemplo de operador

Ahora queremos seleccionar sólo las personas con el nombre igual a "Tove" O el nombre igual a "Ola":

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

WHERE Nombres='Gustavo'

OR Nombres='Ramón Alfonso'

El conjunto de resultados se verá así:

9

Page 10: Tecnología_SQL.tutorial

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

La combinación de AND & OR

También se pueden combinar (entre paréntesis el uso para formar expresiones complejas) AND y OR.

Ahora queremos seleccionar sólo las personas con el apellido igual a "Muñoz" Y el primer nombre igual

a "Ramón Alfonso" o "Gustavo":

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Persons WHERE

Apellido='Muñoz'

AND (Nombre='Ramón Alfonso' OR Nombre='Gustavo')

El conjunto de resultados se verá así:

P_Id Apellido Nombre Direccion Ciudad

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

SQL ORDER BY palabra clave

«Anterior

»Siguiente capítulo

________________________________________

La palabra clave ORDER BY se utiliza para ordenar el conjunto de resultados.

________________________________________

La palabra clave ORDER BY

La palabra clave ORDER BY se utiliza para ordenar el conjunto de resultados de una columna especificada.

La palabra clave ORDER BY ordenar los registros en orden ascendente de forma predeterminada.

Si desea ordenar los registros en un orden descendente, puede utilizar la palabra clave DESC.

SQL ORDER BY Sintaxis

SQL ORDER BY Syntax

SELECT columna_nombre(s)

FROM tabla_nombre

10

Page 11: Tecnología_SQL.tutorial

ORDER BY columna_nombre(s) ASC|DESC

ORDER BY Ejemplo

La Tabla "Personas":

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

4 Sánchez Kevin Car 59B#80-80 Barranquilla

Ahora queremos seleccionar todas las personas por encima de la mesa, sin embargo, queremos ordenar a las

personas por su apellido.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

ORDER BY Nombres

El conjunto de resultados se verá así:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

4 Sánchez Kevin Car 59B # 80-80 Barranquilla

3 Santacoloma Kelly Yaneth Calle 85 # 1836 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

11

Page 12: Tecnología_SQL.tutorial

Nosotros usamos la siguiente instrucción SELECT:

Ejemplo ORDER BY DESC

Ahora queremos seleccionar todas las personas por encima de la mesa, sin embargo, queremos ordenar a las

personas descendentes por su apellido.

SELECT * FROM Personas

ORDER BY Apellido DESC

El conjunto de resultados se verá así:

P_Id Apellido Nombre Dirección Ciudad

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

4 Sánchez Kevin Car 59B#80-80 Barranquilla

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

«Anterior

»Siguiente capítulo

________________________________________

Su navegador no admite marcos en línea ni se configura actualmente para no exhibir marcos en línea.

________________________________________

SQL INSERT INTO

«Anterior

»Siguiente capítulo

________________________________________

La instrucción INSERT INTO se utiliza para insertar nuevos registros en una tabla.

________________________________________

INSERT INTO

12

Page 13: Tecnología_SQL.tutorial

La instrucción INSERT INTO se utiliza para insertar una nueva fila en una tabla.

SQL INSERT INTO Sintaxis

Es posible escribir la instrucción INSERT INTO en dos formas.

La primera forma no especifica los nombres de columna, donde los datos se insertan, sólo sus valores:

INSERT INTO tabla_nombre

VALUES (valor1, valor2, valor3,...)

The second form specifies both the column names and the values to be inserted:

INSERT INTO tabla_nombre (column1, column2, column3,...)

VALUES (valor1, valor2, valor3,...)

SQL INSERT INTO Ejemplo

Tenemos los siguientes "Personas" tabla:

P_Id Apellido Nombre Direccion Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

Ahora queremos insertar una nueva fila en la sección tabla de "Personas".

Nosotros usamos la siguiente instrucción SQL:

INSERT INTO Personas

VALUES (4,'Sánchez', 'Kevin', ' Car 59B # 80-80', 'Barranquilla')

La Tabla "Personas" ahora se verá así:

P_Id Apellido Nombre Dirección Ciudad

13

Page 14: Tecnología_SQL.tutorial

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 102-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

4 Sánchez Kevin Car 59B#80-80 Barranquilla

Insertar datos sólo en las columnas especificadas

También es posible añadir sólo los datos en columnas específicas.

La siguiente instrucción SQL se añade una nueva fila, pero sólo agregar datos en el "p_id", "Apellido" y las

columnas "Nombre":

INSERT INTO Personas (P_Id, Apellido, Nombre)

VALUES (5, 'Tjessem', 'Jakob')

La Tabla "Personas"  ahora se verán así:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

4 Sánchez Kevin Car 59B # 80-80 Barranquilla

5 Tjessem Jakob    

14

Page 15: Tecnología_SQL.tutorial

SQL UPDATE Declaración de

«Anterior

»Siguiente capítulo

________________________________________

La instrucción UPDATE se utiliza para actualizar los registros en una tabla.

________________________________________

La instrucción UPDATE

La instrucción UPDATE se utiliza para actualizar los registros existentes en una tabla.

SQL UPDATE Syntax

UPDATE tabla_nombre

SET column1=valor, column2=value2,...

WHERE algunas_columnas =algún_valor

Nota: Observe la cláusula WHERE en la sintaxis UPDATE. La cláusula WHERE especifica

el registro o registros que deben actualizarse. Si se omite la cláusula WHERE, todos los registros

serán actualizados!

SQL UPDATE Ejemplo

La tabla "Personas":

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 18-36 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

4 Sánchez Kevin Car 59B # 80-80 Barranquilla

15

Page 16: Tecnología_SQL.tutorial

5 Tjessem Jakob    

Ahora queremos poner al día la persona "Tjessem, Jakob" en las "Personas" de mesa.

Nosotros usamos la siguiente instrucción SQL:

UPDATE Personas

SET Dirección='Nissestien 67', Ciudad='Sandnes'

WHERE Apellidos='Tjessem' AND Nombres='Jakob'

The "Personas" la Tabla ahora se verá así:

P_Id Apellidos Nombres Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

4 Sánchez Kevin Car 59B # 80-80 Barranquilla

5 Tjessem Jakob Nissestien 67 Sandnes

Advertencia de actualización de SQL

Tenga cuidado al actualizar los registros. Si se había omitido la cláusula WHERE en el ejemplo anterior, así:

UPDATE Personas

SET Direcciones='Nissestien 67', Ciudad='Sandnes'

16

Page 17: Tecnología_SQL.tutorial

The "Persons" table would have looked like this:

P_Id Apellido Nombre Dirección Ciudad

1 Hansen Ola Nissestien 67 Sandnes

2 Svendson Tove Nissestien 67 Sandnes

3 Pettersen Kari Nissestien 67 Sandnes

4 Nilsen Johan Nissestien 67 Sandnes

5 Tjessem Jakob Nissestien 67 Sandnes

« Anterior Next Captar »

SQL DELETE Statement

« Previos Next Captar »

La sentencia DELETE se utiliza para eliminar registros en una tabla.

La instrucción DELETE

La sentencia DELETE se utiliza para eliminar filas de una tabla.

SQL DELETE Syntax

DELETE FROM tabla_nombre

WHERE algunas columnas = algún_valor

Nota: Observe la cláusula WHERE en la sintaxis de DELETE. La cláusula WHERE especifica

el registro o registros que se deben eliminar. Si se omite la cláusula WHERE, todos los registros serán

borrados!

17

Page 18: Tecnología_SQL.tutorial

SQL DELETE Ejemplo

Las "Personas" tabla:

P_Id Apellidos Nombres Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 102-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

4 Sánchez Kevin Car 59B # 80-80 Barranquilla

5 Tjessem Jakob Nissestien 67 Sandnes

Ahora queremos eliminar la persona "Sánchez, Kevin" en las "Personas" de mesa.

Nosotros usamos la siguiente instrucción SQL:

DELETE FROM Personas

WHERE Apellidos='Kevin' y Nombres='Kevin'

La Tabla "Personas” Ahora se verá así:

P_Id Apellidos Nombres Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

4 Sánchez Kevin Car 59B # 80-80 Barranquilla

18

Page 19: Tecnología_SQL.tutorial

Eliminar todas las filas

Es posible eliminar todas las filas de una tabla sin borrar la tabla. Esto significa que la estructura de la

tabla, los atributos, y los índices se intacta:

DELETE FROM tabla_nombre

or

DELETE * FROM tabla_nombre

Nota: Tenga mucho cuidado al eliminar registros. No se puede deshacer esta declaración!

«Anterior

»Siguiente Capítulo

SQL ¡Inténtelo!...

«Anterior

»Siguiente capítulo

________________________________________

Pon a prueba tus habilidades de SQL

En esta página usted puede probar sus conocimientos de SQL.

Usaremos la tabla Clientes de la base de datos Northwind:

ColombianSystens NombreContacto Dirección Ciudad

Alfredo Futterkiste  María Anders  Obere Str. 57  Berlín Alemania

Gustavo Salazar Longas [email protected] Carrera 7 #115-33

Oficina 603

Bogotá,

Colombia

Ramón Alfonso Muñoz [email protected]

m

Carrera 7 #115-33

Oficina 603

Bogotá,

Colombia

19

Page 20: Tecnología_SQL.tutorial

Kelly Yaneth

Santacoloma

[email protected]

m

Carrera 7 #115-33

Oficina 603

Bogotá,

Colombia

Kevin Sánchez [email protected]

m

Carrera 7 #115-33

Oficina 603

Bogotá,

Colombia

Centro comercial

Moctezuma 

Francisco Chang  Sierras de Granada

9993 

México D.F. 

  Roland Mendel  Kirchgasse 6  Graz 

FISSA Fabrica Inter.

Salchichas S.A. 

Diego Roel  C/ Moralzarzal, 86  Madrid 

Galería del gastrónomo  Eduardo Saavedra  Rambla de

Cataluña, 23 

Barcelona 

Island Trading  Helen Bennett  Garden House

Crowther Way 

Cowes 

Königlich Essen  Philip Cramer  Maubelstr. 90  Brandenburg 

Laughing Bacchus Wine

Cellars 

Yoshi Tannamuri  1900 Oak St.  Vancouver 

Magazzini Alimentari

Riuniti 

Giovanni Rovelli  Via Ludovico il

Moro 22 

Bergamo 

North/South  Simon Crowther  South House 300

Queensbridge 

London 

Paris spécialités  Marie Bertrand  265, boulevard

Charonne 

Paris 

Rattlesnake Canyon

Grocery 

Paula Wilson  2817 Milton Dr.  Albuquerque 

Simons bistro  Jytte Petersen  Vinbæltet 34  København 

The Big Cheese  Liz Nixon  89 Jefferson Way

Suite 2 

Portland 

Vaffeljernet  Palle Ibsen  Smagsløget 45  Århus 

Wolski Zajazd  Zbyszek Piestrzeniewicz  ul. Filtrowa 68  Warszawa 

Para preservar el espacio, la tabla de arriba es un subconjunto de la tabla Clientes utilizado en el ejemplo

siguiente.

20

Page 21: Tecnología_SQL.tutorial

Inténtelo usted mismo

Para ver cómo funciona SQL, puede copiar las instrucciones SQL a continuación y pegarlo en el área de

texto, o usted puede hacer sus propias declaraciones SQL.

SELECT * FROM clientes

SELECT colombianSystens, NombreContacto FROM clientes

SELECT * FROM clientes WHERE colombianSystens LIKE 'a%'

SELECT ColombianSystens, NombreContacto

FROM clientes

WHERE NombreContacto > 'a'

Cuando se utiliza SQL en datos de texto, "Alfredo" es mayor que la "a" (como en un diccionario).

SELECT ColombianSystens, NombreContacto

FROM clientes

WHERE ColombianSystens > 'g'

AND NombreContacto > 'g'

Música de fondo para trabajar con la base de datos SQL

Juan Gabriel - Costumbres - viña 2002

Este archivo es una Traduccion del Inglés al español

21

Page 22: Tecnología_SQL.tutorial

SQL TOP Cláusula

«Anterior

»Siguiente capítulo

________________________________________

La cláusula TOP

La cláusula TOP se utiliza para especificar el número de registros para volver.

La cláusula TOP puede ser muy útil en tablas grandes con milesde registros. Devolución de

un gran número de registros pueden tener un impacto en el rendimiento.

Nota: No todos los sistemas de bases de apoyo a la cláusulaTOP.

Sintaxis SQL Servidor

SELECT TOP número|porcentaje columna_nombre(s)

FROM tabla_nombre

SQL SELECT TOP equivalente en MySQL y Oracle

MySQL Syntax

SELECT columna_nombre(s)

FROM tabla_nombre

LIMIT número

Ejemplo

SELECT *

FROM Personas

LIMIT 5

Oracle Syntax

SELECT columna_nombre(s)

FROM tabla_nombre

22

Page 23: Tecnología_SQL.tutorial

WHERE ROWNUM <= número

Example

SELECT *

FROM Personas

WHERE ROWNUM <=5

SQL TOP Ejemplo

La tabla "Personas":

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

4 Sanchez Kevin Car 59B # 80-80 Barranquilla

Ahora queremos seleccionar sólo los dos primeros registros en la tabla anterior.

Nosotros usamos la siguiente instrucción SELECT:

SELECT TOP 2 * FROM Personas

El conjunto de resultados se verá así:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

23

Page 24: Tecnología_SQL.tutorial

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

SQL TOP PERCENT Ejemplo

La tabla "Personas":

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

4 Sanchez Kevin Car 59B # 80-80 Barranquilla

Ahora queremos seleccionar sólo el 50% de los registros en la tabla anterior.

Nosotros usamos la siguiente instrucción SELECT:

SELECT TOP 50 PERCENT * FROM Personas

El conjunto de resultados quedará así:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

24

Page 25: Tecnología_SQL.tutorial

SQL LIKE Operador

«Anterior

»Siguiente capítulo

________________________________________

El operador LIKE se utiliza en una cláusula WHERE a labúsqueda de un patrón específico en una columna.

________________________________________

El operador LIKE

El operador LIKE se utiliza para buscar un patrón específico en una columna.

SQL LIKE Syntax

SELECT columna_nombre(s)

FROM tabla_nombre

WHERE columna_nombre LIKE patrón

LIKE Operador Ejemplo

La tabla "Personas":

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

Ahora queremos seleccionar las personas que viven en una ciudad que empieza con "B" de la tabla anterior.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

25

Page 26: Tecnología_SQL.tutorial

WHERE Ciudad LIKE 'B%'

El signo "%" se puede utilizar para definir comodines (letras que faltan en el patrón), tanto antes

como después de que el patrón.

El conjunto de resultados se verá así:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

4 Sanchez Kevin Car 59B # 80-80 Barranquilla

A continuación, queremos seleccionar las personas que viven en una ciudad que termina con una "s" de las

"Personas" de mesa.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

WHERE Ciudad LIKE '%a'

El conjunto de resultados se verá así:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

26

Page 27: Tecnología_SQL.tutorial

4 Sanchez Kevin Car 59B # 80-80 Barranquilla

A continuación, queremos seleccionar las personas que viven en una ciudad que contiene el

patrón "arr" de las "Personas" de mesa.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

WHERE Ciudad LIKE '%arr%'

El conjunto de resultados se verá así:

P_Id Apellido Nombre Dirección Ciudad

4 Sanchez Kevin Car 59B # 80-80 Barranquilla

También es posible seleccionar las personas que viven en una ciudad que no contiene el patrón "tav" de las

"Personas" de mesa, utilizando la palabra clave NO.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

WHERE Ciudad NOT LIKE '%arr%'

El conjunto de resultados se verá así:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

27

Page 28: Tecnología_SQL.tutorial

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

«Anterior

»Siguiente capítulo

SQL comodines

«Anterior

»Siguiente capítulo

________________________________________

Comodines SQL se puede utilizar en la búsqueda de datos en una base de datos.

________________________________________

SQL comodines

Comodines SQL puede sustituir a uno o más caracteres en la búsqueda de datos en una base de datos.

Comodines SQL debe ser utilizado con el operador LIKE de SQL.

Con SQL, los comodines pueden utilizar los siguientes:

Comodín Descripción

% Un sustituto de cero o más caracteres

_ Un sustituto para exactamente un carácter

[charlist] Cualquier carácter individual en charlist

[^charlist]

o

[!charlist]

Cualquier carácter no solo en charlist

SQL Ejemplos comodín

Tenemos los siguientes "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

28

Page 29: Tecnología_SQL.tutorial

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

Usando el comodín%

Ahora queremos seleccionar las personas que viven en una ciudad que empieza con "sa" de las

"Personas" de mesa.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

WHERE Ciudad LIKE 'bo%'

El conjunto de resultados se verá así:

Tenemos los siguientes "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

A continuación, queremos seleccionar las personas que viven en una ciudad que contiene el patrón

de "lla" de las "Personas “de tabla.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

WHERE Ciudad LIKE '%lla%'

El conjunto de resultados se verá así:

29

Page 30: Tecnología_SQL.tutorial

P_Id Apellido Nombre Dirección Ciudad

4 Sanchez Kevin Car 59B # 80-80 Barranquilla

Usando el comodín _

Ahora queremos seleccionar a las personas con un nombre que comience con cualquier carácter, seguido por

"us" con las "Personas" de tabla.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

WHERE Apellido LIKE '_us'

El conjunto de resultados se verá así:

Tenemos los siguientes "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

A continuación, queremos seleccionar las personas con un apellido que comienza con "S", seguida de

cualquier carácter, seguido de "final", seguida de cualquier carácter, seguido por “a" de las "Personas" de la

tabla.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

WHERE Apellido LIKE 'S_ final _ar'

El conjunto de resultados se verá así:

Tenemos los siguientes "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115A-03 Int 4 Apt 302 Bogotá

30

Page 31: Tecnología_SQL.tutorial

Uso de la [charlist] comodín

Ahora queremos seleccionar a las personas con un apellido que comienza con "b " o "s "o "p" de las

"Personas" de la tabla.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

WHERE Apellido LIKE '[muñ]%'

El conjunto de resultados se verá así:

Tenemos los siguientes "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

A continuación, queremos seleccionar las personas con un apellido que no comienzan con "s " o "f

"o "z" de las "Personas “de la tabla.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

WHERE Apellido LIKE '[!sfz]%'

El conjunto de resultados se verá así:

El conjunto de resultados se verá así:

Tenemos los siguientes "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

31

Page 32: Tecnología_SQL.tutorial

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

SQL IN Operador

«Anterior

»Siguiente capítulo

________________________________________

El operador IN

El operador IN le permite especificar varios valores en una cláusula WHERE.

SQL IN Syntax

SELECT columna_nombre(s)

FROM tabla_nombre

WHERE columna_nombre IN (valor1, valor2,...)

IN Operator Ejemplo

La tabla "Personas":

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

32

Page 33: Tecnología_SQL.tutorial

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

Ahora queremos seleccionar a las personas con un apellido igual a "Salazar

Longas" o "Santacoloma" de la tabla anterior.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

WHERE Apellido IN ('Salazar Longas','Santacoloma')

El conjunto de resultados se verá así:

La tabla "Personas":

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

«Anterior

»Siguiente capítulo

SQL BETWEEN Operador

«Anterior

»Siguiente capítulo

________________________________________

El operador BETWEEN se utiliza en una cláusula WHERE para seleccionar un rango de datos entre dos

valores.

________________________________________

33

Page 34: Tecnología_SQL.tutorial

The BETWEEN Operador

El operador ENTRE selecciona un rango de datos entre dos valores. Los valores pueden ser números,

texto o fechas.

SQL BETWEEN Syntax

SELECT columna_nombre(s)

FROM tabla_nombre

WHERE columna_nombre

BETWEEN valor1 AND valor2

BETWEEN Operador Ejemplo

La tabla "Personas":

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

Ahora queremos seleccionar a las personas con un apellido alfabéticamente entre "Alazar

Longas" y "Santacoloma" de la tabla anterior.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Personas

WHERE Apellido

34

Page 35: Tecnología_SQL.tutorial

BETWEEN 'Salazar Longas' AND 'Santacoloma'

El resultado quedará así:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

Nota: El operador BETWEEN es tratado de manera diferente en diferentes bases de datos.

En algunas bases de datos, las personas con el apellido de “Salazar

Longas" o "Santacoloma" no aparecerán, porque el operador ENTRE sólo selecciona los campos que

se encuentran entre los valores y la exclusión de la prueba).

«Anterior

»Siguiente capítulo

SQL Alias

«Anterior

»Siguiente capítulo

________________________________________

Con SQL, un nombre de alias se puede dar a una tabla o una columna.

________________________________________

SQL Alias

Usted puede dar a una tabla o una columna de otro nombre utilizando un alias. Esto puede ser una buena

cosa a hacer si tiene los nombres de tablas muy largas o complejas, o nombres de columna.

Un nombre de alias puede ser cualquier cosa, pero por lo general es corta.

Alias sintaxis SQL para las tablas

SELECT columna_nombre(s)

FROM tabla_nombre

AS alias_nombre

35

Page 36: Tecnología_SQL.tutorial

SQL Alias Syntax for Columns

SELECT columna_nombre AS alias_nombre

FROM tabla_nombre

Ejemplo de alias

Supongamos que tenemos una tabla llamada "Personas" y otra tabla denominada "Producto_Orden".

Daremos la tabla alias de "p" y "po", respectivamente.

Ahora queremos una lista de todos los pedidos que "Gustavo Salazar Longas" es responsable.

Nosotros usamos la siguiente instrucción SELECT:

SELECT po.OrdenID, p.Apellido, p.Nombre

FROM Personas AS p,

Producto_Orden AS po

WHERE p.Apellido='Hansen' AND p.Nombre='Gustavo'

La misma declaración SELECT sin alias:

SELECT Producto_Orden.OrdenID, Personas.Apellido, Personas.Nombre

FROM Personas,

Producto_Orden

WHERE Personas.Apellido='Salazar Longas' AND Personas.Nombre='Gustavo'

Como podrá ver en las dos instrucciones SELECT anterior; alias pueden realizar consultas más fáciles tanto

para escribir y leer.

«Anterior

»Siguiente capítulo

SQL se une a

«Anterior

36

Page 37: Tecnología_SQL.tutorial

»Siguiente capítulo

________________________________________

SQL une se utilizan para consultar los datos de dos o más mesas, sobre la base de una relación entre ciertas

columnas en estas tablas.

________________________________________

SQL JOIN

La palabra clave JOIN se utiliza en una sentencia SQL para consultar datos de dos o más tablas, sobre la

base de una relación entre ciertas columnas en estas tablas.

Las tablas de una base de datos a menudo está relacionado el uno al otro con las teclas.

Una clave principal es una columna (o una combinación de columnas) con un valor único para cada fila. Cada

valor de clave principal debe ser único dentro de la tabla. El propósito es enlazar los datos en conjunto, a

través de tablas, sin repetir todos los datos en cada tabla. Miran las "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

Tenga en cuenta que el "p_id" columna es la clave principal de las "Personas" de mesa. Esto significa que no

hay dos filas pueden tener el mismo p_id. El p_id distingue dos personas aunque tengan el mismo nombre.

A continuación, tenemos el "Reglamento" tabla:

O_Id OrdenNo P_Id

1 77895 3

2 44678 3

3 22456 1

4 24562 1

5 34764 15

Tenga en cuenta que el "O_Id" columna es la clave principal en la tabla "orden" y que "p_id" columna se

refiere a las personasen las "Personas" tabla sin usar sus nombres.37

Page 38: Tecnología_SQL.tutorial

Tenga en cuenta que la relación entre los dos cuadros anteriores es el "p_id" columna.

________________________________________

Diferentes SQL JOIN

Antes de continuar con ejemplos, vamos a enumerar los tipos de JOIN puede utilizar, y las

diferencias entre ellos.

Volver filas cuando hay al menos un partido en ambas tablas: •UNIRSE

• LEFT JOIN: Devolver todas las filas de la tabla de la izquierda, incluso si no hay coincidencias en la tabla de

la derecha

• RIGHT JOIN: Devolver todas las filas de la tabla de la derecha, incluso si no hay coincidencias en la tabla de

la izquierda

• FULL JOIN: Volver filas cuando hay un partido en una de las mesas

«Anterior

»Siguiente capítulo

SQL INNER JOIN palabra clave

SQL INNER JOIN Syntax

SELECT columna_nombre(s)

FROM tabla_nombre1

INNER JOIN tabla_nombre2

ON tabla_nombre1.columna_nombre=tabla_nombre2.columna_nombre

PD: INNER JOIN es la misma que JOIN.

SQL INNER JOIN Ejemplo

La tabla "Personas":

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

38

Page 39: Tecnología_SQL.tutorial

P_Id LastName FirstName Address City

1 Hansen Ola Timoteivn 10 Sandnes

2 Svendson Tove Borgvn 23 Sandnes

3 Pettersen Kari Storgt 20 Stavanger

The "Orders" table:

O_Id OrderNo P_Id

1 77895 3

2 44678 3

3 22456 1

4 24562 1

5 34764 15

Ahora queremos una lista de todas las personas con todos los pedidos.

Nosotros usamos la siguiente instrucción SELECT:

SELECT Personas.Apellido, Personas.Nombre, Orden.OrdenNo

FROM Personas

INNER JOIN Orden

ON Personas.P_Id=Orden.P_Id

39

Page 40: Tecnología_SQL.tutorial

ORDER BY Personas.Apellido

El conjunto de resultados se verá así:

Apellido Nombre OrdenNo

Salazar Longas Gustavo 22456

Salazar Longas Gustavo 24562

Santacoloma Kelly Yaneth 77895

Santacoloma Kelly Yaneth 44678

La palabra clave INNER JOIN devuelve filas cuando hay al menos un partido en

ambas tablas. Si hay filas de "personas “que no tienen coincidencias en "Pedidos ", las filas no se mostrará.

«Anterior

»Siguiente capítulo

SQL LEFT JOIN palabra clave

«Anterior

»Siguiente capítulo

________________________________________

SQL LEFT JOIN palabra clave

El LEFT JOIN devuelve palabra clave todas las filas de la tabla de la

izquierda (tabla_nombre1), incluso si no hay coincidencias en la tabla a la derecha (tabla_nombre2).

SQL LEFT JOIN Syntax

SELECT columna_nombre(s)

FROM tabla_nombre1

LEFT JOIN tabla_nombre2

40

Page 41: Tecnología_SQL.tutorial

ON tabla_nombre1.columna_nombre=tabla_nombre2.columna_nombre

PD: En algunas bases de datos LEFT JOIN se llama combinación externa izquierda.

SQL LEFT JOIN Ejemplo

La tabla "Personas":

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

La tabla "Orden":

O_Id OrdenNo P_Id

1 77895 3

2 44678 3

3 22456 1

4 24562 1

5 34764 15

41

Page 42: Tecnología_SQL.tutorial

Ahora queremos una lista de todas las personas y sus órdenes -si las hubiere, de los cuadros anteriores.

Nosotros usamos la siguiente instrucción SELECT:

SELECT Personas.Apellido, Personas.Nombre, Orden.OrdenNo

FROM Personas

LEFT JOIN Orden

ON Personas.P_Id=Orden.P_Id

ORDER BY Personas.Apellido

El conjunto de resultados se verá así:

Apellido Nombre OrdenNo

Salazar Longas Gustavo 22456

Salazar Longas Gustavo 24562

Santacoloma Kelly Yaneth 77895

Santacoloma Kelly Yaneth 44678

Muñoz Ramón Alfonso

The LEFT JOIN keyword returns all the rows from the left table (Persons), even if there are no matches in the

right table (Orders).

«Anterior

SQL RIGHT JOIN palabra clave

42

Page 43: Tecnología_SQL.tutorial

«Anterior

»Siguiente capítulo

________________________________________

SQL RIGHT JOIN palabra clave

El RIGHT JOIN Volver palabra clave todas las filas de la tabla de la

derecha (table_name2), incluso si no hay coincidencias en la tabla a la izquierda (table_name1).

SQL RIGHT JOIN Syntax

SELECT columna_nombre(s)

FROM tabla_nombre1

RIGHT JOIN tabla_nambre2

ON tabla_nombre1.columna_nombre=tabla_nombre2.columna_nombre

PD: En algunas bases de datos se llama RIGHT JOIN RIGHT OUTER JOIN.

________________________________________

SQL RIGHT JOIN Ejemplo

Las "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

La tabla "Orden":

O_Id OrdenNo P_Id

1 77895 3

2 44678 3

3 22456 1

43

Page 44: Tecnología_SQL.tutorial

4 24562 1

5 34764 15

Ahora queremos una lista de todos los órdenes con que contengan personas - si los hubiere, de los cuadros

anteriores.

Nosotros usamos la siguiente instrucción SELECT:

SELECT Personas.Apellido, Personas.Nombre, Orden.OrdenNo

FROM Personas

RIGHT JOIN Orden

ON Personas.P_Id=Orden.P_Id

ORDER BY Personas.Apellido

El conjunto de resultados se verá así:

Apellido Nombre OrdenNo

Salazar Longas Gustavo 22456

Salazar Longas Gustavo 24562

Santacoloma Kelly Yaneth 77895

Santacoloma Kelly Yaneth 44678

Muñoz Ramón Alfonso

34764

La palabra clave FULL JOIN devuelve todas las filas de la tabla de la izquierda (personas), y todas las

filas de la tabla de la derecha (Reglamento). Si hay filas de "personas" que no tienen coincidencias

en "Pedidos ", o si hay filas de "órdenes" que no tienen coincidencias en "Personas", las filas se enumeran

también.

44

Page 45: Tecnología_SQL.tutorial

«Anterior

»Siguiente capítulo

________________________________________

SQL operador UNION

«Anterior

»Siguiente capítulo

________________________________________

El operador UNION SQL combina dos o más instrucciones SELECT.

________________________________________

El operador UNION SQL

El operador UNION se usa para combinar el conjunto de resultados de dos o más instrucciones SELECT.

Observe que cada instrucción SELECT dentro de la Unión debe tener el mismo

número de columnas. Las columnas también deben tener tipos de datos similares. Además, las

columnas encada instrucción SELECT debe estar en el mismo orden.

SQL UNION Syntax

SELECT columna_nombre(s) FROM tabla_nombre1

UNION

SELECT columna_nambre(s) FROM tabla_nombre2

Nota: El operador UNION sólo selecciona valores distintos de forma predeterminada. Para permitir que los

valores duplicados, utilice UNION ALL.

SQL UNION ALL Syntax

SELECT columna_nombre(s) FROM tabla_nombre1

UNION ALL

SELECT columna_nombre(s) FROM tabla_nombre2

PD: Los nombres de columna en el conjunto de resultados de una UNION son siempre iguales a los

nombres de columna en la primera instrucción SELECT de la UNION.

________________________________________

45

Page 46: Tecnología_SQL.tutorial

SQL Ejemplo UNIÓN

Busque en las siguientes tablas:

“Empleados_Noruega ":

"Employees_Norway":

E_ID E_Nombre

01 Salazar Longas, Gustavo

02 Muñoz, Ramón Alfonso

03 Svendson, Stephen

04 Santacoloma, Kelly Yaneth

"Empleados_USA":

E_ID E_Nombre

01 Turner, Sally

02 Kent, Clark

03 Svendson, Stephen

04 Scott, Stephen

Ahora queremos una lista de todos los empleados diferentes en Noruega y EE.UU..

Nosotros usamos la siguiente instrucción SELECT:

SELECT E_Nombre FROM Empleados_Noruega

UNION

SELECT E_Nombre FROM Empleados_USA

46

Page 47: Tecnología_SQL.tutorial

El conjunto de resultados se verá así:

E_Nombre

Salazar Longas, Gustavo

Muñoz, Ramón Alfonso

Svendson, Stephen

Santacoloma, Kelly Yaneth

Turner, Sally

Kent, Clark

Scott, Stephen

Nota: Este comando no se puede utilizar a la lista de todos los empleados en Noruega y EE.UU.. En el

ejemplo anteriortenemos dos empleados con nombres iguales, y sólo uno deellos en la

lista. El comando UNION sólo selecciona valores distintos.

SQL UNION ALL Ejemplo

Ahora queremos una lista de todos los empleados en Noruega y EE.UU.:

SELECT E_Nombre FROM Empleados_Noruega

UNION ALL

SELECT E_Nombre FROM Empleados_USA

Resultado

E_Nombre

47

Page 48: Tecnología_SQL.tutorial

Salazar Longas, Gustavo

Muñoz, Ramón Alfonso

Svendson, Stephen

Santacoloma, Kelly Yaneth

Turner, Sally

Kent, Clark

Svendson, Stephen

Scott, Stephen

«Anterior

»Siguiente capítulo

SQL SELECT INTO

«Anterior

»Siguiente capítulo

________________________________________

El SQL SELECT INTO se puede utilizar para crear copias de seguridad de las tablas.

________________________________________

El SQL SELECT INTO

La instrucción SELECT INTO selecciona datos de una tabla y lo inserta en una tabla diferente.

La instrucción SELECT INTO es más a menudo se utiliza para crear copias de seguridad de las tablas.

SQL SELECT INTO Syntax

Podemos seleccionar todas las columnas en la nueva tabla:

SELECT *

48

Page 49: Tecnología_SQL.tutorial

INTO nueva_tabla_nombre [IN externadatabase]

FROM Edad_tablanombre

O podemos seleccionar sólo las columnas que desea en la nueva tabla:

SELECT columna_nombre(s)

INTO nueva_tabla_nombre [IN externadatabase]

FROM edad_tablanombre

SQL SELECT INTO Ejemplo

Hacer una copia de seguridad Copia - Ahora queremos hacer una copia exacta de los datos en

nuestro "Personas" de mesa.

Nosotros usamos la siguiente instrucción SQL:

SELECT *

INTO Personas_Backup

FROM Personas

We can also use the IN clause to copy the table into another database:

SELECT *

INTO Personas_Backup IN 'Backup.mdb'

FROM Personas

We can also copy only a few fields into the new table:

SELECT Apellido,Nombre

INTO Personas_Backup

FROM Personas

49

Page 50: Tecnología_SQL.tutorial

SQL SELECT INTO - Con una cláusula WHERE

También puede agregar una cláusula WHERE.

La siguiente sentencia SQL crea un "Personas_Backup" tabla con sólo las

personas que vive en la ciudad "Bogotá":

SELECT Apellido,Nombre

INTO Personas_Backup

FROM Personas

WHERE Ciudad='Bogotá'

SQL SELECT INTO - tablas combinadas

Selección de los datos de más de una tabla también es posible.

En el ejemplo siguiente se crea un "Personas_Orden_Backup" tabla contiene los datos de las dos

tablas "Personas" y “órdenes":

SELECT Personas.Apellido,Orden.OrdenNo

INTO Personas_Orden_Backup

FROM Personas

INNER JOIN Orden

ON Personas.P_Id=Orden.P_Id

«Anterior

»Siguiente capítulo

BASE DE DATOS SQL CREATE

«Anterior

»Siguiente capítulo

________________________________________

El CREATE BASE DE DATOS

La instrucción CREATE DATABASE se utiliza para crear una base de datos.

50

Page 51: Tecnología_SQL.tutorial

SQL CREATE DATABASE Syntax

CREATE DATABASE database_nombre

CREAR BASE DE DATOS Ejemplo

Ahora queremos crear una base de datos llamada "my_db".

Usamos la siguiente instrucción CREATE DATABASE:

CREATE DATABASE my_db

Tablas de base de datos se pueden añadir a la declaración CREATE TABLE.

«Anterior

»Siguiente capítulo

SQL CREATE TABLE

«Anterior

»Siguiente capítulo

________________________________________

El CREATE TABLE

La instrucción CREATE TABLE se utiliza para crear una tabla en una base de datos.

SQL CREATE TABLE Syntax

CREATE TABLE tabla_nombre

(

columna_nombre1 tipo_datos,

columna_nombre2 tipo_datos,

columna_nombre3 tipo_datos,

...

51

Page 52: Tecnología_SQL.tutorial

)

El tipo de datos específica el tipo de datos de la columna puede contener. Para una referencia completa de

todos los tipos de datos disponibles en MS Access, MySQL y SQL Server, vaya a nuestra completa referencia

de tipos de datos.

Ejemplo CREAR MESA

Ahora queremos crear una tabla denominada "Personas", que

contiene cinco columnas: p_id, Apellido, Nombre, dirección, y la ciudad.

Nosotros usamos la siguiente instrucción CREATE TABLE:

CREATE TABLE Personas

(

P_Id int,

Apellido varchar(255),

Nombre varchar(255),

Dirección varchar(255),

Ciudad varchar(255)

)

La columna p_id es de tipo int y se mantendrá un número. El Apellido, las columnas Nombre, dirección, y

la ciudad son de tipo VARCHAR con una longitud máxima de 255 caracteres.

La tabla vacía  "Personas"  ahora se verá así:

P_Id Apellido Nombre Dirección Ciudad

         

La tabla vacía puede ser llenada con los datos con la instrucción INSERT INTO.

«Anterior

»Siguiente capítulo

52

Page 53: Tecnología_SQL.tutorial

SQL Limitaciones

«Anterior

»Siguiente capítulo

________________________________________

SQL Limitaciones

Las restricciones se utilizan para limitar el tipo de datos que pueden ir en una tabla.

Las restricciones se pueden especificar cuando se crea una tabla (con la instrucción CREATE

TABLE) o después se crea la tabla (con la instrucción ALTER TABLE).

Nos centraremos en las siguientes restricciones:

• NOT NULL

• UNIQUE

• PRIMARY KEY

• FOREIGN KEY

• VERIFIQUE

• POR DEFECTO

Los capítulos siguientes se describen cada restricción en los detalles.

«Anterior

»Siguiente capítulo

SQL NO restricción NULL

«Anterior

»Siguiente capítulo

________________________________________

De forma predeterminada, una columna de tabla puede contener valores NULL.

________________________________________

SQL NO restricción NULL

La restricción NOT NULL cumplir una columna para aceptar los valores no NULL.

La restricción NOT NULL aplica un campo para contener siempre un valor. Esto significa que no se

puede insertar un nuevo registro, o actualizar un registro sin necesidad de añadirun valor a este campo.

El siguiente SQL cumplir la "p_id" columna y el "Apellido" la columna para que no acepte valores NULL:

53

Page 54: Tecnología_SQL.tutorial

CREATE TABLE Personas

(

P_Id int NOT NULL,

Apellido varchar(255) NOT NULL,

Nombre varchar(255),

Dirección varchar(255),

Ciudad varchar(255)

)

«Anterior

»Siguiente capítulo

SQL restricción UNIQUE

«Anterior

»Siguiente capítulo

________________________________________

SQL restricción UNIQUE

La restricción UNIQUE identifica de forma única cada registro de una tabla de base de datos.

El único y las restricciones PRIMARY KEY tanto una garantía para la unicidad de una columna o un

conjunto de columnas.

Una restricción PRIMARY KEY, automáticamente tiene una restricción UNIQUE definidas en él.

Tenga en cuenta que puede tener muchas restricciones UNIQUE por tabla, pero sólo una restricción

PRIMARY KEY por tabla.

________________________________________

SQL restricción UNIQUE en CREATE TABLE

El siguiente SQL crea una restricción UNIQUE en la "p_id"columna cuando las "Personas" tabla se crea:

MySQL:

CREATE TABLE Persons

(

P_Id int NOT NULL,

Apellido varchar(255) NOT NULL,

Nombre varchar(255),

54

Page 55: Tecnología_SQL.tutorial

Dirección varchar(255),

Ciudad varchar(255),

UNIQUE (P_Id)

)

SQL Server / Oracle / MS Access:

CREATE TABLE Persons

(

P_Id int NOT NULL UNIQUE,

Apellido varchar(255) NOT NULL,

Nombre varchar(255),

Dirección varchar(255),

Ciudad varchar(255)

)

Para permitir el nombramiento de una restricción UNIQUE, y para definir una restricción UNIQUE en varias

columnas, utilice la siguiente sintaxis SQL:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Personas

(

P_Id int NOT NULL,

Apellido varchar(255) NOT NULL,

Nombre varchar(255),

Dirección varchar(255),

Ciudad varchar(255),

CONSTRAINT uc_PersonaID UNIQUE (P_Id,Apellido)

)

55

Page 56: Tecnología_SQL.tutorial

Restricción UNIQUE en SQL ALTER TABLE

Para crear una restricción UNIQUE en la "p_id" columna cuando la tabla ya está creada, utilice el siguiente

código SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Personas

ADD UNIQUE (P_Id)

Para permitir el nombramiento de una restricción UNIQUE, y paradefinir una restricción UNIQUE en varias

columnas, utilice la siguiente sintaxis SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Personas

ADD CONSTRAINT uc_PersonaID UNIQUE (P_Id,Apellido)

Para quitar una restricción UNIQUE

Para eliminar una restricción UNIQUE, utilice el siguiente código SQL:

MySQL:

ALTER TABLE Personas

DROP INDEX uc_PersonaID

SQL Server / Oracle / MS Access:

ALTER TABLE Personas

DROP CONSTRAINT uc_PersonaID

SQL CLAVE restricción PRIMARY

«Anterior

»Siguiente capítulo

________________________________________

SQL CLAVE restricción PRIMARY56

Page 57: Tecnología_SQL.tutorial

La restricción PRIMARY KEY identifica de forma única cada registro de una tabla de base de datos.

Las claves principales deben contener valores únicos.

Una columna de clave principal no puede contener valores NULL.

Cada tabla debe tener una clave principal, y cada tabla sólo puede tener una clave principal.

________________________________________

SQL restricción PRIMARY KEY en CREATE TABLE

El siguiente SQL crea una clave principal en la "p_id" columna cuando las "Personas" tabla se crea:

MySQL:

CREATE TABLE Personas

(

P_Id int NOT NULL,

Apellido varchar(255) NOT NULL,

Nombre varchar(255),

Dirección varchar(255),

Ciudad varchar(255),

PRIMARY KEY (P_Id)

)

SQL Server / Oracle / MS Access:

CREATE TABLE Personas

(

P_Id int NOT NULL PRIMARY KEY,

Apellido varchar(255) NOT NULL,

Nombre varchar(255),

Dirección varchar(255),

Ciudad varchar(255)

)

Para permitir el nombramiento de una restricción PRIMARYKEY, y para definir una restricción PRIMARY KEY

en varias columnas, utilice la siguiente sintaxis SQL:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Personas

57

Page 58: Tecnología_SQL.tutorial

(

P_Id int NOT NULL,

Apellido varchar(255) NOT NULL,

Nombre varchar(255),

Dirección varchar(255),

City varchar(255),

CONSTRAINT pk_PersonaID PRIMARY KEY (P_Id,Apellido)

)

SQL restricción PRIMARY KEY en ALTER TABLE

Para crear una restricción PRIMARY KEY en la "p_id" columna cuando la tabla ya está creada, utilice el

siguiente código SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Personas

ADD PRIMARY KEY (P_Id)

Para permitir el nombramiento de una restricción PRIMARYKEY, y para definir una restricción PRIMARY KEY

en varias columnas, utilice la siguiente sintaxis SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Personas

ADD CONSTRAINT pk_PersonaID PRIMARY KEY (P_Id,Apellido)

Nota: Si utiliza la instrucción ALTER TABLE para agregar una clave principal, la columna de clave

principal (s) ya deben habersido declarados no contienen valores NULL (cuando la tabla fue creada).

________________________________________

Para quitar una restricción de clave principal

Para eliminar una restricción PRIMARY KEY, use el siguiente código SQL:

58

Page 59: Tecnología_SQL.tutorial

MySQL:

ALTER TABLE Personas

DROP PRIMARY KEY

SQL Server / Oracle / MS Access:

ALTER TABLE Personas

DROP CONSTRAINT pk_PersonaID

«Anterior

»Siguiente capítulo

SQL CLAVE restricción FOREIGN

«Anterior

»Siguiente capítulo

________________________________________

SQL CLAVE restricción FOREIGN

Una clave externa en una tabla de puntos a una clave principalde otra tabla.

Vamos a ilustrar la clave externa con un ejemplo. Mira a los dos cuadros siguientes:

La tabla "Personas”:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89 B # 115A-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

La tabla "Orden":59

Page 60: Tecnología_SQL.tutorial

O_Id OrdenNo P_Id

1 77895 3

2 44678 3

3 22456 2

4 24562 1

Tenga en cuenta que el "p_id" columna en los puntos "órdenes “a la tabla "p_id" columna de las "Personas" de

la tabla.

El "p_id" columna de las "Personas" mesa es la clave principal de las "Personas" de mesa.

El "p_id" columna de la tabla "orden" es una clave externa en la tabla "orden".

La restricción FOREIGN KEY se utiliza para prevenir acciones que destruyen los vínculos entre las tablas.

La restricción FOREIGN KEY también impide que los datos no válidos formulario que se inserta en la columna

de clave externa, porque tiene que ser uno de los valores contenidos en la tabla al que apunta.

________________________________________

SQL restricción FOREIGN KEY en CREATE TABLE

El siguiente SQL crea una clave externa en la "p_id" columna cuando el "Reglamento" tabla se crea:

MySQL:

CREATE TABLE Orden

(

O_Id int NOT NULL,

OrdenNo int NOT NULL,

P_Id int,

PRIMARY KEY (O_Id),

FOREIGN KEY (P_Id) REFERENCES Personas(P_Id)

)

SQL Server / Oracle / MS Access:

CREATE TABLE Orden

(

O_Id int NOT NULL PRIMARY KEY,

OrderNo int NOT NULL,

60

Page 61: Tecnología_SQL.tutorial

P_Id int FOREIGN KEY REFERENCES Persons(P_Id)

)

Para permitir el nombramiento de una restricción FOREIGNKEY y para la definición de una restricción

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

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Orders

(

O_Id int NOT NULL,

OrdenNo int NOT NULL,

P_Id int,

PRIMARY KEY (O_Id),

CONSTRAINT fk_PorOrden FOREIGN KEY (P_Id)

REFERENCES Personas(P_Id)

)

SQL restricción FOREIGN KEY en ALTER TABLE

Para crear una restricción FOREIGN KEY en la "p_id" columna cuando el "Reglamento" tabla ya

está creada, utilice el siguiente código SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orden

ADD FOREIGN KEY (P_Id)

REFERENCES Personas(P_Id)

Para permitir el nombramiento de una restricción FOREIGNKEY y para la definición de una restricción

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

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Orden

61

Page 62: Tecnología_SQL.tutorial

ADD CONSTRAINT fk_PorOrden

FOREIGN KEY (P_Id)

REFERENCES Personas(P_Id)

Para quitar una restricción de clave externa

Para quitar una restricción FOREIGN KEY, use el siguiente código SQL:

MySQL:

ALTER TABLE Orders

DROP FOREIGN KEY fk_PorOrden

SQL Server / Oracle / MS Access:

ALTER TABLE Orden

DROP CONSTRAINT fk_PorOrden

«Anterior

»Siguiente capítulo

________________________________________

SQL restricción CHECK

«Anterior

»Siguiente capítulo

________________________________________

SQL restricción CHECK

La restricción CHECK se utiliza para limitar el rango de valores que se pueden colocar en una columna.

Si se define una restricción CHECK en una columna que sólo permite ciertos valores de esta columna.

Si se define una restricción CHECK en una tabla que puede limitar los valores de ciertas

columnas basadas en los valores de otras columnas de la fila.

________________________________________

SQL restricción CHECK en CREATE TABLE

El siguiente SQL crea una restricción CHECK en el "p_id"columna cuando las "Personas" se crea la

tabla. La restricción CHECK especifica que la columna "p_id" sólo debe incluirenteros mayores que 0.

62

Page 63: Tecnología_SQL.tutorial

My SQL:

CREATE TABLE Personas

(

P_Id int NOT NULL,

Apellidos varchar(255) NOT NULL,

Nombre varchar(255),

Dirección varchar(255),

Ciudad varchar(255),

CHECK (P_Id>0)

)

SQL Server / Oracle / MS Access:

CREATE TABLE Personas

(

P_Id int NOT NULL CHECK (P_Id>0),

Apellidos varchar(255) NOT NULL,

Nombre varchar(255),

Dirección varchar(255),

Ciudad varchar(255)

)

Para permitir el nombramiento de una restricción CHECK, y para definir una restricción CHECK en varias

columnas, utilice la siguiente sintaxis SQL:

MySQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons

(

P_Id int NOT NULL,

Apellido varchar(255) NOT NULL,

Nombre varchar(255),

63

Page 64: Tecnología_SQL.tutorial

Dirección varchar(255),

Ciudad varchar(255),

CONSTRAINT chk_Persona CHECK (P_Id>0 AND Ciudad='Bogotá')

)

Restricción CHECK en SQL ALTER TABLE

Para crear una restricción CHECK en el "p_id" columna cuando la tabla ya está creada, utilice el siguiente

código SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Personas

ADD CHECK (P_Id>0)

Para permitir el nombramiento de una restricción CHECK, y para definir una restricción CHECK en varias

columnas, utilice la siguiente sintaxis SQL:

MySQL / SQL Server / Oracle / MS Access:

ALTER TABLE Persons

ADD CONSTRAINT chk_Persona CHECK (P_Id>0 AND Ciudad='Bogotá')

Para quitar una restricción CHECK

Para eliminar una restricción CHECK, utilice el siguiente código SQL:

SQL Server / Oracle / MS Access:

ALTER TABLE Personas

DROP CONSTRAINT chk_Persona

«Anterior

»Siguiente capítulo

SQL restricción DEFAULT

«Anterior

64

Page 65: Tecnología_SQL.tutorial

»Siguiente capítulo

________________________________________

SQL restricción DEFAULT

La restricción DEFAULT se utiliza para insertar un valor predeterminado en una columna.

El valor por defecto será añadido a todos los nuevos registros, si no se especifica otro valor.

________________________________________

SQL restricción DEFAULT en CREATE TABLE

El siguiente SQL crea una restricción DEFAULT en la "City "columna cuando las "Personas" tabla se crea:

My SQL / SQL Server / Oracle / MS Access:

CREATE TABLE Persons

(

P_Id int NOT NULL,

Apellido varchar(255) NOT NULL,

Nombre varchar(255),

Dirección varchar(255),

Ciudad varchar(255) DEFAULT 'Sandnes'

)

La restricción por defecto también puede ser utilizado para insertar los valores del sistema, mediante el uso

de funciones como GETDATE ():

CREATE TABLE Orden

(

O_Id int NOT NULL,

OrdenNo int NOT NULL,

P_Id int,

Fecha_pedido fecha DEFAULT GETDATE()

)

65

Page 66: Tecnología_SQL.tutorial

Restricción DEFAULT en SQL ALTER TABLE

Para crear una restricción DEFAULT en la "Ciudad" la columna cuando la tabla ya está creada, utilice el

siguiente código SQL:

MySQL:

ALTER TABLE Personas

ALTER Ciudad SET DEFAULT 'BOGOTA'

SQL Server / Oracle / MS Access:

ALTER TABLE Personas

ALTER COLUMN Ciudad SET DEFAULT 'BOGOTA'

Para quitar una restricción DEFAULT

Para quitar una restricción DEFAULT, utilice el siguiente código SQL:

MySQL:

ALTER TABLE Personas

ALTER Ciudad DROP DEFAULT

SQL Server / Oracle / MS Access:

ALTER TABLE Personas

ALTER COLUMN Ciudad DROP DEFAULT

66

Page 67: Tecnología_SQL.tutorial

«Anterior

»Siguiente capítulo

SQL CREATE INDEX

«Anterior

»Siguiente capítulo

________________________________________

La instrucción CREATE INDEX se utiliza para crear índices en tablas.

Los índices permiten la aplicación de base de datos para encontrar rápida de datos, sin necesidad de

leer toda la tabla.

________________________________________

Índices

Un índice se pueden crear en una tabla para encontrar datos más rápida y eficaz.

Los usuarios no pueden ver los índices, que son utilizados para acelerar las búsquedas o consultas.

Nota: Actualizando una tabla con los índices lleva más tiempo que la actualización de una

tabla sin (porque los índices también necesitan una actualización). Por lo que sólo debe crear índices

en columnas (y mesas) que serán buscados en contra.

SQL CREATE INDEX Syntax

Crea un índice en una tabla. Los valores duplicados están permitidos:

CREATE INDEX indice_nombre

ON tabla_nombre (columna_nombre)

SQL CREATE UNIQUE INDEX Syntax

Crea un índice único en una tabla. Los valores duplicados no están permitidos:

CREATE UNIQUE INDEX indice_nombre

ON tabla_nombre (columna_nombre)

Nota: La sintaxis para la creación de índices varía entre las diferentes bases de datos. Por lo

tanto: Compruebe la sintaxis para la creación de índices en la base de datos.

________________________________________

CREAR Ejemplo ÍNDICE

67

Page 68: Tecnología_SQL.tutorial

La sentencia de SQL siguiente crea un índice llamado"PIndex"en el "Apellido" columna de las

"Personas" tabla:

CREATE INDEX PIndex

ON Personas (Apellido)

Si desea crear un índice en una combinación de columnas,puede enumerar los nombres de columna entre

paréntesis, separados por comas:

CREATE INDEX PIndex

ON Persons (Apellido, Nombre)

«Anterior

Siguiente capítulo

SQL DROP INDEX, DROP TABLE y DROP DATABASE

«Anterior

»Siguiente capítulo

________________________________________

Índices, tablas y bases de datos puede ser fácilmente eliminados/ quitar con la instrucción DROP.

________________________________________

La declaración DROP INDEX

La instrucción DROP INDEX se utiliza para eliminar un índice en una tabla.

DROP INDEX Syntax for MS Access:

DROP INDEX indice_nombre ON tabla_nombre

DROP INDEX Syntax for MS SQL Server:

DROP INDEX tabla_nombre.indice_nombre

68

Page 69: Tecnología_SQL.tutorial

DROP INDEX Syntax for DB2/Oracle:

DROP INDEX indice_nombre

DROP INDEX Syntax for MySQL:

ALTER TABLE tabla_nombre DROP INDEX indice_nombre

La declaración DROP TABLE

La instrucción DROP TABLE se utiliza para eliminar una tabla.

DROP TABLE tabla_nombre

La declaración DROP DATABASE

La instrucción DROP DATABASE se utiliza para eliminar una base de datos.

DROP DATABASE database_nombre

La instrucción TRUNCATE TABLE

¿Y si sólo queremos eliminar los datos dentro de la tabla, y no la propia tabla?

A continuación, utilice la instrucción TRUNCATE TABLE:

TRUNCATE TABLE tabla_nombre

«Anterior

»Siguiente capítulo

SQL ALTER TABLE

«Anterior

»Siguiente capítulo

69

Page 70: Tecnología_SQL.tutorial

________________________________________

La Instrucción ALTER TABLE

La sentencia ALTER TABLE se utiliza para agregar, eliminar omodificar columnas de una tabla existente.

Sintaxis SQL ALTER TABLE

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

ALTER TABLE nombre_tabla

Agregar tipo de datos columna_nombre

Para eliminar una columna de una tabla, utilice la siguiente sintaxis (nótese que algunos sistemas de base de

datos no permiten eliminar una columna):

ALTER TABLE tabla_nombre

DROP COLUMN columna_nombre

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

ALTER TABLE tabla_nombre

ALTER COLUMN columna_nombre tipo_datos

SQL ALTER TABLE ejemplo

Mira las "Personas" tabla:

P_Id Apellido Nombre Direccion Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

Ahora queremos añadir una columna denominada "Fecha Nacimiento" en las "Personas" de mesa.

Nosotros usamos la siguiente instrucción SQL:

70

Page 71: Tecnología_SQL.tutorial

ALTER TABLE Personas

ADD Fecha_nacimiento

Tenga en cuenta que la nueva columna, "Fecha Nacimiento", es de tipo fecha y se va a celebrar una fecha. El

tipo de datos específica el tipo de datos de la columna puede contener. Para una referencia completa de

todos los tipos de datos disponibles en MS Access, MySQL y SQL Server, vaya a nuestra completa referencia

de tipos de datos.

Las tabla “Personas" ahora así:

P_Id Apellido Nombre Direccion Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

Cambio de datos Ejemplo Tipo

Ahora queremos cambiar el tipo de datos de la columna denominada "Fecha Nacimiento" en las de tabla

"Personas" 

Nosotros usamos la siguiente instrucción SQL:

ALTER TABLE Personas

ALTER COLUMN Fecha_NacimientoAño

Observe que el "Fecha Nacimiento" columna es ahora del año el tipo y se va a celebrar un año en un formato

de dos o cuatro dígitos.

Fecha de Nacimiento

Traduciendo

71

Page 72: Tecnología_SQL.tutorial

(Date Of Birth date)= Fecha de Nacimiento

Base de datos SQL=Fecha_Nacimiento

(Date Of Birth year)= Fecha de Nacimiento años

Base de datos SQL=Fecha_nacimientoAño= FechaNacimiento

Observe que el "FechaNacimiento" columna es ahora del año el tipo y se va a celebrar un año en un formato

de dos o cuatro dígitos.

GOTA Ejemplo COLUMNA

A continuación, queremos eliminar la columna denominada “FechaNacimiento" en las "Personas" de mesa.

Nosotros usamos la siguiente instrucción SQL:

ALTER TABLE Personas

DROP COLUMN FechaNacimiento

La tabla "Personas" queda ahora así:

P_Id Apellido Nombre Direccion Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

«Anterior

Siguiente capítulo

AUTO SQL incremento del campo

«Anterior

»Siguiente capítulo

________________________________________

De incremento automático permite un número único que se genera cuando un nuevo registro se

inserta en una tabla.

72

Page 73: Tecnología_SQL.tutorial

________________________________________

Incremento automático de un campo

Muy a menudo nos gustaría que el valor del campo clave principal que se creará de forma automática cada

vez que un registro nuevo se inserta.

Nos gustaría crear un campo de incremento automático en una tabla.

________________________________________

Sintaxis para MySQL

La siguiente instrucción SQL define el "p_id" columna que se va un incremento automático de

campo clave principal en la sección "Personas" tabla:

CREATE TABLE Personas

(

P_Id int NOT NULL AUTO_INCREMENT,

Apellido varchar(255) NOT NULL,

Nombre varchar(255),

Dirección varchar(255),

Ciudad varchar(255),

PRIMARY KEY (P_Id)

)

MySQL usa la palabra clave AUTO_INCREMENT para realizar una función de incremento automático. 

De forma predeterminada, el valor inicial de AUTO_INCREMENT es 1, y se incrementan en 1 para cada

nuevo registro. 

Para permitir que comience la secuencia de AUTO_INCREMENT con otro valor, utilice la siguiente instrucción

SQL: 

ALTER TABLE Personas AUTO_INCREMENT=100

Para insertar un nuevo registro en la "Personas" de

mesa, que notendrá que especificar un valor para el "p_id" columna (un valor único se añadirá de forma

automática):

73

Page 74: Tecnología_SQL.tutorial

INSERT INTO Personas (Nombre,Apellido)

VALUES ('José','Montes')

La sentencia SQL anterior se inserta un nuevo registro en la tabla "Personas". El "p_id" la columna se le

asigna un valor único. El "Nombre", la columna se establece en "José" y el "Apellido" la columna se establece

en "Montes".

Sintaxis para SQL Server

La siguiente instrucción SQL define el "p_id" columna que se va un incremento automático de

campo clave principal en la sección "Personas" tabla:

CREATE TABLE Personas

(

P_Id int PRIMARY KEY IDENTITY,

Apellido varchar(255) NOT NULL,

Nombre varchar(255),

Dirección varchar(255),

Ciudad varchar(255)

)

El MS SQL Server utiliza la identidad de palabras clave para realizar una función de incremento automático.

De forma predeterminada, el valor inicial de la identidad es una, y se incrementan en 1 para cada nuevo

registro.

Para especificar que el "p_id" columna debe comenzar en valor10 y el incremento en un 5, cambiar

la identidad a la identidad (10,5).

Para insertar un nuevo registro en la "Personas" de

mesa, queno tendrá que especificar un valor para el "p_id" columna (un valor único se añadirá de forma

automática):

INSERT INTO Personas (Nombre,Apellido)

VALUES ('José','Montes')

La sentencia SQL anterior se inserta un nuevo registro en la tabla "Personas". El "p_id" la columna se le

asigna un valor único. El "Nombre", la columna se establece en "José" y el "Apellido" la columna se establece

en "Montes".

74

Page 75: Tecnología_SQL.tutorial

Buenos días apreciado tutor Kevin Sánchez, necesito aclarar una duda al respecto del envió de las

actividades correspondientes a las unidades, dos y tres. Me inquieta el comentario del compañero JUAN

ALBERTO PITTOREN CRUZ en el Primer Foro Técnico, pues en el informe backup de mi servidor de internet,

se ha detectado el problema con la configuración SQL a través del sistema, quiero decir para que usted reciba

allá el archivo tal como fue realizado aquí; he determinado como objetivo de este mensaje, establecer si los

archivos o ficheros han llegado correctamente, si tengo el ánimo de promover el estado de todo mi

aprendizaje en curso, por supuesto teniendo en cuenta la consideración, los recursos y la autonomía de la

tutoría virtual.

Sintaxis para el acceso

La siguiente instrucción SQL define el "p_id" columna que se va un incremento automático de

campo clave principal en la sección de la tabla "Personas”:

CREATE TABLE Personas

(

P_Id PRIMARY KEY AUTOINCREMENT,

Apellido varchar(255) NOT NULL,

Nombre varchar(255),

Dirección varchar(255),

Ciudad varchar(255)

)

El MS Access utiliza el AUTOINCREMENT palabra clave para realizar una función de incremento automático.

De forma predeterminada, el valor de partida para AUTOINCREMENT es 1, y se incrementan en 1 para cada

nuevo registro.

Para especificar que el "p_id" columna debe comenzar en valor10 y el incremento en un 5, cambie el auto

incremento a AUTOINCREMENT (10,5).

Para insertar un nuevo registro en la "Personas" de

mesa, queno tendrá que especificar un valor para el "p_id" columna (un valor único se añadirá de forma

automática):

INSERT INTO Personas (Nombre,Apellido)

VALUES ('José','Montes')

La sentencia SQL anterior se inserta un nuevo registro en la tabla "Personas". El "p_id" la columna se le

asigna un valor único. El "Nombre", la columna se establece en "José" y el "Apellido" la columna se establece

75

Page 76: Tecnología_SQL.tutorial

en "Montes".

________________________________________

Sintaxis para Oracle

En el código de Oracle es un poco más difícil.

Usted tendrá que crear un campo de incremento automático con el objeto de

secuencia (este objeto genera una secuencia de números).

Utilice la siguiente sintaxis CREAR LA SECUENCIA:

CREATE SEQUENCE seq_persona

MINVALUE 1

START WITH 1

INCREMENT BY 1

CACHE 10

El código anterior crea un objeto llamado seq_persona secuencia, que comienza con 1 y se incrementan

en 1. Será también caché de hasta 10 valores para el rendimiento. La opción de caché especifica cuántos

valores de secuencia se almacena en la memoria para un acceso más rápido.

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

la función nextval (esta función recupera el valor siguiente de la secuencia seq_persona):

INSERT INTO Personas (P_Id, Nombre,Apellido)

VALUES (seq_persona.nextval,'José','Montes')

La sentencia SQL anterior se inserta un nuevo registro en la tabla "Personas". El "p_id" la columna se le

asigna el siguiente número de la secuencia seq_persona. El "Nombre", la columna se establece en "José"

y el "Apellido" la columna se establece en "Montes".

«Anterior

Siguiente capítulo

SQL Vistas

«Anterior

»Siguiente capítulo

________________________________________

76

Page 77: Tecnología_SQL.tutorial

Una vista es una tabla virtual.

En este capítulo se muestra cómo crear, actualizar y eliminar una vista.

________________________________________

SQL CREATE VISTA

En SQL, una vista es una tabla virtual basada en el conjunto de resultados de una instrucción SQL.

Una vista contiene filas y columnas, al igual que una tabla real. Los campos en una vista son campos de una

o más tablas reales en la base de datos.

Usted puede agregar funciones de SQL, EN, y JOIN declaraciones a un punto de vista y presentar

los datos como si los datos procedían de una sola tabla.

SQL CREATE VIEW Syntax

CREATE VIEW vista_nombre AS

SELECT columna_nombre(s)

FROM tabla_nombre

WHERE condición

Nota: Una visión siempre se muestra a datos actualizados! El motor de base de datos vuelve a crear los

datos, utilizando la declaración SQL de la vista, cada vez que un usuario consulta una vista.

SQL CREATE Ejemplos VISTA

Si usted tiene la base de datos Northwind se puede ver que tiene varios puntos de vista instalado de forma

predeterminada.

La vista "Lista de productos actuales" listas de todos los

productos activos (productos que no están descatalogados) de los "productos" de

mesa. La vista se crea con el siguiente SQL:

CREATE VIEW [Lista de productos actual] AS

SELECT ProductoID,ProductoNombre

FROM Productos

WHERE Suspendido=No

Podemos consultar la vista por encima de la siguiente manera:

SELECT * FROM [Lista de productos actual]

77

Page 78: Tecnología_SQL.tutorial

Otro punto de vista en la base de datos Neptuno selecciona cada producto en la sección

"Productos" mesa con un precio unitario más alto que el precio medio por unidad:

CREATE VIEW [Productos por encima del precio promedio] AS

SELECT ProductoNombre, PrecioUnitario

FROM Productos

WHERE PrecioUnitario >(SELECT AVG(PrecioUnitario) FROM Productos)

Podemos consultar la vista por encima de la siguiente manera:

SELECT * FROM [Productos por encima del precio promedio]

Otro punto de vista en la base de datos Northwind calcula el total de la venta para

cada categoría en 1997. Tenga en cuenta que este punto de vista selecciona a sus datos desde otro punto de

vista llamado "Las ventas de productos para el año 1997":

CREATE VIEW [Categoría Ventas Para el año 1997] AS

SELECT DISTINCT NombreCategoría,Sum(VentasProductos) AS CategoríaVentas

FROM [Las ventas de productos para 1997]

GROUP BY NombreCategoría

Podemos consultar la vista por encima de la siguiente manera:

SELECT * FROM [Categoría Ventas Para el año 1997]

También podemos añadir una condición a la consulta. Ahora queremos ver el total de la venta sólo para

la categoría "Bebidas":

SELECT * FROM [Categoría Ventas Para el año 1997]

WHERE NombreCategoría='Bebidas'

78

Page 79: Tecnología_SQL.tutorial

Actualizar una vista de SQL

Puede actualizar una vista utilizando la siguiente sintaxis:

SQL CREATE OR REPLACE VIEW Syntax

CREATE OR REPLACE VIEW vista_nombre AS

SELECT columna_nombre(s)

FROM tabla_nombre

WHERE condición

Ahora queremos añadir la "categoría" columna de la "lista actual de productos" punto de vista. Vamos

a actualizar la vista con el siguiente SQL:

CREATE VIEW [Lista de productos actual] AS

SELECT ProductoID,ProductoNombre, Categoría

FROM Productos

WHERE Suspendido=No

SQL soltar una vista

Puede eliminar una vista con el comando DROP VIEW.

SQL DROP VIEW Syntax

DROP VIEW vista_nombre

«Anterior

»Siguiente capítulo

SQL Funciones de fecha

«Anterior

»Siguiente capítulo

________________________________________

SQL Fechas

79

Page 80: Tecnología_SQL.tutorial

  La parte más difícil cuando se trabaja con las fechas es para estar seguro de que el formato de la fecha en la

que están tratando de insertar, coincide con el formato de la columna de la fecha en la base de datos.

Siempre y cuando los datos contienen sólo la parte de la fecha, las consultas funcionarán como se espera. Sin

embargo, si una porción de tiempo se trata, se hace complicado.

Antes de hablar de las complicaciones de la consulta para las fechas, vamos a ver las más

importantes funciones integradas para trabajar con fechas.

________________________________________

MySQL Funciones de fecha

En la tabla siguiente se enumeran las funciones incorporadas en la fecha más importante en MySQL:

Función Descripción

NOW() Devuelve la fecha y hora actuales

CURDATE() Devuelve la fecha actual

CURTIME() Devuelve la hora actual

DATE() Extractos de la fecha de parte de una fecha o fecha y la expresión de tiempo

EXTRACT() Devuelve una sola parte de una fecha / hora

DATE_ADD() Agrega un intervalo de tiempo especificado a una fecha

DATE_SUB() Resta un intervalo de tiempo especificado de una fecha

DATEDIFF() Devuelve el número de días entre dos fechas

DATE_FORMAT() Muestra datos de fecha / hora en formatos diferentes

Funciones SQL Server Fecha

En la tabla siguiente se muestran las más importantes funciones integradas de fecha en SQL Server:

Función Descripción

GETDATE() Devuelve la fecha y hora actuales

DATEPART() Devuelve una sola parte de una fecha / hora

DATEADD() Añade o resta un intervalo de tiempo especificado de una fecha

DATEDIFF() Devuelve el tiempo transcurrido entre dos fechas

CONVERT() Muestra datos de fecha / hora en formatos diferentes

80

Page 81: Tecnología_SQL.tutorial

Tipos de datos SQL Fecha

MySQL viene con los siguientes tipos de datos para almacenar una fecha o un valor de fecha

y hora en la base de datos:

• FECHA - formato AAAA-MM-DD

• DATETIME - formato: AAAA-MM-DD HH: MM: SS

• TIMESTAMP - formato: AAAA-MM-DD HH: MM: SS

• AÑO - AAAA o AA

SQL Server incluye las siguientes tipos de datos para almacenar una fecha o un valor de fecha

y hora en la base de datos:

• FECHA - formato AAAA-MM-DD

• DATETIME - formato: AAAA-MM-DD HH: MM: SS

• SMALLDATETIME - formato: AAAA-MM-DD HH: MM: SS

• TIMESTAMP - formato: un número único

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

Para una visión general de todos los tipos de datos disponibles, vaya a nuestra completa referencia de tipos

de datos.

________________________________________

SQL Trabajar con Fechas

  Puede comparar dos fechas con facilidad si no hay un componente tiempo necesario!

Supongamos que tenemos la siguiente tabla "orden":

OrdenId ProductoNombre OrdenFecha

1 Geitost 2008-11-11

2 Camembert Pierrot 2008-11-09

3 Mozzarella di Giovanni 2008-11-11

4 Mascarpone Fabiola 2008-10-29

Ahora queremos seleccionar los registros con un  OrdenFecha de"11/11/2008" en el cuadro anterior.

Nosotros usamos la siguiente instrucción SELECT:

SELECT * FROM Orden WHERE OrdenFecha ='2008-11-11'

81

Page 82: Tecnología_SQL.tutorial

The result-set will look like this:

OrdenId ProductoNombre OrdenFecha

1 Geitost 2008-11-11

3 Mozzarella di Giovanni 2008-11-11

Ahora, supongamos que la tabla "orden" se parece a esto (observe el componente de

hora en el "OrdenFecha" columna):

OrdenId ProductoNombre OrdenFecha

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 Fabiola 2008-10-29 14:56:59

Si utilizamos la misma declaración SELECT como anteriormente:

SELECT * FROM Orden WHERE OrdenFecha='2008-11-11'

¡Obtendremos ningún resultado!... Esto se debe a que la consultase busca sólo para las fechas con ninguna

parte del tiempo.

Consejo: Si desea mantener sus preguntas simples y fáciles de mantener, no permita que los componentes

de tiempo en las fechas!

«Anterior

»Siguiente capítulo

SQL valores NULL

«Anterior

»Siguiente capítulo

82

Page 83: Tecnología_SQL.tutorial

________________________________________

Valores NULL representan faltan datos desconocidos.

De forma predeterminada, una columna de tabla puede contener valores NULL.

En este capítulo se explicará la IS NULL e IS NOT NULL.

________________________________________

SQL valores NULL

Si una columna de una tabla es opcional, se puede insertar un nuevo registro o actualizar un

registro existente sin necesidad de añadir un

valor a esta columna. Esto significa que el campose guarda con un valor NULL.

Los valores NULL son tratados de manera diferente a otros valores.

NULL se utiliza como un marcador de posición para los valores desconocidos o inaplicables.

  Nota: No es posible comparar NULL y 0, que no son equivalentes.

________________________________________

SQL Trabajar con valores NULL

Mira en el siguiente "Personas" tabla:

P_Id Apellido Nombre Direccion Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

Supongamos que la columna "Dirección" en las tablas "Personas" es opcional. Esto significa que si insertar un

registro sin valor para la columna "Dirección", la columna "Dirección" se guardará con un valor NULL.

¿Cómo podemos comprobar valores NULL?

No es posible poner a prueba los valores NULL con operadores de comparación, como por ejemplo =, <, o <>.

Tendremos que usar el IS NULL e IS NOT NULL en lugar.

________________________________________

SQL IS NULL

¿Cómo seleccionar sólo los registros con valores NULL en la columna "Dirección"?

Tendremos que utilizar el operador IS NULL:

SELECT Apellido,Nombre, Dirección FROM Personas

83

Page 84: Tecnología_SQL.tutorial

WHERE Dirección IS NULL

El conjunto de resultados se verá así:

Apellido Nombre Dirección

Salazar Longas Gustavo  

Santacoloma Kelly Yaneth  

Consejo: Siempre utilice IS NULL para buscar valores NULL.

SQL no es NULL

¿Cómo seleccionar sólo los registros sin valores NULL en la columna "Dirección"?

Tendremos que usar el operador NO ES NULL:

SELECT Apellido,Nombre, Dirección FROM Personas

WHERE Dirección IS NOT NULL

El conjunto de resultados se verá así:

Apellido Nombre Dirección

Muñoz Ramón Alfonso Transversal 30 # 101-46

En el próximo capítulo veremos el ISNULL (), NVL (), IFNULL () y COALESCE () funciones.

«Anterior

»Siguiente capítulo

Funciones SQL NULL

«Anterior

»Siguiente capítulo

________________________________________

84

Page 85: Tecnología_SQL.tutorial

ISNULL () de SQL, NVL (), IFNULL () y COALESCE () Funciones

Mira los siguientes "Productos" tabla:

P_Id ProductoNombre PrecioUnitario UnidadesEnexistencias UnidadesEnPedido

1 Jarlsberg 10.45 16 15

2 Mascarpone 32.56 23  

3 Gorgonzola 15.67 9 20

Supongamos que el "UnidadesEnPedido" columna es opcional y puede contener valores NULL.

Contamos con la siguiente instrucción SELECT:

SELECT ProductoNombre, PrecioUnitario*( UnidadesEnexistencias + UnidadesEnPedido)

FROM Productos

En el ejemplo anterior, si alguno de los "UnidadesEnPedido" los valores son NULL, el resultado es NULL.

ISNULL de Microsoft () se utiliza para especificar cómo queremos tratar a los valores NULL.

El NVL (), IFNULL () y COALESCE () también se puede utilizar para obtener el mismo resultado.

En este caso queremos que los valores NULL a ser cero.

A continuación, si "UnidadesEnPedido" es NULL no perjudicará el

cálculo, porque ISNULL () devuelve un cero si el valor es NULL:

SQL Server / MS Access

SELECT ProductoNombre, PrecioUnitario*( UnidadesEnexistencias+ISNULL(UnidadesEnPedido,0))

FROM Productos

Oracle

Oracle no tiene una función ISNULL (). Sin embargo, podemos usar la función NVL () para lograr el mismo

resultado:

SELECT ProductoNombre,PrecioUnitario*(UnidadesEnexistencias+NVL(UnidadesEnPedido,0))

FROM Productos

MySQL

85

Page 86: Tecnología_SQL.tutorial

MySQL tiene una función ISNULL (). Sin embargo, funciona un poco diferente de Microsoft ISNULL ()

de función.

En MySQL podemos usar el IFNULL () función, de esta manera:

SELECT ProductoNombre,PrecioUnitario*(UnidadesEnExistencias+IFNULL(UnidadesEnPedido,0))

FROM Productos

O podemos utilizar el COALESCE () función, de esta manera:

SELECT ProductoNombre,PrecioUnitario*(UniadeaEnExistencias+COALESCE(UnidadesEnPedido,0))

FROM Productos

«Anterior

Siguiente capítulo

Tipos de datos SQL

«Anterior

»Siguiente capítulo

________________________________________

Tipos de datos y gamas de Microsoft Access, MySQL y SQL Server.

________________________________________

Microsoft Tipos de datos de Access

Tipo de datos Descripción Almacenamient

o

Text Se utiliza para texto o combinaciones de texto y números. 255

caracteres como máximo

 

Memo Memo se utiliza para grandes cantidades de texto. Almacena

hasta 65.536 caracteres. Nota: No puede ordenar un campo memo. Sin

embargo, se pueden buscar

 

86

Page 87: Tecnología_SQL.tutorial

Byte Permite números enteros desde 0 hasta 255 1 byte

Integer Permite números enteros entre -32.768 y32.767 2 bytes

Long Permite números enteros entre -2147483648 y 2147483647 4 bytes

Single Precisión individual de punto flotante. Se encargará de la mayoría

de decimales

4 bytes

Double Doble precisión de punto flotante. Se encargará de la mayoría de

decimales

8 bytes

Currency El uso de la moneda. Almacena hasta 15 dígitos de dólares

completos, además de cuatro posiciones decimales.

Sugerencia: Usted puede elegir la moneda que los países de utilizar

8 bytes

AutoNumber Campos Auto numérico concede automáticamente cada registro

de su propio número, por lo general a partir de una

4 bytes

Date/Time Se utiliza para fechas y horarios 8 bytes

Yes/No Un campo lógico se puede mostrar como Sí / No, Verdadero /Falso o

Activado / Desactivado. En el código, utilice el Verdadero y

Falso constantes (equivalente a -1 y 0). Nota: Los valores nulos no

se permiten en campos Sí / No

1 bit

Ole Object Puede almacenar imágenes, audio,

vídeo, o BLOB otros(grandes objetos binarios)

up to 1GB

Hyperlink Contiene enlaces a otros archivos, incluyendo las páginas web  

Lookup Wizard Vamos a escribir una lista de opciones, que pueden seres

cogidos de una lista desplegable

4 bytes

87

Page 88: Tecnología_SQL.tutorial

Tipos de datos de MySQL

En MySQL existen tres tipos principales: número, texto y fecha /hora tipos.

Los tipos de texto:

Tipos de

datos

Descripción

CHAR(size) Contiene una cadena de longitud fija (puede contener letras,

números y caracteres especiales). El tamaño fijo se especificaentre

paréntesis. Puede almacenar hasta 255 caracteres

VARCHAR(siz

e)

Contiene una cadena de

longitud variable (puede contenerletras, números y caracteres especiales). El

tamaño máximo se especifica entre

paréntesis. Puede almacenar hasta 255caracteres. Nota: Si usted pone un valor superior a 2

55 que se convertirá en un tipo de texto

TINYTEXT Contiene una cadena con una longitud máxima de 255 caracteres

TEXT Contiene una cadena con una longitud máxima de 65.535 caracteres

BLOB Para BLOB (Binary Large Objects). Almacena hasta 65.535bytes de datos

MEDIUMTEXT Contiene una cadena con una longitud máxima de 16.777.215caracteres

MEDIUMBLOB Para BLOB (Binary Large Objects). Almacena hasta 16.777.215bytes de datos

LONGTEXT Contiene una cadena con una longitud máxima de 4,294,967,295 caracteres

LONGBLOB Para BLOB (Binary Large Objects). Almacena hasta4,294,967,295 bytes de datos

ENUM(x,y,z,etc

.)

Le permite acceder a una lista de valores posibles. Puede crear una lista de

hasta 65.535 valores en una lista ENUM. Si se inserta un valor que no está en la lista, un

valor en blanco se inserta.

Nota: Los valores se ordenan en el orden en que se introduzca.

Usted entra a los valores posibles en este formato: ENUM ('X','Y', 'Z')

SET Similar a ENUM, salvo que SET puede contener hasta 64 elementos de la lista y

puede almacenar más de una opción

Número de tipos:

Tipo de datos Descripción

TINYINT(size) -128-127 normal. 0-255 UNSIGNED *. El número máximo de dígitos que se

88

Page 89: Tecnología_SQL.tutorial

indique entre paréntesis

SMALLINT(size) -32768 A 32767 normal. 0 a 65.535 UNSIGNED *. El número máximo de dígitos que se

indique entre paréntesis

MEDIUMINT(size) -8388608 A 8388607 normal. 0-16777215 UNSIGNED *. El

número máximo de dígitos que se indique entre paréntesis

INT(size) -2147483648 A 2147483647 normal. 0 a 4294967295UNSIGNED *. El

número máximo de dígitos que se indique entre paréntesis

BIGINT(size) -9223372036854775808-9223372036854775807 normal. 0-18446744073709551615 U

NSIGNED *. El número máximo de dígitos que se indique entre paréntesis

FLOAT(size,d) Un pequeño número con un punto decimal flotante. El número máximo de dígitos que

se especifique en el parámetro de tamaño. El número máximo de dígitos

a la derecha del punto decimal se especifica en el parámetro d

DOUBLE(size,d) Un gran número con un punto decimal flotante. El número máximo de dígitos que se

especifique en el parámetro de tamaño. El número máximo de dígitos

a la derecha del punto decimal se especifica en el parámetro d

DECIMAL(size,d) DOBLE almacena como una cadena, lo que permite un punto decimal fijo. El

número máximo de dígitos que se especifique en el parámetro de tamaño. El

número máximo de dígitos a la derecha del punto decimal se especifica en

el parámetro d

* Los tipos enteros tienen una opción adicional llamada UNSIGNED. Normalmente, el entero va desde un

valor positivo a negativo. Agregar el atributo UNSIGNED se moverá hasta que van por lo que comienza a las

cero en lugar de un número negativo.

Tipo de datos:

Tipo de dato Descripción

DATE() Una fecha. Formato: AAAA-MM-DD

Nota: El rango soportado es de '1000-01-01 'a '9999-12-31 '

DATETIME() * Una combinación de fecha y hora. HH AAAA-MM-DD:: Formato MM: SS

Nota: El rango soportado es de '1000-01-01 00:00:00 'a'9999-12 a 31 23:59:59'

TIMESTAMP() * Una marca de tiempo. Los valores TIMESTAMP se almacenan como el

número de segundos desde la época Unix ('1970-01-01 00:00:00 'UTC). HH AAAA-

MM-DD:: Formato MM: SS

89

Page 90: Tecnología_SQL.tutorial

Nota: El rango soportado es de '1970-01-01 00:00:01 'UTC al'2038-01-

09 03:14:07' UTC

TIME() Un tiempo. Formato: HH: MM: SS

Nota: El intervalo admitido es de '-838:59:59' a '838: 59:59 '

YEAR() Un año en formato de dos o cuatro dígitos.

Nota: Los valores permitidos en formato de cuatro dígitos: 1901a 2155. Los

valores permitidos en formato de dos dígitos: 70 a 69, que representan años 1970 a

2069.

* Incluso si DATETIME y TIMESTAMP devolver el mismo formato, que trabajan de manera muy

diferente. En una consulta INSERT o UPDATE, la marca de forma automática se establece en la fecha y hora

actuales. TIMES TAMP también acepta varios formatos, como YYYY MM DD HH MM SS, YY MM DD HH MM

SS, AAAA MM DD, o AA MM DD.

Tipos de datos SQL Servidor

Las cadenas de caracteres:

Tipo de Dato Descripción Storage

char(n) De longitud fija cadena de caracteres. Máxima de 8.000caracteres n

varchar(n) De longitud variable de cadena de caracteres. Máxima de 8.000caracteres  

varchar(max) De longitud variable de cadena de caracteres. Máxima

de1,073,741,824 caracteres

 

text De longitud variable de cadena de caracteres. Máxima de 2 GB de datos de

texto

 

Unicode cadenas:

Tipo de Dato Descripción Almacenamient

o

nchar(n) De longitud fija de datos Unicode. Máxima de 4.000 caracteres  

nvarchar(n) Datos de longitud variable Unicode. Máxima de 4.000 caracteres  

nvarchar(max) Datos de longitud variable Unicode. Máximo 536 870 912 caracteres  

ntext Datos de longitud variable Unicode. Máxima de 2 GB de datos de texto  

90

Page 91: Tecnología_SQL.tutorial

Binary types:

Tipo de Dato Descripción Almacenamient

o

bit Permite 0, 1, o NULL  

binary(n) De longitud fija de datos binarios. Máxima de 8.000 bytes  

varbinary(n) Datos de longitud variable binaria. Máxima de 8.000 bytes  

varbinary(max) Datos de longitud variable binaria. Máxima de 2 GB  

image Datos de longitud variable binaria. Máxima de 2 GB  

Number types:

Tipo de

Dato

Descripción Almacenamien

to

tinyint Permite números enteros desde 0 hasta 255 1 byte

smallint Permite números enteros entre -32.768 y 32.767 2 bytes

int Permite números enteros entre -2147483648 y 2147483647 4 bytes

bigint Permite números enteros entre -

9.223.372.036.854.775.808 y9.223.372.036.854.775.807

8 bytes

decimal(p,

s)

Precisión fija y números de la escala.

Permite un número entre -10 ^ 38 +1 a 10 ^ 38 -1.

El parámetro p indica el número máximo total de dígitos que se

pueden almacenar (tanto a la izquierda ya la derecha del puntodecimal). p debe

ser un valor entre 1 y 38. El valor predeterminado es 18.

El parámetro s indica el número máximo de dígitos almacenados a la derecha

del punto decimal. S debe ser un valor entre 0 y p. El valor por defecto es 0

5-17 bytes

numeric(p,

s)

Precisión fija y números de la escala.

Permite un número entre -10 ^ 38 +1 a 10 ^ 38 -1.

El parámetro p indica el número máximo total de dígitos que se

pueden almacenar (tanto a la izquierda ya la derecha del puntodecimal). p debe

ser un valor entre 1 y 38. El valor predeterminado es 18.

El parámetro s indica el número máximo de dígitos almacenados a la derecha

5-17 bytes

91

Page 92: Tecnología_SQL.tutorial

del punto decimal. S debe ser un valor entre 0 y p. El valor por defecto es 0

smallmone

y

Monetario datos de -214.748,3648 de 214,748.3647 4 bytes

money Monetario datos de -922.337.203.685.477,5808 a922.337.203.685.477,5807 8 bytes

float(n) Flotante de precisión el número de + 1,79 E-308 a 1,79 E +308.

El parámetro n indica si el campo debe tener 4 o 8 bytes.flotador (24) tiene un c

ampo de 4 bytes y el flotador (53) tiene un campo de 8 bytes. El valor por

defecto de n es 53.

4 or 8 bytes

real Flotante de precisión el número de -3,40 E +38 a 3,40 E + 38 4 bytes

Date types:

Tipo de Dato Descripción Almacenamient

o

datetime Del 1 de enero de 1753 al 31 de diciembre de 9999 con una

precisión de 3,33 milisegundos

8 bytes

datetime2 Del 1 de enero de 0001 al 31 de diciembre de 9999 con una

precisión de 100 nanosegundos

6-8 bytes

smalldatetime Desde enero 1, 1900 hasta junio 6, 2079, con una precisión de 1 minuto 4 bytes

Date Almacenar una única fecha. Del 1 de enero de 0001 al 31 de

diciembre de 9999

3 bytes

Time Almacenar una única vez, con una precisión de 100nanosegundos 3-5 bytes

datetimeoffset Al igual que datetime2 con la adición de una zona horaria 8-10 bytes

timestamp Almacena un número único que se actualiza cada vez que secrea una

fila o modificados. El valor de marca de tiempo se basa en un

reloj interno y no corresponde al

tiempo real. Cadatabla puede tener sólo una variable de fecha y hora

 

Otros Tipos de Datos:

Tipo de Dato Descripción

sql_variant Almacena hasta 8.000 bytes de datos de distintos tipos de datos, excepto

text, ntext e indicación de la hora

92

Page 93: Tecnología_SQL.tutorial

Uniqueidentifier Almacena un identificador único global (GUID)

xml Tiendas de formato XML de datos. Máxima de 2 GB

cursor Almacena una referencia a un cursor utilizado para las operaciones de base de datos

table Almacena un conjunto de resultados para su posterior procesamiento

SQL Functions

«Anterior

»Siguiente capítulo

________________________________________

SQL tiene muchas funciones integradas para realizar cálculos en los datos.

________________________________________

Funciones de agregado de SQL

Funciones agregadas de SQL devuelven un solo valor, calculado a partir de valores de una columna.

Útil total de las funciones:

• AVG () - Devuelve el valor medio

CUENTA • () - Devuelve el número de filas

• PRIMERA () - Devuelve el primer valor

ÚLTIMO • () - Devuelve el último valor

• MAX () - Devuelve el valor más grande

• MIN () - Devuelve el valor más pequeño

• SUM () - Devuelve la suma

________________________________________

SQL Funciones escalares

Funciones SQL escalares devuelven un solo valor, basado en el valor de la entrada.

Útiles funciones escalares:

UCASE • () - Convierte un campo a mayúsculas

LCASE • () - Convierte un campo a minúsculas

• El MID () - Extraer caracteres de un campo de texto

• LEN () - Devuelve la longitud de un campo de texto

• ROUND () - Redondea un campo numérico con el número de decimales especificado

• NOW () - Devuelve la fecha actual del sistema y el tiempo

• FORMATO () - Formatos de cómo un campo se va a mostrar

93

Page 94: Tecnología_SQL.tutorial

Sugerencia: Las funciones de agregado y las funciones escalares se explicará en detalle en los

capítulos siguientes.

«Anterior

»Siguiente capítulo

SQL AVG () Función

«Anterior

»Siguiente capítulo

«Anterior

»Siguiente capítulo

________________________________________

El AVG () Función

El AVG () devuelve el valor medio de una columna numérica.

SQL AVG () Syntax

SELECT AVG(columna_nombre) FROM tabla_nombre

AVG SQL () Ejemplo

Tenemos las siguientes "órdenes" de Tabla:

O_Id FechaPedido OrdenPrecios Cliente

1 2008/11/12 1000 Salazar Longas

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Salazar Longas

4 2008/09/03 300 Salazar Longas

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

94

Page 95: Tecnología_SQL.tutorial

Ahora queremos encontrar el valor medio de la "ordenPrecio" campos.

Nosotros usamos la siguiente instrucción SQL:

SELECT AVG(ordenPrecio) AS OrdenPromedio

FROM Orden

El conjunto de resultados se verá así:

OrdenPromedio

950

Ahora queremos encontrar a los clientes que tienen un valor OrdenPrecios más alto que el promedio del valor

OrdenPrecios.

Nosotros usamos la siguiente instrucción SQL:

SELECT Customer FROM Orden

WHERE OrdenPrecios >(SELECT AVG(OrdenPrecios) FROM Orden)

El conjunto de resultados se verá así:

Cliente

Salazar Longas

Nilsen

Jensen

95

Page 96: Tecnología_SQL.tutorial

«Anterior

»Siguiente capítulo

CUENTA SQL () Función

«Anterior

»Siguiente capítulo

________________________________________

La función COUNT () devuelve el número de filas que coincide con el criterio especificado.

SQL COUNT (columna_nambre) Syntax

El COUNT (columna_nombre) devuelve el número de valores (valores NULL no se cuentan) de la columna

especificada:

SELECT COUNT(columna_nombre) FROM tabla_nombre

SQL COUNT (*) Syntax

El COUNT (*) devuelve el número de registros en una tabla:

SELECT COUNT(*) FROM tabla_nombre

SQL COUNT (DISTINCT columna_nombre) Syntax

L a COUNT (DISTINCT columna_nombre) devuelve el número de valores distintos de la columna

especificada:

SELECT COUNT(DISTINCT columna_nombre) FROM tabla_nombre

Nota: COUNT (DISTINCT) trabaja con Oracle y Microsoft SQL Server, pero no con Microsoft Access

96

Page 97: Tecnología_SQL.tutorial

SQL COUNT (columna_nombre) Ejemplo

Tenemos los siguientes "órdenes" de tabla:

O_Id FechaPedido OrdenPrecios Cliente

1 2008/11/30 1000 Salazar Longas

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Hansen

4 2008/09/03 300 Hansen

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

Ahora queremos contar el número de órdenes de "Cliente Nilsen".

SELECT COUNT(Cliente) AS ClienteNilsen FROM Orden

WHERE Cliente='Nilsen'

El resultado de la instrucción SQL anterior será de 2, porque el cliente Nilsen ha hecho 2 pedidos en total:

ClienteNilsen

2

SQL COUNT (*) Ejemplo

Si se omite la cláusula WHERE, de esta manera:

SELECT COUNT(*) AS NúmeroDeOrden FROM Orden

97

Page 98: Tecnología_SQL.tutorial

El conjunto de resultados se verá así:

NúmeroDeOrden

6

Que es el número total de filas en la tabla.

SQL COUNT (DISTINCT columna_nombre) Ejemplo

Ahora queremos contar el número de clientes único en la tabla "orden".

Nosotros usamos la siguiente instrucción SQL:

SELECT COUNT(DISTINCT Cliente) AS NúmeroDeClientes FROM Orden

El conjunto de resultados se verá así:

NúmeroDeClientes

3

Que es el número de clientes únicos (Hansen, Nilsen, y Jensen) en la tabla "orden".

«Anterior

»Siguiente capítulo

SQL PRIMERA () Función

«Anterior

»Siguiente capítulo

________________________________________

98

Page 99: Tecnología_SQL.tutorial

La primera función ()

La primera () devuelve el primer valor de la columna seleccionada.

SQL FIRST () Syntax

SELECT FIRST(columna_nombre) FROM tabla_nombre

SQL FIRST () Ejemplo

Tenemos los siguientes "órdenes" de la tabla:

O_Id FechaPedido OrdenPrecio Cliente

1 2008/11/12 1000 Salazar Longas

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Salazar Longas

4 2008/09/03 300 Salazar Longas

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

Ahora queremos encontrar el primer valor de la “OrdenPrecio " columna.

Nosotros usamos la siguiente instrucción SQL:

SELECT FIRST(OrdenPrecio) AS PrimerOrdenPrecio FROM Orden

Sugerencia: Solución si PRIMERA () no es compatible con:

SELECT OrdenPrecio FROM Orden ORDER BY O_Id LIMIT 1

El conjunto de resultados se verá así:

99

Page 100: Tecnología_SQL.tutorial

PrimerOrdenPrecio

1000

SQL LAST () Función

La LAST () Función

El LAST () devuelve el último valor de la columna seleccionada.

SQL LAST () Syntax

SELECT LAST(columna_nombre) FROM tabla_nombre

SQL LAST () Example

Tenemos los siguientes "órdenes" de la Tabla:

O_Id FechaPedido OrdenPrecio Cliente

1 2008/11/12 1000 Salazar Longas

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Salazar Longas

4 2008/09/03 300 Salazar Longas

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

100

Page 101: Tecnología_SQL.tutorial

Ahora queremos encontrar el valor último de los "OrdenPrecio"

Columna.

Nosotros usamos la siguiente instrucción SQL:

SELECT LAST(FechaPedido) AS PrimerOrdenPrecio FROM Orden

Sugerencia: Solución si ÚLTIMO () no es compatible con:

SELECT FechaPedido FROM Orden ORDER BY O_Id DESC LIMIT 1

El conjunto de resultados se verá así:

PrimerOrdenPrecio

100

SQL MAX () Función

La MAX () Función

El MAX () devuelve el valor más grande de la columna seleccionada.

SQL MAX () Syntax

SELECT MAX (columna_nambre) FROM tabla_nombre

SQL MAX () Ejemplo

Tenemos los siguientes "órdenes" de la tabla:

O_Id FechaPedido OrdenPrecio Cliente

1 2008/11/12 1000 Salazar Longas

2 2008/10/23 1600 Nilsen

101

Page 102: Tecnología_SQL.tutorial

3 2008/09/02 700 Salazar Longas

4 2008/09/03 300 Salazar Longas

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

Ahora queremos encontrar el valor más grande de la "OrdenPrecio " de la columna.

Nosotros usamos la siguiente instrucción SQL:

SELECT MAX(OrdenPrecio) AS MayorPrecioOrden FROM Orders

El conjunto de resultados se verá así:

MayorPrecioOrden

2000

SQL MIN () Función

El MIN () Función

El MIN () devuelve el menor valor de la columna seleccionada.

SQL MIN () Syntax

SELECT MIN(columna_nombre) FROM tabla_nombre

SQL MIN () Ejemplo

Tenemos los siguientes "órdenes" de mesa:

102

Page 103: Tecnología_SQL.tutorial

O_Id FechaPedido OrdenPrecio Cliente

1 2008/11/12 1000 Salazar Longas

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Salazar Longas

4 2008/09/03 300 Salazar Longas

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

Ahora queremos encontrar el valor más pequeño de la "Orden Precio" de la columna.

Nosotros usamos la siguiente instrucción SQL:

SELECT MIN(OrdenPrecio) AS MenorPrecioOrden FROM Orden

El conjunto de resultados se verá así:

MenorPrecioOrden

100

SQL SUM () Función

La función SUMA ()

El SUM () devuelve la suma total de una columna numérica.

SQL SUM () Syntax

SELECT SUM(columna_nombre) FROM tabla_nombre

103

Page 104: Tecnología_SQL.tutorial

SQL SUM () Ejemplo

Tenemos los siguientes "órdenes" de mesa:

O_Id FechaPedido OrdenPrecio Cliente

1 2008/11/12 1000 Salazar Longas

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Salazar Longas

4 2008/09/03 300 Salazar Longas

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

Ahora queremos encontrar la suma de todos "de precios para los "campos ".

Nosotros usamos la siguiente instrucción SQL:

SELECT SUM(FechaPedido) AS OrdenTotal FROM Orden

El conjunto de resultados se verá así:

OrdenTotal

5700

SQL GROUP BY Declaración de

Las funciones de agregado a menudo se necesita una declaración POR GRUPO agregó.

104

Page 105: Tecnología_SQL.tutorial

El GRUPO DE Declaración

La instrucción GROUP BY se utiliza en combinación con las funciones de agregado al grupo de conjunto de

resultados por una o más columnas.

SQL GROUP BY Syntax

SELECT columna_nombre, función_agregada (columna_nombre)

FROM tabla_nombre

WHERE columna_nombre valor operador

GROUP BY columna_nombre

SQL GROUP BY Ejemplo

Tenemos los siguientes "órdenes" de la Tabla:

O_Id FechaPedido OrdenPrecio Cliente

1 2008/11/12 1000 Salazar Longas

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Salazar Longas

4 2008/09/03 300 Salazar Longas

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

Ahora queremos encontrar la suma total (total de la orden) de cada cliente.

Tendremos que utilizar la instrucción GROUP BY para agrupar los clientes.

Nosotros usamos la siguiente instrucción SQL:

SELECT Cliente, SUM (OrdenPrecio) FROM Orden

GROUP BY Cliente

105

Page 106: Tecnología_SQL.tutorial

El conjunto de resultados se verá así:

Cliente SUM(OrdenPrecio)

Salazar Longas 2000

Nilsen 1700

Jensen 2000

Guay! ¿No es? :)

Vamos a ver qué pasa si omite la sentencia GROUP BY:

SELECT Cliente, SUM(OrdenPrecio) FROM Orden

The result-set will look like this:

Cliente SUM(OrdenPrecio)

Salazar Longas 5700

Nilsen 5700

Salazar Longas 5700

Salazar Longas 5700

Jensen 5700

Nilsen 5700

El conjunto de resultados anterior no es lo que queríamos.

Explicación de por qué la instrucción SELECT anterior no se puede utilizar:. La instrucción SELECT anterior

tiene dos columnas especificadas (cliente y SUM (OrdenPrecio) El "SUM (OrdenPrecio)" devuelve un solo

valor (que es la suma total de

el "OrdenPrecio" columna), mientras que el "Cliente" devuelve 6 valores (un valor para cada fila de la "Orden"

de mesa). Esto por lo tanto no nos da el resultado correcto. Sin embargo, ustedes han visto que la instrucción

106

Page 107: Tecnología_SQL.tutorial

GROUP BY resuelve este problema.

________________________________________

GROUP BY más de una columna

También puede utilizar la instrucción GROUP BY en más de una columna, así:

SELECT Cliente, FechaPedido, SUM(OrdenPrecio) FROM Orden

GROUP BY Cliente, FechaPedido

SQL HAVING Cláusula

La cláusula HAVING

La cláusula HAVING se ha añadido a SQL porque la palabra clave WHERE no se podía utilizar con las

funciones de agregado.

SQL HAVING Syntax

SELECT columna_nombre, función_agregada (columna_nombre)

FROM tabla_nombre

WHERE columna_nombre valor operador

GROUP BY columna_nombre

HAVING función_agregada (columna_nombre) valor operador

SQL HAVING Ejemplo

Tenemos los siguientes "órdenes" de tabla:

O_Id FechaPedido OrdenPrecio Cliente

1 2008/11/12 1000 Salazar Longas

2 2008/10/23 1600 Nilsen

3 2008/09/02 700 Salazar Longas

4 2008/09/03 300 Salazar Longas

107

Page 108: Tecnología_SQL.tutorial

5 2008/08/30 2000 Jensen

6 2008/10/04 100 Nilsen

Ahora queremos saber si alguno de los clientes tienen un orden total de menos de 2000.

Nosotros usamos la siguiente instrucción SQL:

SELECT Cliente, SUM(OrdenPrecio) FROM Orden

GROUP BY Cliente

HAVING SUM(OrdenPrecio)<2000

El conjunto de resultados se verá así:

Cliente SUM(OrdenPrecio)

Nilsen 1700

Ahora queremos saber si los clientes "Salazar Longas" o "Jensen" tiene una orden total de más de 1500.

Añadimos una simple cláusula WHERE a la instrucción SQL:

SELECT Cliente, SUM(OrdenPrecio) FROM Orden

WHERE Cliente='Salazar Longas' OR Cliente='Jensen'

GROUP BY Cliente

HAVING SUM(OrdenPrecio)>1500

El conjunto de resultados se verá así:

Cliente SUM (OrdenPrecio )

Salazar Longas 2000

Jensen 2000

108

Page 109: Tecnología_SQL.tutorial

SQL UCASE () Función

El UCASE () Función

El UCASE () convierte el valor de un campo a mayúsculas.

SQL UCASE () Syntax

SELECT UCASE(columna_nombre) FROM tabla_nombre

Syntax for SQL Server

SELECT UPPER(columna_nombre) FROM tabla_nombre

SQL UCASE () Ejemplo

Tenemos los siguientes "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

Ahora queremos seleccionar el contenido de la "Apellido " y "Nombre" por encima de las columnas, y convertir

el "Apellido" columna a mayúsculas.

Nosotros usamos la siguiente instrucción SELECT:

SELECT UCASE(Apellido) as Apellido, Nombre FROM Personas

109

Page 110: Tecnología_SQL.tutorial

El conjunto de resultados se verá así:

Apellido Nombre

Salazar Longas Gustavo

Muñoz Ramón Alfonso

Santacoloma Kelly Yaneth

SQL LCASE () Función

El LCASE () Función

El LCASE () convierte el valor de un campo a minúsculas

SQL LCASE () Syntax

SELECT LCASE(columna_nombre) FROM tabla_nombre

Syntax for SQL Server

SELECT LOWER(columna_nombre) FROM tabla_nombre

SQL LCASE () Ejemplo

Tenemos los siguientes "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 102-46 Bogota

110

Page 111: Tecnología_SQL.tutorial

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

Ahora queremos seleccionar el contenido de la "Apellido " y "Nombre" por encima de las columnas, y

convertir el "Apellido" la columna en minúsculas.

Nosotros usamos la siguiente instrucción SELECT:

SELECT LCASE(Apellido) as Nombre, Nombre FROM Personas

El conjunto de resultados se verá así:

Apellido Nombre

Salazar Longas Gustavo

Muñoz Ramón Alfonso

Santacoloma Kelly Yaneth

SQL MID () Función

La MID () Función

El MID () se utiliza para extraer los caracteres de un campo de texto.

SQL MID() Syntax

SELECT MID(columna_nombre, inicio [,length]) FROM tabla_nombre

Parámetro Descripción

columna_nombre Requerido. El campo para extraer los caracteres de

111

Page 112: Tecnología_SQL.tutorial

start Requerido. Especifica la posición inicial (empieza en 1)

length Facultativo. El número de caracteres a devolver. Si se omite, el

MID () devuelve el resto del texto

SQL MID () Ejemplo

Tenemos los siguientes "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

Ahora queremos extraer los cuatro primeros caracteres de encima de la "Ciudad " de la columna.

Nosotros usamos la siguiente instrucción SELECT:

SELECT MID(Ciudad,1,4) as PequeñaCiudad FROM Personas

El conjunto de resultados se verá así:

PequeñaCiudad

Bogo

Bogo

Bogo

112

Page 113: Tecnología_SQL.tutorial

SQL LEN () Función

La Función LEN ()

La LEN () devuelve la longitud del valor en un campo de texto.

SQL LEN () Syntax

SELECT LEN(columna_nombre) FROM tabla_nombre

SQL LEN () Ejemplo

Tenemos los siguientes "Personas" tabla:

P_Id Apellido Nombre Dirección Ciudad

1 Salazar Longas Gustavo Diag. 89B # 115ª-03 Int 4 Apt 302 Bogotá

2 Muñoz Ramón Alfonso Transversal 30 # 101-46 Bogotá

3 Santacoloma Kelly Yaneth Calle 85 # 18-36 Bogotá

Ahora queremos seleccionar la longitud de los valores en la columna "Dirección" de arriba.

Nosotros usamos la siguiente instrucción SELECT:

SELECT LEN(Dirección) as LengthOfAddress FROM Personas

LengthOfAddress =Longitud de la Dirección

El conjunto de resultados se verá así:

LengthOfAddress

12

113

Page 114: Tecnología_SQL.tutorial

9

9

SQL ROUND () Función

La Función ROUND ()

La función ROUND () se utiliza para redondear un campo numérico con el número de decimales especificado.

SQL ROUND () Syntax

SELECT ROUND(columna_nombre,decimal) FROM tabla_nombre

Parámetro Descripción

columna_nombre Requerido. El campo de todo el año

decimales Requerido. Especifica el número de decimales a ser devuelto.

SQL ROUND () Ejemplo

Tenemos los siguientes "Productos" de tabla:

Prod_Id ProductoNombre Unidad PrecioUnitario

1 Jarlsberg 1000 g 10.45

2 Mascarpone 1000 g 32.56

3 Gorgonzola 1000 g 15.67

114

Page 115: Tecnología_SQL.tutorial

Ahora queremos mostrar el nombre del producto y el precio redondeado al entero más cercano.

Nosotros usamos la siguiente instrucción SELECT:

SELECT ProductoNombre, ROUND(PrecioUnitario,0) as PrecioUnitario FROM Productos

El conjunto de resultados se verá así:

ProductoNombre PrecioUnitario

Jarlsberg 10

Mascarpone 33

Gorgonzola 16

SQL NOW () Función

La Función NOW ()

El NOW () devuelve la fecha actual del sistema y el tiempo.

SQL NOW () Syntax

SELECT NOW() FROM tabla_nombre

SQL NOW () Ejemplo

Tenemos los siguientes "Productos" de tabla:

Prod_Id ProductoNombre Unidad PrecioUnitario

1 Jarlsberg 1000 g 10.45

115

Page 116: Tecnología_SQL.tutorial

2 Mascarpone 1000 g 32.56

3 Gorgonzola 1000 g 15.67

Ahora queremos mostrar los productos y precios por día de hoy.

Nosotros usamos la siguiente instrucción SELECT:

SELECT ProductoNombre, PrecioUnitario, Hoy() as PorFecha FROM Productos

El conjunto de resultados se verá así:

ProductoNombre PrecioUnitario PorFecha

Jarlsberg 10.45 10/7/2008 11:25:02 AM

Mascarpone 32.56 10/7/2008 11:25:02 AM

Gorgonzola 15.67 10/7/2008 11:25:02 AM

SQL FORMAT () Función

La Función FORMAT ()

El formato () se utiliza para dar formato a un campo cómo se va a mostrar.

SQL FORMAT () Syntax

SELECT FORMAT(columna_nombre,formato) FROM tabla_nombre

Parámetro Descripción

columna_nombre Requerido. El campo para dar formato.

116

Page 117: Tecnología_SQL.tutorial

formato Requerido. Especifica el formato.

SQL FORMAT () Ejemplo

Tenemos los siguientes "Productos" de tabla:

Prod_Id ProductoNombre Unidad PrecioUnitario

1 Jarlsberg 1000 g 10.45

2 Mascarpone 1000 g 32.56

3 Gorgonzola 1000 g 15.67

Ahora queremos mostrar los productos y precios por día de hoy (con fecha de hoy se muestra en el siguiente

formato"AAAA-MM-DD").

Nosotros usamos la siguiente instrucción SELECT:

SELECT ProductoNombre, PrecioUnitario, FORMAT(Hoy (),'YYYY-MM-DD') as PorFecha

FROM Productos

El conjunto de resultados se verá así:

ProductoNombre PrecioUnitario PorFecha

Jarlsberg 10.45 2008-10-07

Mascarpone 32.56 2008-10-07

Gorgonzola 15.67 2008-10-07

117

Page 118: Tecnología_SQL.tutorial

SQL de referencia rápida de W3Schools

SQL Statement Syntax

AND / OR SELECT columna_nombre(s)

FROM tabla_nombre

WHERE condición

AND|OR condición

ALTER TABLE ALTER TABLE tabla_nombre

ADD columna_nombre TipoDeDato

o

ALTER TABLE tabla_nombre

DROP COLUMN columna_nombre

AS (alias) SELECT columna_nombre AS columna_alias

FROM tabla_nombre

o

SELECT columna_nombre

FROM tabla_nombre  AS tabla_alias

BETWEEN SELECT columna_nombre(s)

FROM tabla_nombre

WHERE columna_nombre

BETWEEN valor1 Y valor2

CREATE DATABASE CREATE DATABASE BaseDeDatos_nombre

CREATE TABLE CREATE TABLE tabla_nombre

(

columna_nombre1 tipo_datos,

column_name2 tipo_datos,

column_name2 tipo_datos,

...

118

Page 119: Tecnología_SQL.tutorial

)

CREATE INDEX CREATE INDEX indice_nombre

ON tabla_nombre (columna_nombre)

o

CREATE UNIQUE INDEX index_name

ON tabla_nombre (columna_nombre)

CREATE VIEW CREATE VIEW vista_nombre AS

SELECT columna_nombre(s)

FROM tabla_nombre

WHERE condición

DELETE DELETE FROM tabla_nombre

WHERE alguna_columna=algún_valor

o

DELETE FROM tabla_nombre

(Nota: ¡Borra toda la tabla!)

DELETE * FROM tabla_nombre

(Nota: ¡Borra toda la tabla!)

DROP DATABASE DROP DATABASE BaseDatos_nombre

DROP INDEX DROP INDEX tabla_nombre.índice_nombre (SQL Server)

DROP INDEX índice_nombre ON tabla_nombre (MS Access)

DROP INDEX índice_nombre (DB2/Oracle)

ALTER TABLE tabla_nombre

DROP INDEX índice_nombre (MySQL)

DROP TABLE DROP TABLE tabla_nombre

GROUP BY SELECT columna_nombre, agregar_función(columna_nombre)

FROM tabla_nombre

WHERE columna_nombre valor operador

GROUP BY columna_nombre

HAVING SELECT columna_nombre, agregar_función(columna_nombre)

FROM tabla_nombre

119

Page 120: Tecnología_SQL.tutorial

WHERE columna_nombre valor operador

GROUP BY columna_nombre

HAVING agregar_función(columna_nombre) valor operador

IN SELECT columna_nombre(s)

FROM tabla_nombre

WHERE columna_nombre

IN (valor1, valor2,…)

INSERT INTO INSERT INTO tabla_nombre

VALUES (valor1, valor2, valor3,...)

o

INSERT INTO tabla_nombre

(column1, columna2, columna3,...)

VALUES (valor1, valor2, valor3,...)

INNER JOIN SELECT columna_nombre(s)

FROM tabla_nombre1

INNER JOIN tabla_nombre 2

ON table_nombre1.columna_nombre=tabla_ nombre2.columna_ nombre

LEFT JOIN SELECT columna_nombre(s)

FROM tabla_nombre

LEFT JOIN tabla_nombre2

ON table_ nombre 1.columna_nombre=table_nombre2.columna_nombre

RIGHT JOIN SELECT columna_nombre(s)

FROM table_name1

RIGHT JOIN tabla_nombre2

ON table_nombre1.columna_nombre=tabla_nombre 2.columna_nombre

FULL JOIN SELECT columna_nombre(s)

FROM tabla_nombre1

FULL JOIN tabla_nombre2

ON table_nombre1.columna_nombre=tabla_nombre2.columna_nombre

LIKE SELECT columna_nombre(s)

FROM tabla_nombre

WHERE columna_nombre LIKE pattern

ORDER BY SELECT columna_nombre(s)

120

Page 121: Tecnología_SQL.tutorial

FROM tabla_nombre

ORDER BY columna_nombre [ASC|DESC]

SELECT SELECT columna_nombre(s)

FROM tabla_nombre

SELECT * SELECT *

FROM tabla_nombre

SELECT DISTINCT SELECT DISTINCT columna_nombre(s)

FROM tabla_nombre

SELECT INTO SELECT *

INTO new_tabla_nombre [IN BaseDatosExterna]

FROM old_tabla_nombre

o

SELECT columna_nombre(s)

INTO new_tabla_nombre [IN BaseDatosExterna]

FROM old_tabla_nombre

SELECT TOP SELECT TOP NúmeroPorCiento columna_nambre(s)

FROM tabla_nombre

TRUNCATE TABLE TRUNCATE TABLE tabla_nombre

UNION SELECT columna_nombre(s) FROM tabla_nombre1

UNION

SELECT columna_nombre(s) FROM tabla_nombre2

UNION ALL SELECT columna_nombre(s) FROM tabla_nombre1

UNION ALL

SELECT columna_nombre(s) FROM tabla_nombre2

UPDATE UPDATE tabla_nombre

SET column1=valor, columna2=valor,...

WHERE alguna_columna=algún_valor

WHERE SELECT columna_nombre(s)

FROM tabla_nombre

WHERE columna_nombre valor operador

Source :

121

Page 122: Tecnología_SQL.tutorial

http://www.w3schools.com/sql/sql_quickref.asp

SQL Hosting

SQL Hosting

Tenemos los siguientes "órdenes" de tabla:

Si quieres que tu sitio web para ser capaz de almacenar y mostrar datos de una base de datos, el servidor

web debe tener acceso a un sistema de base de datos que utiliza el lenguaje SQL.

Si su servidor web, será presentado por un proveedor de servicios Internet (ISP), que tendrá que buscar para

SQL planes de alojamiento.

El SQL más comunes de alojamiento de bases de datos son MySQL, MS SQL Server y MS Access.

Usted puede tener bases de datos SQL Server en Windows y Linux / sistemas operativos UNIX.

A continuación se muestra una visión general de qué base de datos del sistema que se ejecuta en el SO.

MS SQL Server

Sólo se ejecuta en el sistema operativo Windows.

MySQL

Funciona tanto en Windows y Linux / sistemas operativos UNIX.

MS Access (recomendado sólo para los pequeños sitios web)

Sólo se ejecuta en el sistema operativo Windows.

Para obtener más información acerca de alojamiento web, por favor visite nuestro Hosting tutorial.

Usted ha aprendido de SQL, ¿y ahora qué?

________________________________________

SQL Resumen

Este tutorial de SQL ha enseñado el lenguaje de programación estándar para acceder y manipular los

sistemas de base de datos.

Usted ha aprendido la forma de ejecutar las consultas, recuperar datos, insertar nuevos registros, eliminar

registros y actualizar los registros en una base de datos con SQL.

Usted también ha aprendido a crear bases de datos, tablas e índices con SQL, y la forma de gota.

Usted ha aprendido las funciones de agregado más importante en SQL.

Ahora sé que SQL es el lenguaje estándar que funciona con todos los sistemas de base de datos conocida

como MS SQL Server, IBM DB2, Oracle, MySQL y MS Access.

________________________________________

122

Page 123: Tecnología_SQL.tutorial

Ahora usted sabe SQL, ¿qué sigue?

Nuestra recomendación es aprender acerca de ADO o MySQL PHP.

Si desea obtener más información acerca de ADO, ADO, visite nuestro tutorial.

Si desea obtener más información sobre MySQL, por favor visite nuestro tutorial de PHP.

SQL Quiz

________________________________________

Usted puede probar sus habilidades con SQL W3Schools Quiz’.

________________________________________

La prueba

La prueba contiene 20 preguntas y no hay límite de tiempo.

La prueba no es oficial, es sólo una buena manera de ver lo mucho que sabe, o no sabe, acerca de SQL.

________________________________________

Su puntuación se contabilizará

Usted recibirá 1 punto por cada respuesta correcta. Al final del concurso, su puntuación total en la pantalla. La

puntuación máxima es de 20 puntos.

¡Buena suerte! Inicio del Concurso de SQL

123