sábado, 29 de enero de 2011

MYSQL,DML,DDL

MySQL

Las aplicaciones en red son cada día más numerosas y versátiles. En muchos casos, el esquema básico de operación es una serie de scripts que rigen el comportamiento de una base de datos.
Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sería realmente complicada a gestionar de no ser por la existencia de estándares que nos permiten el realizar las operaciones básicas de una forma universal.
Es de eso de lo que trata el Structured Query Language que no es más que un lenguaje estándar de comunicación con bases de datos. Hablamos por tanto de un lenguaje normalizado que nos permite trabajar con cualquier tipo de lenguaje (ASP o PHP) en combinación con cualquier tipo de base de datos (MS Access, SQL Server, MySQL...).
El hecho de que sea estándar no quiere decir que sea idéntico para cada base de datos. En efecto, determinadas bases de datos implementan funciones específicas que no tienen necesariamente que funcionar en otras.
Aparte de esta universalidad, el SQL posee otras dos características muy apreciadas. Por una parte, presenta una potencia y versatilidad notables que contrasta, por otra, con su accesibilidad de aprendizaje.

Tipos campos:
Como sabemos una base de datos está compuesta de tablas donde almacenamos registros catalogados en función de distintos campos (características).
Un aspecto previo a considerar es la naturaleza de los valores que introducimos en esos campos. Dado que una base de datos trabaja con todo tipo de informaciones, es importante especificarle qué tipo de valor le estamos introduciendo de manera a, por un lado, facilitar la búsqueda posteriormente y por otro, optimizar los recursos de memoria.
Cada base de datos introduce tipos de valores de campo que no necesariamente están presentes en otras. Sin embargo, existe un conjunto de tipos que están representados en la totalidad de estas bases. Estos tipos comunes son los siguientes:


Alfanuméricos
Contienen cifras y letras. Presentan una longitud limitada (255 caracteres)
Numéricos
Existen de varios tipos, principalmente, enteros (sin decimales) y reales (con decimales).
Booleanos
Poseen dos formas: Verdadero y falso (Sí o No)
Fechas
Almacenan fechas facilitando posteriormente su explotación. Almacenar fechas de esta forma posibilita ordenar los registros por fechas o calcular los días entre una fecha y otra...
Memos
Son campos alfanuméricos de longitud ilimitada. Presentan el inconveniente de no poder ser indexados (veremos más adelante lo que esto quiere decir).
Auto incrementables
Son campos numéricos enteros que incrementan en una unidad su valor para cada registro incorporado. Su utilidad resulta más que evidente: Servir de identificador ya que resultan exclusivos de un registro.



Los tipos de datos SQL se clasifican en 13 tipos de datos primarios y de varios sinónimos válidos reconocidos por dichos tipos de datos. Los tipos de datos primarios son:

Tipo de Datos
Longitud
Descripción
BINARY
1 byte
Para consultas sobre tabla adjunta de productos de bases de datos que definen un tipo de datos Binario.
BIT
1 byte
Valores Si/No ó True/False
BYTE
1 byte
Un valor entero entre 0 y 255.
COUNTER
4 bytes
Un número incrementado automáticamente (de tipo Long)
CURRENCY
8 bytes
Un entero escalable entre 922.337.203.685.477,5808 y 922.337.203.685.477,5807.
DATETIME
8 bytes
Un valor de fecha u hora entre los años 100 y 9999.
SINGLE
4 bytes
Un valor en punto flotante de precisión simple con un rango de - 3.402823*1038 a -1.401298*10-45 para valores negativos, 1.401298*10- 45 a 3.402823*1038 para valores positivos, y 0.
DOUBLE
8 bytes
Un valor en punto flotante de doble precisión con un rango de - 1.79769313486232*10308 a -4.94065645841247*10-324 para valores negativos, 4.94065645841247*10-324 a 1.79769313486232*10308 para valores positivos, y 0.
SHORT
2 bytes
Un entero corto entre -32,768 y 32,767.
LONG
4 bytes
Un entero largo entre -2,147,483,648 y 2,147,483,647.
LONGTEXT
1 byte por carácter
De cero a un máximo de 1.2 gigabytes.
LONGBINARY
Según se necesite
De cero 1 gigabyte. Utilizado para objetos OLE.
TEXT
1 byte por carácter
De cero a 255 caracteres.

La siguiente tabla recoge los sinónimos de los tipos de datos definidos: 
Tipo de Dato
Sinónimos
BINARY
VARBINARY
BIT
BOOLEAN
LOGICAL
LOGICAL1
YESNO
BYTE
INTEGER1
COUNTER
AUTOINCREMENT
CURRENCY
MONEY
DATETIME
DATE
TIME
TIMESTAMP
SINGLE
FLOAT4
IEEESINGLE
REAL
DOUBLE
FLOAT
FLOAT8
IEEEDOUBLE
NUMBER
NUMERIC
SHORT
INTEGER2
SMALLINT
LONG
INT
INTEGER
INTEGER4
LONGBINARY
GENERAL
OLEOBJECT
LONGTEXT
LONGCHAR
MEMO
NOTE
TEXT
ALPHANUMERIC
CHAR - CHARACTER
STRING - VARCHAR
VARIANT (No Admitido)
VALUE
  

Tipos de sentencias sql que podemos encontrarnos y sus componentes sintácticos:

En SQL tenemos bastantes sentencias que se pueden utilizar para realizar diversas tareas.
Dependiendo de las tareas, estas sentencias se pueden clasificar en tres grupos principales (DML, DDL, DCL), aunque nos quedaría otro grupo que a mi entender no está dentro del lenguaje SQL sino del PLSQL.

SENTENCIA
DESCRIPCIÓN
DML
Manipulación de datos
SELECT
INSERT
DELETE
UPDATE
Recupera datos de la base de datos.
Añade nuevas filas de datos a la base de datos.
Suprime filas de datos de la base de datos.
Modifica datos existentes en la base de datos.
DDL
Definición de datos
CREATE TABLE
DROP TABLE
ALTER TABLE
CREATE VIEW
DROP VIEW
CREATE INDEX
DROP INDEX
CREATE SYNOYM
DROP SYNONYM
Añade una nueva tabla a la base de datos.
Suprime una tabla de la base de datos.
Modifica la estructura de una tabla existente.
Añade una nueva vista a la base de datos.
Suprime una vista de la base de datos.
Construye un índice para una columna.
Suprime el índice para una columna.
Define un alias para un nombre de tabla.
Suprime un alias para un nombre de tabla.
DCL
Control de acceso
GRANT
REVOKE
Control de transacciones
COMMIT
ROLLBACK
Concede privilegios de acceso a usuarios.
Suprime privilegios de acceso a usuarios

Finaliza la transacción actual.
Aborta la transacción actual.
PLSQL
SQL Programático
DECLARE
OPEN
FETCH
CLOSE
Define un curso para una consulta.
Abre un curso para recuperar resultados de consulta.
Recupera una fila de resultados de consulta.
Cierra un cursor.

Componentes sintácticos
La mayoría de sentencias SQL tienen la misma estructura.
Todas comienzan por un verbo (select, insert, update, create), a continuación le sigue una o más cláusulas que nos dicen los datos con los que vamos a operar (from, where), algunas de estas son opcionales y otras obligatorias como es el caso del from.






LENGUAJE DE MANIPULACIÓN DE DATOS  (DML)

Un Lenguaje de Manipulación de Datos (Data Manipulation Language, DML) es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios de la misma llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado.
El lenguaje de manipulación de datos más popular hoy día es SQL, usado para recuperar y manipular datos en una base de datos relacional. Otros ejemplos de DML son los usados por bases de datos IMS/DL1CODASYL u otras.
DML son las siglas de Data Manipulation Language y se refiere a los comandos que permiten a un usuario manipular los datos en un repositorio, es decir, añadir, consultar, borrar o actualizar.
En SQL los comandos SELECT, INSERT, UPDATE y DELETE son comandos DML
Otras órdenes como COMMIT, START TRANSACTION o ROLLBACK están en el límite de lo que podemos considerar órdenes DML de SQL puesto que no inciden en la manipulación o consulta de datos pero sí en el proceso en que esto se realiza.
Por cierto que lo de "START TRANSACTION" no es estándar y depende de la implementación de SQL (en Sybase si no recuerdo mal, una transacción se modela poniendo el AUTOCOMMIT a false y tras hacer el COMMIT o ROLLBACK, a true).

UN LENGUAJE DE DEFINICIÓN DE DATOS (DDL)

Un lenguaje de definición de datos (Data Definition Language, DDL por sus siglas en inglés) es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios de la misma llevar a cabo las tareas de definición de las estructuras que almacenarán los datos así como de los procedimientos o funciones que permitan consultarlos.
El lenguaje de programación SQL, el más difundido entre los gestores de bases de datos, admite las siguientes sentencias de definición: CREATE, DROP y ALTER, cada una de las cuales se puede aplicar a las tablas, vistas, procedimientos almacenados y triggers de la base de datos.
Otras que se incluyen dentro del DDL, pero que su existencia depende de la implementación del estándar SQL que lleve a cabo el gestor de base de datos son GRANT y REVOKE, los cuales sirven para otorgar permisos o quitarlos, ya sea a usuarios específicos o a un rol creado dentro de la base de datos.

No hay comentarios:

Publicar un comentario