Está en la página 1de 66
Manual SQL Introducción al lenguaje SQL Julio Cesar Avellaneda Sua
Manual SQL
Introducción al lenguaje SQL
Julio Cesar Avellaneda Sua
V 1.0
V 1.0
Manual SQL V 1.0
Manual SQL
V 1.0

Tabla de Contenido

Lenguaje

SQL

 

4

1.

Crear y eliminar una base de datos

4

2.

Almacenamiento

4

3.

Crear y eliminar una tabla

4

4.

Tipos de datos

5

5.

Comentarios

5

6.

Insertar datos

6

7.

Consultas básicas

7

8.

Consultas con condición (where)

7

9.

Función order

by

7

9.

Operadores lógicos (and – or – not)

8

9.

Alias a una tabla

8

10.

Consultas multitabla

9

11.

Valores null y not null

9

12.

Clave primaria

10

15.

Características identity

11

16.

Borrado con truncate table

12

17.

Borrado con delete

13

18.

Tipo de dato fecha

13

19.

Valores por defecto (default)

13

20.

Alias a una columna

14

20.

Operador relacional (is null)

15

20.

Operador relacional (between)

15

20.

Operador relacional (in)

16

20.

Operador

patronal (like)

16

20.

Operador (count)

18

25.

Funciones

18

26.

Funciones de agregación

18

26.

Agrupar registros (group by)

19

27.

Funciones para el manejo de cadenas

20

28.

Funciones matemáticas

21

29.

Funciones para el manejo de fechas

22

29.

Seleccionar grupos (having)

23

29.

Modificador del group by (rollup)

23

29.

Modificador del group by (cube)

24

29.

Cláusula compute

25

29.

Registros duplicados (distinct)

25

29.

Cláusula top

26

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

1

Manual SQL V 1.0
Manual SQL
V 1.0

29.

Clave primaria compuesta

 

26

29.

Integridad de datos

27

29.

Restricción default

 

27

29.

Restricción check

28

29.

Deshabilitar restricciones (check)

29

29.

Restricción

primary key

 

30

29.

Restricción unique

 

30

29.

Procedimiento almacenado sp_helpconstraint

31

29.

Eliminar restricciones

 

31

29.

Crear y asociar reglas (create rule – sp_bindrule)

32

29.

Restricción check y reglas

 

33

29.

Eliminar y desasociar reglas (sp_unbindrole y drop rule)

33

29.

Información de reglas

 

34

29.

Valores predeterminados (default)

34

29.

Desasociar y eliminar valores predeterminados

35

29.

Información de valores predeterminados

36

29.

Índices

36

29.

Clases de índices

 

37

29.

Creación de índices

37

29.

Eliminar índices

38

21.

Combinación

interna (inner join)

39

22.

Combinación externa izquierda (left join)

40

23.

Combinación

externa

derecha (right join)

41

24.

Combinación externa completa (full join)

42

24.

Combinaciones cruzadas (cross join)

42

24.

Foreign Key

 

43

24.

Restricción foreign Key

 

43

24.

Acciones restricción foreign Key

44

24.

Deshabilitar y eliminar restricción foreign Key

45

24.

Restricciones al crear una tabla

45

24.

Operador unión

 

46

24.

Agregar y eliminar campos

 

47

24.

Modificar campos

 

47

24.

Agregar campos y restricciones

48

24.

Campos

calculados

48

24.

Subconsultas

 

49

25.

Subconsultas

como expresión

 

49

26.

Subconsultas

con

in

50

26.

Subconsultas con

any – some - all

51

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

2

Manual SQL V 1.0
Manual SQL
V 1.0

26.

Subconsultas correlacionadas

 

51

26.

Exists y no exists

52

27.

Subconsultas

en update y delete

 

53

28.

Subconsultas

insert

53

29.

Crear una tabla a partir de otra

54

29.

Comando Go

54

29.

Vistas

54

30.Vistas información

 

55

31.

Vistas

encriptar

56

31.

Vistas eliminar

56

32.

Vistas (modificar datos de una tabla)

56

32.

Vistas modificar

57

32.

Case (control de flujo)

 

57

32.

If (control de

flujo)

58

33.

Variables de usuario

59

33.

Tipo de dato text, ntext e image

60

33.

Procedimientos almacenados

61

33.

Procedimientos

almacenados

crear

61

33.

Procedimientos

almacenados

eliminar

63

33.

Procedimientos almacenados y paràmetros de entrada

63

33.

Procedimientos almacenados y paràmetros de salida

63

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

3

Manual SQL V 1.0
Manual SQL
V 1.0

IntroducciónIntroducciónIntroducciónIntroducción alalalal llenguajellenguajeenguajeenguaje SQLSQLSQLSQL

1. Crear y eliminar una base de datos

Para crear una base de datos, solo es necesario una línea de código, cuando se compila esta línea, nos es posible crear tablas y demás objetos que necesitemos.

Sintaxis:

Create database nombre_base_de_datos

Ejemplo:

Create database supermercado

La sintaxis para eliminar una base de datos solo es necesario compilar lo siguiente:

Sintaxis:

Drop database nombre_base_de_datos

Ejemplo:

Drop database supermercado

2. Almacenamiento

Una base de datos, almacena la información en tablas, estructurados los datos en filas y en columnas, siendo así que cada columna es un campo y cada fila es un registro.

Un campo es un espacio en el cual se puede almacenar un único registro, en relación al tipo de dato que pueda contener el campo.

Un registro es el dato o valor que tiene un campo, este valor debe coincidir con el tipo de dato del campo.

3. Crear y eliminar una tabla

En una tabla se pueden incluir muchos campos, y cada campo puede tener un tipo da dato diferente.

Sintaxis básica:

Create table nombre_tabla (

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

4

Manual SQL V 1.0
Manual SQL
V 1.0

Ejemplo:

Campo_1 tipo_de_dato, Campo_2 tipo_de_dato, Campo_n tipo_de_dato,

)

Create table empleados ( Nombre_empleado varchar (20), Edad_empleado int,

)

También es posible eliminar una tabla que ya se ha creado, es importante tener en cuenta que al eliminar la tabla con ella se eliminará toa la información que contiene.

Sintaxis:

Ejemplo:

4. Tipos de datos

5. Comentarios

Drop table nombre_tabla

Drop table empleados

Un comentario es una línea de código que no se compila al ejecutar el script, los comentarios son útiles cuando se quiere aclarar instrucciones o segmentar el código de manera que sea más fácil su lectura.

Existen dos clases de comentarios, la primer clase es un comentario que ocupa una sola línea.

Sintaxis:

--- comentario ---

La segunda clase es un cometario que puede ocupar una o varias líneas.

Sintaxis:

/* este es un ejemplo de un

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

5

Manual SQL V 1.0
Manual SQL
V 1.0

6. Insertar datos

comentario */

Cuando se insertan datos en una tabla, es necesario que el tipo de dato ingresado

concuerde con

el tipo

de dato

de

el campo,

de no ser así,

ocurrirá

un

error en

la

compilación.

Existen dos formas para ingresar datos, la primera es:

Sintaxis:

Insert into nombre_tabla (campo1,campo2,…,campon) Values (valorcampo1,valorcampo2,…,valorcampon)

Ejemplo:

Insert into empleados (nombre_empleado,edad_empleado) Values (‘Juan Carlos’,25)

En la primera línea de código, se especifica la tabla y el/los campo(s) que vamos a ingresar, en la segunda línea, ingresamos los valores correspondientes en el mismo orden que en la anterior línea. Si el valor en un entero no es necesario usar la comilla, de lo contrario el valor siempre debe ir encerrado por comillas simples.

La segunda manera es similar:

Sintaxis:

Insert into nombre_tabla Values (valorcampo1,valorcampo2,…,valorcampon)

Ejemplo:

Insert into empleados Values (‘Juan Carlos’,25)

De esta manera, no se especifica los campos a los cuales les vamos a ingresar valor, por lo cual, se debe ingresar valor a todos los campos de la tabla en el orden que fueron escritos cuando se creo la tabla.

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

6

Manual SQL V 1.0
Manual SQL
V 1.0

7. Consultas básicas

Una consulta es un procedimiento por el cual se recuperan registros(valores) de una o

varias tablas. La primera consulta, recupera todos los datos de una tabla.

Sintaxis:

Select * From nombre_tabla1

Ejemplo:

Select * From empleados

En la primera línea, la función “select” sirve para indicar los campos que se quiere ver, el “*” indica que se deben mostrar todos los campos de la tabla; en la segunda línea, con el “from” se hace referencia a la tabla.

8. Consultas con condición (where)

Es posible realizar una consulta y recuperar solo algunos registros de acuerdo a una

condición o necesidad.

Sintaxis:

Select campo_1,campo_2 From nombre_tabla1 Where condición

Ejemplo:

Select nombre,edad From empleados Where edad = 25

La consulta anterior, muestra el nombre y la edad de todos los empleados que tengan una edad de 25 años.

9. Función order by

Las función order by permite mostrar los registros organizados por algún campo.

Sintaxis:

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

7

Manual SQL V 1.0
Manual SQL
V 1.0

Select nombrecampo From nombre_tabla Order by campo

Ejemplo:

Select * From empleados Order by sueldo desc

También es posible ordenar por varios campos, así como de manera ascendiente (asc) o descendiente (Desc).

9.

Operadores lógicos (and – or – not)

Un operador lógico permite establecer más de una condición es una consulta, es decir combinan condiciones, estos operadores deben ir en la cláusula where. El operador and significa (y), el operador or significa (o) y el operador not significa (no).

 

Sintaxis:

Select nombrecampo From nombre_tabla Where condicion1 and/or/not condicion

Ejemplo:

Select * From empleados Where edad = 25 and/or/not código = 2

9.

Alias a una tabla

Algunas veces, se hace necesario escribir el nombre de una tabla varias veces en una

consulta, sin embargo, este proceso es un demorado si en la consulta contamos con varias tablas, por esta razón, usamos un alias para cada tabla en nuestra consulta.

Sintaxis:

Select campo_1,campo_2

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

8

Manual SQL V 1.0
Manual SQL
V 1.0

From nombre_tabla1 alias

La segunda clase es un cometario que puede ocupar una o varias líneas.

Ejemplo:

Select nombre,edad From empleados e

En la segunda línea, se llama a la tabla empleados y se le asigna un “alias” con la letra “e”, así cuando se necesite de nuevo la tabla solo es necesario usar la letra “e” correspondiente a su alias asignado.

10. Consultas multitabla

Generalmente, es necesario usar más de una tabla para una consulta, y es aquí donde los alias nos serán de gran utilidad.

Sintaxis:

Select alias1.campo_1,alias2.campo_2,aliasn.campo_n From nombre_tabla1 alias1, nombre_tablan aliasn

Ejemplo:

Select e.nombre,d.nombre From empleados e, departamentos d

En la consulta anterior, se llama dos tablas cada una con un alias diferente, el cual es usado en el “select” para saber a que tabla y campo se hace referencia. Se desea mostrar el nombre del empleado y el departamento en el cual trabaja, para ello se agrega una condición, por lo cual la consulta quedaría:

Ejemplo:

Select e.nombre,d.nombre From empleados e, departamentos d Where e.codigodepartamento = d.codigodepartamento

11. Valores null y not null

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

9

Manual SQL V 1.0
Manual SQL
V 1.0

Anteriormente vimos como crear campos, aquí se explicará como agregar una característica importante a un campo.

La palabra “null” hace referencia a un valor inexistente o desconocido, no se debe confundir con un valor 0, al contrario, si una variable es “not null”, significa que debe tener una valor real y conocido en relación a su tipo de dato. Cuando se declara una variable y no se especifica si el “null” o “not null”, esta por defecto es “null”.

Sintaxis básica:

Create table nombre_tabla ( Campo_1 tipo_de_dato not null, Campo_2 tipo_de_dato,

)

A continuación se muestran dos ejemplos para explicar como es el funcionamiento del “null” y el “not null”.

Ejemplo:

Create table empleados ( Nombre_empleado varchar (20) not null, Edad_empleado int,

)

El primer campo creado ha sido declarado “not null”, es decir al ingresar valores en la tabla, es obligatorio ingresar un valor para este campo (en este caso un nombre); en el segundo campo creado, no se le ha declarado nada, quiere decir que es de tipo “null”, por consiguiente cuando ingresemos valores en la tabla no será necesario ingresar un valor para este campo (una edad en este caso).

12. Clave primaria

Una clave primaria es un campo que identifica un registro, este valor no se repite, es único en la tabla. Este campo será utilizado para crear vínculos en las tablas.

Sintaxis:

Create table nombre_tabla (

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

10

Manual SQL V 1.0
Manual SQL
V 1.0

Campo_1 tipo_de_dato not null, Campo_2 tipo_de_dato, Primary key (nombrecampo),

)

Ejemplo:

Create table empleados ( Codigo_empleado int not null,

Nombre_empleado varchar (20) not null, Edad_empleado int, Primary key (codigo_empleado)

)

En la tabla anterior, se ha referenciado el campo codigo_empleado como llave primaria, quiere decir, que se puede encontrar dos o más empleados con el mismo nombre y la misma edad, pero nunca con el mismo codigo.

15. Características identity

Un campo con un atributo identity, se incrementa automáticamente, sin embargo, se le puede dar un valor inicial de la secuencia y el margen de incremento.

Sintaxis:

Create table nombre_tabla (

Campo_1 tipo_de_dato identity (x,y) not null, Campo_2 tipo_de_dato,

)

Ejemplo:

Create table empleados ( Codigo_empleado int identity (50,5) not null, Nombre_empleado varchar (20) not null, Edad_empleado int,

)

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

11

Manual SQL V 1.0
Manual SQL
V 1.0

Al declarar el atributo identity entre paréntesis le indicamos el valor inicial (x) y el incremento (y). En el ejemplo, el campo codigo_empleado comienza en 50 y se incrementa de 5 en 5, quiere decir que los valores serán 55, 60,…

Se puede ver el valor inicial de un campo y el incremento de la siguiente forma:

Sintaxis:

Select ident_seed (‘nombrecampo’)

Sintaxis:

Select ident_incr (‘nombrecampo’)

Se ha dicho que no se puede ingresar un valor a un campo, sin embargo, es posible al activar esa opción identity_insert.

Sintaxis:

Set identity_insert nombrecampo on;

Para desactivar la opción de ingresar valores en un campo identity, se necesita compilar lo siguiente:

Sintaxis:

Set identity_insert nombrecampo off;

16. Borrado con truncate table

La función truncate, permite borrar todos los registros de una tabla y conserva su estructura original. Una ventaja de borrar con truncate table es su velocidad, si se desea borrar una tabla con muchos registros, el tiempo de ejecución con truncate table es mucho menor que con otras funciones tales como delete.

Sintaxis:

Truncate table nombre_tabla

Ejemplo:

Truncate table empleados

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

12

Manual SQL V 1.0
Manual SQL
V 1.0

Otra de las ventajas de hacer un borrado con truncate table, es que si en la tabla existe un campo con un atributo identity, la secuencia se inicia de nuevo, mientras que si se hace un borrado con delete, la secuencia no se inicia de nuevo.

17. Borrado con delete

La función delete, permite borrar un registro especifico o bien toda la tabla, sin embargo, si se desea borrar todos los registros de una tabla es más rápido hacerlo mediante un truncate table.

Sintaxis:

Delete From nombre_tabla Where condición

Ejemplo:

Delete From empleados Where empleado = ‘juan’

Si al realizar el borrado, no usamos ninguna condición, se eliminarán todos los registros de la tabla, sin embargo, sin existe algún campo identity, la secuencia continua teniendo en cuenta el mayor valor que había guardado.

18. Tipo de dato fecha

El tipo de dato fecha permite varias formas de ingreso, sin embargo, es conveniente definir que formato se va a utilizar. Para definir el tipo de ingreso de fecha de usa lo siguiente.

Set dateformat dmy (dia-mes-año)

19. Valores por defecto (default)

Un valor por defecto se inserta cuando no está presente al ingresar un registro, un valor por defecto puede ser asignado a campos “null” o “not null” pero no a campos “identity”.

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

13

Manual SQL V 1.0
Manual SQL
V 1.0

El valor por defecto se declara cuando se crea la tabla y es un atributo de uno o varios campos, si el valor por defecto es de tipo de dato numérico no es necesario usar comillas, de lo contrario si.

Sintaxis:

Create table nombre_tabla (

Campo_1 tipo_de_dato default valor, Campo_2 tipo_de_dato,

)

Ejemplo:

Create table empleados (

Nombre_empleado varchar (20) not null, Edad_empleado int default 0,

)

En ejemplo anterior, cuando se ingresan valores para la tabla empleados si omitimos el campo edad, SQL insertará por defecto el valor ‘0’.

20. Alias a una columna

Cuando se realiza una consulta, muchas veces se quiere que el encabezado del resultado tenga un nombre específico para mayor comprensión, también cuando en la consulta se realizan operaciones con varios campos, el encabezado de la columna resultante no tendrá nombre, sin embargo es posible asignarle uno. Para tal efecto es necesario usar la palabra “as”.

Sintaxis:

Select nombrecampo as nuevo nombre From nombre_tabla

Ejemplo:

Select nombre as usuario From empleados

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

14

Manual SQL V 1.0
Manual SQL
V 1.0

En ejemplo anterior, cuando la consulta arroja el resultado, en el encabezado de la columna no tendrá como título nombre sino usuario.

20.

Operador relacional (is null)

El operador relacional “is null”, se utiliza cuando se necesita recuperar los campos cuyos registros son nulos.

 

Sintaxis:

Select nombrecampo From nombre_tabla Where campo is null

Ejemplo:

Select nombre From empleados Where e_mail is null

20.

Operador relacional (between)

El operador relacional “between”, permite trabajar con intervalos de valores, este operador permite trabajar con campos de tipo numéricos, de fecha y Money. Between significa “entre”.

Sintaxis:

Select nombrecampo From nombre_tabla Where campo between valor1 and valor 2

Ejemplo:

Select nombre From empleados Where edad between 18 and 35

Es posible usar el operador “not” antes del between, lo cual daría como resultado los registros que están fuera del rango especificado.

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

15

Manual SQL V 1.0
Manual SQL
V 1.0

20.

Operador relacional (in)

El operador relacional “in”, se utiliza para saber si el valor de un campo está incluido en una lista de valore especificada.

Sintaxis:

Select nombrecampo From nombre_tabla Where campo in (valor)

Ejemplo:

Select nombre From empleados Where cargo in (‘operario’)

Al igual que con el operador “between”, también es posible anteponer el operador “not” al usar el “in”, lo cual dará como resultado los registros que no estén incluidos en el valor especificado.

20.

Operador patronal (like)

El operador patronal “like”, realiza comparaciones de cadenas. Al usar este operador, es posible que la comparación de la cadena sea total o parcial, lo cual permite mejorar la condición de búsqueda. Sintaxis:

Select nombrecampo From nombre_tabla Where nombre like ‘valor’

Ejemplo:

Select nombre From empleados Where nombre like ‘juan’

El % es un comodín que permite comparar solo una parte de la cadena, es decir, es % reemplaza cualquier cantidad de caracteres, por lo tanto, la búsqueda se realizará sin

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

16

Manual SQL V 1.0
Manual SQL
V 1.0

importar los caracteres existentes a la derecha o izquierda dependiendo del lugar en el cual este el comodín.

Sintaxis:

 

Select nombrecampo From nombre_tabla Where nombre like ‘%valor’ / ‘valor%’ / ‘%valor%’

Ejemplo:

 

Select nombre

From empleados

Where nombre like ‘%ju’ / ‘ju%’ / ‘%j%’

Otro operador comodín es “[]”, este reemplaza cualquier carácter contenido en el conjunto especificada en los corchetes.

Sintaxis:

Select nombrecampo From nombre_tabla Where nombre like ‘[valor1 – valor2]%’

Ejemplo:

Select nombre From empleados Where nombre like ‘[A-G]%’

Otro operador comodín es “^”, este reemplaza cualquier carácter no contenido en el conjunto especificada en los corchetes.

Sintaxis:

Select nombrecampo From nombre_tabla Where nombre like ‘^[valor1 – valor2]%’

Ejemplo:

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

17

Manual SQL V 1.0
Manual SQL
V 1.0

Select nombre From empleados Where nombre like ‘^[A-G]%’

20.

Operador (count)

El operador “count”, cuenta la cantidad de registros de una tabla, incluyendo aquellos que tengan calor nulo, si especificamos un campo en el count, contara todos los registros sin tener en cuenta los que sean nulos en el campo especificado.

 

Sintaxis:

Select count (nombrecampo / *) From nombre_tabla

Ejemplo:

Select count (nombre / *) From empleados

25.

Funciones

 

Una función es un conjunto de sentencias que actúan como unidad lógica. Una función tiene un nombre, retorna una salida y opcionalmente acepta argumentos de entrada.

26.

Funciones de agregación

Una función de agregación es una operación que combina varios valores y solo retorna un valor. Las funciones de agregación son:

Función sum: Realiza la suma de los campos especificados. En el ejemplo se sumará el sueldo de todos los empleados.

Sintaxis básica:

Ejemplo:

Select

From

Select

sum(nombre_campo) as total_sueldo nombre_tabla

sum(sueldo) as total_sueldo

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

18

Manual SQL V 1.0
Manual SQL
V 1.0

From

empleados

Función min y max: Una función min o max compara todos los valores del campo especificado y retorna el menor (min) o el mayor (max) valor dependiendo de que función se utilice. La siguiente consulta retorna el empleado más joven o bien el más viejo.

Sintaxis básica:

Ejemplo:

Select

From

Select

From

min/max(nombre_campo)

nombre_tabla

min/max(edad) as más_joven/más viejo empleados

Función avg: La función avg se utiliza para calcular el promedio de los valores de los registros especificados. El siguiente ejemplo muestra el promedio de edad de todos los empleados.

Sintaxis básica:

Ejemplo:

Select

From

Select

From

avg (nombre_campo) nombre_tabla

avg (edad) as promedio_edad empleados

26. Agrupar registros (group by) La función “group by” combinada con una función de agregación genera valores de resumen para un solo campo. Si en la sentencia del select, existe un campo con función de agregación, es necesario usar un “group by” especificando los campos que no tienen asociados una función de agregación.

Sintaxis básica:

Select

sum(nombre_campo) as total_sueldo

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

19

Manual SQL V 1.0
Manual SQL
V 1.0

Ejemplo:

From

Grupo by

Select

From

Grupo by

nombre_tabla

campo

sum(sueldo) as total_sueldo,nombre empleados nombre

27. Funciones para el manejo de cadenas

Función substring: La función substring devuelve una parte de la cadena especificada como primer argumento, empezando desde la posición especificada en el segundo argumento y de tantos caracteres de longitud como lo indica el tercer argumento.

Sintaxis básica:

Ejemplo:

Select

Select

Retorna tardes

substring (cadena, inicio, longitud)

substring (‘Buenas tardes’,8,6)

Función str: La función str convierte números a caracteres; el primer parámetro indica el valor numérico a convertir, el segundo indica la longitud del resultado (debe ser mayor o igual a la parte entera del número más el signo si lo tuviese), y el tercer argumento, la cantidad de decimales. El segundo y tercer argumento son opcionales y positivos.

Sintaxis básica:

Ejemplo:

Select

Select

str (número, longitud, decimales)

str (123.456,5,3)

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

20

Manual SQL V 1.0
Manual SQL
V 1.0

Retorna 123.5

28. Funciones matemáticas

Las funciones matemáticas realizan operaciones con expresiones numéricas y retornan un resultado. También es posible enviar como argumento un campo de alguna tabla, así

como realizar la consulta utilizando parámetros de selección mediante la cláusula where.

Función abs(x): La función abs retorna el valor absoluto del argumento.

Ejemplo:

Select

abs (-5)

Función ceiling(x): La función ceiling redondea hacia arriba el argumento.

Ejemplo:

Select

ceiling (123.45)

Función floor(x): La función floor redondea hacia abajo el argumento.

Ejemplo:

Select

floor (123.45)

Función %: La función % devuelve el resto de la división

Ejemplo:

Select

22%5

Función power(x,y): La función power eleva el valor de x a la potencia y.

Ejemplo:

Select

power (2,5)

Función square(x): La función square retorna el cuadrado del argumento.

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

21

Manual SQL V 1.0
Manual SQL
V 1.0

Ejemplo:

Select

square (5)

29. Funciones para el manejo de fechas

Las funciones para el manejo de fechas que proporciona SQL, permiten trabajan enviando como argumento el nombre de un campo de tipo datetime o smalldatetime.

Función getdate(): Retorna la fecha y hora actual.

Ejemplo:

Select getdate()

Función datepart (partedefecha, fecha): La función datepart retorna la parte específica de una fecha (año, día, hora). Los valores para partedefecha pueden ser year (año), quarter (cuarto), month (mes), day (día), week (semana), hour (hora), minute (minuto), second (segundo), millisecond (milisegundo).

Ejemplo:

Select datepart(year,getdate())

Función datename (partedefecha, fecha): La función datename retorna el nombre de una parte específica de una fecha. Los valores para partedefecha son los mismos que para la función datepart.

Ejemplo:

Select datename(month,getdate())

Función datediff (partedefecha, fecha1, fecha2): Calcula el intervalo de tiempo (según partedefecha) entre las dos fechas. El resultado es un número entero que hace referencia a fecha2 – fecha1. Los valores para partedefecha son los mismos que para datepart.

Ejemplo:

Select datediff(week,’01/01/2006’,’01/01/2008’)

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

22

Manual SQL V 1.0
Manual SQL
V 1.0

Función day (fecha): Retorna el día de la fecha especificada.

Función month (fecha): Retorna el mes de la fecha especificada.

Función year (fecha): Retorna el año de la fecha especificada.

29.

Seleccionar grupos (having)

 

Así como la cláusula “where” permite seleccionar registros individuales, la cláusula “having”, permite seleccionar un grupo de registros. Si se desea establecer una o más condiciones de salida en una función de agregación, se debe utilizar la cláusula “having”, esta debe ir después del “group by” y antes del “order by”.

 

Sintaxis básica:

Select

campo1, función_de_agregación (campo2)

From

tabla_1

Group by

campo1

Having

condición (función_de_agregación (campo2))

Ejemplo:

Select

nombre, sum(cantidad)

From

productos

Group by

nombre

Having

sum(cantidad) > 10

29.

Modificador del group by (rollup)

Con la cláusula “rollup”, se puede combinar con el “group by” para generar valores de resumen de salida, el operador rollup resume valores de grupos. Al usar este operador, se combinan dos consultas.

Sintaxis básica:

Select

campo1, función_de_agregación (campo2)

From

tabla_1

Group by

campo1

With rollup

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

23

Manual SQL V 1.0
Manual SQL
V 1.0

Ejemplo:

Select

ciudad, count (*) as total

From

empleados

Group by

ciudad

With rollup

La consulta anterior, muestra la cantidad de empleados por ciudad, además incluye una fila (última) en la que muestra el total de empleados. Es decir, se combinan las siguientes consultas:

Ejemplo:

 

Select

ciudad, count (*) as cantidad

From

empleados

Group by

ciudad

Ejemplo:

 

Select

ciudad, count (*) as total

From

empleados

29. Modificador del group by (cube)

El “cube” cumple la misma función que el operador “rollup”, a diferencia que este genere filas de resumen para todas las combinaciones posibles de los valores de los campos por los cuales se agrupa. Es muy importante el order en que se escriben los campos en el “group by”, puesto que la agrupación final la hace en base al último campo escrito.

Sintaxis básica:

 

Select

campo1, campo2, función_de_agregación (campo3)

From

tabla_1

Group by

campo1, campo2

With cube

Ejemplo:

 

Select

id_departamento, ciudad, count(*)

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

24

Manual SQL V 1.0
Manual SQL
V 1.0

From

empleados

Group by

id_departamento, ciudad

With cube

La consulta anterior, muestra la cantidad de empleados por ciudad y por departamento, luego muestra la cantidad total de empleados (hasta aquí igual que con “rollup”), sin embargo, también muestra la cantidad de empleados por ciudad sin importar el departamento.

29.

Cláusula compute

Esta cláusula genera totales que aparecen en columnas extras al final del resultado, se usan con funciones de agrupación. El campo utilizado en el “compute”, debe estar incluido en la lista de campos del “select”. En una misma consulta se pueden utilizar varias funciones “compute”.

 

Sintaxis básica:

Select

campo1, campo2, función_de_agregación (campo3)

From

tabla_1

Compute

function_de_agregación(campo1)

Ejemplo:

Select

nombre, sueldo

From

empleados

Compute

avg(sueldo)

La consulta anterior, muestra el sueldo de cada empleado, adicionalmente el promedio de los sueldos. La siguiente consulta, muestra el promedio del precio de venta de los productos y la cantidad total de todos los productos.

 

Ejemplo:

Select

nombre, precio_venta, cantidad

From

productos

Compute

avg(precio_venta), sum(cantidad)

29.

Registros duplicados (distinct)

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

25

Manual SQL V 1.0
Manual SQL
V 1.0

Con la cláusula “distinct”, se especifica que los registros con ciertos datos duplicados sean obviados en el resultado.

Sintaxis básica:

Ejemplo:

Select

From

Select

From

distinct campo

tabla

distinct id_proveedor empleados

La consulta anterior, muestra el id (código) de cada proveedor, sino se usara el “distinct”, se imprimiría el id del proveedor tantas veces como productos tenga relacionados. Si es necesario, se puede incluir la cláusula “where” en la consulta.

29.

Cláusula top

 

La palabra clave “top” se emplea para obtener solo una cantidad limitada de registros.

 

N

hace referencia al número de registros que se desean obtener. La siguiente consulta

muestra los 5 primeros empleados, es posible optimizar la consulta mediante el uso de

la

cláusula “where”.

Sintaxis básica:

 
 

Select

top n campo

From

tabla

 

Ejemplo:

 

Select

top 5 *

From

empleados

29.

Clave primaria compuesta

Se vio anteriormente, que uno de los atributos que puede tener un campo es ser primario, quiere decir que el valor de este campo será único e irrepetible. Una clave primaria compuesta, se utiliza cuando ningún campo por si solo cumple las condiciones para ser clave.

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

26

Manual SQL V 1.0
Manual SQL
V 1.0

Sintaxis:

Create table nombre_tabla ( Campo_1 tipo_de_dato not null, Campo_2 tipo_de_dato, Primary key (campo1,campo2),

Ejemplo:

)

Create table empleados ( Codigo_empleado int not null, Cédula_empleado varchar (12) not null, Nombre_empleado varchar (20) not null,

Edad_empleado int, Primary key (codigo_empleado,cédula_empleado)

)

29.

Integridad de datos

Al diseñare una base de datos, es muy importante tener en cuenta la integridad de los datos, lo cual significa que la información almacenada debe ser válida, coherente y exacta. SQL ofrece alternativas para controlar, restringir y validar los datos (por ejemplo la clave primaria).

Las restricciones (constraints) son un método para mantener la integridad de los datos, asegurando que los valores ingresados sean válidos y que las relaciones entre tablas se mantenga. El procedimiento almacenado “sp_helpconstraint nombre_tabla”, muestra la información acerca de las restricciones de la tabla.

29.

Restricción default

La restricción “default”, específica un valor por defecto para un campo cuando no se inserta explícitamente. En el capítulo 19, se vio el uso del “default” al crear la tabla. Sin embargo, es posible agregar está restricción a una tabla ya creada.

Sintaxis:

Alter table nombre_tabla Add constraint nombre_constraint

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

27

Manual SQL V 1.0
Manual SQL
V 1.0

Default valor_por_defecto For campo

Ejemplo:

Alter table empleados Add constraint DF_empleados_telefono Default ‘no tiene’ For telefono

Por convención, cuando se da el nombre a las restricciones default, se emplea el siguiente formato: DF_nombretabla_nombrecampo.

Solo es posible agregar un default a un campo y no se puede emplear con la propiedad “identity”. Es posible en el valor por defecto, asignar una función del sistema (ej:

getdate()).

29. Restricción check

La restricción check específica los valores que acepta un campo, evitando que se ingresen valores inapropiados. Un claro ejemplo, es no permitir la entrada de valores negativos en el precio de un artículo.

Sintaxis:

Alter table nombre_tabla Add constraint nombre_constraint Check condición

Ejemplo:

Alter table productos Add constraint CK_productos_preciopositivo Check (precio_compra>=0 and precio_venta>=0)

Por convención, cuando se da el nombre a las restricciones check, se emplea el siguiente formato: CK_nombretabla_nombrecampo.

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

28

Manual SQL V 1.0
Manual SQL
V 1.0

Si en la tabla ya existen registros que no cumplen con la restricción, esta no podrá ser creada hasta que todos registros cumplan con dicha restricción. Además, la condición puede hacer referencia a otros campos de la misma tabla.

29. Deshabilitar restricciones (check)

Es posible agregar una restricción a una tabla cuyos valores almacenados no cumplan con la condición, pero los valores que se ingresen luego de ser creada dicha restricción si la deben cumplir.

Sintaxis:

Alter table nombre_tabla With nocheck Add constraint nombre_constraint Check condición

Ejemplo:

Alter table productos With nocheck Add constraint CK_productos_preciopositivo Check (precio_compra>=0 and precio_venta>=0)

También es posible deshabilitar la restricción por completo para agregar datos o actualizar sin comprobarla.

Sintaxis:

Alter table nombre_tabla Nocheck constraint nombre_constraint

Ejemplo:

Alter table productos Nocheck constraint CK_productos_preciopositivo

Para habilitar una restricción deshabilitada se ejecuta la misma instrucción pero con la cláusula check o check all. Si se emplea check constraint all se habilitan todas las restricciones que tenga la tabla.

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

29

Manual SQL V 1.0
Manual SQL
V 1.0

Sintaxis:

Alter table nombre_tabla check constraint nombre_constraint

Ejemplo:

Alter table productos check constraint CK_productos_preciopositivo

Para saber si una restricción esta habilitada o no, se usa el procedimiento almacenado “sp_helpconstraint” y se mira el estado en la columna “status_enable”.

29.

Restricción primary key

Si al crear una tabla, no se específica una clave primaria, es posible hacer la asignación

 

de una a

la tabla.

Sintaxis:

 

Alter table nombre_tabla Add constraint nombre_constraint Primary key (campos,…)

 

Ejemplo:

 

Alter table productos Add constraint PK_productos_codigo Primary key (codigo)

Por convención, cuando se da el nombre a las restricciones primary key, se emplea el siguiente formato: PK_nombretabla_nombrecampo.

29.

Restricción unique

La restricción unique impide la duplicación de claves alternas (no primarias), es decir, específica que dos registros no puedan tener el mismo valor en un campo, se permiten valores nulos así como varias restricciones unique en una misma tabla.

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

30

Manual SQL V 1.0
Manual SQL
V 1.0

Sintaxis:

Alter table nombre_tabla Add constraint nombre_constraint Unique (campo)

Ejemplo:

Alter table empleados Add constraint UQ_empleados_celular Unique (celular)

29. Procedimiento almacenado sp_helpconstraint

El procedimiento almacenado “sp_helpconstraint nombre_tabla”, muestra la información referente a todas las restricciones de la tabla, y devuelve la siguiente información:

Constraint_type: Es el tipo de restricción.

Constraint_name: Es el nombre de la restricción.

Delete_action: Solo es aplicable a las restricciones foreing key.

Update_action: Solo es aplicable a las restricciones foreing key.

Status_enable: Indica si la restricción esta habilitada o no.

Status_for_replication: Solo es aplicable para las restricciones check y foreing key, indica n/a en cualquier otra que no se aplique.

Constraint_keys: Si es una restricción check muestra la condición, si es una default muestra el valor por defecto y si es una primary key o unique muestra el/los campos a los que aplica.

29. Eliminar restricciones

Así como es posible definir restricciones a una tabla también es posible eliminarlas, la sintaxis es la siguiente:

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

31

Manual SQL V 1.0
Manual SQL
V 1.0

Sintaxis:

Alter table nombre_tabla Drop nombre_restricción

Ejemplo:

Alter table empleados Drop UQ_empleados_celular

Es posible eliminar varias restricciones separándolas por una coma, y en el caso de borrar una tabla se borrarán todas las restricciones referentes a esa tabla.

29. Crear y asociar reglas (create rule – sp_bindrule)

Anteriormente se vio que SQL ofrece varios tipos de restricciones para asegurar la integridad de los datos, sin embargo, además de las restricciones, existen reglas, las cuales especifican los valores que se pueden ingresar en un campo, asegurando que los datos se encuentren en un intervalo de valores específicos, los cuales coincidan con una

lista de valores o sigan un patrón.

Una regla se asocia a un campo de una tabla, un campo solo puede tener una regla asociada a él.

Sintaxis:

Create rule nombre_regla As @variable condición

Por convención, el nombre de la regla se nombre comenzando por RG, el nombre del campo al cual se asocia y una palabra clave que hace referencia a la condición. La condición se refiere a los valores permitidos para inserciones y actualizaciones y puede contener cualquier expresión válida para una cláusula where, pero no puede hacer referencia a los campos de una tabla.

Ejemplo:

Create rule RG_edad_intervalo As @edad between 18 and 80

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

32

Manual SQL V 1.0
Manual SQL
V 1.0

Luego de crear la regla, se debe asociar al campo y tabla ejecutando el siguiente procedimiento almacenado:

Sintaxis:

Exec sp_bindrule nombre_regla, ‘tabla.campo’

Ejemplo:

Exec sp_bindrule RG_edad_intervalo, ‘empleados.edad’

A diferencia de las restricciones, las reglas actúan sobre inserciones o actualizaciones, pero no en los registros ya almacenados. Las reglas no se pueden aplicar en campos de tipo text, image o timestamp.

29. Restricción check y reglas

La función que cumple una regla es muy similar a la de una restricción check, las siguientes características explican sus diferencias:

Una restricción check se asocia a una tabla, si se elimina la tabla la restricción se elimina, en el caso de una regla, esta deja de hacer referencia a la tabla pero la regla sigue existiendo en la base de datos.

Una restricción check puede hacer referencias a otros campos de la tabla, una regla no.

29. Eliminar y desasociar reglas (sp_unbindrole y drop rule)

Para eliminar una regla primero se debe deshacer la asociación y luego si borrar la

regla, para desasociar una regla se debe ejecutar el siguiente procedimiento almacenado:

Sintaxis:

Exec sp_unbindrule nombre_regla, ‘tabla.campo’

Ejemplo:

Exec sp_unbindrule RG_edad_intervalo, ‘empleados.edad’

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

33

Manual SQL V 1.0
Manual SQL
V 1.0

Luego de desasociar la regla, se elimina la regla:

Sintaxis:

Drop rule nombre_regla

Ejemplo:

Drop rule RG_edad_intervalo

29.

Información de reglas

Para ver las reglas y los constraint asociados a unan tabla se usa el procedimiento almacenado “sp_helpconstraint nombre_tabla”.

Si se desea ver los campos, constraint y reglas de una tabla se usa el procedimiento almacenado “sp_help nombre_tabla”.

Si se desea ver la regla que ha sido creada, se usa el procedimiento almacenado “sp_helptext nombre_regla”.

Si se desea ver todas las reglas, se puede ejecutar la siguiente consulta:

 

select *from sysobjects where xtype='R' and name like 'RG%'

-- tipo regla --búsqueda con comodín

29.

Valores predeterminados (default)

Para mantener la integridad de los datos, es posible crear valores predeterminados para uno a más campos, esto quiere decir que si no se ingresa un valor para ese campo, este tomará el valor que ha sido predeterminado.

Sintaxis:

Create default nombre_valorpredeterminado As valor_predeterminado

Ejemplo:

Create default VP_notiene

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

34

Manual SQL V 1.0
Manual SQL
V 1.0

As ‘notiene’

Luego de crear el valor predeterminado, este se debe asociar a un campo de una tabla, lo cual se hace ejecutando el siguiente procedimiento almacenado.

Sintaxis:

Exec sp_bindefault nombre, ‘tabla.campo’

Ejemplo:

Exec sp_bindefault VP_notiene, ‘cliente.telefono’

La función de un valor predeterminado es básicamente la misma que un valor predeterminado, sus diferencias y semejanzas son las siguientes:

Una restricción default se almacena en una tabla, cuando se elimina dicha tabla la restricción también es eliminada, en cambio el valor predeterminado solo deja de pertenecer a esa tabla pero sigue existiendo en la base de datos.

Tanto una restricción default como un valor predeterminado, no se pueden asociar a un campo identity.

Un campo solo puede tener un valor predeterminado o una restricción default.

29. Desasociar y eliminar valores predeterminados

Al igual que para eliminar una regla, cuando se quiere eliminar un valor predeterminado, primero se debe desasociar y luego si realizar la eliminación. Para desasociar un valor predeterminado, se debe ejecutar el siguiente procedimiento almacenado:

Sintaxis:

sp_unbindefault ‘tabla.campo’

Ejemplo:

sp_unbindefault ‘cliente.telefono’

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

35

Manual SQL V 1.0
Manual SQL
V 1.0

Luego de desasociar el valor predeterminado, este se puede eliminar

Sintaxis:

Drop default nombre_valorpredeterminado

29.

Ejemplo:

Drop default VP_notiene

Información de valores predeterminados

Para ver los valores predeterminados asociados a una tabla se usa el procedimiento almacenado “sp_help nombre_valorpredeterminado”.

Si se desea ver la regla que ha sido creada, se usa el procedimiento almacenado “sp_helptext nombre_regla”.

Si se desea ver todos los valores predeterminados, se puede ejecutar la siguiente consulta:

29. Índices

select *from sysobjects where xtype='D' and name like 'VP%'

SQL accede a los datos de dos maneras distintas, la primera es recorriendo las tablas, comenzando por el principio y extrayendo los registros que cumplan las condiciones de la consulta; y la segunda forma es empleando índices, recorriendo la estructura de árbol del índice para localizar registros y extraer los que cumplas las condiciones de consulta.

Los índices facilitan la obtención de información de una tabla, ya que su función es similar a la del índice de un libro, el cual permite encontrar datos rápidamente.

Sin el uso de un índice, al realizar una consulta, SQL recorre secuencialmente toda la tabla para encontrar un registro.

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

36

Manual SQL V 1.0
Manual SQL
V 1.0

Es recomendable, crear índices sobre campos que contienen valores únicos (claves primarias) y/o por aquellos campos por los cuales se hacen búsquedas con frecuencia.

29.

Clases de índices

Para SQL existen dos clase de índices:

Indices agrupados (clustered): es similar a una guía telefónica, los registros con el mismo valor de campo se agrupan juntos, este determina la secuencia de almacenamiento de los registros de una tabla. Se utilizan para campos por los que se realizan constantes búsquedas o bien se accede a ellos siguiendo un orden. Una tabla solo puede tener un índice.

Indices no agrupados (nonclustered): es similar al índice de un libro, los datos se almacenan en un lugar diferente el del índice, los punteros indican el lugar de almacenamiento de los elementos indizados en la tabla. Un índice no agrupado se usa cuando se realizan distintos tipos de búsquedas con campos en los que los datos son únicos.

Si al crear el índice, no se le define un tipo, por defecto será no agrupado, los campos de tipo text, image y ntext no se pueden indezar.

29.

Creación de índices

La sintaxis básica para crear un índice es la siguiente:

Sintaxis:

Create tipo_índice index nombre_índice On tabla (campo)

El tipo índice hace referencia a si será agrupado o no, sino es especificado será no agrupado. Independiente de su tipo, se puede especificar que sea “unique”, es decir, que no haya valores repetidos, el atributo unique debe ir antes de declarar el tipo de índice.

Por

convención,

“I_tabla_campo”.

para

el

nombre

del

índice

se

usa

el

siguiente

formato:

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

37

Manual SQL V 1.0
Manual SQL
V 1.0

Ejemplo:

Create unique nonclustered I_empleados_codigo On empleados (id_empleado)

Es posible crear índices con más de un campo como clave, es decir, índices compuestos. Los campos de un índice compuesto deben ser de la misma tabla (excepto cuando se crea en una vista – más adelante).

Ejemplo:

Create nonclustered I_empleados_codigo On empleados (id_empleado,nombre)

SQL crea automáticamente índices cuando se establece una restricción “primary key” o “unique”. Si la restricción creada es “primary key”, el índice será de tipo agrupado (clustered); en cambio, si es una restricción “unique” será no agreupado (nonclustered).

Al crear una restricción es posible determinar de que tipo será simplemente especificando su tipo luego de declara la restricción.

Sintaxis:

Alter table nombre_tabla Add constraint nombre_constraint Primary key clustered/nonclustered (campo)

Para ver los índices de una tabla, se ejecuta el procedimiento almacenado “sp_helpindex nombre_tabla”. Si se desea ver todos los índices de la base de datos, se realiza la siguiente consulta:

Select name from sysindexes Where name like 'I_%'

29. Eliminar índices

La sintaxis básica para eliminar un índice es la siguiente:

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

38

Manual SQL V 1.0
Manual SQL
V 1.0

Sintaxis:

Drop index tabla.nombre_índice

Ejemplo:

Drop index empleado.I_empleados_codigo

21. Combinación interna (inner join)

Qué es un join? Un join es una operación que relaciona dos o más tablas para obtener un resultado que incluya datos (campos y registros) de ambas, las tablas se combina según los campos comunes.

Combinación interna (inner join o join):

La combinación interna (join) se emplea para obtener la información de dos tablas y combinar la información en una salida.

Sintaxis:

 

Select campos

From tabla1

Join

tabla2

On

condición de combinación

Ejemplo:

Select * From empleados e

Join

departamentos d

On

e.id_departamento = d.id_departamento

On: La función “on” hace coincidir registros de ambas tablas, está se basa en las claves primarias y foráneas de cada tabla. Join: En la consulta join se pueden restringir los registros que retorna el resultado usando las funciones “where”,”order by”,etc.

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

39

Manual SQL V 1.0
Manual SQL
V 1.0

22. Combinación externa izquierda (left join)

Las combinaciones externas combinan los registros de dos tablas que cumplen una condición, más los registros de la segunda tabla que no la cumplen, es decir, muestran todos los registros de las tablas relacionadas, aún cuando no haya valores coincidentes entre ellas.

Se emplea una combinación externa izquierda para mostrar todos los registros de la tabla izquierda; si no encuentra coincidencia con la tabla de la derecha, el registro muestra los campos de la segunda tabla como “null”.

Sintaxis:

 

Select

campos

From

tabla_izquierda

Left Join

tabla_derecha

On

condición de combinación

Ejemplo:

 

Select

e.nombre,d.nombre

From

empleados e

Left Join

departamentos d

On

e.id_departamento = d.id_departamento

Podemos agregar condiciones a la búsqueda con la función “where” después de la función “on”.

Sintaxis:

 

Select

campos

From

tabla_izquierda

Left Join

tabla_derecha

On

condición de combinación

Where

condición

Ejemplo:

 

Select

e.nombre,d.nombre

From

empleados e

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

40

Manual SQL V 1.0
Manual SQL
V 1.0

Left Join

departamentos d

On

e.id_departamento = d.id_departamento

Where

d.id_departamento is not null

Es muy importante la forma en la que colocamos las tablas en la consulta, ya que la tabla de la izquierda es la que se usa para localizar registros en la tabla derecha.

23. Combinación externa derecha (right join)

La combinación externa derecha “right join” opera de forma similar a la externa izquierda, a diferencia que con esta la tabla de la derecha es la que localiza los registros

en la tabla izquierda.

Sintaxis:

 

Select

campos

From

tabla_izquierda

Right Join

tabla_derecha

On

condición de combinación

Ejemplo:

 

Select

e.nombre,d.nombre

From

empleados e

Right Join

departamentos d

On

e.id_departamento = d.id_departamento

Al igual que en una consulta “left join”, en la “right join” también es posible agregar más condiciones en la consulta usando la cláusula “where” con la misma sintaxis que en la anterior.

Para ver la diferencia entre ambas funciones, a continuación se muestran dos consultas (una con “left join” y la otra con “right join”), las cuales generan el mismo resultado.

Ejemplo:

Select

e.nombre,d.nombre

From

empleados e

Right Join

departamentos d

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

41

Manual SQL V 1.0
Manual SQL
V 1.0

Ejemplo:

On

Select

From

Left Join

On

e.id_departamento = d.id_departamento

e.nombre,d.nombre departamentos d empleados e e.id_departamento = d.id_departamento

Nótese que para obtener el mismo resultado, simplemente se hace necesario cambiar el orden de las tablas.

24. Combinación externa completa (full join)

Una combinación externa completa “full join” retorna todos los registros de las dos tablas de la consulta. Si un registro de la tabla izquierda no encuentra coincidencia con alguno de la derecha aparece como “null”, y si un registro de la tabla derecha no encuentra coincidencia con alguno de la izquierda aparece como “null”.

Sintaxis:

 

Select

campos

From

tabla_1

Full Join

tabla_2

On

condición de combinación

Ejemplo:

 

Select

e.nombre,d.nombre

From

empleados e

Right Join

departamentos d

On

e.id_departamento = d.id_departamento

Para resumir el funcionamiento de una consulta externa completa “full join”, esta función une las características de un “left join” y un “rigth join”, mostrando un solo resultado.

24. Combinaciones cruzadas (cross join)

Una combinación cruzada “cross join”, muestra todas las combinaciones de todos los registros de las tablas combinadas. Para este tipo de join generalmente no se incluye una condición de enlace. Este tipo de consulta genera el producto cartesiano en el que

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

42

Manual SQL V 1.0
Manual SQL
V 1.0

el número de filas del resultado es igual al número de registros de la primera tabla multiplicado por el número de registros de la segundo tabla, es decir, si la tabla 1 tiene 8 registros y la tabla 2 tiene 10 registros, el resultado será de 80 filas.

Sintaxis:

 

Select

campos

From

tabla_1

Cross Join

tabla_2

Ejemplo:

 

Select

e.nombre,d.nombre

From

empleados e

Cross Join

departamentos d

24.

Foreign Key

Cuando en una tabla, existe un campo que no es clave primaria, este sirve para enlazar sus valores con otra tabla en la cual si es clave primaria.

Para enlazar dos campos, es necesario que juntos sean del mismo tipo, es decir los dos campos deben ser iguales.

24.

Restricción foreign Key

Para mantener la integridad de los datos, vimos que SQL ofrece varios tipos de restricciones, además de las vistas anteriormente, existe un tipo de restricción referencial llamado foreign key.

Con la restricción foreign key se define un campo cuyo valor coincide con la clave primaria de otra tabla, es decir, define una referencia a un campo con una restricción “primary key” o “unique”.

Sintaxis:

Alter table tabla1 Add constraint nombre_restricción Foreign key (campo) References tabla2 (campo_primario)

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

43

Manual SQL V 1.0
Manual SQL
V 1.0

Ejemplo:

Alter table empleados Add constraint FK_empleados_codigodepartamento Foreign key (departamento) References departamentos (codigo)

En el ejemplo anterior, se implemento una restricción “foreign key” para asegurarse que todo empleado pertenece a un departamento.

Es posible definir una restricción “foreign key” dentro de la misma tabla.

24. Acciones restricción foreign Key

Si se tiene un campo que es clave primaria de la tabla, y al mismo tiempo es referenciado por otra tabla, no es posible eliminarlo ni cambiar su valor. Sin embargo, existen complementos para una restricción “foreign key” que permiten cambiar el valor de la clave primaria y cambiar el valor de todos los campos referenciados.

Se especifica “on update cascade” para que cuando se cambie el valor de la clave primaria se modifiquen todos los registros coincidentes.

Se especifica “on delete cascade” para que cuando se elimine el valor de la clave primaria se eliminen todos los registros coincidentes.

Sintaxis:

Alter table tabla1 Add constraint nombre_restricción Foreign key (campo) References tabla2 (campo_primario) On update cascade On delete cascade

Ejemplo:

Alter table empleados Add constraint FK_empleados_codigodepartamento

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

44

Manual SQL V 1.0
Manual SQL
V 1.0

Foreign key (departamento) References departamentos (codigo) On update cascade On delete cascade

24. Deshabilitar y eliminar restricción foreign Key

Para deshabilitar una restricción “foreign key”, se realiza de la siguiente manera:

Sintaxis:

Alter table tabla Nocheck constraint nombre_restricción

Ejemplo:

Alter table empleados Nocheck constraint FK_empleados_codigodepartamento

Para eliminar una restricción “foreign key”, se realiza de la siguiente manera:

Sintaxis:

Alter table tabla drop constraint nombre_restricción

Ejemplo:

Alter table empleados drop constraint FK_empleados_codigodepartamento

24. Restricciones al crear una tabla

Anteriormente se vio como crear restricciones a una tabla existente, sin embargo, es

posible declararlas en el momento de crear la tabla.

Sintaxis básica:

Create table nombre_tabla ( Campo_1 tipo_de_dato, Campo_2 tipo_de_dato, Campo_n tipo_de_dato,

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

45

Manual SQL V 1.0
Manual SQL
V 1.0

Ejemplo:

Restricción_1,

Restricción_n,

)

Create table empleados ( Codigo int not null identity (1,1), Nombre_empleado varchar (20), Edad_empleado int, Constraint PK_empleados_codigo Primary key (codigo), Constraint CK_empleados_edad Check (edad between 18 and 100),

)

24. Operador unión

El operador unión combina el resultado de dos o más instrucciones “select” en un único

resultado. Este operador se utiliza cuando los datos que se quieren obtener pertenecen a distintas tablas y no se pueden acceder a ellas mediante a ellos con una sola consulta.

Es necesario que las tablas referenciadas tengan tipos de datos similares, la misma cantidad de campos y el mismo orden en la lista de selección de cada consulta.

Sintaxis:

Select campo1,campo2,campon From tabla1 union Select campo1,campo2,campon From tabla2

Ejemplo:

Select nombre,apellido,telefono From empleados Select nombre,apellido,telefono

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

46

Manual SQL V 1.0
Manual SQL
V 1.0

From clientes

La consulta anterior muestra una sola tabla con el nombre, apellido y teléfono de todos los empleados y clientes de la base de datos en una sola consulta.

24. Agregar y eliminar campos

Cuando se tiene una tabla existente, muchas veces es necesario agregarle o eliminarle uno o más campos, por lo cual “alter table” permita modificar la estructura de dicha tabla.

Para agregar un campo a una tabla existente se usa la siguiente sintaxis:

Sintaxis:

Alter table nombre_tabla Add nombre_campo definición

Ejemplo:

Alter table empleados Add sueldo smallmoney

Para eliminar un campo a una tabla existente se usa la siguiente sintaxis:

Sintaxis:

Alter table nombre_tabla drop column nombre_campo

Ejemplo:

Alter table empleados Drop column sueldo

24. Modificar campos

Así como es posible modificar la estructura de una tabla, también es posible modificar

un campo de una tabla. La sintaxis básica es la siguiente:

Sintaxis:

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

47

Manual SQL V 1.0
Manual SQL
V 1.0

Alter table nombre_tabla Alter column campo nueva_definición

Ejemplo:

Alter table empleados Alter column sueldo money not null

SQL no permita modificar campos de tipo text, image y ntext, un campo que sea calculado, y tampoco que al modificar dicho campo algún registro no cumpla con la nueva definición.

24. Agregar campos y restricciones

SQL permite modificar la estructura de una tabla agregando o eliminando campos, y mantener la integridad de los campos creando restricciones, estas dos cosas son posibles realizarlas al mismo tiempo cuando se agrega un nuevo campo a una tabla. La sintaxis básica es la siguiente:

Sintaxis:

Alter table nombre_tabla add nombre_campo definición constraint nombre_restricción tipo

Ejemplo:

Alter table empleados add sueldo money constraint CK_empleados_money check (money>100)

24. Campos calculados

Un campo calculado es un campo que no se almacena físicamente en la tabla. Un campo calculado no puede definirse como “not null”, tener restricción “default” o “foreign key”, insertarse o actualizarse. No es posible eliminar los campos de los cuales depende un campo calculado, para tal efecto se debe eliminar primero el campo calculado.

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

48

Manual SQL V 1.0
Manual SQL
V 1.0

En el siguiente ejemplo, se creará un campo calculado denominado totalsueldo el cual suma el sueldo básico + horas extras* precio extra.

Ejemplo:

create table empleados ( nombre varchar(20), sueldobasico money, precioextra smallmoney, horasextras tinyint,

sueldototal as sueldobasico + (horasextras*precioextra),

)

También es posible agregar un campo calculado a una tabla ya existente:

Sintaxis:

Alter table nombre_tabla Add nombre_campo as expresión

Ejemplo:

Alter table empleados add sueldototal as sueldobasico + (horasextras*precioextra)

24. Subconsultas

Una subconsulta es una sentencia select anidada o incluida dentro de otra sentencia select, insert, update o delete. Una subconsulta se emplea cuando una única consulta es muy compleja, entonces se divide en varios pasos lógicos y se obtiene el resultado con una única expresión.

Una subconsulta se debe incluir entre paréntesis

Una subconsulta puede contener otra subconsulta, teóricamente pueden existir 32 niveles de anidación.

25. Subconsultas como expresión

Una subconsulta puede reemplazar una expresión, si es así, dicha subconsulta debe devolver un valor escalar (o una lista de valores de un campo).

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

49

Manual SQL V 1.0
Manual SQL
V 1.0

La sintaxis es la siguiente:

Select campos From tabla Where campo operador (subconsulta)

Select campos operador (subconsulta) From tabla

Ejemplo:

Select titulo, autor, precio From libros Where precio = (select max(precio) from libros)

Select titulo, precio Precio – (select max(precio) from libros) as diferencia From libros Where titulo = “poemas”

26. Subconsultas con in

Una subconsulta con in o not in devuelve como resultado una lista. Luego que la

subconsulta retorna los resultados, la consulta exterior los usa.

La sintaxis es la siguiente:

Select campos From tabla Where campo expresión in (subconsulta)

Ejemplo:

Select nombre From editoriales Where codigo in (select cod_editorial from libros where autor = “García Marquez”)

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

50

Manual SQL V 1.0
Manual SQL
V 1.0

26.

Subconsultas con any – some - all

Any y some son sinónimos y chequean si alguna fila de la lista resultado de una subconsulta se encuentra el valor especificado de la condición.

La sintaxis es la siguiente:

Select campos From tabla Where campo expresión in (subconsulta)

Ejemplo:

Select nombre From editoriales Where codigo in (select cod_editorial from libros where autor = “García Marquez”)

Select titulo, precio Precio – (select max(precio) from libros) as diferencia From libros Where titulo = “poemas”

26.

Subconsultas correlacionadas

Un almacén almacena la información de sus ventas en una tabla llamada "facturas" en la cual guarda el número de factura, la fecha y el nombre del cliente y una tabla denominada "detalles" en la cual se almacenan los distintos items correspondientes a cada factura: el nombre del artículo, el precio (unitario) y la cantidad.

Se necesita una lista de todas las facturas que incluya el número, la fecha, el cliente, la cantidad de artículos comprados y el total:

select f.*, (select count(d.numeroitem) from Detalles as d where f.numero=d.numerofactura) as cantidad, (select sum(d.preciounitario*cantidad) from Detalles as d

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

51

Manual SQL V 1.0
Manual SQL
V 1.0

where f.numero=d.numerofactura) as total from facturas as f;

El segundo "select" retorna una lista de valores de una sola columna con la cantidad de items por factura (el número de factura lo toma del "select" exterior); el tercer "select" retorna una lista de valores de una sola columna con el total por factura (el número de factura lo toma del "select" exterior); el primer "select" (externo) devuelve todos los datos de cada factura.

A este tipo de subconsulta se la denomina consulta correlacionada. La consulta interna se evalúa tantas veces como registros tiene la consulta externa, se realiza la subconsulta para cada registro de la consulta externa. El campo de la tabla dentro de la subconsulta (f.numero) se compara con el campo de la tabla externa.

En este caso, específicamente, la consulta externa pasa un valor de "numero" a la consulta interna. La consulta interna toma ese valor y determina si existe en "detalles", si existe, la consulta interna devuelve la suma. El proceso se repite para el registro de la consulta externa, la consulta externa pasa otro "numero" a la consulta interna y SQL Server repite la evaluación.

26. Exists y no exists

Los operadores exists y no exists se emplean para determinar si hay o no datos en una lista de valores

Estos operadores se pueden emplear con Subconsultas correlacionadas para restringir el resultado de una consulta exterior a los registros que cumplen la subconsulta. Estos operadores retornan true si las consultas retornan registros o false en caso contrario.

Cuando se coloca en una subconsulta el operador exists SQL analiza si hay datos que coinciden con la subconsulta.

La sintaxis básica es la siguiente, se hace la consulta principal y en el where incluimos la subconsulta precedida por el operador exists o no exists … Where campo expresión in (subconsulta)

Ejemplo:

Select nombre From facture f

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

52

Manual SQL V 1.0
Manual SQL
V 1.0

Where exists (select * from factura_detalles fd where f.id = fd.id and producto like “leche”)

27. Subconsultas en update y delete

Así cómo es posible ejecutar una consulta dentro de otra consulta, también se puede realizar una subconsulta dentro de una clausula update, delete o insert.

La sintaxis general para una actualización (update) es la siguiente:

Update tabla set campo = nuevo valor where campo = subconsulta

Ejemplo:

Update productos set precio = precio+100 where productos = (select código From proveedores Where código = 1)

La sintaxis general para una eliminación (delete) es la siguiente:

Ejemplo:

28. Subconsultas insert

Delete from tabla where campo in subconsulta

Delete from productos where codigo in (select código From proveedores Where código = 1)

La sintaxis general para una inserción es la siguiente (insert) es la siguiente:

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

53

Manual SQL V 1.0
Manual SQL
V 1.0

Insert into tablaqueseingresa (campos) Select (campostablaconsultada) From tablaconsultada

Ejemplo:

Insert into inventario (nombre, cantidad) Select (nombre, cantidad) From productos

29.

Crear una tabla a partir de otra

Es posible crear una tabla e insertar datos en ella en una sola sentencia consultando otra tabla (o varias), la sintaxis básica es la siguiente:

 

Select camposnuevatabla Into nuevatabla From tabla Where condición

Ejemplo:

Select nombre Into inventario From productos

 

Cuando se crea una nueva tabla, los campos de la nueva tabla tienen el mismo nombre, tipo de dato y valores almacenados que los campos listados de la tabla consultada, si se desea especificar otro nombre se debe usar alias mediante la palabra as y luego el nombre de la columna.

29.

Comando Go

Go es un signo de finalización de sentencias, no es una sentencia, es un comando. El lote de sentencias está compuesto por todas las sentencias antes del go o bien todas las sentencias entre dos go. Las sentencias no pueden estar en la misma línea en la que está el go.

29.

Vistas

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

54

Manual SQL V 1.0
Manual SQL
V 1.0

Una vista es una alternativa para mostrar datos de varias tablas. Una vista es como una tabla virtual que almacena una consulta, los datos accesibles a través de la vista no están almacenados en la base de datos como un objeto.

Una vista almacena una consulta como un objeto para utilizarse posteriormente. Las tablas consultadas en una vista se llaman tablas base y se puede dar cualquier nombre a una consulta y almacenarla como una vista.

Las características de las vistas son las siguientes:

Ocultar información: una vista permite el acceso a algunos datos y manteniendo oculta el resto de la información que no se incluye en la vista. El usuario opera con los datos de una vista como si se tratara de una tabla, pudiendo modificar dichos datos. Simplificar la administración de los permisos de usuario: se pueden dar al usuario permisos para que solamente pueda acceder a los datos a través de vistas, en lugar de concederle permisos para acceder a ciertos campos, así se protegen las tablas base de cambios en su estructura. Mejorar el rendimiento: se puede evitar escribir instrucciones repetidamente almacenando en una vista el resultado de una consulta compleja que incluya información de varias tablas. Se pueden crear vistas a partir de otras vistas.

La sintaxis básica parcial para crear una vista es la siguiente:

Create view nombrevista as Select campos From tabla

Existen algunas restricciones para el uso de las vistas:

No se pueden incluir las claúsulas compute ni compute in, ni la palabra clave into

No se pueden crear vistas temporales ni crear vistas de tablas temporales

No se pueden asociar reglas ni valores por defecto a las vistas

30.Vistas información

Las vistas son objetos, así para obtener información de ellas se pueden usar los procedimientos almacenados del sistema:

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

55

Manual SQL V 1.0
Manual SQL
V 1.0

Sp_help: si no se le agrega nungún parámetro muestra todos los objetos de la base de datos seleccionada, incluidas las vistas. En la columna object_type aparece view

si es una vista. Si como parámetro se le envía el nombre de la vista, obtenemos la fecha de creación, propietario, los campos y demás información. Sp_helptext nombrevista: muestra el texto que la define, excepto si la vista ha sido

encriptada. Es decir, muestra la consulta con la cual se creó la vista. Sp_depends: seguido del nombre del objeto se obtiene 2 resultados:

Nombre, tipo, campos, etc de los objetos de los cuales depende el objeto mostrado

Nombre y tipo de los objetos que dependen del objeto mostrado

31.

Vistas encriptar

Se puede ver el texto que define una vista ejecutando el procedimiento almacenado sp_helptext nombrevista, sin embargo, es posible ocultar el texto que define una vista empleando la siguiente sintaxis al crearla:

Create view nombrevista With encryption as Select campos From tabla

La segunda línea with encryption indica al SQL server que codifique las sentencias que definen la vista.

31.

Vistas eliminar

Para eliminar una vista se emplea drop view y luego el nombre de la vista.

Si se elimina una tabla a la que hace referencia una vista, la vista no se elimina.

32.

Vistas (modificar datos de una tabla)

Si se modifican los datos de una vista, se modifica la tabla base.

Se puede insertar, actualizar o eliminar datos de una tabla a través de una vista, teniendo en cuenta los siguiente, las modificaciones que se realizan a las vistas:

Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino
Julio Cesar Avellaneda Sua Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino

Julio Cesar Avellaneda Sua

Analista y Desarrollador Microsoft Certified Professional DCE 5 Estrellas Platino http://julitogtu.wordpress.com

56

Manual SQL V 1.0
Manual SQL
V 1.0

No puede afectar a más de una tabla consultada. Pueden modificarse datos de una vista que combina varias tablas pero la modificación solamente debe afectar a una sola tabla. Para eliminar datos de una vista solamente una tabla puede ser listada en el from.