Chuleta Base de Datos (2017)

Resumen Español
Universidad Universidad Politécnica de Cataluña (UPC)
Grado Ingeniería de Sistemas de Telecomunicación - 2º curso
Asignatura Sistemes Operatius
Año del apunte 2017
Páginas 1
Fecha de subida 19/06/2017
Descargas 4
Subido por

Vista previa del texto

if (!encontrado) i=i+1; } if (encontrado) {t[i].id=-1; return 0; } else return -1; } int main(void) { setvbuf (stdout, NULL, _IONBF,0); int err; Ttabla mi_tabla; Telemento e; char frase [80]; inicializa (mi_tabla); leer_elemento (&e); err = pon_elemento (mi_tabla,e); if (err ==0) printf ("Elemento añadido\n"); else printf ("Tabla llena\n"); leer_elemento (&e); err = pon_elemento (mi_tabla,e); if (err ==0) printf ("Elemento añadido\n"); else printf ("Tabla llena\n"); leer_elemento (&e); err = pon_elemento (mi_tabla,e); if (err ==0) printf ("Elemento añadido\n"); else printf ("Tabla llena\n"); escribir_tabla (mi_tabla); err =eliminar (mi_tabla, "Maria"); if (err ==0) printf ("Elemento eliminado\n"); else printf ("No está en la tabla\n"); err =eliminar (mi_tabla, "Miguel"); if (err ==0) printf ("Elemento eliminado\n"); else printf ("No está en la tabla\n"); escribir_tabla (mi_tabla); return EXIT_SUCCESS; } DROP DATABASE IF EXISTS Cocina; CREATE DATABASE Cocina; USE Cocina; CREATE TABLE Recetas ( Nombre VARCHAR(20) PRIMARY KEY NOT NULL, Tiempo INTEGER )ENGINE = InnoDB; CREATE TABLE Ingredientes ( Nombre VARCHAR(20) PRIMARY KEY NOT NULL, Existencias INTEGER, Proveedor VARCHAR(20) )ENGINE = InnoDB; CREATE TABLE Dosis ( Receta VARCHAR(20) NOT NULL, Ingrediente VARCHAR(20) NOT NULL, Cantidad INTEGER NOT NULL, FOREIGN KEY (Receta) REFERENCES Recetas(Nombre), FOREIGN KEY (Ingrediente) REFERENCES Ingredientes(Nombre) )ENGINE = InnoDB; -- Dame los nombres de los ingredientes del gazpacho de los cuales no hay suficientes existencias SELECT Ingredientes.Nombre FROM Dosis,Ingredientes W-HERE Dosis.Receta = 'Gazpacho' AND Dosis.Cantidad > Ingredientes.Existencias AND Dosis.Ingrediente = Ingredientes.Nombre; -- Nombre de las recetas afectadas si cierra Mercadona SELECT DISTINCT Dosis.Receta FROM Ingredientes,Dosis WHERE Ingredientes.Nombre = Dosis.Ingrediente AND Ingredientes.Proveedor = 'Mercadona' ; char ingrediente[20]; // Pregunto los nombre del ingrediente printf ("Dame el nombre del ingrediente\n"); scanf ("%s", ingrediente); char consulta [80]; strcpy (consulta,"SELECT Dosis.Receta FROM Dosis WHERE Dosis.Ingrediente = '"); strcat (consulta, ingrediente); strcat (consulta,"'"); err=mysql_query (conn, consulta); if (err!=0) { printf ("Error al consultar datos de la base %u %s\n", mysql_errno(conn), mysql_error(conn)); exit (1); } resultado = mysql_store_result (conn); row = mysql_fetch_row (resultado); if (row == NULL) printf ("No se han obtenido datos en la consulta\n"); else while (row !=NULL) { // la columna 0 contiene el nombre de la receta printf ("%s\n", row[0]); // obtenemos la siguiente fila row = mysql_fetch_row (resultado); } mysql_close (conn); CREATE TABLE clientes ( idCliente int not null primary key, nombreC VARCHAR(25) ) TYPE =INNODB; CREATE TABLE productos ( idProducto int not null primary key, nombreP VARCHAR(25), precio int ) TYPE =INNODB; CREATE TABLE compras ( idCli int not null , idPro int not null, cantidad int, FOREIGN KEY (idCli) REFERENCES clientes (idCliente), FOREIGN KEY (idPro) REFERENCES productos (idProducto) ) TYPE =INNODB; -SELECT nombreC FROM clientes, productos, compras WHERE ( (nombreP = 'PPP') AND (idProducto=idPro) AND (cantidad>=2) AND (idCliente=idCli)) -printf ("Escribe el nombre del cliente: "); scanf ("%s", nombre); printf ("%s",nombre); sprintf (consultasql, "SELECT nombreP, cantidad, precio FROM clientes, productos, compras WHERE ((nombreC = '%s') AND (idCliente=idCli) AND (idProducto=idPro))", nombre); // consulta SQL para obtener una tabla con todos los datos err=mysql_query (conn,consultasql); if (err!=0) {printf ("Error al consultar datos de la base %u %s\n",mysql_errno(conn), mysql_error(conn)); exit (1); } //recogemos el resultado de la consulta resultado = mysql_store_result (conn); if (resultado == NULL) printf ("No se han obtenido datos en la consulta\n"); else { printf ("Producto, Cantidad y precio\n"); row = mysql_fetch_row (resultado); while (row !=NULL) {int c = atoi (row[1]); int p = atoi (row[2]); printf ("Producto: %s, Cantidad: %d, Precio: %d\n",row[0],c,p ); row = mysql_fetch_row (resultado); } } CREATE TABLE Empleados ( Nombre VARCHAR (10) PRIMARY KEY NOT NULL, Edad INTEGER NOT NULL, Salario REAL NOT NULL )ENGINE = InnoDB; CREATE TABLE Proyectos ( Nombre VARCHAR (10) PRIMARY KEY NOT NULL, Presupuesto REAL NOT NULL, Duracion INTEGER NOT NULL )ENGINE = InnoDB; CREATE TABLE Participaciones ( Empleado VARCHAR (10), Proyecto VARCHAR (10), Rol VARCHAR (10), FOREIGN KEY (Empleado) REFERENCES Empleados (Nombre), FOREIGN KEY (Proyecto) REFERENCES Proyectos(Nombre) )ENGINE = InnoDB; ---SELECT Empleados.Nombre FROM Empleados, Proyectos, Participaciones WHERE Proyectos.Presupuesto < 1000000 AND Proyectos.Nombre = Participaciones.Proyecto AND Participaciones.Rol = 'Secretario' AND Participaciones.Empleado = Empleados.Nombre ----printf ("Dame el limite de presupuesto\n"); scanf ("%f",&limite); strcpy (consulta,"SELECT Empleados.Nombre FROM Empleados, Proyectos, Participaciones WHERE Proyectos.Presupuesto <"); sprintf (consulta, "%s%f",consulta,limite); strcat (consulta,"AND Proyectos.Nombre = Participaciones.Proyecto AND Participaciones.Rol = 'Secretario' AND Participaciones.Empleado = Empleados.Nombre"); err=mysql_query (conn, consulta); if (err!=0) {printf ("Error al consultar datos de la base %u %s\n", mysql_errno(conn), mysql_error(conn)); exit (1); } resultado = mysql_store_result (conn); row = mysql_fetch_row (resultado); if (row == NULL) printf ("No se han obtenido datos en la consulta\n"); else while (row !=NULL) {// las columnas 0 y 1 contienen DNI y nombre printf ("Secretario: %s\n", row[0]); // obtenemos la siguiente fila row = mysql_fetch_row (resultado); } DROP DATABASE IF EXISTS Campeonato; CREATE DATABASE Campeonato; USE Campeonato; CREATE TABLE Jugador ( Identificador INTEGER PRIMARY KEY NOT NULL, Nombre TEXT NOT NULL )ENGINE = InnoDB; CREATE TABLE Partida ( Identificador INTEGER PRIMARY KEY NOT NULL, Ciudad TEXT NOT NULL )ENGINE = InnoDB; CREATE TABLE Participacion ( Jugador INTEGER NOT NULL, Partida INTEGER NOT NULL, Posicion INTEGER NOT NULL, FOREIGN KEY (Jugador) REFERENCES Jugador(Identificador), FOREIGN KEY (Partida) REFERENCES Partida(Identificador) )ENGINE = InnoDB; INSERT INTO Jugador VALUES(1,'Juan'); INSERT INTO Jugador VALUES(2,'Maria'); INSERT INTO Jugador VALUES(3,'Pedro'); INSERT INTO Jugador VALUES(4,'Luis'); INSERT INTO Jugador VALUES(5,'Julia'); INSERT INTO Partida VALUES(1,'Barcelona'); INSERT INTO Partida VALUES(2,'Madrid'); INSERT INTO Partida VALUES(3,'Sevilla'); INSERT INTO Participacion VALUES(1,1,1); INSERT INTO Participacion VALUES(1,2,2); INSERT INTO Participacion VALUES(1,3,2); INSERT INTO Participacion VALUES(2,2,1); INSERT INTO Participacion VALUES(2,3,4); -- Identificador de las partidas y ciudades en las que ha jugado 'Juan' quedando primero o segundo SELECT Partida.Identificador,Partida.Ciudad FROM Jugador,Partida,Participacion WHERE Jugador.Nombre = 'Juan' AND Jugador.Identificador = Participacion.Jugador AND (Participacion.Posicion = 1 OR Participacion.Posicion = 2) AND Participacion.Partida = Partida.Identificador; -- Escribir la sentencia SQL necesaria para obtener los identificadores de las partidas en las que han participado juntos ‘Juan’ y ‘Maria’.
SELECT Participacion.Partida FROM Jugador,Participacion WHERE Jugador.Nombre = 'Juan' AND Jugador.Identificador = Participacion.Jugador AND Participacion.Partida IN ( SELECT Participacion.Partida FROM Jugador,Participacion WHERE Jugador.Nombre = 'Maria' AND Jugador.Identificador = Participacion.Jugador); -----int main(int argc, char **argv) {MYSQL *conn; int err; // Estructura especial para almacenar resultados de consultas MYSQL_RES *resultado; MYSQL_ROW row; //Creamos una conexion al servidor MYSQL conn = mysql_init(NULL); if (conn==NULL) { printf ("Error al crear la conexi￳n: %u %s\n", mysql_errno(conn), mysql_error(conn)); exit (1); } //inicializar la conexin conn = mysql_real_connect (conn, "localhost","root", "mysql", "Campeonato",0, NULL, 0); if (conn==NULL) { printf ("Error al inicializar la conexion: %u %s\n", mysql_errno(conn), mysql_error(conn)); exit (1); } char ciudad[20]; // Pregunto los nombre de los dos jugadores printf ("Dame el nombre de una ciudad\n"); scanf ("%s", ciudad); char consulta [80]; strcpy (consulta,"SELECT Jugador.Nombre FROM Jugador,Partida,Participacion WHERE Partida.Ciudad = '"); strcat (consulta, ciudad); strcat (consulta,"'AND Partida.Identificador = Participacion.Partida AND Participacion.Jugador = Jugador.Identificador"); err=mysql_query (conn, consulta); if (err!=0) { printf ("Error al consultar datos de la base %u %s\n", mysql_errno(conn), mysql_error(conn)); exit (1); } //recogemos el resultado de la consulta. El resultado de la //consulta se devuelve en una variable del tipo puntero a //MYSQL_RES tal y como hemos declarado anteriormente.
//Se trata de una tabla virtual en memoria que es la copia //de la tabla real en disco.
resultado = mysql_store_result (conn); // El resultado es una estructura matricial en memoria // en la que cada fila contiene los datos de una persona.
// Ahora obtenemos la primera fila que se almacena en una // variable de tipo MYSQL_ROW row = mysql_fetch_row (resultado); if (row == NULL) printf ("No se han obtenido datos en la consulta\n"); else while (row !=NULL) { // la columna 0 contiene el nombre del jugador printf ("%s\n", row[0]); // obtenemos la siguiente fila row = mysql_fetch_row (resultado); } mysql_close (conn); exit(0); } Crea un Shell Script que recorra todos los ficheros que hay en el directorio y para cada uno de ellos escriba en pantalla dos líneas: en la primera la información de ese fichero y en la segunda el nombre del fichero.
#!/bin/bash for filename in *; do if [ -f $filename ]; then ls -l $filename file $filename else echo $filename is not a regular file.
fi done Crea un Shell Script que muestre por pantalla todos los parámetros del script (en una línea) y el número de parámetros (en la línea siguiente). Si el número de parámetros no es 3 escribirá la frase “Numero incorrecto de parámetros”. Si el primer parámetro es un 2 escribirá en pantalla la resta del segundo y tercer parámetro. Si el primer parámetro no es 2 escribirá la frase “Orden desconocida”.
#!/bin/bash echo $@ echo $# if ( test $# -eq 3) then if (test $1 -eq 2) then let a=$2-$3 echo $a else echo "orden desconocida." fi else echo "Numero incorrecto de parámetros." Fi 1. Realiza con el menor número posible de líneas de comando la siguiente tarea: Contar el número de líneas del fichero datos.txt que tienen la palabra “casa”, pero solo de entre las 10 primeras líneas del fichero 2.Haz un script que reciba como parámetro el nombre de un directorio y nos diga cuantos ficheros hay en ese directorio que tengan permiso de escritura.
Apartado 1 head -10 datos.txt | grep casa | wc –l Apartado 2 contador=0 for item in $1/* do if [ -w $item ] then contador=`expr $contador + 1` fi done echo "El numero de ficheros con permiso de escritura es: $contador" Movilidad ls muestra contenidos del directorio actual ls -a contenidos + ocultos .nombre ls unixtuff me dice o que hay dentro de “unixtuff” ls unixtuff/backups dice o que hay dentro de “backups” (que no se encuentra en la carpeta actual, sino dentro de unixtuff) ls ~/unixtuff que hay dentro de “unixtuff” donde ~/ es el home directori ls ~ solo en este caso (en otro se debe ir con nombre/nombre ) te enseña lo que hay en home ls ~/.. te dice tu usuario: home/Antonia  Antonia mkdir nombre crea un nuevo directorio cd nombre entra a la carpeta “nombre” (debe estar dentro del directorio actual) cd . se queda en la carpeta cd .. pasa a una carpeta antes cd o cd ~ se va a home pwd (print working directori) me dice el path de carpetas en las que estoy cp /carpeta1/carpeta2/archivo.txt me copia en la carpeta actual el archivo.txt de la carpeta 2 cp /carpeta1/carpeta2/archivo.bak puedo crear un backup cambiando el nombre al archivo por .bak mv archivo.bak backups/. Muevo el archivo a la carpeta backups, si fuese /.. lo movería a una carpeta antes de backups.
rm archivo.bak elimina el archivo.bak rmdir elimina el directorio (carpeta) vacio clear limpia la pantalla terminal Abrir / crear archivos less archivo.txt muestra en la consola solo contenido del archivo txt [barra de espacio] para pasar a la siguiente pagina q para salir head archivo.txt muestra en la consola las primeras 10 lineas del txt head -5 archivo.txt muestra primeras 5 lineas del txt tail archivo.txt muestra en la consola las ultimas 10 lineas del txt tail -15 archivo.txt muestra ultimas 15 lineas del txt cat archivo.txt muestra en la consola el contenido del archivo txt junto al resto de cosas que fuimos haciendo cat se abre un txt nuevo que editas a tu gusto [Ctrl] + d para finalizar el input (si esta en un archivo especifico “cat archivo.txt”), finalizar + mostrarlo en consola (si no es un archivo especifico “cat”) cat > list1 crea el archivo list1, lo editas, guardas y sales con [Ctrl] + d .
cat >> list1 edita el archivo list1, añadiendo lo que escribas, guardas y sales con [Ctrl] + d .
cat list1 list2 >> biglist junta ambas listas en “biglist” > : To redirect the output, hace cualquier function en el archivo que crees < : To redirect the input, hace cualquier function desde el archivo que escojas sort ordena alfabeticamente el archive sort > list2 ordena alfabéticamente la lista2 sort < list2 > nuevalista ordena alfabéticamente la lista2 y lo guarda en “nuevalista” Buscar, contar less archivo.txt / keyword busca dentro del txt la palabra “keyword” n para pasar de un resultado a otro (de la palabra) grep keyword archivo.txt imprime por pantalla cada línea con ese “keyword” distingue minúsculas de mayúsculas grep -i keyword archivo.txt ya no distingue mayusculas de minusculas -v imprime las que NO lleven “keyword” -n imprimiré en pantalla+ línea en la que se encuentra cada una -c # total de líneas que llevan “keyword” -ic #total líneas que llevan “keyword” sin importar mayúsculas ni minúsculas grep ‘frase aqui’ archivo.txt para buscar frases ‘’ en lugar de palabras wc –w archivo.txt para contar cuantas palabras tiene -l para contar cuantas líneas tiene -c para contar cuantas letras tiene who me dice que otros usuarios estan conmigo who > names.txt me guarda los usuarios en el archivo names.txt sort < names.txt me ordena alfabeticamente los usuarios del archivo names.txt who | sort me hace lo de arriba (las dos a la vez) who | wc -l me dice cuantos usuarios están conectados Changing access rights chmod go-rwx biglist da permisos de borrar, leer, escribir en biglist a grupo y otros chmod a+rw biglist da permisos de leer y escribir en biglist a todos ps te dice los procesos que están funcionando ahora mismo sleep 10 hago backgrounding to a process durante 10 segundos sleep 10 & hago backgrounding to a process durante 10 segundos pero a la vez puedo hacer otras cosas [1] 6259 responde esto: job number + PID [Ctrl] + z para suspender el sleep bg para ponerla otra vez en el background [Ctrl] + c para matar el proceso *Nota: no backgrond programas que requieran interacción jobs te hace una lista de que funciones están activadas: sleep, running fg %jobnumber To restart (foreground) a suspended processes, type fg %1 Typing fg with no job number foregrounds the last suspended process.
kill jobnumber To kill a suspended or background process, type kill 4 To check whether this has worked, examine the job list again to see if the process has been removed.
kill 20077 To kill off the process sleep 1000 kill -9 20077 por si el proceso no quiere ser killed utilizamos -9 *Nota: no se puede matar el proceso utilizato sleep 100 & ps If processes can be killed by finding their process numbers (PIDs) and using kill PID_number sleep 100 & jobs If it is job number 4, type ...