Está en la página 1de 43

Jos Fernando Mauricio Domnguez

El lenguaje de consulta estructurado (SQL) es un lenguaje de bases de datos normalizado, utilizado por los diferentes motores de bases de datos para realizar determinadas operaciones sobre los datos o sobre la estructura de los mismos. Pero sin embargo cada motor de bases de datos tiene sus peculiaridades y lo hace diferente de cada motor, por lo tanto el lenguaje SQL normalizado (ANSI) no tendr las misma respuesta en los diferentes motores de bases de datos.

Esta compuesto por comandos, clausulas, operadores y funciones de agregado. Estos elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.

Las sentencias SQL se dividen, principalmente en las siguientes categoras:


DDL que permiten crear y definir nuevas

bases de datos, campos e ndices. DML que permiten generar consultas para ordenar, filtrar y extraer datos de la base de datos.

Seleccionan, manipulan o manejan los datos en los objetos de los esquemas ya existentes, esto permite hacer:

Mostrar los datos de una o mas tablas, o de una

o mas vistas. Modificar los valores de atributos en filas existentes. Eliminar tuplas de tablas o vistas. Agregar nuevas tuplas a una tabla o vista. Bloquear una tabla o vista, limitando temporalmente el acceso de otros usuarios. Ver el plan de ejecucin de una sentencia SQL.

Definen, modifican o alteran la estructura y eliminan objetos del esquema:


Crear, alterar o modificar y eliminar objetos y

otras estructuras de bases de datos. Renombrarlas. Eliminar los datos del objeto. Obtener estadsticas. Autorizar y revocar privilegios y roles.

Informacin General de SQL Server 2005

Microsoft SQL Server 2005 es una plataforma de base de datos que se utiliza en el procesamiento de transacciones en lnea (OLTP) a gran escala, permite el almacenamiento de datos y las aplicaciones de comercio electrnico; es tambin una plataforma de Business Intelligence para soluciones de integracin, anlisis y creacin de informes de datos.

Componentes de SQL Server 2005:

Motor de base de datos


Crear bases de datos relacionales El procesamiento de transacciones en lnea Procesar datos analticos en lnea. Crear tablas para almacenar datos y objetos de base de datos como ndices, vistas y procedimientos almacenados Administrar y proteger los datos.

Las 30 caractersticas principales de SQL Server 2005

Las 10 caractersticas de la Administracin de Bases de Datos

Mirroring de Bases de Datos Operaciones de Indexacin Online Nuevas herramientas integradas Aislamiento de Imgenes (SI) Particionado de Datos Backups duplicados (mirrored backup) Restauracin online Recuperacin rpida Conexin de Administrador dedicada Mejoras en la Replication

Las 10 caractersticas de Desarrollo

Soporte para .NET Framework Tecnologas XML ADO.NET Versin 2.0 Mejoras en Transact-SQL Gestor de Servicio SQL Servicios de Notification Servicios Web Soporte para Xquery Mejoras en la Bsqueda de Texto Completo Mejoras en Seguridad

Las 10 caractersticas de Business Intelligence

Servicios de Anlisis Servicios de Transformacin de Datos (DTS) Data Mining Servicios de Reporting Soporte de Servicios de Anlisis en Cluster Indicadores de Rendimiento Principales Escalabilidad y Rendimiento Cubo en un solo click Mejoras en la Arquitectura Integracin con los informes de Office System

SEGURIDAD

Fases de la Seguridad en SQL Server


Windows Server
SQL Server Base de Datos Monitoreo

Dominio Directivas

Conexiones
Autenticacin

Triggers Notificacin

Seguridad de SQL Server 2005

Seguridad en Microsoft SQL Server 2005

Seguridad por defecto Seguridad en el desarrollo Comunicaciones Restriccin del acceso de usuarios al servidor Inhabilitacin de servicios y restriccin de la configuracin del servicio Reduccin del rea de ataques potenciales en las nuevas funciones

Inyeccin de SQL

La Inyeccin Directa de Comandos SQL es una tcnica en la cual un atacante crea o altera comandos SQL existentes para exponer datos escondidos, o sobrescribir datos crticos, o incluso ejecutar comandos del sistema peligrosos en la mquina en donde se encuentra la base de datos_ Esto se consigue cuando la aplicacin toma informacin de entrada del usuario y la combina con parmetros estticos para construir una consulta SQL_ Los siguientes ejemplos, desafortunadamente, estn basados en historias reales Debido a la falta de validacin de la informacin de entrada y el establecimiento de conexiones con la base de datos desde un super_usuario o aquel que puede crear usuarios, el atacante podra crear un super_usuario en su base de datos

Ejemplo

De restablecer una contrasea ___ a adquirir ms privilegios (con cualquier servidor de base de datos)
$consulta = "UPDATE usertable SET pwd='$pwd' WHERE uid='$uid';"; Pero un usuario malicioso enva el valor ' or uid like'%admin%'; __ como $uid para cambiar la contrasea del administrador, o simplemente establece $pwd a "hehehe', admin='yes', trusted=100 " (con un espacio al inicio) para adquirir ms privilegios_ En tal caso, la consulta sera manipulada:

// $uid == ' or uid like'%admin%'; __$consulta = "UPDATE usertable SET pwd='___' WHERE uid='' or uid like '%admin%'; __";// $pwd == "hehehe', admin='yes', trusted=100 "$consulta = "UPDATE usertable SET pwd='hehehe', admin='yes', trusted=100 WHERE ___;"

Triggers y EVENTDATA()
DDL Triggers

Disparados con algn Cambio A nivel de servidor o BD Registro y Auditoria

Funcin EVENTDATA()

Que Dispara un trigger Tipo, SPID, Usuario, Hora Regresa datos XML

PRINCIPALES SENTENCIAS

Crear Base de Datos


CREATE DATABASE Database_Name on ( NAME =Database_Name _data, Filename = 'C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Database_Name_data.mdf', size = 10, Maxsize = 50, FileGrowth = 5) Log ON (NAME = Database_Name_log, FILENAME = 'C:\Archivos de programa\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Database_Name_log.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB )

Create Table SQL

CREATE TABLE nombre_tabla ( nombre_columna1 tipo dato, Col_nombre2 Tipo dato , ....... ) ;

Example, CREATE TABLE Persona ( Apellido varchar(30), Nombre varchar, Address varchar, Edad int(3) ) ;

);

Create Table Persona ( Nombre text(30), Edad integer,

SQL INSERT

INSERT INTO Nombre_Tabla VALUES (value1, value2,....) INSERT INTO Nombre_Tabla (column_name1,column_name2,...)VALUES(value1, value2,....) Ejemplo,
INSERT INTO Empleado VALUES (Juan', 22, 'm', #8/22/1982#, 27474017);

INSERT INTO Empleado ( Nombre, Edad, Sexo, Fecha de Nacimiento ) VALUES (Ana', 22, 'f', #2/18/1982#);

SQL UPDATE

UPDATE Nombre_Tabla SET Nombre_Columna = Nuevo Valor [, Nombre_Columna = Nuevo Valor] WHERE Nombre_Columna = Algun_Valor ;

Ejemplo, UPDATE Empleado SET Telefono = 22523250 WHERE Nombre=Ramiro';

SQL DELETE

DELETE FROM Nombre_tabla WHERE Condicion


DELETE FROM Nombre_Tabla (Nota: Elimina toda la Tabla!!)

Ejemplo,

DELETE FROM Empleado WHERE Sexo='f';

Esta instruccin la utilizamos para obtener informacin de la base de datos, nos permite sacar reportes y es el principal comando. Tiene otras aplicaciones que veremos mas adelante.

Select [atributos que deseamos mostrar] Into [variable] From [tablas utilizadas] Where [condiciones de filtrado] Group by [atributos de agrupacin] Having [condiciones sobre los grupos] Ejemplos: select codigo nombre from empleado; select * from Empleado;

Distinct, devuelve solamente filas nicas. TOP n [porcentaje], devuelve solamente las n primeras filas o el porcentaje.

Select distinct nombre From usuario Select top 5 nombre From usuario

OTRAS SENTENCIAS

Select top 50 percent id-rol From rol


Veamos los alias:

Select id_rol as Rol From rol

Funcin que retorna el Maximo Use sueldos go Select MAX(salario) as Mejor Pagado From salarios go

Min, selecciona el mnimo Use sueldos go Select MIN(salario) as Peor Pagado From salarios go

Order By Use sueldos go Select emp_id, salario as Sueldo Pagado From salarios Order by salario go

Se utiliza para especificar las tablas de las cuales se van a extraer o utilizar datos. En la clausula FROM podemos utilizar tablas derivadas, combinaciones y alias.

Ejemplo sencillo: Select * FROM rol

Se utiliza alias por motivos de flojera, en realidad abreviacin y lo utilizamos cuando utilizamos la misma tabla muchas veces.
Select r.* from relacionconnombrelargo as r

Tambin lo utilizamos para modificar las cabeceras del resultado, veamos: select id_rol as Rol from rol;
En el resultado de la consulta, la cabecera id_rol sera cambiada por Rol.

Se pueden utilizar tambin consultas y asignndoles un alias para luego utilizarlas en la consulta principal, es una forma alternativa a utilizar sub consultas.
Select id_empleado from Empleado e, (Select id_empleado from Ventas) as v where e.id_empleado <> v.id_empleado

= >, >= <, <= <> !>

Igual a Mayor a, Mayor o igual a Menor a, Menor o Igual a Diferente no es mayor que
no es menor que

!<

BETWEEN...AND... Entre dos valores inclusive IN(lista) Empareja valores con la lista LIKE Empareja con un patrn IS NULL Es un valor nulo?

NOT

Verifica que no cumpla la condicin

LIKE ejecuta bsquedas en base a patrones:


% _ [] coincide con una cadena de cero o mas caracteres indica un nico carcter coincide con el carcter unico o el rango o conjunto, tal como [m-p] o [mnop]. Carcter comodn no en rango.

[` ]

SELECT nombre FROM empleado WHERE nombre LIKE J%; Si se desea usar en la bsqueda los valores % o

_ usar con el identificador \


SELECT nombre FROM empleado WHERE nombre LIKE J\_a%;
Busca todos lo nombres que comiencen con J_a

Compara valores entre ambos datos, el minimo el mayor, ambos son inlcusivos. SELECT nombre,salario FROM empleado WHERE salario BETWEEN 1000 AND 1500;

AND OR NOT

Ambos componentes son verdaderos Verdad si alguno es TRUE Niega la condicin

Primero re realizan los operadores de

comparacin, luego NOT, AND y OR (Precedencia de operadores)

Group by se utiliza para agrupar filas y sacar datos de ellas, como por ejemplo:

Select d.departamento_id, sum(s.salario), s.empleado_id From departamento as d, salarios as s Group by d.departamento

Having se utiliza de manera parecida que el where, solo que las condiciones del having se aplican a los grupos: Select d.departamento_id, sum(s.salario), s.empleado_id From departamento as d, salarios as s Group by d.departamento Having sum(s.salario) > 20000

También podría gustarte