Fundamentos de programación

Angel Soto

 

dreamensys@gmail.com

ansoto.com

@dreamensys

Web Developer

Sql

Bases de datos

Conjunto finito y estructurado de datos

Tipos

  • Relacionales
  • No relacionales

Sistema Gestor de Bases de datos

(SGBD)

Software que permite manipular bases de datos.

Algunos SGBD ya obsoletos

  • Redundancia de información
  • Inconsistencia de datos
  • Inseguridad
  • Difícil acceso y mantenimiento

SGBD

  • Reutilización de datos
  • Control de redundancia
  • Estandarización
  • Consistencia
  • Integridad
  • Seguridad
  • Mantenimiento
  • Persistencia
  • Atomicidad

Tablas

Las bases de datos contienen cientos o miles de tablas y cada tabla se compone de filas y columnas.

Juan Perez M 21
Maria Castañeda F 25
Diana Lopez M 14
Nombre Apellido Genero Edad
Juan Perez M 21
Maria Castañeda F 25
Diana Lopez M 14
Nombre Apellido Género Edad
Fila o registro

Columna

Nombre columna

Dato

Celda

Cada columna puede tener un tipo de dato diferente de las demás.

SQL

Structured Query Language

Lenguaje de interacción con bases de datos que permite...

  • Añadir
  • Borrar
  • Recuperar
  • Editar
  • Organizar
  • Proteger

...información en una base de datos.

SQL no pertenece a un único SGBD, cada uno de ellos realiza una extensión del mismo.

T-Sql

También conocido como Transact Sql, es una extensión de Sql aplicado al SGBD de MIcrosoft. 

Objetos en una base de datos

  • Tablas
  • Vistas
  • Procedimientos Almacenados
  • Funciones
  • Triggers
  • Usuarios
  • Roles

Tipos de sentencias SQL

Data Definition Language

Definen la estructura de la base de datos.

Data Control Language

Definen el acceso y permisos de la base de datos.

Data Manipulation Language

Definen los datos contenidos en la base de datos.

DDL

DCL

DML

Transaction Control Language

Controlan las transacciones hechas a la base de datos

TCL

DDL

Crear, modificar o eliminar objetos.

  • CREATE
  • ALTER
  • DROP

Tipos de datos

Numericos exactos

Tipo dato Intervalo
bigint De -263(-9.223.372.036.854.775.808) a 263 - 1 (9.223.372.036.854.775.807)
int De -231 (-2.147.483.648) a 231 - 1 (2.147.483.647)
smallint De -215 (-32.768) a 215 - 1 (32.767)
tinyint De 0 a 255
bit Tipo de datos entero que puede aceptar los valores 1, 0 ó NULL

Numericos exactos

Tipo dato Intervalo
decimal, numeric, decimal (p, s) p (precisión): el número total máximo de dígitos decimales que se puede almacena.
s (escala): el número máximo de dígitos decimales que se puede almacenar a la derecha del separador decimal.
money Tipos de datos que representan valores monetarios o de moneda: de -922.337.203.685,4775808 a 922.337.203.685,4775807
smallmoney De -215 (-32.768) a 215 - 1 (32.767)

Numericos Aproximados

Tipo dato Intervalo
float De - 1,79E+308 a -2,23E-308, 0 y de 2,23E-308 a 1,79E+308
real De - 3,40E + 38 a -1,18E - 38, 0 y de 1,18E - 38 a 3,40E + 38

Fecha y hora

Tipo dato Intervalo
datetime Del 1 de enero de 1753 hasta el 31 de diciembre de 9999
smalldatetime Del 1 de enero de 1900 hasta el 6 de junio de 2079    

Cadenas de caracteres

Tipo dato Intervalo
char(n) Caracteres no Unicode de longitud fija, con una longitud de n bytes. n debe ser un valor entre 1 y 8.000
varchar(n) Caracteres no Unicode de longitud variable. n indica que el tamaño de almacenamiento máximo es de 231 - 1 bytes
text En desuso, sustituido por varchar.
Datos no Unicode de longitud variable con una longitud máxima de 231 - 1 (2.147.483.647) caracteres

Cadenas de caracteres Unicode

Tipo dato Intervalo
nchar(n) Datos de carácter Unicode de longitud fija, con n caracteres. n debe estar comprendido entre 1 y 4.000
nvarchar(n) Datos de carácter Unicode de longitud variable. n indica que el tamaño máximo de almacenamiento es 231 - 1 bytes
ntext(n) En desuso, sustituido por nvarchar.

Datos Unicode de longitud variable con una longitud máxima de 230 - 1 (1.073.741.823) caracteres

DDL

CREATE DATABASE nombre_base de datos

CREATE DATABASE TiendaDiscoStu;

Crea nuevos objetos en la base de datos.

CREATE

CREATE

DDL

CREATE TABLE nombre_tabla
(
     nombre_columna1 tipo_de_dato(tamaño),
     nombre_columna2 tipo_de_dato(tamaño),
     nombre_columna2 tipo_de_dato(tamaño),
     ....
);

CREATE TABLE artistas
(
    id INT PRIMARY KEY IDENTITY (1,1),
    identificacion INT,
    nombres VARCHAR(30),
    apellidos VARCHAR(35),
    nombre_artistico VARCHAR(35),
    sueldo FLOAT,
    genero VARCHAR(50)
);

CREATE

DDL

ALTER TABLE nombre_tabla

ALTER|ADD|DROP nombre_columna tipo_de_dato(tamaño)

 

ALTER TABLE Artistas 
ALTER COLUMN genero VARCHAR(200) NOT NULL; 

Altera la estructura de objetos en la base de datos.

CREATE

ALTER

ALTER

DDL

DROP TABLE nombre_tabla

DROP TABLE Artistas;

Elimina objetos en la base de datos.

CREATE

ALTER

DROP

DROP

DCL

Controla y administra quien accede a los objetos de la base de datos.

  • GRANT
  • REVOKE

CREATE

ALTER

DROP

DDL

GRANT PRIVILIGIES  ON nombre_objeto TO nombre_usuario

GRANT SELECT, INSERT, UPDATE, DELETE 
ON Empleados 
TO PepitoPerez;

Permite a usuarios leer/escribir sobre los objetos de la base de datos.

GRANT

DCL

GRANT

CREATE

ALTER

DROP

DDL

REVOKE PRIVILIGIES  ON nombre_objeto TO nombre_usuario

REVOKE ALL ON Empleados FROM PepitoPerez;

Niega a usuarios leer/escribir sobre los objetos de la base de datos.

GRANT

REVOKE

DCL

REVOKE

DML

Obtener, agregar, modificar o eliminar información contenida en los objetos de la base de datos.

  • SELECT
  • INSERT
  • UPDATE
  • DELETE

Estas sentencias pueden ser filtradas por la clausula WHERE

CREATE

ALTER

DROP

DDL

SELECT nombre_columna1, nombre_columna2, nombre_columna3 FROM nombre_tabla

SELECT  nombres, apellidos, genero FROM artistas;

Obtiene la información de un objeto en la base de datos.

GRANT

REVOKE

DCL

SELECT

DML

SELECT

Usando "*" para traer todas las columnas

SELECT * FROM artistas;

CREATE

ALTER

DROP

DDL

SELECT nombre_columna1, nombre_columna2, nombre_columna3 FROM nombre_tabla WHERE nombre_columna2 [Operador de Comparación] valor2

SELECT  nombres, apellidos, genero 
FROM artistas 
WHERE genero = 'Rock';

GRANT

REVOKE

DCL

SELECT

DML

Usando WHERE

CREATE

ALTER

DROP

DDL

INSERT INTO nombre_tabla  
VALUES (valor1,valor2, valor3,...)

INSERT INTO artistas
VALUES(1018456789,'Chayan Emilio','Lopez',
'El chayan',3000,'Romantico');

Inserta información en un objeto en la base de datos.

GRANT

REVOKE

DCL

SELECT

INSERT

DML

INSERT

CREATE

ALTER

DROP

DDL

UPDATE nombre_tabla SET nombre_columna1 [Operador de Asignación] valor1

UPDATE artistas SET sueldo = 200;

Actualiza la información de un objeto en la base de datos.

GRANT

REVOKE

DCL

SELECT

INSERT

UPDATE

DML

UPDATE

CREATE

ALTER

DROP

DDL

UPDATE nombre_tabla SET nombre_columna1 [Operador de Asignación] valor1 WHERE nombre_columna2 [Operador de Comparación] valor2

UPDATE artistas SET sueldo = 200 
WHERE genero = 'Reggaeton';

GRANT

REVOKE

DCL

DML

Usando WHERE

SELECT

INSERT

UPDATE

CREATE

ALTER

DROP

DDL

DELETE FROM nombre_tabla

DELETE FROM artistas;

Borra información de un objeto en la base de datos.

GRANT

REVOKE

DCL

SELECT

INSERT

UPDATE

DELETE

DML

DELETE

CREATE

ALTER

DROP

DDL

DELETE FROM nombre_tabla WHERE nombre_columna2 [Operador Comparativo] valor2

DELETE FROM artistas 
WHERE nombre_artistico = 'Trigresa del oriente';

GRANT

REVOKE

DCL

DML

Usando WHERE

SELECT

INSERT

UPDATE

DELETE

TCL

Administra las transacciones hechas a objetos en la base de datos.

  • BEGIN TRANSACTION
  • COMMIT TRANSACTION
  • ROLLBACK TRANSACTION

Entre otros.

Operadores (Transact-SQL)

  • Aritméticos
  • Lógicos
  • De asignación
  • De comparación

Entre otros.

Aritméticos

Operador Significado
+ Suma
- Resta
* Multiplicación
/ División
% Módulo o resíduo 

Lógicos

Operador Significado
AND TRUE si ambas expresiones booleanas son TRUE.
BETWEEN TRUE si el operando está dentro de un intervalo.
IN TRUE si el operando es igual a uno de la lista de expresiones.
LIKE TRUE si el operando coincide con un patrón.
NOT Invierte el valor de cualquier otro operador booleano.
OR TRUE si cualquiera de las dos expresiones booleanas es TRUE.

Los más usados

De asignación

El signo igual (=) es el único operador de asignación de Transact-SQL.

=

De comparación

Operador Significado
= Igual a
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
<> No es igual a

Funciones integradas (Transact-SQL)

  • De agregado
  • De conversión
  • De Fecha y hora
  • Matemáticas
  • De cadena

Funciones integradas que proporcionan ayuda para trabajar con la información de la base de datos.

(Las más usadas)

De agregado

Función Descripción Uso
AVG(nombre_columna) Devuelve el promedio de los valores de un grupo. Se omiten los valores NULL. SELECT AVG(monto) FROM Ventas
MIN(nombre_columna) Devuelve el valor mínimo de la expresión SELECT MIN(TasaImpuesto) Ventas; 
COUNT(nombre_columna) Devuelve el número de elementos de un grupo SELECT COUNT(DISTINCT Nombre) FROM Empleados; 
MAX(nombre_columna) Devuelve el valor máximo de la expresión SELECT MAX(TasaImpuesto) FROM Ventas;
SUM(nombre_columna) Devuelve la suma de todos los valores o solo de los valores DISTINCT de la expresión SELECT SUM(Total) FROM Ventas;

(Las más usadas)

De conversión

Función Descripción Uso
CAST(dato AS tipo_dato) Convierte una expresión de un tipo de datos en otro SELECT CAST(236 AS nvarchar);
CONVERT(tipo_dato,dato) Devuelve el valor mínimo de la expresión SELECT CONVERT(nvarchar,236);
PARSE(dato AS tipo_dato) Devuelve el resultado de una expresión, traducido al tipo de datos solicitado en SQL Server SELECT PARSE('12/16/2010' AS datetime2) AS Result;

(Las más usadas)

De fecha y hora

Función Descripción Uso
GETDATE() Devuelve un valor datetime que contiene la fecha y hora del equipo en el que la instancia de SQL Server se está ejecutando. El ajuste de zona horaria no está incluido. SELECT GETDATE();
DAY(fecha) Devuelve un entero que representa la parte del día de date especificado. SELECT DAY('17/11/1989');
MONTH(fecha) Devuelve el resultado de una expresión, traducido al tipo de datos solicitado en SQL ServerDevuelve un entero que representa el mes de un fecha especificado. SELECT MONTH('17/11/1989');
YEAR(fecha) Devuelve un entero que representa el año de una fecha específica. SELECT YEAR('17/11/1989');

(Las más usadas)

Matemáticas

Función Descripción Uso
SQRT(dato) Devuelve la raíz cuadrada del valor de tipo flotante especificado SELECT SQRT(3);
ROUND(dato) Devuelve un valor numérico, redondeado a la longitud o precisión especificadas SELECT ROUND(3.1416,2)
POWER(dato,potencia) Devuelve el valor de la expresión especificada elevado a la potencia especificada. SELECT POWER(2,5);

(Las más usadas)

De cadena

Función Descripción Uso
CONCAT(cadena1,cadena2,...) Devuelve una cadena que es el resultado de concatenar dos o más valores de cadena SELECT CONCAT('Hola','que','tal');
SUBSTRING(cadena,indice_inicio,numero_indices_desplazamiento) Devuelve parte de una expresión de caracteres, binaria, de texto o de imagen en SQL Server. SELECT SUBSTRING('abcdef', 2, 3);
REPLACE(dato,valor_a_reemplazar,valor_reemplazo) Reemplaza todas las instancias de un valor de cadena especificado por otro valor de cadena. SELECT REPLACE('primer texto','primer','reemplazado');
LEN(cadena) Devuelve el número de caracteres de la expresión de cadena especificada, excluidos los espacios en blanco finales SELECT LEN('Texto de prueba');

(Las más usadas)

De cadena

Función Descripción Uso
UPPER(cadena) Devuelve una expresión de caracteres convertidos a mayúsculas SELECT UPPER('Pedro');
LOWER(cadena) Devuelve una expresión de caracteres convertidos a minúsculas SELECT LOWER('Juan');
RTRIM(cadena) Remueve los espacios en blanco al final de una cadena SELECT RTRIM('Buenos días      ');
LTRIM(cadena) Remueve los espacios en blanco al principio de una cadena SELECT LTRIM('    buenas tardes');

(Las más usadas)

SELECT TOP numero_filas, nombre_columna1, nombre_columna_2 FROM nombre_tabla

SELECT TOP 5 * FROM Artistas;

Clausula TOP

SELECT nombre_columna1 AS 'nombre_alias1',nombre_columna2 AS 'nombre_alias2' FROM nombre_tabla

SELECT genero AS 'Genero Artistico' 
FROM artistas;

ALIAS

Son palabras que pueden reemplazar el nombre de columnas o tablas en una consulta sin alterar su estructura como tal.

SELECT nombre_columna1 ,nombre_columna2 FROM nombre_tabla WHERE nombre_columna1 IN (consulta_select)

SELECT * FROM artistas 
WHERE Pais IN 
    (SELECT NombrePais FROM Paises 
    WHERE Continente = 'América');

SUBCONSULTAS

Consultas anidadas en otras consultas.

Se pueden incluir en:

  • SELECT
  • FROM
  • WHERE

SELECT nombre_columna1 ,nombre_columna2 FROM nombre_tabla WHERE nombre_columna1 ORDER BY nombre_columna

SELECT * FROM artistas 
WHERE genero = 'Jazz'
ORDER BY FechaEntrada;

ORDER BY

Ordenar datos dentro de una cláusula SELECT, puede tener las siguientes variaciones:

  • ASC
  • DESC

SELECT funcion_agregado FROM nombre_tabla WHERE nombre_columna1 GROUP BY nombre_columna_agrupar

SELECT count(*) FROM
artistas
GROUP BY genero

GROUP BY

Agrupar datos dentro de una cláusula SELECT que contenga una función de agregado.

nombre_columna PRIMARY KEY,

id INT PRIMARY KEY,

LLaves primarias

Campo o combinación de campos que identifica de forma única a cada fila de una tabla.

Incluida dentro de la sentencia CREATE de una tabla.

ALTER TABLE artistas WITH CHECK ADD
 CONSTRAINT FK_GENERO FOREIGN KEY (GENERO_ID) 
    REFERENCES Generos (ID)

LLaves foráneas

Identifican una columna o grupo de columnas en una tabla que se refiere a una columna o grupo de columnas en otra tabla.

Fundamentos de programación - SQL

By Angel Soto

Fundamentos de programación - SQL

  • 1,335