Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Manual Practico SQL Básico, Apuntes de Programación Informática

Introducción a sql consultas. tablas, uniones

Tipo: Apuntes

2017/2018

Subido el 23/10/2018

ernestosoad
ernestosoad 🇲🇽

1 documento

1 / 33

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Manual Práctico de SQL
ORIENTADO A SQL 7.0
Preparado por:
Alvaro E. García
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21

Vista previa parcial del texto

¡Descarga Manual Practico SQL Básico y más Apuntes en PDF de Programación Informática solo en Docsity!

ORIENTADO A SQL 7.

Preparado por: Alvaro E. García [email protected]

Preparado por: Alvaro E. García

  • INTRODUCCIÓN ÍNDICE
  • PASOS PARA IMPLEMENTAR UNA BD
  • CREAR UNA BD
  • SENTENCIA CREATE
  • LIGADURAS
  • ELIMINACIÓN DE TABLAS
  • SENTENCIA ALTER
  • CONSULTAS SIMPLES
  • SENTENCIA SELECT – FROM
  • COLUMNAS CALCULADAS
  • CONDICIONES DE BÚSQUEDA
  • ORDENACIÓN DE RESULTADOS (ORDER BY)
  • CONSULTAS A MÚLTIPLES TABLAS (INNER JOIN)
  • CONSULTAS RESUMEN
  • CONCLUSIÓN
  • BIBLIOGRAFÍA

Preparado por: Alvaro E. García

Reglas (RULE), Dominios (Domain) y Valores por defecto

(DEFAULT).

CREATE,

ALTER y

DROP

Lenguaje de Manipulación de Datos (DML, Data Management Language)

Grupo de sentencias del SQL para manipular los datos que

están almacenados en las bases de datos, a nivel de filas

(tuplas) y/o columnas (atributos). Ya sea que se requiera que

los datos sean modificados, eliminados, consultados o que se

agregaren nuevas filas a las tablas de las base de datos.

INSERT,

UPDATE,

DELETE y

SELECT

Lenguaje de Control de Datos (DCL, Data Control Language)

Grupo de sentencias del SQL para controlar las funciones de

administración que realiza el DBMS, tales como la atomicidad y

seguridad.

COMMIT TRANSACTION,

ROLLBACK TRANSACTION,

GRANT

REVOKE

Preparado por: Alvaro E. García

Pasos para implementar una base de datos:

PASO Descripción

1

Definir en el disco duro, el área física que contendrá las tablas de la base de datos. Sentencia SQL --> CREATE DATABASE. Æ Tema 1 de este manual

2

Crear las diferentes tablas de la base de dato. Sentencia SQL --> CREATE TABLE Tema 4.2 del contenido de este curso.

3

Insertar las filas de las diferentes tablas, sin violar la integridad de datos. Sentencia SQL --> INSERT INTO. Tema 3.4.1 del contenido de este curso.

4

Actualizar los datos que cambien con el tiempo en las diferentes tablas. Sentencia SQL --> UPDATE. Tema 3.4. del contenido de este curso.

5

Eliminar las filas que ya no se requieran en las diferentes tablas. Sentencia SQL --> DELETE Tema 3.4.3 del contenido de este curso.

6

Realizar las consultas deseadas a las tablas de la base de datos a través de la poderosa sentencia de consultas del SQL, llamada SELECT. Tema 4.3 hasta 4.6 del contenido de este curso.

7

Dar nombre a las consultas. elaboradas en el paso No.6 cuando se requiera ocultar el diseño y columnas de las tablas a través de la creación de vistas lógicas. Sentencia SQL ----> CREATE VIEW. Tema 3.5 del contenido de este curso.

Preparado por: Alvaro E. García

CREATE DATABASE VENTAS ON PRIMARY ( NAME=VENTAS_data, FILENAME='c:\VENTAS.mdf', SIZE=5MB, MAXSIZE=10MB, FILEGROWTH=1MB ) LOG ON ( NAME=VENTAS_log, FILENAME='c:\VENTAS.ldf', SIZE=5MB, MAXSIZE=10MB, FILEGROWTH=1MB )

En el ejemplo que se acaba de presentar se crea un archivo principal de extensión mdf de tamaño inicial de 5 MB, cuando este espacio se agote, este se expandirá en 1 MB más para tener espacio libre y meter más registros o tablas y cuando se agote nuevamente el archivo físico de 1MB, éste se expandirá en 1 MB nuevamente y así en lo sucesivo hasta alcanzar el máximo 10 MB ya de ahí no crecerá más.

Preparado por: Alvaro E. García

Sentencia CREATE

Dentro del Lenguaje de Definición (DL) del SQL, la sentencia CREATE permiten la definición o creaciòn de muchos objetos de la base de datos tales como: tablas (esquemas), índices, vistas, dominios, ligaduras de integridad y procedimientos.

En esta oportunidad veremos las sentencias correspondientes a la creación de los esquemas o lo que es lo mismo las tablas que contendrán los datos de la base de datos, La sentencia CREATE TABLE.

La sentencia CREATE TABLE, define el nombre de la tabla, las columnas con su tipo de datos, las ligaduras de intengridad que vigilan el valor que se guarde como dato en las columnas o atributos sean llaves o no.

Sintaxis:

CREATE TABLE nombre_tabla ( campo1 tipo dato [NULL/NOT NULL] | CHECK (expresiónLógica) | [ DEFAULT expresiónConstante], campo2 tipo dato [NULL/NOT NULL] | CHECK (expresiónLógica) | [ DEFAULT expresiónConstante ], campo-N, PRIMARY KEY(campo_llave), FOREIGN KEY (campo_llave) REFERENCES tabla2 (campo_llave-tabla2) )

Preparado por: Alvaro E. García

Tipo: Integridad de Entidad o Tabla Específica que en una tabla o entidad, todas sus filas tenga un identificador único que diferencie a una fila de otra y también que se establezcan columnas cuyo contenido es un valor único que las hace llaves candidatas para un futuro como por ejemplo: número de cédula, número de seguro social o cuenta de e- mail.

Tipos de Restricción

Descripción Cláusula SQL

Por Llave Primaria

Este tipo de restricción se aplica a todas las filas permitiendo que exista un identificador, que se conoce como llave primaria y que se asegura que los usuarios no introduzcan valores duplicados. Además asegura que se cree un índice para mejorar el desempeño. Los valores nulos no están permitidos para este tipo de restricción.

PRIMARY KEY

CREATE TABLE CLIENTE (NUMCLI INT not null, NOMCLI char(30) not null, DIRCLI char(30), FAX INT, E_MAIL CHAR(30) UNIQUE not null, SALD_0_30 DECIMAL (10,2), SALD_31_60 DECIMAL (10,2), SALD_61_ DECIMAL (10,2), primary key (NUMCLI) )

En este ejemplo, NUMCLI corresponderá a ser la llave primaria de la tabla CLIENTE.

Por Valor Unico

Con esta restricción se previene la duplicación de valores en columnas que tienen valor único y que no son llave primaria pero que pueden ser una llave alternativa o candidata para el futuro. Asegura que se cree (Por parte del DBMS) un índice para mejorar el desempeño. Y al igual que las llaves primarias, no se le está permitido que se introduzcan valores nulos.

UNIQUE

CREATE TABLE CLIENTE (NUMCLI INT not null, NOMCLI char(30) not null, DIRCLI char(30), FAX INT, E_MAIL CHAR(30) UNIQUE not null, SALD_0_30 DECIMAL (10,2), SALD_31_60 DECIMAL (10,2), SALD_61_ DECIMAL (10,2), primary key (NUMCLI) )

En este ejemplo, E_MAIL correponderá a ser una columna de valores único en la tabla CLIENTE

Preparado por: Alvaro E. García

Tipo: Integridad Referencial La Integridad Referencial asegura que las relaciones que existe entre llave primaria (en la tabla referenciada) y la llave foránea (en las tablas referenciantes) serán siempre mantenidas. Una fila o registro en la tabla referenciada (tabla donde reside la llave primaria) no puede ser borrada o su llave primaria cambiada si existe una fila o registro con una llave foránea (en la tabla referenciante) que se refiere a esa llave primaria.

Tipos de Restricción

Descripción Cláusula SQL

Por Llave Foránea

En esta restricción se define una columna o combinación de columnas en las cuales su valor debe corresponder al valor de la llave primaria en la misma u en otra tabla.

FOREIGN KEY

CREATE TABLE PEDIDO (NUMPED INT not null PRIMARY KEY, NUMCLI INT not null, FECHA_PED DATETIME, TOT_DESC DECIMAL (10,2), FOREIGN KEY (NUMCLI) REFERENCES CLIENTE(NUMCLI) )

En este ejemplo de la creación de la tabla PEDIDO, la columna NUMCLI correponderá a ser la llave foránea que hace referecia a la llave primaria NUMCLI (no necesariamente deben llamarse igual las columnas pero deben tener igual tipo de datos) en la tabla CLIENTE

Preparado por: Alvaro E. García

Creación de Tabla Cliente

CREATE TABLE CLIENTE

(NUMCLI INT not null,

NOMCLI CHAR(30) not null, DIRCLI char(30), FAX INT,

E_MAIL CHAR(30) DEFAULT ('Desconocido'),

SALD_0_30 DECIMAL (10,2), SALD_31_60 DECIMAL (10,2),

SALD_61_90 DECIMAL (10,2), primary key (NUMCLI) )

Creación de Tabla Vendedor

CREATE TABLE VENDEDOR (CODVEND INT not null,

NOMVEND char(20) not null,APELLVEND char(20) not null,

DIRVEND char(30), TELVEND INT, E_MAIL CHAR(30)

DEFAULT('Desconocido'),

CUOTA DECIMAL (10,2), VENTAS DECIMAL (10,2), primary key

(CODVEND) )

Creación de Tabla Artículo

CREATE TABLE ARTICULO (NUMART char(4) not null PRIMARY

KEY, DESCRIPCION CHAR(30), PRECIO DECIMAL (10,2) NOT

NULL CHECK (PRECIO >= 0.00), EXISTENCIA INT,

CATEGORIA_ART CHAR (15))

Creación de Tabla Pedido

CREATE TABLE PEDIDO (NUMPED INT not null PRIMARY KEY,

NUMCLI INT not null, FECHA_PED DATETIME,

TOT_DESC DECIMAL (10,2),

FOREIGN KEY (NUMCLI) REFERENCES CLIENTE(NUMCLI) ,

FOREIGN KEY (CODVEND) REFERENCES VENDEDOR(CODVEND))

Creación de Tabla Detalle_Ped

CREATE TABLE DETALLE_PED (NUMPED INT not null,

NUMART char (4) not null, CANTIDAD INT CHECK (CANTIDAD >=

0), PRIMARY KEY (NUMPED,NUMART),

FOREIGN KEY (NUMPED) REFERENCES PEDIDO(NUMPED),

FOREIGN KEY (NUMART) REFERENCES ARTICULO (NUMART) )

Preparado por: Alvaro E. García

Eliminación de Tablas:

La sentencia para eliminar una tabla y por ende todo los objetos asociados

con esa tabla como: las vistas, disparadores, etc., DROP TABLE, donde r

es el nombre de una tabla existente.

DROP TABLE r

Por ejemplo si deseamos eliminar a la tabla ARTICULO_PANAMA, revisemos haber si esta ya existe, de la siguiete manera

SELECT * from ARTICULO_PANAMA

Posteriormente una vez veriifcada que la tabla existe, se procede a borrar la tabla, escribiendo lo siguiente en l ainterface de consultas del SQL:

Sentencia ALTER

Después que una tabla ha sido utilizada durante algún tiempo, los usuarios suelen descubrir que desean almacenar información adicional con respecto a las tablas. Por ejemplo en la base de datos VENTAS , se podría desear:

9 Añadir el nombre y numero de de una persona de contacto a cada fila de la tabla CLIENTES para contactar a los clientes. 9 Añadir una columna de punto de reorden mínimo en la tabla ARTICULO, para que la base de datos pueda alertar automáticamente cuando la cantidad o stock de un producto en particular esta por debajo de lo optimo para la venta.

Por lo general, esta sentencia ALTER TABLE se utiliza sobre tablas que ya poseen desde cientos a miles de filas por ser tablas de un sistemas de Base de Datos que ya esta en producción.

Preparado por: Alvaro E. García

  1. Definir una llave primaria para una tabla. La columna(s) a la cual se le dará esta responsabilidad debe contener previamente valores únicos por fila.

Ejemplo: ALTER TABLE T1 ADD PRIMARY KEY (a1,a2)

  1. Definir una nueva llave foránea para una tabla. La columna a definir como llave foránea debe contener previamente valores que corresponden a la llave primaria de otra tabla. Es similar al descrito en llave primaria, solo que la palabra clave reservada es ADD FOREIGN KEY.
  2. Se puede habilitar o inhabilitar los disparadores (trigger) en una tabla.

ALTER TABLE nombre_de_la_tabla ENABLE TRIGGER nombre_de_trigger

ALTER TABLE nombre_de_la_tabla DISABLE TRIGGER nombre_de_trigger

La persona que puede realizar esta operación de alterar la tabla puede ser: el DBA o el creador de la tabla, u otra persona que el creador o DBA haya autorizado. Para la ultima situación en que a una persona se le otorga el permiso en la operación, el usuario, debe calificar el nombre de la tabla con el nombre de su creador por delante y alterar la definición de la tabla de otro usuario, por ejemplo:

ALTER TABLE nombredueño.nombretabla

Preparado por: Alvaro E. García

Consultas Simples

El corazón o poder del Lenguaje SQL es el poder hacer consultas de cualquier tipo a la base de datos en forma no procedural. La sentencia SELECT es muy poderosa y ampliamente rica en sus cláusulas y variantes permitiendo la capacidad de atender en poco tiempo a consultas complejas sobre la base de datos. Está en el especialista desarrollador de aplicaciones conocerlo a profundidad para explotar las bondades y virtudes.

Gracias a esta sentencia es que se pueden realizar todas las operaciones del Algebra Relacional, tratadas en la sección 3.2 y 3.3 del modulo III. En esta sección veremos la sintaxis de como se utiliza.

La sentencia SELECT, obtiene filas de la base de datos y permite

realizar la selección de una o varias filas o columnas de una o

varias tablas.

La sintaxis completa de la instrucción SELECT es compleja, pero

la voy resumir como sigue (los corchetes cuadrados indican que la

cláusula no es obligatoria):

SELECT nombres de las columnas

[INTO nueva Tabla destino para resultados del select_]

FROM origenTabla

[WHERE condición de Búsqueda]

[GROUP BY nombres de columnas por la cual Agrupar]

[HAVING condiciónBúsqueda para Group By ]

[ORDER BY nombre de columnas [ASC | DESC] ]

También se puede unir estas sentencias con otras por el operador UNION entre consultas para combinar sus resultados en un sola tabla de resultados sin nombre.

Preparado por: Alvaro E. García

Sentencia SELECT-FROM

El utilizar la sentencia SELECT, con estas dos cláusulas SELECT - FROM, muestra como resultado a todas las filas existentes en las tablas especificadas en el FROM.

Ejemplo # 1: Seleccionar todas las columnas y filas de la tabla CLIENTE

SELECT * FROM CLIENTE

Da como resultado un total de 8 filas con las 7 columnas que posee la tabla CLIENTE.

Ejemplo # 2: Seleccionar columnas: nomcli y e_mail de la tabla

CLIENTE

SELECT NUMCLI, NOMCLI, E-MAIL FROM CLIENTE

Da como resultado un total de 8 filas con solo 3 columnas.

Ejemplo # 3: Este ejemplo selecciona las columnas y las muestra con el

titulo especificado en AS, es decir con un alias. A NUMCLI lo muestra como NUMERO DE CLIENTE y NOMCLI lo muestra con el nombre especificado en el AS como NOMBRE DEL CLIENTE. Esto permite mostrar una columna con encabezados mas familiares a los usuarios finales.

SELECT NUMCLI AS 'NUMERO DE CLIENTE', NOMCLI AS

'NOMBRE DE CLIENTE' FROM CLIENTE

Da como resultado un total de 8 filas.

La cláusula AS puede omitirse y el resultado es el mismo.

SELECT NUMCLI 'NUMERO DE CLIENTE', NOMCLI 'NOMBRE DE CLIENTE' FROM CLIENTE

Da como resultado un total de 8 filas.

Preparado por: Alvaro E. García

SENTENCIA DE FILAS DUPLICADAS (DISTINCT)

Si una consulta incluye la llave primaria (pk) de una tabla en su lista de selección, entonces cada fila de resultados será única (ya que la llave primaria (pk) tiene un valor diferente en cada fila). Si no se incluye la llave primaria en los resultados, pueden producirse filas duplicadas. Veamos el siguiente ejemplo,

Ejemplo # 5: Seleccionar el código de artículos que han sido pedidos. Sin

usar la palabra reservada DISTINCT.

El resultado tendría 18 filas y con códigos de productos repetidos.

SELECT NUMART

FROM DETALLE_PED

ORDER BY NUMART

Ejemplo # 6: Seleccionar el código de artículos que han sido pedidos.

Utilizando la palabra reservada DISTINCT.

El resultado contiene menos filas, 9 filas y con códigos de productos únicos, es decir no se repiten por las veces que fueron comprados como en el ejemplo #5.

SELECT DISTINCT NUMART

FROM DETALLE_PED

ORDER BY NUMART