RESUMEN SQL SERVER Un sistema de base de datos suele contener varias bases de datos. Cada base de datos suele contener varias tablas. Las tablas almacenan los datos organizados por filas. Cada fila contiene varios campos. Cada campo tiene una serie de propiedades, como por ejemplo, el nombre del campo, su longitud, tipo de dato que se va a almacenar, etc. Las sentencias SQL no son sensibles a mayúsculas y minúsculas, es decir, 'SELECT' y 'select' son dos palabras iguales para SQL. Algunos sistemas de bases de datos necesitan un punto y coma después de cada sentencia SQL para ejecutarse correctamente
CREATE DATATABASE mibasedeatos; Este punto y coma también puede servir para separar una sentencia SQL de otra sentencia SQL en la misma línea.
CREATE DATATABASE mibasedeatos; CREATE TABLE mitabla1; Las sentencias SQL se pueden agrupar por funcionalidades: 1.- Lenguaje de definición de datos (DDL). DDL está compuesto por sentencias para la creación (CREATE), modificación (ALTER) y borrado (DROP) de los componentes principales de una base de datos:
base de datos (DATABASE) tablas (TABLE) vistas (VIEW) índices (INDEX) procedimientos almacenados (PROCEDURE) disparadores (TRIGGER).
2.- Lenguaje de manipulación de datos (DML). DML está compuesto por sentencias que sirven para :
consultar (SELECT) insertar (INSERT) modificar (UPDATE) borrar (DELETE)
3.- Lenguaje de control de datos (DCL). DCL está compuesto por sentencias SQL para controlar las funciones de administración :
Confirmar la operacion (COMMIT)
Retroceder la operacion (ROLLBACK) Dar permisos (GRANT) Quitar permisos (REVOKE)
Un sistema de base de datos suele contener varias bases de datos. Cada base de datos suele contener varias tablas. Las tablas almacenan los datos organizados por filas. Cada fila contiene varios campos. Cada campo tiene una serie de propiedades, como por ejemplo, el nombre del campo, su longitud, tipo de dato que se va a almacenar, etc. Las sentencias SQL no son sensibles a mayúsculas y minúsculas, es decir, 'SELECT' y 'select' son dos palabras iguales para SQL. Algunos sistemas de bases de datos necesitan un punto y coma después de cada sentencia SQL para ejecutarse correctamente
CREATE DATATABASE mibasedeatos; Este punto y coma también puede servir para separar una sentencia SQL de otra sentencia SQL en la misma línea.
CREATE DATATABASE mibasedeatos; CREATE TABLE mitabla1; Las sentencias SQL se pueden agrupar por funcionalidades: 1.- Lenguaje de definición de datos (DDL). DDL está compuesto por sentencias para la creación (CREATE), modificación (ALTER) y borrado (DROP) de los componentes principales de una base de datos:
base de datos (DATABASE) tablas (TABLE) vistas (VIEW) índices (INDEX) procedimientos almacenados (PROCEDURE) disparadores (TRIGGER).
2.- Lenguaje de manipulación de datos (DML). DML está compuesto por sentencias que sirven para :
consultar (SELECT) insertar (INSERT) modificar (UPDATE) borrar (DELETE)
3.- Lenguaje de control de datos (DCL). DCL está compuesto por sentencias SQL para controlar las funciones de administración :
Confirmar la operacion (COMMIT) Retroceder la operacion (ROLLBACK) Dar permisos (GRANT) Quitar permisos (REVOKE
Select
SQL Básico
Estas son las instrucciones SQL básicas para el acceso a cualquier base de datos relacional.
SQL SELECT: SELECT se utiliza para consultar datos. SQL DISTINCT: DISTINCT sirve para eliminar los duplicados de las consultas de datos. SQL WHERE: WHERE se utiliza incluir las condiciones de los datos que queremos consultar. AND OR: AND y OR se utilizan para incluir 2 o más condiciones a una consulta. SQL ORDER BY: ORDER BY se utiliza para ordenar los resultados de una consulta. SQL INSERT: INSERT se utiliza para insertar datos. SQL UPDATE: UPDATE se utiliza actualizar o modificar datos ya existentes. SQL DELETE: DELETE se utiliza borrar datos.
Una de las sentencias SQL más importantes es SELECT, ya que permite realizar consultas sobre los datos almacenados en la base de datos. Sintaxis SQL SELECT
SELECT * FROM nombretabla SELECT columna1, columna2 FROM nombretabla Para los ejemplos, tendremos la siguiente tabla de personas denominada “personas” Estos son los datos almacenados en la tabla “personas”
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
BENITO
LUIS
LOPEZ
PEREZ
Si queremos consultar todos los datos de la tabla “personas”
SELECT * FROM personas Este será el resultado:
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
BENITO
LUIS
LOPEZ
PEREZ
Si queremos consulta todos los nombres y primer apellido de todas las personas
SELECT nombre, apellido1 FROM personas Este será el resultado:
nombre
apellido1
ANTONIO
PEREZ
ANTONIO
GARCIA
LUIS
LOPEZ
DISTINCT
Al realizar una consulta puede ocurrir que existan valores repetidos para algunas columnas. Por ejemplo
SELECT nombre FROM personas
nombre
ANTONIO LUIS ANTONIO Esto no es un problema, pero a veces queremos que no se repitan, por ejemplo, si queremos saber los nombre diferentes que hay en la tabla personas", entonces utilizaremos DISTINCT.
SELECT DISTINCT nombre FROM personas
nombre
ANTONIO LUIS SQL WHERE >> WHERE
La cláusula WHERE se utiliza para hacer filtros en las consultas, es decir, seleccionar solamente algunas filas de la tabla que cumplan una determinada condición. El valor de la condición debe ir entre comillas simples ''. Por ejemplo:
Seleccionar las personas cuyo nombre sea ANTONIO
SELECT * FROM personas WHERE nombre = 'ANTONIO'
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
BENITO
AND OR
Los operadores AND y OR se utilizan para filtrar resultados con 2 condiciones. El operador AND mostrará los resultados cuando se cumplan las 2 condiciones.
Condición1 AND condición2 El operador OR mostrará los resultados cuando se cumpla alguna de las 2 condiciones.
Condicion1 OR condicion2 En la tabla personas
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
BENITO
LUIS
LOPEZ
PEREZ
La siguiente sentencia (ejemplo AND) dará el siguiente resultado:
SELECT * FROM personas WHERE nombre = 'ANTONIO' AND apellido1 = 'GARCIA'
nombre
apellido1
apellido2
ANTONIO
GARCIA
BENITO
La siguiente sentencia (ejemplo OR) dará el siguiente resultado:
SELECT * FROM personas WHERE nombre = 'ANTONIO' OR apellido1 = 'GARCIA'
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
BENITO
También se pueden combinar AND y OR, como el siguiente ejemplo:
SELECT * FROM personas WHERE nombre = 'ANTONIO' AND (apellido1 = 'GARCIA' OR apellido1 = 'LOPEZ)
nombre
apellido1
apellido2
ANTONIO
GARCIA
BENITO
ORDER BY
ORDER BY se utiliza para ordenar los resultados de una consulta, según el valor de la columna especificada. Por defecto, se ordena de forma ascendente (ASC) según los valores de la columna. Si se quiere ordenar por orden descendente se utiliza la palabra DES
SELECT nombre_columna(s) FROM nombre_tabla ORDER BY nombre_columna(s) ASC|DESC Por ejemplo, en la tabla personas :
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
LUIS
LOPEZ
PEREZ
ANTONIO
GARCIA
BENITO
SELECT nombre, apellido1 FROM personas ORDER BY apellido1 ASC Esta es la consulta resultante:
nombre
apellido1
LUIS
LOPEZ
ANTONIO
GARCIA
ANTONIO
PEREZ
Ejemplo de ordenación descendiente (DES)
SELECT nombre, apellido1 FROM personas
ORDER BY apellido1 DESC Esta es la consulta resultante:
nombre
apellido1
ANTONIO
PEREZ
ANTONIO
GARCIA
LUIS
LOPEZ
INSERT
La sentencia INSERT INTO se utiliza para insertar nuevas filas en una tabla. Es posible insertar una nueva fila en una tabla de dos formas distintas:
INSERT INTO nombre_tabla VALUES (valor1, valor2, valor3, .) INSERT INTO nombre_tabla (columna1, columna2, columna3,.) VALUES (valor1, valor2, valor3, .) Ejemplo: Dada la siguiente tabla personas:
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
LUIS
LOPEZ
PEREZ
ANTONIO
GARCIA
BENITO
Si queremos insertar una nueva fila en la tabla personas, lo podemos hacer con cualquiera de las dos sentencias siguientes:
INSERT INTO personas VALUES ('PEDRO', 'RUIZ', 'GONZALEZ') INSERT INTO personas (nombre, apellido1, apellido2) VALUES ('PEDRO', 'RUIZ', 'GONZALEZ') Cualquiera de estas sentencias anteriores produce que se inserte una nueva fila en la tabla personas, quedando así dicha tabla:
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
LUIS
LOPEZ
PEREZ
ANTONIO
GARCIA
BENITO
PEDRO
RUIZ
GONZALEZ
La sentencia UPDATE se utiliza para modificar valores en una tabla. La sintaxis de SQL UPDATE es:
UPDATE nombre_tabla SET columna1 = valor1, columna2 = valor2 WHERE columna3 = valor3 La cláusula SET establece los nuevos valores para las columnas indicadas. La cláusula WHERE sirve para seleccionar las filas que queremos modificar. Ojo: Si omitimos la cláusula WHERE, por defecto, modificará los valores en todas las filas de la tabla. Ejemplo del uso de SQL UPDATE
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
LUIS
LOPEZ
PEREZ
ANTONIO
GARCIA
BENITO
PEDRO
RUIZ
GONZALEZ
Si queremos cambiar el apellido2 'BENITO' por 'RODRIGUEZ' ejecutaremos:
UPDATE personas SET apellido2 = 'RODRIGUEZ' WHERE nombre = 'ANTONIO' AND apellido1 = 'GARCIA' AND apellido2 = 'BENITO' Ahora la tabla 'personas' quedará así:
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
LUIS
LOPEZ
PEREZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
DELETE
La sentencia DELETE sirve para borrar filas de una tabla. La sintaxis de SQL DELETE es:
DELETE FROM nombre_tabla WHERE nombre_columna = valor
Si queremos borrar todos los registros o filas de una tabla, se utiliza la sentencia:
DELETE * FROM nombre_tabla; Ejemplo de SQL DELETE para borrar una fila de la tabla personas
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
LUIS
LOPEZ
PEREZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
Si queremos borrar a la persona LUIS LOPEZ PEREZ, podemos ejecutar el comando:
DELETE FROM personas WHERE nombre = 'LUIS' AND apellido1 = 'LOPEZ' AND apellido2 = 'PEREZ' La tabla 'personas' resultante será:
nombre
apellido1
apellido2
ANTONIO
PEREZ
GOMEZ
ANTONIO
GARCIA
RODRIGUEZ
PEDRO
RUIZ
GONZALEZ
SQL Avanzado
Estas son las instrucciones SQL básicas para el acceso a cualquier base de datos relacional.
SQL TOP: TOP se utiliza para especificar el número de filas a mostrar en el resultado. SQL LITE: LIKE se utiliza en la cláusula WHERE para buscar por un patrón. SQL WILDCARDS: Wildcards (comodines) son caracteres especiales que se utilizan para realizar búsquedas especiales. SQL IN: IN permite seleccionar múltiples valores en una cláusula WHERE. SQL BETWEEN: BETWEEN se utiliza en la cláusula WHERE para seleccionar valores entre un rango de datos. SQL ALIAS: ALIAS se utiliza para renombrar una tabla o una columna SQL JOINS: JOIN permite consultar datos de 2 o más tablas. SQL INNER JOIN:INNER JOIN sirve para combinar cada fila de una tabla con cada fila de otra tabla. SQL LEFT JOIN: LEFT JOIN sirve para combinar los valores de la primera tabla con los valores de la segunda tabla. Siempre devolverá las filas de la primera tabla. SQL RIGHT JOIN: RIGHT JOIN sirve para combinar los valores de la primera tabla con los valores de la segunda tabla. Siempre devolverá las filas de la segunda tabla. SQL FULL JOIN: FULL JOIN sirve para combinar los valores de la primera tabla con los valores de la segunda tabla. Siempre devolverá las filas de las dos tablas. SQL UNION: UNION es utilizada para acumular los resultados de dos sentencias SELECT.
SQL UNION ALL: SQL UNION ALL es utilizada para acumular los resultados de dos sentencias SELECT, incluso aparecerán las filas que estén repetidas. SQL SELECT INTO: SELECT INTO se utiliza para copiar datos de una tabla en otra tabla diferente. SQL CREATE DATABASE: CREATE DATABASE se utiliza para crear bases de datos. SQL RESTRICCIONES: RESTRICCIONES se utilizan para limitar el tipo de dato de una columna. SQL NOT NULL: NOT NULL se utiliza para especificar que una columna no acepta el valor NULL. SQL UNIQUE: UNIQUE sirve para identificar de manera única a cada fila de una tabla SQL UNIQUE ALTER TABLE: UNIQUE ALTER TABLE permite añadir UNIQUE a una columna de una tabla, después de ser creada. SQL PRIMARY KEY: PRIMARY KEY se utiliza para identificar de manera única cada fila de una tabla. SQL FOREIGN KEY: FOREIGN KEY se utiliza para identificar una columna que es PRIMARY KEY en otra tabla. SQL CHECK: CHECK para limitar el rango de valores de una columna. SQL DEFAULT: DEFAULT valor por defecto para una columna SQL CREATE INDEX: CREATE INDEX para crear un índice en una tabla. SQL DROP: DROP sirve para borrar cualquier elemento (índice, tabla o base de datos). SQL TRUNCATE: TRUNCATE sirve para borrar los datos (no la estructura) de una tabla SQL ALTER: ALTER se utiliza para modificar la definición de alguna columna de una tabla. SQL AUTO INCREMENT: AUTO INCREMENT genera numero autoincremental para alguna columna de una tabla. SQL VIEWS: VIEWS sirve para crear una tabla virtual (no una tabla real) con los resultados de una consulta. SQL DATES: DATE define diferentes tipos de datos para fechas y horas. SQL VALORES NULL: NULL representa a un valor indefinido. SQL FUNCIONES NULL: FUNCIONES NULL sirven para utilizar los valores NULL. SQL DATOS TEXTO MySQL: DATOS TEXTO MySQL define los diferentes formatos de campos de texto para MySQL. SQL NUMERICOS MySQL: DATOS NUMERICOS MySQL define los diferentes formatos de campos numéricos para MySQL. SQL DATOS FECHA MySQL: DATOS FECHA MySQL define los diferentes formatos de campos de fecha para MySQL.
http://sql.11sql.com/sql-avanzado.htm
Funciones MS SQL con ejemplos
agosto 30, 2007 8 comentarios
Aprovecho que estoy en clase de base de datos para publicar algunas funciones de bases de datos SQL, específicamente para MS SQL Server. Son los apuntes de lo que va del semestre en Aplic aciones de bases de datos, pueden venir a mano como referencia, o para aprenderse alguna nueva. La mayoría tienen su
respectivo ejemplo aplicado a la bd, aunque se entienden bastante bien fuera de contexto. El script de la base de datos lo adjunto como enlace a continuación: Base de datos (bd.sql) – 5,22 Kb Mayúsculas y minúsculas: SELECT UPPER (Nombre), LOWER (Apellido) FROM estudiantes
Eliminar espacios: SELECT LTRIM('
Aijuna!')
SELECT RTRIM('Nanuk
')
Longitud de un valor en un campo: SELECT LEN(Nombre) FROM estudiantes
Función sub string: args(string, inicio, longitud) SELECT SUBSTRING('Eoden',1,3)
Función buscar índice de caracter: args(char, string[, a partir de cuál]) SELECT CHARINDEX('n','Fernando', 5)
Función espacio: SET @valor = SPACE(9)
Función convertir a string: STR(INT)
Declaración de variables:
Formato: DECLARE @NombreVar tipo SET @NombreVar = Valor
Ejemplo: DECLARE @Nombre CHAR (8) DECLARE @Apellido CHAR (6) DECLARE @valor CHAR (50) DECLARE @Edad SMALLINT SET @Edad = 41
SET @valor = 'Fernando Briano' SET @Nombre = SUBSTRING (@valor, 1, (charindex(' ', @valor) - 1 )) SET @Apellido = SUBSTRING(@valor, (charindex(' ', @valor) + 1), LEN(@valor)) SELECT @Nombre + ' ' + @Apellido + ' - edad: ' + CONVERT(CHAR (3), @Edad) + ' años'
CONVERT: CONVERT(Tipo, Campo o expresión, estilo)
El estilo en las FECHAS: 103 muestra: 23/05/1986 112 muestra: 19660523 114 muestra: hora FUNCIONES CON FECHAS DATEADD(partefecha (dd, mm, yy), número, fecha) SELECT CONVERT(CHAR (10), getdate(), 103) SELECT DATEADD(dd, 3, getdate())
DATEDIFF(partefecha, fecha1, fecha2) Resta la parte de la fecha = fecha2 – fecha1 SELECT DATEDIFF(yy, '19850707', getdate()) SELECT DATEDIFF(yy,FechaNac, getdate()) FROM Estudiantes
DATEPART([dd,mm,y, dw(día de la semana)], fecha) SELECT DATEPART(yy, getdate()) SELECT DATENAME(mm, getdate()) SELECT DAY(getdate()) SELECT E.Nombre, DATEDIFF(yy, E.FechaNac, getdate()) AS Edad, C.Descripcion , DATEDIFF(dd, FechaIngreso, getdate()) AS Antiguedad FROM estudiantes AS E, estudiantes_curso AS EC, cursos AS C WHERE EC.IdEstudiante = E.Ci
Redondear valores: SELECT ROUND(479.90, -1)
ISDATE(campo) Devuelve 1 si el campo contiene una fecha válida, sino devuelve 0 Valor nulo no es de tipo fecha ISNUMERIC(campo) Devuelve 1 si el campo contiene un valor numérico, sino devuelve 0 SELECT ISDATE(FechaIngreso) FROM estudiantes
IDENTIFICADOR UNICO: DECLARE @Identificador UNIQUEIDENTIFIER SET @Identificador = NEWID() SELECT @Identificador
La función NEWID solamente funciona para columnas que hayan sido declaradas como UNIQUEIDENTIFIER FUNCIONES DEL SISTEMA Generalmente llevan “@@” adelante. Para encontrarlas, en la ayuda se puede buscar el string @@ que nos va a mostrar la mayoría de las que hay. @@ROWCOUNT Devuelve el número de filas afectadas por la última instrucción Queda en cero cuando hubo error o no se realizó la instrucción. SELECT * FROM estudiantes SELECT @@rowcount AS Columnas UPDATE estudiantes SET FechaEgreso = '07/07/2007' WHERE Nombre='Eustakio' IF @@ROWCOUNT = 0 PRINT 'Santos Jalapeños enchilados Batman! No ha funcionado'
@@ERROR Devuelve 0 si no hubo error, o distinto de cero con un código específico (véalo en el manual) con el error @@IDENTITY Muestra el último identity de la tabla. O sea, si por ejemplo hacemos una columna con valor int que va autoincrementando, y es identidad, al selecci onar éste valor, nos devuelve el último insertado. Ver el usuario actual con el que se está logueado: SELECT CURRENT_USER
ESTRUCTURA IF IF BEGIN --
SENTENCIAs
END ELSE BEGIN --
SENTENCIAS
END
Ver mensajes del sistema: Para usar la tabla master: USE master
ó agregar la “ruta absoluta”: SELECT * FROM master.dbo.sysmessages
http://picandocodigo.net/2007/funciones-mssql/