Fundamentos de SQL SERVER

Fundamentos de SQL SERVER

Características de SQL SERVER 2019

Microsoft SQL Server tiene muchas características únicas, en comparación con otros sistemas de administración de bases de datos:

  • Inteligencia sobre cualquier dato. SQL Server es el único sistema de administración de bases de datos relacionales (RDBMS) comercial con inteligencia artificial (IA) integrada. Admite la ejecución de R, Python y Java junto a datos en memoria y a gran escala compatibles con Spark.
  • Elección de la plataforma, el lenguaje y el contenedor. Los desarrolladores y administradores de SQL Server pueden elegir su plataforma y lenguaje, con compatibilidad con Windows, Linux, contenedores, Transact-SQL, Java, C/C++, C#/VB.NET, PHP, Node.js, Python y Ruby.
  • Rendimiento y escalabilidad líderes del sector. En la actualidad, SQL Server ocupa la primera posición en el banco de pruebas TPC-E de rendimiento, y es el primero en rendimiento en las pruebas comparativas TPC-H de 1 TB, 10 TB y 30 TB.
  • Seguridad líder del sector. Según el National Institute of Standards and Technology (NIST), SQL Server ha sido el RDBMS más seguro durante más tiempo en los últimos nueve años.
  • Información en minutos en cualquier dispositivo. SQL Server proporciona una solución de un extremo a otro para la creación de informes y se escala del entorno de aplicaciones móviles al de escritorio en una fracción del costo de otros sistemas. Puede convertir los datos en respuestas mediante las funcionalidades de informes empresariales de SQL Server Reporting Services junto con la instancia de Power BI Report Server que se incluye, lo que proporciona a los usuarios acceso a informes de Power BI completos e interactivos en cualquier dispositivo.

Componentes de SQL SERVER

SQL Server funciona en arquitectura cliente-servidor, por lo que admite dos tipos de componentes:
(a) Workstation (b) Servidor.

a) Los componentes de Workstation se instalan en cada dispositivo / operador de SQL Server
máquina. Estas son solo interfaces para interactuar con los componentes del servidor. Ejemplo:
SSMS, SSCM, Profiler, BIDS, SQLEM, etc.

b) Los componentes del servidor se instalan en un servidor centralizado. Estos son servicios.
Ejemplo: SQL Server, Agente SQL Server, SSIS, SSAS, SSRS, navegador SQL, SQL
Búsqueda de texto completo del servidor, etc.

Creación de una base de datos usando T-SQL

T-SQL (Transact-SQL) es un conjunto de extensiones de programación y manipulador de datos en SQL SERVER que agregan varias características al lenguaje de consulta estructurado (SQL), incluido el control de transacciones, el manejo de excepciones y errores, el procesamiento de filas y las variables declaradas. Cada SGBD tiene un lenguaje propio
Por ejemplo: Si utilizamos ORACLE el lenguaje de manipulación será el PL-SQL.
T-SQL o PL-SQL es el nombre dado a la modificación del lenguaje SQL por Microsoft y Oracle respectivamente, la esencia del lenguaje se mantiene, es por ello que existen muchas similitudes entre ambos. Ahora nos centraremos en el T-SQL.

Para este ejemplo usaremos una base de datos de una Escuela, como vemos en imágenes primero tenemos a la izquierda su modelo-entidad-relacion y a su derecha su modelo relacional.

Ahora aprenderemos a crear una Base de Datos mediante las Querys o consultas:

  1. Primero vamos a dar click al botón New Query (o Nueva Consulta) y abrimos una nueva consulta.
  2. Entonces debemos crear una base de datos con el siguiente comando.
create database "Nombre de la Base de datos"

3. Para ejecutar una sentencia, la seleccionamos con el mouse (toda la sentencia o una a una) y presionamos el botón que dice “ejecutar o run”:

4. Para poner en memoria la nueva DB usamos el siguiente código para posteriormente hacer modificaciones.

use "Nombre de Base de datos"

Ahora aprendemos a crear tablas

Una tabla es una estructura de datos que organiza los datos en columnas y filas; cada columna es un campo (o atributo) y cada fila un registro, cada campo debe tener su respectivo tipo de dato en base a los datos que se le registrarán. Una base de datos almacena su información en tablas.

Las tablas se componen de dos estructuras:

Campo: Corresponde al nombre de la columna. Debe ser único y además de tener un tipo de dato asociado a los registros que se insertaran.
Registro: Corresponde a cada fila que compone la tabla. Allí se componen los datos y los registros. Eventualmente pueden ser nulos en su almacenamiento.

Sintaxis para crear una tabla

La sentencia CREATE TABLE se utiliza para crear una tabla en una base de datos existente.

CREATE TABLE nombretabla
(
nombrecolumna1 tipodato1,
nombrecolumna2 tipodato2,
nombrecolumna3 tipodato3,
..
);

CREATE TABLE: este comando se utiliza para indicar que una tabla se va a crear, seguidamente especificamos el nombre de la tabla. Los paréntesis () indican que dentro de ellas se agregaran las columnas de la tabla indicando el inicio y fin de la estructura, las columnas van con la siguiente estructura.

El script anterior nos permite crear una tabla llamada “Profesor” con seis columnas: la primera será de tipo int, auto incrementable y será la llave primaria de la tabla, por tanto, no acepta valores nulos; las demás dos columnas aceptan valores nulos y tres no aceptan valores nulos. Para cada columna se especifica el nombre, tipo de dato y la longitud que hace referencia a la cantidad máxima de caracteres que pueden ingresarse.

Resumen de propiedades de las columnas de tablas

PropiedadDescripción
Null:Por defecto si no se especifica NOT NULL, la columna podrá soportar nulos.
Primary Key: Indica si la columna será la llave primaria de la tabla.
Unique:Indica que la columna permitirá valores únicos, no se puede repetir un mismo valor en varias filas (row).
Default:Se indica el valor default que tendrá la columna cuando en la inserción no este contemplado este campo.
Identity:La columna será auto incrementable por defecto inicia en 1.
Indica que se esta haciendo un comentario en el código.

Tipo de datos

A continuación mostramos, agrupados por categorías (numéricos exactos, numéricos aproximados, fecha y hora, cadenas de caracteres.

Números exactos

Tipo de datosIntervaloAlmacenamiento
bigintDe -2^63 (-9.223.372.036.854.775.808) a 2^63-1 (9.223.372.036.854.775.807)8 bytes
intDe -2^31 (-2.147.483.648) a 2^31-1 (2.147.483.647)4 bytes
smallintDe -2^15 (-32.768) a 2^15-1 (32.767)2 bytes
tinyintDe 0 a 2551 bytes
moneyDe -922.337.203.685.477,5808 a 922.337.203.685.477,58078 bit
smallmoneyDe – 214.748,3648 a 214.748,36474 bit
bitTipo de datos entero que puede aceptar los valores 1, 0 o NULL1 bit

Números aproximados

Tipo de datosIntervaloAlmacenamiento
floatDe – 1,79E+308 a -2,23E-308, 0 y de 2,23E-308 a 1,79E+308Depende del valor de n
realDe – 3,40E + 38 a -1,18E – 38, 0 y de 1,18E – 38 a 3,40E + 384 bytes

Fecha y hora

Tipo de datosIntervaloAlmacenamiento
dateDe 0001-01-01 a 9999-12-31 (de 1582-10-15 a 9999-12-31 para Informática).3 bytes, fijo
datetimeDefine una fecha que se combina con una hora del día con fracciones de segundos basada en un reloj de 24 horas.
Del 01.01.53 hasta el 31.12.99.
De 00:00:00 a 23:59:59,997
8 bytes
smalldatetimeDefine una fecha que se combina con una hora del día. La hora está en un formato de día de 24 horas , con segundos siempre a cero (: 00) y sin fracciones de segundo.
De 1900-01-01 a 2079-06-06.
Del 1 de enero de 1900 hasta el 6 de junio de 2079.
4 bytes, fijo
datetime2Define una fecha que se combina con una hora del día basada en un reloj de 24 horas. datetime2 se puede considerar como una extensión del tipo datetime existente que tiene un rango de fechas mayor, un valor predeterminado mayor de precisión fraccionaria y una precisión opcional especificada por el usuario.
De 0001-01-01 a 31.12.99.
De 0 a 7 dígitos, con una precisión de 100 ns. La precisión predeterminada es 7 dígitos
timeDefine una hora de un día. La hora no distingue la zona horaria y está basada en un reloj de 24 horas.
De 00:00:00.0000000 a 23:59:59.9999999
5 bytes (fijo) es el valor predeterminado con el valor predeterminado de 100 ns de precisión de fracciones de segundo.

Cadena de caracteres

Los tipos de datos de caracteres son de tamaño fijo, char, o de tamaño variable, varchar. A partir de SQL Server 2019 (15.x), cuando se usa una intercalación con UTF-8 habilitado, estos tipos de datos almacenan el intervalo completo de datos de caracteres Unicode y usan la codificación de caracteres UTF-8.

Tipo de datosIntervalo
charchar [ ( n ) ] Datos de cadena de tamaño fijo. n define el tamaño de la cadena en bytes y debe ser un valor entre 1 y 8000. 
varcharvarchar [ ( n | max ) ] Datos de cadena de tamaño variable. Utilice n para definir el tamaño de la cadena en bytes, que puede ser un valor comprendido entre 1 y 8000, o bien use max para indicar un tamaño de restricción de columna hasta un almacenamiento máximo de 2^31-1 bytes (2 GB). 
textntextimageTipos de datos de longitud fija y variable para almacenar valores de gran tamaño con datos de caracteres y binarios Unicode y no Unicode. Los datos Unicode utilizan el juego de caracteres UNICODE UCS-2.
ntext: datos Unicode de longitud variable con una longitud máxima de cadena de 2^30 – 1 (1.073.741.823) bytes. 
text: datos no Unicode de longitud variable en la página de códigos del servidor y con una longitud máxima de cadena de 2^31-1 (2.147.483.647). 
image: datos binarios de longitud variable desde 0 hasta 2^31-1 (2.147.483.647) bytes

Comandos SQL para manipular Datos

SELECT es utilizado para recuperar datos de una o más tablas, en otras palabras, nos permite hacer consultas de los registros de las tablas.

INSERT es utilizado añadir o insertar registros a una tabla creada previamente, su complemento es Insert into.

UPDATE es utilizado para modificar los datos de un conjunto de registros existentes en una tabla

DELETE es utilizado para eliminar o borrar todo o una parte de los datos de la tabla indicada por el argumento especificado después de la palabra clave FROM.

TRUNCATE es utilizado para borrar todos los registros de una tabla, pero no la tabla, es decir que quedaría una tabla vacía.

Clausulas básicas

Sección 1. Clasificación de datos

ORDER BY Ordenar el conjunto de resultados según los valores en una lista específica de columnas.

Sección 2. Limitación de filas
OFFSET FETCH: Limita el número de filas devueltas por una consulta.
SELECT TOP: Limita la cantidad de filas o el porcentaje de filas devueltas en el conjunto de resultados de una consulta.

Sección 3. Filtrado de datos
DISTINCT: Seleccione valores distintos en una o más columnas de una tabla.
WHERE: Filtra las filas en la salida de una consulta en función de una o más condiciones.
AND: Combina dos expresiones booleanas y devuelve verdadero si todas las expresiones son verdaderas.
OR: Combine dos expresiones booleanas y devuelva verdadero si alguna de las condiciones es verdadera.
IN: Comprueba si un valor coincide con algún valor de una lista o una subconsulta.
BETWEEN: prueba si un valor está entre un rango de valores.
LIKE: comprueba si una cadena de caracteres coincide con un patrón específico.
Column & table aliases: muestra cómo usar los alias de columna para cambiar el encabezado de la salida de la consulta y el alias de la tabla para mejorar la legibilidad de una consulta.

Sección 4. Agrupación de datos
GROUP BY: Agrupa el resultado de la consulta según los valores de una lista específica de expresiones de columna.
HAVING: Especifique una condición de búsqueda para un grupo o un agregado.
GRUPING STES: Genera varios conjuntos de agrupación.
CUBE: Genera conjuntos de agrupación con todas las combinaciones de las columnas de dimensión.
ROLLUP: Genera conjuntos de agrupaciones asumiendo la jerarquía entre las columnas de entrada.

Sección 5. Joining Tables
JOIN: Brinda una breve descripción general de los tipos de uniones en SQL Server, incluida la combinación interna, la combinación izquierda, la combinación derecha y la combinación externa completa.
INNER JOIN: Seleccione filas de una tabla que tengan filas coincidentes en otra tabla.
LEFT JOIN: Devuelve todas las filas de la tabla de la izquierda y las filas coincidentes de la tabla de la derecha. En caso de que la tabla de la derecha no tenga las filas coincidentes, utilice valores nulos para los valores de columna de la tabla de la derecha.
RIGHT JOIN: Devuelve una versión inversa de la combinación izquierda.
FULL OUTER JOIN: Devuelve filas coincidentes de las tablas izquierda y derecha, y filas de cada lado si no existen filas coincidentes.
CROSS JOIN: Une varias tablas no relacionadas y crea productos cartesianos de filas en las tablas unidas.
Self join: Muestra cómo utilizar la auto-unión para consultar datos jerárquicos y comparar filas dentro de la misma tabla.

Sección 6. Set operadores
En esta sección, se explica cómo utilizar los operadores de conjuntos, incluidos unión, intersección y, excepto para combinar varios conjuntos de resultados de las consultas de entrada.
UNION: Combina los conjuntos de resultados de dos o más consultas en un único conjunto de resultados.
INTERSECT: Devuelve la intersección de los conjuntos de resultados de dos o más consultas.
EXCEPT: Encuentra la diferencia entre los dos conjuntos de resultados de dos consultas de entrada.

Código SQL del ejercicio anterior (DATABASE Escuela)

--creamos una nueva base de datos con el siguiente comando
create database Escuelita
-- para colocar en memoria y uso nuestra nueva base de datos 
use Escuelita
--creamos nuestra primera tabla de la DB Escuela 

create table Profesor (
Id_p int primary key identity (1,1) not null,
Nombre_p varchar (40) not null,
Apellido_p varchar (50) not null,
Direccion text,
Telefono int not null,
Edad int
);

--creamos la segunda tabla con su FK
create table Materia (
Id_m varchar (20) primary key not null,
Nombre_m varchar (40) not null,
Nro_alumno int,
Id_profesor int identity (1,1) not null,
CONSTRAINT fk_Profesor FOREIGN KEY (Id_profesor) REFERENCES Profesor (Id_p)
);

--creamos la tabla Estudiantes
create table Estudiante (
Id_est int primary key identity (1,1) not null,
Nombre_est varchar (40) not null,
Apellido_est varchar (40) not null,
Fech_Nac date not null,
Dirreccion text
);

--creamos la relacion N:N
create table Inscripcion (
Id_inscripcion int primary key not null,
Fecha_inscrip date not null,
Id_materia varchar (20) not null,
Id_estudiante int identity (1,1) not null,
CONSTRAINT fk_Materia FOREIGN KEY (Id_materia) REFERENCES Materia (Id_m),
CONSTRAINT fk_Estudiante FOREIGN KEY (Id_estudiante) REFERENCES Estudiante (Id_est)
);

También podemos obtener el diagrama de la Base de datos como vemos a continuación:

BY: CARLA VANESA MAMANI CHAVEZ

MICROSOFT LEARN STUDENT AMBASSADOR

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *