Algunas ideas sobre SQL
¿Qué es una Base de Datos?
Una base de datos contiene datos organizados en una colección de tablas o archivos relacionados entre sí.
El software que permite construir, alimentar y manipular una base de datos es un Sistema de Administración de Base de Datos (SABD) o Data Base Management System (DBMS).
Relación de los sistemas con las BD
Sistema de Compras
Sistema de Pagos
Sistema de Stock
DBMS
Base de
Datos
id_vendedor | apellido_vendedor | nombre_vendedor | fecha_ingreso |
3 | López | Manuel y Claudi | 01/12/1995 |
2 | Rodríguez | Miguel | 08/01/1995 |
1 | Martínez | Carlos José | 01/01/1994 |
4 | Pérez | Daniel | 01/05/1996 |
5 | Ríos | Gabriel | 06/01/1996 |
6 | Castellanos | José | 02/01/2000 |
En un DBMS, los datos se organizan en tablas
(colección de registros del mismo tipo)
El campo apellido_vendedor
registro del vendedor Rodríguez
Grupo de campos relacionados
Una base de datos de modelo relacional está formado por tablas relacionadas a través de un campo común
El diagrama de entidad-relación describe los datos almacenados en una base de datos y sus relaciones
El lenguaje estructurado de consultas SQL (STRUCTURED QUERY LANGUAGE) es una herramienta eficaz para la definición, manipulación y CONTROL de datos en un ambiente de base de datos de modelo relacional
SQL consta de distintas sentencias o instrucciones que demandan una acción específica al DBMS.
Estas instrucciones deben respetar una determinada estructura que se denomina sintaxis, y esta referida a:
Sentencias para la definición de datos
Sentencias para la manipulación de datos
Comandos ...: Sintaxis comando DESCRIBE
DESCRIBE Syntax (Get Information About Columns)
{DESCRIBE | DESC} tbl_name {col_name | wild}
DESCRIBE is a shortcut for SHOW COLUMNS FROM. See SHOW DATABASE INFO.
DESCRIBE provides information about a table's columns. col_name may be a column name or a string containing the SQL % and _ wildcard characters.
CONSULTAS SQL ...: Estructura
SELECT FROM WHERE
GROUP BY HAVING
ORDER BY [ASC/DESC]
A
B
C
D
E
F
A
A
Un campo o lista de campos, perteneciente a una o más tablas.
Select expresion
select permite hacer consultas a las tablas de una base de datos
Algunos Ejemplos:
A
B
B
Una tabla o lista de tablas separadas por comas, etc.
Tabla_referencia
CONSULTAS SQL ...: Estructura
Sentencia SELECT
Para ver todos los datos o registros de una base de datos tenemos la ayuda de un comodín: el asterísco (*)
SELECT * FROM CLIENTES
A
B
C
C
where_definición
Expr1 (operador) Expr2 ....
Donde operador puede ser : > < = <>, like, not, !, between, y combinaciones con conectores AND , OR, etc etc.
CONSULTAS SQL ...: Estructura
Desde la página de la Facultad ingrese por:
1) Cátedras: Datos I
2) Haga clic en Usuario Anónimo
3) Sitios - Unidad 3 - Acceso a Base de Datos
Ejercitación
1. Verifique la definición de registros de las tablas: CLIENTES, INVENTARIO y CTACTE.
2. Solicite un listado con información de clientes, incluyendo los siguientes datos: nombre, cuit, domicilio, teléfono, saldo de la cuenta y limite de crédito.
A partir de ahora, deberán crear un nuevo documento google que lleve el nombre del grupo y SQL, de la siguiente manera "GRUPO_(NOMBRE)_SQL" y ahí deberán ir agregando todos los ejercicios de SQL que vayamos viendo en clases y los que lleven de tarea.
Cláusula WHERE
La cláusula WHERE permite hacer consultas más específicas “filtrando” los registros que cumplen con una determinada condición lógica.
Operadores de Comparación
saldo_actual = 800 El saldo actual es igual a 800
saldo_actual > 800 El saldo actual es mayor que 800
saldo_actual >= 800 El saldo actual es mayor o igual que 800
saldo_actual < 800 El saldo actual es menor que 800
saldo_actual <= 800 El saldo actual es menor o igual que 800
saldo_actual != 800 El saldo actual es distinto de 800
saldo_actual <> 800 El saldo actual es distinto de 800
SELECT id_cliente, nombre_cliente, cuit, saldo_actual
FROM CLIENTES
WHERE saldo_actual > 800
Sobre las condiciones lógicas
... ctacte_susp = "N" ...
... saldo_actual > 1000 AND ctacte_susp = "N" ...
Ejercitación
3. Extraiga un listado de los clientes que superen el límite de crédito asignado. Indicar nombre, cuit, domicilio, teléfono, saldo de la cuenta y limite de crédito.
4. Verifique cuáles son los clientes que superan el límite de crédito y que no tienen su cuenta suspendida. Incluya los datos: nombre, cuit, domicilio, teléfono.
5. Listado de clientes con la cuenta suspendida. Indicar Nombre, cuit, domicilio, teléfono y saldo de la cuenta.
Uso de la cláusula LIKE
La cláusula LIKE se utiliza para realizar operaciones de comparación entre una cadena de caracteres y un patrón determinado. El patrón es una cadena de caracteres y/o espacios que puede incluir uno o más “comodines”.
El signo de porcentaje (%) es un comodín que se corresponde con cualquier secuencia de caracteres y/o espacios.
El guión bajo (_) es un comodín que representa un
solo caracter o espacio.
El patrón debe escribirse entre comillas simple.
nombre_cliente LIKE 'Mo%' El nombre comienza con las letras “Mo".
nombre_cliente LIKE '_ _i%' El nombre tiene una “i” en la tercera posición.
nombre_cliente LIKE '%o%o%' El nombre tiene dos letras “o” en su interior.
nombre_cliente LIKE '%Perez' El nombre termina con las letras “Perez”.
Valores nulos y no nulos
NULL se usa para ver las filas de una columna que están vacías (la palabra "IS" se debe usar con NULL y NOT NULL) Los signos igual, mayor y menor no se utilizan con esta sentencia.
Ejemplos:
saldo_actual IS NULL El saldo es nulo o vacío
saldo_actual IS NOT NULL El saldo no es nulo (es decir, tiene algún valor)
SELECT id_cliente, nombre_cliente, cuit, saldo_actual
FROM CLIENTES
WHERE saldo_actual IS NOT NULL
Comparaciones lógicas con secuencias e intervalos de valores
Así como hay operadores lógicos que comparan valores discretos, existe también la posibilidad de realizar comparaciones con listas de valores (números o letras).
Para esto se utilizan las cláusulas IN y BETWEEN
Por ejemplo, para seleccionar los clientes que se encuentran en los sectores 4 y 5:
SELECT id_cliente, nombre_cliente, id_sector
FROM CLIENTES
WHERE id_sector IN (4,5)
Para seleccionar los clientes cuyo saldo actual es entre 700 y 1000:
SELECT id_cliente, nombre_cliente, saldo_actual
FROM CLIENTES
WHERE saldo_actual BETWEEN 700 AND 1000
ORDER BY
ASC
DESC
A
B
C
CONSULTAS SQL ...: Estructura
D
Cláusula ORDER BY
Para que los datos de salida se ordenen en función de un campo:
SELECT * FROM CLIENTES WHERE saldo_actual < 1000 ORDER BY nombre_cliente
Tanto AND como OR se pueden combinar, pero hay que tener presente el orden en que se los usa y el empleo de paréntesis, ya que el resultado en cada caso es diferente.
Suponiendo tres condiciones A, B y C, veamos los distintos casos:
A OR B AND C
En este caso primero se evaluará la expresión B AND C. Luego, el resultado se evaluará con la condición A.
Si queremos modificar ese orden utilizamos paréntesis:
(A OR B) AND C
En este caso primero se evaluará la expresión encerrada entre paréntesis (A OR B). Luego el resultado se evaluará con la condición C.
A trabajar! �Elaboren la sentencia correspondiente en SQL y luego cópienla a vuestro doc grupal con el título CLASE 7
5.Listado de clientes con la cuenta suspendida. Indicar Nombre, cuit, domicilio, teléfono y saldo de la cuenta.
6. Listado de artículos del inventario discontinuados. Indicar descripción y stock actual en los depósitos 1 y 2.
11. Listado de apellido y nombre de los vendedores cuyo código está comprendido entre 6 y 8.
12. Listado de clientes cuyo nombre comience con ’Med’.
13. Listado de clientes que en su nombre figure JOSE.
14. Listado de clientes de los vendedores 5, 6 y 7 ordenado por vendedor.
15. Listado de clientes de los vendedores 1 a 4, con residencia en la ciudad de Córdoba, ordenado por vendedor.
Operadores lógicos (AND, OR)
El operador AND se usa para combinar una o más expresiones lógicas y requiere que cualquier fila examinada de la base de datos cumpla con todas las condiciones planteadas.
Por otra parte, se usa el operador OR para solicitar las filas que cumplan al menos una de las condiciones planteadas.
Para seleccionar los clientes del sector 1 cuyo saldo actual sea mayor que 700:
SELECT id_sector, nombre_cliente, saldo_actual
FROM CLIENTES
WHERE id_sector = 1
AND saldo_actual > 700
Para seleccionar los clientes cuyo código postal es 5870 ó 5889
SELECT nombre_cliente, ciudad_cli, cod_postal_cli
FROM CLIENTES
WHERE cod_postal_cli = 5870
OR cod_postal_cli = 5889