Download Base de datos relacional
Document related concepts
Transcript
1 MANUAL BASICO DE SQL SEVER SQL es un lenguaje formal declarativo, estandarizado ISO, para manipular información en una base de datos. SQL NO es un acrónimo (Structured Query Language) ya que la ISO lo define con nombre oficial Database Language SQL. No es un lenguaje estructurado (puede ser usado en bloques o procedimientos), No es solamente para consultas("queries") y desde el punto de vista computacional no es un lenguaje ya que no es Turing completo. (Fuente negación Acrónimo: "Visual Quickstart Guide SQL, 3th edition - Chris Fehily, Peachpit Press") Contenido 1 Orígenes y evolución 2 Características generales o 2.1 Optimización 3 Lenguaje de definición de datos (LDD) o 3.1 CREATE 3.1.1 Ejemplo (crear una tabla) o 3.2 ALTER 3.2.1 Ejemplo (agregar columna a una tabla) o 3.3 DROP 3.3.1 Ejemplo o 3.4 TRUNCATE 3.4.1 Ejemplo 4 Lenguaje de manipulación de datos (LMD) o 4.1 Definición o 4.2 INSERT 4.2.1 Forma básica 4.2.2 Ejemplo 4.2.3 Formas avanzadas 4.2.3.1 Inserciones en múltiples filas 4.2.3.2 Copia de filas de otras tablas o 4.3 UPDATE 4.3.1 Forma básica 4.3.2 Ejemplo o 4.4 DELETE 4.4.1 Forma básica 4.4.2 Ejemplo 5 Recuperación de clave 6 Disparadores (Triggers) 7 Sistemas de gestión de base de datos 8 Véase también Características generales El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales permitiendo gran variedad de operaciones en éstos últimos. Es un lenguaje declarativo de "alto nivel" o "de no procedimiento", que gracias a su fuerte base teórica y su orientación al manejo de conjuntos de registros, y no a registros individuales, permite una alta productividad en codificación y la orientación a objetos. De esta forma una sola sentencia puede equivaler a uno o más programas que se utilizarían en un lenguaje de bajo nivel orientado a registros. Optimización Como ya se dijo arriba, y suele ser común en los lenguajes de acceso a bases de datos de alto nivel, el SQL es un lenguaje declarativo. O sea, que especifica qué es lo que se quiere y no cómo conseguirlo, por lo que una sentencia no establece explícitamente un orden de ejecución. 2 El orden de ejecución interno de una sentencia puede afectar gravemente a la eficiencia del SGBD, por lo que se hace necesario que éste lleve a cabo una optimización antes de su ejecución. Muchas veces, el uso de índices acelera una instrucción de consulta, pero ralentiza la actualización de los datos. Dependiendo del uso de la aplicación, se priorizará el acceso indexado o una rápida actualización de la información. La optimización difiere sensiblemente en cada motor de base de datos y depende de muchos factores. Existe una ampliación de SQL conocida como FSQL (Fuzzy SQL, SQL difuso) que permite el acceso a bases de datos difusas, usando la lógica difusa. Este lenguaje ha sido implementado a nivel experimental y está evolucionando rápidamente. Lenguaje de definición de datos (LDD) El lenguaje de definición de datos (en inglés Data Definition Language, o DDL), es el que se encarga de la modificación de la estructura de los objetos de la base de datos. Existen cuatro operaciones básicas: CREATE, ALTER, DROP y TRUNCATE. CREATE Este comando crea un objeto dentro de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Ejemplo (crear una tabla) CREATE TABLE 'TABLA_NOMBRE' ( 'CAMPO_1' INT, 'CAMPO_2' STRING ) ALTER Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, modificar un trigger, etc. Ejemplo (agregar columna a una tabla) [editar] ALTER TABLE 'TABLA_NOMBRE' ( ADD NUEVO_CAMPO INT UNSIGNED meel ) DROP Este comando elimina un objeto de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER. Ejemplo ALTER TABLE ''TABLA_NOMBRE'' ( DROP COLUMN ''CAMPO_NOMBRE1'' ) TRUNCATE Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DROP, es que si se quiere borrar todo el contenido de la tabla, es mucho más rápido, especialmente si la tabla es muy grande. La desventaja es que TRUNCATE sólo sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se permite la cláusula WHERE. Si bien, en un principio, esta sentencia parecería ser DML (Lenguaje de Manipulación de Datos), es en 3 realidad una DDL, ya que internamente, el comando TRUNCATE borra la tabla y la vuelve a crear y no ejecuta ninguna transacción. Ejemplo TRUNCATE TABLE ''TABLA_NOMBRE1'' Lenguaje de manipulación de datos (LMD) Definición Un lenguaje de manipulación de datos (Data Manipulation Language, o DML en inglés) es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado. El lenguaje de manipulación de datos más popular hoy día es SQL, usado para recuperar y manipular datos en una base de datos relacional. Otros ejemplos de DML son los usados por bases de datos IMS/DL1, CODASYL u otras. INSERT Una sentencia INSERT de SQL agrega uno o más registros a una (y sólo una) tabla en una base de datos relacional. Forma básica [editar] INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) 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 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: INSERT INTO ''tabla'' VALUES (''valor1'', [''valor2,...'']) Ejemplo (asumiendo que 'nombre' y 'número' son las únicas columnas de la tabla 'agenda_telefonica'): INSERT INTO agenda_telefonica VALUES ('Roberto Jeldrez', 4886850); Formas avanzadas [editar] Inserciones en múltiples filas [editar] 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: INSERT INTO ''tabla'' (''columna1'', [''columna2,... '']) VALUES (''valor1a'', [''valor1b,...'']), (''value2a'', [''value2b,...'']),... 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'); Que podía haber sido realizado por las sentencias INSERT INTO agenda_telefonica VALUES ('Roberto Fernández', '4886850'); INSERT INTO agenda_telefonica VALUES ('Alejandro Sosa', '4556550'); 4 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: INSERT INTO phone_book SELECT 'John Doe', '555-1212' UNION ALL SELECT 'Peter Doe', '555-2323'; 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 DUAL TABLE, siempre que se trate de solo una simple fila: INSERT INTO phone_book SELECT 'John Doe', '555-1212' FROM DUAL UNION ALL SELECT 'Peter Doe','555-2323' FROM DUAL Una implementación conforme al estándar de esta lógica se muestra el siguiente ejemplo, o como se muestra arriba: INSERT INTO phone_book SELECT 'John Doe', '555-1212' FROM LATERAL ( VALUES (1) ) AS t(c) UNION ALL SELECT 'Peter Doe','555-2323' FROM LATERAL ( VALUES (1) ) AS t(c) Copia de filas de otras tablas [editar] Un INSERT también puede utilizarse para recuperar datos de otros, modificarla si es necesario e insertarla directamente en la tabla. Todo esto se hace en una sola sentencia SQL que no implica ningún procesamiento intermedio en la aplicación cliente. Un SUBSELECT se utiliza en lugar de la cláusula VALUES. El SUBSELECT puede contener JOIN, llamadas a funciones, y puede incluso consultar en la misma TABLA los datos que se inserta. Lógicamente, el SELECT se evalúa antes que la operación INSERT esté iniciada. Un ejemplo se da a continuación. INSERT INTO phone_book2 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.) INSERT INTO phone_book2 ( [name], [phoneNumber] ) SELECT [name], [phoneNumber] FROM phone_book WHERE name IN ('John Doe', 'Peter Doe') 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. UPDATE Una sentencia UPDATE de SQL es utilizada para modificar los valores de un conjunto de registros existentes en una tabla. 5 Forma básica UPDATE ''tabla'' SET ''columna1'' = ''valor1'' ,''columna2'' = ''valor2'',... WHERE ''columnaN = ''valorN'' Ejemplo UPDATE My_table SET field1 = 'updated value' WHERE field2 = 'N'; . 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 My_table WHERE field2 = 'N'; Recuperación de clave [editar] Los diseñadores de base de datos que usan una clave suplente como la clave principal para cada tabla, se ejecutará en el ocasional escenario en el que es necesario recuperar automáticamente la base de datos, generando una clave primaria de una sentencia SQL INSERT para su uso en otras sentencias SQL. La mayoría de los sistemas no permiten sentencias SQL INSERT para retornar fila de datos. Por lo tanto, se hace necesario aplicar una solución en tales escenarios. Implementaciones comunes incluyen: Utilizando un procedimiento almacenado especifico de base de datos que genera la clave suplente, realice la operación INSERT, y finalmente devuelve la clave generada. Utilizando una sentencia SELECT específica de base de datos, sobre una tabla temporal que contiene la última fila insertada. DB2 implementa esta característica de la siguiente manera: SELECT * FROM NEW TABLE ( INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' ) ) AS t Utilizando una sentencia SELECT después de la sentencia INSERT con función específica de base de datos, que devuelve la clave primaria generada por el registro insertado más recientemente. Utilizando una combinación única de elementos del original SQL INSERT en una posterior sentencia SELECT. Utilizando un GUID en la sentencia SQL INSERT y la recupera en una sentencia SELECT. Utilizando la función de PHP mysql_insert_id() de MySQL después de la sentencia INSERT. Utilizando un INSERT con la cláusula RETURNING para Oracle, que sólo se puede utilizar dentro de un PL/SQL bloque, en el caso de PostgreSQL se puede usar también tanto con SQL como con PL/SQL. INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' ) RETURNING phone_book_id INTO v_pb_id En el caso de MS SQL se puede utilizar la siguiente instrucción: SET NoCount ON; INSERT INTO phone_book VALUES ( 'Cristobal Jeldrez','0426.817.10.30' ); SELECT @@Identity AS ID Disparadores (Triggers) 6 Los desencadenantes, también conocidos como disparadores, (triggers en inglés) son definidos sobre la tabla en la que opera la sentencia INSERT, los desencadenantes son evaluados en el contexto de la operación. Desencadenantes BEFORE INSERT permiten la modificación de los valores que se insertará en la tabla. Desencadenantes AFTER INSERT no puede modificar los datos de ahora en adelante, pero se puede utilizar para iniciar acciones en otras tablas, por ejemplo para aplicar mecanismos de auditoría. Sistemas de gestión de base de datos [editar] Los sistemas de gestión de base de datos con soporte SQL más utilizados son, por orden alfabético: DB2 Firebird Informix Interbase MySQL Oracle PostgreSQL Pervasive SQLite SQL Server Sybase ASE Véase también SQL injection FSQL AQL Modelo de base de datos Base de datos relacional De Wikipedia, la enciclopedia libre Saltar a navegación, búsqueda Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para modelar problemas reales y administrar datos dinámicamente. Permiten establecer interconexiones (relaciones) entre los datos (que están guardados en tablas), y trabajar con ellos conjuntamente. Tras ser postuladas sus bases en 1970 por Edgar Frank Codd, de los laboratorios IBM en San José (California), no tardó en consolidarse como un nuevo paradigma en los modelos de base de datos.1 Contenido [ocultar] 1 Características 2 Elementos o 2.1 Relaciones base y derivadas o 2.2 Restricciones o 2.3 Dominios o 2.4 Clave única 7 o o 2.5 Clave primaria 2.6 Clave foránea 3 Clave índice o 3.1 Procedimientos almacenados 4 Estructura 5 Manipulación de la información 6 Manejadores de base de datos relacionales 7 Ventajas y desventajas 8 Véase también 9 Referencias 10 Enlaces externos Características Una base de datos relacional se compone de varias tablas o relaciones. No pueden existir dos tablas con el mismo nombre. Cada tabla es a su vez un conjunto de registros, filas o tuplas. Elementos Relaciones base y derivadas En una base de datos relacional, todos los datos se almacenan y se acceden a ellos por medio de relaciones. Las relaciones que almacenan datos son llamados "relaciones base" y su implementación es llamada "tabla". Otras relaciones no almacenan datos, pero son calculadas al aplicar operaciones relacionales. Estas relaciones son llamadas "relaciones derivadas" y su implementación es llamada "vista" o "consulta". Las relaciones derivadas son convenientes ya que expresan información de varias relaciones actuando como si fuera una sola. Restricciones Una restricción es una condición que obliga el cumplimiento de ciertas condiciones en la base de datos. Algunas no son determinadas por los usuarios, sino que son inherentemente definidas por el simple hecho de que la base de datos sea relacional. Algunas otras restricciones las puede definir el usuario, por ejemplo, usar un campo con valores enteros entre 1 y 10. Las restricciones proveen un método de implementar reglas en la base de datos. Las restricciones restringen los datos que pueden ser almacenados en las tablas. Usualmente se definen usando expresiones que dan como resultado un valor booleano, indicando si los datos satisfacen la restricción o no. Las restricciones no son parte formal del modelo relacional, pero son incluidas porque juegan el rol de organizar mejor los datos. Las restricciones son muy discutidas junto con los conceptos relacionales. Dominios [editar] Un dominio describe un conjunto de posibles valores para cierto atributo. Como un dominio restringe los valores del atributo, puede ser considerado como una restricción. Matemáticamente, atribuir un dominio a un atributo significa "todos los valores de este atributo deben de ser elementos del conjunto especificado". Distintos tipos de dominios son: enteros, cadenas de texto, fecha, etc. Clave única Cada tabla puede tener uno o más campos cuyos valores identifican de forma única cada registro de dicha tabla, es decir, no pueden existir dos o más registros diferentes cuyos valores en dichos campos sean idénticos. Este conjunto de campos se llama clave única. Pueden existir varias claves únicas en una determinada tabla, y a cada una de éstas suele llamársele candidata a clave primaria. 8 Clave primaria Una clave primaria es una clave única elegida entre todas las candidatas que define univocamente a todos los demas atributos de la tabla, para especificar los datos que serán relacionados con las demás tablas. La forma de hacer esto es por medio de claves foráneas. Sólo puede existir una clave primaria por tabla y ningún campo de dicha clave puede contener valores NULL. Clave foránea Una clave foránea es una referencia a una clave en otra tabla. Las claves foráneas no necesitan ser claves únicas en la tabla donde están y sí a donde están referenciadas. Por ejemplo, el código de departamento puede ser una clave foránea en la tabla de empleados, obviamente se permite que haya varios empleados en un mismo departamento, pero existirá sólo un departamento. Clave índice Las claves índice surgen con la necesidad de tener un acceso más rápido a los datos. Los índices pueden ser creados con cualquier combinación de campos de una tabla. Las consultas que filtran registros por medio de estos campos, pueden encontrar los registros de forma no secuencial usando la clave índice. Las bases de datos relacionales incluyen múltiples técnicas de ordenamiento, cada una de ellas es óptima para cierta distribución de datos y tamaño de la relación. Los índices generalmente no se consideran parte de la base de datos, pues son un detalle agregado. Sin embargo, las claves índices son desarrolladas por el mismo grupo de programadores que las otras partes de la base de datos. Procedimientos almacenados [editar] Un procedimiento almacenado es código ejecutable que se asocia y se almacena con la base de datos. Los procedimientos almacenados usualmente recogen y personalizan operaciones comunes, como insertar un registro dentro de una tabla, recopilar información estadística, o encapsular cálculos complejos. Son frecuentemente usados por un API por seguridad o simplicidad. Los procedimientos almacenados no son parte del modelo relacional, pero todas las implementaciones comerciales los incluyen. Estructura La base de datos se organiza en dos marcadas secciones; el esquema y los datos (o instancia). El esquema es la definición de la estructura de la base de datos y principalmente almacena los siguientes datos: El nombre de cada tabla El nombre de cada columna El tipo de dato de cada columna La tabla a la que pertenece cada columna Las bases de datos relacionales pasan por un proceso al que se le conoce como normalización, el resultado de dicho proceso es un esquema que permite que la base de datos sea usada de manera óptima. Los datos o instancia es el contenido de la base de datos en un momento dado. Es en si, el contenido de todos los registros. Manipulación de la información Para manipular la información utilizamos un lenguaje relacional, actualmente se cuenta con dos lenguajes formales el álgebra relacional y el cálculo relacional. 9 El álgebra relacional permite describir la forma de realizar una consulta, en cambio, el cálculo relacional sólo indica lo que se desea devolver. El lenguaje más común para construir las consultas a bases de datos relacionales es SQL (Structured Query Language), un estándar implementado por los principales motores o sistemas de gestión de bases de datos relacionales. En el modelo relacional los atributos deben estar explícitamente relacionados a un nombre en todas las operaciones, en cambio, el estándar SQL permite usar columnas sin nombre en conjuntos de resultados, como el asterisco taquigráfico (*) como notación de consultas. Al contrario del modelo relacional, el estándar SQL requiere que las columnas tengan un orden definido, lo cual es fácil de implementar en una computadora, ya que la memoria es lineal. Es de notar, sin embargo, que en SQL el orden de las columnas y los registros devueltos en cierto conjunto de resultado nunca está garantizado, a no ser que explícitamente sea especificado por el usuario. Manejadores de base de datos relacionales [editar] Existe software exclusivamente dedicado a tratar con bases de datos relacionales. Este software se conoce como SGBD (Sistema de Gestión de Base de Datos relacional) o RDBMS (del inglés Relational Database Management System). Entre los gestores o manejadores actuales más populares encontramos: MySQL, PostgreSQL, Oracle, DB2 y Microsoft SQL Server. Ventajas y desventajas Ventajas Provee herramientas que garantizan evitar la duplicidad de registros. Garantiza la integridad referencial, así, al eliminar un registro elimina todos los registros relacionados dependientes. Favorece la normalización por ser más comprensible y aplicable. Desventajas Presentan deficiencias con datos gráficos, multimedia, CAD y sistemas de información geográfica. No se manipulan de forma manejable los bloques de texto como tipo de dato. Las bases de datos orientadas a objetos (BDOO) se propusieron con el objetivo de satisfacer las necesidades de las aplicaciones anteriores y así, complementar pero no sustituir a las bases de datos relacionales. Véase también Base de datos Modelo relacional Modelo entidad-relación Base de datos orientada a objetos LENGUAJE DE DEFINICION DE DATOS (LDD) O DATA DEFINITION LANGUAJE (DDL): Es el encargado de la definición y creación de esquemas de Bases de Datos, tablas, vistas e índices entre otros. Una vez finalizado el diseño de una base de datos relacional y escogido un SGBDR ( o RDBMS) para su implementación, el primer paso consiste en especificar el esquema conceptual y el esquema interno de la base de datos, y la correspondencia entre ambos. En muchos Sistemas de Gestión de Bases de 10 Datos Relacionales no se mantiene una separación estricta de niveles, por lo que el administrador de la base de datos y los diseñadores utilizan el mismo lenguaje para definir ambos esquemas, y para ello, es necesario utilizar el lenguaje de definición de datos (LDD del español ó DDL por sus siglas del inglés de Data Definition Lenguage). Todo SGBDR posee un compilador de LDD cuya función consiste en procesar las sentencias del lenguaje para identificar las descripciones de los distintos elementos de los esquemas y almacenar la descripción del esquema en el catálogo o diccionario de datos. En el diccionario se describen todos los objetos de la base de datos, por tal razón, se le conoce también como metadatos. Cuando en un SGBDR hay una clara separación entre los niveles conceptual e interno, el LDD sólo sirve para especificar el esquema conceptual. Para especificar el esquema interno se utiliza un lenguaje de definición de almacenamiento (LDA). Las correspondencias entre ambos esquemas se pueden especificar en cualquiera de los dos lenguajes. Para tener una verdadera arquitectura de tres niveles sería necesario disponer de un tercer lenguaje, el lenguaje de definición de vistas (LDV), que se utilizaría para especificar las vistas de los usuarios y su correspondencia con el esquema conceptual. El lenguaje de definición de datos permite: Definir y crear una base de datos y todos sus objetos (principalmente las tablas), para esto es necesario utilizar la sentencia CREATE. La sentencia CREATE TABLE sirve para crear la estructura de una tabla no para rellenarla con datos, nos permite definir las columnas que tiene y ciertas restricciones que deben cumplir esas columnas. Borrar una base de datos o los objetos de la misma que ya no se necesitan usando la sentencia DROP. La sentencia DROP TABLE sirve para eliminar una tabla. No se puede eliminar una tabla si está abierta, tampoco la podemos eliminar si el borrado infringe las reglas de integridad referencial (si interviene como tabla padre en una relación y tiene registros relacionados). Cambiar la definición de una base de datos existente o la de los objetos existentes de la misma. Para esto, es necesario utilizar la sentencia ALTER. La sentencia ALTER TABLE sirve para modificar la estructura de una tabla que ya existe. Mediante esta instrucción podemos añadir columnas nuevas, eliminar columnas. Ten cuenta que cuando eliminamos una columna se pierden todos los datos almacenados en ella. También nos permite crear nuevas restricciones o borrar algunas existentes. La sintaxis puede parecer algo complicada pero sabiendo el significado de las palabras reservadas la sentencia se aclara bastante; ADD (añade), ALTER (modifica), DROP (elimina), COLUMN (columna), CONSTRAINT (restricción). Cambiar el nombre de una tabla utilizando la sentencia RENAME. Al hablar de objetos de una base de datos, se está refriendo a las tablas (que son los principales) y a partir de éstos, poder crear Indices, vistas, procedimientos almacenados, funciones, triggers, así también objetos como las llaves primarias y foráneas que aunque son parte propiamente de las tablas, algunos gestores de bases de datos los administra como objetos propios de la base de datos. La operación de renombrado se hace atómicamente, lo que 11 significa que ningún otro proceso puede acceder a ninguna de las tablas mientras se realiza el renombrado. 1) USANDO LA SENTENCIA CREATE: Normalmente se utiliza la sentencia create para crear tablas, por lo que a continuación se presenta su respectiva sintaxis para tal efecto. Para la cración de los otros objetos de la base de datos cambia de alguna forma esta sintaxis. Sintaxis Create Table nombre_tabla ( nombre_campo_1 tipo_1 nombre_campo_2 tipo_2 nombre_campo_n tipo_n Key(campo_x,...) ) EJEMPLOS REALIZADOS EN SQL SERVER: a). Creando una base de datos de nombre Ejemplo_BD (database): USE master GO CREATE DATABASE Ejemplo_BD ON ( NAME = Ejemplo_BD_data, FILENAME = 'c:\program files\microsoft sql server\mssql\data\ Ejemplo_BD_data.mdf', SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = Ejemplo_BD _log', FILENAME = 'c:\program files\microsoft sql server\mssql\data\ Ejemplo_BD _log.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB ) Sintaxis: NAME = Nombre_del_archivo_lógico, FILENAME = Nombre_del_archivo_en_el_sistema (path completo) SIZE = TAMAÑO (inicial) MAXSIZE = (tamaño_máximo | UNLIMITED) (Tamaño máximo que puede tener la base de datos, UNLIMITED = tamaño ilimitado) FILEGROWTH = Incremento del archivo (crecimiento en MB) 12 b) Creando tres tablas en la base de datos Ejemplo_BD (tables): CREATE TABLE ALUMNO ( CARNE NVARCHAR(10) NOT NULL, NOMBRE NVARCHAR(100) NOT NULL, DIRECCION NVARCHAR(100) NOT NULL, TELEFONO NVARCHAR(10) NULL, SEXO CHAR(1) NOT NULL, FECHA_NAC DATETIME NOT NULL, CONSTRAINT PK_ALUMNO PRIMARY KEY (CARNE) ) CREATE TABLE CURSO ( CODIGO NVARCHAR(10) NOT NULL, DESCRIPCION NVARCHAR(100) NOT NULL, PRERREQUISITO NVARCHAR(10) NOT NULL, CREDITO SMALLINT, CONSTRAINT PK_CURSO PRIMARY KEY (CODIGO) ) CREATE TABLE ASIGNACION ( CARNE NVARCHAR(10) NOT NULL, CODIGO NVARCHAR(10) NOT NULL, ANIO INT NOT NULL, SEMESTRE SMALLINT NOT NULL, CICLO SMALLINT NOT NULL, ZONA SMALLINT NOT NULL, NOTA SMALLINT NOT NULL ) c) Creando un índice (Index): create index Acceso_Alumno 13 d) on Alumno ( carne ) Creando una vista (view). CREATE VIEW RESULTADO_ASINACION AS ( SELECT A.CARNE, A.NOMBRE, C.CODIGO, C.DESCRIPCION, ASI.ANIO, ASI.SEMESTRE, ASI.CICLO, ASI.ZONA, ASI.NOTA FROM ALUMNO AS A, CURSO AS C, ASIGNACION AS ASI WHERE A.CARNE = ASI.CARNE AND ASI.CODIGO = C.CODIGO ) 2) USANDO LA SENTENCIA DROP: EJEMPLOS REALIZADOS EN SQL SERVER: a) Borrando la base de datos Ejemplo_BD: drop database Ejemplo_BD b) Borrando una de las tres tablas: drop table Asignacion c) Borrando la vista. drop view RESULTADO_ASINACION 3) USANDO LA SENTENCIA ALTER: EJEMPLOS REALIZADOS EN SQL SERVER: a) Alterando la estructura de una base de datos: ALTER TABLE ASIGNACION ADD CONSTRAINT KP_ASIGNACION PRIMARY KEY (CARNE,CODIGO,ANIO,SEMESTRE,CICLO) ALTER TABLE ASIGNACION ADD CONSTRAINT FK_ASIGNACION_ALUMNO FOREIGN KEY (CARNE) REFERENCES ALUMNO(CARNE) 4) ALTER TABLE ASIGNACION ADD CONSTRAINT FK_ASIGNACION_CURSO FOREIGN KEY (CODIGO) REFERENCES CURSO(CODIGO) b) Etc. USANDO LA SENTENCIA RENAME: a) Renombrar una tabla en Oracle: RENAME TABLE <nombre de tabla existente> TO <nuevo nombre de la tabla> b) Renombrar una tabla en MySQL: RENAME TABLE tbl_name TO new_tbl_name [, tbl_name2 TO new_tbl_name2] ... La sentencia renombra una o más tablas a la vez 14 Ejemplo: c) RENAME TABLE old_table TO tmp_table, new_table TO old_table, tmp_table TO new_table; Si la sentencia renombra más de una tabla, las operaciones se realizan de izquierda a derecha. Si se quiere intercambiar el nombre de dos tablas, se puede hacer de este modo (asumiendo que no existe ninguna tabla con el nombre tmp_table): Renombrar una tabla en SQL Server: En SQL Server, para cambiar el nombre de una tabla es necesario usar un procedimiento almacenado. El nombre del SP es ‘sp_rename’ y su respectiva sintaxis es Excel sp_rename <nombre de tabla existente>, <nuevo nombre de la tabla> Por ejemplo: Exec sp_renama ‘Asignacion’, ‘Asignacion_Alumno’