├── LICENSE ├── README.md └── parte001 ├── ex033_show_databases.sql ├── ex037_create_drop_describe_table.sql ├── ex038_agenda_amigos.sql ├── ex039_datos_libros_tabla.sql ├── ex041_eliminar_creacion_registros_seleccion.sql ├── ex042_creacion_descripcion_tabla_insercion_registros.sql ├── ex047_tipos_datos_basicos_varchar_integer_float.sql ├── ex048_videoclub_peliculas_tabla.sql ├── ex049_tabla_empleados_registros_insert_into.sql ├── ex051_creacion_tabla_libros_insercion_seleccion_registros.sql ├── ex052_crear_tabla_peliculas_seleccionar_registros.sql ├── ex053_tabla_empleados_insercion_seleccion_registros_columnas.sql ├── ex054_manipulacion_datos_articulos_computacion.sql ├── ex056_seleccion_registros_especificos_where.sql ├── ex057_registros_especificos_tabla_agenda.sql ├── ex058_registros_especificos_tabla_libros_clausula_where.sql ├── ex059_seleccionar_ciertos_registros_tabla_articulos.sql ├── ex061_uso_operadores_relacionales_seleccion_registros.sql ├── ex062_seleccion_registros_tabla_articulos_computacion.sql ├── ex063_peliculas_videoclub_operaciones_consultas.sql ├── ex064_datos_contactos_amigos_agenda.sql ├── ex067_eliminar_registros_comando_delete.sql ├── ex068_eliminar_filas_tabla_agenda.sql ├── ex069_eliminar_datos_tabla_libros.sql ├── ex070_manipular_datos_tabla_articulos.sql ├── ex073_actualizar_registros_tabla_usuarios_update.sql ├── ex074_actualizar_registros_tabla_update.sql ├── ex075_modificar_actualizar_registros_tabla_libros.sql ├── ex076_cambiar_registros_tabla_articulos_comando_update.sql ├── ex081_usuarios_tabla_definicion_clave_primaria.sql ├── ex082_libros_campo_codigo_llave_primaria.sql ├── ex083_clientes_llave_primaria_documento.sql ├── ex084_alumnos_campo_legajo_llave_primaria.sql ├── ex089_libros_campo_auto_incremental_primary_key.sql ├── ex090_medicamentos_campo_llave_auto_incremental.sql ├── ex092_peliculas_campo_codigo_auto_incremental.sql ├── ex095_libros_eliminar_registros_truncate_table.sql ├── ex096_medicamentos_eliminar_registros.sql ├── ex097_peliculas_vaciar_contenido_tabla_truncate_table.sql ├── ex103_libros_registros_con_campos_null.sql ├── ex104_medicamentos_insercion_datos_null_campos.sql ├── ex105_peliculas_manipulacion_valores_datos_null.sql ├── ex109_libros_atributo_unsigned_campos_numericos.sql ├── ex110_peliculas_campo_duracion_solo_positivos.sql ├── ex111_visitantes_campos_monto_compra_edad_positivos_unsigned.sql ├── ex121_visitantes_campos_tipo_char_sexo.sql ├── ex122_autos_tabla_concesionaria_campos_char.sql ├── ex123_clientes_campo_documento_char.sql ├── ex128_libros_campos_enteros_smallint_reales_decimal.sql ├── ex129_pedidos_pizzeria_smallint_tinyint_auto_increment.sql ├── ex130_estadisticas_smallint_tinyint_campos.sql ├── ex131_gases_temperatura_presion_criticas_double_precision.sql ├── ex132_cuentas_banco_campos_double_varchar.sql ├── ex138_vehiculos_parqueadero_campo_time.sql ├── ex139_autos_campo_modelo_auto_year.sql ├── ex140_empleados_fecha_ingreso_tipo_date.sql ├── ex143_libros_campos_valores_por_defecto_default.sql ├── ex144_peliculas_valores_predeterminados_default_numeros_textos.sql ├── ex145_empleados_campos_default_columnas.sql ├── ex149_libros_insercion_registros_valore_invalidos.sql ├── ex150_empleados_datos_invalidos_columnas_tabla.sql ├── ex151_peliculas_campo_con_valores_invalidos.sql ├── ex157_libros_valores_por_defecto_con_atributo_DEFAULT.sql ├── ex158_pedidos_valores_por_defecto_DEFAULT.sql ├── ex159_visitantes_columnas_con_valores_por_defecto.sql ├── ex160_prestamos_libros_columnas_valores_por_defecto.sql ├── ex162_libros_uso_atributo_ZEROFILL_en_columnas.sql ├── ex163_cuentas_campo_autoincremental_con_atributo_ZEROFILL.sql ├── ex164_peliculas_registros_valores_invalidos_ZEROFILL.sql ├── ex166_libros_columnas_calculadas_derivadas_total_producto.sql ├── ex167_empleados_columna_computada_sueldo_final.sql ├── ex168_articulos_precio_al_por_menor_mayor_columna_computada.sql ├── ex176_libros_funciones_cadenas_caracteres_upper_lower.sql ├── ex180_libros_funciones_redondear_precio.sql ├── ex185_prestamos_datos_funciones_fecha_hora.sql ├── ex186_empleados_fechas_columnas.sq.sql ├── ex187_alumnos_cantidad_agnios_actual_fecha.sql ├── ex188_usuarios_insertar_registros_fecha_operaciones.sql ├── ex189_visitas_gestion_tabla_datos_temporales.sql ├── ex191_libros_datos_ordenados_con_order_by.sql ├── ex192_medicamentos_ordenar_registros_order_by.sql ├── ex193_peliculas_ordenar_registros_clausula_order_by.sql ├── ex194_visitas_ordenamiento_datos_order_by.sql ├── ex197_libros_comprando_uso_operadores_logicos.sql ├── ex198_medicamentos_uso_operadores_logicos.sql ├── ex199_peliculas_leer_actualizar_eliminar_registros_operadores_logicos.sql ├── ex200_visitas_seleccionar_eliminar_operadores_logicos_registros.sql ├── ex203_libros_uso_operadores_between_in.sql ├── ex204_medicamentos_seleccionar_por_rango_precios_between.sql ├── ex205_autos_consulta_usando_between_in.sql ├── ex209_libros_operador_not_like_like_texto_comodin.sql ├── ex210_medicamentos_consulta_registros_like_like_not.sql ├── ex211_peliculas_consultas_registros_con_operador_like.sql ├── ex212_usuarios_seleccionar_registros_con_like.sql ├── ex215-libros-uso-basico-operador-regexp.sql ├── ex216_agenda_seleccionar_registros_operador_regexp.sql ├── ex217_articulos_seleccionar_registros_operador_regexp.sql ├── ex219_libros_demostracion_uso_funcion_count.sql ├── ex220_visitante_contar_registros_tabla_count_funcion.sql ├── ex221_prestamos_conteo_registros_funcion_count.sql ├── ex222_agenda_contar_registros_valores_null_count_funcion.sql ├── ex225_libros_demo_uso_funciones_min_max_avg_sum.sql ├── ex226_visitantes_min_max_avg_count_sum_registros.sql ├── ex227_inscripciones_minimo_maximo_conteo_promedio_suma.sql ├── ex228_peliculas_funciones_agrupacion.sql ├── ex229_autos_consultas_funciones_agrupacion.sql ├── ex230_facturas_funciones_agrupacion_datos_registros.sql ├── ex233_visitantes_agrupacion_registros_sentencia_group_by.sql ├── ex234_clientes_agrupacion_registros_sentencia_group_by.sql ├── ex235_visitas_agrupacion_registros_sentencia_group_by.sql ├── ex236_empleados_agrupar_registros_sentencia_group_by.sql ├── ex237_facturas_agrupacion_registros_group_by.sql ├── ex240_libros_seleccion_grupo_registros_having.sql ├── ex241_clientes_seleccion_grupo_registros_sentencia_having.sql ├── ex242_visitantes_seleccion_grupo_registros_sentencia_having.sql ├── ex243_visitas_seleccion_grupo_registros_sentencia_having.sql ├── ex244_empleados_seleccion_grupo_registros_sentencia_having.sql ├── ex247_libros_distinct_clausula_registros_unicos.sql ├── ex248_curso_distinct_clausula_registros_unicos.sql ├── ex249_clientes_distinct_clausula_registros_unicos.sql ├── ex250_visitas_distinct_clausula_registros_unicos.sql ├── ex251_autos_distinct_clausula_registros_unicos.sql ├── ex252_consultas_distinct_clausula_registros_unicos.sql ├── ex253_inscriptos_distinct_clausula_registros_unicos.sql ├── ex256_libros_as_alias_columnas.sql ├── ex257_clientes_as_alias_columnas.sql ├── ex260_vehiculos_llave_primaria_compuesta_tabla.sql ├── ex261_prestamos_llave_primaria_compuesta.sql ├── ex262_consultas_llave_primaria_compuesta.sql ├── ex263_inscriptos_llave_primaria_compuesta.sql ├── ex264_inscriptos_llave_primaria_compuesta.sql ├── ex269_libros_indice_primary_key.sql ├── ex270_clients_indice_primary_key.sql ├── ex271_alumnos_indice_primary_index.sql ├── ex272_alumnos_indice_primary_index.sql ├── ex275_libros_indice_comun.sql ├── ex276_medicamentos_indice_comun.sql ├── ex277_clientes_indice_comun.sql ├── ex278_agenda_indice_comun.sql ├── ex281_libros_indices_unicos.sql ├── ex282_alumnos_indices_unicos.sql ├── ex283_consultas_indices_unicos.sql ├── ex284_remis_indices_unicos.sql ├── ex286_libros_eliminar_indices_drop_index.sql ├── ex287_alumnos_eliminar_indices_drop_index.sql ├── ex288_consultas_eliminar_indices_drop_index.sql ├── ex290_libros_crear_indices_tablas_existentes_create_index.sql ├── ex291_clients_crear_indices_tablas_existentes_create_index.sql ├── ex292_consultas_crear_indices_tablas_existentes_create_index.sql ├── ex295_libros_seleccionar_cantidad_registros_limit.sql ├── ex296_peliculas_seleccionar_cantidad_registros_limit.sql ├── ex297_agenda_seleccionar_cantidad_registros_limit.sql ├── ex299_libros_rand_seleccionar_registros_aleatorios.sql ├── ex300_alumnos_rand_seleccionar_registros_aleatorios.sql ├── ex301_articulos_rand_seleccionar_registros_azar.sql ├── ex303_libros_replace_reemplazo_insercion_registros.sql ├── ex304_alumnos_replace_reemplazo_registros_insercion.sql ├── ex308_libros_alter_table_add_agregar_campos_tabla.sql ├── ex309_peliculas_alter_table_add_agregar_campos_tabla copy.sql ├── ex311_libros_alter_table_drop_eliminar_campos.sql ├── ex312_peliculas_alter_table_drop_eliminar_campos.sql ├── ex313_usuarios_alter_table_drop_eliminar_campos.sql ├── ex316_libros_alter_table_modify_modificar_campos_tabla.sql ├── ex317_libros_alter_table_modify_modificar_campos_tabla.sql ├── ex318_articulos_alter_table_modify_modificar_campos_tabla.sql ├── ex320_libros_alter_table_change_modificar_campos_tabla.sql ├── ex321_articulos_alter_table_change_modificar_campos_tabla.sql ├── ex322_peliculas_alter_table_change_modificar_campos_tabla.sql ├── ex325_libros_alter_table_add_primary_key_llave_primaria_campo.sql ├── ex326_medicamentos_alter_table_add_primary_key_llave_primaria_campo.sql ├── ex327_prestamos_alter_table_add_primary_key_llave_primaria_campo.sql ├── ex329_libors_alter_table_add_index_agregar_indices_tablas.sql ├── ex330_alumnos_alter_table_add_index_agregar_indices_tablas.sql ├── ex331_consultas_alter_table_add_index_agregar_indices_tablas.sql ├── ex333_libros_alter_table_drop_index_eliminar_indices_tabla.sql ├── ex334_alumnos_alter_table_drop_index_eliminar_indices_tabla.sql ├── ex335_consultas_alter_table_drop_index_eliminar_indices_tabla.sql ├── ex337_amigos_alter_table_rename_renombrar_tablas.sql ├── ex338_peliculas_alter_table_rename_renombrar_tablas.sql ├── ex339_clientes_alter_table_rename_renombrar_tablas.sql ├── ex342_postulantes_tipo_dato_enum_enumeraciones.sql ├── ex343_empleados_tipo_dato_enum_enumeraciones.sql ├── ex344_viajes_tipo_dato_enum_enumeraciones.sql ├── ex345_inmuebles_tipo_dato_enum_enumeraciones.sql ├── ex348_postulantes_set_conjunto_valores_campo.sql ├── ex349_cursos_set_conjunto_valores_campo.sql ├── ex350_cursos_set_conjunto_valores_campo.sql ├── ex350_viajes_set_conjunto_valores_campo.sql ├── ex354_peliculas_tipo_dato_text_blob_texto_extenso.sql ├── ex355_inmuebles_tipo_dato_text_blob_texto_extenso.sql ├── ex356_libros_tipo_dato_text_blob_texto_extenso.sql ├── ex358_libros_if_funcion_condicional.sql ├── ex359_empleados_if_funcion_condicional.sql ├── ex360_luz_if_funcion_condicional.sql ├── ex361_alumnos_if_funcion_condicional.sql ├── ex362_vehiculos_if_funcion_condicional.sql ├── ex363_entradas_if_funcion_condicional.sql ├── ex366_libros_case_funcion_condicional.sql ├── ex367_alumnos_case_funcion_condicional.sql ├── ex367_vehiculos_case_funcion_condicional.sql ├── ex368_visitas_case_funcion_condicional.sql ├── ex373_libros_editoriales_union_tablas_join.sql ├── ex374_clientes_provincias_union_tablas_join.sql ├── ex375_socios_inscriptos_union_tablas_join.sql ├── ex376_libros_prestamos_union_tablas_join.sql ├── ex377_consultas_obrassociales_union_tablas_join.sql └── ex379_libros_editoriales_llave_foranea.sql /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 John Ortiz Ordoñez 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # MySQL-Ejercicios 2 | Ejercicios prácticos (con diferente grado de dificultad) del gestor de bases de datos relacionales MySQL. 3 | -------------------------------------------------------------------------------- /parte001/ex033_show_databases.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Problema: Mostrar las bases de datos existentes en el servidor de base de datos del sitio tutorialesprogramacionya.com 3 | */ 4 | 5 | SHOW DATABASES; 6 | -------------------------------------------------------------------------------- /parte001/ex037_create_drop_describe_table.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Problema: Crear la tabla usuarios con los campos nombre y clave. Previamente borrar la tabla usuarios si ya existe en el servidor. Finalmente mostrar la 3 | estructura de la tabla usuarios que acabamos de crear. 4 | */ 5 | 6 | drop table if exists usuarios; 7 | 8 | create table usuarios ( 9 | nombre varchar(30), 10 | clave varchar(10) 11 | ); 12 | 13 | describe usuarios; 14 | -------------------------------------------------------------------------------- /parte001/ex038_agenda_amigos.sql: -------------------------------------------------------------------------------- 1 | /* 1. Elimine la tabla "agenda" si existe: */ 2 | DROP TABLE IF EXISTS agenda; 3 | 4 | /* 2. Cree una tabla llamada "agenda", debe tener los siguientes campos: */ 5 | CREATE TABLE agenda( 6 | nombre VARCHAR(20), 7 | domicilio VARCHAR(30), 8 | telefono VARCHAR(11) 9 | ); 10 | 11 | /* 3. Intente crearla nuevamente. Aparece mensaje de error.*/ 12 | /*CREATE TABLE agenda( 13 | nombre VARCHAR(20), 14 | domicilio VARCHAR(30), 15 | telefono VARCHAR(11) 16 | ); 17 | */ 18 | 19 | /* 4. Visualice las tablas existentes (show tables). */ 20 | SHOW TABLES; 21 | 22 | /* 5. Visualice la estructura de la tabla "agenda" (describe agenda). */ 23 | DESCRIBE agenda; 24 | 25 | /* 6. Elimine la tabla, si existe (drop table, if exists).*/ 26 | DROP TABLE IF EXISTS agenda; 27 | 28 | /* 7. Intente eliminar la tabla sin la cláusula if exists (drop table agenda). 29 | Debe aparecer un mensaje de error cuando no existe la tabla. */ 30 | /* DROP TABLE agenda; */ 31 | -------------------------------------------------------------------------------- /parte001/ex039_datos_libros_tabla.sql: -------------------------------------------------------------------------------- 1 | /* 2 | A) Queremos almacenar información referente a nuestros libros. 3 | 1- Elimine la tabla "libros", si existe. 4 | 5 | 2- Cree una tabla llamada "libros". 6 | Debe definirse con los siguientes campos: 7 | titulo varchar(20), 8 | autor varchar(30), 9 | y editorial varchar(15) 10 | 11 | 3- Intente crearla nuevamente. Aparece mensaje de error. 12 | 13 | 4- Visualice las tablas existentes. 14 | 15 | 5- Visualice la estructura de la tabla "libros". 16 | 17 | 6- Elimine la tabla, si existe. 18 | 19 | 7- Intente eliminar la tabla. 20 | */ 21 | 22 | DROP TABLE IF EXISTS libros; 23 | 24 | CREATE TABLE libros ( 25 | titulo VARCHAR(20), 26 | autor VARCHAR(30), 27 | editorial VARCHAR(15) 28 | ); 29 | 30 | SHOW TABLES; 31 | 32 | DESCRIBE libros; 33 | 34 | DROP TABLE IF EXISTS libros; 35 | -------------------------------------------------------------------------------- /parte001/ex041_eliminar_creacion_registros_seleccion.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Problema: Insertar tres registros en la tabla usuarios y luego mostrar todos los registros de la tabla. 3 | Primeramente eliminamos la tabla, si existe: 4 | drop table if exists usuarios; 5 | Creamos la tabla: 6 | create table usuarios ( 7 | nombre varchar(30), 8 | clave varchar(10) 9 | ); 10 | Insertamos 3 registros: 11 | insert into usuarios(nombre,clave) values ('MarioPerez','Marito'); 12 | insert into usuarios(nombre,clave) values ('MariaGarcia','Mary'); 13 | insert into usuarios(nombre,clave) values ('DiegoRodriguez','z8080'); 14 | Para ver los registros ejecutamos el comando select: 15 | select nombre,clave from usuarios; 16 | */ 17 | 18 | drop table if exists usuarios; 19 | 20 | create table usuarios ( 21 | nombre varchar(30), 22 | clave varchar(10) 23 | ); 24 | 25 | insert into usuarios(nombre,clave) values ('MarioPerez','Marito'); 26 | insert into usuarios(nombre,clave) values ('MariaGarcia','Mary'); 27 | insert into usuarios(nombre,clave) values ('DiegoRodriguez','z8080'); 28 | 29 | select nombre,clave from usuarios; 30 | -------------------------------------------------------------------------------- /parte001/ex042_creacion_descripcion_tabla_insercion_registros.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "agenda", si existe: 2 | DROP TABLE IF EXISTS agenda; 3 | 4 | -- 2. Cree una tabla llamada "agenda". Debe tener los siguientes campos: 5 | -- nombre (cadena de 20), domicilio (cadena de 30) y telefono (cadena de 11): 6 | CREATE TABLE agenda ( 7 | nombre VARCHAR(20), 8 | domicilio VARCHAR(30), 9 | telefono VARCHAR(11) 10 | ); 11 | 12 | -- 3. Visualice las tablas existentes para verificar la creación de "agenda". 13 | SHOW TABLES; 14 | 15 | -- 4. Visualice la estructura de la tabla "agenda". (describe). 16 | DESCRIBE agenda; 17 | 18 | -- 5. Ingrese los siguientes registros: 19 | INSERT INTO agenda (nombre, domicilio, telefono) VALUES 20 | ('Alberto Mores','Colon 123','4234567'); 21 | INSERT INTO agenda (nombre, domicilio, telefono) VALUES 22 | ('Juan Torres','Avellaneda 135','4458787'); 23 | 24 | -- 6. Seleccione y mustre todos los registros de la tabla: 25 | SELECT * FROM agenda; 26 | 27 | -- 7. Elimine la tabla "agenda", si existe: 28 | DROP TABLE IF EXISTS agenda; 29 | 30 | -- 8. Intente eliminar la tabla nuevamente, sin especificar "si existe": 31 | DROP TABLE agenda; 32 | -------------------------------------------------------------------------------- /parte001/ex047_tipos_datos_basicos_varchar_integer_float.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Problema: 3 | Para almacenar información de los libros de una librería necesitamos los siguientes campos: 4 | 5 | -titulo, cadena de caracteres de 40 de longitud, 6 | -autor, cadena de caracteres de 30 de longitud, 7 | -editorial, caracteres de 15 de longitud, 8 | -precio, valor numérico con decimales y 9 | -cantidad, valor numérico entero. 10 | Al crear la tabla, entonces, elegimos el tipo de dato más adecuado para cada campo: 11 | 12 | create table libros( 13 | titulo varchar(40), 14 | autor varchar(20), 15 | editorial varchar(15), 16 | precio float, 17 | cantidad integer 18 | ); 19 | Vemos la estructura de la tabla: 20 | 21 | describe libros; 22 | Ingresamos algunos registros: 23 | 24 | insert into libros (titulo,autor,editorial,precio,cantidad) 25 | values ('El aleph','Borges','Emece',45.50,100); 26 | insert into libros (titulo,autor,editorial,precio,cantidad) 27 | values ('Alicia en el pais de las maravillas','Lewis Carroll', 28 | 'Planeta',25,200); 29 | insert into libros (titulo,autor,editorial,precio,cantidad) 30 | values ('Matematica estas ahi','Paenza','Planeta',15.8,200); 31 | Veamos los registros cargados: 32 | 33 | select titulo,autor,editorial,precio,cantidad from libros; 34 | Tengamos en cuenta que es lo mismo escribir: 35 | 36 | select * from libros; 37 | Es una forma resumida de indicar que seleccione todos los campos de la tabla. 38 | */ 39 | 40 | drop table if exists libros; 41 | 42 | create table libros( 43 | titulo varchar(40), 44 | autor varchar(20), 45 | editorial varchar(15), 46 | precio float, 47 | cantidad integer 48 | ); 49 | 50 | insert into libros (titulo,autor,editorial,precio,cantidad) 51 | values ('El aleph','Borges','Emece',45.50,100); 52 | insert into libros (titulo,autor,editorial,precio,cantidad) 53 | values ('Alicia en el pais de las maravillas','Lewis Carroll','Planeta',25,200); 54 | insert into libros (titulo,autor,editorial,precio,cantidad) 55 | values ('Matematica estas ahi','Paenza','Planeta',15.8,200); 56 | 57 | select * from libros; 58 | -------------------------------------------------------------------------------- /parte001/ex048_videoclub_peliculas_tabla.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | 5 | -- 2. Cree la tabla eligiendo el tipo de dato adecuado para cada campo: 6 | CREATE TABLE peliculas( 7 | nombre VARCHAR(20), 8 | actor VARCHAR(20), 9 | duracion INTEGER, 10 | cantidad INTEGER 11 | ); 12 | 13 | -- 3. Vea la estructura de la tabla: 14 | DESCRIBE peliculas; 15 | 16 | -- 4. Ingrese los siguientes registros: 17 | INSERT INTO peliculas (nombre, actor, duracion, cantidad) 18 | VALUES ('Mision imposible','Tom Cruise',120,3); 19 | INSERT INTO peliculas (nombre, actor, duracion, cantidad) 20 | VALUES ('Mision imposible 2','Tom Cruise',180,2); 21 | INSERT INTO peliculas (nombre, actor, duracion, cantidad) 22 | VALUES ('Mujer bonita','Julia R.',90,3); 23 | INSERT INTO peliculas (nombre, actor, duracion, cantidad) 24 | VALUES ('Elsa y Fred','China Zorrilla',90,2); 25 | 26 | -- 5. Muestre todos los registros: 27 | SELECT * FROM peliculas; 28 | -------------------------------------------------------------------------------- /parte001/ex049_tabla_empleados_registros_insert_into.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS empleados; 3 | 4 | -- 2. Cree la tabla eligiendo el tipo de dato adecuado para cada campo: 5 | CREATE TABLE empleados( 6 | nombre VARCHAR(20), 7 | documento VARCHAR(8), 8 | sexo VARCHAR(1), 9 | domicilio VARCHAR(30), 10 | sueldo_basico FLOAT 11 | ); 12 | 13 | -- 3. Vea la estructura de la tabla: 14 | DESCRIBE empleados; 15 | 16 | -- 4. Ingrese algunos registros: 17 | INSERT INTO empleados (nombre, documento, sexo, domicilio, sueldo_basico) 18 | VALUES ('Juan Perez','22345678','m','Sarmiento 123',300); 19 | INSERT INTO empleados (nombre, documento, sexo, domicilio, sueldo_basico) 20 | VALUES ('Ana Acosta','24345678','f','Colon 134',500); 21 | INSERT INTO empleados (nombre, documento, sexo, domicilio, sueldo_basico) 22 | VALUES ('Marcos Torres','27345678','m','Urquiza 479',800); 23 | 24 | -- 5. Seleccione todos los registros: 25 | SELECT * FROM empleados; 26 | -------------------------------------------------------------------------------- /parte001/ex051_creacion_tabla_libros_insercion_seleccion_registros.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | titulo VARCHAR(20), 5 | autor VARCHAR(30), 6 | editorial VARCHAR(15), 7 | precio FLOAT, 8 | cantidad INTEGER 9 | ); 10 | 11 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 12 | VALUES ('El aleph','Borges','Emece',45.50,100); 13 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 14 | VALUES ('Alicia en el pais de las maravillas','Lewis Carroll','Planeta',25,200); 15 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 16 | VALUES ('Matematica estas ahi','Paenza','Planeta',15.8,200); 17 | 18 | SELECT * FROM libros; 19 | 20 | SELECT titulo,autor,editorial FROM libros; 21 | 22 | SELECT titulo,precio FROM libros; 23 | 24 | SELECT editorial,cantidad FROM libros; 25 | -------------------------------------------------------------------------------- /parte001/ex052_crear_tabla_peliculas_seleccionar_registros.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE peliculas( 6 | titulo VARCHAR(20), 7 | actor VARCHAR(20), 8 | duracion INTEGER, 9 | cantidad INTEGER 10 | ); 11 | 12 | -- 3. Vea la estructura de la tabla: 13 | DESCRIBE peliculas; 14 | 15 | -- 4. Ingrese los siguientes registros: 16 | 17 | INSERT INTO peliculas (titulo, actor, duracion, cantidad) 18 | VALUES ('Mision imposible','Tom Cruise',120,3); 19 | INSERT INTO peliculas (titulo, actor, duracion, cantidad) 20 | VALUES ('Mision imposible 2','Tom Cruise',180,2); 21 | INSERT INTO peliculas (titulo, actor, duracion, cantidad) 22 | VALUES ('Mujer bonita','Julia R.',90,3); 23 | INSERT INTO peliculas (titulo, actor, duracion, cantidad) 24 | VALUES ('Elsa y Fred','China Zorrilla',90,2); 25 | 26 | -- 5. Realice un "select" mostrando solamente el título y actor de todas las películas: 27 | SELECT titulo, actor FROM peliculas; 28 | 29 | -- 6. Muestre el título y duración de todas las peliculas. 30 | SELECT titulo, duracion FROM peliculas; 31 | 32 | -- 7. Muestre el título y la cantidad de copias. 33 | SELECT titulo, cantidad FROM peliculas; -------------------------------------------------------------------------------- /parte001/ex053_tabla_empleados_insercion_seleccion_registros_columnas.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS empleados; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE empleados ( 6 | nombre VARCHAR(20), 7 | documento VARCHAR(8), 8 | sexo VARCHAR(1), 9 | domicilio VARCHAR(30), 10 | sueldo_basico FLOAT 11 | ); 12 | 13 | -- 3. Vea la estructura de la tabla: 14 | DESCRIBE empleados; 15 | 16 | -- 4. Ingrese algunos registros: 17 | INSERT INTO empleados (nombre, documento, sexo, domicilio, sueldo_basico) 18 | VALUES ('Juan Perez','22345678','m','Sarmiento 123',300); 19 | INSERT INTO empleados (nombre, documento, sexo, domicilio, sueldo_basico) 20 | VALUES ('Ana Acosta','24345678','f','Colon 134',500); 21 | INSERT INTO empleados (nombre, documento, sexo, domicilio, sueldo_basico) 22 | VALUES ('Marcos Torres','27345678','m','Urquiza 479',800); 23 | 24 | -- 5. Muestre todos los datos de los empleados. 25 | SELECT * FROM empleados; 26 | 27 | -- 6. Muestre el nombre y documento de los empleados. 28 | SELECT nombre, documento FROM empleados; 29 | 30 | -- 7. ealice un "select" mostrando el nombre, documento y sueldo básico de todos los empleados. 31 | SELECT nombre, documento, sueldo_basico FROM empleados; 32 | -------------------------------------------------------------------------------- /parte001/ex054_manipulacion_datos_articulos_computacion.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS articulos; 3 | 4 | -- 2. Cree la tabla "articulos" con los campos necesarios para almacenar los siguientes datos: 5 | CREATE TABLE articulos ( 6 | codigo INTEGER, 7 | nombre VARCHAR(20), 8 | descripcion VARCHAR(30), 9 | precio FLOAT 10 | ); 11 | 12 | -- 3. Vea la estructura de la tabla (describe). 13 | DESCRIBE articulos; 14 | 15 | -- 4. Ingrese algunos registros: 16 | INSERT INTO articulos (codigo, nombre, descripcion, precio) 17 | VALUES (1,'impresora','Epson Stylus C45',400.80); 18 | INSERT INTO articulos (codigo, nombre, descripcion, precio) 19 | VALUES (2,'impresora','Epson Stylus C85',500); 20 | INSERT INTO articulos (codigo, nombre, descripcion, precio) 21 | VALUES (3,'monitor','Samsung 14',800); 22 | 23 | -- 5. Muestre todos los campos de todos los registros. 24 | SELECT * FROM articulos; 25 | 26 | -- 6. Muestre sólo el nombre, descripción y precio. 27 | SELECT nombre, descripcion, precio FROM articulos; 28 | -------------------------------------------------------------------------------- /parte001/ex056_seleccion_registros_especificos_where.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS usuarios; 2 | 3 | CREATE TABLE usuarios ( 4 | nombre VARCHAR(30), 5 | clave VARCHAR(10) 6 | ); 7 | 8 | DESCRIBE usuarios; 9 | 10 | INSERT INTO usuarios (nombre, clave) VALUES ('Leonardo','payaso'); 11 | INSERT INTO usuarios (nombre, clave) VALUES ('MarioPerez','Marito'); 12 | INSERT INTO usuarios (nombre, clave) VALUES ('Marcelo','bocajunior'); 13 | INSERT INTO usuarios (nombre, clave) VALUES ('Gustavo','bocajunior'); 14 | 15 | SELECT nombre, clave FROM usuarios; 16 | 17 | SELECT nombre, clave FROM usuarios WHERE nombre='Leonardo'; 18 | 19 | SELECT nombre, clave FROM usuarios WHERE clave='bocajunior'; 20 | 21 | SELECT nombre, clave FROM usuarios WHERE clave='river'; 22 | -------------------------------------------------------------------------------- /parte001/ex057_registros_especificos_tabla_agenda.sql: -------------------------------------------------------------------------------- 1 | -- 1. Eliminamos "agenda", si existe: 2 | DROP TABLE IF EXISTS agenda; 3 | 4 | -- 2. Creamos la tabla, con los siguientes campos: 5 | CREATE TABLE agenda( 6 | nombre VARCHAR(20), 7 | domicilio VARCHAR(30), 8 | telefono VARCHAR(11) 9 | ); 10 | 11 | -- 3. Visualice la estructura de la tabla "agenda".(describe). 12 | DESCRIBE agenda; 13 | 14 | -- 4. Ingrese los siguientes registros: 15 | INSERT INTO agenda VALUES ('Alberto Mores', 'Colon 123', '4234567'); 16 | INSERT INTO agenda VALUES ('Juan Torres', 'Avellaneda 135', '4458787'); 17 | INSERT INTO agenda VALUES ('Mariana Lopez', 'Urquiza 3333', '4545454'); 18 | INSERT INTO agenda VALUES ('Fernando Lopez', 'Urquiza 3333', '4545454'); 19 | 20 | -- 5. Seleccione todos los registros de la tabla. (select). 21 | SELECT * FROM agenda; 22 | 23 | -- 6. Seleccione el registro cuyo nombre sea 'Juan Torres'. 24 | SELECT * FROM agenda WHERE nombre = 'Juan Torres'; 25 | 26 | -- 7. Seleccione el registro cuyo domicilio sea 'Colon 123'. 27 | SELECT * FROM agenda WHERE domicilio = 'Colon 123'; 28 | 29 | -- 8. Muestre los datos de quienes tengan el teléfono '4545454'. 30 | SELECT * FROM agenda WHERE telefono = '4545454'; 31 | 32 | -- 9. Elimine la tabla "agenda": 33 | DROP TABLE IF EXISTS agenda; 34 | -------------------------------------------------------------------------------- /parte001/ex058_registros_especificos_tabla_libros_clausula_where.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe. (drop table- if exists): 2 | DROP TABLE IF EXISTS libros; 3 | 4 | -- 2. Cree la tabla "libros". Debe tener la siguiente estructura: 5 | CREATE TABLE libros ( 6 | titulo VARCHAR(20), 7 | autor VARCHAR(30), 8 | editorial VARCHAR(15) 9 | ); 10 | 11 | -- 3. Cree la tabla "libros". Debe tener la siguiente estructura: 12 | DESCRIBE libros; 13 | 14 | -- 4. Ingrese los siguientes registros: 15 | INSERT INTO libros VALUES ('El aleph', 'Borges', 'Planeta'); 16 | INSERT INTO libros VALUES ('Martin Fierro', 'Jose Hernandez', 'Emece'); 17 | INSERT INTO libros VALUES ('Aprenda PHP', 'Mario Molina', 'Emece'); 18 | INSERT INTO libros VALUES ('Cervantes', 'Borges', 'Paidos'); 19 | 20 | -- 5. Muestre todos los registros. (select): 21 | SELECT * FROM libros; 22 | 23 | -- 6. Seleccione los registros cuyo autor sea 'Borges': 24 | SELECT * FROM libros WHERE autor = 'Borges'; 25 | 26 | -- 7. Seleccione los registros cuya editorial sea 'Emece': 27 | SELECT * FROM libros WHERE editorial = 'Emece'; 28 | 29 | -- 8. Seleccione los libros cuyo titulo sea 'Martin Fierro': 30 | SELECT * FROM libros WHERE titulo = 'Martin Fierro'; 31 | 32 | -- 9. Elimine la tabla "libros": 33 | DROP TABLE IF EXISTS libros; 34 | -------------------------------------------------------------------------------- /parte001/ex059_seleccionar_ciertos_registros_tabla_articulos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS articulos; 3 | 4 | -- 2. Cree la tabla "articulos" con la siguiente estructura: 5 | CREATE TABLE articulos ( 6 | codigo INTEGER, 7 | nombre VARCHAR(20), 8 | descripcion VARCHAR(30), 9 | precio FLOAT 10 | ); 11 | 12 | -- 3. Vea la estructura de la tabla (describe). 13 | DESCRIBE articulos; 14 | 15 | -- 4. Ingrese los siguientes registros: 16 | INSERT INTO articulos (codigo, nombre, descripcion, precio) 17 | VALUES (1,'impresora','Epson Stylus C45',400.80); 18 | INSERT INTO articulos (codigo, nombre, descripcion, precio) 19 | VALUES (2,'impresora','Epson Stylus C85',500); 20 | INSERT INTO articulos (codigo, nombre, descripcion, precio) 21 | VALUES (3,'monitor','Samsung 14',800); 22 | INSERT INTO articulos (codigo, nombre, descripcion, precio) 23 | VALUES (4,'teclado','ingles Biswal',100); 24 | INSERT INTO articulos (codigo, nombre, descripcion, precio) 25 | VALUES (5,'teclado','español Biswal',90); 26 | 27 | -- 5. Seleccione todos los datos de los registros cuyo nombre sea "impresora": 28 | SELECT * FROM articulos 29 | WHERE nombre = 'impresora'; 30 | 31 | -- 6. Muestre sólo el código, descripción y precio de los teclados: 32 | SELECT codigo, descripcion, precio 33 | FROM articulos 34 | WHERE nombre = 'teclado'; 35 | -------------------------------------------------------------------------------- /parte001/ex061_uso_operadores_relacionales_seleccion_registros.sql: -------------------------------------------------------------------------------- 1 | -- 1. Borramos la tabla libros si existe 2 | DROP TABLE IF EXISTS libros; 3 | 4 | -- 2. La creamos con la siguiente estructura: 5 | CREATE TABLE libros( 6 | titulo varchar(20), 7 | autor varchar(30), 8 | editorial varchar(15), 9 | precio float 10 | ); 11 | 12 | -- 3. Agregamos registros a la tabla: 13 | INSERT INTO libros (titulo,autor,editorial,precio) VALUES ('El aleph','Borges','Planeta',12.50); 14 | INSERT INTO libros (titulo,autor,editorial,precio) VALUES ('Martin Fierro','Jose Hernandez','Emece',16.00); 15 | INSERT INTO libros (titulo,autor,editorial,precio) VALUES ('Aprenda PHP','Mario Molina','Emece',35.40); 16 | INSERT INTO libros (titulo,autor,editorial,precio) VALUES ('Cervantes','Borges','Paidos',50.90); 17 | 18 | -- 4. Seleccionamos todos los registros: 19 | SELECT titulo, autor,editorial,precio FROM libros; 20 | 21 | -- 5. Seleccionamos los registros cuyo autor sea diferente de 'Borges': 22 | SELECT titulo, autor,editorial,precio FROM libros WHERE autor<>'Borges'; 23 | 24 | -- 6. Seleccionamos los registros cuyo precio supere los 20 pesos: 25 | SELECT titulo, autor,editorial,precio FROM libros WHERE precio>20; 26 | 27 | -- 7. Seleccionamos los libros cuyo precio es menor o igual a 30: 28 | SELECT titulo,autor,editorial,precio FROM libros WHERE precio<=30; 29 | -------------------------------------------------------------------------------- /parte001/ex062_seleccion_registros_tabla_articulos_computacion.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine "articulos", si existe: 2 | DROP TABLE IF EXISTS articulos; 3 | 4 | -- 2. Cree la tabla, con la siguiente estructura: 5 | CREATE TABLE articulos( 6 | codigo INTEGER, 7 | nombre VARCHAR(20), 8 | descripcion VARCHAR(30), 9 | precio FLOAT, 10 | cantidad INTEGER 11 | ); 12 | 13 | -- 3. Vea la estructura de la tabla (describe). 14 | DESCRIBE articulos; 15 | 16 | -- 4. Ingrese algunos registros: 17 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 18 | VALUES (1,'impresora','Epson Stylus C45',400.80,20); 19 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 20 | VALUES (2,'impresora','Epson Stylus C85',500,30); 21 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 22 | VALUES (3,'monitor','Samsung 14',800,10); 23 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 24 | VALUES (4,'teclado','ingles Biswal',100,50); 25 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 26 | VALUES (5,'teclado','español Biswal',90,50); 27 | 28 | -- 5. Seleccione todos los registros de la tabla. (select). 29 | SELECT * FROM articulos; 30 | 31 | -- 6. Muestre los datos de las impresoras. 32 | SELECT * FROM articulos 33 | WHERE nombre = 'impresora'; 34 | 35 | -- 7. Seleccione los artículos cuyo precio sea mayor o igual a 500: 36 | SELECT * FROM articulos 37 | WHERE precio >= 500; 38 | 39 | -- 8. Seleccione los artículos cuya cantidad sea menor a 30: 40 | SELECT * FROM articulos 41 | WHERE cantidad < 30; 42 | 43 | -- 9. Selecciones el nombre y descripción de los artículos que no cuesten $100: 44 | SELECT nombre, descripcion FROM articulos 45 | WHERE precio <> 100; -------------------------------------------------------------------------------- /parte001/ex063_peliculas_videoclub_operaciones_consultas.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe. 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 2. Cree la tabla eligiendo el tipo de dato adecuado para cada campo: 5 | CREATE TABLE peliculas ( 6 | titulo VARCHAR(20), 7 | actor VARCHAR(20), 8 | duracion INTEGER, 9 | cantidad INTEGER 10 | ); 11 | 12 | -- 3. Vea la estructura de la tabla: 13 | DESCRIBE peliculas; 14 | 15 | -- 4. Ingrese los siguientes registros: 16 | INSERT INTO peliculas (titulo, actor, duracion, cantidad) 17 | VALUES ('Mision imposible','Tom Cruise',120,3); 18 | INSERT INTO peliculas (titulo, actor, duracion, cantidad) 19 | VALUES ('Mision imposible 2','Tom Cruise',180,2); 20 | INSERT INTO peliculas (titulo, actor, duracion, cantidad) 21 | VALUES ('Mujer bonita','Julia R.',90,3); 22 | INSERT INTO peliculas (titulo, actor, duracion, cantidad) 23 | VALUES ('Elsa y Fred','China Zorrilla',90,2); 24 | 25 | -- 5. Seleccione las películas cuya duración no supere los 90 minutos: 26 | SELECT * FROM peliculas 27 | WHERE duracion <= 90; 28 | 29 | -- 6. Seleccione todas las películas en las que el actor no sea 'Tom Cruise': 30 | SELECT * FROM peliculas 31 | WHERE actor <> 'Tom Cruise'; 32 | 33 | -- 7. Seleccione todas las películas de las que haya más de 2 copias: 34 | SELECT * FROM peliculas 35 | WHERE cantidad > 2; -------------------------------------------------------------------------------- /parte001/ex064_datos_contactos_amigos_agenda.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine "agenda", si existe: 2 | DROP TABLE IF EXISTS agenda; 3 | 4 | -- 2. Cree la tabla, con los siguientes campos: apellido (cadena de 30), nombre (cadena de 20), 5 | -- domicilio (cadena de 30) y telefono (cadena de 11). 6 | CREATE TABLE agenda ( 7 | apellido VARCHAR (30), 8 | nombre VARCHAR(20), 9 | domicilio VARCHAR(30), 10 | telefono VARCHAR(11) 11 | ); 12 | 13 | -- 3. Visualice la estructura de la tabla. 14 | DESCRIBE agenda; 15 | 16 | -- 4. Ingrese los siguientes registros: 17 | INSERT INTO agenda VALUES 18 | ('Mores', 'Alberto', 'Colon 123', '4234567'); 19 | INSERT INTO agenda VALUES 20 | ('Torres', 'Juan', 'Avellaneda 135', '4458787'); 21 | INSERT INTO agenda VALUES 22 | ('Lopez', 'Mariana', 'Urquiza 333', '4545454'); 23 | INSERT INTO agenda VALUES 24 | ('Lopez', 'Fernando', 'Urquiza 333', '4545454'); 25 | INSERT INTO agenda VALUES 26 | ('Suarez', 'Mariana', 'Sarmiento 643', '4445544'); 27 | INSERT INTO agenda VALUES 28 | ('Lopez', 'Ana', 'Sucre 309', '4252587'); 29 | 30 | -- 5. Seleccione todos los registros de la tabla: 31 | SELECT * FROM agenda; 32 | 33 | -- 6. Seleccione los amigos cuyo apellido sea 'Lopez': 34 | SELECT * FROM agenda 35 | WHERE apellido = 'Lopez'; 36 | 37 | -- 7. Seleccione los registros cuyo nombre NO sea 'Mariana': 38 | SELECT * FROM agenda 39 | WHERE nombre <> 'Mariana'; 40 | 41 | -- 8. Seleccione los registros cuyo domicilio sea 'Colon 123': 42 | SELECT * FROM agenda 43 | WHERE domicilio = 'Colon 123'; 44 | 45 | -- 9. Muestre los datos de quienes tengan el teléfono '4545454': 46 | SELECT * FROM agenda 47 | WHERE telefono = '4545454'; 48 | -------------------------------------------------------------------------------- /parte001/ex067_eliminar_registros_comando_delete.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS usuarios; 2 | 3 | CREATE TABLE usuarios ( 4 | nombre VARCHAR(30), 5 | clave VARCHAR(10) 6 | ); 7 | 8 | INSERT INTO usuarios (nombre, clave) VALUES ('Leonardo','payaso'); 9 | INSERT INTO usuarios (nombre, clave) VALUES ('MarioPerez','Marito'); 10 | INSERT INTO usuarios (nombre, clave) VALUES ('Marcelo','River'); 11 | INSERT INTO usuarios (nombre, clave) VALUES ('Gustavo','River'); 12 | 13 | DELETE FROM usuarios WHERE nombre='Leonardo'; 14 | 15 | SELECT nombre, clave FROM usuarios; 16 | 17 | DELETE FROM usuarios WHERE clave='River'; 18 | 19 | SELECT nombre, clave FROM usuarios; 20 | 21 | DELETE FROM usuarios; 22 | 23 | SELECT nombre,clave FROM usuarios; 24 | 25 | SELECT @@SQL_SAFE_UPDATES; 26 | -------------------------------------------------------------------------------- /parte001/ex068_eliminar_filas_tabla_agenda.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla (drop table) si existe (if exists): 2 | DROP TABLE IF EXISTS agenda; 3 | 4 | -- 2. Cree la tabla con los siguientes campos: apellido (cadena de 30), nombre (cadena de 20), 5 | -- domicilio (cadena de 30) y telefono (cadena de 11): 6 | CREATE TABLE agenda ( 7 | apellido VARCHAR(30), 8 | nombre VARCHAR(20), 9 | domicilio VARCHAR(30), 10 | telefono VARCHAR(11) 11 | ); 12 | 13 | -- 3. Visualice la estructura de la tabla "agenda" (describe): 14 | DESCRIBE agenda; 15 | 16 | -- 4. 17 | INSERT INTO agenda VALUES 18 | ('Mores', 'Alberto', 'Colon 123', '4234567'); 19 | INSERT INTO agenda VALUES 20 | ('Torres', 'Juan', 'Avellaneda 135', '4458787'); 21 | INSERT INTO agenda VALUES 22 | ('Lopez', 'Mariana', 'Urquiza 333', '4545454'); 23 | INSERT INTO agenda VALUES 24 | ('Lopez', 'Jose', 'Urquiza 333', '4545454'); 25 | INSERT INTO agenda VALUES 26 | ('Peralta', 'Susana', 'Gral. Paz 1234', '4123456'); 27 | 28 | SELECT * FROM agenda; 29 | 30 | -- 5. Elimine el registro cuyo nombre sea 'Juan'(delete - where): 31 | DELETE FROM agenda WHERE nombre = 'Juan'; 32 | 33 | SELECT * FROM agenda; 34 | 35 | -- 6. Elimine los registros cuyo número telefónico sea igual a '4545454': 36 | DELETE FROM agenda WHERE telefono = '4545454'; 37 | 38 | SELECT * FROM agenda; 39 | -------------------------------------------------------------------------------- /parte001/ex069_eliminar_datos_tabla_libros.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla: 2 | DROP TABLE IF EXISTS libros; 3 | 4 | -- 2. Créela con los siguientes campos: titulo (cadena de 20 caracteres de longitud), 5 | -- autor (cadena de 30), editorial (cadena de 15) y precio (float). 6 | CREATE TABLE libros ( 7 | titulo VARCHAR(20), 8 | autor VARCHAR(30), 9 | editorial VARCHAR(15), 10 | precio FLOAT 11 | ); 12 | 13 | -- 3. Visualice la estructura de la tabla "libros": 14 | DESCRIBE libros; 15 | 16 | -- 4. Ingrese los siguientes registros: 17 | INSERT INTO libros VALUES ('El aleph', 'Borges', 'Planeta', 15); 18 | INSERT INTO libros VALUES ('Martin Fierro', 'Jose Hernandez', 'Emece', 25.50); 19 | INSERT INTO libros VALUES ('Aprenda PHP', 'Mario Molina', 'Emece', 26.80); 20 | INSERT INTO libros VALUES ('Cervantes y el quijote', 'Borges', 'Paidos', 45.50); 21 | INSERT INTO libros VALUES ('Matematica estas ahi', 'Paenza', 'Paidos', 50.00); 22 | 23 | -- 5. Muestre todos los registros: 24 | SELECT * FROM libros; 25 | 26 | -- 6. Elimine los registros cuyo autor sea igual a 'Paenza'. (1 registro eliminado): 27 | DELETE FROM libros WHERE autor = 'Paenza'; 28 | 29 | SELECT * FROM libros; 30 | 31 | -- 7. Nuevamente, elimine los registros cuyo autor sea igual a 'Paenza'. (ningún registro afectado) 32 | DELETE FROM libros WHERE autor = 'Paenza'; 33 | 34 | -- 8. Borre los registros cuyo precio sea menor a 20.(<20): 35 | DELETE FROM libros WHERE precio < 20; 36 | 37 | SELECT * FROM libros; 38 | 39 | -- 9. Borre los registros que cuyo precio sea mayor o igual a 40 pesos. (>=): 40 | DELETE FROM libros WHERE precio >= 40; 41 | 42 | SELECT * FROM libros; 43 | 44 | -- 10. Elimine todos los registros de la tabla: 45 | DELETE FROM libros; 46 | 47 | SELECT * FROM libros; 48 | -------------------------------------------------------------------------------- /parte001/ex070_manipular_datos_tabla_articulos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine "articulos", si existe: 2 | DROP TABLE IF EXISTS articulos; 3 | 4 | -- 2. Cree la tabla, con la siguiente estructura: 5 | CREATE TABLE articulos( 6 | codigo INTEGER, 7 | nombre VARCHAR(20), 8 | descripcion VARCHAR(30), 9 | precio FLOAT, 10 | cantidad INTEGER 11 | ); 12 | 13 | -- 3. Vea la estructura de la tabla (describe). 14 | DESCRIBE articulos; 15 | 16 | -- 4. Ingrese algunos registros: 17 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 18 | VALUES (1,'impresora','Epson Stylus C45',400.80,20); 19 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 20 | VALUES (2,'impresora','Epson Stylus C85',500,30); 21 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 22 | VALUES (3,'monitor','Samsung 14',800,10); 23 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 24 | VALUES (4,'teclado','ingles Biswal',100,50); 25 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 26 | VALUES (5,'teclado','español Biswal',90,50); 27 | 28 | -- 5. Seleccione todos los registros de la tabla: 29 | SELECT * FROM articulos; 30 | 31 | -- 6. Elimine los artículos cuyo precio sea mayor o igual a 500: 32 | DELETE FROM articulos WHERE precio >= 500; 33 | 34 | SELECT * FROM articulos; 35 | 36 | -- 7. Elimine todas las impresoras: 37 | DELETE FROM articulos 38 | WHERE nombre = 'impresora'; 39 | 40 | SELECT * FROM articulos; 41 | 42 | -- 8. Elimine todos los artículos cuyo código sea diferente a 4: 43 | DELETE FROM articulos WHERE codigo <> 4; 44 | 45 | SELECT * FROM articulos; 46 | -------------------------------------------------------------------------------- /parte001/ex073_actualizar_registros_tabla_usuarios_update.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS usuarios; 2 | 3 | CREATE TABLE usuarios ( 4 | nombre VARCHAR(30), 5 | clave VARCHAR(10) 6 | ); 7 | 8 | INSERT INTO usuarios (nombre, clave) VALUES ('Leonardo','payaso'); 9 | INSERT INTO usuarios (nombre, clave) VALUES ('MarioPerez','Marito'); 10 | INSERT INTO usuarios (nombre, clave) VALUES ('Marcelo','River'); 11 | INSERT INTO usuarios (nombre, clave) VALUES ('Gustavo','River'); 12 | 13 | SELECT * FROM usuarios; 14 | 15 | UPDATE usuarios SET clave='RealMadrid'; 16 | 17 | SELECT nombre,clave FROM usuarios; 18 | 19 | UPDATE usuarios SET nombre='GustavoGarcia' 20 | WHERE nombre='Gustavo'; 21 | 22 | UPDATE usuarios SET nombre='MarceloDuarte', clave='Marce' 23 | WHERE nombre='Marcelo'; 24 | 25 | SELECT nombre,clave FROM usuarios; 26 | -------------------------------------------------------------------------------- /parte001/ex074_actualizar_registros_tabla_update.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS agenda; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE agenda ( 6 | apellido VARCHAR(30), 7 | nombre VARCHAR(20), 8 | domicilio VARCHAR(30), 9 | telefono VARCHAR(11) 10 | ); 11 | 12 | -- 3. Visualice la estructura de la tabla "agenda" (describe): 13 | DESCRIBE agenda; 14 | 15 | -- 4. Ingrese los siguientes registros (insert into): 16 | INSERT INTO agenda VALUES 17 | ('Mores', 'Alberto', 'Colon 123', '4234567'); 18 | INSERT INTO agenda VALUES 19 | ('Torres', 'Juan', 'Avellaneda 135', '4458787'); 20 | INSERT INTO agenda VALUES 21 | ('Lopez', 'Mariana', 'Urquiza 333', '4545454'); 22 | INSERT INTO agenda VALUES 23 | ('Lopez', 'Jose', 'Urquiza 333', '4545454'); 24 | INSERT INTO agenda VALUES 25 | ('Peralta', 'Susana', 'Gral. Paz 1234', '4123456'); 26 | 27 | SELECT * FROM agenda; 28 | 29 | -- 5. Modifique el registro cuyo nombre sea "Juan" por "Juan Jose"(update- where): 30 | UPDATE agenda SET nombre = 'Juan Jose' WHERE nombre = 'Juan'; 31 | 32 | SELECT * FROM agenda; 33 | 34 | -- 6. Actualice los registros cuyo número telefónico sea igual a '4545454' por '4445566': 35 | UPDATE agenda SET telefono = '4445566' WHERE telefono = '4545454'; 36 | 37 | SELECT * FROM agenda; 38 | 39 | -- 7. Actualice los registros que tengan en el campo "nombre" el valor "Juan" por "Juan Jose" 40 | -- (ningún registro afectado porque ninguno cumple con la condición del "where"): 41 | UPDATE agenda SET nombre = 'Juan Jose' WHERE nombre = 'Juan'; 42 | 43 | SELECT * FROM agenda; 44 | -------------------------------------------------------------------------------- /parte001/ex075_modificar_actualizar_registros_tabla_libros.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla: 2 | DROP TABLE IF EXISTS libros; 3 | 4 | -- 2. Créela con los siguientes campos: titulo (cadena de 20 caracteres de longitud), 5 | -- autor (cadena de 30), editorial (cadena de 15) y precio (float). 6 | CREATE TABLE libros ( 7 | titulo VARCHAR(20), 8 | autor VARCHAR(30), 9 | editorial VARCHAR(15), 10 | precio FLOAT 11 | ); 12 | 13 | -- 3. Visualice la estructura de la tabla "libros": 14 | DESCRIBE libros; 15 | 16 | -- 4. Ingrese los siguientes registros: 17 | INSERT INTO libros VALUES ('El aleph', 'Borges', 'Planeta', 15); 18 | INSERT INTO libros VALUES ('Martin Fierro', 'Jose Hernandez', 'Emece', 25.50); 19 | INSERT INTO libros VALUES ('Aprenda PHP', 'Mario Molina', 'Emece', 26.80); 20 | INSERT INTO libros VALUES ('Cervantes y el quijote', 'Borges', 'Paidos', 45.50); 21 | INSERT INTO libros VALUES ('Matematica estas ahi', 'Paenza', 'Paidos', 50.00); 22 | 23 | -- 5. Muestre todos los registros: 24 | SELECT * FROM libros; 25 | 26 | -- 6. Modifique los registros cuyo autor sea igual a "Paenza", por "Adrian Paenza". 27 | -- (1 registro afectado). 28 | UPDATE libros SET autor = 'Adrian Paenza' WHERE autor = 'Paenza'; 29 | 30 | SELECT * FROM libros; 31 | 32 | -- 7. Nuevamente, modifique los registros cuyo autor sea igual a "Paenza", 33 | -- por "Adrian Paenza". (ningún registro afectado). 34 | UPDATE libros SET autor = 'Adrian Paenza' WHERE autor = 'Paenza'; 35 | 36 | SELECT * FROM libros; 37 | 38 | -- 8. Actualice el precio del libro de "Mario Molina" a 27 pesos: 39 | UPDATE libros SET precio = 27 WHERE autor = 'Mario Molina'; 40 | 41 | SELECT * FROM libros; 42 | 43 | -- 9. Actualice el valor del campo "editorial" por "Emece S.A.", para todos los registros 44 | -- cuya editorial sea igual a "Emece": 45 | UPDATE libros SET editorial = 'Emece S.A.' WHERE editorial = 'Emece'; 46 | 47 | SELECT * FROM libros; 48 | -------------------------------------------------------------------------------- /parte001/ex076_cambiar_registros_tabla_articulos_comando_update.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine "articulos", si existe: 2 | DROP TABLE IF EXISTS articulos; 3 | 4 | -- 2. Cree la tabla, con la siguiente estructura: 5 | CREATE TABLE articulos( 6 | codigo INTEGER, 7 | nombre VARCHAR(20), 8 | descripcion VARCHAR(30), 9 | precio FLOAT, 10 | cantidad INTEGER 11 | ); 12 | 13 | -- 3. Vea la estructura de la tabla (describe). 14 | DESCRIBE articulos; 15 | 16 | -- 4. Ingrese algunos registros: 17 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 18 | VALUES (1,'impresora','Epson Stylus C45',400.80,20); 19 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 20 | VALUES (2,'impresora','Epson Stylus C85',500,30); 21 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 22 | VALUES (3,'monitor','Samsung 14',800,10); 23 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 24 | VALUES (4,'teclado','ingles Biswal',100,50); 25 | INSERT INTO articulos (codigo, nombre, descripcion, precio,cantidad) 26 | VALUES (5,'teclado','español Biswal',90,50); 27 | 28 | 29 | SELECT * FROM articulos; 30 | 31 | -- 5. Actualice el precio a "400" del artículo cuya descripción sea "Epson Stylus C45": 32 | UPDATE articulos SET precio = 400 33 | WHERE descripcion = 'Epson Style C45'; 34 | 35 | SELECT * FROM articulos; 36 | 37 | -- 6. Actualice la cantidad a 100 de todas los teclados: 38 | UPDATE articulos SET cantidad = 100 WHERE nombre = 'teclado'; 39 | 40 | SELECT * FROM articulos; 41 | 42 | -- 7. Actualice la cantidad a 50 y el precio a 550 del artículo con código 2: 43 | UPDATE articulos SET cantidad = 50, precio = 550 WHERE codigo = 2; 44 | 45 | SELECT * FROM articulos; 46 | 47 | -- 8. Actualice la cantidad a 100 de todos los registros con cantidad=1000 48 | -- (no hay registros que cumplan la condición, ningún registro afectado): 49 | UPDATE articulos SET cantidad = 100 50 | WHERE cantidad = 1000; 51 | 52 | SELECT * FROM articulos; 53 | -------------------------------------------------------------------------------- /parte001/ex081_usuarios_tabla_definicion_clave_primaria.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS usuarios; 2 | 3 | CREATE TABLE usuarios ( 4 | nombre VARCHAR(20), 5 | clave VARCHAR(10), 6 | PRIMARY KEY (nombre) 7 | ); 8 | 9 | describe usuarios; 10 | 11 | INSERT INTO usuarios (nombre, clave) VALUES ('Leonardo','payaso'); 12 | INSERT INTO usuarios (nombre, clave) VALUES ('MarioPerez','Marito'); 13 | INSERT INTO usuarios (nombre, clave) VALUES ('Marcelo','River'); 14 | INSERT INTO usuarios (nombre, clave) VALUES ('Gustavo','River'); 15 | 16 | INSERT INTO usuarios (nombre, clave) VALUES ('Gustavo','Boca'); 17 | -------------------------------------------------------------------------------- /parte001/ex082_libros_campo_codigo_llave_primaria.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla: 2 | DROP TABLE IF EXISTS libros; 3 | 4 | -- 2. Créela con los siguientes campos: titulo (cadena de 20 caracteres de longitud), 5 | -- autor (cadena de 30), editorial (cadena de 15) y precio (float). 6 | CREATE TABLE libros ( 7 | codigo INT, 8 | titulo VARCHAR(20), 9 | autor VARCHAR(30), 10 | editorial VARCHAR(15), 11 | precio FLOAT, 12 | PRIMARY KEY(codigo) 13 | ); 14 | 15 | -- 3. Visualice la estructura de la tabla "libros": 16 | DESCRIBE libros; 17 | 18 | -- 4. Ingrese los siguientes registros: 19 | INSERT INTO libros VALUES (1, 'El aleph', 'Borges', 'Planeta', 15); 20 | INSERT INTO libros VALUES (2, 'Martin Fierro', 'Jose Hernandez', 'Emece', 25.50); 21 | INSERT INTO libros VALUES (3, 'Aprenda PHP', 'Mario Molina', 'Emece', 26.80); 22 | INSERT INTO libros VALUES (4, 'Cervantes y el quijote', 'Borges', 'Paidos', 45.50); 23 | INSERT INTO libros VALUES (5, 'Matematica estas ahi', 'Paenza', 'Paidos', 50.00); 24 | 25 | -- 5. Muestre todos los registros: 26 | SELECT * FROM libros; 27 | 28 | -- 6. Ingrese un registro con código no repetido y nombre de autor repetido: 29 | INSERT INTO libros VALUES (6, 'Algebra para principiantes', 'Paenza', 'Paidos', 10); 30 | 31 | -- 7. Ingrese un registro con código no repetido y título y editorial repetidos: 32 | INSERT INTO libros VALUES (7, 'Matematica estas ahi', 'Paenza', 'Paidos', 10); 33 | 34 | -- 8. Intente ingresar un registro que repita el campo clave (aparece mensaje de error 35 | -- por clave repetida): 36 | INSERT INTO libros VALUES (7, 'Introduccion al calculo diferencial', 'Paenza', 'Paidos', 10); 37 | -------------------------------------------------------------------------------- /parte001/ex083_clientes_llave_primaria_documento.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla (drop table) si existe (if exists): 2 | DROP TABLE IF EXISTS clientes; 3 | 4 | -- 2. Cree la tabla con los siguientes campos: apellido (cadena de 30), nombre (cadena de 20), 5 | -- domicilio (cadena de 30) y telefono (cadena de 11): 6 | CREATE TABLE clientes ( 7 | documento VARCHAR(8) PRIMARY KEY, 8 | apellido VARCHAR(30), 9 | nombre VARCHAR(20), 10 | domicilio VARCHAR(30), 11 | telefono VARCHAR(11) 12 | ); 13 | 14 | -- 3. Visualice la estructura de la tabla "agenda" (describe): 15 | DESCRIBE clientes; 16 | 17 | -- 4. Ingrese los siguientes registros: 18 | INSERT INTO clientes (documento,apellido,nombre,domicilio, telefono) 19 | VALUES('22345678','Perez','Marcos','Colon 123','4545454'); 20 | INSERT INTO clientes (documento,apellido,nombre,domicilio, telefono) 21 | VALUES('23222222','Garcia','Ana','Avellaneda 1345','4252652'); 22 | INSERT INTO clientes (documento,apellido,nombre,domicilio, telefono) 23 | VALUES('20454545','Lopez','Susana','Urquiza 344','4522525'); 24 | INSERT INTO clientes (documento,apellido,nombre,domicilio, telefono) 25 | VALUES('35454545','Lopez','Susana','Urquiza 344','4522525'); 26 | 27 | -- 6. Ingrese un cliente con documento no repetido y apellido y nombre repetido: 28 | INSERT INTO clientes (documento,apellido,nombre,domicilio, telefono) 29 | VALUES('5646575','Perez','Marcos','Avenida 100','9546574'); 30 | 31 | -- 7. Ingrese un cliente con documento no repetido y domicilio repetido: 32 | INSERT INTO clientes (documento,apellido,nombre,domicilio, telefono) 33 | VALUES('5435468','Gomez','Juan','Carrera 100','6557565'); 34 | 35 | -- 8. Intente ingresar un registro con documento repetido (aparece mensaje de error por clave repetida): 36 | INSERT INTO clientes (documento,apellido,nombre,domicilio, telefono) 37 | VALUES('5435468','Gomez','Juan','Carrera 100','6557565'); 38 | -------------------------------------------------------------------------------- /parte001/ex084_alumnos_campo_legajo_llave_primaria.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "alumnos" si existe: 2 | DROP TABLE IF EXISTS alumnos; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE alumnos( 6 | legajo VARCHAR(4) NOT NULL, 7 | documento VARCHAR(8) NOT NULL, 8 | apellido VARCHAR(30), 9 | nombre VARCHAR(30), 10 | domicilio VARCHAR(30), 11 | PRIMARY KEY (legajo) 12 | ); 13 | 14 | -- 3. Ingrese los siguientes registros: 15 | INSERT INTO alumnos (legajo,documento,apellido,nombre,domicilio) 16 | VALUES('A233','22345345','Perez','Mariana','Colon 234'); 17 | INSERT INTO alumnos (legajo,documento,apellido,nombre,domicilio) 18 | VALUES('A567','23545345','Morales','Marcos','Avellaneda 348'); 19 | INSERT INTO alumnos (legajo,documento,apellido,nombre,domicilio) 20 | VALUES('B654','24356345','Gonzalez','Analia','Caseros 444'); 21 | INSERT INTO alumnos (legajo,documento,apellido,nombre,domicilio) 22 | VALUES('A642','20254125','Torres','Ramiro','Dinamarca 209'); 23 | INSERT INTO alumnos (legajo,documento,apellido,nombre,domicilio) 24 | VALUES('B509','20445778','Miranda','Carmen','Uspallata 999'); 25 | INSERT INTO alumnos (legajo,documento,apellido,nombre,domicilio) 26 | VALUES('C777','28111444','Figueroa','Natalia','Sarmiento 856'); 27 | 28 | -- 4. Seleccione todos los registros: 29 | SELECT * FROM alumnos; 30 | 31 | -- 5. Ingrese 2 alumnos con igual nombre y apellido pero distinto legajo: 32 | INSERT INTO alumnos (legajo,documento,apellido,nombre,domicilio) 33 | VALUES('C185','28111444','Figueroa','Natalia','Sarmiento 856'); 34 | INSERT INTO alumnos (legajo,documento,apellido,nombre,domicilio) 35 | VALUES('C951','28111444','Figueroa','Natalia','Sarmiento 856'); 36 | 37 | -- 6. Intente ingresar un registro que repita el campo clave ("legajo"). 38 | -- Aparece mensaje de error por clave repetida): 39 | INSERT INTO alumnos (legajo,documento,apellido,nombre,domicilio) 40 | VALUES('A642','6546578','Ortiz','Edward','Avenida 654'); 41 | -------------------------------------------------------------------------------- /parte001/ex089_libros_campo_auto_incremental_primary_key.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INTEGER auto_increment, 5 | titulo VARCHAR(50), 6 | autor VARCHAR(50), 7 | editorial VARCHAR(25), 8 | PRIMARY KEY (codigo) 9 | ); 10 | 11 | DESCRIBE libros; 12 | 13 | INSERT INTO libros (titulo,autor,editorial) 14 | VALUES('El aleph','Borges','Planeta'); 15 | 16 | SELECT * FROM libros libros; 17 | 18 | INSERT INTO libros (titulo,autor,editorial) 19 | VALUES('Martin Fierro','Jose Hernandez','Emece'); 20 | INSERT INTO libros (titulo,autor,editorial) 21 | VALUES('Aprenda PHP','Mario Molina','Emece'); 22 | INSERT INTO libros (titulo,autor,editorial) 23 | VALUES('Cervantes y el quijote','Borges','Paidos'); 24 | INSERT INTO libros (titulo,autor,editorial) 25 | VALUES('Matematica estas ahi', 'Paenza', 'Paidos'); 26 | 27 | SELECT codigo,titulo,autor,editorial FROM libros; 28 | 29 | INSERT INTO libros (codigo,titulo,autor,editorial) 30 | VALUES(6,'Martin Fierro','Jose Hernandez','Paidos'); 31 | 32 | INSERT INTO libros (codigo,titulo,autor,editorial) 33 | VALUES(2,'Martin Fierro','Jose Hernandez','Planeta'); 34 | 35 | INSERT INTO libros (codigo,titulo,autor,editorial) 36 | VALUES(15,'Harry Potter y la piedra filosofal','J.K. Rowling','Emece'); 37 | 38 | INSERT INTO libros (titulo,autor,editorial) 39 | VALUES('Harry Potter y la camara secreta','J.K. Rowling','Emece'); 40 | 41 | INSERT INTO libros (codigo,titulo,autor,editorial) 42 | VALUES(0,'Alicia en el pais de las maravillas','Lewis Carroll','Planeta'); 43 | 44 | INSERT INTO libros (codigo,titulo,autor,editorial) 45 | VALUES(-5,'Alicia a traves del espejo','Lewis Carroll','Planeta'); 46 | 47 | SELECT * FROM libros; 48 | -------------------------------------------------------------------------------- /parte001/ex090_medicamentos_campo_llave_auto_incremental.sql: -------------------------------------------------------------------------------- 1 | -- 1. 2 | DROP TABLE IF EXISTS medicamentos; 3 | 4 | -- 2. 5 | CREATE TABLE medicamentos( 6 | codigo INTEGER auto_increment, 7 | nombre VARCHAR(20), 8 | laboratorio VARCHAR(20), 9 | precio FLOAT, 10 | cantidad INTEGER, 11 | PRIMARY KEY (codigo) 12 | ); 13 | 14 | -- 3. 15 | DESCRIBE medicamentos; 16 | 17 | -- 4. Ingrese los siguientes registros (INSERT INTO): 18 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 19 | VALUES('Sertal','Roche',5.2,100); 20 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 21 | VALUES('Buscapina','Roche',4.10,200); 22 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 23 | VALUES('Amoxidal 500','Bayer',15.60,100); 24 | 25 | -- 5. Verifique que el campo "código" generó los valores de modo automático: 26 | SELECT * FROM medicamentos; 27 | 28 | -- 6. Intente ingresar un registro con un valor de clave primaria repetido: 29 | -- INSERT INTO medicamentos (codigo, nombre, laboratorio,precio,cantidad) 30 | -- VALUES(2, 'Amoxidal 500','Bayer',15.60,100); 31 | 32 | -- 7. Ingrese un registro con un valor de clave primaria no repetido salteando la secuencia: 33 | INSERT INTO medicamentos (codigo, nombre, laboratorio,precio,cantidad) 34 | VALUES(19, 'Iboprufeno','Bayer',8.60,30); 35 | 36 | -- 8. Ingrese el siguiente registro: 37 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 38 | VALUES('Bayaspirina','Bayer',2.10,150); 39 | 40 | SELECT * FROM medicamentos; 41 | -------------------------------------------------------------------------------- /parte001/ex095_libros_eliminar_registros_truncate_table.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INTEGER auto_increment, 5 | titulo VARCHAR(50), 6 | autor VARCHAR(50), 7 | editorial VARCHAR(25), 8 | PRIMARY KEY (codigo) 9 | ); 10 | 11 | INSERT INTO libros (titulo,autor,editorial) 12 | VALUES('Martin Fierro','Jose Hernandez','Planeta'); 13 | INSERT INTO libros (titulo,autor,editorial) 14 | VALUES('Aprenda PHP','Mario Molina','Emece'); 15 | INSERT INTO libros (titulo,autor,editorial) 16 | VALUES('Cervantes y el quijote','Borges','Paidos'); 17 | INSERT INTO libros (titulo,autor,editorial) 18 | VALUES('Matematica estas ahi', 'Paenza', 'Paidos'); 19 | INSERT INTO libros (titulo,autor,editorial) 20 | VALUES('El aleph', 'Borges', 'Emece'); 21 | 22 | DELETE FROM libros; 23 | 24 | SELECT * FROM libros; 25 | 26 | INSERT INTO libros (titulo,autor,editorial) 27 | VALUES('Antología poetica', 'Borges', 'Emece'); 28 | 29 | SELECT * FROM libros; 30 | 31 | TRUNCATE TABLE libros; 32 | 33 | INSERT INTO libros (titulo,autor,editorial) 34 | VALUES('Antología poetica', 'Borges', 'Emece'); 35 | 36 | SELECT * FROM libros; 37 | -------------------------------------------------------------------------------- /parte001/ex096_medicamentos_eliminar_registros.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS medicamentos; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE medicamentos( 6 | codigo INTEGER auto_increment, 7 | nombre VARCHAR(20), 8 | laboratorio VARCHAR(20), 9 | precio FLOAT, 10 | cantidad INTEGER, 11 | PRIMARY KEY (codigo) 12 | ); 13 | 14 | DESCRIBE medicamentos; 15 | 16 | -- 3. Ingrese los siguientes registros: 17 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 18 | VALUES('Sertal','Roche',5.2,100); 19 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 20 | VALUES('Buscapina','Roche',4.10,200); 21 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 22 | VALUES('Amoxidal 500','Bayer',15.60,100); 23 | 24 | SELECT * FROM medicamentos; 25 | 26 | -- 4. Elimine todos los registros con "delete": 27 | DELETE FROM medicamentos; 28 | 29 | SELECT * FROM medicamentos; 30 | 31 | -- 5. Ingrese 2 registros: 32 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 33 | VALUES('Sertal','Roche',5.2,100); 34 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 35 | VALUES('Amoxidal 500','Bayer',15.60,100); 36 | 37 | -- 6. Vea los registros para verificar que continuó la secuencia al generar el valor para "codigo": 38 | SELECT * FROM medicamentos; 39 | 40 | -- 7. Vacíe la tabla: 41 | TRUNCATE TABLE medicamentos; 42 | 43 | SELECT * FROM medicamentos; 44 | 45 | -- 8. Ingrese el siguiente registro: 46 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 47 | VALUES('Buscapina','Roche',4.10,200); 48 | 49 | -- 9. Vea los registros para verificar que al cargar el código reinició la secuencia en 1: 50 | SELECT * FROM medicamentos; 51 | -------------------------------------------------------------------------------- /parte001/ex097_peliculas_vaciar_contenido_tabla_truncate_table.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | CREATE TABLE peliculas( 6 | codigo INTEGER AUTO_INCREMENT, 7 | titulo VARCHAR(30), 8 | actor VARCHAR(20), 9 | duracion INTEGER, 10 | PRIMARY KEY (codigo) 11 | ); 12 | 13 | DESCRIBE peliculas; 14 | 15 | -- 3. Ingrese los siguientes registros: 16 | INSERT INTO peliculas (titulo,actor,duracion) 17 | VALUES('Mision imposible','Tom Cruise',120); 18 | INSERT INTO peliculas (titulo,actor,duracion) 19 | VALUES('Harry Potter y la piedra filosofal','xxx',180); 20 | INSERT INTO peliculas (titulo,actor,duracion) 21 | VALUES('Harry Potter y la camara secreta','xxx',190); 22 | INSERT INTO peliculas (titulo,actor,duracion) 23 | VALUES('Mision imposible 2','Tom Cruise',120); 24 | INSERT INTO peliculas (titulo,actor,duracion) 25 | VALUES('La vida es bella','zzz',220); 26 | 27 | -- 4. Seleccione todos los registros y verifique la carga automática de los códigos: 28 | SELECT * FROM peliculas; 29 | 30 | -- 5. Elimine todos los registros: 31 | DELETE FROM peliculas; 32 | 33 | SELECT * FROM peliculas; 34 | 35 | -- 6. Ingrese el siguiente registro, sin valor para la clave primaria: 36 | INSERT INTO peliculas (titulo,actor,duracion) 37 | VALUES('Mujer bonita','Richard Gere',120); 38 | 39 | -- 7. Vea los registros para verificar que al generar el valor para "codigo" continuó la secuencia: 40 | SELECT * FROM peliculas; 41 | 42 | -- 8. Elimine todos los registros vaciando la tabla: 43 | TRUNCATE TABLE peliculas; 44 | 45 | SELECT * FROM peliculas; 46 | 47 | -- 9. Ingrese el siguiente registro: 48 | INSERT INTO peliculas (titulo,actor,duracion) 49 | VALUES('Elsa y Fred','China Zorrilla',90); 50 | 51 | -- 10. Muestre el registro ingresado para verificar que inició la secuencia nuevamente para el 52 | -- campo "codigo": 53 | SELECT * FROM peliculas; 54 | -------------------------------------------------------------------------------- /parte001/ex103_libros_registros_con_campos_null.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INTEGER auto_increment, 5 | titulo VARCHAR(50) NOT NULL, 6 | autor VARCHAR(50), 7 | editorial VARCHAR(25), 8 | precio FLOAT, 9 | PRIMARY KEY(codigo) 10 | ); 11 | 12 | INSERT INTO libros (titulo,autor,editorial,precio) 13 | VALUES('El aleph','Borges','Planeta',NULL); 14 | 15 | INSERT INTO libros (titulo,autor,editorial,precio) 16 | VALUES ('Matematica estas ahi','Paenza','Paidos',0); 17 | INSERT INTO libros (titulo,autor,editorial,precio) 18 | VALUES ('Martin Fierro','Jose Hernandez','',22.50); 19 | 20 | INSERT INTO libros (titulo,autor,editorial,precio) 21 | VALUES ('Harry Potter y la piedra filosofal', 'J.K. Rowling',NULL,30.00); 22 | 23 | SELECT * FROM libros 24 | WHERE precio IS NULL; 25 | 26 | SELECT * FROM libros 27 | WHERE precio=0; 28 | 29 | 30 | SELECT * FROM libros 31 | WHERE editorial IS NULL; 32 | SELECT *FROM libros 33 | WHERE editorial=''; 34 | -------------------------------------------------------------------------------- /parte001/ex109_libros_atributo_unsigned_campos_numericos.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INTEGER UNSIGNED AUTO_INCREMENT, 5 | titulo VARCHAR(50) NOT NULL, 6 | autor VARCHAR(50), 7 | editorial VARCHAR(25), 8 | precio FLOAT UNSIGNED, 9 | cantidad INTEGER UNSIGNED, 10 | PRIMARY KEY (codigo) 11 | ); 12 | 13 | DESCRIBE libros; 14 | -------------------------------------------------------------------------------- /parte001/ex110_peliculas_campo_duracion_solo_positivos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 3. Créela con la siguiente estructura: 5 | CREATE TABLE peliculas( 6 | codigo INTEGER AUTO_INCREMENT, 7 | titulo VARCHAR(30) NOT NULL, 8 | actor VARCHAR(20), 9 | duracion INTEGER UNSIGNED, 10 | PRIMARY KEY (codigo) 11 | ); 12 | 13 | -- 4. Visualice la estructura de la tabla: 14 | DESCRIBE peliculas; 15 | -------------------------------------------------------------------------------- /parte001/ex111_visitantes_campos_monto_compra_edad_positivos_unsigned.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "visitantes", si existe: 2 | DROP TABLE IF EXISTS visitantes; 3 | 4 | -- 2. Cree la tabla y al definir los campos tenga en cuenta el rango de valores que almacenará cada 5 | -- campo: 6 | CREATE TABLE visitantes ( 7 | codigo INTEGER PRIMARY KEY AUTO_INCREMENT, 8 | nombre VARCHAR(30), 9 | edad INTEGER UNSIGNED, 10 | sexo VARCHAR(1), 11 | domicilio VARCHAR(30), 12 | ciudad VARCHAR(30), 13 | telefono VARCHAR(11), 14 | monto_compra FLOAT UNSIGNED 15 | ); 16 | 17 | -- 3. Visualice la estructura de la tabla: 18 | DESCRIBE visitantes; 19 | -------------------------------------------------------------------------------- /parte001/ex121_visitantes_campos_tipo_char_sexo.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS visitantes; 2 | 3 | CREATE TABLE visitantes( 4 | nombre VARCHAR(30), 5 | edad INTEGER1 unsigned, 6 | sexo CHAR(1), 7 | domicilio VARCHAR(30), 8 | ciudad VARCHAR(20), 9 | telefono VARCHAR(11), 10 | montocompra FLOAT unsigned 11 | ); 12 | 13 | describe visitantes; -------------------------------------------------------------------------------- /parte001/ex122_autos_tabla_concesionaria_campos_char.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "autos" si existe: 2 | DROP TABLE IF EXISTS autos; 3 | 4 | -- 2- Cree la tabla con la siguiente estructura: 5 | CREATE TABLE autos( 6 | patente CHAR(6), 7 | marca VARCHAR(20), 8 | modelo CHAR(4), 9 | precio FLOAT unsigned, 10 | PRIMARY KEY(patente) 11 | ); 12 | 13 | -- 3. Ingrese los siguientes registros: 14 | insert into autos (patente,marca,modelo,precio) 15 | values('ACD123','Fiat 128','1970',15000); 16 | insert into autos (patente,marca,modelo,precio) 17 | values('ACG234','Renault 11','1990',40000); 18 | insert into autos (patente,marca,modelo,precio) 19 | values('BCD333','Peugeot 505','1990',80000); 20 | insert into autos (patente,marca,modelo,precio) 21 | values('GCD123','Renault Clio','1990',70000); 22 | insert into autos (patente,marca,modelo,precio) 23 | values('BCC333','Renault Megane','1998',95000); 24 | insert into autos (patente,marca,modelo,precio) 25 | values('BVF543','Fiat 128','1975',20000); 26 | 27 | -- 4. Hemos definido el campo "patente" de tipo "CHAR" y no "VARCHAR" porque la cadena de caracteres 28 | -- siempre tendrá la misma longitud (6 caracteres), con esta definición ocupamos 6 bytes, si lo 29 | -- hubiésemos definido como "VARCHAR(6)" ocuparía 7 bytes. Lo mismo sucede con el campo "modelo", en 30 | -- el cual almacenaremos el año, necesitamos 4 caracteres fijos. Para el campo "precio" definimos un 31 | -- float sin signo porque los valores nunca serán negativos. 32 | 33 | -- 5. Seleccione todos los autos del año 1990: 34 | SELECT * FROM autos WHERE modelo = '1990'; 35 | 36 | -- 6. Seleccione todos los autos con precio superior a 50000: 37 | SELECT * FROM autos WHERE precio > 50000; 38 | -------------------------------------------------------------------------------- /parte001/ex123_clientes_campo_documento_char.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "clientes" si existe: 2 | DROP TABLE IF EXISTS clientes; 3 | 4 | -- 2. Créela con los siguientes campos y clave: 5 | CREATE TABLE clientes( 6 | documento CHAR(8), 7 | apellido VARCHAR(20), 8 | nombre VARCHAR(20), 9 | domicilio VARCHAR(30), 10 | telefono VARCHAR (11), 11 | PRIMARY KEY(documento) 12 | ); 13 | 14 | -- 3. Analice la definición de los campos. Se utiliza char(8) para el documento porque siempre 15 | -- constará de 8 caracteres. Para el número telefónico se usar "varchar" y no un tipo numérico porque 16 | -- si bien es un número, con él no se realizarán operaciones matemáticas. 17 | 18 | -- 4- Ingrese algunos registros: 19 | INSERT INTO clientes (documento,apellido,nombre,domicilio,telefono) 20 | VALUES('2233344','Perez','Juan','Sarmiento 980','4342345'); 21 | INSERT INTO clientes (documento,apellido,nombre,domicilio) 22 | VALUES('2333344','Perez','Ana','Colon 234'); 23 | INSERT INTO clientes (documento,apellido,nombre,domicilio,telefono) 24 | VALUES('2433344','Garcia','Luis','Avellaneda 1454','4558877'); 25 | INSERT INTO clientes (documento,apellido,nombre,domicilio,telefono) 26 | VALUES('2533344','Juarez','Ana','Urquiza 444','4789900'); 27 | 28 | -- 5. Seleccione todos los clientes de apellido 'Perez': 29 | SELECT * FROM clientes WHERE apellido = 'Perez'; 30 | 31 | -- 6. seleccione el apellido, domicilio y teléfono de todas las 'Ana': 32 | SELECT apellido, domicilio, telefono FROM clientes WHERE nombre = 'Ana'; -------------------------------------------------------------------------------- /parte001/ex128_libros_campos_enteros_smallint_reales_decimal.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT unsigned auto_increment, 5 | titulo VARCHAR(20) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | precio DECIMAL(5,2) unsigned, 9 | cantidad SMALLINT unsigned, 10 | PRIMARY KEY (codigo) 11 | ); 12 | 13 | describe libros; 14 | -------------------------------------------------------------------------------- /parte001/ex129_pedidos_pizzeria_smallint_tinyint_auto_increment.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "pedidos" si existe: 2 | DROP TABLE IF EXISTS pedidos; 3 | 4 | -- 2. Cree la tabla eligiendo el tipo de dato adecuado para cada campo: 5 | CREATE TABLE pedidos( 6 | numero TINYINT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(8) NOT NULL, 8 | tipo VARCHAR(16) NOT NULL, 9 | precio DECIMAL(4, 2) NOT NULL, 10 | cantidad TINYINT UNSIGNED NOT NULL, 11 | domicilio VARCHAR(32), 12 | PRIMARY KEY(numero) 13 | ); 14 | 15 | DESCRIBE pedidos; 16 | -------------------------------------------------------------------------------- /parte001/ex130_estadisticas_smallint_tinyint_campos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "estadisticas": 2 | DROP TABLE IF EXISTS estadisticas; 3 | 4 | -- 2. Cree la tabla eligiendo el tipo de dato adecuado para almacenar los datos descriptos arriba: 5 | -- - ciudad y país: cadena de caracteres, 6 | -- - temperaturas (máxima y mínima): entero desde -20 hasta 40 aprox. 7 | -- - precipitaciones media anual: desde 0 a 2000 aprox. 8 | CREATE TABLE estadisticas ( 9 | codigo INT AUTO_INCREMENT, 10 | ciudad VARCHAR(32) NOT NULL, 11 | pais VARCHAR(32) NOT NULL, 12 | minima TINYINT NOT NULL, 13 | maximo TINYINT NOT NULL, 14 | precipitaciones_media_anual SMALLINT UNSIGNED, 15 | PRIMARY KEY(codigo) 16 | ); 17 | 18 | DESCRIBE estadisticas; 19 | -------------------------------------------------------------------------------- /parte001/ex131_gases_temperatura_presion_criticas_double_precision.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "gases" si existe 2 | DROP TABLE IF EXISTS gases; 3 | 4 | -- 2. Cree la tabla eligiendo el tipo de dato adecuado para almacenar los datos descriptos arriba: 5 | -- - ciudad y país: cadena de caracteres, 6 | -- - temperaturas (máxima y mínima): entero desde -20 hasta 40 aprox. 7 | -- - precipitaciones media anual: desde 0 a 2000 aprox. 8 | CREATE TABLE gases( 9 | codigo INT AUTO_INCREMENT, 10 | gas VARCHAR(24) NOT NULL, 11 | temperatura_critica DOUBLE(6,2) NOT NULL, 12 | presion_critica DOUBLE(6,2) UNSIGNED NOT NULL, 13 | PRIMARY KEY(codigo) 14 | ); 15 | 16 | DESCRIBE gases; 17 | -------------------------------------------------------------------------------- /parte001/ex132_cuentas_banco_campos_double_varchar.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "cuentas" si existe: 2 | DROP TABLE IF EXISTS cuentas; 3 | 4 | -- 2. Cree la tabla eligiendo el tipo de dato adecuado para almacenar los datos descriptos arriba: 5 | -- - Número de cuenta: entero positivo, no nulo, 6 | -- - Documento del propietario de la cuenta: cadena de caracteres de 8 de longitud (siempre 8), no nulo 7 | -- - Nombre del propietario de la cuenta: cadena de caracteres, 8 | -- - Saldo de la cuenta: valores positivos y negativos altos: 9 | CREATE TABLE cuentas( 10 | numero_cuenta INT UNSIGNED PRIMARY KEY, 11 | documento_propietario VARCHAR(8) NOT NULL, 12 | nombre_propietario VARCHAR(48) NOT NULL, 13 | saldo DOUBLE NOT NULL 14 | ); 15 | 16 | DESCRIBE cuentas; 17 | -------------------------------------------------------------------------------- /parte001/ex138_vehiculos_parqueadero_campo_time.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS vehiculos; 2 | 3 | CREATE TABLE vehiculos( 4 | patente CHAR(6) NOT NULL, 5 | tipo CHAR (4), 6 | horallegada TIME NOT NULL, 7 | horasalida TIME 8 | ); 9 | 10 | INSERT INTO vehiculos (patente,tipo,horallegada) VALUES ('ACD123','auto','8:30'); 11 | INSERT INTO vehiculos (patente,tipo,horallegada) VALUES('BGF234','moto','8:35'); 12 | INSERT INTO vehiculos (patente,tipo,horallegada) VALUES('KIU467','auto','9:40'); 13 | 14 | SELECT * FROM vehiculos; 15 | 16 | UPDATE vehiculos SET horasalida='11:45' 17 | WHERE patente='ACD123'; 18 | 19 | INSERT INTO vehiculos VALUES('LIO987','auto','10',null); 20 | 21 | SELECT * FROM vehiculos; 22 | 23 | INSERT INTO vehiculos VALUES('GTR987','auto','1010',null); 24 | 25 | INSERT INTO vehiculos VALUES('HTR234','auto','2006-12-15 12:15',null); 26 | 27 | INSERT INTO vehiculos VALUES('KUY246','auto','12/15',null); 28 | 29 | SELECT * FROM vehiculos; 30 | -------------------------------------------------------------------------------- /parte001/ex139_autos_campo_modelo_auto_year.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS autos; 3 | 4 | -- 2. Cree la tabla eligiendo el tipo de dato adecuado para almacenar estos datos: 5 | CREATE TABLE autos( 6 | marca VARCHAR(15), 7 | modelo YEAR, 8 | dueno VARCHAR(30), 9 | precio DECIMAL (8,2) UNSIGNED 10 | ); 11 | 12 | -- 3. Ingrese los siguientes registros: 13 | INSERT INTO autos VALUES('Fiat 128','1970','Juan Lopez',50000); 14 | INSERT INTO autos VALUES('Renault 11','1990','Juan Lopez',80000); 15 | INSERT INTO autos VALUES('Fiat 128','1971','Ana Ferreyra',51000); 16 | INSERT INTO autos VALUES('Peugeot 505','1998','Luis Luque',99000); 17 | INSERT INTO autos VALUES('Peugeot 505','1997','Carola Perez',85000); 18 | 19 | -- 4. Seleccione todos los autos cuyo modelo sea menor a "1995": 20 | SELECT * FROM autos WHERE modelo < 1995; 21 | 22 | -- 5. Muestre la marca y modelo de los autos que no sean de "1970": 23 | SELECT * FROM autos WHERE modelo <> 1970; 24 | 25 | -- 6. Ingrese un auto con el valor para "modelo" de tipo numérico: 26 | INSERT INTO autos VALUES('Peugeot 505',1995,'Carlos Lopez',88000); 27 | 28 | SELECT * FROM autos; 29 | -------------------------------------------------------------------------------- /parte001/ex143_libros_campos_valores_por_defecto_default.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT unsigned auto_increment, 5 | titulo VARCHAR(20) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | precio DECIMAL(5,2) unsigned, 9 | cantidad mediumint unsigned NOT NULL, 10 | PRIMARY KEY(codigo) 11 | ); 12 | 13 | INSERT INTO libros (titulo,autor,precio) 14 | VALUES('El aleph','Borges',23.6); 15 | 16 | SELECT * FROM libros; 17 | 18 | INSERT INTO libros (autor,editorial,cantidad) 19 | VALUES('Borges','Planeta',100); 20 | 21 | SELECT * FROM libros; 22 | -------------------------------------------------------------------------------- /parte001/ex144_peliculas_valores_predeterminados_default_numeros_textos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | CREATE TABLE peliculas( 6 | codigo INT UNSIGNED AUTO_INCREMENT, 7 | titulo VARCHAR(30) NOT NULL, 8 | actor VARCHAR(20), 9 | duracion TINYINT UNSIGNED, 10 | PRIMARY KEY (codigo) 11 | ); 12 | 13 | DESCRIBE peliculas; 14 | 15 | -- 3. Agregue los siguientes registros para ver cómo guarda MySQL los valores no ingresados: 16 | INSERT INTO peliculas (titulo,actor,duracion) 17 | VALUES('Mision imposible','Tom Cruise',120); 18 | INSERT INTO peliculas (codigo,duracion) 19 | VALUES(5,90); 20 | INSERT INTO peliculas (titulo,actor) 21 | VALUES('Harry Potter y la piedra filosofal','Daniel R.'); 22 | INSERT INTO peliculas (titulo,actor,duracion) 23 | VALUES('Harry Potter y la piedra filosofal','Daniel R.',120); 24 | 25 | -- 4- Seleccione todos los datos de las películas para ver cómo guardó MySQL los valores no 26 | -- ingresados. En el primer registro ingresado, en el campo "codigo" ingresará "1", el primer valor 27 | -- para campos "auto_increment". En el segundo registro ingresado se almacena una cadena vacía para 28 | -- el título y el valor "null" para el actor. En el tercer registro guarda "6" en "codigo", el 29 | -- siguiente valor de la secuencia tomando el valor más alto y en "duracion" almacena "0". En el 30 | -- cuarto registro sigue la secuencia del código. 31 | -------------------------------------------------------------------------------- /parte001/ex145_empleados_campos_default_columnas.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS empleados; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE empleados( 6 | nombre VARCHAR(20), 7 | documento CHAR(8) NOT NULL, 8 | sexo CHAR(1), 9 | domicilio VARCHAR(30), 10 | fechaingreso DATE NOT NULL, 11 | fechanacimiento DATE, 12 | sueldo DECIMAL(5,2) unsigned NOT NULL 13 | ); 14 | 15 | DESCRIBE empleados; 16 | 17 | -- 3. Agregue los siguientes registros para ver cómo guarda MySQL los valores no ingresados: 18 | INSERT INTO empleados (nombre,documento,sexo) 19 | VALUES('Marcela Medina','22333444','f'); 20 | 21 | INSERT INTO empleados (domicilio,fechaingreso) 22 | VALUES('Avellaneda 200','2005-08-16'); 23 | 24 | INSERT INTO empleados (fechanacimiento,sueldo) 25 | VALUES('1970-09-26',500.90); 26 | 27 | -- 4- Seleccione todos los datos de los empleados para ver cómo guardó MySQL los valores no ingresados. 28 | -- En el primer registro ingresado, en los campos "domicilio" y "fechanacimiento" ingresará "null", 29 | -- porque ninguno de los campos están definidos como "NOT NULL"; en el campo "fechaingreso" 30 | -- almacena "000-00-00" ya que dicho campo no admite valores nulos; en el campo "sueldo" guarda "0.00" 31 | -- porque el campo no admite valores nulos. En el segundo registro ingresado se almacena "null" en los 32 | -- campos "nombre", "sexo" y "fechanacimiento" pues estos campos admiten valores "null"; en el 33 | -- campo "documento", que no admite valores nulos, se almacena una cadena vacía. En el tercer registro 34 | -- guarda "null" en los campos "nombre", "sexo" y "domicilio", ya que los permiten; en el 35 | -- campo "documento", almacena una cadena vacía. 36 | 37 | SELECT * FROM empleados; 38 | -------------------------------------------------------------------------------- /parte001/ex149_libros_insercion_registros_valore_invalidos.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT unsigned auto_increment, 5 | titulo VARCHAR(20) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | precio DECIMAL(5,2) unsigned, 9 | cantidad mediumint unsigned NOT NULL, 10 | PRIMARY KEY(codigo) 11 | ); 12 | 13 | INSERT INTO libros (titulo,autor,editorial,precio) 14 | VALUES ('Alicia en el pais de las maravillas',555,'Planeta',23.45); 15 | 16 | select * from libros; 17 | 18 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 19 | VALUES ('Matematica estas ahi','Paenza','Planeta','abc',20000000); 20 | 21 | select * from libros; 22 | 23 | INSERT INTO libros (titulo,editorial,precio) 24 | VALUES ('Alegoria','Planeta',3333.50); 25 | 26 | select * from libros; 27 | 28 | INSERT INTO libros (titulo,editorial,precio) 29 | VALUES ('Alegoria','Planeta',33.567); 30 | 31 | select * from libros; 32 | 33 | INSERT INTO libros (codigo,titulo) 34 | VALUES (2,'El gato con botas'); 35 | 36 | select * from libros; 37 | 38 | INSERT INTO libros (codigo,titulo) 39 | VALUES (0,'El gato con botas'); 40 | INSERT INTO libros (codigo,titulo) 41 | VALUES (-5,'Robin Hood'); 42 | 43 | select * from libros; 44 | 45 | INSERT INTO libros (codigo,titulo) 46 | VALUES (null,'Alicia a traves del espejo'); 47 | 48 | select * from libros; 49 | 50 | INSERT INTO libros (titulo,autor) 51 | VALUES (null,'Borges'); 52 | 53 | select * from libros; 54 | 55 | INSERT INTO libros (titulo,autor,cantidad) 56 | VALUES ('Antologia poetica','Borges',null); 57 | 58 | select * from libros; 59 | 60 | -------------------------------------------------------------------------------- /parte001/ex150_empleados_datos_invalidos_columnas_tabla.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "empleados" si existe: 2 | DROP TABLE IF EXISTS empleados; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE empleados( 6 | documento CHAR(8) NOT NULL, 7 | nombre VARCHAR(30) NOT NULL, 8 | domicilio VARCHAR(30), 9 | fechaingreso DATE NOT NULL, 10 | fechanacimiento DATE, 11 | PRIMARY KEY(documento) 12 | ); 13 | 14 | -- 3. Intente ingresar la fecha "20-10-2005" para la fecha de ingreso: 15 | INSERT INTO empleados (documento,fechaingreso,fechanacimiento) 16 | VALUES('22333444','20-10-2005',NULL); 17 | -- Se almacenan ceros. 18 | 19 | SELECT * FROM empleados; 20 | 21 | -- 5.. Intente almacenar "NULL" en "fechaingreso": 22 | -- INSERT INTO empleados (documento,fechaingreso,fechanacimiento) 23 | -- VALUES('22333444',NULL,'2005-10-10'); 24 | -- Muestra un mensaje de error. 25 | 26 | -- 6. Almacene un valor numérico en un campo de tipo caracter: 27 | INSERT INTO empleados VALUES ('9515456', 'Pedro', 123456789, '2021-03-17', NULL); 28 | 29 | SELECT * FROM empleados; 30 | 31 | -- 7. Almacene en "documento" el valor "22.345.678".: 32 | INSERT INTO empleados VALUES ('22.345.678', 'Laura', 'Avenida 30', '2021-03-17', '1983-04-04'); 33 | 34 | SELECT * FROM empleados; 35 | -------------------------------------------------------------------------------- /parte001/ex151_peliculas_campo_con_valores_invalidos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | CREATE TABLE peliculas ( 6 | codigo INT UNSIGNED AUTO_INCREMENT, 7 | titulo VARCHAR(15) NOT NULL, 8 | actor VARCHAR(20), 9 | duracion TINYINT UNSIGNED, 10 | PRIMARY KEY (codigo) 11 | ); 12 | 13 | DESCRIBE peliculas; 14 | 15 | -- 3. Ingrese el siguiente registro: 16 | INSERT INTO peliculas VALUES(-10,'Mision imposible','Tom Cruise',120); 17 | 18 | -- 4. Muestre los registros para ver qué valor se guardó en "codigo": 19 | SELECT * FROM peliculas; 20 | 21 | -- 5. Intente ingresar el siguiente registro (error por clave duplicada): 22 | -- INSERT INTO peliculas VALUES(1,'Mision imposible 2','Tom Cruise',120); 23 | 24 | -- 6. Intente ingresar el siguiente registro: 25 | INSERT INTO peliculas VALUES(NULL,'Mision imposible 2','Tom Cruise',120); 26 | 27 | -- 7. Muestre los registros para ver qué valor se guardó en "codigo": 28 | SELECT * FROM peliculas; 29 | 30 | -- 8. Intente ingresar el siguiente registro (no ingresa, el campo "título" no admite valores nulos): 31 | -- INSERT INTO peliculas VALUES(3,NULL,'Tom Cruise',120); 32 | 33 | SELECT * FROM peliculas; 34 | 35 | -- 9. Ingrese el siguiente registro: 36 | INSERT INTO peliculas VALUES(5,'Harry Potter y la camara secreta','Daniel R.',150); 37 | 38 | -- 10. Muestre los registros para ver qué se almacenó en "titulo" (cadena cortada): 39 | SELECT * FROM peliculas; 40 | 41 | -- 11. Ingrese el siguiente registro: 42 | INSERT INTO peliculas VALUES(10,'Elsa y Fred','China Zorrilla',12345); 43 | 44 | -- 12. Muestre los registros para ver qué se almacenó en "duración" (el valor límite permitido por el 45 | -- rango más cercano al ingresado). 46 | SELECT * FROM peliculas; 47 | -------------------------------------------------------------------------------- /parte001/ex157_libros_valores_por_defecto_con_atributo_DEFAULT.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED auto_increment, 5 | titulo VARCHAR(40) NOT NULL, 6 | editorial VARCHAR(15), 7 | autor VARCHAR(30) DEFAULT 'Desconocido', 8 | precio DECIMAL(5,2) UNSIGNED DEFAULT 1.11, 9 | cantidad MEDIUMINT UNSIGNED NOT NULL, 10 | PRIMARY KEY (codigo) 11 | ); 12 | 13 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 14 | values('Java en 10 minutos','Juan Pereyra','Paidos',25.7,100); 15 | 16 | INSERT INTO libros (autor,editorial,precio,cantidad) 17 | values('Juan Perez','Planeta',28.50,50); 18 | 19 | INSERT INTO libros (titulo,autor,precio,cantidad) 20 | values('Aprenda PHP','Alberto Lopez',55.40,150); 21 | 22 | INSERT INTO libros (titulo,editorial,precio,cantidad) 23 | values ('El gato con botas','Emece',15.6,150); 24 | 25 | INSERT INTO libros (titulo,autor,editorial,cantidad) 26 | values ('El aleph','Borges','Emece',200); 27 | 28 | INSERT INTO libros (titulo,autor,editorial,precio) 29 | values('Alicia a traves del espejo','Lewis Carroll', 'Emece',34.5); 30 | 31 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 32 | values ('El gato con botas',DEFAULT,'Planeta',DEFAULT,100); 33 | 34 | SELECT * FROM libros; 35 | -------------------------------------------------------------------------------- /parte001/ex158_pedidos_valores_por_defecto_DEFAULT.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "pedidos" si existe: 2 | DROP TABLE IF EXISTS pedidos; 3 | 4 | -- 2. Cree la tabla eligiendo el tipo de dato adecuado para cada campo 5 | CREATE TABLE pedidos ( 6 | numero INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 7 | nombre VARCHAR(32) NOT NULL DEFAULT 'empanada', 8 | tipo VARCHAR(24) NOT NULL, 9 | precio DECIMAL(4,2) UNSIGNED DEFAULT 1, 10 | cantidad MEDIUMINT UNSIGNED DEFAULT 12, 11 | domicilio VARCHAR(32) NOT NULL 12 | ); 13 | 14 | DESCRIBE pedidos; 15 | 16 | -- 3. Ingrese los siguientes registros: 17 | INSERT INTO pedidos (nombre,tipo,precio,cantidad,domicilio) 18 | VALUES('piza','muzarela','4.00',3,'Sarmiento 235'); 19 | INSERT INTO pedidos (tipo,precio,cantidad,domicilio) 20 | VALUES('arabe','1.00',24,'Urquiza 296'); 21 | INSERT INTO pedidos (nombre,tipo,domicilio) 22 | VALUES('empanada','salteña','Colon 309'); 23 | INSERT INTO pedidos (tipo,domicilio) 24 | VALUES('arabe','San Martin 444'); 25 | INSERT INTO pedidos (nombre,tipo,precio,domicilio) 26 | VALUES('piza','especial','4.00','Avellaneda 395'); 27 | 28 | -- 4. Muestre todos los campos de todos los pedidos para ver cómo se guardaron los datos no ingresados: 29 | SELECT * FROM pedidos; 30 | -------------------------------------------------------------------------------- /parte001/ex159_visitantes_columnas_con_valores_por_defecto.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "visitantes", si existe: 2 | DROP TABLE IF EXISTS visitantes; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | create table visitantes( 6 | nombre varchar(30) not null, 7 | edad tinyint unsigned, 8 | sexo char(1) default 'f', 9 | domicilio varchar(30), 10 | ciudad varchar(20) default 'Cordoba', 11 | telefono varchar(11), 12 | mail varchar(30) default 'no tiene', 13 | montocompra decimal (6,2) 14 | ); 15 | 16 | DESCRIBE visitantes; 17 | 18 | -- 4. Ingrese algunos registros sin especificar valores para algunos campos para ver cómo opera la 19 | -- cláusula "default": 20 | 21 | INSERT INTO visitantes (nombre, edad, domicilio, ciudad, telefono, mail, montocompra) 22 | VALUES ('Paula', 29, 'Caracas 123', 'Caracas', '32165412345', 'paula@mail.co', 123.23); 23 | 24 | INSERT INTO visitantes (nombre, edad, sexo, domicilio, ciudad, montocompra) 25 | VALUES ('Rodrigo', 31, 'm', 'Palermo 95', 'Palermo', 99.99); 26 | 27 | INSERT INTO visitantes (nombre, edad, sexo, domicilio, ciudad, telefono) 28 | VALUES ('Mónica', 43, DEFAULT, 'Madrid Av. Principal', 'Madrid', '32165485232'); 29 | 30 | -- 5. Muestre todos los registros: 31 | SELECT * FROM visitantes; -------------------------------------------------------------------------------- /parte001/ex160_prestamos_libros_columnas_valores_por_defecto.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "prestamos" si existe: 2 | DROP TABLE IF EXISTS prestamos; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE prestamos( 6 | titulo VARCHAR(40) NOT NULL, 7 | documento CHAR(8) NOT NULL, 8 | fechaprestamo DATE NOT NULL, 9 | fechadevolucion DATE, 10 | devuelto CHAR(1) DEFAULT 'n' 11 | ); 12 | 13 | DESCRIBE prestamos; 14 | 15 | -- 3. Ingrese algunos registros: 16 | INSERT INTO prestamos (titulo,documento,fechaprestamo,fechadevolucion) 17 | VALUES ('Manual de 1 grado','23456789','2006-08-10','2006-08-12'); 18 | INSERT INTO prestamos (titulo,documento,fechaprestamo,fechadevolucion) 19 | VALUES ('Alicia en el pais de las maravillas','23456789','2006-08-12','2006-08-14'); 20 | INSERT INTO prestamos (titulo,documento,fechaprestamo,fechadevolucion) 21 | VALUES ('El aleph','22543987','2006-08-15','2006-08-17'); 22 | INSERT INTO prestamos (titulo,documento,fechaprestamo,fechadevolucion) 23 | VALUES ('Manual de geografia 5 grado','25555666','2006-08-30','2006-09-01'); 24 | 25 | -- 4. Seleccione todos los registros para ver qué se guardó en el campo "devuelto" para el cual no 26 | -- ingresamos datos: 27 | SELECT * FROM prestamos; 28 | -------------------------------------------------------------------------------- /parte001/ex162_libros_uso_atributo_ZEROFILL_en_columnas.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT(6) ZEROFILL AUTO_INCREMENT, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | precio decimal(5,2) UNSIGNED, 9 | cantidad smallint ZEROFILL, 10 | primary key (codigo) 11 | ); 12 | 13 | DESCRIBE libros; 14 | 15 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 16 | VALUES('Martin Fierro','Jose Hernandez','Planeta',34.5,200); 17 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 18 | VALUES('Aprenda PHP','Mario Molina','Emece',45.7,50); 19 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 20 | VALUES('Cervantes y el quijote','Borges','Paidos',23,40); 21 | 22 | SELECT * FROM libros; 23 | 24 | INSERT INTO libros (codigo,titulo,autor,editorial,precio,cantidad) 25 | VALUES('545','El aleph', 'Borges', 'Emece',33,20); 26 | 27 | SELECT * FROM libros; 28 | 29 | INSERT INTO libros (codigo,titulo,autor,editorial,precio,cantidad) 30 | VALUES(-400,'Matematica estas ahi', 'Paenza', 'Paidos',15.2,-100); 31 | 32 | SELECT * FROM libros; 33 | 34 | 35 | -------------------------------------------------------------------------------- /parte001/ex163_cuentas_campo_autoincremental_con_atributo_ZEROFILL.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS cuentas; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE cuentas( 6 | numero INT(8) ZEROFILL AUTO_INCREMENT, 7 | documento CHAR(8) NOT NULL, 8 | nombre VARCHAR(30), 9 | saldo DECIMAL(9,2), 10 | PRIMARY KEY(numero) 11 | ); 12 | 13 | -- 3. Visualice la estructura de la tabla: 14 | DESCRIBE cuentas; 15 | -- note que en la columna que muestra el tipo aparece "zerofill" en el campo "numero". 16 | 17 | -- 4. Ingrese los siguientes registros: 18 | INSERT INTO cuentas (numero,documento,nombre,saldo) 19 | VALUES(1234,'22333444','Juan Perez',2000.60); 20 | INSERT INTO cuentas (numero,documento,nombre,saldo) 21 | VALUES(2566,'23333444','Maria Pereyra',5050); 22 | INSERT INTO cuentas (numero,documento,nombre,saldo) 23 | VALUES(5987,'24333444','Marcos Torres',200); 24 | INSERT INTO cuentas (numero,documento,nombre,saldo) 25 | VALUES(14434,'25333444','Ana Juarez',8000.60); 26 | 27 | -- 5 Vea cómo se guardaron los números de cuenta: 28 | SELECT * FROM cuentas; 29 | 30 | -- 6. Ingrese un valor negativo para el número de cuenta: 31 | INSERT INTO cuentas (numero,documento,nombre,saldo) 32 | VALUES(-1234,'27333444','Luis Duarte',2800); 33 | -- note que no lo toma y sigue la secuencia. 34 | 35 | SELECT * FROM cuentas; -------------------------------------------------------------------------------- /parte001/ex164_peliculas_registros_valores_invalidos_ZEROFILL.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | create table peliculas( 6 | codigo int(4) zerofill auto_increment, 7 | titulo varchar(30) not null, 8 | actor varchar(20), 9 | duracion tinyint zerofill default 90, 10 | primary key (codigo) 11 | ); 12 | 13 | -- 3. Vea la estructura de la tabla: 14 | DESCRIBE peliculas; 15 | -- note que el atributo "zerofill" aparece en los campos "codigo" y "duracion", en la columna que 16 | -- describe el tipo de cada dato. 17 | 18 | -- 4. Ingrese algunos registros. 19 | INSERT INTO peliculas (titulo, actor) VALUES ('The Matrix Resurrections', 'Keanu Reeves'); 20 | INSERT INTO peliculas (titulo, actor, duracion) VALUES ('La Virgen de los sicarios', 'Manuel Busquets', 98); 21 | 22 | -- 5. Ingrese un valor de código negativo: 23 | INSERT INTO peliculas (codigo, titulo, actor) VALUES (-2000, 'La vida es bella', 'Roberto Benigni'); 24 | 25 | -- 6. Ingrese un valor de duración negativo: 26 | INSERT INTO peliculas (titulo, actor, duracion) VALUES ('La lengua de las mariposas', 'Fernando Fernán Gómez', -100); 27 | 28 | SELECT * FROM peliculas; 29 | -------------------------------------------------------------------------------- /parte001/ex166_libros_columnas_calculadas_derivadas_total_producto.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED AUTO_INCREMENT, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | precio DECIMAL(5,2) UNSIGNED, 9 | cantidad SMALLINT UNSIGNED, 10 | PRIMARY KEY (codigo) 11 | ); 12 | 13 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 14 | VALUES('El aleph','Borges','Planeta',15,100); 15 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 16 | VALUES('Martin Fierro','Jose Hernandez','Emece',22.20,200); 17 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 18 | VALUES('Antologia poetica','Borges','Planeta',40,150); 19 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 20 | VALUES('Aprenda PHP','Mario Molina','Emece',18.20,200); 21 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 22 | VALUES('Cervantes y el quijote','Borges','Paidos',36.40,100); 23 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 24 | VALUES('Manual de PHP', 'J.C. Paez', 'Paidos',30.80,100); 25 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 26 | VALUES('Harry Potter y la piedra filosofal','J.K. Rowling','Paidos',45.00,500); 27 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 28 | VALUES('Harry Potter y la camara secreta','J.K. Rowling','Paidos',46.00,300); 29 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 30 | VALUES('Alicia en el pais de las maravillas','Lewis Carroll','Paidos',null,50); 31 | 32 | 33 | SELECT titulo, precio,cantidad,precio*cantidad 34 | FROM libros; 35 | 36 | SELECT titulo, precio,precio*0.1,precio-(precio*0.1) 37 | FROM libros; 38 | -------------------------------------------------------------------------------- /parte001/ex167_empleados_columna_computada_sueldo_final.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "empleados" si existe: 2 | DROP TABLE IF EXISTS empleados; 3 | 4 | -- 2. Cree una tabla llamada "empleados" con la estructura necesaria para almacenar la siguiente información: 5 | CREATE TABLE empleados ( 6 | nombre VARCHAR(32) NOT NULL, 7 | documento VARCHAR(10) NOT NULL PRIMARY KEY, 8 | sexo CHAR(1) NOT NULL DEFAULT 'f', 9 | domicilio VARCHAR(48), 10 | sueldobasico DECIMAL(6,2) UNSIGNED NOT NULL DEFAULT 1000, 11 | hijos TINYINT UNSIGNED NOT NULL DEFAULT 0 12 | ); 13 | 14 | -- 3. Ingrese algunos registros: 15 | INSERT INTO empleados (nombre,documento,sexo,sueldobasico,hijos) 16 | VALUES ('Juan Perez','22333444','m',300,1); 17 | INSERT INTO empleados (nombre,documento,sexo,sueldobasico,hijos) 18 | VALUES ('Ana Acosta','21333444','f',400,2); 19 | INSERT INTO empleados (nombre,documento,sexo,sueldobasico,hijos) 20 | VALUES ('Alberto Lopez','24333444','m',600,0); 21 | INSERT INTO empleados (nombre,documento,sexo,sueldobasico,hijos) 22 | VALUES ('Carlos Sanchez','30333444','m',550,3); 23 | INSERT INTO empleados (nombre,documento,sexo,sueldobasico,hijos) 24 | VALUES ('Mariana Torres','23444555','f',600,1); 25 | INSERT INTO empleados (nombre,documento,sexo,sueldobasico,hijos) 26 | VALUES ('Marcos Garcia','23664555','m',1500,2); 27 | 28 | -- 4. La empresa está pensando en aumentar un 10% el sueldo a los empleados, y quiere saber a cuánto 29 | -- subiría cada sueldo básico, para ello usamos la siguiente sentencia en la cual incluimos una 30 | -- columna que hará el cálculo de cada sueldo más el 10%: 31 | SELECT documento, nombre, sueldobasico, sueldobasico * 0.1, sueldobasico * 1.1 FROM empleados; 32 | 33 | -- 5. La empresa paga un salario familiar por hijos a cargo, $200 por cada hijo. Necesitamos el nombre 34 | -- del empleado, el sueldo básico, la cantidad de hijos a cargo, el total del salario familiar y el 35 | -- sueldo final (incluyendo el salario familiar): 36 | SELECT nombre, sueldobasico, hijos, hijos * 200 AS 'sueldo_familiar', sueldobasico + hijos * 200 AS 'sueldo_final' 37 | FROM empleados; -------------------------------------------------------------------------------- /parte001/ex168_articulos_precio_al_por_menor_mayor_columna_computada.sql: -------------------------------------------------------------------------------- 1 | -- 1. 2 | DROP TABLE IF EXISTS articulos; 3 | 4 | -- 2. 5 | CREATE TABLE articulos( 6 | codigo INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 7 | nombre VARCHAR(32) NOT NULL, 8 | precio DECIMAL(5,2) UNSIGNED NOT NULL DEFAULT 100, 9 | cantidad SMALLINT UNSIGNED NOT NULL DEFAULT 10 10 | ); 11 | 12 | -- 3. Ingrese los siguientes registros: 13 | INSERT INTO articulos (nombre,precio,cantidad) 14 | values ('lapices coloresx6',1.4,100); 15 | INSERT INTO articulos (nombre,precio,cantidad) 16 | values ('lapices coloresx12',2.5,100); 17 | INSERT INTO articulos (nombre,precio,cantidad) 18 | values ('lapices coloresx24',4.7,100); 19 | INSERT INTO articulos (nombre,precio,cantidad) 20 | values ('goma tinta',0.2,150); 21 | INSERT INTO articulos (nombre,precio,cantidad) 22 | values ('birome',1.2,200); 23 | INSERT INTO articulos (nombre,precio,cantidad) 24 | values ('escuadra',3.2,200); 25 | INSERT INTO articulos (nombre,precio,cantidad) 26 | values ('compás plástico',5,200); 27 | INSERT INTO articulos (nombre,precio,cantidad) 28 | values ('compás metal',8.4,250); 29 | 30 | -- 4. El precio representa el costo del artículo al comprarlo. Este comercio vende sus artículos por 31 | -- mayor y por menor, para la venta minorista incrementa el precio de costo en un 10%, para la venta 32 | -- mayorista lo incrementa en un 5%. Muestre los precios de cada artículo y calcule en 2 columnas 33 | -- diferentes el precio de cada uno de ellos al venderse por mayor y por menor: 34 | SELECT nombre, precio, precio * 1.1 AS 'precio_minorista', precio * 1.05 AS 'precio_mayorista' 35 | FROM articulos; 36 | 37 | -- 5. El gerente de dicho comercio necesita saber cuánto dinero hay invertido en cada artículo, para 38 | -- ello, necesitamos multiplicar el precio de cada artículo por la cantidad: 39 | SELECT nombre, precio, cantidad, precio * cantidad AS 'total' FROM articulos; -------------------------------------------------------------------------------- /parte001/ex176_libros_funciones_cadenas_caracteres_upper_lower.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED AUTO_INCREMENT, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | precio DECIMAL(5,2) UNSIGNED, 9 | cantidad SMALLINT UNSIGNED, 10 | PRIMARY KEY (codigo) 11 | ); 12 | 13 | INSERT INTO libros (titulo,autor,editorial,precio) 14 | VALUES('El alehp','Borges','Paidos',33.4); 15 | INSERT INTO libros (titulo,autor,editorial,precio) 16 | VALUES('Alicia en el pais de las maravillas','L. Carroll','Planeta',16); 17 | 18 | SELECT CONCAT_WS('-',titulo,autor) 19 | FROM libros; 20 | 21 | SELECT LEFT(titulo,15) 22 | FROM libros; 23 | 24 | SELECT titulo, INSERT(editorial,1,0,'edit. ') 25 | FROM libros; 26 | 27 | SELECT LOWER(titulo), UPPER(editorial) 28 | FROM libros; 29 | -------------------------------------------------------------------------------- /parte001/ex180_libros_funciones_redondear_precio.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED AUTO_INCREMENT, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | precio DECIMAL(5,2) UNSIGNED, 9 | cantidad SMALLINT UNSIGNED, 10 | PRIMARY KEY (codigo) 11 | ); 12 | 13 | INSERT INTO libros (titulo,autor,editorial,precio) 14 | VAUES('El alehp','Borges','Paidos',33.4); 15 | INSERT INTO libros (titulo,autor,editorial,precio) 16 | VAUES('Alicia en el pais de las maravillas','L. Carroll','Planeta',16.3); 17 | INSERT INTO libros (titulo,autor,editorial,precio) 18 | VAUES('Alicia a traves del espejo','L. Carroll','Planeta',18.8); 19 | 20 | SELECT titulo, CEILING(precio), FLOOR(precio) 21 | FROM libros; 22 | 23 | SELECT titulo, ROUND(precio) 24 | FROM libros; 25 | 26 | SELECT titulo, TRUNCATE(precio,1) 27 | FROM libros; 28 | 29 | -------------------------------------------------------------------------------- /parte001/ex185_prestamos_datos_funciones_fecha_hora.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS prestamos; 2 | 3 | CREATE TABLE prestamos( 4 | titulo VARCHAR(40) NOT NULL, 5 | documento CHAR(8) NOT NULL, 6 | fechaprestamo DATE NOT NULL, 7 | fechadevolucion DATE, 8 | devuelto CHAR(1) DEFAULT 'n' 9 | ); 10 | 11 | INSERT INTO prestamos (titulo,documento,fechaPrestamo,fechaDevolucion) 12 | VALUES ('Manual de 1 grado','23456789','2006-08-10',DATE_add('2006-08-10', interval 5 day)); 13 | 14 | SELECT * FROM prestamos; 15 | 16 | INSERT INTO prestamos (titulo,documento,fechaPrestamo,fechaDevolucion) 17 | VALUES ('Alicia en el pais de las maravillas','23456789', 18 | '2006-08-12',DATE_add('2006-08-12', interval 5 day)); 19 | INSERT INTO prestamos (titulo,documento,fechaPrestamo,fechaDevolucion) 20 | VALUES ('El aleph','22543987','2006-08-15',DATE_add('2006-08-15', interval 5 day)); 21 | INSERT INTO prestamos (titulo,documento,fechaPrestamo,fechaDevolucion) 22 | VALUES ('Manual de geografia 5 grado','25555666','2006-08-30', 23 | DATE_add('2006-08-30', interval 5 day)); 24 | 25 | SELECT * FROM prestamos; 26 | 27 | INSERT INTO prestamos (titulo,documento,fechaPrestamo,fechaDevolucion) 28 | VALUES ('Atlas universal','24000111',current_DATE,DATE_add(current_DATE, interval 5 day)); 29 | 30 | SELECT * FROM prestamos; 31 | -------------------------------------------------------------------------------- /parte001/ex187_alumnos_cantidad_agnios_actual_fecha.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "alumnos" si existe: 2 | DROP TABLE IF EXISTS alumnos; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE alumnos( 6 | documento CHAR(8) NOT NULL, 7 | nombre VARCHAR(30), 8 | domicilio VARCHAR(30), 9 | fechaNacimiento DATE, 10 | PRIMARY KEY (documento) 11 | ); 12 | 13 | -- 3. Ingrese los siguientes registros: 14 | INSERT INTO alumnos (documento,nombre,domicilio,fechaNacimiento) 15 | VALUES('22345345','Mariana Perez','Colon 234','1986-10-08'); 16 | INSERT INTO alumnos (documento,nombre,domicilio,fechaNacimiento) 17 | VALUES('23545345','Marcos Morales','Avellaneda 348','1985-12-18'); 18 | INSERT INTO alumnos (documento,nombre,domicilio,fechaNacimiento) 19 | VALUES('24356345','Analia Gonzalez','Caseros 444','1976-06-28'); 20 | INSERT INTO alumnos (documento,nombre,domicilio,fechaNacimiento) 21 | VALUES('20254125','Ramiro Torres','Dinamarca 209','1978-01-28'); 22 | INSERT INTO alumnos (documento,nombre,domicilio,fechaNacimiento) 23 | VALUES('20445778','Carmen Miranda','Uspallata 999','1980-05-30'); 24 | INSERT INTO alumnos (documento,nombre,domicilio,fechaNacimiento) 25 | VALUES('28111444','Natalia Figueroa','Sarmiento 856','1986-04-29'); 26 | 27 | -- 4. El institulo quiere conocer las edades de los alumnos: 28 | SELECT nombre, fechaNacimiento, CURRENT_DATE, YEAR(CURRENT_DATE) - YEAR(fechaNacimiento) AS 'edad' 29 | FROM alumnos; 30 | -------------------------------------------------------------------------------- /parte001/ex188_usuarios_insertar_registros_fecha_operaciones.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS usuarios; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE usuarios ( 6 | documento CHAR(8) NOT NULL PRIMARY KEY, 7 | monto_pagar DECIMAL(8,2) UNSIGNED NOT NULL, 8 | fecha_vencimiento DATE NOT NULL 9 | ); 10 | 11 | -- 3. Ingrese algunos registros con fechas de vencimiento anterior a la fecha actual (vencidas) y 12 | -- posteriores a la fecha actual (no vencidas). 13 | -- Fecha de referencia 2021/10/06: 14 | INSERT INTO usuarios VALUES ('10000001', 1000, '2021/09/10'); 15 | INSERT INTO usuarios VALUES ('10000002', 2000, '2021/09/11'); 16 | INSERT INTO usuarios VALUES ('10000003', 3000, '2021/09/12'); 17 | INSERT INTO usuarios VALUES ('10000004', 4000, '2021/10/10'); 18 | INSERT INTO usuarios VALUES ('10000005', 5000, '2021/10/11'); 19 | INSERT INTO usuarios VALUES ('10000006', 5000, '2021/10/12'); 20 | 21 | -- 4. Muestre el documento del usuario, la fecha de vencimiento, la fecha actual (en que efectúa el 22 | -- pago), el monto, la cantidad de días de atraso (respecto de la fecha de vencimiento), el recargo y 23 | -- el total a pagar con el recargo: 24 | SELECT documento, fecha_vencimiento, 25 | CURRENT_DATE 'fecha_actual', 26 | monto_pagar, 27 | DATEDIFF(fecha_vencimiento, CURRENT_DATE) 'dias_retraso', 28 | monto_pagar * 0.01 * DATEDIFF(fecha_vencimiento, CURRENT_DATE), 29 | monto_pagar + monto_pagar * 0.01 * DATEDIFF(fecha_vencimiento, CURRENT_DATE) 'total' 30 | FROM usuarios; 31 | -------------------------------------------------------------------------------- /parte001/ex189_visitas_gestion_tabla_datos_temporales.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "visitas", si existe: 2 | DROP TABLE IF EXISTS visitas; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | CREATE TABLE visitas ( 6 | numero int unsigned auto_increment PRIMARY KEY, 7 | nombre varchar(30) not null, 8 | mail varchar(50), 9 | pais varchar (20), 10 | fecha datetime 11 | ); 12 | 13 | -- 3. Ingrese algunos registros: 14 | insert into visitas (nombre,mail,fecha) 15 | values ('Ana Maria Lopez','AnaMaria@hotmail.com','2006-10-10 10:10'); 16 | insert into visitas (nombre,mail,fecha) 17 | values ('Gustavo Gonzalez','GustavoGGonzalez@hotmail.com','2006-10-10 21:30'); 18 | insert into visitas (nombre,mail,fecha) 19 | values ('Juancito','JuanJosePerez@hotmail.com','2006-10-11 15:45'); 20 | insert into visitas (nombre,mail,fecha) 21 | values ('Fabiola Martinez','MartinezFabiola@hotmail.com','2006-10-12 08:15'); 22 | insert into visitas (nombre,mail,fecha) 23 | values ('Fabiola Martinez','MartinezFabiola@hotmail.com','2006-09-12 20:45'); 24 | insert into visitas (nombre,mail,fecha) 25 | values ('Juancito','JuanJosePerez@hotmail.com','2006-09-12 16:20'); 26 | insert into visitas (nombre,mail,fecha) 27 | values ('Juancito','JuanJosePerez@hotmail.com','2006-09-15 16:25'); 28 | 29 | -- 4. Se necesita el nombre de los usuarios y la hora de visita: 30 | SELECT nombre, TIME(fecha) FROM visitas; 31 | 32 | -- 5. Se necesita conocer el nombre de los usuarios y el nombre del mes de cada visita: 33 | SELECT nombre, MONTH(fecha) FROM visitas; 34 | 35 | -- 6. Se necesita saber la cantidad de visitas por día (lunes, martes...), mostrando el nombre del día: 36 | SELECT DAYNAME(fecha), COUNT(*) 37 | FROM visitas 38 | GROUP BY DAYOFWEEK(fecha); 39 | -------------------------------------------------------------------------------- /parte001/ex191_libros_datos_ordenados_con_order_by.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT unsigned auto_increment, 5 | titulo VARCHAR(40), 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | precio DECIMAL (5,2) UNSIGNED, 9 | PRIMARY KEY (codigo) 10 | ); 11 | 12 | INSERT INTO libros (titulo,autor,editorial,precio) 13 | VALUES('El aleph','Borges','Planeta',15.50); 14 | INSERT INTO libros (titulo,autor,editorial,precio) 15 | VALUES('Martin Fierro','Jose Hernandez','Emece',22.90); 16 | INSERT INTO libros (titulo,autor,editorial,precio) 17 | VALUES('Martin Fierro','Jose Hernandez','Planeta',39); 18 | INSERT INTO libros (titulo,autor,editorial,precio) 19 | VALUES('Aprenda PHP','Mario Molina','Emece',19.50); 20 | INSERT INTO libros (titulo,autor,editorial,precio) 21 | VALUES('Cervantes y el quijote','Borges','Paidos',35.40); 22 | INSERT INTO libros (titulo,autor,editorial,precio) 23 | VALUES('Matematica estas ahi', 'Paenza', 'Paidos',19); 24 | 25 | SELECT codigo,titulo,autor,editorial,precio 26 | FROM libros 27 | ORDER BY titulo; 28 | 29 | SELECT codigo,titulo,autor,editorial,precio 30 | FROM libros 31 | ORDER BY 5; 32 | 33 | SELECT codigo,titulo,autor,editorial,precio 34 | FROM libros 35 | ORDER BY titulo, editorial; 36 | 37 | SELECT codigo,titulo,autor,editorial,precio 38 | FROM libros 39 | ORDER BY titulo ASC, editorial DESC; 40 | -------------------------------------------------------------------------------- /parte001/ex192_medicamentos_ordenar_registros_order_by.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS medicamentos; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE medicamentos( 6 | codigo INT unsigned auto_increment, 7 | nombre VARCHAR(20), 8 | laboratorio VARCHAR(20), 9 | precio DECIMAL(5,2), 10 | cantidad INT unsigned, 11 | PRIMARY KEY(codigo) 12 | ); 13 | 14 | -- 3. Visualice la estructura de la tabla "medicamentos": 15 | DESCRIBE medicamentos; 16 | 17 | -- 4. Ingrese los siguientes registros (INSERT INTO): 18 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 19 | VALUES('Sertal','Roche',5.2,100); 20 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 21 | VALUES('Buscapina','Roche',4.10,200); 22 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 23 | VALUES('Amoxidal 500','Bayer',15.60,100); 24 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 25 | VALUES('Paracetamol 500','Bago',1.90,200); 26 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 27 | VALUES('Bayaspirina','Bayer',2.10,150); 28 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 29 | VALUES('Amoxidal jarabe','Bayer',5.10,250); 30 | 31 | -- 5. Ordene los registros por precio, de mayor a menor: 32 | SELECT * FROM medicamentos ORDER BY precio DESC; 33 | 34 | -- 6. Ordene los medicamentos por número del campo "cantidad": 35 | SELECT * FROM medicamentos ORDER BY 5; 36 | 37 | -- 7. Ordene los registros por "laboratorio" (descendente) y cantidad (ascendente): 38 | SELECT * FROM medicamentos ORDER BY laboratorio DESC, cantidad ASC; 39 | -------------------------------------------------------------------------------- /parte001/ex193_peliculas_ordenar_registros_clausula_order_by.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | CREATE TABLE peliculas( 6 | codigo INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 7 | titulo VARCHAR(40) NOT NULL, 8 | actor VARCHAR(20) NOT NULL, 9 | duracion TINYINT UNSIGNED NOT NULL 10 | ); 11 | 12 | -- 3. Visualice la estructura de la tabla "peliculas": 13 | DESCRIBE peliculas; 14 | 15 | -- 4. Ingrese los siguientes registros: 16 | INSERT INTO peliculas (titulo,actor,duracion) 17 | VALUES('Mision imposible','Tom Cruise',120); 18 | INSERT INTO peliculas (titulo,actor,duracion) 19 | VALUES('Harry Potter y la piedra filosofal','Daniel R.',180); 20 | INSERT INTO peliculas (titulo,actor,duracion) 21 | VALUES('Harry Potter y la camara secreta','Daniel R.',190); 22 | INSERT INTO peliculas (titulo,actor,duracion) 23 | VALUES('Mision imposible 2','Tom Cruise',120); 24 | INSERT INTO peliculas (titulo,actor,duracion) 25 | VALUES('Mujer bonita','Richard Gere',120); 26 | INSERT INTO peliculas (titulo,actor,duracion) 27 | VALUES('Tootsie','D. Hoffman',90); 28 | INSERT INTO peliculas (titulo,actor,duracion) 29 | VALUES('Un oso rojo','Julio Chavez',100); 30 | 31 | -- 5. Ordene los registros por el campo "actor": 32 | SELECT * FROM peliculas ORDER BY actor; 33 | 34 | -- 6. Muestre las películas ordenadas por la duración, de mayor a menor: 35 | SELECT * FROM peliculas ORDER BY duracion DESC; 36 | -------------------------------------------------------------------------------- /parte001/ex194_visitas_ordenamiento_datos_order_by.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "visitas", si existe: 2 | DROP TABLE IF EXISTS visitas; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | CREATE TABLE visitas ( 6 | numero INT unsigned auto_increment, 7 | nombre VARCHAR(30) NOT NULL, 8 | mail VARCHAR(50), 9 | pais VARCHAR (20), 10 | fecha DATE, 11 | PRIMARY KEY(numero) 12 | ); 13 | 14 | -- 3. Ingrese algunos registros: 15 | INSERT INTO visitas (nombre,mail,fecha) 16 | VALUES ('Ana Maria Lopez','AnaMaria@hotmail.com','2006-10-10'); 17 | INSERT INTO visitas (nombre,mail,fecha) 18 | VALUES ('Gustavo Gonzalez','GustavoGGonzalez@hotmail.com','2006-10-10'); 19 | INSERT INTO visitas (nombre,mail,fecha) 20 | VALUES ('Juancito','JuanJosePerez@hotmail.com','2006-10-11'); 21 | INSERT INTO visitas (nombre,mail,fecha) 22 | VALUES ('Fabiola Martinez','MartinezFabiola@hotmail.com','2006-10-12'); 23 | INSERT INTO visitas (nombre,mail,fecha) 24 | VALUES ('Fabiola Martinez','MartinezFabiola@hotmail.com','2006-09-12'); 25 | INSERT INTO visitas (nombre,mail,fecha) 26 | VALUES ('Juancito','JuanJosePerez@hotmail.com','2006-09-12'); 27 | INSERT INTO visitas (nombre,mail,fecha) 28 | VALUES ('Juancito','JuanJosePerez@hotmail.com','2006-09-15'); 29 | 30 | -- 4. Ordene los rergistros por fecha, en orden descendente: 31 | SELECT * FROM visitas ORDER BY fecha DESC; 32 | 33 | -- 5. Ordene por nombre en forma ascendente y fecha en orden descendente: 34 | SELECT * FROM visitas ORDER BY nombre ASC, fecha DESC; 35 | -------------------------------------------------------------------------------- /parte001/ex197_libros_comprando_uso_operadores_logicos.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXSITS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT unsigned auto_increment, 5 | titulo VARCHAR(40), 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | precio DECIMAL(5,2), 9 | PRIMARY KEY(codigo) 10 | ); 11 | 12 | INSERT INTO libros (titulo,autor,editorial,precio) 13 | VALUES('El aleph','Borges','Planeta',15.50); 14 | INSERT INTO libros (titulo,autor,editorial,precio) 15 | VALUES('Martin Fierro','Jose Hernandez','Emece',22.90); 16 | INSERT INTO libros (titulo,autor,editorial,precio) 17 | VALUES('Martin Fierro','Jose Hernandez','Planeta',39); 18 | INSERT INTO libros (titulo,autor,editorial,precio) 19 | VALUES('Aprenda PHP','Mario Molina','Emece',19.50); 20 | INSERT INTO libros (titulo,autor,editorial,precio) 21 | VALUES('Cervantes y el quijote','Borges','Paidos',35.40); 22 | INSERT INTO libros (titulo,autor,editorial,precio) 23 | VALUES('Matematica estas ahi', 'Paenza', 'Paidos',19); 24 | 25 | 26 | SELECT * FROM libros 27 | WHERE autor='Borges' AND 28 | precio<=20; 29 | 30 | SELECT * FROM libros 31 | WHERE autor='Paenza' OR 32 | editorial='Planeta'; 33 | 34 | 35 | SELECT * FROM libros 36 | WHERE (autor='Borges') XOR 37 | (editorial='Planeta'); 38 | 39 | SELECT * FROM libros 40 | WHERE not (editorial='Planeta'); 41 | 42 | SELECT * FROM libros 43 | WHERE (autor='Borges') OR 44 | (editorial='Paidos' AND precio<20); 45 | 46 | SELECT * FROM libros 47 | WHERE (autor='Borges' OR editorial='Paidos') 48 | AND (precio<20); 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /parte001/ex199_peliculas_leer_actualizar_eliminar_registros_operadores_logicos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | CREATE TABLE peliculas ( 6 | codigo INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 7 | titulo VARCHAR(30) NOT NULL, 8 | actor VARCHAR(20) NOT NULL, 9 | duracion TINYINT UNSIGNED NOT NULL 10 | ); 11 | 12 | -- 3. Ingrese los siguientes registros: 13 | INSERT INTO peliculas (titulo,actor,duracion) 14 | VALUES('Mision imposible','Tom Cruise',120); 15 | INSERT INTO peliculas (titulo,actor,duracion) 16 | VALUES('Harry Potter y la piedra filosofal','Daniel R.',180); 17 | INSERT INTO peliculas (titulo,actor,duracion) 18 | VALUES('Harry Potter y la camara secreta','Daniel R.',190); 19 | INSERT INTO peliculas (titulo,actor,duracion) 20 | VALUES('Mision imposible 2','Tom Cruise',120); 21 | INSERT INTO peliculas (titulo,actor,duracion) 22 | VALUES('Mujer bonita','Richard Gere',120); 23 | INSERT INTO peliculas (titulo,actor,duracion) 24 | VALUES('Tootsie','D. Hoffman',90); 25 | INSERT INTO peliculas (titulo,actor,duracion) 26 | VALUES('Un oso rojo','Julio Chavez',100); 27 | INSERT INTO peliculas (titulo,actor,duracion) 28 | VALUES('Elsa y Fred','China Zorrilla',110); 29 | 30 | 31 | -- 4. Recupere los registros cuyo actor sea "Tom Cruise" or "Richard Gere". (3 registros): 32 | SELECT * FROM peliculas WHERE actor = 'Tom Cruise' OR actor = 'Richard Gere'; 33 | 34 | -- 5. Recupere los registros cuyo actor sea "Tom Cruise" y "Richard Gere": 35 | SELECT * FROM peliculas WHERE actor = 'Tom Cruise' AND actor = 'Richard Gere'; 36 | 37 | -- 6. Cambie la duración a 200, de las películas cuyo actor sea "Daniel R." y cuya duración sea 180. 38 | -- (1 registro afectado): 39 | UPDATE peliculas SET duracion = 200 WHERE actor = 'Daniel R.' AND duracion = 180; 40 | 41 | -- 8. Borre todas las películas donde el actor NO sea "Tom Cruise" y cuya duración sea mayor o igual a 42 | -- 100: 43 | DELETE FROM peliculas WHERE NOT (actor = 'Tom Cruise') AND duracion >= 100; 44 | -------------------------------------------------------------------------------- /parte001/ex200_visitas_seleccionar_eliminar_operadores_logicos_registros.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "visitas", si existe: 2 | DROP TABLE IF EXISTS visitas; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | CREATE TABLE visitas ( 6 | numero INT unsigned auto_increment, 7 | nombre VARCHAR(30) NOT NULL, 8 | mail VARCHAR(50), 9 | pais VARCHAR (20), 10 | fecha DATE, 11 | PRIMARY KEY(numero) 12 | ); 13 | 14 | -- 3. Ingrese algunos registros: 15 | INSERT INTO visitas (nombre,mail,pais,fecha) 16 | VALUES ('Ana Maria Lopez','AnaMaria@hotmail.com','Argentina','2006-10-10 10:10'); 17 | INSERT INTO visitas (nombre,mail,pais,fecha) 18 | VALUES ('Gustavo Gonzalez','GustavoGGonzalez@hotmail.com','Chile','2006-10-10 21:30'); 19 | INSERT INTO visitas (nombre,mail,pais,fecha) 20 | VALUES ('Juancito','JuanJosePerez@hotmail.com','Argentina','2006-10-11 15:45'); 21 | INSERT INTO visitas (nombre,mail,pais,fecha) 22 | VALUES ('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico','2006-10-12 08:15'); 23 | INSERT INTO visitas (nombre,mail,pais,fecha) 24 | VALUES ('Fabiola Martinez','MartinezFabiola@hotmail.com','Mexico','2006-09-12 20:45'); 25 | INSERT INTO visitas (nombre,mail,pais,fecha) 26 | VALUES ('Juancito','JuanJosePerez@hotmail.com','Argentina','2006-09-12 16:20'); 27 | INSERT INTO visitas (nombre,mail,pais,fecha) 28 | VALUES ('Juancito','JuanJosePerez@hotmail.com','Argentina','2006-09-15 16:25'); 29 | 30 | -- 4. Muestre los datos de las visitas de "Argentina" que hayan ingresado después del mes de 31 | -- septiembre (9): 32 | SELECT * FROM visitas WHERE pais = 'Argentina' AND MONTH(fecha) > 9; 33 | 34 | -- 5. Elimine todos los registros cuyo pais no sea "Mexico" y que hayan visitado la página antes de 35 | -- las 16 hs.: 36 | DELETE FROM visitas WHERE NOT (pais = 'Mexico') AND HOUR(fecha) < 16; 37 | -------------------------------------------------------------------------------- /parte001/ex203_libros_uso_operadores_between_in.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXSITS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT unsigned auto_increment, 5 | titulo VARCHAR(40), 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | precio DECIMAL(5,2), 9 | PRIMARY KEY(codigo) 10 | ); 11 | 12 | INSERT INTO libros (titulo,autor,editorial,precio) 13 | VALUES('El aleph','Borges','Planeta',15.50); 14 | INSERT INTO libros (titulo,autor,editorial,precio) 15 | VALUES('Martin Fierro','Jose HernANDez','Emece',22.90); 16 | INSERT INTO libros (titulo,autor,editorial,precio) 17 | VALUES('Martin Fierro','Jose HernANDez','Planeta',39); 18 | INSERT INTO libros (titulo,autor,editorial,precio) 19 | VALUES('Aprenda PHP','Mario Molina','Emece',19.50); 20 | INSERT INTO libros (titulo,autor,editorial,precio) 21 | VALUES('Cervantes y el quijote','Borges','Paidos',35.40); 22 | INSERT INTO libros (titulo,autor,editorial,precio) 23 | VALUES('Matematica estas ahi', 'Paenza', 'Paidos',19); 24 | 25 | SELECT * FROM libros 26 | WHERE precio>=20 AND 27 | precio<=40; 28 | 29 | SELECT * FROM libros 30 | WHERE precio BETWEEN 20 AND 40; 31 | 32 | SELECT * FROM libros 33 | WHERE autor='Borges' or 34 | autor='Paenza'; 35 | 36 | SELECT * FROM libros 37 | WHERE autor in('Borges','Paenza'); 38 | 39 | SELECT * FROM libros 40 | WHERE autor<>'Borges' AND 41 | autor<>'Paenza'; 42 | 43 | SELECT * FROM libros 44 | WHERE autor not in ('Borges','Paenza'); 45 | -------------------------------------------------------------------------------- /parte001/ex204_medicamentos_seleccionar_por_rango_precios_between.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS medicamentos; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE medicamentos( 6 | codigo INT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(20), 8 | laboratorio VARCHAR(20), 9 | precio DECIMAL(5,2), 10 | cantidad INT UNSIGNED, 11 | PRIMARY KEY(codigo) 12 | ); 13 | 14 | -- 3. Visualice la estructura de la tabla "medicamentos": 15 | DESCRIBE medicamentos; 16 | 17 | -- 4. Ingrese los siguientes registros (INSERT INTO): 18 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 19 | VALUES('Sertal','Roche',5.2,100); 20 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 21 | VALUES('Buscapina','Roche',4.10,200); 22 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 23 | VALUES('Amoxidal 500','Bayer',15.60,100); 24 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 25 | VALUES('Paracetamol 500','Bago',1.90,200); 26 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 27 | VALUES('Bayaspirina','Bayer',2.10,150); 28 | INSERT INTO medicamentos (nombre, laboratorio,precio,cantidad) 29 | VALUES('Amoxidal jarabe','Bayer',5.10,250); 30 | 31 | -- 5. Recupere los nombres y precios de los medicamentos cuyo precio esté entre 5 y 15: 32 | SELECT nombre, precio FROM medicamentos WHERE precio BETWEEN 5 AND 15; 33 | 34 | -- 6. Seleccione los registros cuyo laboratorio sea "Bayer" o "Bago": 35 | SELECT * FROM medicamentos WHERE laboratorio IN ('Bayer', 'Bago'); 36 | 37 | -- 7. Elimine los registros cuya cantidad esté entre 100 y 200: 38 | DELETE FROM medicamentos WHERE cantidad BETWEEN 100 AND 200; 39 | -------------------------------------------------------------------------------- /parte001/ex205_autos_consulta_usando_between_in.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "autos" si existe: 2 | DROP TABLE IF EXISTS autos; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE autos( 6 | patente CHAR(6), 7 | marca VARCHAR(20), 8 | modelo CHAR(4), 9 | precio DECIMAL(8,2) unsigned, 10 | PRIMARY KEY(patente) 11 | ); 12 | 13 | 14 | -- 3. Ingrese los siguientes registros: 15 | INSERT INTO autos(patente,marca,modelo,precio) 16 | VALUES('ACD123','Fiat 128','1970',15000); 17 | INSERT INTO autos(patente,marca,modelo,precio) 18 | VALUES('ACG234','Renault 11','1990',40000); 19 | INSERT INTO autos(patente,marca,modelo,precio) 20 | VALUES('BCD333','Peugeot 505','1990',80000); 21 | INSERT INTO autos(patente,marca,modelo,precio) 22 | VALUES('GCD123','Renault Clio','1990',70000); 23 | INSERT INTO autos(patente,marca,modelo,precio) 24 | VALUES('BCC333','Renault Megane','1998',95000); 25 | INSERT INTO autos(patente,marca,modelo,precio) 26 | VALUES('BVF543','Fiat 128','1975',20000); 27 | 28 | SELECT * FROM autos; 29 | 30 | -- 4. Seleccione todos los autos cuyo año sea '1970' o '1975' usando el operador "in": 31 | SELECT * FROM autos WHERE modelo IN ('1970', '1975'); 32 | 33 | -- 5. Seleccione todos los autos cuyo precio esté entre 50000 y 100000: 34 | SELECT * FROM autos WHERE precio BETWEEN 50000 AND 100000; 35 | -------------------------------------------------------------------------------- /parte001/ex209_libros_operador_not_like_like_texto_comodin.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT unsigned AUTO_INCREMENT, 5 | titulo VARCHAR(40), 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | precio DECIMAL(5,2), 9 | PRIMARY KEY(codigo) 10 | ); 11 | 12 | INSERT INTO libros (titulo,autor,editorial,precio) 13 | VALUES('El aleph','Borges','Planeta',15.50); 14 | INSERT INTO libros (titulo,autor,editorial,precio) 15 | VALUES('Martin Fierro','Jose Hernandez','Emece',22.90); 16 | INSERT INTO libros (titulo,autor,editorial,precio) 17 | VALUES('Antologia poetica','J.L. Borges','Planeta',39); 18 | INSERT INTO libros (titulo,autor,editorial,precio) 19 | VALUES('Aprenda PHP','Mario Molina','Emece',19.50); 20 | INSERT INTO libros (titulo,autor,editorial,precio) 21 | VALUES('Cervantes y el quijote','Bioy Casare- J.L. Borges','Paidos',35.40); 22 | INSERT INTO libros (titulo,autor,editorial,precio) 23 | VALUES('Manual de PHP', 'J.C. Paez', 'Paidos',19); 24 | INSERT INTO libros (titulo,autor,editorial,precio) 25 | VALUES('Harry Potter y la piedra filosofal','J.K. Rowling','Paidos',45.00); 26 | INSERT INTO libros (titulo,autor,editorial,precio) 27 | VALUES('Harry Potter y la camara secreta','J.K. Rowling','Paidos',46.00); 28 | INSERT INTO libros (titulo,autor,editorial,precio) 29 | VALUES('Alicia en el pais de las maravillas','Lewis Carroll','Paidos',36.00); 30 | 31 | SELECT * FROM libros 32 | WHERE autor='Borges'; 33 | 34 | SELECT * FROM libros 35 | WHERE autor LIKE '%Borges%'; 36 | 37 | SELECT * FROM libros 38 | WHERE titulo LIKE 'A%'; 39 | 40 | SELECT * FROM libros 41 | WHERE titulo NOT LIKE 'A%'; 42 | 43 | SELECT * FROM libros 44 | WHERE autor LIKE '%Carrol_'; 45 | 46 | SELECT * FROM libros 47 | WHERE titulo LIKE '%Harry Potter%'; 48 | 49 | SELECT * FROM libros 50 | WHERE titulo LIKE '%PHP%'; 51 | -------------------------------------------------------------------------------- /parte001/ex212_usuarios_seleccionar_registros_con_like.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS usuarios; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | 6 | CREATE TABLE usuarios( 7 | nombre VARCHAR(20), 8 | clave VARCHAR(10), 9 | PRIMARY KEY(clave)); 10 | 11 | -- 3. Visualice la estructura de la tabla "usuarios": 12 | DESCRIBE usuarios; 13 | 14 | -- 4. Ingrese los siguientes registros: 15 | INSERT INTO usuarios (nombre, clave) VALUES ('Leonardo','payaso'); 16 | INSERT INTO usuarios (nombre, clave) VALUES ('MarioPerez','Marito'); 17 | INSERT INTO usuarios (nombre, clave) VALUES ('Marcelo','River'); 18 | INSERT INTO usuarios (nombre, clave) VALUES ('Gustavo','Boca'); 19 | INSERT INTO usuarios (nombre, clave) VALUES ('MarcosMercado','RealMadrid'); 20 | INSERT INTO usuarios (nombre, clave) VALUES ('Susana','chapita'); 21 | INSERT INTO usuarios (nombre, clave) VALUES ('Gonzalo','Z80'); 22 | INSERT INTO usuarios (nombre, clave) VALUES ('GustavoPereyra','RealMadryd'); 23 | 24 | -- 5. Busque los registros cuya clave contenga sólo 5 letras: 25 | SELECT * FROM usuarios 26 | WHERE clave LIKE '_____'; 27 | 28 | -- 6. Busque los registros cuyo nombre de usuario termine con "o": 29 | SELECT * FROM usuarios 30 | WHERE nombre LIKE '%n'; 31 | -------------------------------------------------------------------------------- /parte001/ex217_articulos_seleccionar_registros_operador_regexp.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine "articulos", si existe: 2 | DROP TABLE IF EXISTS articulos; 3 | 4 | -- 2. Cree la tabla, con la siguiente estructura: 5 | CREATE TABLE articulos( 6 | codigo INT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(25) NOT NULL, 8 | descripcion VARCHAR(30), 9 | precio DECIMAL(6,2) UNSIGNED, 10 | cantidad TINYINT UNSIGNED, 11 | PRIMARY KEY(codigo) 12 | ); 13 | 14 | -- 3. Ingrese algunos registros: 15 | INSERT INTO articulos (nombre, descripcion, precio,cantidad) 16 | VALUES ('impresora','Epson Stylus C45',400.80,20); 17 | INSERT INTO articulos (nombre, descripcion, precio,cantidad) 18 | VALUES ('impresora','Epson Stylus C85',500,30); 19 | INSERT INTO articulos (nombre, descripcion, precio,cantidad) 20 | VALUES ('monitor','Samsung 14',800,10); 21 | INSERT INTO articulos (nombre, descripcion, precio,cantidad) 22 | VALUES ('teclado','ingles Biswal',100,50); 23 | INSERT INTO articulos (nombre, descripcion, precio,cantidad) 24 | VALUES ('teclado','español Biswal',90,50); 25 | INSERT INTO articulos (nombre, descripcion, precio,cantidad) 26 | VALUES ('impresora multifuncion','HP 1410',300,20); 27 | 28 | -- 4. Seleccione todos los artículos que comienzan con "impresora": 29 | SELECT * FROM articulos WHERE nombre REGEXP '^impresora'; 30 | 31 | -- 5. Busque los artículos en los cuales el campo "descripcion" no tienen "H" ni "W": 32 | SELECT * FROM articulos WHERE descripcion NOT REGEXP '[HW]'; 33 | 34 | -- 6. Seleccione las descripciones que contengan una letra "s" seguida de un caracter cualquiera y 35 | -- luego una "n": 36 | SELECT * FROM articulos WHERE descripcion REGEXP 's.n'; 37 | -------------------------------------------------------------------------------- /parte001/ex219_libros_demostracion_uso_funcion_count.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED AUTO_INCREMENT, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | precio DECIMAL(5,2) UNSIGNED, 9 | cantidad MEDIUMINT UNSIGNED, 10 | PRIMARY KEY(codigo) 11 | ); 12 | 13 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 14 | VALUES('El aleph','Borges','Planeta',15,100); 15 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 16 | VALUES('Martin Fierro','Jose Hernandez','Emece',22.20,200); 17 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 18 | VALUES('Antologia poetica','J.L. Borges','Planeta',40,150); 19 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 20 | VALUES('Aprenda PHP','Mario Molina','Emece',18.20,200); 21 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 22 | VALUES('Cervantes y el quijote','Bioy Casares- J.L. Borges','Paidos',36.40,100); 23 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 24 | VALUES('Manual de PHP', 'J.C. Paez', 'Paidos',30.80,120); 25 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 26 | VALUES('Harry Potter y la piedra filosofal','J.K. Rowling','Paidos',45.00,50); 27 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 28 | VALUES('Harry Potter y la camara secreta','J.K. Rowling','Paidos',46.00,100); 29 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 30 | VALUES('Alicia en el pais de las maravillas','Lewis Carroll','Paidos', NULL,200); 31 | 32 | SELECT COUNT(*) FROM libros; 33 | 34 | SELECT COUNT(*) FROM libros 35 | WHERE editorial='Planeta'; 36 | 37 | SELECT COUNT(*) FROM libros WHERE autor LIKE '%Borges%'; 38 | 39 | SELECT COUNT(precio) FROM libros; 40 | -------------------------------------------------------------------------------- /parte001/ex222_agenda_contar_registros_valores_null_count_funcion.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS agenda; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE agenda( 6 | apellido VARCHAR(30), 7 | nombre VARCHAR(20) NOT NULL, 8 | domicilio VARCHAR(30), 9 | telefono VARCHAR(11), 10 | mail VARCHAR(30) 11 | ); 12 | 13 | -- 3. Ingrese los siguientes registros: 14 | INSERT INTO agenda VALUES ('Perez','Juan','Sarmiento 345','4334455','juancito@gmail.com'); 15 | INSERT INTO agenda VALUES ('Garcia','Ana','Urquiza 367','4226677','anamariagarcia@hotmail.com'); 16 | INSERT INTO agenda VALUES ('Lopez','Juan','Avellaneda 900',NULL,'juancitoLopez@gmail.com'); 17 | INSERT INTO agenda VALUES ('Juarez','Mariana','Sucre 123','0525657687','marianaJuarez2@gmail.com'); 18 | INSERT INTO agenda VALUES ('Molinari','Lucia','Peru 1254','4590987','molinarilucia@hotmail.com'); 19 | INSERT INTO agenda VALUES ('Ferreyra','Patricia','Colon 1534','4585858',NULL); 20 | INSERT INTO agenda VALUES ('Perez','Susana','San Martin 333',NULL,NULL); 21 | INSERT INTO agenda VALUES ('Perez','Luis','Urquiza 444','0354545256','perezluisalberto@hotmail.com'); 22 | INSERT INTO agenda VALUES ('Lopez','Maria','Salta 314',NULL,'lopezmariayo@gmail.com'); 23 | 24 | -- 4. Cuente cuántos de sus amigos tienen mail: 25 | SELECT COUNT(mail) FROM agenda; 26 | 27 | -- 5. Cuente cuántos de sus amigos tienen teléfono: 28 | SELECT COUNT(telefono) FROM agenda; 29 | 30 | -- 6. Cuente cuántos se apellidan "Perez": 31 | SELECT COUNT(*) FROM agenda WHERE apellido = 'Perez'; 32 | -------------------------------------------------------------------------------- /parte001/ex225_libros_demo_uso_funciones_min_max_avg_sum.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED AUTO_INCREMENT, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | precio DECIMAL(5,2) UNSIGNED, 9 | cantidad MEDIUMINT UNSIGNED, 10 | PRIMARY KEY(codigo) 11 | ); 12 | 13 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 14 | VALUES('El aleph','Borges','Planeta',15,100); 15 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 16 | VALUES('Martin Fierro','Jose Hernandez','Emece',22.20,200); 17 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 18 | VALUES('Antologia poetica','J.L. Borges','Planeta',40,150); 19 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 20 | VALUES('Aprenda PHP','Mario Molina','Emece',18.20,200); 21 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 22 | VALUES('Cervantes y el quijote','Bioy Casares- J.L. Borges','Paidos',36.40,100); 23 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 24 | VALUES('Manual de PHP', 'J.C. Paez', 'Paidos',30.80,120); 25 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 26 | VALUES('Harry Potter y la piedra filosofal','J.K. Rowling','Paidos',45.00,50); 27 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 28 | VALUES('Harry Potter y la camara secreta','J.K. Rowling','Paidos',46.00,100); 29 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 30 | VALUES('Alicia en el pais de las maravillas','Lewis Carroll','Paidos', NULL,200); 31 | 32 | SELECT SUM(cantidad) FROM libros; 33 | 34 | SELECT SUM(cantidad) FROM libros 35 | WHERE editorial ='Planeta'; 36 | 37 | SELECT MAX(precio) FROM libros; 38 | 39 | SELECT * FROM libros 40 | ORDER BY precio DESC; 41 | 42 | SELECT min(precio) FROM libros 43 | WHERE autor LIKE '%Rowling%'; 44 | 45 | SELECT * FROM libros 46 | WHERE autor LIKE '%Rowling%' 47 | ORDER BY 5; 48 | 49 | SELECT avg(precio) FROM libros 50 | WHERE titulo LIKE '%PHP%'; 51 | 52 | SELECT * FROM libros 53 | WHERE titulo LIKE '%PHP%'; 54 | -------------------------------------------------------------------------------- /parte001/ex228_peliculas_funciones_agrupacion.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | CREATE TABLE peliculas ( 6 | codigo INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 7 | titulo VARCHAR(30), 8 | actor VARCHAR(20), 9 | duracion TINYINT UNSIGNED 10 | ); 11 | 12 | -- 3. Ingrese los siguientes registros: 13 | INSERT INTO peliculas (titulo,actor,duracion) 14 | VALUES ('Mision imposible','Tom Cruise',120); 15 | INSERT INTO peliculas (titulo,actor,duracion) 16 | VALUES ('Harry Potter y la piedra filosofal','Daniel R.',180); 17 | INSERT INTO peliculas (titulo,actor,duracion) 18 | VALUES ('Harry Potter y la camara secreta','Daniel R.',190); 19 | INSERT INTO peliculas (titulo,actor,duracion) 20 | VALUES ('Mision imposible 2','Tom Cruise',120); 21 | INSERT INTO peliculas (titulo,actor,duracion) 22 | VALUES ('Mujer bonita','Richard Gere',120); 23 | INSERT INTO peliculas (titulo,actor,duracion) 24 | VALUES ('Tootsie','D. Hoffman',90); 25 | INSERT INTO peliculas (titulo,actor,duracion) 26 | VALUES ('Un oso rojo',null,100); 27 | INSERT INTO peliculas (titulo,actor,duracion) 28 | VALUES ('Elsa y Fred','China Zorrilla',110); 29 | INSERT INTO peliculas (titulo,actor,duracion) 30 | VALUES ('Mrs. Johns','Richard Gere',180); 31 | 32 | -- 4. Muestre el valor de duración más grande: 33 | SELECT MAX(duracion) AS duracion_maxima FROM peliculas; 34 | 35 | -- 5. Muestre el promedio de duración de las películas: 36 | SELECT AVG(duracion) AS duracion_promedio FROM peliculas; 37 | 38 | -- 6. Cuente la cantidad de películas que comiencen con la cadena "Harry Potter": 39 | SELECT COUNT(*) FROM peliculas WHERE titulo LIKE 'Harry Potter%'; 40 | 41 | -- 7. Un socio alquiló todas las películas en las cuales trabaja "Richard Gere", quiere saber el total 42 | -- de minutos que duran todas sus películas: 43 | SELECT SUM(duracion) total_duracion FROM peliculas WHERE actor LIKE '%Richard Gere%'; 44 | -------------------------------------------------------------------------------- /parte001/ex229_autos_consultas_funciones_agrupacion.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "autos" si existe: 2 | DROP TABLE IF EXISTS autos; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE autos( 6 | patente CHAR(6), 7 | marca VARCHAR(20), 8 | modelo CHAR(4), 9 | precio DECIMAL(8,2) unsigned, 10 | PRIMARY KEY(patente) 11 | ); 12 | 13 | -- 3. Ingrese los siguientes registros: 14 | INSERT INTO autos(patente,marca,modelo,precio) 15 | VALUES('ACD123','Fiat 128','1970',15000); 16 | INSERT INTO autos(patente,marca,modelo,precio) 17 | VALUES('ACG234','Renault 11','1990',40000); 18 | INSERT INTO autos(patente,marca,modelo,precio) 19 | VALUES('BCD333','Peugeot 505','1990',80000); 20 | INSERT INTO autos(patente,marca,modelo,precio) 21 | VALUES('GCD123','Renault Clio','1990',70000); 22 | INSERT INTO autos(patente,marca,modelo,precio) 23 | VALUES('BCC333','Renault Megane','1998',95000); 24 | INSERT INTO autos(patente,marca,modelo,precio) 25 | VALUES('BVF543','Fiat 128','1975',20000); 26 | 27 | -- 4. Muestre el valor del auto más caro y más barato: 28 | SELECT MAX(precio), MIN(precio) FROM autos; 29 | 30 | -- 5. Muestre el valor de auto más caro de 1990: 31 | SELECT MAX(precio) FROM autos WHERE modelo = '1990'; 32 | 33 | -- 6. Muestre el promedio de los precios de los autos "Fiat 128": 34 | SELECT AVG(precio) FROM autos WHERE marca = 'Fiat 128'; 35 | 36 | -- 7. Calcule el valor en dinero de todos los autos marca "Renault" con modelos menores a "1995": 37 | SELECT SUM(precio) FROM autos WHERE marca LIKE '%Renault%' AND modelo < 1995; 38 | -------------------------------------------------------------------------------- /parte001/ex230_facturas_funciones_agrupacion_datos_registros.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS facturas; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE facturas( 6 | numero int(10) zerofill, 7 | descripcion varchar(30), 8 | precioporunidad decimal(5,2) unsigned, 9 | cantidad tinyint unsigned 10 | ); 11 | 12 | -- 3. Ingrese algunos registros: 13 | INSERT INTO facturas VALUES (504,'escuadra 20 cm.',2.5,100); 14 | INSERT INTO facturas VALUES (504,'escuadra 50 cm.',5,80); 15 | INSERT INTO facturas VALUES (2002,'compas plastico',8,120); 16 | INSERT INTO facturas VALUES (2002,'compas metal',15.4,100); 17 | INSERT INTO facturas VALUES (2002,'escuadra 20 cm.',2.5,100); 18 | INSERT INTO facturas VALUES (4567,'escuadra 50 cm.',5,200); 19 | 20 | -- 4. Cuente la cantidad de items de la factura número "2002": 21 | SELECT COUNT(*) FROM facturas WHERE numero = 2002; 22 | 23 | -- 5. Sume la cantidad de productos de la factura número "2002": 24 | SELECT SUM(cantidad) FROM facturas WHERE numero = 2002; 25 | 26 | -- 6. Muestre el total en dinero de la factura "504": 27 | SELECT SUM(precioporunidad * cantidad) FROM facturas WHERE numero = 504; 28 | -------------------------------------------------------------------------------- /parte001/ex235_visitas_agrupacion_registros_sentencia_group_by.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "visitas", si existe: 2 | DROP TABLE IF EXISTS visitas; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | CREATE TABLE visitas ( 6 | numero INT unsigned auto_increment, 7 | nombre VARCHAR(30) NOT NULL, 8 | mail VARCHAR(50), 9 | pais VARCHAR (20), 10 | fecha DATE, 11 | PRIMARY KEY(numero) 12 | ); 13 | 14 | -- 3. Ingrese algunos registros: 15 | INSERT INTO visitas (nombre,mail,fecha) 16 | VALUES ('Ana Maria Lopez','AnaMaria@hotmail.com','2006-10-10'); 17 | INSERT INTO visitas (nombre,mail,fecha) 18 | VALUES ('Gustavo Gonzalez','GustavoGGonzalez@hotmail.com','2006-10-10'); 19 | INSERT INTO visitas (nombre,mail,fecha) 20 | VALUES ('Juancito','JuanJosePerez@hotmail.com','2006-10-11'); 21 | INSERT INTO visitas (nombre,mail,fecha) 22 | VALUES ('Fabiola Martinez','MartinezFabiola@hotmail.com','2006-10-12'); 23 | INSERT INTO visitas (nombre,mail,fecha) 24 | VALUES ('Fabiola Martinez','MartinezFabiola@hotmail.com','2006-09-12'); 25 | INSERT INTO visitas (nombre,mail,fecha) 26 | VALUES ('Juancito','JuanJosePerez@hotmail.com','2006-09-12'); 27 | INSERT INTO visitas (nombre,mail,fecha) 28 | VALUES ('Juancito','JuanJosePerez@hotmail.com','2006-09-15'); 29 | 30 | -- 4. Obtenga el total de visitas: 31 | SELECT COUNT(*) FROM visitas; 32 | 33 | -- 5. Cantidad de visitas agrupadas por fecha: 34 | SELECT fecha, COUNT(*) FROM visitas GROUP BY fecha; 35 | 36 | -- 6. Cantidad de visitas agrupadas por nombre y mes: 37 | SELECT nombre, fecha, COUNT(*) FROM visitas GROUP BY nombre, MONTH(fecha); 38 | -------------------------------------------------------------------------------- /parte001/ex237_facturas_agrupacion_registros_group_by.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS facturas; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE facturas( 6 | numero int(10) zerofill, 7 | descripcion varchar(30), 8 | precioporunidad decimal(5,2) unsigned, 9 | cantidad tinyint unsigned 10 | ); 11 | 12 | -- 3. Ingrese algunos registros: 13 | INSERT INTO facturas VALUES (504,'escuadra 20 cm.',2.5,100); 14 | INSERT INTO facturas VALUES (504,'escuadra 50 cm.',5,80); 15 | INSERT INTO facturas VALUES (2002,'compas plastico',8,120); 16 | INSERT INTO facturas VALUES (2002,'compas metal',15.4,100); 17 | INSERT INTO facturas VALUES (2002,'escuadra 20 cm.',2.5,100); 18 | INSERT INTO facturas VALUES (4567,'escuadra 50 cm.',5,200); 19 | 20 | -- 4. Cuente la cantidad de items por factura: 21 | SELECT numero, COUNT(*) FROM facturas GROUP BY numero; 22 | 23 | -- 5. Sume la cantidad de productos de las facturas: 24 | SELECT numero, SUM(cantidad) FROM facturas GROUP BY numero; 25 | 26 | -- 6. Muestre el total en dinero de las facturas: 27 | SELECT numero, SUM(cantidad * precioporunidad) FROM facturas GROUP BY numero; 28 | -------------------------------------------------------------------------------- /parte001/ex243_visitas_seleccion_grupo_registros_sentencia_having.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "visitas", si existe: 2 | DROP TABLE IF EXISTS visitas; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | create table visitas ( 6 | numero INT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(30) NOT NULL, 8 | mail VARCHAR(50), 9 | pais VARCHAR (20), 10 | puntaje TINYINT UNSIGNED, 11 | PRIMARY KEY(numero) 12 | ); 13 | 14 | -- 3. Ingrese algunos registros: 15 | INSERT INTO visitas (nombre,mail,pais,puntaje) 16 | VALUES ('Ana Maria Lopez','AnaMaria@hotmail.com','Argentina',9); 17 | INSERT INTO visitas (nombre,mail,pais,puntaje) 18 | VALUES ('Gustavo Gonzalez','GustavoGGonzalez@yahoo.com','Chile',8); 19 | INSERT INTO visitas (nombre,mail,pais,puntaje) 20 | VALUES ('Juancito','JuanJosePerez@hotmail.com','Mexico',5); 21 | INSERT INTO visitas (nombre,mail,pais,puntaje) 22 | VALUES ('Fabiola Martinez','MartinezFabiolaM@hotmail.com','Chile',9); 23 | INSERT INTO visitas (nombre,mail,pais,puntaje) 24 | VALUES ('Fabiola Martinez',NULL,'Peru',8); 25 | INSERT INTO visitas (nombre,mail,pais,puntaje) 26 | VALUES ('Mariana Torres','MarianitaTorres','Peru',7); 27 | 28 | -- 4. Muestre el promedio de los puntajes agrupados por pais, considerando sólo aquellos países que 29 | -- tiene más de 1 visita: 30 | SELECT pais, AVG(puntaje) promedio_puntaje 31 | FROM visitas 32 | GROUP BY pais 33 | HAVING COUNT(*) > 1; 34 | 35 | -- 5. Muestre el promedio de los puntajes agrupados por pais, considerando sólo aquellos países cuyo 36 | -- promedio es mayor a 8: 37 | SELECT pais, AVG(puntaje) promedio_puntaje 38 | FROM visitas 39 | GROUP BY pais 40 | HAVING promedio_puntaje > 8; 41 | -------------------------------------------------------------------------------- /parte001/ex250_visitas_distinct_clausula_registros_unicos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "visitas", si existe: 2 | DROP TABLE IF EXISTS visitas; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | CREATE TABLE visitas ( 6 | numero INT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(30) NOT NULL, 8 | mail VARCHAR(50), 9 | pais VARCHAR (20), 10 | fecha DATE, 11 | PRIMARY KEY(numero) 12 | ); 13 | 14 | -- 3. Ingrese algunos registros: 15 | INSERT INTO visitas (nombre,mail,fecha) 16 | VALUES ('Ana Maria Lopez','AnaMaria@hotmail.com','2006-10-10'); 17 | INSERT INTO visitas (nombre,mail,fecha) 18 | VALUES ('Gustavo Gonzalez','GustavoGGonzalez@hotmail.com','2006-10-10'); 19 | INSERT INTO visitas (nombre,mail,fecha) 20 | VALUES ('Juancito','JuanJosePerez@hotmail.com','2006-10-11'); 21 | INSERT INTO visitas (nombre,mail,fecha) 22 | VALUES ('Fabiola Martinez','MartinezFabiola@hotmail.com','2006-10-12'); 23 | INSERT INTO visitas (nombre,mail,fecha) 24 | VALUES ('Fabiola Martinez','MartinezFabiola@hotmail.com','2006-09-12'); 25 | INSERT INTO visitas (nombre,mail,fecha) 26 | VALUES ('Juancito','JuanJosePerez@hotmail.com','2006-09-12'); 27 | INSERT INTO visitas (nombre,mail,fecha) 28 | VALUES ('Juancito','JuanJosePerez@hotmail.com','2006-09-15'); 29 | INSERT INTO visitas (nombre,mail,fecha) 30 | VALUES ('Juancito','JuanJosePerez@hotmail.com','2006-09-15'); 31 | 32 | -- 4. Obtenga los distintos nombres de quienes visitaron la página: 33 | SELECT DISTINCT nombre FROM visitas; 34 | 35 | -- 5. Muestre la cantidad de veces que cada persona ingresó a la página: 36 | SELECT nombre, COUNT(fecha) 37 | FROM visitas 38 | GROUP BY nombre; 39 | 40 | -- 6. Muestre la cantidad de veces que cada persona ingresó a la página en distintas fechas: 41 | SELECT nombre, COUNT(DISTINCT fecha) 42 | FROM visitas 43 | GROUP BY nombre; 44 | -------------------------------------------------------------------------------- /parte001/ex251_autos_distinct_clausula_registros_unicos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "autos" si existe: 2 | DROP TABLE IF EXISTS autos; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE autos( 6 | patente CHAR(6), 7 | marca VARCHAR(20), 8 | modelo YEAR, 9 | precio DECIMAL(8,2) UNSIGNED, 10 | PRIMARY KEY(patente) 11 | ); 12 | 13 | -- 3. Ingrese los siguientes registros: 14 | INSERT INTO autos VALUES ('ACD123','Fiat 128','1970',15000); 15 | INSERT INTO autos VALUES ('ACG234','Renault 11','1990',40000); 16 | INSERT INTO autos VALUES ('BCD333','Peugeot 505','1990',80000); 17 | INSERT INTO autos VALUES ('GCD123','Renault 11','1990',70000); 18 | INSERT INTO autos VALUES ('BCC333','Renault Megane','1998',95000); 19 | INSERT INTO autos VALUES ('BVF543','Fiat 128','1975',20000); 20 | INSERT INTO autos VALUES ('FCD123','Renault 11','1995',70000); 21 | INSERT INTO autos VALUES ('HCC333','Renault Megane','1995',95000); 22 | INSERT INTO autos VALUES ('IVF543','Fiat 128','1970',20000); 23 | 24 | -- 4. Muestre las distintas marcas de autos disponibles: 25 | SELECT DISTINCT marca FROM autos; 26 | 27 | -- 5. Muestre la cantidad de autos por marca, de diferentes modelos: 28 | SELECT marca, COUNT(DISTINCT modelo) 29 | FROM autos 30 | GROUP BY marca; 31 | 32 | -- 6. Muestre los distintos modelos de autos disponibles: 33 | SELECT DISTINCT modelo FROM autos; 34 | -------------------------------------------------------------------------------- /parte001/ex252_consultas_distinct_clausula_registros_unicos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS consultas; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE consultas( 6 | fechayhora DATETIME NOT NULL, 7 | medico VARCHAR(30) NOT NULL, 8 | documento CHAR(8) NOT NULL, 9 | paciente VARCHAR(30), 10 | obrasocial VARCHAR(30) 11 | ); 12 | 13 | -- 4. Ingrese los siguientes registros: 14 | INSERT INTO consultas VALUES ('2006-08-10 8:00','Perez','22333444','Juana Garcia','PAMI'); 15 | INSERT INTO consultas VALUES ('2006-08-10 10:00','Lopez','22333444','Juana Garcia','PAMI'); 16 | INSERT INTO consultas VALUES ('2006-08-10 8:30','Perez','23333444','Adela Gomez','PAMI'); 17 | INSERT INTO consultas VALUES ('2006-08-10 9:00','Perez','24333444','Juan Lopez','IPAM'); 18 | INSERT INTO consultas VALUES ('2006-08-10 10:00','Perez','25333444','Hector Juarez','OSDOP'); 19 | INSERT INTO consultas VALUES ('2006-08-10 8:30','Garcia','25333444','Ana Molina','PAMI'); 20 | INSERT INTO consultas VALUES ('2006-09-10 8:30','Garcia','25333444','Ana Molina','PAMI'); 21 | 22 | -- 5. Muestre las distintas obras sociales: 23 | SELECT DISTINCT obrasocial FROM consultas; 24 | 25 | -- 6. Muestre los nombres de los distintos pacientes: 26 | SELECT DISTINCT paciente FROM consultas; 27 | 28 | -- 7. Muestre la cantidad de distintas obras sociales: 29 | SELECT obrasocial, COUNT(DISTINCT obrasocial) 30 | FROM consultas 31 | GROUP BY obrasocial; 32 | 33 | -- 8. Cuente la cantidad de médicos (SIN REPETIR) que tienen consultas agrupado por mes y día: 34 | SELECT EXTRACT(MONTH FROM fechayhora), EXTRACT(DAY FROM fechayhora), COUNT(DISTINCT medico) 35 | FROM consultas 36 | GROUP BY EXTRACT(MONTH FROM fechayhora), EXTRACT(DAY FROM fechayhora); 37 | -------------------------------------------------------------------------------- /parte001/ex253_inscriptos_distinct_clausula_registros_unicos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "inscriptos" si existe: 2 | DROP TABLE IF EXISTS inscriptos; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE inscriptos( 6 | documento CHAR(8) NOT NULL, 7 | nombre VARCHAR(30), 8 | deporte VARCHAR(15) NOT NULL, 9 | agnio YEAR, 10 | matricula CHAR(1) DEFAULT 'N' 11 | ); 12 | 13 | -- 3. Ingrese los siguientes registros: 14 | INSERT INTO inscriptos VALUES ('35333444','Juan Lopez','tenis','1990','S'); 15 | INSERT INTO inscriptos VALUES ('35333444','Juan Lopez','basquet','1990','S'); 16 | INSERT INTO inscriptos VALUES ('35333444','Juan Lopez','natación','1990','S'); 17 | INSERT INTO inscriptos VALUES ('36333444','Ana Juarez','tenis','1990','S'); 18 | INSERT INTO inscriptos VALUES ('36333444','Ana Juarez','natación','1990','S'); 19 | INSERT INTO inscriptos VALUES ('35333444','Juan Lopez','voley','1991','S'); 20 | INSERT INTO inscriptos VALUES ('35333444','Juan Lopez','voley','1992','S'); 21 | INSERT INTO inscriptos VALUES ('35333444','Juan Lopez','tenis','1992','S'); 22 | INSERT INTO inscriptos VALUES ('36333444','Ana Juarez','tenis','1991','S'); 23 | INSERT INTO inscriptos VALUES ('37333444','Luis Duarte','tenis','1990','S'); 24 | INSERT INTO inscriptos VALUES ('37333444','Luis Duarte','tenis','1991','S'); 25 | 26 | -- 4. Muestre los nombres de los inscriptos sin repetir: 27 | SELECT DISTINCT nombre FROM inscriptos; 28 | 29 | -- 5. Muestre los nombres de los deportes sin repetir: 30 | SELECT DISTINCT deporte FROM inscriptos; 31 | 32 | -- 6. Muestre la cantidad de alumnos DISTINTOS inscriptos en cada deporte: 33 | SELECT deporte, COUNT(DISTINCT nombre) 34 | FROM inscriptos 35 | GROUP BY deporte; 36 | 37 | -- 7. Muestre la cantidad de inscriptos por año, sin considerar los alumnos que se inscribieron en más 38 | -- de un deporte: 39 | SELECT agnio, COUNT(DISTINCT nombre) 40 | FROM inscriptos 41 | GROUP BY agnio 42 | HAVING COUNT(nombre) = 1; 43 | -------------------------------------------------------------------------------- /parte001/ex256_libros_as_alias_columnas.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED auto_increment, 5 | titulo VARCHAR(50) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | precio DECIMAL(5,2) UNSIGNED, 9 | PRIMARY KEY (codigo) 10 | ); 11 | 12 | INSERT INTO libros (titulo,autor,editorial,precio) 13 | VALUES ('El aleph','Borges','Planeta',15); 14 | INSERT INTO libros (titulo,autor,editorial,precio) 15 | VALUES ('Martin Fierro','Jose Hernandez','Emece',22.20); 16 | INSERT INTO libros (titulo,autor,editorial,precio) 17 | VALUES ('Martin Fierro','Jose Hernandez','Planeta',42.20); 18 | INSERT INTO libros (titulo,autor,editorial,precio) 19 | VALUES ('Antologia poetica','Borges','Planeta',40); 20 | INSERT INTO libros (titulo,autor,editorial,precio) 21 | VALUES ('Aprenda PHP','Mario Molina','Emece',18.20); 22 | INSERT INTO libros (titulo,autor,editorial,precio) 23 | VALUES ('Cervantes y el quijote','Bioy CASares- Borges','Paidos',36.40); 24 | INSERT INTO libros (titulo,autor,editorial,precio) 25 | VALUES ('Manual de PHP', null, 'Paidos',30.80); 26 | INSERT INTO libros (titulo,autor,editorial,precio) 27 | VALUES ('Harry Potter y la piedra filosofal','J.K. Rowling','Planeta',45.00); 28 | INSERT INTO libros (titulo,autor,editorial,precio) 29 | VALUES ('Harry Potter y la camara secreta','J.K. Rowling','Planeta',46.00); 30 | INSERT INTO libros (titulo,autor,editorial,precio) 31 | VALUES ('Alicia en el pais de lAS maravillAS','Lewis Carroll','Paidos',NULL); 32 | INSERT INTO libros (titulo,autor,editorial,precio) 33 | VALUES ('Alicia en el pais de lAS maravillAS','Lewis Carroll','Emece',12.10); 34 | 35 | SELECT COUNT(*) AS 'Libros de Borges' 36 | FROM libros 37 | WHERE autor LIKE '%Borges%'; 38 | 39 | SELECT editorial AS edit 40 | FROM libros 41 | GROUP BY edit; 42 | 43 | SELECT editorial, COUNT(*) AS cantidad 44 | FROM libros 45 | GROUP BY editorial 46 | ORDER BY cantidad; 47 | 48 | SELECT editorial, COUNT(*) AS cantidad 49 | FROM libros 50 | GROUP BY editorial 51 | HAVING cantidad>2; 52 | -------------------------------------------------------------------------------- /parte001/ex260_vehiculos_llave_primaria_compuesta_tabla.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS vehiculos; 2 | 3 | CREATE TABLE vehiculos( 4 | patente CHAR(6) NOT NULL, 5 | tipo CHAR(4), 6 | horallegada TIME NOT NULL, 7 | horasalida TIME, 8 | PRIMARY KEY(patente,horallegada) 9 | ); 10 | 11 | DESCRIBE vehiculos; 12 | 13 | INSERT INTO vehiculos (patente,tipo,horallegada,horasalida) 14 | VALUES ('ACD123','auto','8:30','9:40'); 15 | INSERT INTO vehiculos (patente,tipo,horallegada,horasalida) 16 | VALUES ('AKL098','auto','8:45','11:10'); 17 | INSERT INTO vehiculos (patente,tipo,horallegada,horasalida) 18 | VALUES ('HGF123','auto','9:30','11:40'); 19 | INSERT INTO vehiculos (patente,tipo,horallegada,horasalida) 20 | VALUES ('DRT123','auto','15:30',NULL); 21 | INSERT INTO vehiculos (patente,tipo,horallegada,horasalida) 22 | VALUES ('FRT545','moto','19:45',NULL); 23 | INSERT INTO vehiculos (patente,tipo,horallegada,horasalida) 24 | VALUES ('GTY154','auto','20:30','21:00'); 25 | 26 | INSERT INTO vehiculos (patente,tipo,horallegada,horasalida) 27 | VALUES ('ACD123','auto','16:00',NULL); 28 | 29 | INSERT INTO vehiculos (patente,tipo,horallegada,horasalida) 30 | VALUES ('ACD123','auto','16:00',NULL); 31 | 32 | INSERT INTO vehiculos (patente,tipo,horallegada,horasalida) 33 | VALUES ('ADF123','moto','8:30','10:00'); 34 | 35 | ALTER TABLE vehiculos DROP horallegada; 36 | 37 | DELETE FROM vehiculos 38 | WHERE patente='ACD123'; 39 | 40 | ALTER TABLE vehiculos DROP horallegada; 41 | 42 | DESCRIBE vehiculos; 43 | -------------------------------------------------------------------------------- /parte001/ex261_prestamos_llave_primaria_compuesta.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "prestamos" si existe: 2 | DROP TABLE IF EXISTS prestamos; 3 | 4 | -- 2. Necesitamos una clave que identifique cada registro en la tabla "prestamos". El mismo libro no 5 | -- puede prestarse en la misma fecha. 6 | 7 | -- 3. Cree la tabla: 8 | CREATE TABLE prestamos( 9 | titulo VARCHAR(40) NOT NULL, 10 | documento CHAR(8) NOT NULL, 11 | fechaprestamo DATE NOT NULL, 12 | fechadevolucion DATE, 13 | devuelto CHAR(1) DEFAULT 'N', 14 | PRIMARY KEY(titulo,fechaprestamo) 15 | ); 16 | 17 | -- 4. Ingrese los siguientes registros para la tabla "prestamos": 18 | INSERT INTO prestamos (titulo,documento,fechaprestamo) 19 | VALUES ('Manual de 1 grado','22333444','2006-07-10'); 20 | INSERT INTO prestamos (titulo,documento,fechaprestamo) 21 | VALUES ('Manual de 1 grado','22333444','2006-07-20'); 22 | INSERT INTO prestamos (titulo,documento,fechaprestamo) 23 | VALUES ('Manual de 1 grado','23333444','2006-07-15'); 24 | INSERT INTO prestamos (titulo,documento,fechaprestamo) 25 | VALUES ('El aleph','22333444','2006-07-10'); 26 | INSERT INTO prestamos (titulo,documento,fechaprestamo) 27 | VALUES ('El aleph','30333444','2006-08-10'); 28 | 29 | -- Note que un mismo libro fue prestado a un mismo socio pero en una fecha distinta. 30 | 31 | -- 5. Intente ingresar un valor de clave primaria repetida: 32 | INSERT INTO prestamos (titulo,documento,fechaprestamo) 33 | VALUES ('El aleph','30333444','2006-08-10'); 34 | -------------------------------------------------------------------------------- /parte001/ex262_consultas_llave_primaria_compuesta.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS consultas; 3 | 4 | -- 2- La tabla contiene los siguientes datos: 5 | -- fechayhora: DATETIME NOT NULL, fecha y hora de la consulta, 6 | -- medico: VARCHAR(30), NOT NULL, nombre del médico (Perez,Lopez,Duarte), 7 | -- documento: CHAR(8) NOT NULL, documento del paciente, 8 | -- paciente: VARCHAR(30), nombre del paciente, 9 | -- obrasocial: VARCHAR(30), nombre de la obra social ('IPAM','PAMI'). 10 | 11 | -- 3. Un médico sólo puede atender a un paciente en una fecha y hora determianada. En una fecha y hora 12 | -- determinada, varios médicos atienden a distintos pacientes. Cree la tabla definiendo una clave 13 | -- primaria compuesta: 14 | CREATE TABLE consultas( 15 | fechayhora DATETIME NOT NULL, 16 | medico VARCHAR(30) NOT NULL, 17 | documento CHAR(8) NOT NULL, 18 | paciente VARCHAR(30), 19 | obrasocial VARCHAR(30), 20 | PRIMARY KEY(fechayhora, medico) 21 | ); 22 | 23 | -- 4. Ingrese varias consultas para un mismo médico en distintas horas el mismo día: 24 | INSERT INTO consultas VALUES ('2021-05-07 06:00', '1001', '2001', 'Carlos Pérez', 'OS1'); 25 | INSERT INTO consultas VALUES ('2021-05-07 07:00', '1001', '2002', 'Roberto Monroy', 'OS2'); 26 | INSERT INTO consultas VALUES ('2021-05-07 08:00', '1001', '2003', 'Adriana Lucía Londoño', 'OS1'); 27 | 28 | -- 5. Ingrese varias consultas para diferentes médicos en la misma fecha y hora: 29 | INSERT INTO consultas VALUES ('2021-05-07 06:00', '1002', '2001', 'Carlos Pérez', 'OS1'); 30 | INSERT INTO consultas VALUES ('2021-05-07 07:00', '1003', '2002', 'Roberto Monroy', 'OS2'); 31 | INSERT INTO consultas VALUES ('2021-05-07 08:00', '1004', '2003', 'Adriana Lucía Londoño', 'OS1'); 32 | 33 | -- 6. Intente ingresar una consulta para un mismo médico en la misma hora el mismo día. 34 | INSERT INTO consultas VALUES ('2021-05-07 06:00', '1001', '2004', 'Daniela Villamizar', 'OS1'); 35 | -------------------------------------------------------------------------------- /parte001/ex269_libros_indice_primary_key.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED AUTO_INCREMENT, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | PRIMARY KEY(codigo) 9 | ); 10 | 11 | SHOW INDEX FROM libros; 12 | -------------------------------------------------------------------------------- /parte001/ex270_clients_indice_primary_key.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "clientes" si existe: 2 | DROP TABLE IF EXISTS clientes; 3 | 4 | -- 2. Créela con los siguientes campos y clave: 5 | CREATE TABLE clientes( 6 | documento CHAR(8), 7 | apellido VARCHAR(20), 8 | nombre VARCHAR(20), 9 | domicilio VARCHAR(30), 10 | PRIMARY KEY(documento) 11 | ); 12 | 13 | -- 3. Vea la estructura de los índices la tabla y analice la información: 14 | SHOW INDEX FROM clientes; 15 | -------------------------------------------------------------------------------- /parte001/ex271_alumnos_indice_primary_index.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "alumnos" si existe: 2 | DROP TABLE IF EXISTS alumnos; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | create table alumnos( 6 | legajo VARCHAR(4) NOT NULL, 7 | documento CHAR(8) NOT NULL, 8 | apellido VARCHAR(30), 9 | nombre VARCHAR(30), 10 | domicilio VARCHAR(30), 11 | PRIMARY KEY (legajo) 12 | ); 13 | 14 | -- 3. Vea la estructura de los índices de la tabla y analice la información: 15 | SHOW INDEX FROM alumnos; 16 | -------------------------------------------------------------------------------- /parte001/ex272_alumnos_indice_primary_index.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "alumnos" si existe: 2 | DROP TABLE IF EXISTS alumnos; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE alumnos( 6 | legajo VARCHAR(4) NOT NULL, 7 | documento CHAR(8) NOT NULL, 8 | apellido VARCHAR(30), 9 | nombre VARCHAR(30), 10 | domicilio VARCHAR(30), 11 | PRIMARY INDEX (legajo) 12 | ); 13 | 14 | -- 3. Vea la estructura de los índices de la tabla y analice la información: 15 | SHOW INDEX FROM alumnos; 16 | -------------------------------------------------------------------------------- /parte001/ex275_libros_indice_comun.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | create table libros( 4 | codigo INT UNSIGNED AUTO_INCREMENT, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | PRIMARY KEY(codigo), 9 | INDEX i_editorial (editorial) 10 | ); 11 | 12 | SHOW INDEX FROM libros; 13 | 14 | DROP TABLE IF EXISTS libros; 15 | 16 | create table libros( 17 | codigo INT UNSIGNED AUTO_INCREMENT, 18 | titulo VARCHAR(40) NOT NULL, 19 | autor VARCHAR(30), 20 | editorial VARCHAR(15), 21 | PRIMARY KEY(codigo), 22 | INDEX i_tituloeditorial (titulo,editorial) 23 | ); 24 | 25 | SHOW INDEX FROM libros; 26 | -------------------------------------------------------------------------------- /parte001/ex276_medicamentos_indice_comun.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS medicamentos; 3 | 4 | -- 2. Cree la tabla e indéxela por el campo "laboratorio": 5 | CREATE TABLE medicamentos( 6 | codigo INT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(20), 8 | laboratorio VARCHAR(20), 9 | precio DECIMAL(5,2), 10 | cantidad INT UNSIGNED, 11 | PRIMARY KEY(codigo), 12 | INDEX idx_laboratorio (laboratorio) 13 | ); 14 | 15 | -- 3. Visualice los índices de la tabla "medicamentos" y analice la información: 16 | SHOW INDEX FROM medicamentos; 17 | -------------------------------------------------------------------------------- /parte001/ex277_clientes_indice_comun.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "clientes", si existe: 2 | DROP TABLE IF EXISTS clientes; 3 | 4 | -- 2. Créela y defina un índice por múltiples campos, por ciudad y provincia: 5 | CREATE TABLE clientes ( 6 | codigo INT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(30) NOT NULL, 8 | domicilio VARCHAR(30), 9 | ciudad VARCHAR(20), 10 | provincia VARCHAR (20), 11 | telefono VARCHAR(11), 12 | PRIMARY KEY (codigo), 13 | INDEX i_ciudadprovincia (ciudad,provincia) 14 | ); 15 | 16 | -- 3. Muestre los índices: 17 | SHOW INDEX FROM clientes; -------------------------------------------------------------------------------- /parte001/ex278_agenda_indice_comun.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS agenda; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE agenda( 6 | apellido VARCHAR(30), 7 | nombre VARCHAR(20) NOT NULL, 8 | domicilio VARCHAR(30), 9 | telefono VARCHAR(11), 10 | mail VARCHAR(30) 11 | ); 12 | 13 | -- 3. Ingrese los siguientes registros: 14 | INSERT INTO agenda VALUES ('Perez','Juan','Sarmiento 345','4334455','juancito@gmail.com'); 15 | INSERT INTO agenda VALUES ('Garcia','Ana','Urquiza 367','4226677','anamariagarcia@hotmail.com'); 16 | INSERT INTO agenda VALUES ('Lopez','Juan','Avellaneda 900',NULL,'juancitoLopez@gmail.com'); 17 | INSERT INTO agenda VALUES ('Juarez','Mariana','Sucre 123','0525657687','marianaJuarez2@gmail.com'); 18 | INSERT INTO agenda VALUES ('Molinari','Lucia','Peru 1254','4590987','molinarilucia@hotmail.com'); 19 | INSERT INTO agenda VALUES ('Ferreyra','Patricia','Colon 1534','4585858',NULL); 20 | INSERT INTO agenda VALUES ('Perez','Susana','San Martin 333',NULL,NULL); 21 | INSERT INTO agenda VALUES ('Perez','Luis','Urquiza 444','0354545256','perezluisalberto@hotmail.com'); 22 | INSERT INTO agenda VALUES ('Lopez','Maria','Salta 314',NULL,'lopezmariayo@gmail.com'); 23 | 24 | -- 4. Vea la información de los índices: 25 | SHOW INDEX FROM agenda; 26 | 27 | -- 5. Analizar el resultado obtenido. 28 | -------------------------------------------------------------------------------- /parte001/ex281_libros_indices_unicos.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED AUTO_INCREMENT, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | CODIGO i_codigo (codigo), 9 | CODIGO i_tituloeditorial (titulo,editorial) 10 | ); 11 | 12 | SHOW INDEX FROM libros; 13 | -------------------------------------------------------------------------------- /parte001/ex282_alumnos_indices_unicos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "alumnos" si existe: 2 | DROP TABLE IF EXISTS alumnos; 3 | 4 | -- 2. Cree la tabla definiendo una clave primaria compuesta (año de inscripción y número de 5 | -- inscripto), un índice único por el campo "documento" y un índice común por ciudad y provincia: 6 | CREATE TABLE alumnos( 7 | agnio YEAR NOT NULL, 8 | numero INT UNSIGNED NOT NULL, 9 | nombre VARCHAR(30), 10 | documento CHAR(8) NOT NULL, 11 | domicilio VARCHAR(30), 12 | ciudad VARCHAR(20), 13 | provincia VARCHAR(20), 14 | PRIMARY KEY(agnio,numero), 15 | UNIQUE i_documento (documento), 16 | INDEX i_ciudadprovincia (ciudad,provincia) 17 | ); 18 | 19 | -- 3. Vea los índices de la tabla: 20 | SHOW INDEX FROM alumnos; 21 | 22 | -- 4. Ingrese algunos registros. Ingrese 2 ó 4 alumnos para los años 2004, 2005 y 2006: 23 | INSERT INTO alumnos VALUES (2004, 1001, 'Carlos Pérez', '12345678', 'Carrera 1ra', 'Bogotá', 'Cundinamarca'); 24 | INSERT INTO alumnos VALUES (2005, 1001, 'Carlos Pérez', '54567233', 'Carrera 1ra', 'Bogotá', 'Cundinamarca'); 25 | INSERT INTO alumnos VALUES (2006, 1001, 'Carlos Pérez', '11111111', 'Carrera 1ra', 'Bogotá', 'Cundinamarca'); 26 | 27 | -- 5. Intente ingresar un alumno con clave primaria repetida: 28 | -- INSERT INTO alumnos VALUES (2004, 1001, 'Adriana López', '98765432', 'Carrera 1ra', 'Bogotá', 'Cundinamarca'); 29 | 30 | -- 6. Intente ingresar un alumno con documento repetido: 31 | INSERT INTO alumnos VALUES (2007, 1001, 'Camila Robledo', '12398754', 'Carrera 1ra', 'Bogotá', 'Cundinamarca'); 32 | 33 | -- 7. Ingrese varios alumnos de la misma ciudad y provincia: 34 | INSERT INTO alumnos VALUES (2004, 1002, 'Jovany Contreras', '95175345', 'Carrera 2ra', 'Bogotá', 'Cundinamarca'); 35 | INSERT INTO alumnos VALUES (2005, 1003, 'Daniel Gaviria', '75385292', 'Carrera 3ra', 'Bogotá', 'Cundinamarca'); 36 | INSERT INTO alumnos VALUES (2006, 1004, 'Andrés Jarro', '91374562', 'Carrera 4ra', 'Bogotá', 'Cundinamarca'); 37 | 38 | SELECT * FROM alumnos; -------------------------------------------------------------------------------- /parte001/ex283_consultas_indices_unicos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS consultas; 3 | 4 | -- 2. Cree la tabla con una clave primaria compuesta (fecha y número de consulta) un índice único 5 | -- (fecha,documento y médico). Hay 2 campos por los cuales podemos realizar consultas 6 | -- frecuentemente: "medico" y "obrasocial", cree índices para esos campos. 7 | 8 | -- 3. Cree la tabla con la siguiente estructura: 9 | CREATE TABLER consultas( 10 | fecha DATE, 11 | numero INT unsigned, 12 | documento CHAR(8) NOT NULL, 13 | obrasocial VARCHAR(30), 14 | medico VARCHAR(30), 15 | PRIMARY KEY(fecha,numero), 16 | UNIQUE i_consulta(documento,fecha,medico), 17 | INDEX i_medico (medico), 18 | INDEX i_obrasocial (obrasocial) 19 | ); 20 | 21 | -- 4. Vea los índices: 22 | SHOW INDEX FROM consultas; 23 | 24 | -- 5. Los valores de la clave primaria no pueden repetirse. Intente ingresar dos pacientes el mismo 25 | -- día con el mismo número de consulta. 26 | INSERT INTO consultas VALUES ('2021/07/23', 1001, '12345678', 'OS1', 'Roberto'); 27 | -- INSERT INTO consultas VALUES ('2021/07/23', 1001, '12345678', 'OS1', 'Roberto'); 28 | 29 | -- 6. Los valores para el índice único no pueden repetirse. Intente ingresar una consulta del mismo 30 | -- paciente, en la misma fecha con el mismo médico: 31 | -- INSERT INTO consultas VALUES ('2021/07/23', 1001, '12345678', 'OS1', 'Roberto'); 32 | 33 | -- 7. Note que los índices por los campos "medico" y "obrasocial" son comunes, porque los valores se 34 | -- repiten. Ingrese consultas en las cuales se repitan los médicos y las obras sociales. 35 | INSERT INTO consultas VALUES ('2021/07/23', 1002, '95175321', 'OS1', 'Roberto'); 36 | INSERT INTO consultas VALUES ('2021/07/23', 1003, '95175324', 'OS1', 'Roberto'); 37 | INSERT INTO consultas VALUES ('2021/07/23', 1004, '95132452', 'OS1', 'Roberto'); 38 | 39 | SELECT * FROM consultas; 40 | -------------------------------------------------------------------------------- /parte001/ex284_remis_indices_unicos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS remis; 3 | 4 | -- 2. Cree la tabla con una clave primaria por número de vehículo y un índice único por "patente", 5 | -- éste es un valor por el cual podemos realizar consultas frecuentemente y es único (igual que el 6 | -- número del remis): 7 | CREATE TABLE remis( 8 | patente CHAR(6) NOT NULL, 9 | numero TINYINT UNSIGNED NOT NULL, 10 | marca VARCHAR(15), 11 | modelo YEAR, 12 | PRIMARY KEY (numero), 13 | UNIQUE i_patente (patente) 14 | ); 15 | 16 | -- 3. Vea los índices y analice la información: 17 | SHOW INDEX FROM remis; 18 | 19 | -- 4. Los valores de la clave primaria no pueden repetirse. Intente ingresar 2 vehículos con el mismo 20 | -- número. 21 | INSERT INTO remis VALUES ('ABC-123', 1001, 'Mazda', 2001); 22 | -- INSERT INTO remis VALUES ('XYZ-951', 1001, 'Chevrolet', 2019); 23 | 24 | -- 5. Los valores para el índice único no pueden repetirse. Intente ingresar 2 vehículos con igual 25 | -- patente: 26 | -- INSERT INTO remis VALUES ('ABC-123', 1002, 'Kia', 2017); 27 | 28 | SELECT * FROM remis; 29 | -------------------------------------------------------------------------------- /parte001/ex286_libros_eliminar_indices_drop_index.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT unsigned auto_increment, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | PRIMARY KEY (codigo), 9 | INDEX i_editorial (editorial), 10 | UNIQUE i_tituloeditorial (titulo,editorial) 11 | ); 12 | 13 | SHOW INDEX FROM libros; 14 | 15 | DROP INDEX i_editorial ON libros; 16 | 17 | DROP INDEX i_tituloeditorial ON libros; 18 | 19 | SHOW INDEX FROM libros; 20 | -------------------------------------------------------------------------------- /parte001/ex287_alumnos_eliminar_indices_drop_index.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS alumnos; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE alumnos( 6 | agnio YEAR NOT NULL, 7 | numero INT UNSIGNED NOT NULL, 8 | nombre VARCHAR(30), 9 | documento char(8) NOT NULL, 10 | domicilio VARCHAR(30), 11 | ciudad VARCHAR(20), 12 | provincia VARCHAR(20), 13 | PRIMARY KEY(agnio,numero), 14 | UNIQUE i_documento (documento), 15 | INDEX i_ciudadprovincia (ciudad,provincia) 16 | ); 17 | 18 | -- 3. Vea los índices de la tabla: 19 | SHOW INDEX FROM alumnos; 20 | 21 | -- 4. Elimine el índice "i_ciudadprovincia": 22 | DROP INDEX i_ciudadprovincia ON alumnos; 23 | 24 | -- 5. Verifique la eliminación usando "show index": 25 | SHOW INDEX FROM alumnos; 26 | 27 | -- 6. Intente eliminar el índice PRIMARY: 28 | -- DROP INDEX PRIMARY ON alumnos; 29 | 30 | -- 7. Elimine el índice único: 31 | DROP INDEX i_documento ON alumnos; 32 | 33 | -- 8. Verifique la eliminación usando "show index": 34 | SHOW INDEX FROM alumnos; 35 | -------------------------------------------------------------------------------- /parte001/ex288_consultas_eliminar_indices_drop_index.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS consultas; 3 | 4 | -- 2. Cree la tabla con la estructura siguiente: 5 | create table consultas( 6 | fecha DATE, 7 | numero INT unsigned, 8 | documento CHAR(8) NOT NULL, 9 | obrasocial VARCHAR(30), 10 | medico VARCHAR(30), 11 | PRIMARY KEY(fecha,numero), 12 | UNIQUE i_consulta(documento,fecha,medico), 13 | INDEX i_medico (medico), 14 | INDEX i_obrasocial (obrasocial) 15 | ); 16 | 17 | -- 4. Vea los índices: 18 | SHOW INDEX FROM consultas; 19 | 20 | -- 5. Elimine el índice único: 21 | DROP INDEX i_consulta ON consultas; 22 | 23 | SHOW INDEX FROM consultas; 24 | 25 | -- 6. Elimine el índice "i_medico": 26 | DROP INDEX i_medico ON consultas; 27 | 28 | -- 7. Verifique las eliminaciones anteriores visualizando los índices: 29 | SHOW INDEX FROM consultas; 30 | 31 | -- 8. Elimine el índice "i_obrasocial": 32 | DROP INDEX i_obrasocial ON consultas; 33 | 34 | SHOW INDEX FROM consultas; -------------------------------------------------------------------------------- /parte001/ex290_libros_crear_indices_tablas_existentes_create_index.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED AUTO_INCREMENT, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | PRIMARY KEY (codigo) 9 | ); 10 | 11 | SHOW INDEX FROM libros; 12 | 13 | CREATE INDEX i_editorial ON libros (editorial); 14 | 15 | SHOW INDEX FROM libros; 16 | 17 | CREATE UNIQUE INDEX i_tituloeditorial ON libros (titulo,editorial); 18 | 19 | SHOW INDEX FROM libros; 20 | -------------------------------------------------------------------------------- /parte001/ex291_clients_crear_indices_tablas_existentes_create_index.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "clientes", si existe: 2 | DROP TABLE IF EXISTS clientes; 3 | 4 | -- 2. Créela con esta estructura: 5 | create table clientes ( 6 | codigo INT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(30) NOT NULL, 8 | domicilio VARCHAR(30), 9 | ciudad VARCHAR(20), 10 | provincia VARCHAR (20), 11 | telefono VARCHAR(11) 12 | ); 13 | 14 | -- 3. Agregue un índice común por ciudad y provincia: 15 | CREATE INDEX i_ciudadprovincia ON clientes (ciudad, provincia); 16 | 17 | -- 4. Vea la información de los índices: 18 | SHOW INDEX FROM clientes; 19 | 20 | -- 5. Agregue un índice único por el campo "documento": 21 | CREATE UNIQUE INDEX i_documento ON clientes (documento); 22 | 23 | SHOW INDEX FROM clientes; -------------------------------------------------------------------------------- /parte001/ex292_consultas_crear_indices_tablas_existentes_create_index.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS consultas; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | create table consultas( 6 | fecha DATE, 7 | numero INT unsigned, 8 | documento CHAR(8) NOT NULL, 9 | obrasocial VARCHAR(30), 10 | medico VARCHAR(30) 11 | ); 12 | 13 | -- 3. Agregue un índice único multicampo (fecha,documento,medico): 14 | CREATE UNIQUE INDEX i_fechadocumentomedico ON consultas (fecha, documento, medico); 15 | 16 | SHOW INDEX FROM consultas; 17 | 18 | -- 4. Agregue un índice común por el campo "medico": 19 | CREATE INDEX i_medico ON consultas (medico); 20 | 21 | SHOW INDEX FROM consultas; 22 | 23 | -- 5. Agregue un índice común por el campo "obrasocial": 24 | CREATE INDEX i_obrasocial ON consultas (obrasocial); 25 | 26 | SHOW INDEX FROM consultas; -------------------------------------------------------------------------------- /parte001/ex296_peliculas_seleccionar_cantidad_registros_limit.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 2. Créela con la siguiente estructura: 5 | -- - codigo (entero sin signo, autoincrementable), 6 | -- - titulo (cadena de 30), not null, 7 | -- - actor (cadena de 20), 8 | -- - duracion (entero sin signo no mayor a 200 aprox.), 9 | -- - clave primaria (codigo). 10 | CREATE TABLE peliculas ( 11 | codigo INT UNSIGNED AUTO_INCREMENT, 12 | titulo VARCHAR(30) NOT NULL, 13 | actor VARCHAR(20), 14 | duracion TINYINT UNSIGNED, 15 | PRIMARY KEY (codigo) 16 | ); 17 | 18 | -- 3. Ingrese 10 registros: 19 | INSERT INTO peliculas (titulo,actor,duracion) 20 | VALUES ('Mision imposible','Tom Cruise',120); 21 | INSERT INTO peliculas (titulo,actor,duracion) 22 | VALUES ('Harry Potter y la piedra filosofal','Daniel R.',180); 23 | INSERT INTO peliculas (titulo,actor,duracion) 24 | VALUES ('Harry Potter y la camara secreta','Daniel R.',190); 25 | INSERT INTO peliculas (titulo,actor,duracion) 26 | VALUES ('Mision imposible 2','Tom Cruise',120); 27 | INSERT INTO peliculas (titulo,actor,duracion) 28 | VALUES ('Mujer bonita','Richard Gere',120); 29 | INSERT INTO peliculas (titulo,actor,duracion) 30 | VALUES ('Tootsie','D. Hoffman',90); 31 | INSERT INTO peliculas (titulo,actor,duracion) 32 | VALUES ('Un oso rojo', NULL,100); 33 | INSERT INTO peliculas (titulo,actor,duracion) 34 | VALUES ('Elsa y Fred','China Zorrilla',110); 35 | INSERT INTO peliculas (titulo,actor,duracion) 36 | VALUES ('Mrs. Johns','Richard Gere',180); 37 | 38 | -- 4. Realice una consulta limitando la salida a sólo 5 registros: 39 | SELECT * FROM peliculas LIMIT 5; 40 | 41 | -- 5. Muestre los registros desde el cero al 8 usando un solo argumento: 42 | SELECT * FROM peliculas LIMIT 8; 43 | 44 | -- 6. Muestre 3 registros a partir del 4: 45 | SELECT * FROM peliculas LIMIT 4, 3; 46 | 47 | -- 7. Muestre los registros a partir del 2 hasta el final: 48 | SELECT * FROM peliculas LIMIT 2, 1000000; -------------------------------------------------------------------------------- /parte001/ex297_agenda_seleccionar_cantidad_registros_limit.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS agenda; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE agenda( 6 | apellido VARCHAR(30), 7 | nombre VARCHAR(20) NOT NULL, 8 | domicilio VARCHAR(30), 9 | telefono VARCHAR(11), 10 | mail VARCHAR(30), 11 | index i_apellido (apellido) 12 | ); 13 | 14 | -- 3. Ingrese 10 registros: 15 | INSERT INTO agenda VALUES ('Perez','Juan','Sarmiento 345','4334455','juancito@gmail.com'); 16 | INSERT INTO agenda VALUES ('Garcia','Ana','Urquiza 367','4226677','anamariagarcia@hotmail.com'); 17 | INSERT INTO agenda VALUES ('Lopez','Juan','Avellaneda 900',NULL,'juancitoLopez@gmail.com'); 18 | INSERT INTO agenda VALUES ('Juarez','Mariana','Sucre 123','0525657687','marianaJuarez2@gmail.com'); 19 | INSERT INTO agenda VALUES ('Molinari','Lucia','Peru 1254','4590987','molinarilucia@hotmail.com'); 20 | INSERT INTO agenda VALUES ('Ferreyra','Patricia','Colon 1534','4585858',NULL); 21 | INSERT INTO agenda VALUES ('Perez','Susana','San Martin 333',NULL,NULL); 22 | INSERT INTO agenda VALUES ('Perez','Luis','Urquiza 444','0354545256','perezluisalberto@hotmail.com'); 23 | INSERT INTO agenda VALUES ('Lopez','Maria','Salta 314',NULL,'lopezmariayo@gmail.com'); 24 | 25 | -- 4. Realice una consulta limitando la salida a sólo 3 registros: 26 | SELECT * FROM agenda LIMIT 3; 27 | 28 | -- 5. Muestre los registros desde el cero al 9 usando un solo argumento: 29 | SELECT * FROM agenda LIMIT 9; 30 | 31 | -- 6. Muestre 5 registros a partir del 5: 32 | SELECT * FROM agenda LIMIT 5, 5; 33 | 34 | -- 7. Muestre los registros a partir del 7 hasta el final: 35 | SELECT * FROM agenda LIMIT 7, 1000000; -------------------------------------------------------------------------------- /parte001/ex299_libros_rand_seleccionar_registros_aleatorios.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT unsigned auto_increment, 5 | titulo VARCHAR(40), 6 | autor VARCHAR(30), 7 | editorial VARCHAR(20), 8 | precio decimal(5,2) unsigned, 9 | primary key(codigo) 10 | ); 11 | 12 | INSERT INTO libros VALUES (1,'El aleph','Borges','Planeta',23.5); 13 | INSERT INTO libros VALUES (2,'Cervantes y el quijote','Borges','Paidos',33.5); 14 | INSERT INTO libros 15 | VALUES (3,'Alicia a traves del espejo','Lewis Carroll','Planeta',15); 16 | INSERT INTO libros 17 | VALUES (4,'Alicia en el pais de las maravillas','Lewis Carroll','Planeta',18); 18 | INSERT INTO libros VALUES (5,'Martin Fierro','Jose Hernandez','Planeta',34.6); 19 | INSERT INTO libros VALUES (6,'Martin Fierro','Jose Hernandez','Emece',45); 20 | INSERT INTO libros VALUES (7,'Aprenda PHP','Mario Molina','Planeta',55); 21 | INSERT INTO libros VALUES (8,'Java en 10 minutos','Mario Molina','Planeta',45); 22 | INSERT INTO libros VALUES (9,'Matematica estas ahi','Paenza','Planeta',12.5); 23 | 24 | SELECT * FROM libros ORDER BY RAND() LIMIT 5; 25 | 26 | SELECT * FROM libros ORDER BY RAND() LIMIT 5; 27 | SELECT * FROM libros ORDER BY RAND() LIMIT 5; 28 | SELECT * FROM libros ORDER BY RAND() LIMIT 5; 29 | -------------------------------------------------------------------------------- /parte001/ex301_articulos_rand_seleccionar_registros_azar.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine "articulos", si existe: 2 | DROP TABLE IF EXISTS articulos; 3 | 4 | -- 2. Cree la tabla, con la siguiente estructura: 5 | CREATE TABLE articulos( 6 | codigo INT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(25) NOT NULL, 8 | descripcion VARCHAR(30), 9 | precio DECIMAL(6,2) UNSIGNED, 10 | cantidad TINYINT UNSIGNED, 11 | PRIMARY KEY(codigo) 12 | ); 13 | 14 | -- 3. Ingrese algunos registros: 15 | INSERT INTO articulos (nombre, descripcion, precio,cantidad) 16 | VALUES ('impresora','Epson Stylus C45',400.80,20); 17 | INSERT INTO articulos (nombre, descripcion, precio,cantidad) 18 | VALUES ('impresora','Epson Stylus C85',500,30); 19 | INSERT INTO articulos (nombre, descripcion, precio,cantidad) 20 | VALUES ('monitor','Samsung 14',800,10); 21 | INSERT INTO articulos (nombre, descripcion, precio,cantidad) 22 | VALUES ('teclado','ingles Biswal',100,50); 23 | INSERT INTO articulos (nombre, descripcion, precio,cantidad) 24 | VALUES ('teclado','español Biswal',90,50); 25 | INSERT INTO articulos (nombre, descripcion, precio,cantidad) 26 | VALUES ('impresora multifuncion','HP 1410',300,20); 27 | 28 | -- 4. El comercio quiere tomar 2 artículos al azar para ofrecer una oferta especial haciendo un 29 | -- descuento. Seleccione 2 registros al azar de la tabla "articulos": 30 | SELECT * FROM articulos ORDER BY RAND() LIMIT 2; 31 | SELECT * FROM articulos ORDER BY RAND() LIMIT 2; 32 | SELECT * FROM articulos ORDER BY RAND() LIMIT 2; 33 | -------------------------------------------------------------------------------- /parte001/ex303_libros_replace_reemplazo_insercion_registros.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED DEFAULT 0, 5 | titulo VARCHAR(40), 6 | autor VARCHAR(30), 7 | editorial VARCHAR(20), 8 | precio DECIMAL(5,2) UNSIGNED, 9 | PRIMARY KEY(codigo) 10 | ); 11 | 12 | INSERT INTO libros 13 | VALUES (10,'Alicia en el pais de las maravillas','Lewis Carroll','Emece',15.4); 14 | INSERT INTO libros 15 | VALUES (15,'Aprenda PHP','Mario Molina','Planeta',45.8); 16 | INSERT INTO libros VALUES (23,'El aleph','Borges','Planeta',23.0); 17 | 18 | -- INSERT INTO libros VALUES(23,'Java en 10 minutos','Mario Molina','Emece',25.5); 19 | 20 | REPLACE INTO libros VALUES(23,'Java en 10 minutos','Mario Molina','Emece',25.5); 21 | 22 | REPLACE INTO libros(titulo,autor,editorial,precio) 23 | VALUES('Cervantes y el quijote','Borges','Paidos',28); 24 | 25 | REPLACE INTO libros VALUES(30,'Matematica estas ahi','Paenza','Paidos',12.8); 26 | 27 | ALTER TABLE libros DROP PRIMARY KEY; 28 | 29 | REPLACE INTO libros VALUES(10,'Harry Potter ya la piedra filosofal','Hawking','Emece',48); 30 | 31 | -------------------------------------------------------------------------------- /parte001/ex304_alumnos_replace_reemplazo_registros_insercion.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS alumnos; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE alumnos( 6 | legajo INT(10) UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(30), 8 | documento CHAR(8), 9 | domicilio VARCHAR(30), 10 | PRIMARY KEY (legajo), 11 | UNIQUE i_documento (documento) 12 | ); 13 | 14 | -- 3. Ingrese algunos registros: 15 | INSERT INTO alumnos VALUES ('1353','Juan Lopez','22333444','Colon 123'); 16 | INSERT INTO alumnos VALUES ('2345','Ana Acosta','24000555','Caseros 456'); 17 | INSERT INTO alumnos VALUES ('2356','Jose Torres','26888777','Sucre 312'); 18 | INSERT INTO alumnos VALUES ('3567','Luis Perez','28020020','Rivadavia 234'); 19 | 20 | SELECT * FROM alumnos; 21 | 22 | -- 4. Intente ingresar un registro con clave primaria repetida (legajo "3567"): 23 | -- INSERT INTO alumnos VALUES ('3567', 'Luis Felipe Bateman', '1234565', 'Calle 100'); 24 | 25 | -- 5. Ingrese el registro anterior reemplazando el existente: 26 | REPLACE INTO alumnos values('3567', 'Luis Felipe Bateman', '1234565', 'Calle 100'); 27 | 28 | SELECT * FROM alumnos; 29 | 30 | -- 6. Intente ingresar un alumno con documento repetido: 31 | -- INSERT INTO alumnos VALUES ('8532', 'Luis Felipe Bateman', '26888777', 'Calle 100'); 32 | 33 | -- 7. Reemplace el registro: 34 | REPLACE INTO alumnos values('2356', 'Karla Jara', '26888777', 'Calle 100'); 35 | 36 | SELECT * FROM alumnos; 37 | 38 | -- 8. Elimine el índice único: 39 | DROP INDEX i_documento ON alumnos; 40 | 41 | -- 9. Ingrese con REPLACE el siguiente registro con documento existente: 42 | REPLACE INTO alumnos VALUES('4888', 'Gustavo Garcia', '26888777', 'San Martin 846'); 43 | 44 | -- un registro afectado, no hubo eliminación solamente inserción. 45 | 46 | -- 10. Muestre todos los registros: 47 | SELECT * FROM alumnos; 48 | -- note que hay dos alumnos con el mismo número de documento. 49 | -------------------------------------------------------------------------------- /parte001/ex308_libros_alter_table_add_agregar_campos_tabla.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED AUTO_INCREMENT, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR (20), 8 | precio DECIMAL(5,2) UNSIGNED, 9 | PRIMARY KEY(codigo) 10 | ); 11 | 12 | ALTER TABLE libros 13 | ADD cantidad SMALLINT UNSIGNED NOT NULL; 14 | 15 | DESCRIBE libros; 16 | 17 | ALTER TABLE libros 18 | ADD edicion DATE; 19 | 20 | DESCRIBE libros; 21 | 22 | ALTER TABLE libros 23 | ADD precio int; 24 | -------------------------------------------------------------------------------- /parte001/ex309_peliculas_alter_table_add_agregar_campos_tabla copy.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE peliculas( 6 | codigo INT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(30) NOT NULL, 8 | actor VARCHAR(20), 9 | PRIMARY KEY(codigo) 10 | ); 11 | 12 | DESCRIBE peliculas; 13 | 14 | -- 3. Ingrese algunos registros: 15 | INSERT INTO peliculas VALUES(DEFAULT, 'La virgen de los sicarios', 'Germán Jaramillo'); 16 | INSERT INTO peliculas VALUES(DEFAULT, 'La lengua de las mariposas', 'Fernando Fernan'); 17 | INSERT INTO peliculas VALUES(DEFAULT, 'Doctor Zhivago', 'Omar Sharif'); 18 | 19 | -- 4. Agregue un campo para almacenar la duración de la película, de tipo tinyint unsigned: 20 | ALTER TABLE peliculas ADD duracion TINYINT UNSIGNED; 21 | 22 | -- 5. Visualice la estructura de la tabla con "describe": 23 | DESCRIBE peliculas; 24 | 25 | -- 6. Agregue el campo "director" para almacenar el nombre del director, de tipo VARCHAR(20): 26 | ALTER TABLE peliculas ADD director VARCHAR(20); 27 | 28 | -- 7. Visualice la estructura de la tabla con su nuevo campo: 29 | DESCRIBE peliculas; 30 | 31 | -- 8. Intente agregar un campo existente. Aparece un mensaje de error: 32 | ALTER TABLE peliculas ADD duracion TINYINT UNSIGNED; -------------------------------------------------------------------------------- /parte001/ex311_libros_alter_table_drop_eliminar_campos.sql: -------------------------------------------------------------------------------- 1 | ESCDROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED AUTO_INCREMENT, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR (20), 8 | edicion DATE, 9 | precio DECIMAL(5,2) UNSIGNED, 10 | cantidad int UNSIGNED, 11 | PRIMARY KEY(codigo) 12 | ); 13 | 14 | ALTER TABLE libros 15 | DROP edicion; 16 | 17 | DESCRIBE libros; 18 | 19 | ALTER TABLE libros 20 | DROP edicion; 21 | 22 | ALTER TABLE libros 23 | DROP editorial, DROP cantidad; 24 | 25 | ALTER TABLE libros 26 | DROP codigo; 27 | -------------------------------------------------------------------------------- /parte001/ex312_peliculas_alter_table_drop_eliminar_campos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE peliculas( 6 | codigo INT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(30) NOT NULL, 8 | protagonista VARCHAR(20), 9 | actorsecundario VARCHAR(20), 10 | director VARCHAR(25), 11 | duracion TINYINT UNSIGNED, 12 | PRIMARY KEY(codigo), 13 | INDEX i_director (director) 14 | ); 15 | 16 | -- 3. Ingrese algunos registros: 17 | INSERT INTO peliculas VALUES (DEFAULT, 'La virgen de los sicarios', 'Germán Jaramillo', 'Germán Jaramillo', 'Director 1', 120); 18 | INSERT INTO peliculas VALUES (DEFAULT, 'La lengua de las mariposas', 'Fernando Fernan', 'Fernando Fernan', 'Director 2', 140); 19 | INSERT INTO peliculas VALUES (DEFAULT, 'Doctor Zhivago', 'Omar Sharif', 'Omar Sharif', 'Director 3', 150); 20 | 21 | -- 4. Vea los índices: 22 | SHOW INDEX FROM peliculas; 23 | 24 | DESCRIBE peliculas; 25 | 26 | -- 5. Elimine el campo "director": 27 | ALTER TABLE peliculas DROP director; 28 | 29 | -- 6. Visualice la estructura modificada: 30 | DESCRIBE peliculas; 31 | 32 | -- 7. Vea los índices: 33 | SHOW INDEX FROM peliculas; 34 | 35 | -- 8. Intente eliminar un campo inexistente. Aparece un mensaje de error: 36 | -- ALTER TABLE peliculas DROP director; 37 | 38 | -- 9. Elimine los campos "actorsecundario" y "duracion" en una misma sentencia: 39 | ALTER TABLE peliculas DROP actorsecundario, DROP duracion; 40 | 41 | DESCRIBE peliculas; -------------------------------------------------------------------------------- /parte001/ex313_usuarios_alter_table_drop_eliminar_campos.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS usuarios; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE usuarios ( 6 | nombre VARCHAR(30), 7 | clave VARCHAR(10) 8 | ); 9 | 10 | DESCRIBE usuarios; 11 | 12 | -- 3. Elimine el campo "clave": 13 | ALTER TABLE usuarios DROP clave; 14 | 15 | -- 4. Visualice la estructura de la tabla: 16 | DESCRIBE usuarios; 17 | 18 | -- 5. Intente eliminar el único campo de la tabla: 19 | ALTER TABLE usuarios DROP nombre; 20 | 21 | DESCRIBE usuarios; 22 | -------------------------------------------------------------------------------- /parte001/ex316_libros_alter_table_modify_modificar_campos_tabla.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED, 5 | titulo VARCHAR(30) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR (20), 8 | precio DECIMAL(5,2) UNSIGNED, 9 | cantidad INT UNSIGNED 10 | ); 11 | 12 | ALTER TABLE libros 13 | MODIFY cantidad SMALLINT UNSIGNED; 14 | 15 | DESCRIBE libros; 16 | 17 | ALTER TABLE libros 18 | MODIFY titulo VARCHAR(40) NOT NULL; 19 | 20 | DESCRIBE libros; 21 | 22 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 23 | VALUES ('El aleph','Borges','Planeta',23.5,100); 24 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 25 | VALUES ('Alicia en el pais de las maravillas','Lewis Carroll','Emece',25,200); 26 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 27 | VALUES ('El gato con botas',NULL,'Emece',10,500); 28 | INSERT INTO libros (titulo,autor,editorial,precio,cantidad) 29 | VALUES ('Martin Fierro','Jose Hernandez','Planeta',150,200); 30 | 31 | ALTER TABLE libros 32 | MODIFY autor VARCHAR(10); 33 | 34 | SELECT * FROM libros; 35 | 36 | ALTER TABLE libros 37 | MODIFY autor VARCHAR(10) NOT NULL; 38 | 39 | SELECT * FROM libros; 40 | 41 | ALTER TABLE libros 42 | MODIFY precio DECIMAL(4,2); 43 | 44 | SELECT * FROM libros; 45 | 46 | ALTER TABLE libros 47 | MODIFY codigo INT UNSIGNED AUTO_INCREMENT; 48 | 49 | -------------------------------------------------------------------------------- /parte001/ex317_libros_alter_table_modify_modificar_campos_tabla.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE peliculas( 6 | codigo INT UNSIGNED, 7 | nombre VARCHAR(20) NOT NULL, 8 | actor VARCHAR(20), 9 | director VARCHAR(25), 10 | duracion TINYINT 11 | ); 12 | 13 | DESCRIBE peliculas; 14 | 15 | -- 3. Modifique el campo "duracion" por tinyint unsigned: 16 | ALTER TABLE peliculas 17 | MODIFY duracion TINYINT UNSIGNED; 18 | 19 | DESCRIBE peliculas; 20 | 21 | -- 4. Modifique el campo "nombre" para poder almacenar una longitud de 40 caracteres y que no permita 22 | -- valores nulos: 23 | ALTER TABLE peliculas 24 | MODIFY nombre VARCHAR(40) NOT NULL; 25 | 26 | -- 5. Modifique el campo "actor" para que no permita valores nulos: 27 | ALTER TABLE peliculas 28 | MODIFY actor VARCHAR(40) NOT NULL; 29 | 30 | -- 6. Intente definir "auto_increment" el campo "codigo" (mensaje de error): 31 | ALTER TABLE peliculas 32 | MODIFY codigo INT UNSIGNED AUTO_INCREMENT; 33 | -------------------------------------------------------------------------------- /parte001/ex318_articulos_alter_table_modify_modificar_campos_tabla.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine "articulos", si existe: 2 | DROP TABLE IF EXISTS articulos; 3 | 4 | -- 2. Cree la tabla, con la siguiente estructura: 5 | CREATE TABLE articulos( 6 | codigo INT UNSIGNED, 7 | nombre varchar(25) NOT NULL, 8 | descripcion VARCHAR(30), 9 | precio DECIMAL(4,2) UNSIGNED, 10 | cantidad TINYINT, 11 | PRIMARY KEY(codigo) 12 | ); 13 | 14 | DESCRIBE articulos; 15 | 16 | -- 3. Modifique el campo "precio" para que pueda guardar valores hasta "9999.99": 17 | ALTER TABLE articulos 18 | MODIFY precio DOUBLE(6,2) UNSIGNED; 19 | 20 | DESCRIBE articulos; 21 | 22 | -- 4. Modifique el campo "codigo" para que se autoincremente: 23 | ALTER TABLE articulos 24 | MODIFY codigo INT UNSIGNED AUTO_INCREMENT; 25 | 26 | DESCRIBE articulos; 27 | 28 | -- 5. Modifique el campo "cantidad" para que no permita valores negativos: 29 | ALTER TABLE articulos 30 | MODIFY cantidad TINYINT UNSIGNED; 31 | 32 | DESCRIBE articulos; 33 | -------------------------------------------------------------------------------- /parte001/ex320_libros_alter_table_change_modificar_campos_tabla.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED AUTO_INCREMENT, 5 | nombre VARCHAR(30), 6 | autor VARCHAR(30), 7 | editorial VARCHAR (20), 8 | costo DECIMAL(5,2) UNSIGNED, 9 | cantidad INT UNSIGNED, 10 | PRIMARY KEY(codigo) 11 | ); 12 | 13 | DESCRIBE libros; 14 | 15 | ALTER TABLE libros 16 | CHANGE costo precio DECIMAL (5,2); 17 | 18 | ALTER TABLE libros 19 | CHANGE nombre titulo VARCHAR(40) NOT NULL; 20 | 21 | DESCRIBE libros; 22 | -------------------------------------------------------------------------------- /parte001/ex321_articulos_alter_table_change_modificar_campos_tabla.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS articulos; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE articulos( 6 | codigo INT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(20) NOT NULL, 8 | descripcion VARCHAR(30), 9 | precio DECIMAL(4,2) UNSIGNED, 10 | PRIMARY KEY(codigo) 11 | ); 12 | 13 | DESCRIBE articulos; 14 | 15 | -- 3. Ingrese los siguientes registros: 16 | insert into articulos (nombre,descripcion,precio) 17 | values('escuadra','plastico 20 cm.',3.50); 18 | insert into articulos (nombre,descripcion,precio) 19 | values('lápices colores','Faber x12',4.50); 20 | insert into articulos (nombre,descripcion,precio) 21 | values('lápices colores','Faber x24',7.50); 22 | insert into articulos (nombre,descripcion,precio) 23 | values('regla','30 cm.',2.50); 24 | insert into articulos (nombre,descripcion,precio) 25 | values('fibras','Faber x12',10.30); 26 | insert into articulos (nombre,descripcion,precio) 27 | values('fibras','Faber x6',5.10); 28 | 29 | -- 4. El comercio, que hasta ahora ha vendido sus artículos por mayor comenzará la venta por menor. 30 | -- Necesita alterar la tabla modificando el nombre del campo "precio" por "preciopormayor" además 31 | -- desea redefinirlo como no nulo: 32 | ALTER TABLE articulos CHANGE precio preciopormayor DECIMAL(4,2) UNSIGNED NOT NULL; 33 | 34 | DESCRIBE articulos; 35 | 36 | -- 5. También necesita alterar la tabla agregando un campo para almacenar el precio por menor para 37 | -- cada artículo. Agrege un campo llamado "preciopormenor" que no permita valores nulos: 38 | ALTER TABLE articulos ADD preciopormenor DECIMAL(4, 2) UNSIGNED NOT NULL; 39 | 40 | DESCRIBE articulos; 41 | 42 | -- 6. Muestre todos los registros: 43 | SELECT * FROM articulos; 44 | 45 | -- 7. Actualice el campo "preciopormenor" de todos los registros, dándole el valor del campo "precio" 46 | -- incrementado en un 10%: 47 | UPDATE articulos SET preciopormenor = preciopormayor * 1.10; 48 | 49 | -- 8. Muestre todos los registros: 50 | SELECT * FROM articulos; -------------------------------------------------------------------------------- /parte001/ex322_peliculas_alter_table_change_modificar_campos_tabla.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE peliculas( 6 | codigo INT UNSIGNED, 7 | nombre VARCHAR(40) NOT NULL, 8 | actor VARCHAR(20), 9 | director VARCHAR(25), 10 | duracion TINYINT UNSIGNED 11 | ); 12 | 13 | DESCRIBE peliculas; 14 | 15 | -- 3. Cambie el nombre del campo "actor" por "protagonista" y modifíquelo para que permita valores 16 | -- nulos: 17 | ALTER TABLE peliculas CHANGE actor protagonista VARCHAR(20) NOT NULL; 18 | 19 | DESCRIBE peliculas; 20 | 21 | -- 4. Cambie el campo "nombre" por "titulo" sin alterar los otros atributos: 22 | ALTER TABLE peliculas CHANGE nombre titulo VARCHAR(40) NOT NULL; 23 | 24 | DESCRIBE peliculas; 25 | 26 | -- 5. Cambie el nombre del campo "duracion" por "minutos": 27 | ALTER TABLE peliculas CHANGE duracion minutos TINYINT UNSIGNED; 28 | 29 | DESCRIBE peliculas; 30 | -------------------------------------------------------------------------------- /parte001/ex325_libros_alter_table_add_primary_key_llave_primaria_campo.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR (20), 8 | precio DECIMAL(5,2) UNSIGNED, 9 | cantidad SMALLINT UNSIGNED 10 | ); 11 | 12 | ALTER TABLE libros 13 | ADD PRIMARY KEY (codigo); 14 | 15 | describe libros; 16 | 17 | -- ALTER TABLE libros 18 | -- ADD PRIMARY KEY (titulo); 19 | 20 | ALTER TABLE libros 21 | MODIFY codigo INT UNSIGNED AUTO_INCREMENT; 22 | 23 | -- ALTER TABLE libros 24 | -- DROP PRIMARY KEY; 25 | 26 | ALTER TABLE libros 27 | MODIFY codigo INT UNSIGNED; 28 | 29 | ALTER TABLE libros 30 | DROP PRIMARY KEY; 31 | 32 | DESCRIBE libros; 33 | -------------------------------------------------------------------------------- /parte001/ex326_medicamentos_alter_table_add_primary_key_llave_primaria_campo.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS medicamentos; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE medicamentos( 6 | codigo INT UNSIGNED NOT NULL, 7 | nombre VARCHAR(20) NOT NULL, 8 | laboratorio VARCHAR(20), 9 | precio DECIMAL(6,2) UNSIGNED 10 | ); 11 | 12 | -- 3. Visualice la estructura de la tabla "medicamentos": 13 | DESCRIBE medicamentos; 14 | 15 | -- 4. Agregue una clave primaria por "codigo": 16 | ALTER TABLE medicamentos ADD PRIMARY KEY (codigo); 17 | 18 | -- 5. Para solucionar esto podemos modificar el campo convirtiéndolo en autoincrementable: 19 | ALTER TABLE medicamentos MODIFY codigo INT UNSIGNED AUTO_INCREMENT; 20 | 21 | DESCRIBE medicamentos; 22 | 23 | -- 6. Veamos los registros: 24 | SELECT * FROM medicamentos; 25 | 26 | -- 7. Ingrese más registros: 27 | INSERT INTO medicamentos (nombre, laboratorio,precio) 28 | VALUES ('Paracetamol 500','Bago',1.90); 29 | INSERT INTO medicamentos (nombre, laboratorio,precio) 30 | VALUES ('Bayaspirina','Bayer',2.10); 31 | 32 | -- 8. INTente eliminar la clave primaria: 33 | -- ALTER TABLE medicamentos DROP PRIMARY KEY; 34 | 35 | -- 9. Modifique el campo "codigo" quitándole el atributo "auto_increment": 36 | ALTER TABLE medicamentos MODIFY codigo INT UNSIGNED; 37 | 38 | -- 10. Elimine la clave primaria: 39 | ALTER TABLE medicamentos DROP PRIMARY KEY; 40 | 41 | DESCRIBE medicamentos; 42 | -------------------------------------------------------------------------------- /parte001/ex327_prestamos_alter_table_add_primary_key_llave_primaria_campo.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "prestamos" si existe: 2 | DROP TABLE IF EXISTS prestamos; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE prestamos( 6 | codigo INT UNSIGNED, 7 | titulo VARCHAR(40) NOT NULL, 8 | documento CHAR(8) NOT NULL, 9 | fechaprestamo DATE NOT NULL, 10 | fechadevolucion DATE, 11 | devuelto CHAR(1) /* si se devolvió 's' sino 'n'*/ 12 | ); 13 | 14 | DESCRIBE prestamos; 15 | 16 | -- 3. Agregue una clave primaria compuesta por "codigo" y "fechaprestamo": 17 | ALTER TABLE prestamos ADD PRIMARY KEY (codigo, fechaprestamo); 18 | 19 | DESCRIBE prestamos; 20 | 21 | -- 4. Intente agregar un registro con clave repetida. 22 | 23 | -- 5. Elimine la clave primaria: 24 | ALTER TABLE prestamos DROP PRIMARY KEY; 25 | 26 | DESCRIBE prestamos; 27 | -------------------------------------------------------------------------------- /parte001/ex329_libors_alter_table_add_index_agregar_indices_tablas.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED, 5 | titulo VARCHAR(40), 6 | autor VARCHAR(30), 7 | editorial VARCHAR (20), 8 | precio DECIMAL(5,2) UNSIGNED, 9 | cantidad SMALLINT UNSIGNED 10 | ); 11 | 12 | ALTER TABLE libros 13 | ADD INDEX i_editorial (editorial); 14 | 15 | ALTER TABLE libros 16 | ADD UNIQUE INDEX i_tituloeditorial (titulo,editorial); 17 | 18 | SHOW INDEX FROM libros; 19 | -------------------------------------------------------------------------------- /parte001/ex330_alumnos_alter_table_add_index_agregar_indices_tablas.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "alumnos" si existe: 2 | DROP TABLE IF EXISTS alumnos; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE alumnos( 6 | legajo INT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(30), 8 | documento CHAR(8) NOT NULL, 9 | domicilio VARCHAR(30), 10 | ciudad VARCHAR(20), 11 | provincia VARCHAR(20), 12 | PRIMARY KEY (legajo) 13 | ); 14 | 15 | -- 3. Vea los índices de la tabla: 16 | SHOW INDEX FROM alumnos; 17 | 18 | -- 4. Agregue un índice común por los campos "ciudad" y "provincia" (que pueden repetirse): 19 | ALTER TABLE alumnos ADD INDEX i_ciudad_provincia (ciudad, provincia); 20 | 21 | SHOW INDEX FROM alumnos; 22 | 23 | -- 5. Agregue un índice único (no pueden repetirse los valores) por el campo "documento": 24 | ALTER TABLE alumnos ADD UNIQUE INDEX i_documento (documento); 25 | 26 | -- 6. Visualice los índices: 27 | SHOW INDEX FROM alumnos; 28 | -------------------------------------------------------------------------------- /parte001/ex331_consultas_alter_table_add_index_agregar_indices_tablas.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS consultas; 3 | 4 | -- 2. Cree la tabla con una clave primaria compuesta (fecha y número de consulta): 5 | CREATE TABLE consultas( 6 | fecha DATE, 7 | numero INT UNSIGNED, 8 | documento CHAR(8) NOT NULL, 9 | obrasocial VARCHAR(30), 10 | medico VARCHAR(30), 11 | PRIMARY KEY (fecha,numero) 12 | ); 13 | 14 | SHOW INDEX FROM consultas; 15 | 16 | -- 3. Agregue un índice único llamado "i_consulta" compuesto por los campos "documento", "fecha" 17 | -- y "medico": 18 | ALTER TABLE consultas ADD UNIQUE INDEX i_consulta (documento, fecha, medico); 19 | 20 | SHOW INDEX FROM consultas; 21 | 22 | -- 4. Hay 2 campos por los cuales podemos realizar consultas frecuentemente: "medico" y "obrasocial", 23 | -- cree índices comunes para esos campos: 24 | ALTER TABLE consultas ADD INDEX i_medico (medico); 25 | ALTER TABLE consultas ADD INDEX i_obrasocial (obrasocial); 26 | 27 | -- 5. Vea los índices: 28 | SHOW INDEX FROM consultas; 29 | -------------------------------------------------------------------------------- /parte001/ex333_libros_alter_table_drop_index_eliminar_indices_tabla.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT unsigned auto_increment, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(15), 8 | PRIMARY KEY(codigo), 9 | INDEX i_editorial (editorial), 10 | UNIQUE i_tituloeditorial (titulo,editorial) 11 | ); 12 | 13 | ALTER TABLE libros 14 | DROP INDEX i_editorial; 15 | 16 | ALTER TABLE libros 17 | DROP INDEX i_tituloeditorial; 18 | 19 | SHOW INDEX FROM libros; 20 | -------------------------------------------------------------------------------- /parte001/ex334_alumnos_alter_table_drop_index_eliminar_indices_tabla.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "alumnos" si existe: 2 | DROP TABLE IF EXISTS alumnos; 3 | 4 | -- 2. Cree la tabla con los siguientes índices: 5 | create table alumnos( 6 | agnio YEAR NOT NULL, 7 | numero INT UNSIGNED NOT NULL, 8 | nombre VARCHAR(30), 9 | documento CHAR(8) NOT NULL, 10 | domicilio VARCHAR(30), 11 | ciudad VARCHAR(20), 12 | provincia VARCHAR(20), 13 | PRIMARY KEY(agnio,numero), 14 | UNIQUE i_documento (documento), 15 | INDEX i_ciudadprovincia (ciudad,provincia) 16 | ); 17 | 18 | -- 3. Vea los índices de la tabla: 19 | SHOW INDEX FROM alumnos; 20 | 21 | -- 4. Elimine el índice único: 22 | ALTER TABLE alumnos DROP INDEX i_documento; 23 | 24 | SHOW INDEX FROM alumnos; 25 | 26 | -- 5. Elimine el índice común: 27 | ALTER TABLE alumnos DROP INDEX i_ciudadprovincia; 28 | 29 | -- 6. Vea los índices: 30 | SHOW INDEX FROM alumnos; 31 | -------------------------------------------------------------------------------- /parte001/ex335_consultas_alter_table_drop_index_eliminar_indices_tabla.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS consultas; 3 | 4 | -- 2. Cree la tabla con la siguiente estructura: 5 | CREATE TABLE consultas( 6 | fecha DATE, 7 | numero INT unsigned, 8 | documento CHAR(8) NOT NULL, 9 | obrasocial VARCHAR(30), 10 | medico VARCHAR(30), 11 | PRIMARY KEY(fecha,numero), 12 | UNIQUE i_consulta(documento,fecha,medico), 13 | INDEX i_medico (medico), 14 | INDEX i_obrasocial (obrasocial) 15 | ); 16 | 17 | -- 3. Vea los índices de la tabla: 18 | SHOW INDEX FROM consultas; 19 | 20 | -- 4. Elimine el índice único: 21 | ALTER TABLE consultas DROP INDEX i_consulta; 22 | 23 | SHOW INDEX FROM consultas; 24 | 25 | -- 5. 5- Elimine los índices comumes: 26 | ALTER TABLE consultas DROP INDEX i_medico; 27 | ALTER TABLE consultas DROP INDEX i_obrasocial; 28 | 29 | -- 6. Vea los índices: 30 | SHOW INDEX FROM consultas; 31 | -------------------------------------------------------------------------------- /parte001/ex337_amigos_alter_table_rename_renombrar_tablas.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS amigos; 2 | DROP TABLE IF EXISTS contactos; 3 | 4 | CREATE TABLE amigos( 5 | nombre VARCHAR(30), 6 | domicilio VARCHAR(30), 7 | telefono VARCHAR (11) 8 | ); 9 | 10 | ALTER TABLE amigos RENAME contactos; 11 | 12 | SHOW TABLES; 13 | 14 | RENAME TABLE contactos TO amigos; 15 | 16 | SHOW TABLES; 17 | 18 | DROP TABLE IF EXISTS amigos; 19 | DROP TABLE IF EXISTS contactos; 20 | 21 | create TABLE amigos( 22 | nombre VARCHAR(30), 23 | domicilio VARCHAR(30), 24 | telefono VARCHAR (11) 25 | ); 26 | 27 | create TABLE contactos( 28 | nombre VARCHAR(30), 29 | domicilio VARCHAR(30), 30 | telefono VARCHAR (11) 31 | ); 32 | 33 | INSERT INTO contactos (nombre,telefono) 34 | VALUES ('Juancito','4565657'); 35 | INSERT INTO contactos (nombre,telefono) 36 | VALUES ('patricia','4223344'); 37 | 38 | INSERT INTO amigos (nombre,telefono) 39 | VALUES ('Perez Luis','4565657'); 40 | INSERT INTO amigos (nombre,telefono) 41 | VALUES ('Lopez','4223344'); 42 | 43 | RENAME TABLE amigos TO auxiliar, 44 | contactos TO amigos, 45 | auxiliar TO contactos; 46 | 47 | select * from amigos; 48 | select * from contactos; 49 | -------------------------------------------------------------------------------- /parte001/ex338_peliculas_alter_table_rename_renombrar_tablas.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS peliculas; 3 | DROP TABLE IF EXISTS films; 4 | 5 | -- 2. Cree la tabla "peliculas": 6 | CREATE TABLE peliculas( 7 | codigo INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, 8 | titulo VARCHAR(40), 9 | duracion TINYINT UNSIGNED 10 | ); 11 | 12 | -- 3. Cambie el nombre de la tabla por "films" con "alter table": 13 | ALTER TABLE peliculas RENAME films; 14 | 15 | -- 4. Vea si existen las tablas "peliculas" y "films": 16 | SHOW TABLES; 17 | 18 | -- 5. Cambie nuevamente el nombre, de la tabla "films" por "peliculas" usando "rename": 19 | RENAME TABLE films TO peliculas; 20 | 21 | -- 6. Vea si existen las tablas: 22 | SHOW TABLES; 23 | -------------------------------------------------------------------------------- /parte001/ex339_clientes_alter_table_rename_renombrar_tablas.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine ambas tablas si existen: 2 | DROP TABLE IF EXISTS clientes; 3 | DROP TABLE IF EXISTS empleados; 4 | DROP TABLE IF EXISTS auxiliar; 5 | 6 | -- 2. Cree las tablas dándoles el nombre equivocado, es decir, de el nombre "clientes" a la tabla que 7 | -- contiene los datos de los empleados y el nombre "empleados" a la tabla con la informaciómn de los 8 | -- clientes: 9 | CREATE TABLE clientes( 10 | documento CHAR(8) NOT NULL, 11 | nombre VARCHAR(30), 12 | domicilio VARCHAR(30), 13 | fechaingreso DATE, 14 | sueldo DECIMAL(6,2) UNSIGNED 15 | ); 16 | 17 | CREATE TABLE empleados( 18 | documento CHAR(8) NOT NULL, 19 | nombre VARCHAR(30), 20 | domicilio VARCHAR(30), 21 | ciudad VARCHAR(30), 22 | provincia VARCHAR(30) 23 | ); 24 | 25 | -- 3. Vea la estructura de ambas tablas: 26 | DESCRIBE clientes; 27 | DESCRIBE empleados; 28 | 29 | DROP TABLE IF EXISTS auxiliar; 30 | 31 | -- 4. Intercambie los nombres de las dos tablas: 32 | RENAME TABLE clientes TO auxiliar, 33 | empleados TO clientes, 34 | auxiliar TO empleados; 35 | 36 | -- 5. Verifique el cambio de nombre: 37 | DESCRIBE clientes; 38 | DESCRIBE empleados; 39 | 40 | -- 6. Vea si existe la tabla "auxiliar": 41 | SHOW TABLES; 42 | -------------------------------------------------------------------------------- /parte001/ex342_postulantes_tipo_dato_enum_enumeraciones.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS postulantes; 2 | 3 | CREATE TABLE postulantes( 4 | numero INT unsigned auto_increment, 5 | documento CHAR(8), 6 | nombre VARCHAR(30), 7 | sexo CHAR(1), 8 | estudios ENUM('ninguno','primario','secundario', 'terciario','universitario') NOT NULL, 9 | PRIMARY KEY (numero) 10 | ); 11 | 12 | INSERT INTO postulantes (documento,nombre,sexo,estudios) 13 | VALUES ('22333444','Ana Acosta','f','primario'); 14 | INSERT INTO postulantes (documento,nombre,sexo,estudios) 15 | VALUES ('22433444','Mariana Mercado','m','universitario'); 16 | 17 | INSERT INTO postulantes (documento,nombre,sexo) 18 | VALUES ('24333444','Luis Lopez','m'); 19 | 20 | SELECT * FROM postulantes; 21 | 22 | INSERT INTO postulantes (documento,nombre,sexo,estudios) 23 | VALUES ('2455566','Juana Pereyra','f',5); 24 | 25 | INSERT INTO postulantes (documento,nombre,sexo,estudios) 26 | VALUES ('24678907','Pedro Perez','m','Post Grado'); 27 | 28 | INSERT INTO postulantes (documento,nombre,sexo,estudios) 29 | VALUES ('22222333','Susana Pereyra','f',6); 30 | INSERT INTO postulantes (documento,nombre,sexo,estudios) 31 | VALUES ('25676567','Marisa Molina','f',0); 32 | 33 | SELECT * FROM postulantes 34 | WHERE estudios=0; 35 | 36 | SELECT * FROM postulantes 37 | WHERE estudios='universitario'; 38 | 39 | -- INSERT INTO postulantes (documento,nombre,sexo,estudios) 40 | -- VALUES ('25676567','Marisa Molina','f',null); 41 | -------------------------------------------------------------------------------- /parte001/ex344_viajes_tipo_dato_enum_enumeraciones.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS viajes; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE viajes( 6 | codigo INT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(50), 8 | pension ENUM ('no','media','completa') NOT NULL, 9 | hotel ENUM ('1','2','3','4','5'),/* cantidad de estrellas*/ 10 | dias TINYINT UNSIGNED, 11 | salida DATE, 12 | precioporpersona DECIMAL(8,2) UNSIGNED, 13 | PRIMARY KEY (codigo) 14 | ); 15 | 16 | DESCRIBE viajes; 17 | 18 | -- 4. Ingrese algunos registros: 19 | INSERT INTO viajes (nombre,pension,hotel,dias,salida) 20 | VALUES ('Mexico mágico','completa','4',15,'2005-12-01'); 21 | INSERT INTO viajes (nombre,pension,hotel,dias,salida) 22 | VALUES ('Europa fantastica','media','5',28,'2005-05-10'); 23 | INSERT INTO viajes (nombre,pension,hotel,dias,salida) 24 | VALUES ('Caribe especial','no','3',7,'2005-11-25'); 25 | 26 | -- 5. Intente ingresar un valor "null" para el campo "pension": 27 | -- INSERT INTO viajes (nombre,pension,hotel,dias,salida) 28 | -- VALUES ('Mexico maravilloso',null,'4',15,'2005-12-01'); 29 | 30 | -- 6. Ingrese valor nulo para el campo "hotel" 31 | INSERT INTO viajes (nombre,pension,hotel,dias,salida) 32 | VALUES ('Mexico especial','media',3,18,'2005-11-01'); 33 | 34 | -- 7. Ingrese un valor inválido, no presente en la lista de "pension" (guarda una cadena vacía): 35 | INSERT INTO viajes (nombre,pension,hotel,dias,salida) 36 | VALUES ('Caribe especial','ninguna','4',18,'2005-11-01'); 37 | 38 | -- 8. Ingrese un valor de índice fuera de rango para el campo "hotel": 39 | INSERT INTO viajes (nombre,pension,hotel,dias,salida) 40 | VALUES ('Venezuela única','no',6,18,'2005-11-01'); 41 | 42 | -- 9. Seleccione todos los viajes que incluyen media pensión: 43 | SELECT * FROM viajes 44 | WHERE pension = 2; 45 | 46 | -- 10. Seleccione todos los viajes que incluyen un hotel de 4 estrellas: 47 | SELECT * FROM viajes 48 | WHERE hotel = '4'; 49 | -------------------------------------------------------------------------------- /parte001/ex345_inmuebles_tipo_dato_enum_enumeraciones.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "inmuebles" si existe: 2 | DROP TABLE IF EXISTS inmuebles; 3 | 4 | -- 2. Cree la tabla "inmuebles" para registrar la siguiente información: 5 | -- tipo de inmueble: tipo enum (casa,dpto,local,terreno), not null, 6 | -- domicilio: varchar(30), 7 | -- propietario: nombre del dueño, 8 | -- precio: decimal hasta $999999.99 positivo. 9 | CREATE TABLE inmuebles( 10 | tipo ENUM ('casa', 'departamento', 'local', 'terreno') NOT NULL, 11 | domicilio VARCHAR(30), 12 | propietario VARCHAR(48), 13 | precio DECIMAL(8,2) UNSIGNED 14 | ); 15 | 16 | -- 3. Ingrese algunos registros: 17 | INSERT INTO inmuebles VALUES ('departamento', 'Carrera 3ra', 'Luis Pérez', 999.99); 18 | INSERT INTO inmuebles VALUES ('casa', 'Calle 3ra', 'Juan Rodríguez', 9999.99); 19 | INSERT INTO inmuebles VALUES (2, 'Avenida 9na', 'Daniela Gómez', 1235.50); 20 | INSERT INTO inmuebles VALUES (4, 'Vereda Primera', 'Carlos Tovar', 3985.90); 21 | 22 | -- 4. Seleccione el domicilio y precio de todos los departamentos en alquiler: 23 | SELECT domicilio, precio FROM inmuebles WHERE tipo = 'departamento'; 24 | 25 | -- 5. Seleccione el domicilio, propietario y precio de todos los locales en venta: 26 | SELECT domicilio, propietario, precio FROM inmuebles WHERE tipo = 'local'; 27 | 28 | -- 6. Seleccione el domicilio y precio de todas las casas disponibles: 29 | SELECT domicilio, precio FROM inmuebles WHERE tipo = 1; 30 | -------------------------------------------------------------------------------- /parte001/ex348_postulantes_set_conjunto_valores_campo.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS postulantes; 2 | 3 | CREATE TABLE postulantes( 4 | numero INT UNSIGNED AUTO_INCREMENT, 5 | documento CHAR(8), 6 | nombre VARCHAR(30), 7 | idioma SET('ingles','italiano','portuges'), 8 | PRIMARY KEY (numero) 9 | ); 10 | 11 | INSERT INTO postulantes (documento,nombre,idioma) 12 | VALUES ('22555444','Ana Acosta','ingles'); 13 | 14 | INSERT INTO postulantes (documento,nombre,idioma) 15 | VALUES ('23555444','Juana Pereyra','ingles,italiano'); 16 | 17 | INSERT INTO postulantes (documento,nombre,idioma) 18 | VALUES ('25555444','Andrea Garcia','italiano,ingles'); 19 | 20 | INSERT INTO postulantes (documento,nombre,idioma) 21 | VALUES ('27555444','Diego Morales','italiano,ingles,italiano'); 22 | 23 | INSERT INTO postulantes (documento,nombre,idioma) 24 | VALUES ('27555464','Diana Herrero','frances'); 25 | 26 | INSERT INTO postulantes (documento,nombre,idioma) 27 | VALUES ('28255265','Pedro Perez',0); 28 | INSERT INTO postulantes (documento,nombre,idioma) 29 | VALUES ('22255260','Nicolas Duarte',8); 30 | 31 | INSERT INTO postulantes (documento,nombre) 32 | VALUES ('28555464','Ines Figueroa'); 33 | 34 | INSERT INTO postulantes (documento,nombre,idioma) 35 | VALUES ('29255265','Esteban Juarez',7); 36 | 37 | SELECT * FROM postulantes 38 | WHERE idioma LIKE '%ingles%'; 39 | 40 | SELECT * FROM postulantes 41 | WHERE idioma LIKE '%ingles,italiano%'; 42 | 43 | SELECT * FROM postulantes 44 | WHERE idioma LIKE '%italiano,ingles%'; 45 | 46 | SELECT * FROM postulantes 47 | WHERE FIND_IN_SET('ingles',idioma)>0; 48 | 49 | SELECT * FROM postulantes 50 | WHERE idioma='ingles'; 51 | 52 | SELECT * FROM postulantes 53 | WHERE idioma=1; 54 | 55 | SELECT * FROM postulantes 56 | WHERE idioma=7; 57 | 58 | SELECT * FROM postulantes 59 | WHERE idioma NOT LIKE '%ingles%'; 60 | SELECT * FROM postulantes 61 | WHERE NOT FIND_IN_SET('ingles',idioma)>0; -------------------------------------------------------------------------------- /parte001/ex350_cursos_set_conjunto_valores_campo.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla "inmuebles" si existe: 2 | DROP TABLE IF EXISTS inmuebles; 3 | 4 | -- 2. Cree la tabla "inmuebles": 5 | CREATE TABLE inmuebles( 6 | detalles SET ('estacionamiento','terraza','pileta','patio','ascensor'), 7 | domicilio VARCHAR(30), 8 | propietario VARCHAR(30), 9 | precio DECIMAL (9,2) UNSIGNED 10 | ); 11 | 12 | -- 3. Ingrese algunos registros: 13 | INSERT INTO inmuebles (detalles,precio) 14 | VALUES ('terraza,pileta',50000); 15 | INSERT INTO inmuebles (detalles,precio) 16 | VALUES ('patio,terraza,pileta',60000); 17 | INSERT INTO inmuebles (detalles,precio) 18 | VALUES ('ascensor,terraza,pileta',80000); 19 | INSERT INTO inmuebles (detalles,precio) 20 | VALUES ('patio,estacionamiento',65000); 21 | INSERT INTO inmuebles (detalles,precio) 22 | VALUES ('estacionamiento',90000); 23 | 24 | -- 4. Seleccione todos los datos de los departamentos con terraza: 25 | SELECT * FROM inmuebles 26 | WHERE FIND_IN_SET('terraza', detalles) > 0; 27 | 28 | -- 5. Seleccione los departamentos que no tiene ascensor: 29 | SELECT * FROM inmuebles 30 | WHERE detalles NOT LIKE '%ascensor%'; 31 | 32 | -- 6. Muestre los inmuebles que tengan terraza y pileta solamente: 33 | SELECT * FROM inmuebles 34 | WHERE detalles = 'terraza,pileta'; 35 | 36 | -- 7. Muestre los inmuebles que no tengan ascensor y si estacionamiento, además de otros detalles: 37 | SELECT * FROM inmuebles 38 | WHERE detalles NOT LIKE '%ascensor%' AND detalles LIKE '%estacionamiento%'; 39 | 40 | -- 8. Ingrese un registro con valor inexistente en "detalles": 41 | INSERT INTO inmuebles (detalles,precio) 42 | VALUES ('terraza,barbacoa',50000); 43 | 44 | SELECT * FROM inmuebles; 45 | 46 | -- 9. Ingrese un registro sin valor para "detalles": 47 | INSERT INTO inmuebles (precio) 48 | VALUES (60000); 49 | 50 | SELECT * FROM inmuebles; 51 | -------------------------------------------------------------------------------- /parte001/ex350_viajes_set_conjunto_valores_campo.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS viajes; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE viajes( 6 | codigo INT UNSIGNED AUTO_INCREMENT, 7 | nombre VARCHAR(50), 8 | pension ENUM ('no','media','completa') NOT NULL, 9 | ciudades SET ('Acapulco','DF','Cancun','Puerto Vallarta','Cuernavaca') NOT NULL, 10 | dias TINYINT UNSIGNED, 11 | salida DATE, 12 | precioporpersona DECIMAL(8,2) UNSIGNED, 13 | PRIMARY KEY (codigo) 14 | ); 15 | 16 | -- 3. Ingrese los siguientes registros: 17 | INSERT INTO viajes (nombre,pension,ciudades,dias,salida) 18 | VALUES ('Mexico mágico','completa','DF,Acapulco',15,'2005-12-01'); 19 | INSERT INTO viajes (nombre,pension,ciudades,dias,salida) 20 | VALUES ('Mexico especial','media','DF,Acapulco,Cuernavaca',28,'2005-05-10'); 21 | INSERT INTO viajes (nombre,pension,ciudades,dias,salida) 22 | VALUES ('Mexico unico','no','Acapulco,Puerto Vallarta',7,'2005-11-15'); 23 | INSERT INTO viajes (nombre,pension,ciudades,dias,salida) 24 | VALUES ('Mexico DF','no','DF',5,'2005-10-25'); 25 | INSERT INTO viajes (nombre,pension,ciudades,dias,salida) 26 | VALUES ('Mexico caribeño','completa','Cancun',15,'2005-10-25'); 27 | 28 | -- 4. Ingrese un registro sin valor para el campo "ciudades": 29 | INSERT INTO viajes (nombre,pension,dias,salida) 30 | VALUES ('Mexico caribeño','completa',15,'2005-11-27'); 31 | 32 | -- 5. Seleccione todos los viajes que incluyan "Acapulco": 33 | SELECT * FROM viajes 34 | WHERE FIND_IN_SET('Acapulco', ciudades); 35 | 36 | -- 6. Seleccione todos los viajes que no incluyan "Acapulco" y que incluyan pensión completa: 37 | SELECT * FROM viajes 38 | WHERE ciudades NOT LIKE '%Acapulco%' AND pension = 'completa'; 39 | 40 | -- 7. Muestre los viajes que incluyan "Puerto Vallarta" o "Cuernavaca": 41 | SELECT * FROM viajes 42 | WHERE FIND_IN_SET('Puerto Vallarta', ciudades) 43 | OR FIND_IN_SET('Cuernavaca', ciudades); 44 | -------------------------------------------------------------------------------- /parte001/ex354_peliculas_tipo_dato_text_blob_texto_extenso.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS peliculas; 2 | 3 | CREATE TABLE peliculas( 4 | codigo INT UNSIGNED AUTO_INCREMENT, 5 | nombre VARCHAR(40), 6 | actor VARCHAR(30), 7 | duracion TINYINT UNSIGNED, 8 | sinopsis TEXT, 9 | PRIMARY KEY (codigo) 10 | ); 11 | 12 | INSERT INTO peliculas VALUES (1,'Mentes que brillan','Jodie Foster',120, 13 | 'El no entiende al mundo ni el mundo lo entiende a él, es un niño superdotado. La escuela 14 | especial a la que asiste tampoco resuelve los problemas del niño. Su madre hará todo lo que esté a 15 | su alcance para ayudarlo. Drama'); 16 | 17 | INSERT INTO peliculas VALUES (2,'Charlie y la fábrica de chocolate','J. Deep',120, 'Un niño llamado 18 | Charlie tiene la ilusión de encontrar uno de los 5 tickets del concurso para entrar a la fabulosa 19 | fábrica de chocolates del excéntrico Willy Wonka y descubrir el misterio de sus golosinas. 20 | Aventuras'); 21 | 22 | INSERT INTO peliculas VALUES (3,'La terminal','Tom Hanks',180, 'Sin papeles y esperando que el gobierno resuelva su situación migratoria, Victor convierte el aeropuerto de Nueva York en su nuevo hogar trasformando la vida de los empleados del lugar. Drama'); 23 | 24 | SELECT * FROM peliculas 25 | WHERE sinopsis LIKE '%Drama%'; 26 | 27 | SELECT * FROM peliculas 28 | WHERE sinopsis LIKE '%chocolates%'; 29 | -------------------------------------------------------------------------------- /parte001/ex355_inmuebles_tipo_dato_text_blob_texto_extenso.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS inmuebles; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE inmuebles( 6 | codigo INT UNSIGNED AUTO_INCREMENT, 7 | domicilio VARCHAR(30), 8 | barrio VARCHAR(20), 9 | detalles TEXT, 10 | PRIMARY KEY(codigo) 11 | ); 12 | 13 | -- 3. Ingrese algunos registros: 14 | INSERT INTO inmuebles VALUES (1,'Colon 123','Centro','patio, 3 dormitorios, garage doble, pileta, 15 | asador, living, cocina, comedor, escritorio, 2 baños'); 16 | INSERT INTO inmuebles VALUES (2,'Caseros 345','Centro','patio, 2 dormitorios, cocina- comedor, 17 | living'); 18 | INSERT INTO inmuebles VALUES (3,'Sucre 346','Alberdi','2 dormitorios, problemas de humedad'); 19 | INSERT INTO inmuebles VALUES (4,'Sarmiento 832','Gral. Paz','3 dormitorios, garage, 2 patios'); 20 | INSERT INTO inmuebles VALUES (5,'Avellaneda 384','Centro',' 2 patios, 2 dormitorios, garage'); 21 | 22 | -- 4. Busque todos los inmuebles que tengan "patio": 23 | SELECT * FROM inmuebles WHERE detalles LIKE '%patio%'; 24 | -------------------------------------------------------------------------------- /parte001/ex356_libros_tipo_dato_text_blob_texto_extenso.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS libros; 3 | 4 | -- 2. Cree la tabla con un campo "blob" en el cual se pueda almacenar los temas principales que trata 5 | -- el libro: 6 | CREATE TABLE libros( 7 | codigo INT UNSIGNED AUTO_INCREMENT, 8 | titulo VARCHAR(40), 9 | autor VARCHAR(30), 10 | editorial VARCHAR(20), 11 | temas BLOB, 12 | precio DECIMAL(5,2) UNSIGNED, 13 | PRIMARY KEY (codigo) 14 | ); 15 | 16 | -- 3. Ingrese algunos registros.: 17 | INSERT INTO libros VALUES (1,'Aprenda PHP','Mario Molina','Emece', 18 | 'Instalacion de PHP. 19 | Palabras reservadas. 20 | Sentencias basicas. 21 | Definicion de variables.', 22 | 45.6); 23 | 24 | INSERT INTO libros VALUES (2,'Java en 10 minutos','Mario Molina','Planeta', 25 | 'Instalacion de Java en Windows. 26 | Instalacion de Java en Linux. 27 | Palabras reservadas. 28 | Sentencias basicas. 29 | Definir variables.', 30 | 55); 31 | 32 | INSERT INTO libros VALUES (3,'PHP desde cero','Joaquin Perez','Planeta', 33 | 'Instalacion de PHP. 34 | Instrucciones basicas. 35 | Definición de variables.', 36 | 50); 37 | 38 | -- 4. Busque todos los libros sobre "PHP" que incluyan el tema "variables": 39 | SELECT * FROM libros 40 | WHERE titulo LIKE '%PHP%' AND temas LIKE '%variables%'; 41 | 42 | -- 5. Busque los libros de "Java" que incluyan el tema "Instalacion" o "Instalar": 43 | SELECT * FROM libros 44 | WHERE titulo LIKE '%Java%' AND (temas LIKE '%Instalación%' OR temas LIKE '%Instalar%'); 45 | -------------------------------------------------------------------------------- /parte001/ex358_libros_if_funcion_condicional.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE IF EXISTS libros; 2 | 3 | CREATE TABLE libros( 4 | codigo INT UNSIGNED AUTO_INCREMENT, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30), 7 | editorial VARCHAR(30), 8 | precio DECIMAL(5,2) UNSIGNED, 9 | PRIMARY KEY (codigo) 10 | ); 11 | 12 | INSERT INTO libros (titulo, autor,editorial,precio) 13 | VALUES ('Alicia en el pais de lAS maravillAS','Lewis Carroll','Paidos',50.5); 14 | INSERT INTO libros (titulo, autor,editorial,precio) 15 | VALUES ('Alicia a traves del espejo','Lewis Carroll','Emece',25); 16 | INSERT INTO libros (titulo, autor,editorial,precio) 17 | VALUES ('El aleph','Borges','Paidos',15); 18 | INSERT INTO libros (titulo, autor,editorial,precio) 19 | VALUES ('Matemática estAS ahi','Paenza','Paidos',10); 20 | INSERT INTO libros (titulo, autor,editorial) 21 | VALUES ('Antologia','Borges','Paidos'); 22 | INSERT INTO libros (titulo, editorial) 23 | VALUES ('El gato con botAS','Paidos'); 24 | INSERT INTO libros (titulo, autor,editorial,precio) 25 | VALUES ('Martin Fierro','Jose Hernandez','Emece',90); 26 | 27 | SELECT titulo FROM libros 28 | WHERE precio<50; 29 | 30 | SELECT titulo FROM libros 31 | WHERE precio >=50; 32 | 33 | SELECT titulo, 34 | IF (precio>50,'caro','economico') 35 | FROM libros; 36 | 37 | SELECT autor, COUNT(*) 38 | FROM libros 39 | GROUP BY autor; 40 | 41 | SELECT autor, COUNT(*) 42 | FROM libros 43 | GROUP BY autor 44 | HAVING COUNT(*)>1; 45 | 46 | SELECT autor, 47 | IF (COUNT(*)>1,'Más de 1','1') 48 | FROM libros 49 | GROUP BY autor; 50 | 51 | SELECT autor, 52 | IF (COUNT(*)>1,'Más de 1','1') AS cantidad 53 | FROM libros 54 | GROUP BY autor 55 | ORDER BY cantidad; 56 | 57 | SELECT editorial, 58 | IF (COUNT(*)>4,'5 o más','menos de 5') AS cantidad 59 | FROM libros 60 | GROUP BY editorial 61 | ORDER BY cantidad; 62 | -------------------------------------------------------------------------------- /parte001/ex361_alumnos_if_funcion_condicional.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS alumnos; 3 | 4 | -- 2. cree la tabla: 5 | CREATE TABLE alumnos( 6 | legajo CHAR(5) NOT NULL, 7 | nombre VARCHAR(30), 8 | promedio DECIMAL(4,2) 9 | ); 10 | 11 | -- 3. Ingrese los siguientes registros: 12 | INSERT INTO alumnos VALUES (3456,'Perez Luis',8.5); 13 | INSERT INTO alumnos VALUES (3556,'Garcia Ana',7.0); 14 | INSERT INTO alumnos VALUES (3656,'Ludueña Juan',9.6); 15 | INSERT INTO alumnos VALUES (2756,'Moreno Gabriela',4.8); 16 | INSERT INTO alumnos VALUES (4856,'Morales Hugo',3.2); 17 | 18 | -- 4. Si el alumno tiene un promedio superior o igual a 4, muestre un mensaje "aprobado" en caso 19 | -- contrario "reprobado": 20 | SELECT nombre, IF(promedio >= 4, 'aprobado', 'reprobado') AS paso 21 | FROM alumnos; 22 | 23 | -- 5. Es política del profesor entregar una medalla a quienes tengan un promedio igual o superior a 9. 24 | -- Muestre los nombres y promedios de los alumnos y un mensaje "medalla" a quienes cumplan con ese 25 | -- requisito: 26 | SELECT nombre, IF(promedio >= 9, 'Medalla', '') AS premio 27 | FROM alumnos; 28 | -------------------------------------------------------------------------------- /parte001/ex363_entradas_if_funcion_condicional.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla, si existe: 2 | DROP TABLE IF EXISTS entradas; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE entradas( 6 | sala TINYINT UNSIGNED, 7 | fecha DATE, 8 | hora TIME, 9 | capacidad SMALLINT UNSIGNED, 10 | entradasvendidas SMALLINT UNSIGNED, 11 | PRIMARY KEY (sala,fecha,hora) 12 | ); 13 | 14 | -- 3. Ingrese algunos registros: 15 | INSERT INTO entradas VALUES (1,'2006-05-10','20:00',300,50); 16 | INSERT INTO entradas VALUES (1,'2006-05-10','23:00',300,250); 17 | INSERT INTO entradas VALUES (2,'2006-05-10','20:00',400,350); 18 | INSERT INTO entradas VALUES (2,'2006-05-11','20:00',400,380); 19 | INSERT INTO entradas VALUES (2,'2006-05-11','23:00',400,400); 20 | INSERT INTO entradas VALUES (3,'2006-05-12','20:00',350,350); 21 | INSERT INTO entradas VALUES (3,'2006-05-12','22:30',350,100); 22 | INSERT INTO entradas VALUES (4,'2006-05-12','20:00',250,0); 23 | 24 | -- 4. Muestre todos los registros y un mensaje si las entradas para una función están agotadas: 25 | SELECT sala, fecha, hora, IF(capacidad = entradasvendidas, 'Sala llena', 26 | capacidad - entradasvendidas) AS 'Entradas disponibles' 27 | FROM entradas; 28 | 29 | -- 5. Muestre todos los datos de las funciones que tienen vendidad entradas y muestre un mensaje si se 30 | -- vendió más o menos de la mitad de la capacidad de la sala: 31 | SELECT *, 32 | IF(entradasvendidas > (capacidad DIV 2), 'Más de la mitad vendidas', 'Menos de la mitdad vendidas') AS 'Vendidas' 33 | FROM entradas 34 | WHERE entradasvendidas > 0; 35 | -------------------------------------------------------------------------------- /parte001/ex367_alumnos_case_funcion_condicional.sql: -------------------------------------------------------------------------------- 1 | -- 1. Elimine la tabla si existe: 2 | DROP TABLE IF EXISTS alumnos; 3 | 4 | -- 2. Cree la tabla: 5 | CREATE TABLE alumnos( 6 | legajo CHAR(5) NOT NULL, 7 | nombre VARCHAR(30), 8 | promedio DECIMAL(4,2) 9 | ); 10 | 11 | -- 3. Ingrese los siguientes registros: 12 | INSERT INTO alumnos VALUES (3456,'Perez Luis',8.5); 13 | INSERT INTO alumnos VALUES (3556,'Garcia Ana',7.0); 14 | INSERT INTO alumnos VALUES (3656,'Ludueña Juan',9.6); 15 | INSERT INTO alumnos VALUES (2756,'Moreno Gabriela',4.8); 16 | INSERT INTO alumnos VALUES (4856,'Morales Hugo',3.2); 17 | INSERT INTO alumnos VALUES (7856,'Gomez Susana',6.4); 18 | 19 | -- 4- Si el alumno tiene un promedio menor a 4, muestre un mensaje "reprobado", si el promedio es 20 | -- mayor o igual a 4 y menor a 7, muestre "regular", si el promedio es mayor o igual a 7, 21 | -- muestre "promocionado", usando la primera sintaxis de "case": 22 | SELECT legajo, promedio, 23 | CASE TRUNCATE(promedio, 0) 24 | WHEN 0 THEN 'reprobado' 25 | WHEN 1 THEN 'reprobado' 26 | WHEN 2 THEN 'reprobado' 27 | WHEN 3 THEN 'reprobado' 28 | WHEN 4 THEN 'regular' 29 | WHEN 5 THEN 'regular' 30 | WHEN 6 THEN 'regular' 31 | ELSE 'promocionado' END AS 'estado' 32 | FROM alumnos; 33 | 34 | -- 5- Obtenga la misma salida anterior pero empleando la otra sintaxis de "case": 35 | SELECT legajo, promedio, 36 | CASE WHEN promedio < 4 THEN 'reprobado' 37 | WHEN promedio >= 4 AND promedio < 7 THEN 'regular' 38 | ELSE 'promocionado' END AS 'estado' 39 | FROM alumnos; 40 | -------------------------------------------------------------------------------- /parte001/ex379_libros_editoriales_llave_foranea.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE libros, editoriales; 2 | 3 | CREATE TABLE libros( 4 | codigo int UNSIGNED AUTO_INCREMENT, 5 | titulo VARCHAR(40) NOT NULL, 6 | autor VARCHAR(30) NOT NULL DEFAULT 'Desconocido', 7 | codigoeditorial TINYINT UNSIGNED NOT NULL, 8 | precio DECIMAL(5,2) UNSIGNED, 9 | cantidad SMALLINT UNSIGNED DEFAULT 0, 10 | PRIMARY KEY (codigo) 11 | ); 12 | 13 | CREATE TABLE editoriales( 14 | codigo TINYINT UNSIGNED AUTO_INCREMENT, 15 | nombre VARCHAR(20) NOT NULL, 16 | PRIMARY KEY(codigo) 17 | ); 18 | 19 | INSERT INTO editoriales VALUES (2,'Emece'); 20 | INSERT INTO editoriales VALUES (15,'Planeta'); 21 | INSERT INTO editoriales VALUES (23,'Paidos'); 22 | 23 | INSERT INTO libros VALUES (1,'El aleph','Borges',23,4.55,10); 24 | INSERT INTO libros VALUES (2,'Alicia en el pais de las maravillas','Lewis Carroll',2,11.55,2); 25 | INSERT INTO libros VALUES (3,'Martin Fierro','Jose Hernandez',15,7.12,4); 26 | 27 | 28 | ALTER TABLE libros 29 | MODIFY codigoeditorial CHAR(1); 30 | 31 | SELECT * FROM libros; 32 | 33 | SELECT l.titulo,e.nombre 34 | FROM libros AS l 35 | JOIN editoriales AS e 36 | ON l.codigoeditorial=e.codigo; 37 | 38 | ALTER TABLE editoriales 39 | MODIFY codigo CHAR(1); 40 | --------------------------------------------------------------------------------