definición y sintaxis de sentencia create

Anuncio
INSTITUTO TECNOLÓGICO SUPERIOR DE
ESCÁRCEGA
Organismo público descentralizado de la
administración
Pública del estado de Campeche
DEFINICIÓN Y SINTAXIS DE SENTENCIA CREATE
QUE PRESENTA
Liliana Esperanza Molina García.
ALUMNO DEL QUINTO SEMESTRE DE LA CARRERA DE
INGENIERÍA EN SISTEMAS COMPUTACIONALES
TALLER DE BASE DE DATOS
PROFESOR
Francisco Salvador Ballina Sánchez.
ESCÁRCEGA, CAMPECHE, MÉXICO, 2010
CREATE TABLE
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.
La sintaxis es la siguiente:
nbtabla: nombre de la tabla que estamos definiendo
nbcol: nombre de la columna que estamos definiendo
tipo: tipo de dato de la columna, todos los datos almacenados en la columna
deberán ser de ese tipo.
Ejemplo:
CREATE TABLE tab1 (col1 INTEGER,
col2 CHAR (25) NOT NULL,
col3 CHAR (10),
col4 INTEGER,
col5 INT,
CONSTRAINT pk PRIMARY KEY (col1),
CONSTRAINT uni1 UNIQUE (col3),
CONSTRAINT fk5 FOREIGN KEY (col5) REFERENCES tab2);
CREATE INDEX
La sentencia CREATE INDEX sirve para crear un índice sobre una o varias
columnas de una tabla.
La sintaxis es la siguiente:
nbindi: nombre del índice que estamos definiendo. En una tabla no pueden haber
dos índices con el mismo nombre de lo contrario da error.
nbtabla: nombre de la tabla donde definimos el índice. A continuación entre
paréntesis se indica la composición del índice (las columnas que lo forman).
nbcol: nombre de la columna que indexamos. Después del nombre de la columna
podemos indicar cómo queremos que se ordenen las filas según el índice
mediante las cláusulas ASC/DESC.
ASC: la cláusula ASC es la que se asume por defecto e indica que el orden
elegido para el índice es ascendente (en orden alfabético si la columna es de tipo
texto, de menor a mayor si es de tipo numérico, en orden cronológico si es de tipo
fecha).
DESC: indica orden descendente, es decir el orden inverso al ascendente.
Ejemplo:
CREATE UNIQUE INDEX ind1 ON clientes (provincia, poblacion ASC,
fecha_nacimiento DESC)
Crea un índice llamado ind1 sobre la tabla clientes formado por las columnas
provincia, población y fecha_nacimiento. Este índice permite tener ordenadas las
filas de la tabla clientes de forma que aparezcan los clientes ordenados por
provincia, dentro de la misma provincia por población y dentro de la misma
población por edad y del más joven al más mayor.
CREATE USER
Sintaxis de CREATE USER
CREATE USER user [IDENTIFIED BY [PASSWORD] 'password']
[, user [IDENTIFIED BY [PASSWORD] 'password']] ...
El comando CREATE USER se añadió en MySQL 5.0.2. Este comando crea
nuevas cuentas MySQL. Para usarlas, debe tener el permiso global CREATE
USER o el permiso INSERT para la base de datos mysql . Para cada cuenta,
CREATE USER crea un nuevo registro en la tabla mysql.user que no tiene
permisos. Un error ocurre si la cuenta ya existe.
La cuenta puede tener una contraseña con la cláusula opcional IDENTIFIED BY.
El valor user y la contraseña se dan del mismo modo que para el comando
GRANT. En particular, para especificar la contraseña en texto plano, omita la
palabra clave PASSWORD. Para especificar la contraseña como el valor
hasheado retornado por la función PASSWORD() , incluya la palabra clave
PASSWORD.
Ejemplo:
Crear un usuario de base de datos
En el siguiente ejemplo, primero se crea un inicio de sesión de servidor
denominado AbolrousHazem con una contraseña y, a continuación, se crea el
usuario de base de datos AbolrousHazem correspondiente en AdventureWorks.
CREATE LOGIN AbolrousHazem
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks;
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO
CREATE TRIGGER
Sintaxis de CREATE TRIGGER
CREATE TRIGGER nombre_disp momento_disp evento_disp
ON nombre_tabla FOR EACH ROW sentencia_disp
Un disparador es un objeto con nombre en una base de datos que se asocia con
una tabla, y se activa cuando ocurre un evento en particular para esa tabla.
El disparador queda asociado a la tabla nombre_tabla. Esta debe ser una tabla
permanente, no puede ser una tabla TEMPORARY ni una vista.
momento_disp es el momento en que el disparador entra en acción. Puede ser
BEFORE (antes) o AFTER (despues), para indicar que el disparador se ejecute
antes o después que la sentencia que lo activa.
evento_disp indica la clase de sentencia que activa al disparador. Puede ser
INSERT, UPDATE, o DELETE. Por ejemplo, un disparador BEFORE para
sentencias INSERT podría utilizarse para validar los valores a insertar.
No puede haber dos disparadores en una misma tabla que correspondan al mismo
momento y sentencia. Por ejemplo, no se pueden tener dos disparadores
BEFORE UPDATE. Pero sí es posible tener los disparadores BEFORE UPDATE y
BEFORE INSERT o BEFORE UPDATE y AFTER UPDATE.
sentencia_disp es la sentencia que se ejecuta cuando se activa el disparador. Si
se desean ejecutar múltiples sentencias, deben colocarse entre BEGIN ... END, el
constructor de sentencias compuestas. Esto además posibilita emplear las mismas
sentencias permitidas en rutinas almacenadas.
Ejemplo:
A. Este ejemplo imprime un mensaje cada vez que el usuario añade o modifica
datos en la tabla "Tittles"
create trigger reminder
on tittles
for insert, update as
print "No olvides imprimir el informe de contabilidad"
Ejemplo:
SQL> CREATE TRIGGER salary_check
1> BEFORE
2> INSERT OR UPDATE OF sal, job
3> ON employee
4> FOR EACH ROW
5> WHEN (new.job <> 'PRESIDENT')
6> DECLARE
7> minsal NUMBER
8> maxsal NUMBER
9> BEGIN
10> /* Se obtienen los valores minimo y maximo para el salario de */
11> /* un cargo determinado, usando la tabla sal_guide */
12> SELECT minsal, maxsal
13> INTO minsal, maxsal
14> FROM sal_guide
15> WHERE job = :new.job
16> /* Si el salario del empleado a insertar/modificar esta por */
17> /* debajo del minimo, o por encima del maximo, se genera */
19> /* un error. */
20> IF (:new.sal < minsal OR :new.sal > maxsal)
21> THEN raise_application_error(-20601, 'Salary '||:new.sal||
22> ' out of range for job '||:new.job||' for employee '||
23> :new.ename);
24> END IF;
25 > END
CREATE DATABASE
Crea una nueva base de datos y el archivo usado para almacenarla.
Sintaxis
CREATE DATABASE database_name
[DATABASEPASSWORD 'database_password'
[ENCRYPTION {ON|OFF}]
]
[COLLATE collation_name comparison_style]
database password ::= identifier
Argumentos
database_name
Nombre de la base de datos nueva. El argumento database_name es un nombre
de archivo y está limitado por las restricciones de nomenclatura y tamaño del
sistema operativo. Se puede usar cualquier carácter válido que se pueda utilizar
en un nombre de archivo para el nombre de la base de datos. Si no se especifica
un nombre de ruta, la base de datos se crea en el directorio actual. De forma
predeterminada, la extensión del nombre de archivo de una base de datos de
Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) es
.sdf.
'database_password'
SQL Server Compact Edition devuelve un error si un usuario se conecta a una
base de datos protegida por contraseña sin usar ninguna contraseña. El valor de
database_password debe estar entre comillas tipográficas simples.
ENCRYPTION
Si se utiliza la palabra clave opcional ENCRYPTION ON, la base de datos se cifra
mediante cifrado de 128 bits. Debe especificar una contraseña para utilizar cifrado.
collation_name
Especifica la intercalación predeterminada para la base de datos. El argumento
collation_name sólo puede ser una intercalación de Windows. Si no se especifica
collation_name, se asigna a la base de datos la intercalación predeterminada del
dispositivo.
comparison_style
Especifica el estilo de comparación de caracteres. SQL Server Compact Edition
sólo admite CI_AS (no distingue mayúsculas de minúsculas y distingue acentos).
Los parámetros collation_name y comparison_style no deben estar incluidos entre
comillas tipográficas simples o dobles.
Ejemplo de código:
Crear una base de datos protegida mediante contraseña
En el siguiente ejemplo se crea una base de datos con una contraseña.
CREATE DATABASE "\test1.SDF" DATABASEPASSWORD '<tst1_pwd>'
Cuando un usuario se intenta conectar a una base de datos protegida por
contraseña sin suministrar la contraseña correcta, SQL Server Compact Edition
devuelve este error:
Error: 0x80040e4d DB_SEC_E_AUTH_FAILED
Minor Error: (25028)
Description: Authentication failed.
Interface defining error: IID_IDBInitialize
Param. 0:0
Param. 1:0
Param. 2:0
Param. 3:
Param. 4:
Param. 5:
CREATE VIEW
Crea una tabla virtual que representa los datos de una o más tablas de una forma
alternativa. CREATE VIEW debe ser la primera instrucción en un lote de
consultas.
Sintaxis
CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ] [ ; ]
<view_attribute> ::=
{
[ ENCRYPTION ]
[ SCHEMABINDING ]
[ VIEW_METADATA ]
}
Ejemplo:
1. Utilizar una instrucción CREATE VIEW sencilla
En el ejemplo siguiente se crea una vista mediante una instrucción SELECT
sencilla. Una vista sencilla resulta útil cuando se consulta con frecuencia una
combinación de columnas. Los datos de esta vista provienen de las tablas
HumanResources.Employee y Person.Contact de la base de datos
AdventureWorks. Los datos proporcionan el nombre e información sobre la fecha
de contratación de los empleados de Adventure Works Cycles. Esta vista puede
crearse para la persona responsable del seguimiento de los aniversarios de
trabajo pero sin concederle acceso a todos los datos de estas tablas.
USE AdventureWorks2008R2 ;
GO
IF OBJECT_ID ('hiredate_view', 'V') IS NOT NULL
DROP VIEW hiredate_view ;
GO
CREATE VIEW hiredate_view
AS
SELECT p.FirstName, p.LastName, e.BusinessEntityID, e.HireDate
FROM HumanResources.Employee e
JOIN Person.Person AS p ON e.BusinessEntityID = p.BusinessEntityID ;
GO
2. Utilizar WITH ENCRYPTION
En el siguiente ejemplo se utiliza la opción WITH ENCRYPTION y se muestran
columnas calculadas, columnas con el nombre cambiado y varias columnas.
USE AdventureWorks2008R2 ;
GO
IF OBJECT_ID ('Purchasing.PurchaseOrderReject', 'V') IS NOT NULL
DROP VIEW Purchasing.PurchaseOrderReject ;
GO
CREATE VIEW Purchasing.PurchaseOrderReject
WITH ENCRYPTION
AS
SELECT PurchaseOrderID, ReceivedQty, RejectedQty,
RejectedQty / ReceivedQty AS RejectRatio, DueDate
FROM Purchasing.PurchaseOrderDetail
WHERE RejectedQty / ReceivedQty > 0
AND DueDate > CONVERT(DATETIME,'20010630',101) ;
GO
CONCLUSIÓN
En esta investigación damos a conocer la definición y
sintaxis en sus diferentes versiones de CREATE (CREATE
TABLE, CREATE INDEX, CREATE USER, CREATE TRIGGER, CREATE
DATABASE,
CREATE
VIEW);
los
cuales
son
principales
elementos que incluyen en un sistema generador de base
de
datos
como
son:
MySQL
SERVER,
SQL,
POSTGRESQL, ORACLE ya que la sintaxis se relacionan
de forma similar al comenzar con la misma sentencia
pero a su vez al ejecutarse son diferentes ya que cada
uno genera una acción que tiene efectos específicos a la
hora de depurar cada instrucción un ejemplo de ello es
comparar la creación de una tabla con la generación de
una vista de la misma tabla.
BIBLIOGRAFÍA
http://dev.mysql.com/doc/refman/5.0/es/create-user.html
http://dev.mysql.com/doc/refman/5.0/es/createtrigger.html
http://rt000z51.eresmas.net/documentos/trigger.html
http://www.aulaclic.es/sql/t_8_1.htm
http://www.aulaclic.es/sql/t_8_4.htm
http://msdn.microsoft.com/eses/library/ms174454(SQL.90).aspx
Descargar