Archivo del blog

jueves, 6 de abril de 2017

UF2176_R1 Codigos

GRUPOS DE COMANDOS SQL


DDL : crear y modificar la estructura de una bbdd
  • CREATE, ALTER, DROP, TRUNCATE 
DML : seleccionar registros de una bbdd, consultar, insertar, actualizar
  • SELECT, INSERT, UPDATE, DELETE 
DCL : proporciona seguridad
  • GRANT, REVOKE 
TCL : gestion de cambios de datos
  • COMMIT, ROLLBACK, SAVE POINT 
CLAUSULAS
  • FROM, WHERE, GROUP BY, HAVING, ORDER BY
Herramienta para hacer pruebas y ejercicios de sentencias SQL en línea

Si no tienes un motor de base de datos a tu disposición y quieres correr algunas instrucciones de SQL, te recomiendo este sitio web:

http://sqlfiddle.com

Puedes seleccionar de distintos manejadores de bases de datos

Después pones las instrucciones para crear tu tabla e insertar algunos registros de prueba y oprimes Build Schema.

Una vez hecho lo anterior tendrás tu base de datos lista y con registros para probar, ahora del lado derecho teclea tu consulta y oprime Run SQL


EXPORTAR DE ACCESS A MYSQL
Desde la Tabla - Menu datos externos - Excel - Aceptar Abrir con Excel y guardar como OpenDocumente (ods)

Abrir phpmyadmin Crear una BBDD - seleccionarla - importar *.ods (ojo formato : OpenDocument)
habilitar la primera fila contiene nombres
en excel el formato de las fechas 'aaaa-mm-dd',
en mysql cambiar el formato del campo a Date

Sintaxis (En otros motores Auto_increment, Autonumerico)
IDENTITY [ (seed , increment) ]
Argumentos
seed
    Es el valor que se utiliza para la primera fila cargada en la tabla.
increment
    Se trata del valor incremental que se agrega al valor de identidad de la anterior fila cargada.

CREAR BASES DE DATOS


MOSTRAR BASES DE DATOS
 

ENTRAR EN MYSQL DESDE CONSOLA
 

USAR UNA BASES DE DATOS
 

CREAR TABLA
 


INSERTAR UN REGISTRO


LISTA TODOS LOS DATOS DE UNA TABLA


SELECCIONA TODOS CAMPOS DE LOS REGISTROS CUYO DEPARTAMENTO SEA 1, 2 O 3


SELECCIONAR REGISTROS ENTRE DOS FECHAS


MUESTRA REGISTROS CUYO CAMPO seccion SEA IGUAL A deportes, ORDENANDOLOS DE FORMA DESCENDENTE (en la segunda ORDENA POR seccion y precio)


SUMA EL CAMPO precio AGUPANDOLO POR EL CAMPO seccion

SUM = suma AVG = media COUNT = cuenta MAX = maximo MIN = minimo

HAVING
MUESTRA LAS DIFERENTES secciones, SUMA EL CAMPO precio AGRUPO POR secciones Y ORDENA POR LA SUMA de los precios DE LA seccion DEPORTES


CUENTA LOS REGISTROS AGRUPADOS POR poblacion


REDONDEA UNA CANTIDAD CON UN NUMERO DE DECIMALES


CALCULA LOS DIAS ENTRE DOS FECHA


DA FORMATO A LAS FECHAS


UNION = UNE DOS TABLAS CON EL MISMO Nº DE CAMPOS Y ESTOS DE TIPO CAMPATIBLE (UNION los registros repetidos solo los muestra una vez) (UNION ALL muestra también los repetidos) (se puede hacer tantas uniones como haga falta en una consulta)


SUBCONSULTAS ESCALONADAS


SUBCONSULTAS DE LISTAS (ALL = todos ANY = cualquiera)


SUBCONSULTAS con IN y con NOT IN


Para duplicar una tabla, 
podemos hacer varias cosas, copiar sólo la estructura:
porque puede ser útil para casos X, o bien hacer un duplicado exacto de la misma:
 
con la salvedad de que, no se copiarán las constraints o índices. Hay cre crear los indices:
 

Insertar filas mediante subconsultas INSERT y SELECT
La subconsulta SELECT de la instrucción INSERT se puede utilizar para agregar valores a una tabla de una o más tablas o vistas. Además, utilizar una subconsulta SELECT permite insertar más de una fila al mismo tiempo.
En el siguiente ejemplo, la instrucción INSERT inserta en una tabla independiente algunos de los datos de todas las filas de una tabla



La función CONCAT
La función CONCAT permite concatenar varias cadenas de texto (desde 2 hasta 254) de una manera muy sencilla, tal y como se muestra en la siguiente consulta SQL de ejemplo:


Resultado con formato personalizado (ver tipos de cadenas con formato



48. Hallar los departamentos que tienen más de tres (3) empleados. Entregar el número de empleados de esos departamentos.


Caracteres comodín de SQL

Un carácter comodín se utiliza para sustituir cualquier otro carácter (s) en una cadena.
Los caracteres comodín se utilizan con el operador SQL LIKE. El operador LIKE se utiliza en una cláusula WHERE para buscar un patrón especificado en una columna.
Hay dos comodines utilizados junto con el operador LIKE:
  • % - El signo de porcentaje representa cero, uno o varios caracteres
  • _ - El subrayado representa un solo carácter
Nota: MS Access utiliza un signo de interrogación (?) En lugar del subrayado (_).
En MS Access y SQL Server también puede utilizar:
  • [Charlist] - Define conjuntos y rangos de caracteres para coincidir
  • [^ Charlist] o [! Charlist] - Define conjuntos y rangos de caracteres NO coincidentes
Los comodines también se pueden utilizar en combinaciones!
Estos son algunos ejemplos que muestran diferentes operadores LIKE con comodines '%' y '_':
LIKE Operator Description
WHERE CustomerName LIKE 'a%' Encuentra cualquier valor que comience con "a"
WHERE CustomerName LIKE '%a' Encuentra cualquier valor que termine con "a"
WHERE CustomerName LIKE '%o%' Encuentra cualquier valor que tenga "o" en cualquier posición
WHERE CustomerName LIKE '_r%' Encuentra cualquier valor que tenga "r" en la segunda posición
WHERE CustomerName LIKE 'a_%_%' Encuentra cualquier valor que empiece por "a" y tenga al menos 3 caracteres de longitud
WHERE ContactName LIKE 'a%o' Encuentra cualquier valor que comience con "a" y termine con "o"


Orden
del
concepto
ConceptoDetalle
del
concepto
Problema
resuelto
Problema
a
resolver
1Introducción.

2show databases
3Creación de una tabla y mostrar sus campos (create table - show tables - describe - drop table)
4Carga de registros a una tabla y su recuperación (insert into - select)
5Típos de datos básicos de un campo de una tabla.
6Recuperación de algunos campos (select)
7Recuperación de registros específicos (select - where)
8Operadores Relacionales = <> < <= > >=
9Borrado de registros de una tabla (delete)
10Modificación de registros de una tabla (update)
11Clave primaria.
12Campo entero con autoincremento.
13Comando truncate table.
14Valores null.
15Valores numéricos sin signo (unsigned)
16Tipos de datos

17Tipos de datos (texto)
18Tipos de datos (numéricos)
19Tipos de datos (fechas y horas)
20Valores por defecto.
21Valores inválidos.


Orden
del
concepto
ConceptoDetalle
del
concepto
Problema
resuelto
Problema
a
resolver
22Atributo default en una columna de una tabla.
23Atributo zerofill en una columna de una tabla.
24Columnas calculadas.
25Funciones para el manejo de cadenas.
26Funciones matemáticas.
27Funciones para el uso de fecha y hora.
28Cláusula order by del select.
29Operadores Lógicos (and - or - not)
30Otros operadores relacionales (between - in)
31Búsqueda de patrones (like y not like)
32Búsqueda de patrones (regexp)
33Contar registros (count)
34Funciones de agrupamiento (count - max - min - sum - avg)
35Agrupar registros (group by)
36Selección de un grupo de registros (having)
37Registros duplicados (distinct)
38Alias
39Clave primaria compuesta.
40Indice de una tabla.

41Indice de tipo primary.
42Indice común (index)


Orden
del
concepto
ConceptoDetalle
del
concepto
Problema
resuelto
Problema
a
resolver
43Indice único (unique)
44Borrar indice (drop index)
45Creación de índices a tablas existentes (create index)
46Cláusula limit del comando select.
47Recuperación de registros en forma aleatoria(rand)
48Remplazar registros (replace)
49Agregar campos a una tabla (alter table - add)
50Eliminar campos de una tabla (alter table - drop)
51Modificar campos de una tabla (alter table - modify)
52Cambiar el nombre de un campo de una tabla (alter table - change)
53Agregar y eliminar la clave primaria (alter table)
54Agregar índices(alter table - add index)
55Borrado de índices (alter table - drop index)
56renombrar tablas (alter table - rename - rename table)
57Tipo de dato enum.
58Tipo de dato set.
59Tipos de datos blob y text.
60Funciones de control de flujo (if)
61Funciones de control de flujo (case)
62Varias tablas (join)
63Clave foránea.


Orden
del
concepto
ConceptoDetalle
del
concepto
Problema
resuelto
Problema
a
resolver
64Varias tablas (left join)
65Varias tablas (right join)
66Varias tablas (cross join)
67Varias tablas (natural join)
68Varias tablas (inner join - straight join)

69join, group by y funciones de agrupamiento.
70join con más de dos tablas.
71Función de control if con varias tablas.
72Variables de usuario.
73Crear tabla a partir de otra (create - insert)
74Crear tabla a partir de otras (create - insert - join)
75Insertar datos en una tabla buscando un valor en otra (insert - select)
76Insertar registros con valores de otra tabla (insert - select)
77Insertar registros con valores de otra tabla (insert - select - join)
78Actualizar datos con valores de otra tabla (update)
79Actualización en cascada (update - join)
80Borrar registros consultando otras tablas (delete - join)
81Borrar registros buscando coincidencias en otras tablas (delete - join)
82Borrar registros en cascada (delete - join)
83Chequear y reparar tablas (check - repair)
84Encriptación de datos (encode - decode)

SQL ALTER TABLE Statement


La instrucción ALTER TABLE se utiliza para agregar, eliminar o modificar columnas de una tabla existente.

La instrucción ALTER TABLE también se utiliza para agregar y eliminar varias restricciones en una tabla existente.
ALTER TABLE - ADD Column

Para agregar una columna en una tabla, utilice la siguiente sintaxis:
ALTER TABLE table_name
ADD column_name datatype;
ALTER TABLE - DROP COLUMN

Para eliminar una columna de una tabla, utilice la siguiente sintaxis (observe que algunos sistemas de base de datos no permiten eliminar una columna):
ALTER TABLE table_name
DROP COLUMN column_name;
ALTER TABLE - ALTER/MODIFY COLUMN

Para cambiar el tipo de datos de una columna de una tabla, utilice la siguiente sintaxis:

SQL Server / MS Access:
ALTER TABLE table_name
ALTER COLUMN column_name datatype;

My SQL / Oracle (prior version 10G):
ALTER TABLE table_name
MODIFY COLUMN column_name datatype;

Oracle 10G and later:
ALTER TABLE table_name
MODIFY column_name datatype;

El operador SQL EXISTS

El operador EXISTS se utiliza para probar la existencia de cualquier registro en una subconsulta.

El operador EXISTS devuelve true si la subconsulta devuelve uno o más registros.
EXISTS Syntax
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);


SQL CHECK Constraint 

La restricción CHECK se utiliza para limitar el rango de valores que se puede colocar en una columna. Si define una restricción CHECK en una sola columna, sólo permite ciertos valores para esta columna. Si define una restricción CHECK en una tabla, puede limitar los valores en ciertas columnas basándose en valores de otras columnas de la fila.

SQL CHECK en CREATE TABLE El SQL siguiente crea una restricción CHECK en la columna "Age" cuando se crea la tabla "Personas". La restricción CHECK asegura que no puede tener ninguna persona menor de 18 años: MySQL:

 

SQL Server / Oracle / MS Access:


Para permitir la denominación de una restricción CHECK y para definir una restricción CHECK en varias columnas, utilice la siguiente sintaxis SQL: MySQL / SQL Server / Oracle / MS Access:

SQL CHECK on ALTER TABLE Para crear una restricción CHECK en la columna "Edad" cuando la tabla ya está creada, utilice el siguiente

SQL: MySQL / SQL Server / Oracle / MS Access:

Para permitir la denominación de una restricción CHECK y para definir una restricción CHECK en varias columnas, utilice la siguiente sintaxis SQL:
MySQL / SQL Server / Oracle / MS Access:

DROP a CHECK Constraint Para eliminar una restricción CHECK, utilice el siguiente SQL: SQL Server / Oracle / MS Access:
MySQL:
 

Cuestiones a responder antes de hacer una consulta
1. ¿Que información queremos visualizar?
2. ¿En qué tablas se encuentra la información?
3. ¿Qué condición deben cumplir las filas resultantes?
4. ¿Queremos ordenar el resultado por alguna columna?

Obtener el número de las etapas donde el nombre de la ciudad de llegada tenga por segunda letra una “O” o donde el nombre de la ciudad de salida lleve dos o más ‘A’s.
1. n.etapas 2. etapa 3. ciudad llegada 2ºletra O ó salida lleve 2 o mas A


Cuando se va a trabajar con una tabla para hacer consulta entre diferentes tuplas de ella, entonces se utilizan las variables de recorrido

[tabla | variable_recorrido ].columna Es una instancia de la tabla.

Es virtual Por tanto, permiten dar un nombre alternativo a la misma tabla dentro de una consulta. La manera de declarar una variable de recorrido es:

FROM tabla [as] variable_recorrido

Ejemplo: Obtener el nombre de los ciclistas compañeros de equipo de ‘Miguel Induráin’ que sean más jóvenes que él. 

1. ¿En qué tablas se encuentra la información?
 FROM Ciclista

Pero, como se requiere comparar con tuplas de la misma tabla, entonces se necesita tener varias imágenes de ella

2. ¿Qué condición deben cumplir las filas resultantes?

WHERE C2.nombre=‘Miguel Induráin’ AND C1.nomeq = C2.nomeq AND C1.edad < C2.edad;

 3. ¿Qué información queremos visualizar?

SELECT DISTINCT C1.nombre

Por lo tanto la consulta será:


51. Entregar un reporte con el numero de cargos en cada departamento y cual es el promedio de salario de cada uno. Indique el nombre del departamento en el resultado.








Prácticas

Práctica 1

  • PR-F-001.  Creación y uso de mi primera BD en SQL Server 2008. (pdf)

Práctica 2

  • PR-F-002.  Ejercicios de diseño relacional. (pdf)

Práctica 3

Ejercicio resuelto
  • PR-F-003.  Enunciado de Ejercicio resuelto de SQL. (pdf)
  • PR-F-004.  BD con Datos para Ejercicio resuelto. (sql)
  • PR-F-005.  Solución del Ejercicio resuelto. (sql)

Ejercicio propuesto
  • PR-F-006.  Ejercicio propuesto de SQL. (pdf)
  • PR-F-007.  BD con Datos para realizar el Ejercicio propuesto. (mdb).

Práctica 4

Ejercicio resuelto
Ejercicio propuesto
  • PR-F-010.  Ejercicio propuesto de SQL. (pdf)

Práctica 5

Ejercicio resuelto
Para poder realizar los ejercicios de procedimientos almacenados debes tener la base de datos Hospital, la cual puedes descargar desde el índice o desde los siguientes enlaces: DESCARGAR BD HOSPITAL - DESCARGAR REGISTROS BD HOSPITAL.
Bien, sin más preámbulos iniciemos.
1) Sacar todos los empleados que se dieron de alta entre una determinada fecha inicial y fecha final y que pertenecen a un determinado departamento.

CREATE PROCEDURE FECHASDEPT
@FINICIAL DATETIME,
@FFINAL SMALLDATETIME ,
@DEPT_NO NVARCHAR(10)
AS
SELECT * FROM EMP WHERE FECHA_ALT BETWEEN @FINICIAL AND @FFINAL
AND DEPT_NO = @DEPT_NO
EXEC FECHASDEPT '01/01/1965','01/01/1985',20O

No hay comentarios:

Publicar un comentario