1 of 32

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).

2 of 32

Relación de los sistemas con las BD

Sistema de Compras

Sistema de Pagos

Sistema de Stock

DBMS

Base de

Datos

  • Lenguaje de definición de datos
  • Lenguaje de manipulación de datos
  • Diccionario de datos

3 of 32

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

4 of 32

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

5 of 32

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:

        • Comandos Básicos
        • Operadores
        • Funciones

6 of 32

Sentencias para la definición de datos

  • CREATE TABLE
  • DROP TABLE
  • ALTER TABLE

Sentencias para la manipulación de datos

  • SELECT
  • INSERT
  • DELETE
  • UPDATE

7 of 32

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.

  • Resumen: el comando DESCRIBE, permite visualizar los campos que componen una tabla y sus caracteristicas

8 of 32

CONSULTAS SQL ...: Estructura

SELECT FROM WHERE

GROUP BY HAVING

ORDER BY [ASC/DESC]

A

B

C

D

E

F

9 of 32

  • SELECT

A

A

Un campo o lista de campos, perteneciente a una o más tablas.

  • Operaciones aritméticas y/o funciones.
  • Operaciones aritméticas y/o funciones que involucren campos
  • Incluso otros “select”

Select expresion

select permite hacer consultas a las tablas de una base de datos

10 of 32

        • SELECT (1+2)*3
        • SELECT 20/3
        • SELECT – 2
        • SELECT 1+2*3
        • SELECT ABS(-32)
        • SELECT SIGN(-32)

Algunos Ejemplos:

11 of 32

  • SELECT FROM

A

B

B

Una tabla o lista de tablas separadas por comas, etc.

Tabla_referencia

CONSULTAS SQL ...: Estructura

12 of 32

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

13 of 32

  • SELECT FROM WHERE

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

14 of 32

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

15 of 32

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.

16 of 32

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

17 of 32

SELECT id_cliente, nombre_cliente, cuit, saldo_actual

FROM CLIENTES

WHERE saldo_actual > 800

18 of 32

Sobre las condiciones lógicas

    • Usamos los símbolos <, > o =

    • Mayor o igual: >=   Menor o igual: <=

    • Distinto: <>   ó    !=

    • Si el condicionante es texto, va entre comillas:

... ctacte_susp = "N" ...

    • Para añadir más condiciones lógicas: AND

... saldo_actual > 1000 AND ctacte_susp = "N" ...

19 of 32

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.

20 of 32

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”.

21 of 32

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)

22 of 32

SELECT id_cliente, nombre_cliente, cuit, saldo_actual

FROM CLIENTES

WHERE saldo_actual IS NOT NULL

23 of 32

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

  • id_vendedor IN (1,2,3) "el campo id_vendedor asume uno de los valores de la lista (1,2,3)"

  • id_vendedor NOT IN (1,2,3) "el campo id_vendedor no asume ninguno de los valores de la lista (1,2,3)"

  • id_vendedor BETWEEN 6 AND 8 "el campo id_vendedor asume un valor comprendido entre 6 y 8 inclusive"

  • id_vendedor NOT BETWEEN 6 AND 8 "el campo id_vendedor asume un valor inferior a 6 o superior a 8"

24 of 32

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)

25 of 32

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

26 of 32

  • SELECT FROM WHERE

ORDER BY

ASC

DESC

A

B

C

CONSULTAS SQL ...: Estructura

D

27 of 32

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

28 of 32

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.

29 of 32

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.

30 of 32

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.

31 of 32

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

32 of 32

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