DDL : crear y modificar la estructura de una bbdd
- CREATE, ALTER, DROP, TRUNCATE
- SELECT, INSERT, UPDATE, DELETE
- GRANT, REVOKE
- COMMIT, ROLLBACK, SAVE POINT
- FROM, WHERE, GROUP BY, HAVING, ORDER BY
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
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" |
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