Fundamentos de programación
Yhoan Galeano
Web Developer
Algo de mi vida
Soy egresado del SENA, en la tecnología de ADSI del año 2011.
He trabajado en múltiples emprendimientos y he fallado muchas veces, pero agradezco hacerlo porque eso me ha enseñado muchísimo.
En este momento me encuentro emprendiendo (les confieso que he intentado mucho) con algunos amigos y visionamos que para el año 2018 estemos generando empleos formales a muchas personas
Consejo:
"No te preocupes por la vida, nadie sale vivo de ella."
Mariano Ponceliz
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
Algunos SGBD modernos
- 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.
PL/SQL
Es una extensión de Sql aplicado al SGBD de Oracle.
PLPG-SQL
Es una extensión de SQL aplicado al SGBD de PostgreSQL.
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
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
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 |
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 Yhoan Andres Galeano Urrea
Fundamentos de programación - SQL
- 746