You are on page 1of 16

12 marzo

Columnas calculadas.
Es posible obtener salidas en las cuales una columna sea el resultado de un clculo y no un campo de una tabla. select titulo,precio,cantidad from libros;
select titulo, precio,cantidad,precio*cantidad from libros;

select titulo, precio,precio*0.1,precio-(precio*0.1) from libros;

Actividad 1/2
Crear una tabla llamada "empleados con la siguiente informacin:
nombre del empleado, documento, sexo, Domicilio, sueldo bsico, hijos a cargo, clave primaria: documento.

Ingrese algunos registros: insert into empleados (nombre,documento,sexo,sueldobasico,hijos) values ('Juan Perez','22333444','m',300,1); insert into empleados (nombre,documento,sexo,sueldobasico,hijos) values ('Ana Acosta','21333444','f',400,2); insert into empleados (nombre,documento,sexo,sueldobasico,hijos) values ('Alberto Lopez','24333444','m',600,0); insert into empleados (nombre,documento,sexo,sueldobasico,hijos) values ('Carlos Sanchez','30333444','m',550,3); insert into empleados (nombre,documento,sexo,sueldobasico,hijos) values ('Mariana Torres','23444555','f',600,1); insert into empleados (nombre,documento,sexo,sueldobasico,hijos) values ('Marcos Garcia','23664555','m',1500,2);

Actividad 2/2
La empresa est pensando en aumentar un 10% el sueldo a los empleados, y quiere saber a cunto subira cada sueldo bsico,
select nombre, sueldobasico,sueldobasico+sueldobasico*1/10 from empleados;

La empresa paga un salario familiar por hijos a cargo, $200 por cada hijo. Necesitamos el nombre del empleado, el sueldo bsico, la cantidad de hijos a cargo, el total del salario familiar y el suedo final (incluyendo el salario familiar):
select nombre, sueldobasico,hijos,(200*hijos),sueldobasico+(200*hijos) from empleados;

Agrupar registros (group by)


La sentencia "group by", agrupa registros para consultas detalladas. select count(*) from visitantes where ciudad='Cordoba'; select count(*) from visitantes where ciudad='AltaGracia'; select count(*) from visitantes where ciudad='Villa Dolores';
select ciudad, count(*) from visitantes group by ciudad;

La instruccin anterior solicita que muestre el nombre de la ciudad y cuente la cantidad agrupando los registros por el campo "ciudad". select ciudad, count(telefono) from visitantes group by ciudad;

Actividad 1/2
tabla llamada "clientes con la siguiente estructura:
create table clientes ( codigo int unsigned auto_increment, nombre varchar(30) not null, domicilio varchar(30), ciudad varchar(20), provincia varchar (20), telefono varchar(11), primary key(codigo) );

Ingrese algunos registros:



insert into clientes (nombre,domicilio,ciudad,provincia,telefono) values ('Lopez Marcos', 'Colon 111', 'Crdoba','Cordoba','null'); insert into clientes (nombre,domicilio,ciudad,provincia,telefono) values ('Perez Ana', 'San Martin 222', 'Cruz del Eje','Cordoba','4578585'); insert into clientes (nombre,domicilio,ciudad,provincia,telefono) values ('Garcia Juan', 'Rivadavia 333', 'Villa Maria','Cordoba','4578445'); insert into clientes (nombre,domicilio,ciudad,provincia,telefono) values ('Perez Luis', 'Sarmiento 444', 'Rosario','Santa Fe',null); insert into clientes (nombre,domicilio,ciudad,provincia,telefono) values ('Pereyra Lucas', 'San Martin 555', 'Cruz del Eje','Cordoba','4253685'); insert into clientes (nombre,domicilio,ciudad,provincia,telefono) values ('Gomez Ines', 'San Martin 666', 'Santa Fe','Santa Fe','0345252525'); insert into clientes (nombre,domicilio,ciudad,provincia,telefono) values ('Torres Fabiola', 'Alem 777', 'Villa del Rosario','Cordoba','4554455'); insert into clientes (nombre,domicilio,ciudad,provincia,telefono) values ('Lopez Carlos', 'Irigoyen 888', 'Cruz del Eje','Cordoba',null); insert into clientes (nombre,domicilio,ciudad,provincia,telefono) values ('Ramos Betina', 'San Martin 999', 'Cordoba','Cordoba','4223366'); insert into clientes (nombre,domicilio,ciudad,provincia,telefono) values ('Lopez Lucas', 'San Martin 1010', 'Posadas','Misiones','0457858745');

Obtenga el total de los registros (10):


select count(*) from clientes;

Obtenga el total de los registros que no tienen valor nulo en los telfonos (8):
select count(telefono) from clientes;

Obtenga la cantidad de clientes agrupados por ciudad y provincia, ordenados por provincia:
select ciudad,provincia, count(*) from clientes group by ciudad, provincia order by provincia;

Registros duplicados (distinct)

Con la clusula "distinct" se especifica que los registros con ciertos datos duplicados sean obviadas en el resultado.

select autor from libros; Aparecen repetidos. Para obtener la lista de autores sin repeticin usamos:

select distinct autor from libros;


Note que en los tres casos anteriores aparece "null" como un valor para "autor" Si slo queremos la lista de autores conocidos, es decir, no queremos incluir "null" en la lista, podemos utilizar la sentencia siguiente: select distinct autor from libros where autor is not null; Para contar los distintos autores, sin considerar el valor "null" usamos:

select count(distinct autor) from libros; Note que si contamos los autores sin "distinct", no incluir los valores "null" pero si los repetidos: select count(autor) from libros; Esta sentencia cuenta los registros que tienen autor. Para obtener los nombres de las editoriales usamos: select editoriales from libros; Para una consulta en la cual los nombres no se repitan tipeamos: select distinct editorial from libros; Podemos saber la cantidad de editoriales distintas usamos: select count(distinct editoriales) from libros; Podemos combinarla con "where". Por ejemplo, queremos conocer los distintos autores de la editorial "Planeta": select distinct autor from libros where editorial='Planeta'; Tambin puede utilizarse con "group by": select editorial, count(distinct autor) from libros group by editorial; Para mostrar los ttulos de los libros sin repetir ttulos, usamos: select distinct titulo from libros order by titulo; La clusula "distinct" afecta a todos los campos presentados. Para mostrar los ttulos y editoriales de los libros sin repetir ttulos ni editoriales, usamos: select distinct titulo,editorial from libros order by titulo; Note que los registros no estn duplicados, aparecen ttulos iguales pero con editorial diferente, cada registro es diferente.

Alias
Un "alias" se usa como nombre de un campo o de una expresin o para referenciar una tabla cuando se utilizan ms de una tabla Cuando usamos una funcin de agrupamiento, por ejemplo:
select count(*) from libros where autor like '%Borges%'; select count(*) as librosdeborges from libros where autor like '%Borges%';

Un alias puede tener hasta 255 caracteres, acepta todos los caracteres. Si el alias consta de una sola cadena las comillas no son necesarias, pero si contiene ms de una palabra, es necesario colocarla entre comillas.

Clave primaria compuesta.


Las claves primarias pueden ser simples, formadas por un solo campo o compuestas, ms de un campo.
La tabla llamada "vehiculos" con los siguientes campos:
patente char(6) not null, tipo char (4), horallegada time not null, horasalida time,

No podemos usar la patente porque un mismo auto puede ingresar ms de una vez en el da a la playa; tampoco podemos usar la hora de entrada porque varios autos pueden ingresar a una misma hora. Tampoco sirven los otros campos. Como ningn campo, por si solo cumple con la condicin para ser clave, es decir, debe identificar un solo registro, el valor no puede repetirse, debemos usar 2 campos.

Definimos una clave compuesta cuando ningn campo por si solo cumple con la condicin para ser clave.
Un auto puede ingresar varias veces en un da a la playa, pero siempre ser a distinta hora.

Usamos 2 campos como clave, la patente junto con la hora de llegada, as identificamos unvocamente cada registro.

Para establecer ms de un campo como clave primaria usamos la siguiente sintaxis: create table vehiculos (
patente char(6) not null, tipo char(4), horallegada time not null horasalida time, primary key(patente,horallegada) );

Actividad 1/1

Un consultorio mdico en el cual trabajan 3 mdicos registra las consultas de los pacientes en una tabla llamada "consultas".
La tabla contiene los siguientes datos:
- fechayhora: datetime not null, fecha y hora de la consulta, - medico: varchar(30), not null, nombre del mdico (Perez,Lopez,Duarte), - documento: char(8) not null, documento del paciente, - paciente: varchar(30), nombre del paciente, - obrasocial: varchar(30), nombre de la obra social

Un mdico slo puede atender a un paciente en una fecha y hora determianada. En una fecha y hora determinada, varios mdicos atienden a distintos pacientes. Cree la tabla definiendo una clave primaria compuesta:
create table consultas( fechayhora datetime not null, medico varchar(30) not null, documento char(8) not null, paciente varchar(30), obrasocial varchar(30), primary key(fechayhora,medico) );

Ingrese varias consultas para un mismo mdico en distintas horas el mismo da. Ingrese varias consultas para diferentes mdicos en la misma fecha y hora. Intente ingresar una consulta para un mismo mdico en la misma hora el mismo da.

You might also like