20
DIPLOMADO EN ADMINISTRACIÓN DEL SISTEMA OPERATIVO LINUX LENGUAJE SQL LENGUAJE DE DEFINICIÓN DE DATOS TEMA INSTALACIÓN Y CONFIGURACIÓN MYSQL MODULO 02 Elaborado por: MSc. Manuel Jesús Sánchez Chero Profesor del Curso TEMA 03 Material Didáctico para uso exclusivo en clase

Modulo2 tema 3-lenguaje sql-ddl

Embed Size (px)

Citation preview

Page 1: Modulo2 tema 3-lenguaje sql-ddl

DIPLOMADO EN ADMINISTRACIÓN DEL

SISTEMA OPERATIVO LINUX

LENGUAJE SQL

LENGUAJE DE DEFINICIÓN DE DATOS

TEMA INSTALACIÓN Y CONFIGURACIÓN MYSQL

MODULO

02 Elaborado por: MSc. Manuel Jesús Sánchez Chero

Profesor del Curso

TEMA

03

Material Didáctico para uso exclusivo en clase

Page 2: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 2 de 20

Tema 3

Lenguaje SQL – Lenguaje de Definición de Datos

Objetivos

Al finalizar este capítulo, el participante aprenderá a:

Conocer el lenguaje SQL y sus estándares. Conocer que es el Lenguaje Definición de Datos Crear, modificar y eliminar una base de datos. Crear, modificar y eliminar tablas. Conocer los Tipos de Datos.

INTRODUCCIÓN

SQL (Structure Query Languague) es un potente lenguaje informático que cumple las funciones de DDL, DCL y DML en los SGBD relacionales, su origen está en el lenguaje SEQUEL (Structured English Query Language) desarrollado por IBM en los años 1974-1975. Oracle fue el primer fabricante de sistemas de base de datos en comercializar una implementación de SQL en 1979. IBM lanzó su producto SQL/DS en 1981 y dos años más tarde conocido como DB2.

Se trata de un lenguaje fuertemente basado en el inglés, que puede ser utilizado en modo conversacional mediante un intérprete o bien formado parte de un programa desarrollado en un lenguaje de programación como C.

La característica relacional más importante de SQL es que permite acceder a los datos sin necesidad de especificar como se ha de realizar dicho acceso permitiendo así la navegación automática por los datos.

El lenguaje ha sido normalizado por varios organismos, si bien los muchos aspectos que tradicionalmente han quedado indefinidos en tales normalizaciones.

Las aplicaciones en red son cada día mas 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 los lenguajes y de base de datos existentes, la manera de comunicar entre uno y otras sería realmente complicada a gestionar de no ser por la existencia de los estándares que nos permiten realizar las operaciones básicas de una forma universal.

Page 3: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 3 de 20

El hecho de que sea estándar no quiere decir que sea idéntico para cada base de datos. En efecto determinadas base de datos implementan funciones específicas que no tienen necesariamente que funcionar en otras bases de datos.

Aparte de esta universalidad, el SQL posee otras dos características muy apreciadas, por una parte presenta una potencia y versatilidad notable que contrasta y por otra con su accesibilidad de aprendizaje.

EL LENGUAJE SQL

SQL es un método basado en un potente lenguaje, para organizar, administrar y consultar datos almacenados en una computadora. SQL es una sigla que deviene de su nombre en inglés “Structured Query Language” (Lenguaje de Consulta Estructurado). Más específicamente SQL está definido en torno al modelo de bases de datos relacionales, basado en el álgebra relacional, esto le da a SQL las ventajas que lo imponen como el sistema de mayor aceptación.

Actualmente se ha convertido en un estándar de lenguaje de base de datos y la materia de los sistemas de bases de datos lo soportan, por supuesto, a partir del estándar cada sistema ha desarrollado su propio SQL que pueda variar de un sistema a otro, pero con cambios que no suponen ninguna complicación para alguien que conoce SQL concreto.

Como su nombre indica, el SQL nos permite realizar consultas a la base de datos, pero el nombre se queda corto ya que SQL realiza funciones de definición, control y gestión de la base de datos. Las sentencias SQL se clasifican según su finalidad dando origen a tres lenguajes o mejor dicho sublenguajes.

EL DDL (DATA DEFINITION LANGUAGE), Lenguaje de definición de datos, incluye ordenes para definir, modificar o borrar las tablas en las que se almacenan los datos y de las relaciones entre estas. (Es el que más varia de un sistema a otro).

Page 4: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 4 de 20

EL DCL (DATA CONTROL LANGUAGE), Lenguaje de control de datos, contiene elementos útiles para trabajar en un entorno multiusuario, en el que es importante la protección de los datos, la seguridad de las tablas y el establecimiento de restricciones en el acceso, así como elementos para coordinar la compatricio de datos por parte de usuarios concurrentes, asegurando que o interfieran unos con otros.

EL DML (DATA MANIPULATION LANGUHGE), Lenguaje de manipulación de datos, nos permite recuperar los datos almacenados en la base de datos y también incluye ordenes para permitir al usuario a actualizar las bases de datos añadiendo nuevos registros, suprimiendo registros antiguos o modificando registros previamente almacenados.

Algunas de las ventajas son:

Marco teórico sólido, fundamentado en el álgebra relacional Simplicidad de conceptos (modelo de base de datos: tablas = líneas x

columnas) Definición de vínculos en la consulta, esto le da a SQL una gran

flexibilidad Fácil y rápido aprendizaje Arquitectura cliente-servidor Integración con cualquier lenguaje de programación Estandarización Lenguaje interactivo que permite hacer consultas Ad-hoc a bases de

datos.

Page 5: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 5 de 20

ESTANDARES SQL Uno de los desarrollos más importantes en la aceptación del mercado de SQL es el surgimiento de los estándares SQL. Las referencias al estándar SQL significa generalmente el estandar oficial adoptado por la american Nacional standards Institute (ANSI) y la internacional Standards Organizations (ISO). ESTANDAR SQL-89 Este estándar proporciona reglas y lenguaje para definición de objetos de base de datos por ejemplo tablas, vistas, índices.

CREATE Para creación de Objetos

ALTER Para modificaciones

DROP Para Eliminaciones

El mismo lenguaje de definición de datos es usado para definir restricciones e integridad referencial en esquema de base de datos. El Lenguaje de manipulación de datos para consultas y actualizaciones de datos.

SELECT Para Consultas

INSERT Para Agregaciones

DELETE Para Eliminaciones

UPDATE Para Actualizaciones

Provee especificaciones para definir e implementar seguridad, control sobre los objetos de base de datos, provee especificaciones para el control de la concurrencia y control de transacciones (COMMIT y ROLLBACK). Define mecanismos para embeber sentencias SQL en los lenguajes como pascal, cobol, etc.

Page 6: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 6 de 20

ESTANDAR SQL-92 Agrega algunas facilidades a las ya conocidas en el estándar anterior. Agentes, Son las aplicaciones o usuarios interactivos que producen las sentencias SQL reemplaza a los IDS de autorizaciones. Conexiones Cliente / Servidor, Antes de realizar alguna operación sobre la base de datos, un agente desde un cliente debe conectarse a un servidor de base de datos, esta conexión establece una sesión. SQL-92 soporta muchas sesiones concurrentes de un mismo cliente.

ESTANDAR SQL-3 Es una extensa relación de especificaciones que incluyen entre otras facilidades:

Tratamiento de objetos no estructurados (Multimedia). Tipos de Datos, al estilo de clases en lenguaje de programación orientada a

objetos, es decir donde puede heredarse métodos y atributos. Posibilidad de consultas recursivas Roles, grupos de usuarios a quienes se le asignará privilegios sobre los objetos

de la base de datos. Generación de informes, la clausula compute es puesta al final de una

consulta para poner el resultado en una función agregada al final del listado. Creación de Procedimientos almacenados Creación de Disparadores

Page 7: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 7 de 20

LENGUAJE DEFINICION DE DATOS (DDL) Los cambios a la estructura de una base de datos son manejados por un conjunto diferente de sentencias SQL, denominado conjuntamente Lenguaje de Definición de Datos o DDL. Utilizando sentencias DDL, se puede:

Definir y crear nuevas tablas. Suprimir una tabla que ya no se necesita. Cambiar la definición de una tabla existente. Construir un índice para hacer más rápido el acceso a la tabla. Definir una tabla virtual. Controlar el almacenamiento físico de los datos por parte del DBMS.

En su mayor parte, las sentencias DDL aíslan al usuario de los detalles de bajo referentes a cómo los datos están físicamente almacenados en la base de dato. Manipulan objetos abstractos de la base de datos tales como tablas y Columnas. Sin embargo, el DDL no puede evitar completamente las cuestiones referentes al almacenamiento físico y por necesidad, las sentencias DDL y las clausulas que controlan el almacenamiento físico varían de un DBMS a otro. El núcleo del Lenguaje de Definición de Datos esta basado en tres sentencias SQL:

Sentencia Descripción

CREATE Define y crea un objeto en la base de datos

DROP Elimina un objeto de la base de datos

ALTER Modifica la definición de un objeto en la base de datos

En todos los principales productos DBMS basados en SQL, estas tres sentencias pueden ser utilizadas mientras el DBMS este corriendo. La estructura de la base de datos es por tanto dinámica. El DBMS puede crear, eliminar o alterar la definición de las tablas en la base de datos. Esto significa que una base de datos relacional puede crecer y cambiar fácilmente en el tiempo. Aunque el DDL y el DML son dos partes distintas del lenguaje SQL, en la mayoría de los productos DBMS basados en SQL la división es solamente conceptual. Aunque prácticamente todos los productos SQL comerciales soportan el DDL como parte integral del Lenguaje SQL.

Page 8: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 8 de 20

CONECTANDO Y DESCONECTANDO DEL MYSQL

Para conectarse al servidor, generalmente necesitarás facilitar un nombre de usuario Mysql cuando ejecute el cliente mysql y, lo más probable, también un password. Si el servidor se está ejecutando en una máquina distinta a la que estás conectado, necesitarás especificar también un nombre de host. Contacta con tu administrador para averiguar qué parámetros de conexión necesitas usar para conectar (es decir, qué host, nombre de usuario y password usar). Una vez que conozcas los parámetros adecuados, deberás ser capaz de conectar de la siguiente forma:

# mysql -u root -p (pide password, el que acabo de definir, y entra) Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 to server version: 3.23.41 Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer. mysql>

El prompt te indica que mysql ya está listo para la introducción de comandos.

Algunas instalaciones Mysql permiten a los usuarios conectarse como usuarios “anonymous” (sin nombre) al servidor ejecutándose en el host local. Si este es el caso en tu máquina, deberías ser capaz de conectar a ese servidor invocando mysql sin ninguna opción:

pnichiclayo> mysql

Una vez que hayas conectado con éxito, puedes desconectarte en cualquier momento tecleando QUIT en

El prompt mysql> :

mysql> QUIT Bye

También puedes desconectar tecleando control-D.

CREATE DATABASE

Crea una nueva base de datos, es decir que un directorio para almacenar las tablas que conformará la base de datos.

Page 9: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 9 de 20

Sintaxis

CREATE DATABASE database_name

Argumento

database_name

Es el nombre de la nueva base de datos. Los nombres de base de datos deben ser únicos en un servidor y deben seguir las reglas de los identificadores. database_name puede tener un máximo de 128 caracteres.

Ejemplo

En este ejemplo se crea una base de datos llamada base_de_datos_virtual

mysql> create database base_de_datos_virtual

Como puede apreciar en la figura el manejador de base de datos MYSQL ha creado una base de datos (parte izquierda), que viene hacer un simple directorio (parte derecha).

DROP DATABASE

Quita una base de datos de Mysql, al quitar una base de datos se eliminan la base de datos y las tablas que utiliza.

SSiinnttaaxxiiss

DROP DATABASE database_name ]

Argumento

database_name

Especifica el nombre de la base de datos que se va a quitar.

Ejemplo

En este ejemplo se eliminará la base de datos llamada base_de_datos_virtual

Page 10: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 10 de 20

mysql> drop database base_de_datos_virtual

TIPOS DE DATOS

En MYSQL, cada columna en una tabla, expresión dispone de un tipo de datos relacionado, que es un atributo que especifica el tipo de datos que el objeto puede contener. MYSQL suministra un conjunto de tipos de datos del sistema que define todos los tipos de datos que pueden utilizarse con MYSQL. El conjunto de tipos de datos suministrados por el sistema se muestra debajo.

TIPOS DE DATOS NUMÉRICOS

bigint

Datos enteros (números enteros) comprendidos entre -2^63 (-9223372036854775808) y 2^63 -1 (9223372036854775807).

int

Datos enteros (números enteros) comprendidos entre -2^31 (-2.147.483.648) y 2^31 - 1 (2.147.483.647).

smallint

Datos enteros comprendidos entre 215 (-32.768) y 215 - 1 (32.767).

tinyint

Datos enteros comprendidos 0 y 255.

decimal

Datos de precisión y escala numérica fijas comprendidos entre -1038 +1 y 1038 – 1.

float

Números con precisión de coma flotante comprendidos entre -1,79E + 308 y 1,79E + 308.

Page 11: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 11 de 20

double

Números con precisión de coma flotante con precisión doble valores comprendidos entre -1,7976 + 308 a -2.225E + 307.

Son los tipos de datos usados para almacenar números de diversa precisión, a precisión de un número es la cantidad de dígitos que se usan para representar su valor.

TTIIPPOOSS DDEE DDAATTOOSS DDEE CCAADDEENNAASS DDEE CCAARRAACCTTEERREESS

char

Datos de caracteres de longitud fija a la que se añade espacios a la derecha hasta llegar a la longitud que se especificó, con una longitud máxima de 255 caracteres.

varchar

Datos de longitud variable, todos los espacios extra se removerán cuando el valor sea almacenado en la base de datos, con una longitud máxima de 255 caracteres.

Blob o text

Las columnas blob o text tienen una longitud máxima de 65535 (2^16-1). Puede almacenar texto y son buenos manteniendo registros grandes como artículos, la diferencia es que las búsquedas blob son sensibles a las mayúsculas, mientras que las búsquedas text no. Estas columnas son usadas cuando los registros estan entre 255 y 65535 caracteres.

Son tipos de datos usados para almacenar cadena de caracteres de diversas longitudes.

TIPOS DE DATO DE FECHA

Date

Una fecha, el rango soportado es ‘1000-01-01’ a ‘9999-12-31’, MYSQL despliega las fechas en formato ‘YYYY-MM-DD’, pero permite asignar valores a columnas DATE usando cadenas o números.

time

Dato de hora,rango comprendido ‘-838:59:59’ a ‘838:59:59’, MYSQL despliega la hora en formato ‘HH:MM:SS’ pero permite asignar valores a columnas TIME usando cadenas o números.

Son los tipos de datos ofrecidos por MYSQL para necesidades de información de tiempo.

Page 12: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 12 de 20

CREATE TABLE

La sentencia CREATE TABLE define una tabla, esta definición debe incluir el nombre de la tabla y los nombres y atributos de sus columnas, puede incluir otros atributos de la tabla, como puede ser llave primaria.

Sintaxis

Argumentos

Nombre tabla

Es el nombre de la nueva tabla. Los nombres de tablas se deben ajustar a las reglas para los identificadores

Nombre de columna

Es el nombre de una columna de la tabla. Los nombres de columna deben cumplir las reglas de los identificadores y deben ser únicos en la tabla.

Tipo de dato

Especifica el tipo de datos de la columna. Se permiten los tipos de datos del sistema

Page 13: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 13 de 20

default

Específica el valor suministrado para la columna es opcional para la columna. El DBMS utiliza este valor cuando una sentencia insert aplicada a la tabla no específica un valor para la columna.

null | not null

Son palabras clave que determinan si se permiten o no valores NULL en la columna. NULL no es estrictamente una restricción, pero se puede especificar de la misma forma que NOT NULL.

primary key

Es una restricción que exige la integridad de entidad para una o varias columnas dadas a través de un índice único. Sólo se puede crear una restricción PRIMARY KEY por cada tabla.

En este ejemplo creamos una tabla llamada departamento con su llave principal

create table departamento ( iddep char(3) not null primary key, nombredep varchar(40) not null, responsable varchar(6) default null, depsuperior char(3) default null)

En el siguiente ejemplo creamos una tabla persona, pero no definimos una clave primaria.

create table persona ( idper varchar(6) not null, iddep char(3) not null, apellido varchar(20) not null, nombre varchar(20) not null, ubigeo varchar(6) not null, fecingreso datetime not null, cargo char(2) not null, sexo char(1) not null, fecnacimiento datetime not null, sueldo decimal(10,0) default null, bonificacion decimal(10,0) default null, comision decimal(10,0) default null )

Page 14: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 14 de 20

ALTER TABLE

Modifica una definición de tabla al alterar, agregar o quitar columnas y restricciones, o al deshabilitar o habilitar restricciones.

Sintaxis

Ejemplo Creamos una tabla ubigeo (para la ubicación geográfica del Perú)

create table ubigeo ( ubigeo varchar(6) not null, departamento varchar(50) not null, provincia varchar(50) default null )

Page 15: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 15 de 20

AA llaa ttaabbllaa aanntteerriioorr ssee llee aaggrreeggaarráá uunnaa ccoolluummnnaa ddiissttrriittoo

alter table ubigeo add distrito varchar(50) not null

AAhhoorraa qquuiittaarreemmooss llaa ccoolluummnnaa qquuee ffuuee aaggrreeggaaddaa aanntteerriioorrmmeennttee aa llaa ttaabbllaa

alter table ubigeo drop column distrito

Page 16: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 16 de 20

En este ejemplo agregaremos una columna y una llave primaria a la tabla ubigeo

alter table ubigeo add distrito varchar(50) null alter table ubigeo add primary key(ubigeo)

En la figura usted observará que en la columna ubigeo contiene una llave, indicando que es la llave primaria de la tabla, además se ha agregado una columna distrito

En este último ejemplo quitamos la llave primaria de la tabla ubigeo.

alter table ubigeo drop primary key

Como observa en la siguiente figura la columna ubigeo ya no tiene al costado la llave, eso quiere decir que la tabla ya no contiene una llave primaria.

Page 17: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 17 de 20

DROP TABLE

Con la sentencia Drop table suprime una tabla de la base de datos, su definición y todos sus contenidos se pierden. No hay manera de recuperar los datos y habría que utilizar una nueva sentencia create table, para volver a crear la definición de la tabla. Debido a sus series consecuencias, debe utilizarse la sentencia Drop table con mucho cuidado.

Sintaxis

Argumento

Nombre-tabla

Es el nombre de la tabla que se va a quitar.

Ejemplo

Eliminar la tabla ubiego

Drop table ubigeo

Como muestra la figura la tabla ubigeo ha sido eliminada de la base de datos Senatichiclayo

Page 18: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 18 de 20

Preguntas de Repaso

1. ¿Qué diferencia hay en SQL y MYSQL?

2. ¿Qué diferencia hay entre el estándar- 89 y el estandar-3?

3. ¿Conoce usted otros manejadores de base de datos, mencione algunos de

ellos?

4. ¿Cree usted que la mayoría de los DBMS soportan el lenguaje SQL?

5. ¿En qué caso debo utilizar la sentencia ALTER TABLE, de algunos ejemplos?

Practica: Crear una base de datos Empresa y luego utilizando las sentencias create y alter table cree el siguiente modelo.

Page 19: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 19 de 20

Detalles de las Tablas

Tabla Actividad

Tabla Cargo

Tabla departamento

Tabla persona

Page 20: Modulo2 tema 3-lenguaje sql-ddl

MSc. Manuel Jesús Sánchez Chero Página 20 de 20

Tabla Proyecto

Ubigeo