SQL SERVER Resumen
SQL SERVER Resumen
3 bytes
01/01/0001 hasta
DATE Formato: YYYY-
31/12/9999
MM-DD
5 bytes 00:00:00.0000000
TIME Formato: hasta Foreign key
hh:mm:ss:nnnnnnn 23:59:59.9999999
8 bytes 01/01/1753 hasta
DATE Formato: 31/12/9999
TIME YYYY-MM-DD 00:00:00 hasta
hh:mm:ss:nnn 23:59:59.997 Cuando se define una columna como clave foránea, las
01/01/1900 hasta filas de la tabla pueden contener en esa columna o bien el
SMALL 4 bytes
06/06/2079 valor nulo (ningún valor), o bien un valor que existe en la
DATE Formato: YYYY-
00:00:00 hasta otra tabla, un error sería asignar a un habitante una
TIME MM-DD hh:mm:ss
23:59:59 población que no está en la tabla de poblaciones. Eso es
lo que se denomina integridad referencial y consiste en
que los datos que referencian otros (claves foráneas)
IV. PRIMARY KEYS Y FOREIGN KEYS deben ser correctos. La integridad referencial hace que el
Primary key: permite identificar unívocamente a un sistema gestor de la base de datos se asegure de que no
registro, es decir que un registro sea único dentro de la hayan en las claves foráneas valores que no estén en la
tabla, que no tenga duplicados. Un campo que es primary tabla principal.
key no puede permitir ser valor nulo. Una primary key V. CAMPOS IDENTITY
puede estar compuesta por uno o más campos.
Identity es una propiedad que permite que un campo en
Tabla pacientes: una tabla incremente su valor de manera automática al
DNI NOMBRE EDAD GENERO insertar los registros en ella. Para el uso de la propiedad
19100012 Juan Medina 22 M Identity el tipo de dato debe ser entero Int. Por defecto el
45788754 Ana Vega 28 F valor inicial es 1 al igual que el incremento, pero esto se
15478854 Diego Losa 19 M puede modificar. Solamente puede existir una columna
21145789 Mauricio Garcia 41 M por tabla con la propiedad Identidad.
En la tabla anterior la primary ley podría ser DNI, ya que
no existirán dos personas que tengan el mismo DNI. VI. NORMALIZACIÓN
Tabla no normalizada
Ejemplo:
Create type TextoObligatorio100
from nvarchar(100) not null
Instrucción Drop Type
Este no debe estar en uso por ninguna tabla, para
poder eliminarlo.
o Tabla Historia
idHistoria → identity
o Tabla HistoriaPaciente
o Tabla Turno
idTurno → identity
o Tabla TurnoPaciente
Creación de tablas
o Tabla Especialidad
idEspecialidad → identity
o Tabla Pais
o Tabla paciente
o Tabla Medico Establecer el tipo de dato dato
o Tabla MedicoEspecialidad
o Tabla Pagos
A través de Query:
A través de Query:
VIII. COMANDOS SQL PARA MANIPULACIÓN expresión lógica y en ella utilizar diversos operadores
DE REGISTROS como:
From: Esta cláusula permite indicar las tablas o vistas Por supuesto es posible combinar varias condiciones
de las cuales vamos a obtener la información. simples de los operadores anteriores utilizando los
operadores lógicos OR, AND y NOT, así como el uso
Where: Especifica la condición de filtro de las filas de paréntesis para controlar la prioridad de los
devueltas. Se utiliza cuando no se desea que se operadores (como en matemáticas). Por ejemplo: …
devuelvan todas las filas de una tabla, sino sólo las que (Cliente = 100 AND Provincia = 30) OR Ventas > 1000
cumplen ciertas condiciones. Lo habitual es utilizar esta … que sería para los clientes de las provincias 100 y 30
cláusula en la mayoría de las consultas. o cualquier cliente cuyas ventas superen 1000.
Condiciones: Son expresiones lógicas a comprobar ORDER BY: Define el orden de las filas del conjunto
para la condición de filtro, que tras su resolución de resultados. Se especifica el campo o campos
devuelven para cada fila TRUE o FALSE, en función (separados por comas) por los cuales queremos ordenar
de que se cumplan o no. Se puede utilizar cualquier los resultados.
ASC / DESC: ASC es el valor predeterminado, gestor de datos, incrementando en 1 su valor cada vez
especifica que la columna indicad en la cláusula que se inserta un nuevo registro en la tabla. Por ello en
ORDER BY se ordenará de forma ascendente, o sea, de estos casos no es necesario especificar este tipo de
menor a mayor. Si por el contrario se especifica DESC campos en las instrucciones INSERT, ahorrándonos
se ordenará de forma descendente (de mayor a menor). tener que indicar el identificador.
Por ejemplo, para ordenar los resultados de forma
ascendente por ciudad, y los que sean de la misma Nota: Aunque las tablas estén relacionadas entre sí de
ciudad de forma descendente por nombre, utilizaríamos manera unívoca (por ejemplo, cada cabecera de factura
esta cláusula de ordenación: con sus líneas de factura), no es posible insertar de un
golpe los registros de varias tablas. Es necesario
… ORDER BY Ciudad, Nombre DESC … siempre introducir los registros uno a uno y tabla a tabla.
Como a la columna Ciudad no le hemos puesto ASC o Inserción masiva de filas partiendo de consultas
DESC se usará para la misma el valor predeterminado
(que es ASC) Una segunda variante genérica de la instrucción
INSERT es la que nos permite insertar de golpe
INSERT múltiples registros en una tabla, bebiendo sus datos
desde otra tabla (o varias tablas) de nuestra base de
datos o, incluso en algunos SGBDR, de otra base de
La instrucción INSERT de SQL permite añadir registros
datos externa. En cualquier caso obteniéndolos a partir
a una tabla. Con ella podemos ir añadiendo registros uno
de una consulta SELECT convencional.
a uno, o añadir de golpe tantos registros como nos
devuelva una instrucción SELECT.
INSERT INTO NombreTabla [(Campo1, …,
INSERT INTO NombreTabla [(Campo1, …, CampoN)]
CampoN)] VALUES (Valor1, …, ValorN)
SELECT ...
Si un campo está definido como NOT NULL (es decir, Esta instrucción nos permite actualizar los valores de los
que no admite nulos o valores vacíos), debemos campos de una tabla, para uno o varios registros, o
especificarlo siempre en la lista de campos a insertar. incluso para todos los registros de una tabla.
De no hacerlo así se producirá un error a la ejecución la
correspondiente instrucción INSERT. UPDATE NombreTabla
SET Campo1 = Valor1, ..., CampoN = ValorN
En la mayor parte de los casos los campos de WHERE Condición
identificación de los registros, también conocidos
como claves primarias, serán campos de tipo numérico NombreTabla: el nombre de la tabla en la que
con auto-incremento. Esto quiere decir que el vamos a actualizar los datos.
identificador único de cada registro (el campo que SET: indica los campos que se van a actualizar
normalmente contiene un ID en su nombre, como y con qué valores lo vamos a hacer.
idPais o idMedico) lo genera de manera automática el
WHERE: Selecciona los registros de la tabla
UPDATE Products
que se van a actualizar.
OFFSET { integer_constant |
ORDER BY offset_row_count_expression } { ROW |
ROWS }: Especifica el número de filas que se
Ordena los datos devueltos por una consulta en SQL deben omitir antes de comenzar a devolver filas
Server. de la expresión de consulta. El valor puede ser
una expresión o constante entera mayor o igual
ORDER BY order_by_expression [ COLLATE que cero.
collation_name ]
[ ASC | DESC ] { FETCH { FIRST | NEXT }
OFFSET { integer_constant |
{ integer_constant | fetch_row_count_expre
offset_row_count_expression } { ROW |
ROWS }
ssion } { ROW | ROWS } ONLY: Especifica
[ FETCH { FIRST | NEXT } el número de filas que se devolverán después de
{integer_constant | procesar la cláusula OFFSET. El valor puede
fetch_row_count_expression } { ROW | ROWS ser una expresión o constante entera mayor o
} ONLY ] igual que uno.
}
order_by_expression: Especifica una columna En una instrucción SELECT TOP (N), use siempre una
o expresión según la que se ordenará el cláusula ORDER BY. Esta es la única manera de indicar
conjunto de resultados de la consulta. Una previsiblemente a qué filas afecta TOP
columna de ordenación se puede especificar
como un nombre o un alias de columna, o un No hay ningún límite en cuanto al número de columnas
entero no negativo que representa la posición de de la cláusula ORDER BY; sin embargo, el tamaño total
la columna en la lista de selección. de las columnas especificadas en una cláusula ORDER
BY no puede superar los 8.060 bytes.
Es posible especificar varias columnas de
ordenación. Los nombres de columna tienen Las columnas de tipo ntext, text, image, geography,
que ser únicos. La secuencia de las columnas de geometry y xml no se pueden usar en una cláusula
ordenación de la cláusula ORDER BY define la ORDER BY.
organización del conjunto de resultados
ordenado. Es decir, el conjunto de resultados se Si los nombres de tabla están asociados a un alias en la
ordena conforme a la primera columna y, a cláusula FROM, solo pueden usarse los nombres de
continuación, esa lista ordenada se ordena alias para calificar sus columnas en la cláusula ORDER
según la segunda columna, y así sucesivamente. BY.
Ejemplos: