Usuario:ManuelRomero/php/NewPHP/B2T8/SQL
Contenido
Sistema Gestor de Bases de datos
Un SGBD es un software que nos va a permitir gestionar una base de datos. |
Consiste de crear la base de datos y manipularla. manipular implica poder realizar operaciones sobre ella como son |
|
La manera en la que se organiza la información para que se pueda gestionar es fundamental, y los software de los gestores de bases de datos han de gestionarla siguiendo ese criterio.
De esta forma aparece una nueva letra, así hablamos de SGBDR, haciendo referencia a que son Relacionales, o SGBDOO haciendo referencia que son orientados a objetos.
Es éste un tema que lleva muchos años en uso.Para más información:
Los Sistemas de Bases de datos Relacionales están basados en Tablas y en claves principales - claves foráneas para mantener relacionadas tuplas o filas de diferentes tableas.
Imagen Cliente Factura
| |
|
- Entre los sistemas de bases de datos Relacionales tenemos Mysql Vs maria, PostgreSQL' (Aunque ésta última es Objeto Relacional), Oracle que también tiene la posibilidad de ser usada como objeto-Relacional, ...
Actualmente también se trabaja de forma complementaria en las aplicaciones con SGBD NoSql, llamados así por que su estructura no está basada en relaciones entre tablas, sino que tiene otros criterios.
Podemos ver que existen bases de datos que siguen otro criterio, como el de almacenar con clave -valor como hace MongoDB que está basada en Documentos , por lo que se llama una base de datos Documental. Este concepto lo estudiaremos en otro tema. Para gestionar sistemas de bases de tipo Mongo, podemos usar herramientas como Rockmongo, o Mongochef. Esta última es más recomendada .
|
http://www.campusmvp.es/recursos/post/Fundamentos-de-bases-de-datos-NoSQL-MongoDB.aspx |
SQL
SQL es un lenguaje de consultas estructuradas o Structured Query Language. Es un lenguaje de 4º generación donde el programador o usuario del lenguaje especifica lo qué quiere, pero no establece el procedimiento a seguir para conseguirlo, no dice cómo ha de hacer el sistema para conseguirlo
Lenguaje no procedural Vs lenguaje procedural)
| |
Dime todos los empleados de más de 45 años o SELECT * FROM empleados WHERE edad>45; Lenguaje procedural (tipo php o java) Abre la tabla empelados Lee desde el primer registro hasta el último (Bucle) Verifica si ese empleado tiene mas de 45 Si es así añádelo a la lista de resultado Muestra la lista de resultado
|
Lenguaje para gestionar bases de datos relacionales cuyas instrucciones o sentencias especifican lo qué se quiere, no cómo se va a realizar |
Lenguajes dentro de SQL
SQL no es, como su nombre indica, solamente un lenguaje de consultas, sino que proporciona todas las instrucciones necesarias para gestionar una base de datos.
SQL incorpora tres tipos de lenguajes: de Definición, de Control, de Manipulación.
Las instrucciones de SQL se conocen como sentencias, y todas se caracterizan por que empiezan por una palabra reservada que identifica a qué lenguaje de los tres que tiene SQL pertenece esa instrucción.
|
Sentencias DDL
CREATE DATABASE usuarios; CREATE TABLE usuario( password VARCHAR(200), nombre varchar2(40) );
DROP TABLE usuario;
ALTER TABLE usuarios ADD direccion VARCHAR(20); |
Instrucción CREATE
- Sintaxis de la instrucción
- Los nombres de las columnas son identificadores
- Tipos de datos para las columnas
- Especificación de Restricciones
- Definición de Restricciones
- Definición de Restricciones
- Restricción unique
- Restrición Foreign Key
- Restricción Ckeck
- Creacción de tabla como resultado de una consulta
DROP TABLE cliente; DROP TABLE facturas; CREATE TABLE cliente( dni varchar2(10) PRIMARY KEY, nombre varchar2(10) DEFAULT 'mi nombre' ); CREATE TABLE factura( num NUMBER PRIMARY KEY, fecha DATE DEFAULT sysdate, cantidad NUMBER DEFAULT 10, cliente varchar2(10), CONSTRAINT cliente_factura FOREIGN KEY (cliente) REFERENCES cliente(dni) ON DELETE SET NULL ); INSERT INTO cliente (dni) VALUES ( 1); INSERT INTO cliente (dni) VALUES ( 2); INSERT INTO cliente (dni) VALUES ( 3); INSERT INTO cliente (dni) VALUES ( 4); INSERT INTO factura(num, cliente) VALUES ( 1, 1); INSERT INTO factura(num, cliente) VALUES ( 2, 1); INSERT INTO factura(num, cliente) VALUES ( 3, 1); INSERT INTO factura(num, cliente) VALUES ( 4, 2); INSERT INTO factura(num, cliente) VALUES ( 5, 3); INSERT INTO factura(num, cliente) VALUES ( 6, 3); INSERT INTO factura(num, cliente) VALUES ( 7, 4); INSERT INTO factura(num, cliente) VALUES ( 8, 4);
|
Alter table
- La sentencia ALTER TABLE se utiliza para añadir, eliminar o modificar las columnas en una tabla existente.
- SQL ALTER TABLE
ALTER TABLE TABLE_NAME ADD column_name datatype
Eliminar una columna de una tabla
ALTER TABLE TABLE_NAME DROP COLUMN column_name </sql> Modificar co cambiar el tipo de datos de una columna de una tabla <SOURCE lang=sql> ALTER TABLE TABLE_NAME MODIFY column_name datatype
(: Ojo no violar restricciones con la modificación de la tabla)
En un departamento hay empleados cada empleado pertenece a un solo departamento Cada departamento es dirigido por un empleado Un empleado puede dirigir varios departamentos
CREATE TABLE EMPLEADO ( dni varchar2(20), direccion varchar2(15), nombre varchar2(20) NOT NULL, telefono NUMBER, departamento NUMBER, CONSTRAINT valor_telefono CHECK(telefono > 600000000), CONSTRAINT clave_ppal_empleados PRIMARY KEY (dni), CONSTRAINT nom_tel_unico_emp UNIQUE(nombre, telefono) ); CREATE TABLE DEPARTAMENTO( numero NUMBER, nombre varchar2(15), ubicacion varchar2(20) NOT NULL, director varchar2(20), CONSTRAINT numero PRIMARY KEY (numero), CONSTRAINT director FOREIGN KEY (director) REFERENCES EMPLEADO(dni) ); ALTER TABLE EMPLEADO ADD CONSTRAINT pertenece FOREIGN KEY (departamento) REFERENCES DEPARTAMENTO(numero);
ALTER TABLE departamento DROP CONSTRAINT director; DROP TABLE empleado; DROP TABLE departamento;
|
}}
Drop table
- Elimina una tabla de forma completa
- Si solo quire elminiar su contenido usa la claúsula trunctate
Sentencias DCL
GRANT ALL ON DATABASE.* TO 'manuel'@'localhost' #Asigna todos los privilegios sobre las tablas #de la base de datos 'database' # al usuario 'manuel'
|
Sentencias DML
INSERT INTO usuarios (nombre, password) VALUES("manuel", "password_no_segura");
DELETE FROM usuarios WHERE nombre="manuel";
UPDATE usuarios SET nombre="alicia" WHERE nombre="manolo"; |