Buscar este blog

Mostrando entradas con la etiqueta SQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta SQL. Mostrar todas las entradas

miércoles, 23 de octubre de 2013

INSERTAR DATOS EN BASE DE DATOS CON PHP.

<!--insertar.php-->
<?php
//Establecimiento de la conexión
$conex = mysql_connect("localhost", "root", "bbdd")
or die("NO se pudo realizar la conexión");
// Selección de la base de datos
mysql_select_db("empresa_bd")
or die("ERROR con la base de datos");
?>
<html>
<head>
<title>Gestión de bases de datos con PHP y MySQL</title>
</head>
<body>
    <hr>
    <br>
    <h3>Inserciones</h3>
    <form id="inserciones" action="insertarOK.php" method="GET">
        <table>
            <tr>
                <td>Nombre:</td>
                <td><input type=text name="eNombre"></td>
            </tr>
            <tr>
                <td>Categoría:</td>
                <td><input type=text name="eCategoria"></td>
            </tr>
            <tr>
                <td>Sueldo:</td>
                <td><input type=text name="eSueldo"></td>
            </tr>
            <tr>
                <td>Departamento:</td>
                <td>
                <select name="eCodDpto">
    <?php
    //Preparación y ejecución de la consulta
    $consulta = "SELECT * FROM Departamentos";
    $resultado = mysql_query($consulta);
    //Recorrido del cursor de fila en fila
    while ($fila = mysql_fetch_array($resultado))
    {   
    ?>                       
                <option value="<?php echo $fila['CodDpto']; ?>"><?php echo $fila['Descripcion'];?></option>
    <?php
    }
    ?>       
                </select>
                </td>
            </tr>
        </table>
        <input type="submit" value="Inserción">
    </form>
    <hr>
</body>
</html>
<?php
// Se cierra la conexion
mysql_close();
?>


<!--insertarOK.php-->
<html>
<head><title>Gestión de bases de datos con PHP y MySQL</title></head>
<body>
<center>
<h1><font color='blue'>Gestión de bases de datos con PHP y MySQL</font></h1>
<?php
  //Establecimiento de la conexión
  $conex = mysql_connect("localhost", "root", "bbdd")
        or die("NO se pudo realizar la conexión");
  // Selección de la base de datos
  mysql_select_db("empresa_bd")
       or die("ERROR con la base de datos");
  //Preparación y ejecución de la consulta
  $nombre = $_GET['eNombre'];
  $categoria = $_GET['eCategoria'];
  $sueldo = $_GET['eSueldo'];
  $codDpto = $_GET['eCodDpto'];
  $consulta = "INSERT INTO Empleados (Nombre, Categoria, Sueldo, CodDpto) VALUES ('$nombre', '$categoria', '$sueldo', '$codDpto')";
  $resultado = mysql_query($consulta);
  if ($resultado)
      echo "<b>Empleado insertado!</b><br /><br />\n";
  else
     echo "<h2>Error</h2>";
  // Se cierra la conexion
  mysql_close();

miércoles, 16 de octubre de 2013

CONEXION BASE DE DATOS CON PHP


<?php
$dbhost = "localhost";
$dbusuario = "root";
$dbpassword = "";
$db = "rtb_bd";
$conexion = 0;


//$GLOBALS Significa simplemente que es una variable que está disponible en cualquier parte del script. Cuando quiero utilizar una variable declarada fuera de una función
function conectarBD()
{
$GLOBALS['conexion'] = mysql_connect($GLOBALS['dbhost'], $GLOBALS['dbusuario'], $GLOBALS['dbpassword']);
mysql_select_db($GLOBALS['db'], $GLOBALS['conexion']);
}
function cerrarBD()
{
mysql_close($GLOBALS['conexion']);
}
?>

_________________________________________________________________________________

<!--actividad16.php-->
<html>
<head><title>Conexión con MySql</title></head>
<body>
<center>
<h1><font color='blue'>Información del gestor MySQL</font></h1>
<h3> Recorrido de Cursores</h3>

<!--Departamentos-->

<br /><hr /><br />
<table border='1'>
  <caption style='font-size:16pt'>Departamentos</caption>
  <tr><th>Codigo</th><th>Descripción</th><th>Situación</th></tr>
<?php
  //Establecimiento de la conexión 
  $conex = mysql_connect("localhost", "root", "nicolasa") 
           or die("NO se pudo realizar la conexión");
  
  // Selección de la base de datos
  mysql_select_db("test")
            or die("ERROR con la base de datos");
  
  //Preparación y ejecución de la consulta
  $consulta = "SELECT * FROM Departamentos";
  $resultado = mysql_query($consulta);
 
  //Recorrido del cursor de fila en fila
  while ($fila = mysql_fetch_array($resultado))
  {
     //Proceso de cada una de las filas
?>
     <tr>       
     <td> <?php echo $fila['CodDpto']; ?></td>
     <td> <?php echo $fila['Descripcion']; ?></td>
     <td> <?php echo $fila['Situacion']; ?></td>
     </tr>                                               
       
<?php 

  }
?>

 </table> <br /> <hr />

<!--Empleados-->

<br />
<table border='1'>
  <caption style='font-size:16pt'>Empleados</caption>
  <tr><th>Codigo</th><th>Nombre</th><th>Categoria</th>
      <th>Sueldo</th><th>Departamento</th></tr>
<?php
  
  //Preparación y ejecución de la consulta
  $consulta = "SELECT * FROM Empleados";
  $resultado = mysql_query($consulta);
 
  //Recorrido del cursor de fila en fila
  while ($fila = mysql_fetch_array($resultado)){
     //Proceso de cada una de las filas
     echo "<tr>";       
     echo "<td>", $fila['CodEmp'], "</td>";
     echo "<td>", $fila['Nombre'], "</td>";
     echo "<td>", $fila['Categoria'], "</td>";
     echo "<td>", $fila['Sueldo'], "</td>";
     echo "<td>", $fila['CodDpto'], "</td>";
     echo "</tr>\n";                                                 
     }    

 
  // Se cierra la conexion
  mysql_close();

?>
 </table> <br /> <hr />


</body>
</html>

martes, 15 de octubre de 2013

Funciones básicas y ejemplos conexión con MySql:


mysql_connect
Se utiliza para conectarse con un servidor de bases de datos, se usa normalmente con 3 parámetros, el dominio del servidor, nombre de usuario y password.
Ejemplo:
1 $conexion = mysql_connect("localhost", "user","password");
mysql_select_db
Se utiliza para elegir la base de datos que queremos gestionar una vez que se ha realizado la conexión con mysql_connect..
Ejemplo:
1 $conexion = mysql_connect("localhost", "user","password");
2 mysql_select_db ("test");
mysql_query
Se utiliza para hacer “querys” o peticiones a la base de datos.
Ejemplo:
1 $conexion = mysql_connect("localhost", "user","password");
2 mysql_select_db ("test");

3
4
$consulta = "SELECT * FROM Departamentos";
$resultado = mysql_query($consulta);


mysql_fetch_array
Recupera una fila de resultados como un array asociativo, un array numérico o como ambos
Para leer las demás filas necesitamos un while y así leer todas las filas.

La sentencia mysql_fetch_array de php sirve para volcar datos, provenientes de una consulta mysql, dentro de un array php.
Ocurre que cuando hacemos una consulta a la base de datos, Mysql nos retorna el conjunto de datos que responde a nuestra consulta; pero éste conjunto de datos no es legible por php. Para poder manipular estos datos (leerlos y utilizarlos) necesitamos volcarlo en algún elemento manipulable por php, por ejemplo un array.
Entonces, por ejemplo, si hacemos una consulta que nos devuelve 10 filas de una tabla Mysql (conjunto de datos) y luego le aplicamos mysql_fetch_array; obtendremos cómo resultado un array multidimensional de 10 filas y tantas columnas haya en nuestro select.


Ejemplo:

while ($fila = mysql_fetch_array($resultado))
<tr>
<td> <?php echo $fila['CodDpto']; ?> </td>
<td> <?php echo $fila['Descripcion']; ?> </td>
</tr>

mysql_close();

Cierra la conexión con la BD




Realizad una interfaz HTML para consultar los empleados de la BD
Primero
    • crear bases de datos
    • crear tablas
    • insertar datos
    • realizar consultas


  • Vamos a definir las siguientes tablas:
CREATE TABLE Departamentos
(CodDpto CHAR(2) Not Null,
Descripcion CHAR(10) Not Null,
Situacion CHAR(15),
PRIMARY KEY (CodDpto) );
CREATE TABLE Empleados
(CodEmp CHAR(2) Not Null,
Nombre CHAR(10) Not Null,
Categoria CHAR(15),
Sueldo Integer,
CodDpto CHAR(2),
PRIMARY KEY (CodEmp) );


  • Introduce los siguientes datos:
Departamentos: (‘D1’,’Producción’,’3 planta’)
(‘D2’,’Publicidad’,’2 planta’)
(‘D3’,’Facturac.’,’3 planta’)
INSERT INTO Departamentos(`CodDpto`, `Descripcion`, `Situacion`) VALUES ('D1','PRODUCCION','3 PLANTA');


Empleados: (‘E1’,’José’,’Aprendiz’,20000,’D1’)
INSERT INTO Empleados(`CodEmp`, `Nombre`, `Categoria`, `Sueldo`, `CodDpto`) VALUES ('E1','JOSE','APRENDIZ','20000','D1');
(‘E2’,’Mario’,’Maestro’,25000,’D2’)
INSERT INTO Empleados(`CodEmp`, `Nombre`, `Categoria`, `Sueldo`, `CodDpto`) VALUES ('E2','MARIO','MAESTRO','25000','D2');


(‘E3’,’Juan’,’Director’,35000,’D1’)
INSERT INTO Empleados(`CodEmp`, `Nombre`, `Categoria`, `Sueldo`, `CodDpto`) VALUES ('E3','JUAN','DIRECTOR','35000','D1');






jueves, 6 de junio de 2013

IF (SQL) Y CASE (SQL)

EJERCICIOS IF:
1- Inserta algunos registros:
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('ACD123','auto','8:30','9:40');
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('AKL098','auto','8:45','15:10');
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('HGF123','auto','9:30','18:40');
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('DRT123','auto','15:30',null);
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('FRT545','moto','19:45',null);
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('GTY154','auto','20:30','21:00');

2- Muestra la matricula, la hora de llegada y de salida de todos los vehículos, más una columna que calcule la cantidad de horas que estuvo cada vehículo en la playa, sin considerar los que aún no se fueron de la playa:


SELECT `matricula`,`horallegada`,`horasalida`,left(timediff(horasalida,horallegada),5) as horasminutos FROM `vehiculos`

3- Se cobra 1 euro por hora. Pero si un vehículo permanece en la playa 4 horas, se le cobran 3 euros, es decir, no se le cobra la cuarta hora; si está 8 horas, se cobran 6 euros, y así sucesivamente. Muestra la matricula, la hora de llegada y de salida de todos los vehículos, más la columna que calcule la cantidad de horas que estuvo cada vehículo en la playa (sin considerar los que aún no se fueron de la playa) y otra columna utilizando "if" que muestre la cantidad de horas gratis:

 select matricula,horallegada,horasalida,
  left(timediff(horasalida,horallegada),5) as horasminutos,
  if (hour(timediff(horasalida,horallegada))>4,
  hour(timediff(horasalida,horallegada)) div 4,0) as horagratis
  from vehiculos
  where horasalida is not null;

EJERCICIOS CASE:
select editorial, case count (*) where when 1 then 1 else 'mas de 1' end as 'cantidad' from libros group by editorial;
select ecitorial, case count (*) when 1 then 1 end as 'cantidad' from libros group by editorial;
select editorial, case count (*) when 1 then 1 when > 1 then 'mas de 1' end as 'cantidad' from libros group by editorial;
select editorial, case when count (*)=1 then 1 else 'mas de uno'end as cantidad from libros group by editorial;
select expediente, promedio, case when promedio<4 then 'suspendido' when promedio>4 and promedio and promedio<7 then 'bien' else 'notable' end as 'notas' from promedio;

miércoles, 5 de junio de 2013

Examen SQL

1/ Muestra el nombre del barrio y todos los apartamentos que estén situados en esos barrios cuyo precio sea superior a 350€:

Select b.nombre as 'nombre barrio', a.edificio, a.domicilio, a.piso, a.numeroapto from barrios as b join apartamentos as a on b.codigo=a.codigobarrio where a.precio>350;


2/ Muestra todos los registros y un mensaje que ponga ‘caro’ si el precio de un apartamento supera los 350€

select *, if(precio>350, 'caro', ' ') from barrios as b join apartamentos as a on b.codigo=a.codigobarrio;

3/ Muestra el promedio de los apartamentos agrupados por barrio:

select b.nombre, avg (a.precio) from barrios as b join apartamentos as a on b.cdigo=a.codigobarrio group by b.nombre

4/ Muestra todos los barrios y apartamentos, incluso aquellos barrios en los que no hayan apartamentos:


select * from barrios as b left join apartamentos as a on b.codigo=a.codigobarrio;

5/ Agrupando por nombre de barrio, muestra el nombre del barrio, la media del precio del barrio y cuenta la cantidad de apartamentos que hay en cada barrio.
Además, muestra un mensaje en el que aparezca una nueva media de la siguiente forma: si la media del barrio es mayor a 400€, la nueva media aumentaría un 15%, pero si es menor de 400€, la nueva media aumenta un 10%:


select b.nombre, avg(precio), count(a.numeroapto), if(avg(a.precio)>400, avg(a.precio)+(avg(a.precio)*0.15), avg(a.precio)+(avg(a.precio)*0.1))as medias from barrios as b join apartamentos as a on b.codigo=a.codigobarrio group by b.nombre;

Actividad Final SQL Bases de Datos.



a)    Enunciado:

Una empresa de consultoría de aplicaciones móviles desea poder realizar un informe sobre las descargas de aplicaciones de “iphone” en sus dispositivos.
Para ello necesita saber, qué móvil se ha bajado algo (IMEI), qué modelo de dispositivo es, qué versión tiene, y de qué color es.
Además también quiere almacenar qué aplicación ha sido descargada (nombre), qué tamaño tiene y su coste.
Para finalizar, necesitaría conocer la fecha de descarga de la misma, la cual genera un número automático de orden de descarga.

b)    Diseño Entidad Relación:

c)    Diseño SQL:

create table Iphone(imei varchar(5), modelo varchar (2), version int, color varchar(6), primary key (imei))ENGINE=INNODB;

create table aplicacion(nombre varchar (10), size int, precio int, primary key (nombre))ENGINE=INNODB;

create table descarga(numero int not null auto_increment, imeimovil varchar(5), nombreap varchar (10), fecha date, primary key(numero), index(nombreap), foreign key (imeimovil) references iphone(imei), foreign key (nombreap) references aplicacion(nombre))ENGINE=INNODB;

d)    Pantallazo de las tablas con sus datos:
TABLA IPHONE:
Insert into Iphone values ('11111', '4', 6, 'BLANCO');
Insert into Iphone values ('22222', '4s', 5, 'NEGRO');
Insert into Iphone values ('33333', '4s', 6, 'BLANCO');
Insert into Iphone values ('44444', '5', 6, 'BLANCO');
Insert into Iphone values ('55555', '4s', 6, 'NEGRO');
Insert into Iphone values ('66666', '4', 5, 'NEGRO');
Insert into Iphone values ('77777', '4', 5, 'NEGRO');
Insert into Iphone values ('88888', '5', 6, 'NEGRO');
Insert into Iphone values ('99999', '5', 6, 'NEGRO');

TABLA APLICACION:

insert into aplicacion    values ("instagram", 1, 2);
insert into aplicacion    values ("twitter", 2, 1);
insert into aplicacion    values ("triviados", 5, 3);
insert into aplicacion    values ("candycrush", 6, 5);
insert into aplicacion    values ("shazam", 2, 2);
insert into aplicacion    values ("youtube", 4, 1);
insert into aplicacion    values ("runtastic", 9, 2);
insert into aplicacion    values ("facebook", 3, 1);

TABLA DESCARGA:
insert into descarga (imeimovil, nombreap, fecha) values ('33333', 'facebook', '20130301');
insert into descarga (imeimovil, nombreap, fecha) values ('11111', 'twitter', '20130301');
insert into descarga (imeimovil, nombreap, fecha) values ('55555', 'twitter', '20130305');
insert into descarga (imeimovil, nombreap, fecha) values ('66666', 'facebook', '20130305');
insert into descarga (imeimovil, nombreap, fecha) values ('66666', 'runtastic', '20130306');
insert into descarga (imeimovil, nombreap, fecha) values ('88888', 'runtastic', '20130307');
insert into descarga (imeimovil, nombreap, fecha) values ('88888', 'facebook', '20130308');
insert into descarga (imeimovil, nombreap, fecha) values ('77777', 'facebook', '20130309');
insert into descarga (imeimovil, nombreap, fecha) values ('44444', 'candycrush', '20130310');
insert into descarga (imeimovil, nombreap, fecha) values ('22222', 'youtube', '20130311');
insert into descarga (imeimovil, nombreap, fecha) values ('22222', 'twitter', '20130312');
insert into descarga (imeimovil, nombreap, fecha) values ('44444', 'runtastic', '20130313');
insert into descarga (imeimovil, nombreap, fecha) values ('44444', 'facebook', '20130314');
insert into descarga (imeimovil, nombreap, fecha) values ('44444', 'twitter', '20130315');
insert into descarga (imeimovil, nombreap, fecha) values ('44444', 'instagram', '20130317');
insert into descarga (imeimovil, nombreap, fecha) values ('55555', 'triviados', '20130317');
insert into descarga (imeimovil, nombreap, fecha) values ('55555', 'runtastic', '20130317');
insert into descarga (imeimovil, nombreap, fecha) values ('88888', 'twitter', '20130317');
insert into descarga (imeimovil, nombreap, fecha) values ('77777', 'twitter', '20130317');
insert into descarga (imeimovil, nombreap, fecha) values ('66666', 'twitter', '20130320');
insert into descarga (imeimovil, nombreap, fecha) values ('55555', 'youtube', '20130320');
insert into descarga (imeimovil, nombreap, fecha) values ('99999', 'twitter', '20130321');
insert into descarga (imeimovil, nombreap, fecha) values ('99999', 'shazam', '20130321');
insert into descarga (imeimovil, nombreap, fecha) values ('55555', 'instagram', '20130321');
insert into descarga (imeimovil, nombreap, fecha) values ('55555', 'shazam', '20130322');
insert into descarga (imeimovil, nombreap, fecha) values ('33333', 'twitter', '20130323');
insert into descarga (imeimovil, nombreap, fecha) values ('33333', 'instagram', '20130324');
insert into descarga (imeimovil, nombreap, fecha) values ('33333', 'runtastic', '20130330');
insert into descarga (imeimovil, nombreap, fecha) values ('33333', 'candycrush', '20130330');
insert into descarga (imeimovil, nombreap, fecha) values ('99999', 'youtube', '20130330');

e)     Consultas sobre la base de datos. Deberás utilizar y realizar pantallazos de:
I.-Muestra por pantalla las descargas realizadas por un terminal 4s:
SELECT *
FROM descarga
JOIN Iphone ON Iphone.imei = descarga.imeimovil
WHERE Iphone.modelo = '4s'

II.-Muestra todas las descargas ordenadas por imei:
SELECT *
FROM descarga
ORDER BY imeimovil

III.-Muestra la cantidad de veces que se haya descargado cada una de las aplicaciones:
select count(d.nombreap), (a.nombre) from descarga as d join aplicacion as a on d.nombreap=a.nombre group by a.nombre;

IV.- Cuenta  todas las descargas realizadas ordenadas por modelo de iphone:
select count(d.nombreap), (i.modelo) from descarga as d join Iphone as i on d.imeimovil=i.imei group by i.modelo;

V.-Muestra por pantalla la cantidad de descargas realizadas por cada terminal (por imei):
SELECT COUNT( d.nombreap ) , i.imei FROM descarga AS d JOIN Iphone AS i ON d.imeimovil = i.imei GROUP BY i.imei

VI.-Muestra por pantalla todas las descargas realizadas de cada aplicación mostrando además un mensaje si la aplicación ha sido un éxito (hay más de 4 descargas) .
select count(d.nombreap), (a.nombre), if (count(d.nombreap)>4, 'exito', ' ') as 'exito o no' from descarga as d  join aplicacion as a on d.nombreap=a.nombre group by a.nombre

VII.-Muestra por pantalla el total de dinero gastado por dispositivo.
SELECT d.imeimovil, sum(a.precio)
from aplicacion as a
join descarga as d
on a.nombre=d.nombreap
group by d.imeimovil

VIII.- Muestra por pantalla todas las aplicaciones que empiecen por 't':
select * from aplicacion where nombre like 't%'

IX.-Muestra por pantalla las aplicaciones que hayan sido descargadas mas de tres veces:
select count(nombreap),nombreap from descarga  group by nombreap  having count(nombreap)>3;

X.-Muestra por pantalla todos aquellos terminales que se hayan descargado 'runtastic' o 'facebook', con su fecha de descarga.
select fecha, imeimovil, nombreap from descarga where nombreap='facebook' or nombreap='runtastic'

XI.- Actualiza los precios de 'shazam' a 5.
UPDATE aplicacion SET precio =5 WHERE nombre = 'shazam' 

select * from aplicación


XII.-Muestra por pantalla todas las aplicaciones aunque no hayan sido descargadas ninguna vez:
Para realizar un right join necesito agregar una nueva línea en la tabla aplicación:
insert into aplicacion    values ("amazon", 10, 7);
SELECT *
FROM aplicacion AS a
LEFT JOIN descarga AS d ON a.nombre = d.nombreap

miércoles, 22 de mayo de 2013

EJERCICIOS I



select titulo, if(precio>50, `caro`, 'economico') from libros;
select autor, if (count(*)>1, 'mas de 1', '1') from libros group by autor;
select editorial, if (count(*)>4, '5 o mas', 'menos de 5') as cantidad from libros group by editorial order by cantidad;
select sexo count (sexo) if (sexo='f', 'rosas', 'corbata') as 'obsequio' from empleados where month (fecha nacimiento) = 5 group by sexo;
select nombre, fecha ingreso, year(current_date) year (fecha ingreso) as 'años de servicio', if ((year(current-date)-year(fechaingreso)) %10=0, 'si', 'no') as 'Placa' from empleados where month(fechaingreso)=4;
select nombre, sueldo, hijos, if (sueldo basico <=500, sueldobasico+(300*hijos), sueldobasico+(150*hijos)) as total from empleados where hijos > 0;
select dni, vencimiento, current_date as 'Fecha actual', total, if (datediff (current_date, vencimiento)>0, 'si', 'no') as vencida from luz;
select dni, count (*), if (count(*)>1, 'cortar servicio' ' ') as 'servicio' from luz where datediff (current_date, vencimiento)>0 group by documento;
select matricula,horallegada,horasalida, left(timediff(horasalida,horallegada),5) as horasminutos, if (hour(timediff(horasalida,horallegada))>4, hour(timediff(horasalida,horallegada)) div 4,0) as horagratis from vehiculos where horasalida is not null;
SELECT promedio, if (promedio>=4, 'aprobado','suspendido') from alumnos;
select nombre,promedio, if (promedio>=9,'medalla','') from alumnos
select *, if(entradasvendidas >= capacidad, 'agotadas','') from entradas;
select *, if(entradasvendidas >0 and `entradasvendidas`>(capacidad/2), 'mas de la mitad','menos de la mitad') from entradas;


A. Un profesor guarda los promedios de sus alumnos de un curso en una tabla llamada "alumnos".

create table alumnos(
  expediente char(5) not null,
  nombre varchar(30),
  promedio decimal(4,2)
);

1- Inserta los siguientes registros:
 insert into alumnos values(3456,'Perez Luis',8.5);
 insert into alumnos values(3556,'Garcia Ana',7.0);
 insert into alumnos values(3656,'Ludueña Juan',9.6);
 insert into alumnos values(2756,'Moreno Gabriela',4.8);
 insert into alumnos values(4856,'Morales Hugo',3.2);

2- Si el alumno tiene un promedio superior o igual a 4, muestra un mensaje "aprobado" en caso contrario "suspendido":

SELECT promedio, if (promedio>=4, 'aprobado','suspendido') from alumnos;

3- Es política del profesor entregar una medalla a quienes tengan un promedio igual o superior a 9. Muestra los nombres y promedios de los alumnos y un mensaje "medalla" a quienes cumplan con ese requisito:


select nombre,promedio, if (promedio>=9,'medalla','') from alumnos

B) Un teatro con varias salas guarda la información de las entradas vendidas en una tabla llamada "entradas".

create table entradas(
  sala tinyint unsigned,
  fecha date,
  hora time,
  capacidad smallint unsigned,
  entradasvendidas smallint unsigned,
  primary key(sala,fecha,hora)
 );

1- Inserta algunos registros:
 insert into entradas values(1,'2006-05-10','20:00',300,50);
 insert into entradas values(1,'2006-05-10','23:00',300,250);
 insert into entradas values(2,'2006-05-10','20:00',400,350);
 insert into entradas values(2,'2006-05-11','20:00',400,380);
 insert into entradas values(2,'2006-05-11','23:00',400,400);
 insert into entradas values(3,'2006-05-12','20:00',350,350);
 insert into entradas values(3,'2006-05-12','22:30',350,100);
 insert into entradas values(4,'2006-05-12','20:00',250,0);

2- Muestra todos los registros y un mensaje si las entradas para una función están agotadas:


select *, if(entradasvendidas >= capacidad, 'agotadas','') from entradas

3- Muestra todos los datos de las funciones que tienen vendidas entradas y muestre un mensaje si se vendió más o menos de la mitad de la capacidad de la sala:

select *, if(entradasvendidas >0 and `entradasvendidas`>(capacidad/2), 'mas de la mitad','menos de la mitad') from entradas



Ejercicio: Tabla vehículos
Un parking guarda cada día los datos de los vehículos que acceden a la playa en una tabla llamada "vehiculos".

create table vehiculos(
  matricula char(6) not null,
  tipo char(4),
  horallegada time not null,
  horasalida time,
  primary key(matricula,horallegada)
 );

1- Inserta algunos registros:
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('ACD123','auto','8:30','9:40');
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('AKL098','auto','8:45','15:10');
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('HGF123','auto','9:30','18:40');
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('DRT123','auto','15:30',null);
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('FRT545','moto','19:45',null);
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('GTY154','auto','20:30','21:00');

2- Muestra la matricula, la hora de llegada y de salida de todos los vehículos, más una columna que calcule la cantidad de horas que estuvo cada vehículo en la playa, sin considerar los que aún no se fueron de la playa:


SELECT `matricula`,`horallegada`,`horasalida`,left(timediff(horasalida,horallegada),5) as horasminutos FROM `vehiculos`

3- Se cobra 1 euro por hora. Pero si un vehículo permanece en la playa 4 horas, se le cobran 3 euros, es decir, no se le cobra la cuarta hora; si está 8 horas, se cobran 6 euros, y así sucesivamente. Muestra la matricula, la hora de llegada y de salida de todos los vehículos, más la columna que calcule la cantidad de horas que estuvo cada vehículo en la playa (sin considerar los que aún no se fueron de la playa) y otra columna utilizando "if" que muestre la cantidad de horas gratis:

 select matricula,horallegada,horasalida,
  left(timediff(horasalida,horallegada),5) as horasminutos,
  if (hour(timediff(horasalida,horallegada))>4,
  hour(timediff(horasalida,horallegada)) div 4,0) as horagratis
  from vehiculos
  where horasalida is not null;

jueves, 16 de mayo de 2013

EJERCICIOS JOIN SQL

12. VARIAS TABLAS JOIN
select * from clientes as c join provincias as p on c.codigo=p.codigo;
select * from clientes as c.join provincias as p on codigo=p.codigo order by c.nombre;
12.1 VARIAS TABLAS LEFT JOIN
12.2 VARIAS TABLAS RIGHT JOIN
Tablas socios e inscritos
1. select * from socios as s left join inscritos as i on s.dni=i.dni
2. select * from inscritos as i right join socios as s on s.dni=i.dni;
4. select * from socios as s right join inscritos as i on s.dni=i.dni;
12.6 JOIN GROUP BY Y FUNCIONES DE AGRUPAMIENTO
Tabla clientes y provincias
1.select count (c.nombre), (p.nombre) from clientes as c join provincias as p on c.codigo group by p.nombre;
2.select count (c.nombre), p.nombre from clientes as c left join provincias as p on c. codigo group by p.nombre;;
3.select p.nombre count (c.codigoprovincia) as 'cantidad clientes' from provincias as p join clientes as c on p.codigo =c.codigo provincia group by p.nombre having count (c.codigoprovincia)>=2;
Tabla apartamentos y barrrios
2.select i.edificio, i.domicilio, i.piso, i.numeroapto, i.precio, b.nombre from inmuebles as i cross join barrios as b;
3.select i.edificio, count (i.domicilio), b.nombre from inmuebles as i join barrios as b on i.codigobarrio=b.codigo group by i.edificio;
4.selecti.domicilio, avg(i.precio) b.nombre from inmuebles as i cross join barrios as b on i.codigobarrio=b.codigo group by b.nombre;

jueves, 25 de abril de 2013

ALTER TABLE EN SQL

ALTER TABLE _____ ADD ___ (formato);
Modificar la estructura de una tabla.
alter table libros add cantidad smallint unsigned not null;
ALTER TABLE ____ DROP____;
Eliminar un campo de una tabla.
alter table libros drop editorial;
ALTER TABLE ____ MODIFY ____ (formato);
Modificar el tipo de algún campo incluidos sus atributos.
alter table libros modify titulo varchar (40) not null;
ALTER TABLE _____ CHANGE ___ (formato);
Modificar el nombre de los campos de una tabla.
alter table libros change coste precio decimal (5,2);
ALTER TABLE  ____ ADD PRIMARY KEY (_____);
agregar una clave primaria a una tabla existente.
alter table libros add primary key (codigo);
ALTER TABLE ____ DROP PRIMARY KEY (____);
Eliminar la clave primaria de una tabla existente.
alter table libros drop primary key;

ALTER TABLE: modifica la estructura de una tabla.
AÑADIR: alter table libros add cantidad smallint unsigned not null;
ELIMINAR: alter table libros drop edicion;
MODIFICAR: alter table libros modify cantidad smallint unsigned;
CAMBIAR NOMBRE DEL CAMPO:alter table libros change coste precio decimal (5,2);
AGREGAR CLAVE PRIMARIA: 1.- alter table libros add primary key (codigo);
            2.- alter table libros modify codigo int unsigned auto_increment;
ELIMINAR CLAVE PRIMARIA:1.-alter table libros modify codigo int unsigned;
            2.-alter table libros drop primary key;
RENOMBRAR TABLA: alter table amigos rename contact; // rename table amigos to contactos; 

lunes, 11 de marzo de 2013

COMANDOS SQL:


USE
Utilizar una base de datos:
use administración;
SHOW
Mostrar tablas:
show tables;
CREATE TABLE_________;
Crear tabla:
create table usuarios (nombre varchar (30), clave varchar (10), domicilio varchar (23), primary key(código));
DESCRIBE ___________;
mostrar tabla:
describe usuarios;
DROP TABLE IF EXISTS ________;
Borrar tabla:
drop table if exists usuarios;
INSERT INTO ___________ VALUES________;
Agregar datos:
insert into usuarios (nombre, clave) values  (‘isidoro’, ‘123’);
SELECT______ FROM_______ WHERE________;
Seleccionar datos:
select nombre, clave from usuarios where nombre = ‘isidoro’;
DELETE FROM __________WHERE________;
Borrar datos:
delete from usuarios where nombre = ‘leonardo’;
UPDATE________ SET_______ WHERE_______;
 Actualizar datos:
update usuarios set clave =’bilbao’ where nombre=’isidoro’;

TRUNCATE TABLE__________;
Borrar registros:
truncate table usuarios;

Varchar(x)
Integer 2000000000


Char(x)
Médiumint 8000000
Positivo
Autoincrementable
Blob 60.000
Smallint 30000
unsigned
Auto_increment

Tinyint 128



Bool (1)
Cadenas vacias

Float (científico)
Bigint 900000000000
Not Null

Decimal (t,d)




Date( yyyy-mm-dd)
AND    &&     Y
Datetime(yyyy-mm-dd hh:mm:ss)
OR        ||     Y/O
Time (hh:mm:ss)
XOR        O
Year (2)
NOT      NO
Year (4)


=
Igual
<> 
Distinto
> 
Mayor
< 
Menor
>=
Mayorigual
<=
menorigual
Colocar orden ascendente:
select * from libros order by titulo asc;
Colocar orden descendente:
select * from libros order by titulo desc;