Está en la página 1de 16

Fundamentos de Programacin con SQL

Existen 3 tipos de instrucciones para el lenguaje en SQL. Lenguaje de control de datos (DDL): Creacin y eliminacin de tipos de datos y objetos. . CREATE Crear Objeto . ALTER Modificar los datos creados . DROP Eliminar el Objeto Lenguaje de control de datos (DCL): Se basa en los derechos que tiene el usuario sobre la base da datos (Permisos). Dar permisos a un usuario para efectuar determinadas Instrucciones . DENY Eliminar el permiso que se ha concedido con el GRANT . REVOKE Eliminar todos los permisos Lenguaje de manipulacin de datos (DML): Desarrollo de la programacin de la base de datos. . SELECT . INSERT . UPDATE . DELETE Elementos de sintaxis: Directivas de procesos por lotes GO: Enva lotes de instrucciones de TRANSACT SQL a las herramientas y utilidades (Sirve para separar bloques de instrucciones) EXEC O EXECUTE: Ejecuta funciones definidas por el usuario, procedimientos de sistema y procedimientos almacenados. . GRANT

Comentarios en SQL: En lnea: -En Bloque: /* comentario */

Tablas en SQL: Tabla master: Es la tabla que contiene como generar una base de datos y sobre ella, se crean todas las bases de datos. Tabla model: Es la tabla modelo, las bases de datos creadas se basan en esta tabla como modelo. Tabla Northwind y Pubs: Son tablas de ejemplos que vienen con SQL y todo usuario puede trabajar con ellas. Identificadores para los objetos:

Lenguaje de Programacin II (Profesor: Carlos Garca Vergara)

Pgina 1

Los nombres que se le dan a las tablas, lo primero es que no pueden empezar por un nmero, deben empezar por un signo alfabtico, pueden incluir el guion bajo (_), la arroba @ y la almohadilla #. Generalmente para las variables locales se usan @ + el nombre. EJEMPLO: @Contador. Para las variables totales o globales se usan dos arrobas + el nombre @@Contador EJEMPLO: @@Error #Nombre: indica una tabla o procedimiento temporal (Local) ##Nombre: Igual que el anterior pero global. Tipos de datos: Numricos: Fechas: datetime 0,333 s smalldatetime 1 minuto

Enteros int, tinyint, smallint, bigint Decimales numeric, decimal, money, smallmoney Coma Flotante float, real

Caracteres: Ancho fijo: char, nchar Ancho Variable: varchar, nvarchar Texto e Imagen: Text Ntext Rowversion

Binario: Binary, varbinary Valores tipo byte Bit Un solo bit (1 o ninguno)

Identificadores nicos: Representa un identificador global nico (GUID) Si queremos que no se repita el dato en la base de datos, usamos este identificador Uniqueidentifier

Operadores de SQL:
Lgicos: AND, OR, NOT De Comparacin: = < > <> >= <= Igual Menor Mayor Diferente Mayor o igual Menor o igual Pgina 2

Lenguaje de Programacin II (Profesor: Carlos Garca Vergara)

Para verificar las bases de datos creadas del sistema utilizamos la sentencia Select * from sysdatabases

INSERCIN, ELIMINACIN Y MODIFICACIN DE DATOS Insercin de una fila mediante valores: INSERT INTO {NombreTabla | NombreVista} [Valor de la Columna] VALUES Valores * Cuando hay llaves es porque se debe elegir entre uno de los dos, esta barra | indica que se debe poner uno de los dos valores. Uso INSERT...SELECT: INSERT NombreTabla CondicionBusqueda SELECT ListaColumnas FROM ListaTablas WHERE

Se introducen en la tabla las columnas y filas que devuelva con sus respectivos datos.

La

consulta SELECT debe devolver los datos adecuados para la tabla donde vamos a introducir los valores. Creacin de una tabla mediante SELECT INTO: Creacin de una tabla que a la vez se le introducen valores. SELECT ListaColumnas INTO NuevaTabla FROM TablaOrigen WHERE CondicionBusqueda Se utiliza mucho para crear tablas temporales Insercin de datos parciales: No introducir todos los datos, solo meter datos en un determinado campo o en varios, pero no en toda la tabla. Insercin de datos mediante valores de columna predeterminados: Se usa para no dejar a las tablas con el valor null y as no da error. Se utilizan dos clausulas: DEFAULT: Especificar que cogiera en la lista de valores el valor por defecto de esa columna

Lenguaje de Programacin II (Profesor: Carlos Garca Vergara)

Pgina 3

Ejemplo:

DEFAULT VALUES: Crea una nueva fila con los valores por defecto de todas las columnas

Insert into alumnos (idalumno,nom_alumno,ape_alumno,dir_alumno,tel_alumno,email_alumno)Values ('Cli01','james','james','Ventanilla','252511','jazoon_28@hotmail.com')

ELIMINACIN DE DATOS DELETE: Elimina una o varias filas. Hay un control de las modificaciones (Borrado) que se estn haciendo. DELETE [FROM (Opcional) ] {NombreTabla | NombreVista } WHERE CondicionBusqueda Delete from emp where apellido = SERRA TRUNCATE TABLE: Elimina todas las filas de la tabla (La tabla con su estructura no se elimina, slo los datos de la tabla). No crea filas en el registro de transacciones, con lo cual es el mtodo ms rpido de borrar. TRUNCATE TABLE NombreTabla Truncate Table emp Eliminacin de filas basada en otras tablas DELETE [ FROM ] {NombreTabla | NombreVista} [ FROM, OrigenTabla,... ] [ WHERE CondicionBusqueda ] Ejemplo: delete from alumnos where nom_alumno='juan Carlos' ACTUALIZACIONES Actualizacin de filas basadas en datos de la propia tabla UPDATE {NombreTabla | NombreVista } SET NombreColumna = expresin { DEFAULT | NULL, ... } USE Northwind UPDATE products SET unitprice = (unitprice * 1.1 ) Actualizacin de filas basadas en otras tablas UPDATE {NombreTabla | NombreVista } SET NombreColumna = expresin { DEFAULT | NULL, ... } FROM OrigenTabla WHERE CondicionBusqueda

Lenguaje de Programacin II (Profesor: Carlos Garca Vergara)

Pgina 4

Ejemplo: Update alumnos set nom_alumno='diego', ape_alumno='cueva', dir_alumno='los olivos', tel_alumno='5402972', email_alumno='hades_278@hotmail.com' where idalumno='01'

OPERADORES DE CONDICIN FILAS


En la expresin lgica que especifica condicin _ filas se puede utilizar, adems de los operadores relacin o de comparacin los siguientes operadores SQL LIKE.- Para comparacin de cadenas de caracteres admite los comodines % y _. OPERADOR LIKE % Cualquier nmero de caracteres _ Para un carcter individual [ ] Para un conjunto de caracteres que est dentro del corchete [ ^ ] Que el carcter individual que no est dentro del corchete EJEMPLO: LIKE %een Muestra todos los caracteres que acaben con een EJEMPLO: LIKE %een% Muestra todos los caracteres que contengan een en ese orden EJEMPLO: LIKE _en Muestra todos los caracteres que contenga tres letras y acaben en en EJEMPLO: LIKE [CK% ] Muestra todos los caracteres que empiecen por C o K EJEMPLO: LIKE [S-V]ing Nombre de 4 letras cuya primera letra estuviera entre S o V y acabe en ing EJEMPLO: LIKE M[^c]% Todos los que empiecen por M y segunda letra no sea una c. No hay lmite de caracteres. Ejemplo: Lista de productos cuya primera letea empieza con la letra a. Select * from productos where nombreproducto like '[a]%' Lista de productos cuya primera letea empieza con la letra a y la tercera con la letra e. Select * from productos where NombreProducto like '[a]%[e]'

BETWEEN.- para seleccin en base a un rango de valores. Los valores pueden ser numricos, de cana, fechas y horas. Ejemplo: Lista de productos cuyo nombre se encuentren en el rango de Cerveza y galletas Select * from productos where nombreproducto between 'cerveza' and 'galletas' de valores, los valores pueden ser numricos, de

In.-Para seleccin en base a un conjunto cadena, fechas y horas.

Ejemplo: Lista de proveedores ubicados en las ciudades de Londres, Paris, Lima. Select * from proveedores where ciudad in ('londres','Pars','Tokyo')

Lenguaje de Programacin II (Profesor: Carlos Garca Vergara)

Pgina 5

Agrupar y resumir datos Sacar los n primeros valores SELECT TOP n Nombre, Apellido... (Saca los n primeros valores) SELECT TOP n PERCENT Nombre, Apellido... (Saca el n por ciento) SELECT TOP n WITH TIES Nombre, Apellido.. ORDER BY (Saca los n primeros ordenados por lo que sea y con coincidencias en el valor n.) Ejemplo: Select top 5 * from productos Devuelve los 5 primeros Productos Select top 50 percent * from productos Devuelve el 50% de los Productos

USO DE FUNCIONES Podemos utilizar funciones para construir expresiones y generar columnas computadoras O condiciones complejas. Funcin de agregacin: Son funciones que se utilizan para calcular valores en las tablas. Si queremos usarlas combinndolas junto con otros campos debemos utilizar Group by y agrupar los datos que no son funciones. Con la sentencia group by no se utiliza la clausula where, se utilizara una clausula propia de la expresin: HAVING. Equivalente a where COUNT: Cuenta los registros que hay en la consulta. Si pongo un valor dentro de la expresin devolver la cuenta de todos los registros no nulos. Si pongo un asterisco contar todos los registros aunque tengan valores nulos. Select count (*) from Pedidos Valores con Nulos Select count (FechaEnvo) from Pedidos Valores sin nulos AVG: Realiza la media sobre la expresin dada, debe ser un tipo de dato Int. Select avg(Preciounidad) from productos

MAX: Saca el valor mximo de una consulta.


Select max (FechaPedido) from Pedidos

MIN: Devuelve el valor mnimo de una consulta.


Select min (FechaPedido) from Pedidos

SUM: Devuelve la suma de los salarios


Select sum(Cantidad) from [Detalles de pedidos]

Lenguaje de Programacin II (Profesor: Carlos Garca Vergara)

Pgina 6

Funciones de Fecha y Hora


La siguiente tabla muestra las funciones de fecha y hora disponibles en SQL server. Funcin GETDATE() DATEADD(partefecha,n,fecha) DATEDIFF(parteFecha,fecha1,fecha2) DATENAME(partefecha,fecha) DATEPART(partefecha,fecha) DAY(fecha) MONTH(fecha) YEAR(fecha) GETUTCDATE() Resultado Retorna la fecha y hora del sistema Retorna una nueva fecha aadiendo n unidades de partefecha a fecha Retorna la diferencia en parteFecha entre fecha1 y fecha2. Retorna la cadena correspondiente a partefecha en fecha Retorna el numero correspondiente a partefecha y fecha Retorna el numero correspondiente a la parte del da de fecha Retorna el numero correspondiente a la parte del mes de fecha Retorna el numero correspondiente a la parte del ao de fecha Retorna la fecha y hora del meridiano de Greenwich

La siguiente tabla muestra los valores de partefecha que podemos utilizar. partefecha Abreviatura Year Yy, yyyy Quarter Qq ,q Month Mm, m Dayofyear Dy, y Day Dd, d Week Wk, ww weekday Dw Hour Hh minute Mi, n second Ss, s milisecond Ms

Getdate
Select getdate () Convert, Cast Convierten explcitamente una expresin de un tipo de datos en otro. CAST y CONVERT proporcionan funciones similares. Convert (Tipodedatosdestino, Origen, Estilo) o Tipodedatosdestino: Siempre ha de ser tipo carcter o Origen: Puede ser tipo fecha, numrico o moneda. Funcin que recupera la fecha actual del sistema.

Lenguaje de Programacin II (Profesor: Carlos Garca Vergara)

Pgina 7

o Sintaxis:

Estilo: Opcional. Es un cdigo que indica el formato en el que devuelve la cadena de caracteres.

Convert (TipoDato, Dato) Cast (Dato as TipoDato) Ejemplo: declare @n int,@palabra nvarchar(10) set @n = 1 set @palabra ='Nmero' print convert(nvarchar(2),@n) + ' ' + @palabra print cast(@n as nvarchar(2)) + ' ' + @palabra while (@n<11) begin print convert(nvarchar(2),@n) + ' ' + @palabra print cast(@n as nvarchar(2)) + ' ' + @palabra set @n = @n + 1 end DateName Devuelve una cadena de caracteres que representa la parte de la fecha especificada de la fecha especificada Los clculos para las horas no son exactos cuando se trata de SmallDateTime, por lo que devuelve 0. Ejemplo: Select IdPedido, DateName (Month, FechaPedido) as 'Nombre del mes' from Pedidos where IdPedido = 10352 diciembre

Select IdPedido, DateName (week, FechaPedido) as 'Numero de Semana' from Pedidos where IdPedido = 10352 51

Select IdPedido, datename (weekday, FechaPedido) as 'Da De Semana' from Pedidos where IdPedido = 10352 Martes

Select IdPedido, datepart (mm, FechaPedido) as 'Mes' from Pedidos where IdPedido = 10352

Lenguaje de Programacin II (Profesor: Carlos Garca Vergara)

Pgina 8

Nombres de Fechas Day (fecha) Devuelve UN INT, equivale a Datepart Select Select Select Select Select day (getdate ()) as da-->6 (da en la que se ejecuta la sentencia) Datepart (dd, getdate ()) -->6 (da en la que se ejecuta la sentencia) Month (getdate ()) -->1 (Mes en la que se ejecuta la sentencia) Datepart (mm, getdate ()) -->1 (Mes en la que se ejecuta la sentencia) Year (getdate ()) -->2008 (Ao en la que se ejecuta la sentencia)

DateAdd DateAdd (Datepart, number, date) Aade un nmero a la fecha puesta DatePart es el formato de lo que queremos aadir. Number es el nmero que queremos incrementar la fecha expuesta. Select convert (datetime,'1-1-02') Select dateadd (dd, 7,'1-1-02') DateDiff Devuelve la diferencia entre dos fechas en el intervalo que le indiquemos. Sintaxis: DateDiff (DatoqueDevuelve, Fecha1, Fecha2) o Datoquedevuelve: Indicamos como queremos que haga la comparacin y el tipo de dato que nos devolver, aos, das, minutos etc. Ejemplo: Lista de Pedidos mostrando la diferencia en das entre la fecha del pedido y la fecha de Envi. Select IdPedido, FechaPedido, FechaEnvo, das =datediff (day, FechaPedido, FechaEnvo) from pedidos FUNCIONES MATEMATICAS

ABS Es el valor Absoluto Select ABS (-4) as 'VALOR ABSOLUTO'-->4 CEILING Devuelve el entero ms pequeo mayor o igual que la expresin numrica dada. Select CEILING (5.4) as 'CEILING'--6 FLOOR Devuelve el entero ms grande menor o igual que la expresin numrica dada.

Lenguaje de Programacin II (Profesor: Carlos Garca Vergara)

Pgina 9

Select FLOOR (5) as 'FLOOR'-->5 POWER Devuelve el valor de la expresin indicada elevada a la potencia especificada. Select POWER (3, 2) as '3 ELEVADO A 2'-->9 RAND Devuelve un valor float aleatorio de 0 a 1. Las llamadas repetitivas de RAND() en una nica consulta producirn el mismo valor. Select RAND(6) as 'ALEATORIO'--0.71368515806921451 Select RAND(6) as 'ALEATORIO'--0.71368515806921451 Select RAND(4) as 'ALEATORIO'--0.7136478921266981 Rand sobre los milisegundos actuales Select RAND(DATEPART(ms,GETDATE())) as 'ALEATORIO'-->0.71443047691954253 Select RAND(999999999)-->0.68504257551273573

ROUND Devuelve una expresin numrica, redondeada a la longitud o precisin especificada. Round (Nmero, Redondeo del Nmero) ROUND siempre devuelve un valor. Si length es un valor negativo y mayor que el nmero de dgitos anteriores al separador decimal, ROUND devuelve 0. Select Select Select Select SIGN Devuelve el signo positivo (+1), cero (0) o negativo (-1) de la expresin especificada. Dice el valor negativo, positivo o neutro (0) del valor especificado Select SIGN (-3) -->-1 Select SIGN (3) -->1 Select SIGN (0) -->0 SQUARE Devuelve el cuadrado de la expresin especificada. Select SQUARE (4) as Cuadrado-->16.0 SQRT Devuelve la raz cuadrada de la expresin especificada. Lenguaje de Programacin II (Profesor: Carlos Garca Vergara) Pgina 10 ROUND ROUND ROUND ROUND (123.4567, 2) -->123.4600 (123.4567,-2) -->100.0000 (123.4567, 0) -->123.0000 (123.4567,-3) --->0

Select SQRT (4) as [RAIZ CUADRADA] -->2.0

FUNCIONES DE CADENA

ASCII Devuelve el cdigo ASCII del carcter ms a la izquierda de una expresin de caracteres. Select ASCII('A')-->65 Select ASCII('a')-->97 Select ascii('aula')-->97

CHAR Una funcin de cadena que convierte un cdigo ASCII int en un carcter. select char(65)-->A select char(97)-->a

CHARINDEX Devuelve la posicin inicial de la expresin especificada en una cadena de caracteres. CHARINDEX (expression1, expression2 [, start_location]) Argumentos expression1 Es una expresin que contiene la secuencia de caracteres que se desea buscar. Expression1 es una expresin del tipo de cadenas cortas de caracteres. Expression2 Es una expresin, normalmente una columna, en la que se busca la cadena especificada. Expression2 es de la categora del tipo de datos cadena de caracteres. start_location Es la posicin del carcter de expression2 en el que se empieza la bsqueda de expression1. Si no se especifica start_location, es un nmero negativo o es cero, la bsqueda empieza al principio de la cadena expression2. Si expression1 no se encuentra en expression2, CHARINDEX devuelve 0. Si alguno de los dos es null, devuelve null Select Select Select Select charindex charindex charindex charindex ('cie','murcielago') -->4 ('cie','murcielago', 2) -->4 ('cie','murcielago', 5) -->0 ('cie','murcielago',-6) -->4

Lenguaje de Programacin II (Profesor: Carlos Garca Vergara)

Pgina 11

LEFT Devuelve la parte de una cadena de caracteres que comienza en un nmero de caracteres especificado a partir de la izquierda Select left ('murcielago',5) -->murci RIGHT Devuelve la parte de una cadena de caracteres que Comienza en el nmero de caracteres especificado En integer_expression a partir de la derecha. Select right ('hola que tal',5) -->e tal LEN Cuenta el nmero de caracteres que se incluyen en la cadena. Select len ('murcilago') -->10 LOWER Convierte a Minsculas la cadena especificada Select lower ('MurcIELaGO') as [minusculas] -->murcielago UPPER Convierte a Maysculas la cadena especificada Select upper ('murcielago') as [MAYUSCULAS] -->MURCIELAGO RTRIM y LTRIM Elimina los espacios que existen a la izquierda y a la derecha respectivamente. Select Rtrim (' murcilago ') AS [SIN ESPACIOS] -->murcilago Select Ltrim (' murcilago ') AS [SIN ESPACIOS] -->murcilago Select ltrim(rtrim(' hola '))+'.'

REPLACE Reemplaza por una tercera expresin todas las apariciones de la segunda expresin de cadena proporcionada en la primera expresin de cadena Select replace ('hola que tal estas','a','A') -->holA que tAl estAs Select replace ('buenos dias, que tal estas','ue','') -->bnos dias,q tal estas SPACE Coloca el nmero de espacios que se le indiquen para entre una cadena de caracteres. Lenguaje de Programacin II (Profesor: Carlos Garca Vergara) Pgina 12

Select 'hola'+space(5)+'que tal'-->hola SUBSTRING

que tal

Devuelve parte de una expresin de caracteres, binaria, de texto o de imagen. Sintaxis: SUBSTRING (Expresin, Comienzo, Duracin) Argumentos Expresin Es una cadena de caracteres, cadena binaria, texto, imagen, Columna o expresin que incluye una columna. No deben usarse expresiones que incluyan funciones de agregado. Start Es un entero que especifica el punto en que comienza la subcadena. Length Es un entero que especifica la longitud de la subcadena (El nmero de caracteres o bytes que se devuelven). Select substring ('murcielago', 3, 5) -->rciel Select substring ('murcielago', 3, len ('murcielago')) -->rciel REVERSE Devuelve invertida una expresin de carcter. Select reverse ('hola') REPLICATE Repite una expresin de caracteres un nmero especificado de veces. Select replicate ('murcielago', 5) Replicate, replicate, replicate, replicate, replicate STUFF Elimina el nmero de caracteres especificados e insertados Otro conjunto de caracteres en un punto de inicio indicado. Select STUFF ('Murcilago', 2, 3, 'ijklmn') Mijklmnielago

Lenguaje de Programacin II (Profesor: Carlos Garca Vergara)

Pgina 13

FUNCIONES DE SISTEMA

APP_NAME () Devuelve el nombre de la aplicacin actual Select app_name () as [Nombre de la aplicacion]

DATALENGTH (Expresin) Devuelve un entero que es numero de bites necesarios para representar esa expresin int Select datalength ('Ninoni') as [Numero de bites]

ISDATE (Expresin) Dice si la expresin es una fecha o no. Devuelve 1 si la expresin es una fecha y 0 si no es una fecha. Select isdate ('12/10/01') as [Validacin Fecha]

ISNUMERIC (Expresion) Dice si la expresin es un numero o no. Devuelve 1 si la expresin es un nmero y 0 si la expresin no es nmero. Select isnumeric ('ddd') as [Validacion Numero]

ISNULL (Expresin , ExpresionDevuelta) Si la expresin es nula te devuelve la Expresin Devuelta y si no devuelve la primera Expresin Select isnull (null,'No nulo') as [Es Nulo]

PARSENAME (NombreObjeto, ParteNombre) ParteNombre es un valor de tipo Int que coge unos determinados valores del NombreObjeto: 1 Objeto. 2 Propietario 3 Base de Datos 4 Servidor

Lenguaje de Programacin II (Profesor: Carlos Garca Vergara)

Pgina 14

Select Select Select Select

parsename parsename parsename parsename

('sa.poseidon.dbo.pedidos',1) as [Parte Expresin] ('sa.poseidon.dbo.pedidos', 2) as [Parte Expresin] ('sa.poseidon.dbo.pedidos',3) as [Parte Expresin] (' sa.poseidon.dbo.pedidos', 4) as [Parte Expresin]

SYSTEM_USER Devuelve el usuario del sistema actual Depende de la autentificacin con la que te hayas conectado Select system_user as [Usuario conectado]

USER_NAME() Devuelve el nombre del usuario actual Select user_name ()

COALESCE (expresin1, expresin2, ...) Devuelve la primera expresin no NULL Si todos son NULL devuelve NULL

Select coalesce (PrecioUnidad, Cantidad) from [detalles de Pedidos] Si el PrecioUnidad es nulo devolver la Cantidad, y si los dos son nulos, devolver un campo Null.

Lenguaje de Programacin II (Profesor: Carlos Garca Vergara)

Pgina 15

SUBCONSULTAS Es una SELECT anidada en una instruccin INSERT, DELETE, SELECT o UPDATE. Como una tabla derivada

Select e.emp_no as Numero ,e.Apellido from (select emp_no, apellido from emp) as e

Como una expresin

Select emp_no as [Numero] ,Apellido ,Salario ,(select avg(Salario) from emp) as Diferencia from emp where oficio = 'Empleado'

Para correlacionar datos: Expresin dinmica que cambia en cada fila de una consulta externa Es una combinacin entre la subconsulta y la fila de la consulta externa. Dividen consultas complejas con dos o ms consultas simples relacionadas

Subconsulta correlacionada Select apellido, oficio,dept_no from emp as e where 20 < (select dept_no from dept as d where e.dept_no = d.dept_no and d.dnombre = 'Ventas')

Lenguaje de Programacin II (Profesor: Carlos Garca Vergara)

Pgina 16

También podría gustarte