Practica 8 de BD
Practica 8 de BD
Practica 8 de BD
CONSTRAINT fk_Cliente FOREIGN KEY (Llave foránea) REFERENCES mombre_tabla (llave foránea),
Por lo tanto se tienen que indicar que campo será la llave foránea y a qué tabla se referencia mencionando
también el campo, que en la tabla referenciada es llave primaria.
En la columna NombreCliente tiene como varchar max. que tendrá un limite de caracteres segun indica SQL de
2GB.
Forma básica
INSERT INTO 'tablatura' ('columnaA',['columnaB,... '])
VALUES ('valor1', ['valor2,...'])
Las cantidades de columnas y valores deben ser iguales. Si una columna no se especifica, le será asignado el
valor por omisión. Los valores especificados (o implícitos) por la sentencia INSERT deberán satisfacer todas las
restricciones aplicables. Si ocurre un error de sintaxis o si alguna de las restricciones es violada, no se agrega la
fila y se devuelve un error.
Ejemplo BASE
INSERT INTO agenda_telefonica (nombre, numero)
VALUES ('Roberto Jeldrez', 4886850);
Cuando se especifican todos los valores de una tabla, se puede utilizar la sentencia acortada:
Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas de la tabla 'agenda_telefonica'):
Formas avanzadas
Una característica de SQL (desde SQL-92) es el uso de constructores de filas para insertar múltiples filas a la
vez, con una sola sentencia SQL:
Esta característica es soportada por DB2, PostgreSQL (desde la versión 8.2), MySQL, y H2.
Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas en la tabla 'agenda_telefonica'):
INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850'), ('Alejandro Sosa', '4556550');
Notar que las sentencias separadas pueden tener semántica diferente (especialmente con respecto a los triggers),
y puede tener diferente rendimiento que la sentencia de inserción múltiple.
Para insertar varias filas en MS SQL puede utilizar esa construcción:
Tenga en cuenta que no se trata de una sentencia SQL válida de acuerdo con el estándar SQL (SQL: 2003),
debido a la cláusula subselect incompleta.
Para hacer lo mismo en Oracle se usa la Tabla DUAL, siempre que se trate de solo una simple fila:
Una implementación conforme al estándar de esta lógica se muestra el siguiente ejemplo, o como se muestra
arriba (no aplica en Oracle):
SELECT *
FROM phone_book
WHERE name IN ('John Doe', 'Peter Doe')
Una variación es necesaria cuando algunos de los datos de la tabla fuente se está insertando en la nueva tabla,
pero no todo el registro. (O cuando los esquemas de las tablas no son iguales.)
El SELECT produce una tabla (temporal), y el esquema de la tabla temporal debe coincidir con el esquema de la
tabla donde los datos son insertados.
EJEMPLO COMPLETO, utilizando el ejemplo completo de la practica 21, tablas dbo.Personas. Con los
siguientes campos. (P_id, Nombre, Apellido, Direccion, Ciudad)
Ejemplo
UPDATE Nombre_tabla SET Campo = 'valor a actualizar' WHERE campo = 'valor del registro de la tabla';
EJEMPLO COMPLETO
En este ejemplo se cambiara el nombre de Marcel Abisag que se encuentra en la base de datos por el de Marcel
Perez.
Aquí también hay que ser cuidadoso de no olvidarse de usar Where, de lo contrario, modificaríamos todos
los registros de nuestra tabla.
Esa sentencia modificaría el campo precio y el campo descuento en todos los productos de la tabla producto. Si
tenemos una tabla con miles de productos con esa sentencia se actualizarían todos, de modo que la totalidad de
los registros tendrían el mismo precio y el mismo descuento. Os aseguro que este problema de olvidarse el where
no es algo extraño que ocurra, incluso para programadores experimentados y puede acarrear problemas serios.
EJEMPLO COMPLETO
DELETE
Una sentencia DELETE de SQL borra uno o más registros existentes en una tabla.
Forma básica
DELETE FROM tabla WHERE columna1 = 'valor1';
Ejemplo
DELETE FROM Producto WHERE descuento =30;
PRACTICAS 8. PRIMERA PARTE
RECORDAR: INSERTAR LOS REGISTROS CON TABLAS SIN LLAVES SECUNDARIAS PRIMERO,
Y LUEGO INSERTAN LOS REGISTROS A LAS TABLAS CON LLAVES SECUNDARIAS.
OJO: LES RECOMIENDO, INSERTAR UN SOLO REGISTRO PRIMERO, Y VERIFICAR SUS LINEAS DE
COMANDO, SUS COMAS, COMILLAS, ETC. ES MEJOR CORREGIR UNA O DOS LINEAS DE
ERRORES QUE 40 O MAS LINEAS DE ERRORES.
SEGUNDA PARTE.