Lenguaje SQL
November 22, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Lenguaje SQL...
Description
1. EL LEN LENGU GUA AJE SQL SQL Lenguaje declarativo (se le dice qué se quiere hacer, no cómo) de definición, control y manipulación de BD. Algunos ejemplos: CREAR UNA TABLA: CREATE TABLE productos (cod_producto (cod_producto INTEGER, nom_producto nom_producto CHAR (20), (20), tipo CHAR (20), descripción CHAR (50), precio REAL, PRIMARY KEY (cod_producto))
INSERTAR un producto en la tabla: INSERT INTO productos Values (1250, ‘LENA’, ‘Mesa’, ‘Diseño J. Ruíz. Año 1920’, 250000
CONSULTAR qué productos son sillas: SELECT cod_producto, nom-producto FROM productos WHERE tipo = ‘silla’ ; (o WHERE precio > 100000, por ejemplo)
Sentencias de definición CREATE: crea BD, tablas, dominios, aserciones y vistas ALTER: modifica tablas y dominios. DROP: borra todo lo anterior. CREATE SCHEMA { [nom_esquema] / [AUTHORIZATION usuario] } [lista_de_elementos_del_esquema]
Nomenclatura utilizada: Las mayúsculas son palabras reservadas del lengyaje, lo que haya entre [...] se puede poner o no, y la notación {A/.../B} indica que hemos de escoger al menos una opción. DROP SCHEMA nom_esquema {RESTRICT / CASCADE} RESTRICT borra sólo si el esquema está vacío, CASCADE, borra aunque no lo esté CREATE DATABASE y DROP DATABASE, también son validas en la mayoría mayo ría de BD.
1. Cr Crea eaci ción ón de tabl tablas as CREATE TABLE nom_tabla ( definición_columna [ , definición_columna ] [ , restricciones_tabla ])
donde definición_columna
es:
nom_columna {tipo_datos {tipo_datos /dominio} [def_defecte] [restric_col [restric_col ]
Tipos de datos:
CHARACTER ( longitud) NUMERIC (n, m) DECIMAL (n, m) INTEGER REAL DOUBLE PRECISION DATE TIME TIEMSTAMP
Cadena de de ca caracters de de llo ongitud ffiija Decimales con n dígitos y m decimales Decimales con n dígitos y m decimales Enteros Números con coma flotante y precisión predefinida Igual, pero con más precisión que el REAL YEAR, MONTH, DAY (‘ (‘1978-12-25’) HOUR, MINUT, SECOND (’17:15:00.00000’) DATE y TIME juntos (‘1998-7-8 9:30:05’)
Restricciones de columna: NOT NULL UNIQUE PRIMARY KEY REFERENCES REFER ENCES tabla [(columna)] [(columna)] CHECK (condiciones)
No puede tener valores nulos No puede tener valores repetidos. Es la clave alternativa Ni valores repetidos ni nulos. Es la clave primaria Clave Clave secundaria secundaria de la la col col y tabla especificada especificada Debe cumplir las condiciones especificadas.
Restricciones de tabla: UNIQUE (columna [ , columna...] ) PRIMA PR IMARY RY KEY KEY ( col colum umna na [, colu column mna. a... ..]] ) FOREIGN KEY (columna [columna...] ) REFERENCES [(columna2 [columna [columna 2…])] 2…])] CHECK (condiciones)
Clave alternativa de la tabla Clav Clave e pri prima mari ria a de de lla a ttabl abla a ‘columnas’ son una clave secundaria que referencia a ‘columnas2’, clave clave primaria Condicones a cumplir por la tabla
Modificación y borrado de claves primarias con claves secundarias: FOREIGN KEY clave_secundaria clave_secundaria REFERENCES tabla [ (clave_primaria) ] [ON DELETE {NO ACTION / CASCADE / SET DEFAULT / SET NULL } ] [ON UPDATE {NO ACTION / CASCADE / SET DEFAULT / SET NULL } ]
donde NO ACTION = restricción (no permitiría el borrado o modificación). Aserciones: son restricciones generales que afectan a una o más columnas de más de una tabla. CREATE ASSERTION nom_aserción CHECK (condiciones) DROP ASSERTION nom_ aserción
Modificar y borrar tablas: ALTER TABLA nom_tabla {acción_modificar_columna {acción_modificar_columna / acción_modif_restricción_tabla acción_modif_restricc ión_tabla }
Donde las accones pueden ser: {ADD/ALTER/DROP [COLUMN ]} Y {ADD restricción / DROP CONSTRAINT restricción {RESTRICT / CASCADE CASCADE } }
DROP TABLE nom_tabla { RESTRICT / CASCADE }
2. Consu Consultas ltas en una BD relacio relacional nal SELECT nom_columna_a_seleccionar nom_columna_a_seleccionar [ [ AS ] col_renombrada ] [ , nom_columna_a-seleccionar nom_columna_a-seleccio nar .[ AS ...] ... ] FROM tabla_a_consultar tabla_a_consultar [ [ AS ] tabla_renombrada] WHERE condiciones
Ejemplo: SELECT * FROM clientes (el * es comodín) Para indicar las condiones en WHERE , usaremos los operadores de comparación (=, , =, ) y los lógicos (NOT, AND, OR). Si queremos ver la consulta sin filas repetidas, pondremos SELECT DISTINT en lugar de SELECT. Funciones de agregación: se aplican a columnas, por lo que van con SELECT ( ej. SELECT COUNT) COUNT (total filas), SUM (suma), MIN, MAX, AVG (media).
Subconsultas: son consultas dentro de WHERE. WHERE precio = (SELECT MAX (precio) FROM proyectos)
Otros predicados: BETWEEN (entre), (entre), [NOT] IN (similar a = []), LIKE, IS [NOT] NULL , ALL/ANY/ ALL/ANY/ SOME, [NOT] EXISTS. Ejemplos: WHERE sueldo BETWEEN 2.0E+6 AND 5.0E+6 WHERE ciudad IN (‘Lleida’, ‘Tarragona’) (Solo coge los de Lleida y Tarragona) WHERE nom_empleado LIKE ‘J%’ ( _ y % serían los equivalentes a ? y * respectivamente) WHERE num_proyecto IS NULL WHERE precio > ALL/ANY/SOME ALL/ANY/SOME (subconsulta) WHERE EXISTS (subconsulta)
Otras cláusulas: ORDER BY columnas: ordena la consulta según lo especificado aquí GROUP BY columnas: agrupa las filas según las col especificadas. HAVING: según las condiciones indicadas aquí.
SELECT columna FROM tabla (también se pueden pueden indicar aquí varias tablas) [WHERE condiciones] GROUP BY columnas [HAVING condiciones ] (podemos usar aquí las func funciones iones de agregación SUM, MAX, etc.) [ORDER BY columna_de_ordenación [DESC] [ , col_ordenación [DESC]...] ]
3. Combinacio Combinaciones.( nes.(Join Join en inglés) inglés).. Consulta Consultass a más más de una una tabla. tabla. La combinación consiste en crear una sola tabla a partir de las tablas especificadas en la cláusula FROM, haciendo coincidir los valores de de las columnas relacionadas de estas tablas. Para indicar indicar la columna de una tabla, se escribe con el formato tabla.columna. Podemos usar alias para referirnos a las tablas, si los especificamos en FROM ( ej. FROM clientes c, proyectos p )
Se puede hacer una combinación de la la manera básica , o usando la cláusula JOIN que nos aporta el SQL92 completo. Comparemos ambas: SELECT p.precio, p.codi_proy, c.nif, p.codi_client, c.codi_cli FROM clients c, proyectos proyectos p WHERE c.codi_cli = p.codi_client AND c.codi_cli = 20 SELECT p.precio, p.codi_proy, c.nif, p.codi_client, c.codi_cli FROM clients c JOIN proyectos p ON c.codi_cli = p.codi_client WHERE c.codi_cli = 20
Combinación natural: la podemos hacer de la misma forma, usan NATURAL JOIN en vez de JOIN.Es una equicombinación, que combina columnas del mismo nombre y elimina las repetidas. Combinación interna (INNER JOIN): es la que hace por defecto. Se queda con las filas que tienen valores idénticos en las columnas de las tablas que compara. Esto puede hacer que perdamos alguna fila interesante, si por ejemplo se encuentra un valor nulo en alguna de las tablas al hacer la combinación. Combinación externa: nos permite subsanar lo anterior, obteniendo todos los valores de la tabla de la izquierda (LEFT OUTER JOIN), de la derecha de recha (RIGHT OUTER JOIN), o de ambas ( FULL OUTER JOIN). El formato sería: SELECT columnas FROM t1 [NATURAL] { LEFT/RIGHT/FULL } [OUTER] JOIN J OIN t2 [ON condiciones] [USING (columna (columna [ , [columna…] [columna…] ) ]
Combinaciones con más de dos tablas: dos posibilidades, según usemos el SQL92 introductorio o el completo: SELECT * FROM empleados, proyectos, clientes WHERE num_proy = codi_proy AND codi_client = codi_cli (nombres de col. diferentes) SELECT * FROM (empleados JOIN proyectos ON num_proy = codi_proy ) JOIN clientes ON codi_client = codi_clI
Unir consultas: usaremos la cláusula UNION [ALL] (sin el ALL evitamos las filas repetidas), e entre ntre cada sentencia SELECT. Intersección: Usaremos INTERSECT [ALL] entre cada sentencia SELECT. Otra posibilidad es usar las cláusulas IN o EXISTS: EXISTS: SELECT columnas FROM filas WHERE columna IN ( SELECT columna FROM tabla [WHERE condiciones] ) SELECT columnas FROM filas WHERE EXISTS ( SELECT * FROM tabla [WHERE condiciones] )
Diferencia: usaremos EXCEPT [ALL]entre cada consulta SELECT.
2. DISEÑO DISEÑO DE BASE BASES S DE DATOS DATOS RELA RELACIO CIONAL NALES ES Consiste en definir la estructura de la BD, que será un conjunto de esquemas de relaciòn, con sus atributos, dominios, claves primarias y secundarias, etc. Este diseño, se ha de descomponer en etapas, que son tres: diseño conceptual, diseño lógico y diseño físico.
1. Di Dise seño ño co conc ncep eptu tual al Obtendremos estructura de laPara futura BD, independientemente la el tecnología a emplear posteriormenteaquí paralallevarla a cabo. modelizar esa estructura, sede usa modelo ER (EntityRelatioship), donde las entidades serían más o menos las tablas a definir, los atributos las columnas de la tabla ( definiremos también los atributos que actuan como claves), y las interrelaciones (relationship) las relaciones entre tablas (asociación entre entidades). Una interrelación piede asociar una o más entidades, pudiendo dar lugar, en este último caso, a la creación de nuevas entidades. Por ejemplo, si tenemos la interrelación ESTUDIANTE ASIGNATURA y queremos también tener constancia de las asignaturas que ha cursado en cada trimestre, deberemos crear la entidad TRIMESTRE. Una interrelación binaria, puede ser 1:1 (DELEGACIÓNCIUDAD), 1:N (DESPACHOEMPLEADOS), o M:N (ESTUDIANTES ASIGNATURAS). Ejemplo: BD casas de colonias 1
COMARCA
RESIDENCIA N
1 SITUACIÓN N
N
1
NIÑO
M CASA-COLONIAS
ALOJAMIENTO
N ACTIVIDAD
OFERTA
Las entidades serían: CASA-COLONIAS(nom-casa, capacidad), ACTIVIDAD(nom-actividad), NIÑO (cod-niño, nombre, apellidos, teléfono), COMARCA (nom-comarca, superficie, numero-habitantes). Los atributos subrayados serían las claves primarias. Comentarios al modelo ER: Al decidir si COMARCA sería un atributo de CASA-COLONIAS y de NINÓ o una entidad propia, optamos por lo último, pues nos interesa reflejar datos adiccionales de la comarca (numero hab., superficie)como atributos de esta entidad. La misma decisión cabe tomar con ACTIVIDAD. Se crea como entidad, pues una casa de colonias puede ofrecer varias actividades y otras no. Otra elección dificil que sepresenta al diseñar un modelo ER, es decidir si una información es entidad o interrelación. En el ejemplo, ejemplo, podríamos haber puesto OFERTA como entidad entre CASACOLONIAS y ACTIVIDAD (OFERTA(nom-casa, nom-actividad, nivel), pero no sería del todo correcto, pues se identifica con las claves de las dos entidades entre las cuales está lo que nos debería hacer sospechar.
2. Diseño Diseño lógico: lógico: la transfo transformació rmación n al modelo modelo relacio relacional nal Las entidades, darán lugar a relaciones. Las interrelaciones, a claves secundarias (las 1:1 y 1:N), o bien a nuevas relaciones (las M:N y todas las n-arias). Los atributos y clave primaria de la entidad, lo serán ahora de la relación.
3. Diseñ iseño o físi físico co:: No nos es necesario pues cada SGBDR se encarga de implementarlo, de forma transparente al usuario.
SQL (LENGUAJE DE CONSULTA) Introducciones que permiten trabajar sobre las bases de datos hay dos formas de trabajar las consultas 1 en forma de diseño, es decir. CONSULTA: Este lenguaje consiste en sentencias muy próximas al ingles diseñadas para seleccionar registros de una o varias tablas de acuerdo con el criterio utilizado. Las sentencias de solicitud SQL pueden ser usadas en el momento del diseño en la propiedad recordsouce de un control de datos esto permitiría crear mediante programación Dynaset, Shapstmos asociados a controles de WHERE, datos los criterios SQL utilizan la palabra clave SELECT, seguida de una de estas palabras claves FROM HAVING, GROUP-BY, ORDER BY. CARACTERISTICAS DE SQL: El SQL es un lenguaje basado en el idioma ingles usa palabras tales como SELECT, FROM, WHERE, GROUP-BY, ORDER-BY, como parte del conjunto de comandos. El SQL no es un lenguaje de procedimientos es decir el usuario especifica que información necesita y no como obtenerla, en otras palabras el SQL no le pide al usuario el método de de ac acceso. SQL pr procesa 1 o más tablas a la vez. SQL pu puede se ser u ussado por un rango de usuarios que incluye al administrador de base de datos, programadores, personal administrativo y otros tipos de usuarios. SELECT : La sentencia SELECT forma el núcleo de base de datos de SQL esta sentencia sirve para seleccionar o recuperar la filas y columnas deseadas de las tablas de nuestra base de datos. La sintaxis de la sentencia SELECT consta de 5 clapsúla construida normalmente de la siguiente manera: SELECT < LISTA DE CAMPOS> FROM (WHERE < Especificación de Selección de Filas>) (GROUP BY ) (HAVING) (ORDER BY ). WHERE: Para hacer una selección desde la misma tabla bajo ciertas condiciones o con alguna restricción, se debe usar la cláusula WHERE, que corresponde al operador del Algebra Relacional llamado Restricción. Los operadores de combinación que pueden ser usados por el comando WHERE son los lógicos y los propios de SQL: OPERADORES LOGICOS: = IGUAL MAYOR >= MAYOR IGUAL < MENOR
View more...
Comments