La propia Radware y sus patrocinadores (Cisco, Eleven Paths , Unidad de Ciberseguridad de Telefónica) están en busca de hackers de sombrero blanco para retar su seguridad en un concurso dónde se otorgarán 3 premios. 2 certificados valorados en 100 y 250 €uros, si no me equivoco y un 1 er premio de 2000 euros y un viaje a francia para 2 personas para unirse a "Nuit du Hack" incluyendo vuelo, hotel y pase para el evento.
También , existe la posibilidad de asistir como público.
Hay dos formas de registrar tu asiento en el evento... recibiendo una invitación personal por parte de Radware o bien... desde la web : http://global.radware.com/hc-madrid-2018
Será celebrado el 15 de Marzo en calle pardillo 60, madrid de 10:00 14:00 (cerrrán el evento con un aperitivo).
Dado por un accidente que tuve y me lesione la pierna, no podré asistir, así que espero que otros hagáis una buena obra y comentéis que os ha parecido si asistís a este evento.
En este lo que hice fue ejecutar procedimiento con 3 variables en Lenguaje C.
Y mostrar el resultado del aleatorio con la función Rand() a partir de un Switch (En caso de).
Y un bucle para que recorre un único número premiado al azar entre el 1 y el 10.
Finalmente ordeno escribir el número que ha salido de forma aleatoria y lo introducimos obteniendo así al ganador/a que le corresponde ese número en el listado del Switch(En caso de).
Este año he realizado el programa en lenguaje SQL: creo una bbdd nueva a través de PHPmyAdmin ( se puede hacer en consola o Workbench entre otros...).
A esa bbdd le creo una tabla con los campos: ID(Autonumerico) que será el campo clave primaria, y los campos Nombre y Apellidos que serán tipo VARCHAR(texto).
A partir de esta tabla añado tantos registros como clientes dispongo con un INSERT INTO.
Y finalmente creo la consulta que me dará el nombre de los ganadores/as de este año.
Se acerca la fecha para la expo de más importante de software libre.
Se celebra en Madrid el día 2 de Junio.
Con más de 2.000 profesionales senior en el sector en sólo un día (desarolladores de código abierto, hackers, expertos, proveedores y usuarios de todos los niveles).
Conferencias multitudinarias , casos de éxito, Key notes, talleres, mesas redondas, demos y varias actividades en torno al mundo de las tecnologías libres.
Hoy vengo con algo que no había enseñado nunca pero lo veo importante, mostrando la BBDD que utilizo desde hace ya varios años,
para los clientes de DESY Repara.
Una BBDD que sólo manejo yo, y que en este videotutorial os muestro sólo la parte que os puede resultar más práctica a la hora de crear vuestra propia bbdd para vuestro negocio o vida personal.
Las Bases de datos manejan información de diferentes tipos, se deben crear relaciones entre los campos y para ello es indicado empezar a crearlas desde el MER y el MR (modelo entidad relación y modelo relacional).
Podéis encontrar referencias y ejemplos en este mismo blog.
Os dejo aquí debajo unos enlaces relacionados.
Hace poco empece el proyecto final de curso de Grado Superior en Administración de Sistemas.
El proyecto de mi grupo trata sobre un Proxy de Aula, pero tenía la idea de poder añadirle algo de biometria en los accesos.
Bien., estuve mirando algunas posibilidades, pero finalmente no podría hacer nada porqué en todos los casos es necesario un terminal biometrico o un aparato de lectura de huella digital (y todo esto se escapa de nuestras posibilidades económicas).
Aun así me gustaría exponer aquí algunas partes de un programa que estuve probando. Muy chulo, aunque para que funcione al 100% es necesario hacerse con el terminal biometrico ( unos 650 €).
Nos descargamos el programa, y iniciamos la instalación ....
Como véis en la siguiente foto es necesario instalar un servidor Mysql que será el encargado de acumular los datos en Bases de Datos.
Iniciamos la instalación del Servidor.
Elegimos instalación típica.
click en Instalar
Tardará un rato largo.
Le damos a Next en las siguientes pantallas.
Y empezamos a configurar el Mysql
En este paso seleccionamos configuración detallada.
Ahora Elegimos Base de datos multifuncional
A continuación escribimos el path del programa
Elegimos el máximo de conexiones hacía el servidor, como manual y ponemos 15
Habilitamos un puerto tcp/ip
y no
olvidar marcar la casilla de : activar una regla de firewall para permitir las
conexiones
En el siguiente paso: seleccionamos manual -- utf8 referente al
español
para ir finalizando le ponemos contraseña de usuario
root y añadimos la opción de añadir un usuario anonimo para
acceder. para hacer pruebas posteriormente.
Le damos a Ejecutar y si todo va bien ....
click a finalizar
Ahora:
le damos a instalar face id drivers y aparecerá una ventana de información que
nos dice:
Para terminar click en instalar bio securitas
Seguimos los pasos indicados por el asistente de instalación.
y.....
Llego el momento de la verdad....
iniciamos programa.
Vamos a inicio--> todos los programas ---> Dactilplus Biometria
Realizamos la activación, de momento solo podemos clic
a evaluación de prueba.
Ponemos nuestro email y nombre.
Nos informa de que disponemos de 30 días de prueba
Cerramos y volvemos a abrir, para que funcione correctamente el programa.
Nos aparece un mensaje que dice: "No se creo la base de datos, click en aceptar para crearla."
Y click en Aceptar.
Aquí ponemos el nombre del servidor " localhost", y la contraseña del super usuario.
click a crear base de datos para finalizar la operación.
Nos informa de que es necesario reiniciar el programa después de esta operación.
Con darle click a Aceptar se cierra todo automáticamente.
Abrimos de nuevo y ahora veremos:
ponemos un código a el usuario admin y al usuario estándar.
Ahora podemos dirigirnos a: la pestaña: departamentos, nos pedirá el
codigo de admin
Desde aquí podemos crear nuevos departamentos:
Podemos ir a pestaña departamentos-->secciones y añadir nuevas secciones
vamos a pestaña usuarios --> lista de usuarios-->
clic en modificar (abajo) y podemos añadir nuevos usuarios
y una vez introducidos los datos le damos a guardar
podemos
ir a configuración -- terminales biométricos
Aquí, es donde deberíamos poner la Ip de el terminal biométrico (aparato para identificación facial).
También podemos ir a la pestaña Horarios --> crear nuevo horario
Y unas cuantas opciones más, pero para ello, hemos de disponer tanto del software como del aparato para reconocimiento facial.
Instala el XAMPP O WAMPP i activa Mysql
Per a que funcioni bé el terminal del Mysql: primer de tot anem a equipo ----> propiedades.
Configuración avanzada del sistema---->variables de entorno
En variables del sistema busca el path.Doble clic para acceder
Afegeix ; al final de la linia actual i copia i pega la direcció del teu XAMPP , al final un ; per terminar
(la direcció del teu XAMPP, esta en C:\XAMPP\mysql\bin , copia esta ruta en el path , añade un ; y aplica)
Ara ja podràs accedir amb el cmd , des del terminal
Per més info consultar también:
Sentencias SQL BBDD MySQL inicios MySQL Workbench
1. Consulta quins usuaris hi ha creats a MySQL. Digues quins són i des de quina màquina poden connectar-se. Es poden consultar les seves contrasenyes?
use mysql;
SELECT USER FROM USER;
només esta root.
si si consultem els privilegis d'usuari amb SHOW GRANTS FOR 'root'; ens surt la contrasenya xifrada.
2. Crea un usuari que pugui connectar-se des de qualsevol màquina anomenat 'teu_nom' (posa-hi el teu nom) i amb contrasenya 'laboratori'. Comprova i mostra amb l'ordre d'abans que apareix el nou usuari.
Entrem a la base de dades mysql: use mysql;
CREATE USER 'desy'@' ' IDENTIFIED BY 'laboratori';
li posem a Login name :desy, deixem el simbol % al limit conectivity i li posem una password, en aquest cas laboratori;
per consultar els usuaris creats:
SELECT USER FROM USER;
3. Consulta els privilegis del nou usuari i explica'ls. Digues també des de quina o quines màquines es pot connectar.
SHOW GRANTS FOR ' desy ';
es pot conectar des de qualsevol màquina. per que té el % com a host
1. Obre el Workbench, connecta't amb el teu servidor MySQL amb privilegis d'administrador i ves a la pestanya d'usuaris/es. Quins usuaris hi ha fets, des quina o quines màquines es poden connectar i quins rols administratius tenen? Què vol dir el símbol “%” referit als usuaris?
el usuario root, i el Desy que hem creat abans. Es conecta desde localhost 127.0.0.1, el simbol % serveix per a que el compte d'usuari es pugui conectar des de qualsevol màquina.
root, te marcats tots els rols administratius perquè es l'usuari administrador i té accés a tots els rols.
mentres que Desy, per defecte no té cap marcat per qué és un usuari estándar.
2. Fes l'usuari/a “teu-nom-1” amb contrasenya “teu-nom-1”. Dona-li privilegis per fer nous usuaris/es i posar noves contrasenyes. Escriu aquí les ordres SQL que mostra el Workbench per a aquests privilegis. Captura una pantalla.
CREATE USER 'Desy1'@'localhost' IDENTIFIED BY 'Desy1';
GRANT CREATE,RELOAD ON *.* TO 'Desy1'@'loclahost' ;
SHOW GRANTS FOR 'Desy1';
FLUSH PRIVILEGES;
No us oblideu del FLUSH PRIVILEGES; per actualitzar les taules de permisos després de fer canvis en els permisos dels usuaris.
3. Fes també l'usuari/a “teu-nom-2” amb contrasenya “teu-nom-2”, sense cap privilegi especial.
CREATE USER 'Desy2'@'localhost' IDENTIFIED BY 'Desy2';
5. Des de “teu-nom-1”, canvia la contrasenya de l'”teu-nom--2”. Captura una pantalla
MySql -u Desy1 -pDesy1;
SET PASSWORD FOR 'Desy2'@'localhost' = PASSWORD ('Desy1');
8. Connecta't des de la línia d'ordres amb l'“teu-nom-1” i fes l'usuari/a “teu-nom-3” amb contrasenya “teu-nom-3”.
-u Desy1 -pDesy1;
CREATE USER 'Desy3'@'localhost' IDENTIFIED BY 'Desy3';
5. Per a què serveix SELECT CURRENT_USER();?
Per veure amb qui usuari estem logejats.
6. Com crear una nova Base de dades? CREATE DATABASE bdprova;
Així es creara la nova base de dades bdprova.
7.com quitar elsp ermisos a un usuari? REVOKE ALL ON *.* FROM 'Desy2'@'%';
En comptes d'ALL podem posar només el nom d'un o més permisos especificats als quals retirar del usuari que sigui.
Per reiniciar el servidor des de la consola ho hem de fer així, primer el parem: C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld -u root shutdown
Després el iniciem amb la aplicació mysqld.exe fent aixó: C:\> C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld
Este pequeño cuestionario de pruebas esta especialmente pensado para MySQL Workbench, pero también puede ser usado con comandos similares en PostgreSQL y/o PhpMyAdmin
1.Desde un usuario con privilegios(root) . Haz que el usuario us2 solo se pueda conectar desde la máquina en la que estas y a la base de datos bdprova. También, solo podrá utilizar las ordenes: SELECT, INSERT i LOCK TABLES:
Desde root, vamos a la pestaña de users & privileges, y clicamos en el usuario usu2.
Vamos a schema privileges y a add entry , le ponemos los datos que requiere: el host Localhost ,en Schema (bdprova) y los Privilegios se ponen desde la pestaña inferior.
En Object rights marcamos: SELECT e INSERT. Y en Other Rights: LOCK TABLES.
2.Qué privilegios tiene SecurityAdmin? Qué privilegios se activan al escoger esta opción?
Se activan los privilegios “CREATE USER, GRANT OPTION, RELOAD y SHOW DATABASES".
3.Qué diferencias hay entre DBManager y BackupAdmin?
DBManager tiene todo tipos de derechos para ejercer sobre la administración en todas las bases de datos.
BackupAdmin por otro lado, solo tiene el mínimo de derechos para hacer un backup (copia de seguridad) de cualquier base de datos.
En la siguiente imagen veréis la pantalla para establecer los permisos deseados al usuario seleccionado.Si los permisos no están establecidos solo podrá hacer uso de las bases de datos
Como veis en la imagen de a bajo lo hemos configuradop ara que podamos conectar desde cualquier host y a cualquier base de datos.
5. Haz el usuario/a “a3@%” con los privilegios que necesite y limita el número de consultes a 2 por hora. Después conecta con este usuario y prueba a hacer 3 consultas seguidas.
Con un límite de 2 consultas por hora ,cuando hacemos la tercera consulta en menos de una hora , nos dice que hemos sobrepasado el límite de consultes.
6.¿Como se actualizan las tablas de privilegios?
Con el comando, mediante terminal: Flush_privileges .
7.Cuál o cuales privilegios son necesarios para cambiar la contraseña de los usuarios/as? Pon de nueva contraseña del usuario3 “usuario3usuario3” utilitzando mysqladmin y la orden SET. Escribe las ordenes .
El privilegio será: Grant options ,cuando se hace en el usuario que queremos que dé privilegios.
SET PASSWORD
mysql> UPDATE mysql.user SET Password=PASSWORD('usuario3usuario3')
-> WHERE User='usuario3';
mysql> FLUSH PRIVILEGES;
8.Es posible guardar la contraseña de administrador en el archivo de configuración? Dónde?
Es posible modificando el archivo: my.cnf: sudo nano /etc/myslq/my.cnf de Ubuntu.
En windows modificaríamos el my.ini que esta en el directorio de la instalación.
Hay que añadir estas lineas en el apartado cliente:
[client]
user = nombredeusuario
password = passworddeusuario
port = 3306
host = localhost
9.Desde administrador revoca todos los permisos para el usuario3 (que se quede solo con USAGE).
REVOKE ALL PRIVILEGES ON *.* FROM 'usuario3'@'%';
GRANT USAGE ON *.* TO 'usuario3'@'%';
10.Escribe la orden para mostrar los permisos de usuario3.
SHOW GRANTS FOR usuario3;
ROLLBACK / COMMIT
Al hacer una consulta o transacción en MySQL, se suele empezar con un BEGIN, y acabar con un COMMIT para guardar las ordenes o ROLLBACK para deshacer y no guardar.
11.Como se comprueba si autocommit esta activado? Desactivalo.
Para desactivar el autocommit hemos de hacer :
SET AUTOCOMMIT= 0;
Pero eso se suele hacer cuando usamos tables transicionales, es decir con motor de almacenamiento InnoDB o BDB.
MyISAM, el que estamos utilitzando en esta tabla, es un motor no transicional.
O Sino hacer uso del comando START TRANSACTION + comandos a ejecutar.
En este caso no se ejecutará el autocommit, pero solo en la primera acción.
12.Si quieres hacer una transacción con autocommit activado, pero no lo quieres desactivar, como la haces?
Con el comando START TRANSACTION.
En vez de BEGIN.
I después , añadimos el resto de comandos+ COMMIT para finalizar y que se ejecute o ROLLBACK para que no se ejecute.
13.Cuál es la orden para cambiar una tabla MyIsam a InnoDB?
ALTER TABLE nombretabla ENGINE=InnoDB;
14.Diseña una transacción que ejecutarás desde la línea de ordenes.
Ponemos el Autocommit a 0:
SET AUTOCOMMIT =0;
Después ejecutamos la transacción:
BEGIN;
SELECT * FROM Molinero_myisam WHERE ASIGNATURA ='BDD';
COMMIT;
15.Crear una vista a partir de una tabla ya creada.
USE dbuoc;
CREATE VIEW clients_moli AS SELECT nom_cli, nif,telefon FROM clients;
16.Haz un SELECT donde se vean todos los registros de la tabla virtual.
SELECT * FROM clients_moli;
17.Modifica la vista para incluir o excluir algún campo más.
USE dbuoc;
ALTER VIEW clients_moli AS SELECT codi_cli,nom_cli, nif, telefon, ciutat FROM clients;
18.borra la vista
DROP VIEW clients_moli;
CREAR DISPARADOR (TRIGGER):
crear disparador que se ejecute al insertar un empleado y que actualice el presupuesto sumándolo al sueldo del nuevo empleado.
DROP TRIGGER Dbuoc IF EXIST ;
DELIMITER |
CREATE TRIGGER Dbuoc BEFORE INSERT ON departamentos
FOR EACH ROW
BEGIN
SET new.empleado= (SELECT sueldo FROM empleats);
UPDATE presupuesto SET new.presupuesto= (SELECT sueldo + presupuesto FROM empleados,departamentos )
END ;
|
DELIMITER ;
SELECT * FROM departamentos;
añadir nuevo empleado en la tabla empleados:
INSERT INTO empleados VALUES ('18','desiree', 'moli','3000','DIR','Barcelona','1');
20.Hacer un disparador que se ejecute al borrar un empleado y que actualice el presupuesto del departamento restando el sueldo.
DROP TRIGGER IF EXISTS Dbuoc2 ;
DELIMITER
|
CREATE TRIGGER Dbuoc2
BEFORE DELETE ON empleados
FOR EACH ROW
UPDATE departamentos SET presupuesto=presupuesto - old.sueldo WHERE old.nom_dpt=departamentos.nom_dpt AND old.ciudad_dpt=departamentos.
ciudad_dpt;
|
DELIMITER
SELECT * FROM departamentos;
21.Escribe un procedimiento que es llame proc_apellido, donde apellido es tu apellido, que muestre de todos los clientes de la ciudad que le pones como un parametro, su nombre, su DNI y su núm. de teléfono. Hazlo utilizando parámetros siempre que se pueda. Si no hay ningún cliente, ha de mostrar:
“En aquesta trista ciutat no hi ha cap client...encara!”. Ejecuta el procedimiento para la ciudad de Girona.
DROP PROCEDURE IF EXISTS PROC_MOLI;
DELIMITER |
create procedure PROC_MOLI (IN ciudad VARCHAR(50))
Begin
IF (SELECT nom_cli FROM clientes WHERE ciudad=ciudad) IS NULL THEN
SELECT CONCAT ('EN LA CIUDAD', ciudad, 'NO HAY CLIENTES') AS ciudad;
ELSE
SELECT nom_cli,nif,telefon FROM clientes WHERE ciudad=ciudad;
END IF;
END;
|
DELIMITER
CALL PROC_MOLI (@w);
22.Escribe una función que se llame “func_apellido”, donde apellido es tu apellido, que devuelva la fecha de inicio del proyecto del empleado que cobra más. Utiliza la función MAX y las variables que necesites.
DROP FUNCTION IF EXISTS FUNC_MOLI;
DELIMITER |
CREATE FUNCTION func_moli ( ) RETURNS DATE
-RETURN (SELECT data_inici FROM proyectos INNER JOIN empleados ON
proyectos.codi_proj=empleados.num_proj WHERE codi_empl=(SELECT codi_empl
FROM empleados WHERE sueldo= (SELECT max(sueldo) FROM empleados)));
|
DELIMITER
SELECT FUNC_MOLI();
Trabajaremos con las tablas "libros" y "editoriales" de una librería. DESDE WORKBENCH U OTRO PROGRAMA QUE PERMITA SENTENCIAS SQL.
Eliminamos las tablas y las creamos:
ELIMINAR TABLAS:
drop table libros;
drop table editoriales;
CREAR TABLAS CON SUS CAMPOS
create table editoriales(
codigo number(3),
nombre varchar2(30),
primary key (codigo)
);
create table libros (
codigo number(5),
titulo varchar2(40),
autor varchar2(30),
codigoeditorial number(3),
precio number(5,2),
primary key(codigo),
constraint FK_libros_editorial
foreign key (codigoeditorial)
references editoriales(codigo)
on delete cascade
);
Ingresamos algunos registros: para ello INSERT INTO+ nombre TABLA + VALUES + valores entre paréntesis separados por comas y ' ';
insert into editoriales values(1,'Planeta');
insert into editoriales values(2,'Emece');
insert into editoriales values(3,'Paidos');
insert into editoriales values(4,'Siglo XXI');
insert into libros values(100,'Uno','Richard Bach',1,15);
insert into libros values(101,'Ilusiones','Richard Bach',4,18);
insert into libros values(102,'Puente al infinito','Richard Bach',2,20);
insert into libros values(103,'Aprenda PHP','Mario Molina',4,40);
insert into libros values(104,'El aleph','Borges',2,10);
insert into libros values(105,'Antología','Borges',1,20);
insert into libros values(106,'Cervantes y el quijote','Borges',3,25);
Mostramos los títulos de los libros de "Borges" de editoriales que han publicado también
libros de "Richard Bach":CREAR QUERY (CONSULTA)
DDL (Data Definition Language): Definición de datos.
- Que datos queremos guardar: tablas y atributos.
- Integridad de los datos: claves primárias y foráneas , restricciones de usuario.
DML (Data Manipulation Language): Acceso y Actualización
de los datos.
- Consultas
- Inserciones
- Actualizaciones
- Eliminaciones
DCL (Data Control Language): Control de acceso a los datos.
- Control seguridad: definición de usuarios y privilegios de acceso.
- Control de acceso concurrente: gestión de transacciones.
EXPRESION GENERAL DE LAS CONSULTAS:
SELECT: Atributos que se desean mostrar .
FROM: Tablas necesarias para obtener la información que
se quiere mostrar en SELECT .
WHERE: Condiciones que han de cumplir los registros que
se mostrarán
GROUP BY: Atributos para los que se ha de agrupar el resultado
de la consulta.
HAVING: Condiciones que han de cumplir los grupos que
se muestren .
ORDER BY: Atributos que determinan el orden de
mostrado de los datos.
OTRAS ORDENES:
SELECT DISTINCT llista d’atributs
- Por defecto, si en el resultado de la consulta hay valores duplicados, se ven tantas veces como existan.
- DISTINCT elimina del resultado de la consulta las files con valores
duplicados (iguales) solo lista los de valor distinto.
ORDER BY atributo ASC/DESC, …
- Por defecto, la orden de visualización del resultado de una consulta no esta definido.
- Por defecto, si ejecutamos ORDER BY + nombre del campo, ordena de forma ascendente (A--->Z)
- Si usamos ORDER BY DESC + nombre del campo, lo listara en orden descendiente (Z--->A).
WHERE : Condiciones
- Operadores de comparación habituales: <, >, <=, >=, =, <>
- Rangos de valores:
atributo BETWEEN valor1 AND valor2
VALOR NULO (Campo vacío)
atributo IS [NOT] NULL
Retorna válido si el atributo no tiene vaslor (es un valor nulo).
Es la única manera de saber si un atributo tiene o no valor.
OPERADORES BOLEANOS DE CONDICIÓN
Combinación de condiciones: AND, OR, NOT
Ejemplo:
(codi_libro=234) AND (etapa > 1995) OR (dni IS NOT NULL)
GROUP BY
- Agrupa todos los registros que tienen igual valor en el atributo o
atributos especificados en el GROUP BY.
- En el resultado final de la consulta se recupera una única fila por
cada uno de los grupos que se ha formado.
- En el SELECT solo se pueden mostrar los atributos que definen el grupo y las funciones de total.
- Siempre que haya un COUNT, AVG, MAX, MIN o otro campo que se haya de definir en una nueva columna con AS, hay que añadir al final de la consulta un GROUP BY con el nombre del resto de campos
( excepto el que lleva la operación AS).
Sino, saldrá con un error.
Exemple: Mostrar, por cada socio, el número de libros que ha cogido en préstamo.
SELECT codi_soci, COUNT (nº_exemplar) AS n_libros
FROM Préstamos
GROUP BY codi_soci
HAVING condició
- Después de agrupar los registros y hacer cálculos, para cada grupo,
aplica una condición a los grupos por decidir quienes se muestran .
Exemple: Recuperar el código de los socios que han cogido más de un libro en préstamo durante el año 2001
Las consultas simples, son consultas que se realizan sobre una única tabla. Mientras que las consultas multitabla se realizan sobre varias tablas.
consultes de resum: 1.¿cuál es el importe total de los pedidos realizados por el cliente Jaime Llorens?
SELECT sum(Pedidos.importe) AS total
FROM Pedidos
WHERE [Pedidos.clie]=2103;
2. Cuántos pedidos hay de más de 50.000 €?
SELECT Count(Pedidos.importe) AS importes_superiores
FROM Pedidos
WHERE importe > 50000;
3. Hallar el precio medio de los productos del fabricante QSA:
SELECT Avg(productos.precio) AS media_precio
FROM productos
WHERE [productos.idfab] = [Fabricante
consultes de subconsultes: 1. Listar los nombres de los clientes que tienen asignado el representante Vicente Palanca(suponiendo que no pueden haber representantes con el mismo nombre)
SELECT nombre
FROM clientes
WHERE repclie = (SELECT numemp FROM empleados WHERE nombre = 'Vicente Palanca' );
2. Listar los vendedores que no trabajan en oficinas dirigidas por el empleado 103.
SELECT numemp, nombre, oficina
FROM empleados
WHERE NOT EXISTS ( SELECT * FROM oficinas WHERE empleados.oficina = oficinas.oficina AND dir = 103);
3. Listar las oficinas en donde haya un vendedor cuyas ventas representen más del 70% del objetivo de su oficina.
SELECT *
FROM oficinas
WHERE EXISTS ( SELECT * FROM empleados WHERE ventas > objetivo * 0.70);
FUNCIONES DE AGREGACIÓN
Existen varias funciones que podemos utilizar en consultas para obtener diferentes resultados :
AVG/ AVERAGE
• AVG([DISTINCT] expr)
Retorna el valor medio de expr. La opción DISTINCT puede usarse desde MySQL 5.0.3 para
retornar la media de los valores distintos de expr.
mysql> SELECT student_name, AVG(test_score)
-> FROM student
-> GROUP BY student_name;
COUNT
Retorna el contador del número de valores no NULL en los registros
recibidos por un comando SELECT.
mysql> SELECT student.student_name,COUNT(*)
-> FROM student,course
-> WHERE student.student_id=course.student_id
-> GROUP BY student_name;
ejemplo:
mysql> SELECT COUNT(*) FROM student;
MIN,MAX
MIN([DISTINCT] expr), MAX([DISTINCT] expr)
Retornas los valores máximos y mínimos de expr.
mysql> SELECT student_name, MIN(test_score), MAX(test_score)
-> FROM student10 de 10
-> GROUP BY student_name;
SUM
Retorna la suma de expr.
Suponga que una tabla llamada sales tiene las columnas year, country,
product, y profit para guardar las ventas productivas:
CREATE TABLE sales
(
year INT NOT NULL,
country VARCHAR(20) NOT NULL,
product VARCHAR(32) NOT NULL,
profit INT
);
Los contenidos de la tabla pueden resumirse por año con un simple GROUP BY como
este:
mysql> SELECT year, SUM(profit) FROM sales GROUP BY year;
SQL es el lenguaje utilizado para la creación y gestión de muchas bases de datos.
MySQL esta basado en SQL , y algunos programas lo incorporan para gestionar dichas bases de datos
A continuación presento dos formas de su uso, modo tutorial de dos de estos programas.
El primero su función la emplea desde una consola en comandos un poco más complicado al de modo interfaz, puesto que hay que conocer
los comandos para su utilización.
en este tutorial me centro en el restablecimiento de las contraseñas de usuario
MySQL server comandos
Por otro lado , también presento un tutorial creado a partir de MySQL Workbench , programa que utiliza también la misma función para base de datos pero a nivel interfaz
algo más fácil de utilizar .También existen otros programas, a mi, especialmente me gusta más PHPMyaDMIN, que Workbench. Aunque los dos tienen funciones muy similares.
También me centro en el restablecimiento de contraseñas , pero podréis ver otros apartados que incluye la configuración de usuarios.
Ambos tutoriales han sido creados con el editor de vídeo Camstasia Studio 7.1
Espero que os gusten. Gracias lectores que seguís mi blog.