# Introducción

## 1. **Creación de Base de Datos y Uso Básico**

#### Crear una base de datos

```sql
CREATE DATABASE acme;
USE acme;
```

**Concepto:** Se crea una base de datos llamada `acme` y luego se selecciona para su uso.

#### Ver información de la base de datos

```sql
sp_helpdb acme;
```

**Concepto:** `sp_helpdb` es un procedimiento almacenado que proporciona información sobre la base de datos especificada.

***

## 2. **Creación de Bases de Datos Personalizadas**

#### Crear una base de datos con configuración personalizada

```sql
create database ejemplo3
on
(name='nombreLogicoejemplo3_MDF',
filename='C:\BD_BIG\nombreFisicoEjemplo3DATA.mdf',
size=10MB, maxsize=unlimited)
log on
(name='nombreLogicoejemplo3_LDF',
filename='C:\BD_BIG\nombreFisicoEjemplo3LOG.ldf',
size=5MB, maxsize=10MB)
```

**Concepto:** Crea una base de datos llamada `ejemplo3` con un archivo de datos (MDF) y un archivo de log (LDF), especificando su tamaño inicial y máximo.

#### Ver propiedades de la base de datos

```sql
sp_helpdb ejemplo3;
```

**Concepto:** Proporciona detalles sobre la base de datos `ejemplo3`.

***

## 3. **Backup y Restauración de Bases de Datos**

#### Generar backup

```sql
backup database ejemplo2 to disk='D:\DATABD\mibackup.bak'
```

**Concepto:** Realiza una copia de seguridad (backup) de la base de datos `ejemplo2` y la almacena en el disco especificado.

#### Restaurar una base de datos

```sql
restore database CENCOSUD from disk='D:\DATABD\MICOPIA.bak'
```

**Concepto:** Restaura la base de datos `CENCOSUD` desde un archivo de backup.

***

## 4. **Adjuntar y Desadjuntar Archivos de Bases de Datos**

#### Desadjuntar base de datos

```sql
exec sp_detach_db @dbname='metro'
```

**Concepto:** Desadjunta la base de datos `metro` de SQL Server.

#### Crear base de datos y adjuntar archivos

```sql
CREATE DATABASE CENCOSUD ON
(FILENAME='C:\Program Files (x86)\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\metro.mdf'),
(FILENAME='C:\Program Files (x86)\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\metro_log.LDF') 
FOR ATTACH
```

**Concepto:** Crea una nueva base de datos llamada `CENCOSUD` y adjunta los archivos de la base de datos `metro`.

***

## 5. **Filegroups y Archivos Secundarios**

<figure><img src="https://2388471899-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FT7EGcEJYcU0fHj1mL1yx%2Fuploads%2FXPwtpip5hTlOIoSlO1Yg%2Fimage.png?alt=media&#x26;token=d17dd14a-eb49-4412-8d2c-6299010cb7bb" alt=""><figcaption></figcaption></figure>

#### Crear un archivo secundario (NDF)

```sql
alter database ejemplo3 add file
(name='nomlogEjemplo3_ArchivoSecundario',
filename='C:\BD_BIG\ArchivoSecundarioEjemplo2.ndf')
```

**Concepto:** Añade un archivo secundario (NDF) a la base de datos `ejemplo3`.

#### Crear y asociar un Filegroup

```sql
ALTER DATABASE EJEMPLO3 ADD FILEGROUP MiGrupoFG
```

**Concepto:** Crea un nuevo Filegroup (`MiGrupoFG`) para almacenar datos adicionales.

#### Asociar un archivo al Filegroup

```sql
alter database ejemplo3 add file
(name='miparticion',
filename='C:\Nuevo_Servidor\miparticion.ndf')
to filegroup MiGrupoFG
```

**Concepto:** Asocia el archivo `miparticion.ndf` al Filegroup `MiGrupoFG`.

***

## 6. **Operaciones con Tablas y Foreign Keys**

#### Crear una tabla relacionada

```sql
create table mitabla2(cod2 int primary key,
nom varchar(50),cod1 int foreign key 
references mitabla1) on MiGrupoFG
```

**Concepto:** Crea una tabla `mitabla2` que tiene una relación de clave foránea con la tabla `mitabla1`, y almacena los datos en el Filegroup `MiGrupoFG`.

***

## 7. **Variables Globales y Locales**

#### Variables globales

```sql
SELECT 'El nombre del servidor: '+@@SERVERNAME;
SELECT @@MAX_CONNECTIONS;
SELECT @@ERROR;
SELECT @@LANGUAGE;
SELECT @@VERSION;
SELECT @@IDENTITY;
SET LANGUAGE JAPANESE;
SET LANGUAGE GERMAN;
SET LANGUAGE SPANISH;
```

**Concepto:** Muestra el nombre del servidor utilizando una variable global de SQL Server.

#### Variables locales

```sql
DECLARE @PAIS VARCHAR(4)
SET @PAIS='PERÚ'
PRINT 'EL PAIS ES: '+ @PAIS;

DECLARE @NUMERO INT = 32
PRINT @NUMERO

DECLARE @EDAD INT=47
PRINT 'MI EDAD ES: '+LTRIM(STR(@EDAD)) -- CONVERTIMOS A CADENA -- LTRIM RTRIM PARA BORRAR LOS ESPACIOS 

-- DECLARE @SUELDO DECIMAL(6,2);   -- 6 NUMEROS CON 2 DECIMALES -> 1234,12
DECLARE @SUELDO1 MONEY = 1500.25;
-- PRINT 'MI SUELDO ES: '+ LTRIM(STR(@SUELDO));
-- PRINT 'MI SUELDO ES: '+CONVERT(VARCHAR,@SUELDO);
-- PRINT 'MI SUELDO ES: '+CAST(@SUELDO1 AS VARCHAR);
```

**Concepto:** Declara e inicializa una variable local `@PAIS` y la imprime en pantalla.

***

## 8. **Control de Flujos con Condiciones**

#### Estructura de control `IF`

```sql
DECLARE @NOTA INT = 13
IF @NOTA > 12
BEGIN -- COMO UNA LLAVA
 PRINT 'APROBADO'
 PRINT 'QUE SIGAN LOS EXITOS'
END -- COMO UNA LLAVE
ELSE 
 PRINT 'DESAPROBADO'
GO
```

**Concepto:** Usa una estructura condicional `IF` para verificar si una condición se cumple y ejecutar instrucciones en consecuencia.

***
