Está en la página 1de 132

MÁSTER EN SQL SERVER: DESDE CERO A

NIVEL PROFESIONAL
UDEMY
Contenido

TABLA DE ILUSTRACIONES ............................................................................... 10

NOTA ANTES DE EMPZAR.................................................................................. 18

1. FUNDAMENTOS Y ESTRUCTURAS DE BASE DE DATOS......................... 19

I. ¿QUÉ ES MICROSOFT MANAGMENT STUDIOS? ................................... 19

II. Herramientas del Managment Studio. ...................................................... 24

2. FUNDAMENTOS Y ESTRUCTURA DE UNA BASE DE DATOS .................. 25

I. ¿Qué es una base de Datos? ...................................................................... 25

II. ¿Qué es una tabla? .................................................................................. 25

III. ¿Qué es un tipo de dato? ......................................................................... 25

IV. Tipos de datos exigentes. ........................................................................ 25

Datos numéricos. ........................................................................................... 26

Datos texto y Binarios .................................................................................... 27

Datos de fecha y hora: ................................................................................... 27

3. RESTRICCIONES Y PROPIEDADES DE CAMPOS ..................................... 28

I. ¿Qué es una Primary Key? ......................................................................... 28

II. ¿Qué es una Foreign Key? ...................................................................... 28

Restricciones y propiedades de campos ........................................................ 28

III. ¿Qué es la propiedad IDENTITY?............................................................ 29

Propiedad Identity de un campo. .................................................................... 29


Argumentos de la propiedad Identity .............................................................. 29

IV. Normalización de la Base de datos .......................................................... 31

Primera 1FN ................................................................................................... 31

Segunda 2FN ................................................................................................. 31

Tercera 3FN ................................................................................................... 31

4. DISÑENADO NUESTRA PRIMERA BASE DE DATOS ................................. 33

I. Creando el archivo de Base de Datos. ........................................................ 33

II. Abriendo una ventana de script y estableciendo la base CentroMedico por


default. ............................................................................................................... 34

III. Definiendo la Tabla Pacientes y aplicando Formas Normales. ................ 37

IV. Cómo desactivar el warning Prevent saving changes that require table re-
created ............................................................................................................... 38

V. Estableciendo la propiedad IDENTITY en la tabla paciente ..................... 40

VI. Cómo crear una tabla y definir su Primary Key desde Transact-SQL ...... 42

VII. Definiendo la Tabla de Historias Clínicas ................................................. 42

VIII. Definiendo las Tablas de Turnos (Turno, TurnoPaciente y TurnoEstado)


43

IX. Insertar registros en la tabla turnoEstado................................................. 44

X. Ejercicio crear Tablas especialidades y países. ....................................... 45

XI. Definiendo la tabla de pagos. ................................................................... 46

XII. Definiendo la tabla de Relación Pago/ Paciente/ Turno ........................... 47


XIII. Definiendo la tabla de Conceptos ......................................................... 47

XIV. Definiendo Tipos de Datos de Usuarios. ............................................... 47

XV. Conceptos de Relaciones entre tablas. .................................................... 50

¿Qué son éstas Reglas? ................................................................................ 50

¿De que me sirve crear esta relación?........................................................... 51

Ejemplo .......................................................................................................... 51

XVI. Modelando el Diagrama Entidad Relación DER y definiendo las FK. ... 52

XVII. Crear relación con TRANSACT-SQL .................................................... 53

XVIII. Cómo reiniciar un campo IDENTITY con DBCC ................................... 54

5. COMANDOS SQL PARA MANIPULACIÓN DE REGISTROS. ...................... 55

I. Comando SELECT FROM .......................................................................... 55

II. Comando INSERT.................................................................................... 55

III. Comando DELETE ................................................................................... 56

IV. Comando UPDATE .................................................................................. 57

6. CLÁUSULAS SQL .......................................................................................... 57

I. Cláusula WHERE. ....................................................................................... 57

II. Cláusula TOP ........................................................................................... 58

III. Cláusula ORDER BY................................................................................ 59

IV. Cláusula DISTINCT .................................................................................. 60

V. Cláusula GROUP BY ............................................................................... 61


7. FRUNCIONES DE AGREGADO .................................................................... 62

I. Función MAX y MIN..................................................................................... 62

II. Función SUM ........................................................................................... 63

III. Función AVG ............................................................................................ 63

IV. Función COUNT ....................................................................................... 64

V. Función HAVING ...................................................................................... 65

8. OPERADORES LÓGICOS............................................................................. 65

I. Operador AND ............................................................................................. 65

II. Operador OR ............................................................................................ 66

III. Operador IN ............................................................................................. 66

IV. Operador LIKE ......................................................................................... 67

V. Operador NOT ......................................................................................... 68

VI. Operador BETWEEN ............................................................................... 68

VII. Combinación Operadores ........................................................................ 69

9. STORED PROSCEDURES ............................................................................ 70

I. ¿Qué es un Stored Procedure? Estructura y manipulación ......................... 70

II. ¿Qué es una variable? Uso de INSNULL para evaluar valores. .............. 71

III. Programando Subconsultas y uso de Alias Tablas .................................. 71

10. ESTRUCTURA DE CONTROL.................................................................... 71

I. El condicional IF ELSE y estructura BEGIN END ........................................ 71


II. La función EXIST ..................................................................................... 75

III. El bucle WHILE ........................................................................................ 76

IV. El condicional CASE ................................................................................ 77

V. Las instrucciones RETURN y BREAK ...................................................... 78

VI. La estructura TRY CATCH ....................................................................... 79

11. OPERACIONES ARITMÉTICAS Y DE COMPARACIÓN ............................ 80

I. Operadores Aritméticos de suma, resta, división, multiplicación, módulo. .. 80

II. Operadores mayor o igual, menor o igual, distinto. .................................. 82

12. HERRAMIENTAS ADICIONALES ............................................................... 83

I. Proceso SP_help ......................................................................................... 83

II. Proceso SP_HELPTEXT .......................................................................... 83

III. Agregando Shortcuts en la consola (sp_help, sp_helptext) ..................... 84

13. SENTENCIAS SQL ..................................................................................... 86

I. Sentencia CREATE (Table, Type, Function) ............................................... 86

II. Sentencia ALTER ..................................................................................... 87

III. Sentencia DROP ...................................................................................... 88

IV. Sentencia TRUNCATE ............................................................................. 89

14. FUNCIONES DE CONVERSIÓN Y TEXTO ................................................ 91

I. Funciones LEFT y RIGHT ........................................................................... 91

II. Función LEN ............................................................................................ 92


III. Funciones LOWER y UPPER .................................................................. 93

IV. Función REPLACE ................................................................................... 94

V. Funciones REPLICATE ............................................................................ 95

VI. Funciones LTRIM y RTRIM ...................................................................... 96

VII. Función CONCACT .................................................................................. 96

VIII. Función GETDATE y GETUTCDATE ................................................... 97

IX. Función DATEADD .................................................................................. 98

X. Función DATEIFF..................................................................................... 98

XI. Función DATEPART ................................................................................ 99

XII. Función ISDATE....................................................................................... 99

XIII. Función CAST y CONVERT ............................................................... 100

15. TRANSACTION ......................................................................................... 102

16. JOINS Y UNIONS ENTRE TABLAS .......................................................... 102

I. Cláusula INNER JOIN ............................................................................... 102

II. Cláusula LEFT JOIN .............................................................................. 103

III. Cláusula RIGHT JOIN ............................................................................ 104

IV. Consideraciones a tener en cuenta con el uso de INNER ..................... 105

V. La cláusula UNION y UNION ALL. ......................................................... 106

17. FUNCIONES DEFINIDAS POR EL USUARIO .......................................... 107

I. Funciones de tipo Escalares...................................................................... 107


II. Funciones de tipo tabla. ......................................................................... 108

18. TABLAS TEMPORALES ........................................................................... 109

I. Definición y uso de las Tablas Temporal en Memoria ............................... 109

II. Definición y uso de Tabla Temporal Física ............................................ 109

19. VISTAS ...................................................................................................... 111

I. ¿Qué es una Vista? Uso e implementación .............................................. 111

II. Creando una Vista desde el entorno gráfico. ......................................... 112

20. TRIGGERS ................................................................................................ 114

I. ¿Qué es un Trigger? Tipos posibles.......................................................... 114

II. Creación de Trigger tipo DELETE .......................................................... 114

21. BACKUP Y RESTORE DATABASE .......................................................... 115

I. Como realizar un Backup desde Managment Studio................................. 115

II. Como restaurar un Backup .................................................................... 116

III. Como crear un Backup desde Script ...................................................... 118

22. Shedule JOBS ........................................................................................... 119

I. ¿Qué es un SQL JOB? Opciones disponibles ........................................... 119

II. Preparando un JOB para realizar una tarea........................................... 120

23. ADMINISTRACIÓN DE USUAIROS, ROLES, SHCEMAS Y PERMISOS. 123

I. Usuarios y Logins ...................................................................................... 123

II. Roles de Base de Datos: tipos posibles. ................................................ 126


III. Crear y asignar un ROL a un Usuario desde T-SQL .............................. 126

IV. ¿Qué es un Schema? ............................................................................ 126

Un SCHEMA es un ESPACIO DE NOMBRES que adjunta OBJETOS, como lo


son tablas, stored procedures, etc… El ESQUEMA POR DEFECTO ES DBO.
......................................................................................................................... 126

V. Descripciones de Roles de Servidor y roles predefinido ........................ 127

ROLES PREDEFINIDOS DE BASE DE DATOS ......................................... 127

ROLES DE SERVIDOR ............................................................................... 127

24. SQL Server Profile..................................................................................... 128

I. Conocimiento de la herramienta. ............................................................... 128

II. Como monitorear procesos por tiempo de ejecución ............................. 130

25. 10 BUENAS PRÁCTICAS SOBRE DISEÑO, PROGRAMACIÓN Y


SEGURIDAD ....................................................................................................... 130

26. REFERENCIAS ......................................................................................... 132


TABLA DE ILUSTRACIONES

Ilustración 1 Object Explorer ................................................................................. 19

Ilustración 2 Demostración de conexión ................................................................ 20

Ilustración 3 Ventana Solution ............................................................................... 20

Ilustración 4 Agregar solución ............................................................................... 21

Ilustración 5 Nuevo proyecto ................................................................................. 21

Ilustración 6 Nuevo proyecto SQL Script ............................................................... 22

Ilustración 7 Resultado de la nueva solution ......................................................... 22

Ilustración 8 Ejecución de Script con resultado ..................................................... 23

Ilustración 9 Resultado del tipo de resultado ......................................................... 23

Ilustración 10 Botones de vistas de resultados ..................................................... 23

Ilustración 11 Restaurar el Layout ......................................................................... 24

Ilustración 12 Crear nueva base de datos ............................................................. 33

Ilustración 13 Nombre de la base de datos ........................................................... 33

Ilustración 14 Generado la base de datos ............................................................. 34

Ilustración 15 Escoger base de datos 1 ................................................................ 34

Ilustración 16 Acceder a la carpeta de Logins ....................................................... 35

Ilustración 17 Escoger base de datos 2 ................................................................ 36

Ilustración 18 Crear nueva tabla............................................................................ 37

Ilustración 19 Tabla Paciente ................................................................................ 37


Ilustración 20 Tabla paciente normalizada ............................................................ 38

Ilustración 21 Escoger opción ............................................................................... 39

Ilustración 22 Quitar opción de prevent ................................................................. 39

Ilustración 23 Abrir menú de Design ..................................................................... 40

Ilustración 24 Seleccionar la propiedad Is Identity ................................................ 41

Ilustración 25 Crear tabla con Trasnsact-SQL....................................................... 42

Ilustración 26 Tabla Historia .................................................................................. 42

Ilustración 27 diseño tabla HistoriaPaciente .......................................................... 43

Ilustración 28 Creación tabla Turno ....................................................................... 43

Ilustración 29 Tabla TurnoPaciente ....................................................................... 43

Ilustración 30 Crear tabla turnoEstado .................................................................. 44

Ilustración 31 Insertar en turnoEstado ................................................................... 44

Ilustración 32 Resultado ........................................................................................ 44

Ilustración 33 Generar SCRIPT para crear tabla ................................................... 45

Ilustración 34 script para país................................................................................ 45

Ilustración 35 Script Especialidad.......................................................................... 46

Ilustración 36 Tabla pago ...................................................................................... 46

Ilustración 37 Crear tabla PagoPaciente ............................................................... 47

Ilustración 38 Crear tabla de Conceptos ............................................................... 47

Ilustración 39 Definir tipo de dato .......................................................................... 48


Ilustración 40 Crear nuevo tipo de dato ................................................................. 49

Ilustración 41 Crear tipo de dato por consola ........................................................ 49

Ilustración 42 Cambiar tipo de dato a la tabla ....................................................... 50

Ilustración 43 New database Diagrams ................................................................. 52

Ilustración 44 Todas las tablas .............................................................................. 52

Ilustración 45 Modelo relacional ............................................................................ 53

Ilustración 46 Crear relación por medio de código ................................................ 53

Ilustración 47 RESEED en una tabla ..................................................................... 54

Ilustración 48 Ejemplo SELECT ............................................................................ 55

Ilustración 49 Ejemplo INSERT ............................................................................. 55

Ilustración 50 Ejemplo 2 de INSERT ..................................................................... 56

Ilustración 51 Ejemplo antes de DELETE ............................................................. 56

Ilustración 52 Ejemplo comando DELETE ............................................................ 56

Ilustración 53 Resultado después del DELETE ..................................................... 56

Ilustración 54 Actualizar registro ........................................................................... 57

Ilustración 55 Ejemplo de cláusula WHERE .......................................................... 57

Ilustración 56 Ejemplo 2 cláusula WHERE ............................................................ 58

Ilustración 57 Ejemplo clausula TOP ..................................................................... 58

Ilustración 58 Ejemplo clausula TOP con WHERE ................................................ 58

Ilustración 59 Ejemplo TOP con ORDER BY ........................................................ 59


Ilustración 60 Ejemplo de ORDER BY Descendente ............................................ 59

Ilustración 61 Ejemplo de ORDER BY ascendente ............................................... 60

Ilustración 62 Ejemplo de la cláusula DISTINCT ................................................... 60

Ilustración 63 Ejemplo cláusula DISTINCT para dos columnas ............................ 61

Ilustración 64 Ejemplo de la cláusula GROUP BY ................................................ 61

Ilustración 65 Ejemplo función MAX ...................................................................... 62

Ilustración 66 Ejemplo función MIN ....................................................................... 62

Ilustración 67 Función MIN con cláusula GROUP BY ........................................... 63

Ilustración 68 Ejemplo de Función SUM con GROUP BY ..................................... 63

Ilustración 69 Ejemplo función AVG ...................................................................... 64

Ilustración 70 Función AVG con GROUP BY ........................................................ 64

Ilustración 71 Ejemplo función COUNT ................................................................. 64

Ilustración 72 Ejemplo función HAVING ................................................................ 65

Ilustración 73 Ejemplo Operador AND .................................................................. 65

Ilustración 74 Ejemplo Operador OR ..................................................................... 66

Ilustración 75 Operador IN .................................................................................... 66

Ilustración 76 Ejemplo operador LIKE ................................................................... 67

Ilustración 77 Operador LIKE con % ..................................................................... 67

Ilustración 78 Ejemplo operador NOT ................................................................... 68

Ilustración 79 Ejemplo Operador BETWEEN ........................................................ 68


Ilustración 80 Ejemplo de Combinar operación ..................................................... 69

Ilustración 81 Ejemplo de procedimiento almacenado .......................................... 70

Ilustración 82 Procedimiento Almacenado desde Object Explorer ........................ 70

Ilustración 83 Condicional IF ................................................................................. 72

Ilustración 84 Condicional IF que no funciona ....................................................... 72

Ilustración 85 Ejecutar varias líneas con IF ........................................................... 73

Ilustración 86 Condicional ELSE ........................................................................... 74

Ilustración 87 IF EXISTS ....................................................................................... 75

Ilustración 88 Bucle WHILE ................................................................................... 76

Ilustración 89 Condicional CASE........................................................................... 77

Ilustración 90 Condicional CASE con SELECT ..................................................... 77

Ilustración 91 Ejemplo Instrucción RETURN ......................................................... 78

Ilustración 92 Ejemplo instrucción BREAK ............................................................ 78

Ilustración 93 Ejemplo de TRY CATCH ................................................................. 79

Ilustración 94 Parte 1 de operaciones aritméticas ................................................. 80

Ilustración 95 Parte 2 de operaciones aritméticas ................................................. 81

Ilustración 96 Parte 1 Operadores lógicos ............................................................ 82

Ilustración 97 Parte 2 Operadores lógicos ............................................................ 82

Ilustración 98 Proceso SP_HELP .......................................................................... 83

Ilustración 99 Ejemplo de SP_HELPTEXT ............................................................ 84


Ilustración 100 Menu Tools ................................................................................... 84

Ilustración 101 Ver menú de atajos ....................................................................... 85

Ilustración 102 Asignar comando .......................................................................... 85

Ilustración 103 Create Table ................................................................................. 86

Ilustración 104 Crear un dipo de dato ................................................................... 86

Ilustración 105 Crear función................................................................................. 86

Ilustración 106 ALTER TABLE con agregar campo .............................................. 87

Ilustración 107 ALTER TABLE para un CAMPO ................................................... 87

Ilustración 108 ALTER TABLE para ELIMINAR un campo.................................... 88

Ilustración 109 Ejemplo de DROP ......................................................................... 88

Ilustración 110 Ejemplo TRUNCATE TABLE parte 1 ............................................ 89

Ilustración 111 Ejemplo TRUNCATE TABLE parte 2 ............................................ 89

Ilustración 112 Ejemplo TRUNCATE TABLE parte 3 ............................................ 90

Ilustración 113 Ejemplo función Left ...................................................................... 91

Ilustración 114 Ejemplo función Right ................................................................... 91

Ilustración 115 Ejemplo con concatenar ................................................................ 92

Ilustración 116 Ejemplo sencillo de LEN ............................................................... 92

Ilustración 117 Función LEN con LEFT ................................................................. 93

Ilustración 118 Ejemplo función LOWER Y UPPER .............................................. 93

Ilustración 119 Upper y Lowwer para dar formato ................................................. 94


Ilustración 120 Cambiar un carácter ...................................................................... 94

Ilustración 121 Replace por un carácter ................................................................ 95

Ilustración 122 Ejemplo función Replicate ............................................................. 95

Ilustración 123 Función LTRIM y RTRIM .............................................................. 96

Ilustración 124 Función CONCAT ......................................................................... 96

Ilustración 125 Función GETDATE GETUTCDATE .............................................. 97

Ilustración 126 Función DATEADD ....................................................................... 98

Ilustración 127 Función DATEIFF ......................................................................... 98

Ilustración 128 Función DATEPART ..................................................................... 99

Ilustración 129 Función ISDATE ........................................................................... 99

Ilustración 130 Función ISDATE incorrecta ......................................................... 100

Ilustración 131 Función CAST ............................................................................. 100

Ilustración 132 Función CONVERT ..................................................................... 101

Ilustración 133 Ejemplo de TRANSACTION........................................................ 102

Ilustración 134 Representación de INNER JOIN ................................................. 102

Ilustración 135 Ejemplo de la cláusula INNER JOIN ........................................... 103

Ilustración 136 Representación de LEFT JOIN ................................................... 103

Ilustración 137 Ejemplo de LEFT JOIN ............................................................... 104

Ilustración 138 Representación de RIGHT JOIN ................................................. 104

Ilustración 139 Ejemplo de RIGHT JOIN ............................................................. 105


Ilustración 140 Ejemplo de UNION...................................................................... 106

Ilustración 141 Ejemplo de UNION ALL .............................................................. 106

Ilustración 142 Crear una función tipo escalar .................................................... 107

Ilustración 143 Probar Función............................................................................ 107

Ilustración 144 Ejemplo de creación de función tipo tabla ................................... 108

Ilustración 145 Ejemplo de llamado de función tipo tabla .................................... 108

Ilustración 146 Crear una tabla temporal en memoria ......................................... 109

Ilustración 147 Ingresando datos y creando tabla temporal en memoria ............ 109

Ilustración 148 Crear tabla temporal física .......................................................... 110

Ilustración 149 Ejemplo de TABLA TEMPORAL FÍSICA ..................................... 110

Ilustración 150 Crear vista ................................................................................... 111

Ilustración 151 Seleccionar visual de la vista ...................................................... 111

Ilustración 152 Crear VISTA ................................................................................ 112

Ilustración 153 Agregar tablas ............................................................................. 112

Ilustración 154 Seleccionar campos .................................................................... 113

Ilustración 155 Selección de filtro ........................................................................ 113


NOTA ANTES DE EMPZAR.

Estos son mis apuntes personales, quizás no esté al nivel curso original de Udemy,
dictado por Analista de Sistemas de información Mariano Puglisi. Por ello quizás
haya contenasdasdsadido faltante o notas propias.
1. FUNDAMENTOS Y ESTRUCTURAS DE BASE DE
DATOS

I.¿QUÉ ES MICROSOFT MANAGMENT STUDIOS?

Es un entorno que nos permite conectarnos a distintas instancias de bases de datos


y nos permite administrar sus objetos. Es decir, podemos crear tablas, procesos,
diagramas de base de datos y crear todos los objetos que estén relacionados con
una base de datos.

El entorno Managment Studio lo que nos va a permitir es conectarnos al motor y


poder gestionar todos sus objetos para poder crear nuestra base de datos, su
interfaz contiene lo siguiente.

El primer objeto que tenemos en cuenta es el


Object Explorer, es el que nos muestra a que
instancia estamos conectados en el motor SQL
Server en sí.

Ilustración 1 Object Explorer


Otro panel que se encuentra a la derecha es el Solution Explorer, este nos va a
mostrar las soluciones que vamos a gestionar con distintos proyectos de nuestra
base de datos.

Ilustración 2 Demostración de conexión

En el centro nos van a mostrar todos los scripts con sus respectivos resultados, cual
está conectada por defecto a la base de datos master, que es una base de datos
por sistema.

Esta es la Solution Explorer, donde


muestran todas las soluciones que van
mostrando del proyecto, cual se puede
guardar a parte para tenerla a la mano.

Ilustración 3 Ventana Solution


Ilustración 4 Agregar solución

Ilustración 5 Nuevo proyecto


Ilustración 6 Nuevo proyecto SQL Script

Luego de hacer ese proceso se creará una nueva


solution al proyecto designado donde se tendrá lo
siguiente: Connections, Queries, Miscellaneus.

Ilustración 7 Resultado de la nueva solution

Con esto podemos agregando los distintos scripts para los proyectos.
Otra ventana importante es la de los mensajes o resultados donde muestra el
resultado de la ejecución de un script de SQL, cual se verá a continuación.

Ilustración 8 Ejecución de Script con resultado

Como se observa en la ilustración 8 esta presentado en forma de tabla, hay una


manera para que solo se presente en forma de texto que es presionando la
combinación de teclas Ctrl + t y se verá como a continuación.

Ilustración 9 Resultado del tipo de resultado

Para volver a la vista de tabla con la combinación de teclas ctl + D o a la de archivo


con la combinación de teclas Ctl + Shift + f o en el menú de arriba con los siguientes
botones.

Ilustración 10 Botones de vistas de resultados


II.Herramientas del Managment Studio.

Todas las vistas o ventanas son modificables para la comodidad del usuario a la
hora de usar, cual puede ser a la izquierda, abajo, derecha y organizar como desee
el usuario.

Si uno quiere restaurar las vistas solo es presionar el botón en la barra de


herramientas Window y Reset Window Layout, le presionamos aceptar y se
reinicia a defecto las vistas de la herramienta.

Ilustración 11 Restaurar el Layout


2. FUNDAMENTOS Y ESTRUCTURA DE UNA BASE DE
DATOS

I. ¿Qué es una base de Datos?

Una base de datos este compuesto de distintas cosas, como lo son tablas, campos
que contiene títulos, autor, genero, ISB, etc. y los registros son los datos que
contiene la información de los libros, comparándolo con una biblioteca.

II.¿Qué es una tabla?

Una tabla es un espacio donde se guarda campos, a la cual cuando se guarda


información en este se llama registros, una tabla puede tener desde un campo
(que no es lo común) hasta una cantidad grande de campos (cual tampoco es
recomendable).

Los registros en la tabla es la información que va alimentando la tabla, tengamos


de ejemplo una tabla de libro, donde sus campos pueden ser nombre, autor, año,
editorial…

III.¿Qué es un tipo de dato?

Un tipo de dato es el tipo de valor que va a contener un campo, es muy importante


saber qué tipo de valor, para que concuerda con la información que se va
almacenar en la base de datos. Acompañado del tipo de dato también la cantidad
de caracteres máximos que puede tener un campo.

IV. Tipos de datos exigentes.

Dependiendo del tipo de dato se recomienda un tipo de dato, pero para ello vamos
a revisar los datos básicos de la informática.

• Bit: 0 o 1.
• Byte: 8 bits
• Kilobyte: 1024 Bytes.
• Megabyte: 1024 Kilobytes.
• Gigabyte: 1024 Megabytes.
• Terabyte: 1024 Gigabytes.
• Petabyte: 1024 Terabytes

Ahora si vamos a ver que dependiendo del tipo de dato para saber qué tipo de datos
vamos a escoger y optimizar nuestra base de datos, porque si ponemos un nombre
de 2000 caracteres es muy poco probable y si tenemos una tabla con 1000
registros, sería mucho espacio de almacenamiento reservado solo para ese
campo.

Vamos a revisar los datos más utilizados en SQL Server.

Datos numéricos.

Por la parte de enteros tenemos los siguientes tipos de datos:


BIT: 0 o 1 True o False

TINYINT: 1 byte y va desde 0 a 255

SMALLINT: -215 (-32,768) HASTA 215 (32,767)

INT: 4 bytes -215 (2,147,483,648) HASTA 231-1 (2,147,483,647)

BIGINT 8 bytes -263 (-9,223,372,036,854,775,808) 263-1
(9,223,372,036,854,775,807)

Decimales tenemos los siguientes tipos de datos:

• MONEY 8 bytes -922,337,203,685,477.5808 hasta


922,337,203,685,477.5807
• DECIMAL (10,2) Precisión y Escala
o 1 a 9: 5 bytes.
o 10 a 19: 9 bytes.
o 20 a 28: 13 bytes
o 29 a 38: 17 bytes.
Datos texto y Binarios

Por la parte de texto tenemos los siguientes tipos de datos:

• CHAR: 1 byte por carácter UTF-8 1 hasta 8000 MAX


• VARCHAR 1 byte por carácter variable UTF-8 hasta 8000 MAX hasta 231-1
bytes (2 GB)
• NCHAR 2 bytes por carácter UTF-16 1 hasta 4000
• NVARCHAR 2 bytes por carácter UTF-16 1 hasta 4000 MAX 230-1 Caracteres
(2 GB de espacio) (1 GB de datos)

Por parte de los datos binarios tenemos.

• BINARY: 1 byte por valor 1 hasta 8000


• VARBINARY: 1 byte por valor variable 1 hasta 8000 231-1 bytes (2GB)

Datos de fecha y hora:

Para los datos de fecha y hora tenemos:

• DATE 3 bytes YYYY-MM-DD 01/01/0001 hasta 31/12/9999


• TIME 5 bytes hh:mm:ss:nnnnnn 00:00:00.000000 hasta 23:59:59.999999
• DATETIME 8 bytes YYYY-MM-DD hh:mm:ss:nnn 01/01/1753 HASTA
31/12/9999 00:00:00 HASTA 23:59:59.997
• SMALLDATETIME 4 bytes YYYY-MM-DD hh:mm:ss 01/01/1900 HASTA
06/06/2079 00:00:00 HASTA 23:59:59
3. RESTRICCIONES Y PROPIEDADES DE CAMPOS

I. ¿Qué es una Primary Key?

La clave Primary key (PK), identifica de manera única a cada registro de una tabla,
el valor que contiene la columna definida como Primary key, debe ser único, una
de las condiciones es que debe ser NOT NULL (No se permite valores nulos), una
tabla puede tener más de un campo PK, a la que llamamos CLAVE COMPUESTA.
Sea SIMPLE o COMPUESTA, cada tabla solo podrá tener clave primaria
(PRIMARY KEY) es decir sólo habrá una única clave primaria de este tipo. No se
podrá crear otra combinación.

II. ¿Qué es una Foreign Key?

La clave foránea o Foreign key, debe ser del mismo tipo de dato que su campo
relacionado. El valor del campo relacionado. El valor del campo definido como FK
puede ser Null.

Restricciones y propiedades de campos

¿Qué es una Primary Key (PK)?

Una Primary Key o Clave primaria, está compuesta por uno o más campos de una
tabla. Este grupo de campos que conforman una PK hacen que cada registro de la
tabla se pueda identificar unívocamente. Es decir que, solo existirá un único registro
con determinados valores en los campos conformados por la PK. No habrá
repeticiones.

Esta es una de las primeras reglas de Integridad Referencial de Base de Datos.

¿Qué es una Foreign Key (FK)?


Una Foreign Key o Clave Foránea (Ajena), es aquella Relación entre la Clave
Primaria de una Tabla llamémosla A, la cual está relacionada directamente con uno
o más campos del mismo tipo de una tabla B.

La tabla B solo podrá tener valores ene l campo con Clave Foránea, que existan
únicamente en la Tabla A. No podrá tener otros valores.

La Clave Foránea también es una de las reglas de Integridad Referencial de Base


de datos.

III. ¿Qué es la propiedad IDENTITY?


Propiedad Identity de un campo.

La propiedad Identity se puede establecer a uno o más campos de una tabla


determinada.

Un campo con propiedad Identity activada, hará que su valor se incremente


automáticamente a medida que se inserten registros en la tabla.

Es por ello que, para que un campo puede se Identity, su tipo de dato debe ser
numérico.

Por lo general establecemos Identity a un campo que es Primary Key. Con esto
lograremos que su valor no se duplique, generando registros unívocos (únicos).

Argumentos de la propiedad Identity

Existe un argumento requerido llamado Seed.

El argumento Seed define desde que valor comienza a incrementar su valor.

Si el valor de Seed es 1, comenzará a incrementar desde 1.

Si el valor de Seed es 5, comenzará a incrementar desde 5.

También existe un argumento de la propiedad Identity, llamado Increment.


Si el valor de Increment es 1, el valor del campo se guardará con valores correlativo
ej: 1,2,3,4.

Si el valor de Increment es 2, el valor del campo se guardará con valores correlativos


ej: 1,3,5,7

Para definir un campo con propiedad Identity (Seed =1, Increment=2) desde T-SQL
colocamos:

EJ: [NombreCampo] [int] IDENTITY (1,2)

Ejemplo de tabla con propiedad IDENTITY (1,2)

Tabla 1 Ejemplo de la propiedad Identity

Ejemplo de tabla con propiedad IDENTITY (10,1)

Tabla 2 Ejemplo propiedad IDENTITY (10,1)


IV. Normalización de la Base de datos

Tabla 3 Tabla médicos sin normalizar

Primera 1FN

Se dice que una Tabla está en Primera Forma Normal y si sólo si todos sus campos
(Atributos) contienen valores atómicos. Esto quiere decir que cada Atributo de la
tabla deberá tener un único valor para una ocurrencia de la Entidad. No se
permitirán grupos repetitivos.

Tabla 4 Tabla pacientes con 1FN

Segunda 2FN

Una tabla está en Segunda Forma Normal si y solo si están en 1FN y todos los
Atributos no clave dependen de por completo de la clave primaria.

Tercera 3FN

Una tabla está en Tercera Forma Normal si y sólo si está en 2FN los atributos no
clave son independientes entre sí. Esto quiere decir que los valores de los atributos
dependen sólo de la clave primaria y no depende de otro Atributo no clave. El
valor del Atributo no debe depender del valor de otro Atributo no clave.
Tabla 5 Tabla paciente 2FN y 3FN

Tabla 6 Tabla país

Tabla 7 Tabla medico

Tabla 8 Tabla TurnoPaciente


4. DISÑENADO NUESTRA PRIMERA BASE DE DATOS

En esta parte ya se deja tanto de teoría y empieza a hacer más de práctica, por
ello se recomienda que vaya planchando nalga y tirar código.

I. Creando el archivo de Base de Datos.

Para empezar, nos vamos a abrir nuestro gestor de base de datos y vamos a
conectarnos al motor de bases de datos, en el menú de la izquierda Object
explorer vamos a pararnos sobre la carpeta de Databases presionamos clic
derecho y nos aparecerá la siguiente ventana:

Ilustración 12 Crear nueva base de datos

Ahora le ponemos el nombre de la base de datos correspondiente al proyecto que


estemos realizando.

Ilustración 13 Nombre de la base de datos

Cuando presionemos guardar la base de datos nos generara dos archivos, un


MDF para la base de datos y un archivo log con extensión RDF.

Una recomendación es cambiar la ubicación donde se genera la base de datos en


otro disco que no sea el disco del sistema ya que si se formatea y no se tiene
backup se perderá.

Generada la BD veremos en el Object Explorer los siguientes archivos o carpetas


que gestiona SQL Server.
Ilustración 14 Generado la base de datos

II. Abriendo una ventana de script y estableciendo la base


CentroMedico por default.

Para escoger la base de datos que deseemos cuando abrimos el Managment


Studio hay de dos maneras, la primera es al abrir un script y escoger manualmente
la base de datos.

Ilustración 15 Escoger base de datos 1

Para la segunda manera vamos al Object Explorer, carpeta security y finalmente


a la parte de Logins, vamos al usuario correspondiente, en este caso SA y
presionamos clic derecho propiedades.
Ilustración 16 Acceder a la carpeta de Logins

Al abrir las propiedades nos aparecerá la siguiente ventana, la cual en la parte


inferior en la sección Default database seleccionamos la que vamos a trabajar en
este caso centroMedico y así quedará por defecto la base de datos seleccionada.
Ilustración 17 Escoger base de datos 2

Después de eso hay que desconectar y volver a conectarse a la base de datos, para
que el cambio surta efecto.
III. Definiendo la Tabla Pacientes y aplicando Formas Normales.

Para crear una tabla en la base de datos, vamos al Object Explorer, seleccionamos
la base de datos en este caso centroMedico (La segunda palabra va junta y en
mayúscula). Vamos a la selección de Tablas presionamos clic derecho y new
Table.

Ilustración 18 Crear nueva tabla

Ahora al tener el diagrama abierto empezamos a introducir los nombres de las


columnas con su respectivo tipo de dato, al realizar esto el primer dato en nuestro
caso idPaciente tendrá llave primaria cual en la columna de la izquierda clic
derecho y seleccionamos Primary Key, cuando se tenga todo organizado,
seleccionamos la opción y guardar y ponemos el nombre de la tabla (cual siempre
va en singular).

Ilustración 19 Tabla Paciente


Si analizamos la tabla de la ilustración 19, no corresponde a la 1FN, 2FN, 3FN por
los campos idTurno y idEspecialista y fechaAlta ya que, si un paciente tiene
varios turnos o citas con especialistas y si le dan varias fechas de alta, se estaría
repitiendo varias veces. Para ello eliminamos los campos anteriores y agregamos
un campo email y observación.

Ilustración 20 Tabla paciente normalizada

IV. Cómo desactivar el warning Prevent saving changes that require


table re-created

Cuando nos salga el error que no se pueden guardar porque requiere que la tabla
se rehace con drop y organizarla con los cambios que uno quiere.

Para evitar esto vamos a la barra de menú escogemos opciones.


Ilustración 21 Escoger opción

Cuando nos abra la ventana vamos a la sección de Designers escogemos la opción


de Table and Database Designers, ya en esa opción desmarcamos la ultima
opción que dice “Prevent saving changes thar require table re-creations”.

Ilustración 22 Quitar opción de prevent


V. Estableciendo la propiedad IDENTITY en la tabla paciente

Vamos a activar la propiedad IDENTITY en el campo idPaciente en la tabla


Paciente.

Esta propiedad hará que el valor del campo idPaciente, se incremente


automáticamente a medida que insertamos registros en la tabla.

Hacemos clic derecho sobre la tabla y seleccionamos la vista de diseño.

En la lista propiedad, damos dobles click a la propiedad Is Identity.

Guardamos los cambios desde la barra de menú, listo.

Ilustración 23 Abrir menú de Design


Ilustración 24 Seleccionar la propiedad Is Identity
VI. Cómo crear una tabla y definir su Primary Key desde Transact-
SQL

Lo primero es abrir un nuevo Query, cual vamos a llamar la tabla en este caso
Paciente1, donde cada campo separado por una coma (,), dando así sus
características como lo puede ser NOT NULL o puede ser Primary Key, viéndolo a
continuación.

Ilustración 25 Crear tabla con Trasnsact-SQL

VII. Definiendo la Tabla de Historias Clínicas

Vamos a hacer el mismo proceso del paso III para crear la tabla de Historias
Clínicas. Tengamos en cuenta que la columna idHistoria tiene la propiedad
Identity.

Ilustración 26 Tabla Historia


Vamos a crear una tabla nueva de intermediaria para la tabla Historia, tabla
Paciente y tabla Medico.

Ilustración 27 diseño tabla HistoriaPaciente

Al ser una tabla especial de conexión, todos sus datos serán tomados como llaves
primarias, en la cual cada dato será importante.

VIII. Definiendo las Tablas de Turnos (Turno, TurnoPaciente y


TurnoEstado)

Vamos a crear una nueva tabla, de la misma manera que las veces anteriores.

Ilustración 28 Creación tabla Turno

Ahora nos falta relacionar la tabla turno con paciente y para ello vamos a crear otra
tabla.

Ilustración 29 Tabla TurnoPaciente


IX. Insertar registros en la tabla turnoEstado

Para ello vamos a crear la tabla turnoEstado, primero vamos a abrir un nuevo
query, el cual vamos a introducir el siguiente código.

Ilustración 30 Crear tabla turnoEstado

Ahora vamos a introducir los posibles estados del turno, para ello vamos a
introducir las siguientes líneas de código.

Ilustración 31 Insertar en turnoEstado

Vemos que ingreso correctamente los registros y para comprobar solo debemos
ingresar el siguiente SELECT y veremos el resultado.

Ilustración 32 Resultado
X. Ejercicio crear Tablas especialidades y países.

Aquí se recomienda que cada uno se tome la tarea de diseñar la tabla de país y la
tabla de especialidad, tengan en cuenta que la posible PK para país puede ser la
que definimos anteriormente como idPais con tipo de dato char 3. Y para ver si
corresponde con los códigos correspondientes se ve a continuación.

Ilustración 33 Generar SCRIPT para crear tabla

En el caso del script de país es el de a continuación.

Ilustración 34 script para país


Y para la tabla especialidad el código queda así.

Ilustración 35 Script Especialidad

Antes de eso también se definirá la tabla de médico, para ello solo se tendrá su Id,
nombre y apellido.

XI. Definiendo la tabla de pagos.

Ilustración 36 Tabla pago


XII. Definiendo la tabla de Relación Pago/ Paciente/ Turno

Ilustración 37 Crear tabla PagoPaciente

XIII. Definiendo la tabla de Conceptos

Ilustración 38 Crear tabla de Conceptos

XIV. Definiendo Tipos de Datos de Usuarios.

Un tipo de dato de usuario lo que nos facilita es crear un tipo de dato en particular,
un nombre que especificamos y poderlo usar en todo el ciclo de vida de la base
de datos. Esto nos ayuda a evitar perder el seguimiento de los datos.

Para ello vamos a abrir la base de datos en Programmability y en types.


Ilustración 39 Definir tipo de dato
Ilustración 40 Crear nuevo tipo de dato

Ilustración 41 Crear tipo de dato por consola

Después de crear los tipos de datos, vamos a ir a la tabal en este caso va a ser la
de Paciente y vamos a diseño, escogemos el Data Type de la ID escogida y vamos
a cambiarlo al
Ilustración 42 Cambiar tipo de dato a la tabla

Esto nos permite establecer un orden en todas las tablas para que sea el mismo
tipo de dato y no tener problemas mas adelante con la consistencia.

XV. Conceptos de Relaciones entre tablas.

Las relaciones entre tablas no son obligatorias. Una base de datos puede no tener
tablas relacionadas.

No obstante, una BD sin relaciones, corre el riesgo de perder la integridad de los


datos en las tablas, ya que no tiene definida las reglas de Integridad Referencial.

¿Qué son éstas Reglas?

Son propiamente las relaciones entre tablas, en las que un campo Primary Key (PK)
se relaciona un campo de otra tabla (del mismo tipo de dato), al cual llamamos
Foreign Key (FK).
¿De que me sirve crear esta relación?

Esta relación NO permitirá colocar un valor en el campo definido como FK, que no
esté definido en la tabla definida con el campo PK.

Ejemplo

Tabla Paciente (campo idpais FK)

Tabla Pais (Campo idpais PK)

Si tratamos de insertar un paciente nuevo con un código de país que no existe en


la tabla país, devolverá error y no permitirá su grabación.

¿Por qué no me permite insertar el registro?

Porque se ha definido la relación entre ambas tablas. Es una regla de Integridad


Referencial, y que proviene que guardemos registros con valores indefinidos.

Esto hace que, del lado del interfaz de usuario, siempre se pueda visualizar
información consistente.

¿Qué sucede si quiero eliminar un registro de la tabla País, cuyo país está
asignado a un Paciente?

Al igual que antes, la regla de Integridad no nos permitirá eliminar el país, hasta que
cambiemos el país del Paciente por otro.

Esta es la característica principal de las Bases de Datos relacionales.


XVI. Modelando el Diagrama Entidad Relación DER y definiendo las FK.

Vamos a la base de datos que tenemos de elección y vamos a la sección de


Database Diagrams. Click derecho y escogemos la opción de New Database
Diagram.

Ilustración 43 New database Diagrams

Al escoger eso nos aparece un listado con todas las tablas de la base de datos que
hayamos creado. Donde escogemos todas las tablas.

Ilustración 44 Todas las tablas

Organizamos las tablas de una manera sencilla que podamos trabajar. Para crear
la relación debemos seleccionar el campo presionar click y llevar el campo hacia la
otra tabla, quedando así.
Ilustración 45 Modelo relacional

XVII. Crear relación con TRANSACT-SQL

Teniendo en cuenta la relación que hay entre las tablas paciente y país vamos a
eliminarla de la manera grafica para así realizarla por medio de scripts. Quedando
así el siguiente código.

Ilustración 46 Crear relación por medio de código


XVIII. Cómo reiniciar un campo IDENTITY con DBCC

Lo primero es que la tabla no debe tener registros, para reiniciar, los parámetros
para reiniciar son los siguientes: el nombre de la tabla, el comando RESEED y el
numero a partir del cual desea que vuelva a empezar.

Ilustración 47 RESEED en una tabla


5. COMANDOS SQL PARA MANIPULACIÓN DE
REGISTROS.

I. Comando SELECT FROM

Lo primero que debemos tener en cuenta para hacer estos comandos es que
debemos estar usando la base de datos correspondiente, ya sea escogiéndolo de
manera grafica o usando el comando USE. Después de eso ya especificar
mediante las clausulas que se verán mas adelante. Por ahora veremos el SELECT
* FROM TABLE más sencillo.

Aclarando que el * se puede cambiar por cualquier columna o grupo de columnas


que estén dentro de la tabla o tablas para así tener el SELECT más completo.

Ilustración 48 Ejemplo SELECT

II. Comando INSERT

Siguiendo con la misma lógica que con el SELECT FROM tenemos el comando
para insertar registros dentro de nuestras tablas, la estructura básica de esta es
INSERT INTO TBALE VALUES (XXXXX,XXXXX,XXXX). Hay varias cosas que
tener en cuenta a la hora de usar este comando, es que el Auto incremental como
son los ID no se colocan por lo general y también uno puede especificar a que
columnas.

Ilustración 49 Ejemplo INSERT


También se puede especificar a que campos uno quiere que se le agreguen los
registros, para ello después de especificar el nombre de la tabla, se debe poner
entre paréntesis los campos que se van a agregar.

Ilustración 50 Ejemplo 2 de INSERT

III. Comando DELETE

Este comando nos permite eliminar registros de la Tabla y es es uno de los más
PELIGROSOS dentro de SQL, ya que si no se especifica que se va a eliminar dentro
de este, podría vaciar toda la tabla si no tiene toda la cláusula WHERE, tomando en
cuenta el ejemplo anterior con Autor.

Ilustración 51 Ejemplo antes de DELETE

Realizando el comando DELETE vemos a continuación con base de la información


del anterior SELECT.

Ilustración 52 Ejemplo comando DELETE

Ilustración 53 Resultado después del DELETE


IV. Comando UPDATE

Con el comando UPDATE nos permite actualizar registros dentro de las tablas, este
comando nos permite cambiar un elemento, conjunto de elementos o la totalidad de
estos. Por ello hay que tener mucho cuidado a la hora de escribir su sentencia, un
ejemplo que se tiene es el de a continuación.

Ilustración 54 Actualizar registro

6. CLÁUSULAS SQL

Estas cláusulas nos sirven para ordenar y agrupar los registros de las consultas
dentro de SQL.

I. Cláusula WHERE.

Esta cláusula nos permite filtrar datos, nos sirve para seleccionar unos registros
digamos por apellidos, país o entre otros tipos de registros.

Por ejemplo, podemos tener en la tabla autores de libros aquellos que nacieron en
Colombia.

Ilustración 55 Ejemplo de cláusula WHERE


También podemos poner doble clausula con el AND con el cual podemos tener
varias por ejemplo, autores de USA y que hayan vivido en el siglo pasado.

Ilustración 56 Ejemplo 2 cláusula WHERE

II. Cláusula TOP

La clausula TOP va después de la clausula SELECT, cual devuelve la cantidad de


registros en orden, es decir devuelve los dos primeros.

Ilustración 57 Ejemplo clausula TOP

También se le puede incluir la clausula WHERE para la selección.

Ilustración 58 Ejemplo clausula TOP con WHERE

Y para traer el registro mas reciente es por medio de un ORDER BY.


Ilustración 59 Ejemplo TOP con ORDER BY

III. Cláusula ORDER BY

La cláusula ORDER BY es para organizar las consultas de manera ascendente o


de manera descendente.

Ilustración 60 Ejemplo de ORDER BY Descendente

Y por defecto ordena de manera ascendente.


Ilustración 61 Ejemplo de ORDER BY ascendente

IV. Cláusula DISTINCT

La clausula DISTINCT funciona para agrupar por un campo en particular, digamos


que a partir de los ejemplos anteriores podemos con la columna País.

Ilustración 62 Ejemplo de la cláusula DISTINCT


Ilustración 63 Ejemplo cláusula DISTINCT para dos columnas

Como se puede ver trajo todos los registros de la tabla, esto ya que la cláusula
DISTINCT solo trae los repetidos y al haber nombres distintos no los agrupa.

V. Cláusula GROUP BY

Esta cláusula funciona igual que DISTINCT excepto que nos permite agregar
funciones de agregado.

Ilustración 64 Ejemplo de la cláusula GROUP BY


7. FRUNCIONES DE AGREGADO

Las funciones de agregado son acompañantes de la cláusula GROUP BY.

I. Función MAX y MIN

Esta función nos permite ver el máximo y el mínimo de la tabla, es decir fechas, id
o para lo que sea necesario.

Ilustración 65 Ejemplo función MAX

Ilustración 66 Ejemplo función MIN

Para verlo con la cláusula GROUP BY es a continuación.


Ilustración 67 Función MIN con cláusula GROUP BY

II. Función SUM

La función SUM se aplica directamente sobre el campo que uno desea sumar, cual
suma los totales con respecto a la cláusula GROUP BY.

Ilustración 68 Ejemplo de Función SUM con GROUP BY

III. Función AVG

Esta función nos permite calcular el promedio de un campo numérico.


Ilustración 69 Ejemplo función AVG

Ilustración 70 Función AVG con GROUP BY

IV. Función COUNT

La función COUNT nos funciona para contar la cantidad de filas o registros que hay
en el campo o tabla.

Ilustración 71 Ejemplo función COUNT


V. Función HAVING

Lo que nos permite ver que tiene, función HAVING funciona con la función COUNT
y la cláusula GROUP BY.

La diferencia entre el WHERE Y EL HAVING es que el WHERE nos filtra sobre


registro a registro, a comparación del HAVING lo hace sobre un conjunto de
registros.

Ilustración 72 Ejemplo función HAVING

8. OPERADORES LÓGICOS

I. Operador AND

Lo que nos permite es concatenar varias condiciones dentro de la cláusula


WHERE. Donde ambas condiciones se deben combiar.

Ilustración 73 Ejemplo Operador AND


II. Operador OR

En este operador una de las condiciones se debe cumplir para devolver.

Ilustración 74 Ejemplo Operador OR

III. Operador IN

En este operador nos permite filtrar en un grupo de valores que vamos a


establecer.

Ilustración 75 Operador IN
IV. Operador LIKE

El operador LIKE lo que nos permite trabajar sobre cadenas caracteres.

Ilustración 76 Ejemplo operador LIKE

Para nombres que no sean completos, se utiliza la combinación del carácter con
el %.

Ilustración 77 Operador LIKE con %


V. Operador NOT

Lo que nos permite es negar cualquier operador ejecutado antes.

Ilustración 78 Ejemplo operador NOT

Lo que nos permite ver son el resto de apellidos que no cumplía en el ejemplo de la
operación LIKE.

VI. Operador BETWEEN

Lo que nos permite este operador es filtrar los registros por un determinado rango,
que puede ser fechas, números, textos.

Ilustración 79 Ejemplo Operador BETWEEN


VII. Combinación Operadores

Uno puede combinar varias de las operaciones antes mencionadas , como por
ejemplo.

Ilustración 80 Ejemplo de Combinar operación

Para darle importancia hay que encerrar entre paréntesis para que devuelva
correctamente.
9. STORED PROSCEDURES

I. ¿Qué es un Stored Procedure? Estructura y manipulación

Es un conjunto de instrucciones SQL que esta almacenado, que no este en un


archivo, esta almacenado internamente en el SQL. Estos están diseñados para
realizar múltiples acciones concretas. Por lo general para lo que nos sirve es para
un proceso de inserción, editar, eliminar registros. Lo principal es que tenga un
objetivo.

La estructura es un Stored Procedure es CREATE PROC (es una abreviatura)


SP_EJEMPLO (NOMBRE) (PARAMETROS)

Ilustración 81 Ejemplo de procedimiento almacenado

También se puede hacer de manera mas grafica en la carpeta programability.

Ilustración 82 Procedimiento Almacenado desde Object Explorer


II. ¿Qué es una variable? Uso de INSNULL para evaluar valores.

Una variable es un valor que nos sirve para guardar distintos tipos de valores, que
pueden ser de los mismos tipos de datos que se pueden asignar a la base de datos.

Y el ISNULL es para comprobar si una variable esta vacía y devolverla un resultado


por si resulta siendo

III. Programando Subconsultas y uso de Alias Tablas

Las subconsultas son resultados a partir de otra consulta, para tener en cuenta el
subqueri debe ser solo de un valor. Y el alias a una tabla es para darle un nombre
alternativo.

10. ESTRUCTURA DE CONTROL

En esta sección vamos a ver las estructuras que se pueden ejecutar en SQL
SERVER para evaluar un bloque de código, cuales son las siguientes estructuras.

I. El condicional IF ELSE y estructura BEGIN END

Nos sirve para evaluar el valor de una variable o una consulta para ejecutar acciones
que sean necesarias para el este resultado.
Ilustración 83 Condicional IF

Como vemos funciona la condicional IF, pero en el caso que no funcione no nos
devolverá nada la condicional.

Ilustración 84 Condicional IF que no funciona


Para ejecutar varias líneas de script se debe ingresar entre BEGIN y END, o si no
solo se ejecutara la primera línea de esta.

Ilustración 85 Ejecutar varias líneas con IF

Y si no se ejecuta la condición IF se ejecuta la condición ELSE.


Ilustración 86 Condicional ELSE
II. La función EXIST

La función EXIST nos permite evaluar si un grupo de registros de determinada


consulta existe.

Ilustración 87 IF EXISTS

Hay que tener en cuenta el tabulado a la hora de escribir los scripts para así tener
en cuenta el orden y saber lo que uno escribe.
III. El bucle WHILE

El bucle WHILE nos permite ejecutar un bloque de código hasta que la condición
se cumpla.

Ilustración 88 Bucle WHILE

En este caso recordar que el WHILE la variable CONTADOR debe estar


AUMENTANDO O DISMINUYENDO o sino se ejecutara ínfimamente y no
queremos eso.
IV. El condicional CASE

La condicional CASE nos sirve para evaluar valores, y evaluando resultados


dependiendo del resultado de este, la podremos utilizar en un SELECT.

Ilustración 89 Condicional CASE

Ilustración 90 Condicional CASE con SELECT


V. Las instrucciones RETURN y BREAK

La instrucción RETURN nos permite salir del SCRIPT para consola y todas las
instrucciones que estén después de esta instrucción no se ejecutarán

Ilustración 91 Ejemplo Instrucción RETURN

y la instrucción BREAK va a salir del bucle antes que termine.

Ilustración 92 Ejemplo instrucción BREAK


VI. La estructura TRY CATCH

Lo que nos permite la estructura TRY CATCH es para los errores no controlados
durante la ejecución, nos permite capturar el error y devolvernos el error específico
mediante consola.

Ilustración 93 Ejemplo de TRY CATCH


11. OPERACIONES ARITMÉTICAS Y DE COMPARACIÓN
I. Operadores Aritméticos de suma, resta, división,
multiplicación, módulo.

Tenemos una gran cantidad de operaciones aritméticas dentro de las opciones de


SQL, en los cuales puede ser ejecutado dentro de las variables que nosotros
mismos podemos declarar.

Ilustración 94 Parte 1 de operaciones aritméticas


Ilustración 95 Parte 2 de operaciones aritméticas
II. Operadores mayor o igual, menor o igual, distinto.

Ilustración 96 Parte 1 Operadores lógicos

Ilustración 97 Parte 2 Operadores lógicos


12. HERRAMIENTAS ADICIONALES
I. Proceso SP_help

Este proceso nos permite ver el detalle de los objetos que tenemos definidos en
nuestra base de datos y se escribe de manera sp_help (con el nombre de la
tabla)

Ilustración 98 Proceso SP_HELP

II. Proceso SP_HELPTEXT

Este proceso es igual al anterior pero solo funciona con Procedimientos


almacenados, en el cual ver y poder editarlo.
Ilustración 99 Ejemplo de SP_HELPTEXT

III. Agregando Shortcuts en la consola (sp_help, sp_helptext)

Para poder ejecutar ambos procesos desde una combinación de teclas, en la cual
nos podrá facilitar el proceso, para ello vamos a Menu Tools, options.

Ilustración 100 Menu Tools


Ilustración 101 Ver menú de atajos

Ilustración 102 Asignar comando

Al realizar los cambios en el menú de atajos hay que abrir un nuevo QUERY para
que se realicen los cambios.
13. SENTENCIAS SQL
I. Sentencia CREATE (Table, Type, Function)

Con esta sentencia nos permite crear tablas, tipos, funciones y bases de datos.
La cual se ve a continuación, es la de creación por defecto que da el motor de base
de datos.

Ilustración 103 Create Table

Para crear un tipo de dato de usuario es a continuación:

Ilustración 104 Crear un dipo de dato

También para crear una función

Ilustración 105 Crear función


II. Sentencia ALTER

Esta sentencia nos permite alterar la estructura de tabla, procedimiento


almacenados, funciones.

Ilustración 106 ALTER TABLE con agregar campo

Ilustración 107 ALTER TABLE para un CAMPO


Ilustración 108 ALTER TABLE para ELIMINAR un campo

III. Sentencia DROP

Este comando nos ELIMINA TODA LA BASE DE DATOS O LA TABLA es una de


las sentencias mas CUIDADO porque se debe especificar que TABLA O QUE SE
ESTA BORRANDO O SE LLEVA TODA LA BASE DE DATOS POR DELANTE.

Ilustración 109 Ejemplo de DROP


IV. Sentencia TRUNCATE

Esta sentencia nos hace es VACIAR O ELIMINAR POR COMPLETO los registros
de una tabla y reiniciar los campos Identity.

Cual tenemos la tabla de ejemplo con lo siguiente

Ilustración 110 Ejemplo TRUNCATE TABLE parte 1

Al realizar la SENTENCIA TRUNCATE

Ilustración 111 Ejemplo TRUNCATE TABLE parte 2


El resultado al volver ingresar registros es el siguiente:

Ilustración 112 Ejemplo TRUNCATE TABLE parte 3


14. FUNCIONES DE CONVERSIÓN Y TEXTO

I. Funciones LEFT y RIGHT

Lo que realiza esta función es tomar la cantidad de caracteres que uno mismo indica
del lado derecho e izquierdo de una variable, se realiza de la siguiente manera.

Ilustración 113 Ejemplo función Left

Ilustración 114 Ejemplo función Right

Otra manera es de la siguiente manera para concatenar dos cadenas de caracteres.


Ilustración 115 Ejemplo con concatenar

II. Función LEN

Lo que realiza esta función es contar la cantidad de caracteres que hay en una
variable CHAR o VARCHAR, para ver la cantidad de caracteres que ingrese un
usuario, se puede combinar con la función LEFT o RIGHT por ejemplo.

Ilustración 116 Ejemplo sencillo de LEN


Ilustración 117 Función LEN con LEFT

III. Funciones LOWER y UPPER

Estas funciones nos permite dar formato a campos de tipo texto o campos de una
campa, lo que hace LOWER es pasar todos los caracteres en minúscula a
comparación de la función UPPER deja la cadena de caracteres en mayúsculas.

Ilustración 118 Ejemplo función LOWER Y UPPER

Nos sirve para cambiar cuando un usuario nos guarda su nombre y apellido en un
formato que nosotros deseemos.
Ilustración 119 Upper y Lowwer para dar formato

IV. Función REPLACE

Lo que nos permite es reemplazar un carácter por otro, ya puede ser en una
variable o en el campo de una tabla.

Ilustración 120 Cambiar un carácter


Ilustración 121 Replace por un carácter

V. Funciones REPLICATE

Lo que nos permite es repetir un carácter o una cadena de caracteres una cantidad
de veces.

Ilustración 122 Ejemplo función Replicate


VI. Funciones LTRIM y RTRIM

Lo que realiza estas funciones es eliminar los espacios del principio y del final,
LTRIM es el encargado de eliminar el espacio al principio en la cadena de
caracteres y RTRIM al final de la cadena de caracteres.

Ilustración 123 Función LTRIM y RTRIM

VII. Función CONCACT

Lo que permite la función CONCAT permite concatenar dos valores diferentes en


una cadena de caracteres, también se puede agregar la función LTRIM Y RTRIM
para separar los espacios.

Ilustración 124 Función CONCAT


VIII. Función GETDATE y GETUTCDATE

Estas funciones son importante para almacenar la fecha y la hora de los


registrosfueron creados. La función del GETDATE es la fecha y la hora del sistema
a comparación del GETUTCDATE es la fecha y hora del meridiano de Grengwitch.

Ilustración 125 Función GETDATE GETUTCDATE


IX. Función DATEADD

Esta función nos permite agregarle una fecha intervalos, de segundos, minutos,
horas, días, meses y años.

Ilustración 126 Función DATEADD

X. Función DATEIFF

Lo que nos permite es ver la diferencia entre dos intervalos de fechas que nosotros
especifiquemos.

Ilustración 127 Función DATEIFF


XI. Función DATEPART

Esta función nos permite obtener un intervalo especifico de una fecha.

Ilustración 128 Función DATEPART

Un recordatorio es que dentro de los parámetros se puede ingresar wd, dd para


saber específicamente.

XII. Función ISDATE

Lo que nos permite es evaluar si una fecha en especifica esta en el formato correcto.

Ilustración 129 Función ISDATE

Si esta ingresado la fecha incorrectamente nos devolverá un 0, como se ve a


continuación
Ilustración 130 Función ISDATE incorrecta

XIII. Función CAST y CONVERT

Estas son las funciones de conversión la función CAST nos permite un tipo de dato
a otro, dentro del mismo tipo, es decir que sea de decimal a entero, no se puede
hacer un varchar a decimal.

La función CONVERT nos permite cambiar con un poco de detalle los tipos de
datos.

Ilustración 131 Función CAST


Ilustración 132 Función CONVERT
15. TRANSACTION

Esta operación nos permite hacer varios INSERT, DELETE, UPDATE en el cual si
uno falla se devuelva al estado original de operación.

Ilustración 133 Ejemplo de TRANSACTION

En el script anterior vemos que intentamos cambiar el nombre a varios autores por
Brandon, como vemos que hay varios autores de COL no se realiza la operación.

16. JOINS Y UNIONS ENTRE TABLAS


I. Cláusula INNER JOIN

Ilustración 134 Representación de INNER JOIN

(Cuestiones técnicas, 2019)


Lo que nos permite es cruzar tablas por campos que tengan en común entre ambas
tablas.

Ilustración 135 Ejemplo de la cláusula INNER JOIN

II. Cláusula LEFT JOIN

Ilustración 136 Representación de LEFT JOIN

(Ánonimo, n.d.)
Lo que muestra los registros son los registros de la tabla de la izquierda, en este
caso sería la primera que aparece después del SELECT

Ilustración 137 Ejemplo de LEFT JOIN

Lo que sucede es que si no hubiese datos correspondientes aparecerían como


NULL.

III. Cláusula RIGHT JOIN


Ilustración 138 Representación de RIGHT JOIN

(Ánonimo, n.d.)
Lo que nos permite el RIGHT JOIN es todo lo contrario al LEFT JOIN.

Ilustración 139 Ejemplo de RIGHT JOIN

IV. Consideraciones a tener en cuenta con el uso de INNER

Hay que tener en cuenta varias cosas cunado se trabaja con JOINS ENTRE
TABLAS, cuando uno hace una conexión SIEMPRE con la PRIMARY KEY.

Siempre hacer la búsqueda en ORDEN a la hora del ON que sea por la tabla
inmediate y luego de la conexión.

La tercera es tener ALIAS para ahorrar tiempo y siempre especificar para que no
salga errores.
V. La cláusula UNION y UNION ALL.

La diferencia entre las clausulas UNION y la INNER, UNION nos permite unir dos
distintas CONSULTAS para la misma tabla.

Ilustración 140 Ejemplo de UNION

La diferencia entre UNION y UNION ALL es que UNION ALL devuelve toda la
información a comparación de UNION que eliminar las repeticiones.

Ilustración 141 Ejemplo de UNION ALL


17. FUNCIONES DEFINIDAS POR EL USUARIO

I. Funciones de tipo Escalares

Las funciones escalares son funciones que nos permite recibir uno o mas valores
y devolver un valor, realizar un cálculo con ese parámetro y retornar ese valor.

Ilustración 142 Crear una función tipo escalar

Para probar la función es a continuación

Ilustración 143 Probar Función


II. Funciones de tipo tabla.
Esta función nos permite recibir uno o más parámetros, nos retorna una tabla, un
conjunto de registros.

Ilustración 144 Ejemplo de creación de función tipo tabla

Ilustración 145 Ejemplo de llamado de función tipo tabla


18. TABLAS TEMPORALES

I. Definición y uso de las Tablas Temporal en Memoria

Una tabla temporal en memoria solo existe mientras el SCRIPT este


funcionando, cuando termine se destruirá.

Ilustración 146 Crear una tabla temporal en memoria

Ilustración 147 Ingresando datos y creando tabla temporal en memoria

II. Definición y uso de Tabla Temporal Física

La diferencia con la tabla temporal en memoria es que la tabla temporal física


va a existir hasta cuando reiniciemos el motor de base de datos.
Ilustración 148 Crear tabla temporal física

Siempre se recomienda tener un DROP TABLE al final para liberar parte de la


memoria.

Ilustración 149 Ejemplo de TABLA TEMPORAL FÍSICA


19. VISTAS
I. ¿Qué es una Vista? Uso e implementación

Una vista es una tabla virtual cuyo contenido está definido por una consulta.

Ilustración 150 Crear vista

Y para consultar la vista.

Ilustración 151 Seleccionar visual de la vista


II. Creando una Vista desde el entorno gráfico.

Y para crear nuestra VISTA de manera grafica se muestra a continuación.

Ilustración 152 Crear VISTA

Agregamos las tablas que deseamos hacer la consulta.

Ilustración 153 Agregar tablas


Seleccionamos los campos con las tablas, también con los filtros que se desea.

Ilustración 154 Seleccionar campos

Ilustración 155 Selección de filtro

Ya por último es guardar y así ejecutar la vista.


20. TRIGGERS
I. ¿Qué es un Trigger? Tipos posibles.

Un TRIGGER es un desencadenador o disparador de un evento, dependiendo de


los 3 tipos de eventos, cuales son: INSERT, UPDATE,DELETE a partir de una tabla,
cual puede ser para guardar en un LOG, mandar la información que se modifico en
cierta tabla.

II. Creación de Trigger tipo DELETE

Ilustración 156 Ejemplo TRIGGER


21. BACKUP Y RESTORE DATABASE
I. Como realizar un Backup desde Managment Studio

Lo primero es escoger el espacio para guardar el Backup de la base de datos,


como puede ser en documentos o cualquier otro lugar. Se recomienda que un
Backup este guardado en 3 lugares como mínimo, los cuales son: En el lugar del
trabajo, fuera del lugar del trabajo como puede ser un banco o lugar de fácil
de acceso y un servidor fuera del país.

En este caso será en mis documentos (una práctica nada recomendada)

Para ello vamos al Object Explorer, seleccionamos la base de datos, tareas y


escogemos la opción de Backup.

Ilustración 157 Escoger Back Up

Para continuar es el tipo de Backup, cuales son: Completo es aquel que hace de
todos los objetos que están dentro de la base de datos y el diferencial cual hace
con los nuevos objetos y registros comparándolo con un backup anterior. También
escogemos la ubicación.
Ilustración 158 Escoger el tipo de Backup

Otras recomendaciones es que los backup por nombres se pongan la fecha del
día y hora para así no confundirse.

II. Como restaurar un Backup

Para restaurar una base de datos, vamos al Object Explorer seleccionamos


Databases y escogemos la opción Restore.

Ilustración 159 Restaurar una base de datos


Ahora seleccionamos la Base de datos y el archivo para restaurar.

Ilustración 160 Restaurar base de datos


III. Como crear un Backup desde Script

La primera manera de generar el Backup es por medio del siguiente Script.

Ilustración 161 Backup Script

Ilustración 162 Script de Backup

Se puede usar este Script para un Procedimiento almacenado para así sea
programado para la hora correspondiente.
22. Shedule JOBS
I. ¿Qué es un SQL JOB? Opciones disponibles

O también llamado como tarea programada, es administrado por el SQL Server


Agent cual administra las tareas programadas. Es usado para procesar datos de
tablas y procesarlo mas adelante.

Ilustración 163 Opciones del JOB

Donde se puede administrar que a partir de que usuario, horarios y tareas para
realizar el proceso automatizado.
II. Preparando un JOB para realizar una tarea

Ilustración 164 Administrador general

Ahora escogemos el nuevo paso en Steps y así creamos un nuevo paso

Ilustración 165 Step 1


Le asignamos un horario

Ilustración 166 Shedule JOB

También agregamos notificaciones para el momento que se cumpla o no cumpla el


JOB.
Ilustración 167 Agregar notificaciones
23. ADMINISTRACIÓN DE USUAIROS, ROLES,
SHCEMAS Y PERMISOS.
I. Usuarios y Logins

Para ingresar en SQL se tiene dos métodos se tiene el LOGIN y los USUARIOS
cuales los últimos se le puede ingresar los permisos. Cual todo USUARIO esta
relacionado con un LOGIN.

Para crear un LOGIN se debe ingresar por medio del OBJECT EXPLORER.

Ilustración 168 New Login

Y el cual se le crea el LOGIN.


Ilustración 169 Nuevo Login

Al tener el LOGIN creado nos vamos para DATABASES- SECURITY y creamos el


USUARIO.
Ilustración 170 Nuevo Usuario

Se ingresa los datos necesarios.

Ilustración 171 Crear Usuario


Y se le asigna los posibles permisos, en el cual se puede ingresar.

II. Roles de Base de Datos: tipos posibles.

Los ROLES es un grupo especifico de USUARIOS, cual tienen un agrupado


especifico de permisos, así facilitando el trabajo al momento de crear los distintos
de usuarios.

Cuales hay unos predefinidos por el SERVIDOR, los de la BASE DE DATOS y los
que creamos nosotros mismos que son los de USUARIOS.

III. Crear y asignar un ROL a un Usuario desde T-SQL

Para crear y asignar recordemos que debemos tener el LOGIN creado.

Ilustración 172 Ejemplo de Asignar ROL

IV. ¿Qué es un Schema?


Un SCHEMA es un ESPACIO DE NOMBRES que adjunta OBJETOS,
como lo son tablas, stored procedures, etc… El ESQUEMA POR
DEFECTO ES DBO.
V. Descripciones de Roles de Servidor y roles predefinido
ROLES PREDEFINIDOS DE BASE DE DATOS

• db_owner: Miembros tienen permisos totales.


• db_accessadmin: Miembros pueden administrar grupos de Windows y
Logins de SQL Server.
• db_datareader: Miembros tienen permiso de lectura.
• db_datawriter: Miembros pueden agregar, eliminar, o modificar datos en las
tablas.
• db_ddladmin: Miembros pueden ejecutar librerías DLL.
• db_securityadmin: Miembros pueden modificar la membresía de Roles y
administrar permisos.
• db_backupoperator: Miembros pueden realizar un backup de la BD.
• db_denydatareader: Miembros no pueden visualizar datos dentro de la BD.
• db_denydatawriter: Miembros no pueden modificar o eliminar datos de
tablas o vistas.

ROLES DE SERVIDOR

• SysAdmin: Cualquier miembro puede realizar cualquier acción en el servidor


SQL.
• ServerAdmin: Cualquier miembro puede establecer opciones de
configuración en el servidor SQL.
• SetupAdmin: Cualquier miembro puede administrar servidores remotos y
opciones de inicio de SQL Server.
• Security Admin: Cualquier miembro puede administrar la seguridad del
servidor SQL.
• ProcessAdmin: Cualquier miembro puede finalizar un proceso en ejecución
en el servidor SQL.
• DbCreator: Cualquier miembro puede crear, modificar, eliminar y restaurar
Bases de Datos.
• DiskAdmin: Cualquier miembro puede administrar archivos de datos del
servidor SQL.
• BulkAdmin: Cualquier miembro puede ejecutar el comando BULK INSERT.

24. SQL Server Profile

Esta herramienta sirve para rastrear los procesos dentro de la base de datos.

I. Conocimiento de la herramienta.

Se accede a través del menú tolos.

Ilustración 173 Ingreso de la herramienta Tools

Ilustración 174 Vista de la herramienta SQLProfile


Ilustración 175 Trazas de ejecución

La tabla anterior se ira actualizando cada vez que uno mande cualquier ejecución
en el SQL Server Managment.

Ilustración 176 Columna de duración

Esta columna nos dice el tiempo de duración del proceso en milisegundos.


II. Como monitorear procesos por tiempo de ejecución

Para ver una traza personalizada es por medio de Trace Propieties. Cual uno
escoge que procesos y que hacerle seguimiento.

Ilustración 177 Trace Propieties

25. 10 BUENAS PRÁCTICAS SOBRE DISEÑO,


PROGRAMACIÓN Y SEGURIDAD

1. Definan nombres de campos cortos y que representen lo mejor posible el


valor que almacena. Para nombrarlos usen el idioma que más prefieran,
inglés, español… Pero respeten ese idioma durante todo el proyectos.
2. Cuando definan el nombre de un campo, por ejemplo OrderID, asegúrense
que el campo se llama igual si deben definirlo en otra tabla, eso les ahorrará
muchos dolores de cabeza cuando tengan que realizan JOINS.
3. Al momentode elegir un tipo de dato para un campo, evalúen los valores que
almacenará y elijan el tipo de dato adecuado. Por ejemplo, si el campo
almacenará edades, no es necesario definirlo como INT, un tipo TINYINT es
más que suficiente. Ahorrar en bytes mejorará la perfomance de la base de
datos a largo plazo.
4. Para definir el nombre de un Stored Procedure es recomendable usar una
nomenclatura que defina rápidamente qué tarea realizar ese proceso, por
ejemplo:

SEL_OrdenesPedido (SEL nos indica que un proceso que devuelve datos)

INS_Pagos (INS no indica que es un proceso de grabación)

5. Normalicen las tablas; deben crear tantas tablas como requiera el modelo de
base de datos. Normalizar en 3ra FN es suficiente. Si considera que hayt
campos que deben colocarse en otra tabla, hágalo.
6. Aseguresn su base de datos. Si tienen la posibilidad de administrar los
accesos, creen usuarios, roles y permisos que garanticen la seguridad.

No permitan que cualquier usuario pueda acceder y realizar modificaciones.


Asignen los permisos adecuados a usuarios responsables o dedicados a
desarrollo.

Puede utilizar Schemas si lo considera necesario.

7. Realizar las consultas filtradas siempre en lo posible por los campos Primary
Key. Si usas JOINS, siempre coloca la cláusula ON los campos PK. Esto hará
que la consulta sea óptima.
8. Si has implementado Schedule Jobs, asegúrate que estén ejecutando en
horarios nocturnos o cuando la base de datos esté con poca actividad, a fin
de no afectar la perfomance al usuario.
9. Eviten el uso excesivo de Triggers. Cuando estos desencadenadores están
vinculados a inserts, updates o deletes muy concurrentes, puede afectar la
perfomance.
10. Realiza un Backup periódicamente y almacena los archivos preferente en un
disco o dispositivo externo.

26. REFERENCIAS

Ánonimo. (n.d.). ¿Cómo funciona INNER JOIN, LEFT JOIN, RIGHT JOIN Y FULL
JOIN? Retrieved January 24, 2023, from
https://programacionymas.com/blog/como-funciona-inner-left-right-full-join

Cuestiones técnicas. (2019, July 19). INNER JOIN: definición y aplicación.


https://www.ionos.es/digitalguide/hosting/cuestiones-tecnicas/inner-join/

También podría gustarte