Ejemploddl dml-ok

6

Click here to load reader

description

Documento con Ejemplos Comandos SQL

Transcript of Ejemploddl dml-ok

Page 1: Ejemploddl dml-ok

Aquí incluyo algunos comandos DDL y cláusulas DML, que tal vez olvide mencionar en los cuestionarios, intento explicar detenidamente los posibles pasos para usar los comandos^^

I. DDL, LENGUAJE DE DEFINICIÓN DE DATOS, OPERACIONES B ÁSICAS. A. CREAR TABLA Create Table: Crea una tabla Definición de Columnas Una lista separada por comas que consiste en cualquiera de los siguientes incisos: Definición de Llave Primaria La cláusula CONSTRAINT Se utiliza la cláusula CONSTRAINT en las instrucciones ALTER TABLE y CREATE TABLE para crear o eliminar índices. Existen dos sintaxis para esta cláusula dependiendo si se desea Crear ó Eliminar un índice de un único campo o si se trata de un campo multiíndice. Estructura General1

1 Me recuerda al archivos crebas.dat que crea PowerDesigner al generar la base de datos =)

CREATE TABLE [nombre tabla] ( [definición de columnas]

) [parámetros de la tabla].

[nombre columna] [tipo de dato] {NULL | NOT NULL} {opciones de columna}

PRIMARY KEY ( [lista de columnas separadas por coma] )

{CONSTRAINT} [definición del constraint]

CREATE TABLE tabla ( campo1 tipo (tamaño) índice1, campo2 tipo (tamaño) índice2,..., índice multicampo,...

); CONSTRAINT nombre {

PRIMARY KEY (primario1 [, primario2 [,...]]) | UNIQUE (único1 [, único2 [,...]]) | FOREIGN KEY (ref1 [, ref2 [,...]]) REFERENCES tabla externa [(campo externo1 [, campo externo2 [,...]])]

}

Page 2: Ejemploddl dml-ok

En donde: Parte Descripción tabla Es el nombre de la tabla que se va a crear. campo1 campo2

Es el nombre del campo o de los campos que se van a crear en la nueva tabla. La nueva tabla debe contener, al menos, un campo.

tipo Es el tipo de datos de campo en la nueva tabla. (Ver Tipos de Datos) tamaño Es el tamaño del campo sólo se aplica para campos de tipo texto. índice1 índice2

Es una cláusula CONSTRAINT que define el tipo de índice a crear. Esta cláusula en opcional.

índice multicampos

Es una cláusula CONSTRAINT que define el tipo de índice multicampos a crear. Un índice multi campo es aquel que está indexado por el contenido de varios campos. Esta cláusula en opcional.

nombre Es el nombre del índice que se va a crear. primarioN Es el nombre del campo o de los campos que forman el índice primario. únicoN Es el nombre del campo o de los campos que forman el índice de clave única. refN Es el nombre del campo o de los campos que forman el índice externo (hacen referencia a

campos de otra tabla). tabla externa Es el nombre de la tabla que contiene el campo o los campos referenciados en refN campos externos Es el nombre del campo o de los campos de la tabla externa especificados por ref1,

ref2, ..., refN UNIQUE Genera un índice de clave única. Lo que implica que los registros de la tabla no pueden contener

el mismo valor en los campos indexados. PRIMARY KEY

Genera un índice primario el campo o los campos especificados. Todos los campos de la clave principal deben ser únicos y no nulos, cada tabla sólo puede contener una única clave principal.

FOREIGN KEY

Genera un índice externo (toma como valor del índice campos contenidos en otras tablas). Si la clave principal de la tabla externa consta de más de un campo, se debe utilizar una definición de índice de múltiples campos, listando todos los campos de referencia, el nombre de la tabla externa, y los nombres de los campos referenciados en la tabla externa en el mismo orden que los campos de referencia listados. Si los campos referenciados son la clave principal de la tabla externa, no tiene que especificar los campos referenciados, predeterminado por valor, el motor Jet se comporta como si la clave principal de la tabla externa fueran los campos referenciados.

Ejemplo: Crear una tabla llama “Empleado” (recordar que el nombre de la tabla debe de ir en la forma singular), con los campos: Código _emp 5 alfanumérico llave principal Nombre 50 alfanumérico Apellido 75 alfanumérico Fecha_nac fecha

CREATE TABLE empleado ( Código_emp INTEGER PRIMARY KEY, Nombre CHAR (50) null, Apellido CHAR (75) not null, Fecha_nac DATE null

);

Page 3: Ejemploddl dml-ok

B. DROP Se utiliza para destruir un objeto existente. Tal es el caso de una base de datos, una tabla, índices o una vista. Este comando se utiliza para eliminar objetos de nuestra base de datos. Se suele utilizar la palabra DROP, a continuación el tipo del objeto que se desea eliminar (por ejemplo, Table) y por último, el nombre de dicho objeto (Empleado). Como ejemplo, el comando para borrar la tabla recien creada^^ llamada Empleado es el siguiente: Si se borra una tabla, se borran, a su vez, los índices a ella asociados, vistas, vistas creadas a partir de dichas vistas, etc. Si se borra una tabla a la que otras hacen referencia en claves externas habrá que incluir la cláusula CASCADE CONSTRAINT Otros Ejemplos: La sentencia DROP es distinta de la sentencia DELETE. Por ejemplo, la sentencia DELETE puede borrar un poco (o toda) de información de una tabla, mientras que la sentencia DROP remueve toda la tabla de la base de datos.

C. ALTER Utilizado para modificar un objeto existente en la base de datos. Modificar el Diseño de una Tabla Modifica el diseño de una tabla ya existente, se puden modificar los campos o los índices existentes. En donde: Parte Descripción tabla Es el nombre de la tabla que se desea modificar. campo Es el nombre del campo que se va a añadir o eliminar. tipo Es el tipo de campo que se va a añadir. tamaño El tamaño del campo que se va a añadir (sólo para campos de texto). índice Es el nombre del índice del campo (cuando se crean campos) o el nombre del

índice de la tabla que se desea eliminar. índice multicampo Es el nombre del índice del campo multicampo (cuando se crean campos) o el

nombre del índice de la tabla que se desea eliminar.

DROP tipo_objeto nombre_objeto;

DROP TABLE Empleado;

DROP VIEW Informe_Clientes_vw; DROP INDEX pk_Codigo_Cliente;

ALTER tipo_objeto nombre_objeto parámetros.

ALTER TABLE tabla { ADD {COLUMN tipo de campo [(tamaño)] [CONSTRAINT índice] CONSTRAINT índice multicampo} | DROP {COLUMN campo I CONSTRAINT nombre del índice}

}

Page 4: Ejemploddl dml-ok

Otros comandos utilizados con la cláusula ALTER: Operación Descripción ADD COLUMN Se utiliza para añadir un nuevo campo a la tabla, indicando el nombre, el tipo de

campo y opcionalmente el tamaño (para campos de tipo texto). ADD Se utiliza para agregar un índice de multicampos o de un único campo. DROP COLUMN Se utiliza para borrar un campo. Se especifica únicamente el nombre del campo. DROP Se utiliza para eliminar un índice. Se especifica únicamente el nombre del índice a

continuación de la palabra reservada CONSTRAINT. Ejemplos: 1. Agrega un campo Salario de tipo Moneda a la tabla Empleado.

2. Elimina el campo Salario de la tabla Empleado.

3. Agrega un índice externo a la tabla Pedido. El índice externo se basa en el campo Código_emp y se refiere al campo Código_emp de la tabla Empleado. En este ejemplo no es necesario indicar el campo junto al nombre de la tabla en la cláusula REFERENCES, pues Código_emp es la clave principal de la tabla Empleado.

4. Elimina el índide de la tabla Pedido.

II. DML, LENGUAJE DE DEFINICIÓN DE DATOS, OPERACIONES B ÁSICAS. A. INSERT INTO Agrega un registro en una tabla. Se la conoce como una consulta de datos añadidos. Esta consulta puede ser de dos tipo: Insertar un único registro ó Insertar en una tabla los registros contenidos en otra tabla. Para insertar un único Registro. Esta consulta graba en el campo1 el valor1, en el campo2 y valor2 y así sucesivamente. Hay que prestar especial atención a acotar entre comillas simples (') los valores literales (cadenas de caracteres) y las fechas indicarlas en formato mm-dd-aa y entre caracteres de almohadillas (#). Para insertar Registros de otra Tabla

ALTER TABLE Empleado ADD COLUMN Salario CURRENCY;

ALTER TABLE Empleado DROP COLUMN Salario;

ALTER TABLE Pedido ADD CONSTRAINT RelacionPedido FOREIGN KEY (Código_emp) REFERENCES Empleados (Código_emp);

ALTER TABLE Pedido DROP CONSTRAINT RelacionPedido;

INSERT INTO Tabla (campo1, campo2,.., campoN) VALUES (valor1, valor2,..., valorN);

INSERT INTO Tabla [IN base_externa] (campo1, campo2,..., campoN) SELECT TablaOrigen.campo1, TablaOrigen.campo2,..., TablaOrigen.campoN FROM TablaOrigen;

Page 5: Ejemploddl dml-ok

En este caso se seleccionarán los campos 1,2, ..., n de la tabla origen y se grabarán en los campos 1,2,.., n de la Tabla. La condición SELECT puede incluir la cláusula WHERE para filtrar los registros a copiar. Si Tabla y TablaOrigen poseen la misma estrucutra podemos simplificar la sintaxis a: De esta forma los campos de TablaOrigen se grabarán en Tabla, para realizar esta operación es necesario que todos los campos de TablaOrigen estén contenidos con igual nombre en Tabla. Ejemplo: A la tabla Empleado, ingresar el siguiente registro: Código _emp f0500 Nombre Juan Apellido Pérez Fecha_nac 1986/05/19

B. SELECT2 El comando SELECT es el más utilizado en los comandos de SQL. Permite a los usuarios de la base de datos retirar información específica que ellos desean de una base de datos operacional. El comando mostrado abajo, retira toda la información contenida en la tabla de "Empleado". Note que el asterisco es utilizado como un comodín en SQL. Esto literalmente significa "Seleccione todo lo que se encuentra en la tabla de Empleado". Como alternativa, los usuarios podrían desear limitar los atributos a ser retirados de la base de datos. Por ejemplo, El departamento de recursos humanos requiere una lista de los apellidos de todos los empleados de la compañí. Finalmente, la clausula WHERE puede ser utilizada para limitar los registros que serán retirados hacia aquellos que cumplen un criterio especifico. Por ejemplo el Gerente General podría estar interesado en revisar los registros de personal de los empleados con paga alta. El siguiente comando retira toda la información contenida en la tabla de "Empleado" para los registros que tienen un salario mayor a $12,000 (suponiendo que exista el campo Slario).

2 Solo muestro lo básico del uso de esta cláusula, ya que hay un sin fin de formas de utilizarla, con la combinación de los demás comandos (operadores lógicos y de comparación, funciones de agregado y consultas con predicado (ALL TOP, DISTINT CT, DISTIN CTROW, etc.), etc.), solo depende de la creatividad de cada quien (>.<)

INSERT INTO Tabla SELECT TablaOrigen.* FROM TablaOrigen;

INSERT INTO Empleado VALUES (‘f0500’, ‘Juan’, ‘Pérez’, ‘1986/05/19’);

SELECT * FROM Empleado

SELECT Apellido FROM Empleado

SELECT * FROM Empleado WHERE Salario > $12000

Page 6: Ejemploddl dml-ok

C. UPDATE Crea una consulta de actualización que cambia los valores de los campos de una tabla especificada basándose en un criterio específico. UPDATE es especialmente útil cuando se desea cambiar un gran número de registros o cuando éstos se encuentran en múltiples tablas. Puede cambiar varios campos a la vez. Ejemplo: Incrementa los valores Cantidad pedidos en un 10 por ciento y los valores Transporte en un 3 por ciento para aquellos que se hayan enviado al Reino Unido. UPDATE no genera ningún resultado. Para saber qué registros se van a cambiar, hay que examinar primero el resultado de una consulta de selección que utilice el mismo criterio y después ejecutar la consulta de actualización. Si en una consulta de actualización suprimimos la cláusula WHERE todos los registros de la tabla señalada serán actualizados.

D. DELETE Utilizado para eliminar datos dentro de una tabla. Desafortunadamente, los últimos ingresos de la corporación reportan disminución en el desempeño, esto ha causado que Juan Perez sea despedido. El comando DELETE con la clausula WHERE puede ser utilizado para eliminar su registro de la tabla de Empleado

UPDATE Tabla SET Campo1=Valor1, Campo2=Valor2,... CampoN=ValorN WHERE Criterio;

UPDATE Pedidos SET Pedido = Pedidos * 1.1, Transporte = Transporte * 1.03 WHERE PaisEnvío = 'ES';

UPDATE Empleados SET Grado = 5 WHERE Grado = 2; UPDATE Productos SET Precio = Precio * 1.1 WHERE Proveedor = 8 AND Familia = 3;

UPDATE Empleados SET Salario = Salario * 1.1

DELETE FROM personal WHERE Código_emp = f5012