Sie sind auf Seite 1von 41

Creación de Base de

Datos - Unidad 1
Universidad Cooperativa de Colombia
Gustavo Adolfo Gómez Gómez
MSc. Gestión, Aplicación y Desarrollo
de Software
2019
SQL para la gestión de
datos - 2
Colación

● Colación: Provee reglas y propiedades del lenguaje utilizado en los datos


○ Instancia
○ Base de datos
○ Tabla
○ Columna

● Soporte Unicode: Todos los caracteres de todos


los lenguajes
Colación

Colación y el Soporte Unicode afecta

● Ordenamiento de consultas ( ORDER BY)


● Reglas de comparación ( = , JOIN )
● Datos almacenados en columnas (atributos)
● Nombre de las variables
Bases de datos

Cambiar la Colación

Al crear:

CREATE DATABASE TestDB COLLATE Latin1_General_CS_AI;

Al Modificar

ALTER DATABASE MyOptionsTest


COLLATE Latin1_General_CS_AI;

SELECT name, collation_name FROM sys.databases;


Tabla

Cambiar la Colación

Al crear:

CREATE TABLE TestTempTab


(llave int PRIMARY KEY,
Columna1 nchar COLLATE Latin1_General_CS_AI
);

SELECT name, collation_name FROM sys.columns WHERE name = ‘columna’


Base de datos

● Bases de datos del sistema


○ Master: información del sistema
○ Msdb: Alertas y trabajos
○ Model: Plantilla para todas las bases de datos
○ Resource: recursos del sistema
○ Tempdb: temporales o intermediarios
● Bases de datos Contenidas
○ Aisladas en la instancia del SGBD
Base de datos

Archivos de base de datos

● Primario
○ .mdf
● Secundario
○ Escalamiento adicional
○ .ndf
● Registro de transacciones
○ .ldf
Base de datos

Copia Bases de Datos

● Backup

BACKUP DATABASE bd
TO DISK = 'Z:\SQLServerBackups\bd.Bak'
WITH FORMAT,
MEDIANAME = bd,
NAME = 'Full Backup of db;

GO
Base de datos

Copia Bases de Datos

● Restaurar

RESTORE DATABASE bd

FROM DISK = 'Z:\SQLServerBackups\bd.bak' ;


Base de datos

Copia Bases de Datos

● Vincular y Desvincular

Cambiar de instancia en el mismo servidor o mover la base de datos


Base de datos

Copia Bases de Datos

● Desvincular: remover de la instancia

USE db;

EXEC sp_detach_db @dbname = ‘db’;

GO
Base de datos

Copia Bases de Datos

● Copiar archivos de la base de datos (trasladar)

.mdf y .ldf
Base de datos

Copia Bases de Datos

● Vincular a la nueva instancia

USE db;

CREATE DATABASE nueva_bd


ON (FILENAME = 'C:\MySQLServer\bd.mdf'),
(FILENAME = 'C:\MySQLServer\bd.ldf')
FOR ATTACH;

GO
Base de datos

Eliminar archivos de base de datos

● Eliminar

ALTER DATABASE db

REMOVE FILE datos;

GO
Base de datos

Ampliar capacidad de la base de datos

● Añadir espacio

ALTER DATABASE bd

MODIFY FILE

(NAME = datos,

SIZE = 20MB);

GO
Base de datos

Cambiar nombre de base de datos

● Alterar base de datos

ALTER DATABASE db MODIFY NAME = db1;

No es posible si otros usuarios la usan.

ALTER DATABASE db SET SINGLE_USER WITH ROLLBACK IMMEDIATE


Tablas

Contienen todos los datos

● Límite de tablas en la base de datos (2. 147.483.647)


● Hasta 1024 columnas
● Filas dependen de la capacidad del servidor
Tablas

Tipos

● Particionadas
● Temporales
● De sistema
Tablas

Crear

CREATE TABLE PurchaseOrderDetail (


PurchaseOrderID int NOT NULL,
LineNumber smallint NOT NULL,
ProductID int NULL,
UnitPrice money NULL
);
Tablas

Borrar

DROP TABLE dbo.PurchaseOrderDetail;

Renombrar

EXEC sp_rename 'Sales.SalesTerritory', 'SalesTerr';


Tablas

Consultar propiedades

SELECT * FROM sys.tables


WHERE name = ‘tabla’;
Tablas

Añadir columnas

ALTER TABLE dbo.prueba ADD column_b VARCHAR(20) NULL, column_c


INTEGER NULL ;

Eliminar columnas

ALTER TABLE dbo.prueba DROP COLUMN column_b ;


Tablas

Renombrar columnas

EXEC sp_rename 'Sales.SalesTerritory.TerritoryID', 'TerrID', 'COLUMN';

Renombra la columna “TerritoryID” de la tabla SalesTerritory en la base de datos


Sales al nombre “TerrID”
Tablas

Copiar datos de una columna a otra tabla

CREATE TABLE dbo.EmployeeSales


( BusinessEntityID varchar(11) NOT NULL,
SalesYTD money NOT NULL
);

INSERT INTO dbo.EmployeeSales


SELECT BusinessEntityID, SalesYTD
FROM Sales.SalesPerson;

GO
Tablas

Modificar columna: Atributo

CREATE TABLE dbo.doc_exy (column_a INT ) ;

GO

INSERT INTO dbo.doc_exy (column_a) VALUES (10) ;

GO

ALTER TABLE dbo.doc_exy ALTER COLUMN column_a DECIMAL (5, 2) ;

GO
Tablas

Modificar columna: Atributo Derivado

Crear el campo en la tabla

CREATE TABLE dbo.Products (


ProductID int IDENTITY (1,1) NOT NULL,
QtyAvailable smallint,
UnitPrice money,
InventoryValue AS QtyAvailable * UnitPrice
);
Tablas

Modificar columna: Atributo Derivado

Verificar la información

INSERT INTO dbo.Products (QtyAvailable, UnitPrice) VALUES (25, 2.00), (10,


1.5);

SELECT ProductID, QtyAvailable, UnitPrice, InventoryValue FROM dbo.Products;


Tablas

Modificar columna: Atributo Derivado

Agregar el campo en la tabla ya creada

ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice *


1.35);
Tablas

Modificar columna: Atributo Derivado

Modificar el campo ya creado en la tabla

ALTER TABLE dbo.Products DROP COLUMN RetailValue;

GO

ALTER TABLE dbo.Products ADD RetailValue AS (QtyAvailable * UnitPrice * 1.5);


Tablas

Crear Llaves primarias

Crear con la tabla

CREATE TABLE Production.tabla (


CustomerID uniqueidentifier DEFAULT NEWSEQUENTIALID(),
TransactionID int IDENTITY (1,1) NOT NULL,
CONSTRAINT PK_nombre_llave PRIMARY KEY (uniqueidentifier)
);

Modificando tabla
ALTER TABLE Production.tabla
ADD CONSTRAINT PK_nombre_llave PRIMARY KEY (TransactionID);
Tablas

Borrar Llaves primarias

ALTER TABLE Production.tabla

DROP CONSTRAINT PK_nombre llave;

GO
Tablas

Llaves Foráneas

Al crear tabla

CREATE TABLE Sales.TempSalesReason (TempID int NOT NULL, Name nvarchar(50),


CONSTRAINT PK_TempSales PRIMARY KEY NONCLUSTERED (TempID),
CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID)
REFERENCES Sales.SalesReason (SalesReasonID)
ON DELETE CASCADE
ON UPDATE CASCADE
);

GO
Tablas

Llaves Foráneas

Al modificar tabla

ALTER TABLE Sales.TempSalesReason


ADD CONSTRAINT FK_TempSales_SalesReason FOREIGN KEY (TempID)
REFERENCES Sales.SalesReason (SalesReasonID)
ON DELETE CASCADE
ON UPDATE CASCADE;

GO
Tablas

Borrar Llaves Foráneas

ALTER TABLE dbo.DocExe

DROP CONSTRAINT FK_Column_B;


Tablas

Deshabilitar Llaves Foráneas

Para replicación de la base de datos sin restricciones de referencia

Eliminar restricción y crear nuevamente con:

NOT FOR REPLICATION


Tablas

Llaves únicas

Al crear

CREATE TABLE Production.tabla(


TransactionID int NOT NULL,
CONSTRAINT AK_nombre_llave UNIQUE(TransactionID)
);
Tablas

Llaves únicas

Al modificar

ALTER TABLE Person.Password

ADD CONSTRAINT AK_Password UNIQUE (PasswordHash, PasswordSalt);


Tablas

Llaves únicas

Borrar

ALTER TABLE dbo.tabla


DROP CONSTRAINT UNQ_nombre;

Si no se sabe el nombre

SELECT name FROM sys.objects


WHERE type = 'UQ' AND OBJECT_NAME(parent_object_id) = 'tabla;
Tablas

Valores CHECK

ALTER TABLE dbo.tabla


ADD ColumnD int NULL
CONSTRAINT CHK_nombre_check
CHECK (ColumnD > 10 AND ColumnD < 50);

INSERT INTO dbo.tabla (ColumnD) VALUES (49);

INSERT INTO dbo.tabla (ColumnD) VALUES (55);

GO
Tablas

Valores CHECK BORRAR

ALTER TABLE dbo.tabla


DROP CONSTRAINT CHK_nombre_check;

GO

Das könnte Ihnen auch gefallen