Está en la página 1de 195

INTRODUCCION A SYBASE T-SQL

Módulo 1 Conceptos Básicos y Términos.

El lenguaje SQL. • Structured Query Languaje Es un lenguaje de alto nivel para las bases de datos relacionales. Fue desarrollado a finales de los 70‟s. A pesar de que la “Q” es de “Query” (consulta), el SQL permite no solo realizar consultas, sino recuperar datos de una base de datos, adicionar datos nuevos modificarlos existentes y realizar otras funciones. Puede ser utilizado desde una terminal en línea. Es una manera de recuperar y manipular datos de una base de datos. Puede ser utilizado en forma “Embedded SQL”, dentro de otra aplicación. Utilizado para Administración.

-

Base de Datos. • • • Una recopilación de datos que guarda relaciones entre sus elementos. Ejemplo: Vendedor de libros: Información del libro. Información del editor. Información del autor. stores

sales titles publishers

PUBS2

Stor_id Stor_name Stor_address city

authors

almacenamiento y recuperación de los datos. Store Manager Distribuidor PUBS2 sales titles publishers Stor_id Stor_name Stor_address city stores “user” authors .Sistema Administrador de Base de Datos (DBMS) • Software que facilita la definición de las estructuras de la base de datos permitiendo el acceso.

. forman una relación.Terminología. tiene un solo valor de datos. • Renglón ().Cada columna es un renglón dado.Es equivalente a un campo de un registro.Todos los renglones de una tabla tienen el mismo conjunto de columnas.Es equivalente a un registro de un archivo. . • Columna (Atributo). . o un conjunto de listas de valores.Un conjunto de renglones.Cada columna es de un solo tipo de datos. . . • Tabla (Relación). . .

.Una o más columnas con valores que son únicos dentro de la tabla y que son usados para identificar los valores de dicha tabla. .Conjunto de valores válidos para una columna en particular.Terminología. • Dominio. • Llave primaria. .

Existe exactamente un dato para cada columna en cada renglón. Nombre de columnas Pub_id 1389 0736 0877 Pub_name Algodata infosystems New Age Books Binnet & Hardley city Berkeley Boston Washington state CA MA DC Renglones Columnas . . • Modelo relacional. Ejemplo: La tabla de editores soporta la información relacionada con editores. . • Las tablas se forman de renglones y columnas.Tablas. .Una tabla soporta datos relacionados para una clase de objetos en particular.Es una base de datos relacional todos los datos están en las tablas.

.Los renglones no tienen un orden en particular.Cada renglón contiene datos relacionados a un caso de la tabla. Etc. Ej. .Cada columna contiene datos sobre un aspecto relacionado con la tabla. carácter. Columna Pub_id 1389 0736 0877 Pub_name Algodata infosystems New Age Books Binnet & Hardley city Berkeley Boston Washington state CA MA DC • Renglones.Cada columna contiene datos de un solo tipo. . • Columnas. Integer.Renglones y Columnas. string. . Pub_id 1389 0736 0877 Pub_name Algodata infosystems New Age Books Binnet & Hardley city Berkeley Boston Washington state CA MA DC Renglón .Cada columna tiene un nombre. .

Stores stor_id 7066 7067 7131 stor_name Bernum‟s News & Brews Doc-U-Mat stor_address 367 Pasadena Ave. de Columna y Renglón determinan únicamente un dato dentro de la tabla. .En cada renglón. algunas columnas o grupo de columnas únicamente identifica los renglones. 77 First st 24-A Avogadro Way city Tustin Los Gatos Remulade state CA CA WA zip 92789 96745 98014 • Cada renglón puede ser accesado por una llave primaria única.Llaves primarias. • El Nombre de Tabla.Acceso de Datos . Publishers Pub_id 1389 0736 0877 Pub_name Algodata infosystems New Age Books Binnet & Hardley city Berkeley Boston Washington state CA MA DC .

Borrar datos.Recuperación de datos. Diseñador de la Base de Datos. . .Actualización de datos. • .Creación de Tablas. • Usuario de la Base de Datos.Diseño de la base de datos. . . .Políticas del negocio y seguridad (integridad referencial). .Insertar datos. .Roles para la Base de Datos.

Roles para la Base de Datos.seguridad. .Instalación del sistema. . . • Programador de Aplicaciones de la Base de Datos.Respaldo y Recuperación. . .Diseño y escritura de formas para la interfase del usuario.Uso de “Embedding SQL” dentro del código... • Administrador del Sistema de la Base de Datos.Desempeño . .

‟577 First st. .‟News & Brews‟. city. El administrador o el diseñador del Sistema de la Base de Datos creará las tablas con el siguiente comando. state. stor_name varchar(40) not null. stor_name.‟96745‟). stor_address. zip) values („7067‟.Vista Rápida: Montando una Tabla. • Insertar los datos: insert into stores(stor_id. stor_address varchar(40) null. • Crear la Tabla.‟CA‟.‟Los gatos‟. zip char(5) null) Una vez que se creo la tabla los datos pueden ser insertados en la tabla. city varchar(20) null. state char(2) null.‟. Create table stores (stor_idchar(4) not null.

table_name.stor_name .stores. Los Gatos CA 96745 7066 Barnum‟s 567 Pasadena Ave.owner. • Recuperando Datos: select * from stores 7067 New‟s & Brews 577 First st.fred. Portlan OR 89076 • Convenciones para hacer referencia: database.stor_id Pubs.dbo.stores.column_name Ejemplo: Pubs. Tustin CA 92789 8042 Bookbeat 679 Carson st.Vista Rápida: Recuperando Datos de una Tabla.

AUTHORS BLURBS AU_PIX TITLEAUTHOR STORES SALES DISCOUNTS SALESDETAIL PUBLISHERS TITLES ROYSCHED . La Base de Datos Pubs 2 contiene once tablas todas relacionadas para la operación de un negocio ficticio de distribución de libros.La Base de Datos Pubs2.

..La Base de Datos Pubs2. Physical Data Model Proyect: Model: pubal Author: Soluciones informáticas Verdom 19/01/98 publishers pub id char(4) pub_name varchar(40) city varchar(20) state char(2) titles title_id nvarchar(6) title varchar(80) type char(12) pub_id char(4) price money advance money total_sales int notes varchar(200) pubdate datatime contract bit pub_id=pub_id discounts Discounttype varchar(40) stor_id char(4) lowqty smallint highqty smallint discount float royched title id nvarchar(6) lorange int hlrange int royalti int title_id=title_id salesdetail stor_id char(4) ord_num varchar(20) title_id nvarchar(4) qty smallint ord_num=ord_num stor_id=stor_id discount float title_id=title_id title_id=title_id titleauthor au_id nvarchar(11) title_id nvarchar(6) au_ord tinyint royaltyper int stor_id=stor_id sales Stor id char(4) foranes llave stor_id ord num varchar(20) date datatime stores stor_id=stor_id stor_id char(4) au_pix stor_name varchar(40) au_id char(11) stor_address varchar(40) pic image city varchar(20) format_type varchar(11) country varchar(12) bytesize int postalcode char(10) Pixwidth_hor char(14) psyterms varchar(12) Pixqidth_vert char(14) authors au_id nvarchar(11) au_id=au_id au_lname varchar(40) au_id=au_id au_fname varchar(20) au_id=au_id phone char(12) address varchar(40) blurbs city varchar(20) au_id nvarchar(11) state char(2) copy text country varchar(12) postalcode char(10) .

.La Base de Datos Pubs2. Tablas de Pubs2 Authors: contiene la información de los autores. Blurbs: contiene una larga descripción de los escritores en el tipo de datos text. Royshed: lista que muestra el porcentaje de regalías a pagar en cada titulo. Sales: registro de las ventas de las tiendas. Stores: contiene la información de las tiendas que venden los libros.. Discunts: contiene la variedad de descuentos a aplicar. Au_pix: contiene fotografías de los autores en manera binaria con el tipo de datos image. . Titles: contienen la información básica de cada libro. Titleauthor: tabla usada para conectar los autores con los libros que ellos escribieron. Salesdetail: registra las ventas de títulos de la tabla títulos.

Ciudad.. País. Número telefónico.. Código Postal. . Dirección.La Base de Datos Pubs2. Apellido del autor. Nombre del autor. Estado. Authors: Au_id: Au_lname: Au_fname: Phone: Address: City: State: Country: Postalcode: Número único de seguro social del autor.

Contract: 0=no existe contrato entre el autor y el distribuidor. Advance: Cantidad que se ha dado al autor como anticipo. Pub_id: Código del editor de este libro.. Price: Precio por libro.La Base de Datos Pubs2. Pubdate: Fecha de publicación. psychology). Titles: Title_id: Código único que identifica a un título. Type: Tipo de libro (business.. 1=existe contrato entre el autor y el distribuidor. Title: Nombre del libro. Total-sales: Número de libros vendidos a las tiendas. . Notes: Comentarios adicionales.

.. Royaltyper:Porcentaje de regalías que escribe el autor (nota: un libro puede estar escrito por más de un autor). Titleauthor: Au_id: Código del autor que escribió este libro. Valor mínimo por número de libros vendidos. Title_id: Código del libro escrito por este autor. Regalías para este rengo de libros vendidos. Valor máximo por número de libros vendidos. Au_ord: Orden del autor por regalías.La Base de Datos Pubs2. Royshed: Title_id: Lorange: Hirange: Royalty: Código del libro para los cuales se aplican estos rangos de regalías. .

Código del libro que fue ordenado.La Base de Datos Pubs2. . Ord_num: Código que identifica la orden.. Sales: Stor_id: Código de la tienda que ordeno los libros. Salesdetail: Stor_id: Ord_num: Title_id: Qty: Discount: Código de la tienda que ordeno los libros. Número de libros ordenados para este titulo. Código que identifica la orden. Date: Fecha en la que se ordeno. Porcentaje de descuento..

La Base de Datos Pubs2. Stores: Stor_id: Código único que identifica a una tienda. Discounts: Discountype: Stor_id: Lowqty: Highqty: Discount: Tipo de descuento (se manejan 4 tipos). Stor_name: Nombre de la tienda. State: Estado. . Payterms: Tiempo en el que se espera el pago (Ej.. Stor_address: Dirección. Código de la tienda a la que se le aplica el descuento. Porcentaje de descuento. Mínimo número de libros para conseguir el descuento. City: Ciudad. Net 60). Postalcode: Código Postal. Country: País. Máximo número de libros para conseguir el descuento..

Resolución vertical de la imagen. Resolución horizontal de la imagen. Código del autor. .La Base de Datos Pubs2. Au_pix: Au_id: Pic: Format_type: Bytesize: Pixwidth_hor: Pixwidth_ver: Blurbs: Au_id: Copy: Código del autor al que pertenece la imagen. Tamaño de la imagen. Descripción de las características del autor. Información binaria de la imagen del autor.. Tipo del formato de la imagen del autor..

.Sybase Módulo 2 Recuperación Básica De Datos I.

. • Usada para recuperara datos de una Base de Datos.Recuperación simple – Select / From. SELECT Cláusula que especifica las columnas a recuperar. Select*from stores . FROM Cláusula que especifica la tabla o tablas de las que se desean recuperar los datos.Despliega todos los datos de la tabla de stores.

SELECT store_name -Despliega solo los datos de la columna stor_name.. FROM stores .Select / From.. • Ejemplo de una columna.

. • Ejemplo para más de una columna. state -Despliega las columnas: FROM stores stor_name. state de la tabla de stores. SELECT store_name. . city.. city.Select / From.

determina el orden de las columnas en el resultado. y state de la tabla de stores. SELECT city. stor_name. • El orden de los nombres de las columnas en el estatuto select. stor_name. . y state -Despliega las columnas: FROM stores city.Reordenando Columnas.

• La palabra reservada DISTINCT elimina renglones duplicados del resultado. Sintaxis: select [distinct] lista_de_selects from lista_de_tablas Ejemplo de estatuto sin usar DISTINCT SELECT state FROM stores -Despliega los estados de la tabla de stores. .Eliminando Duplicados.

.Eliminando Duplicados.. . Ejemplo de estatuto usando DISTINCT SELECT DISTINCT state -Despliega solo una ocurrencia de cada FROM stores estado de la tabla de stores.

Sintaxis Simplificada: SELECT lista_columnas. . • La cláusula WHERE determina exactamente cuales renglones serán recuperados. WHERE condiciones_de_búsqueda.Recuperación Calificada – Select/From/Where.>. - - . . . IN y BETWEEN. FROM lista_tablas.Operadores de comparación (=. OR). .Combinaciones acerca de (AND. Calificadores de la cláusula WHERE. .Listas (IN and NOT IN).Valores no conocidos (IS NULL and IS NOT NULL). . El operador NOT puede negar cualquier expresión booleana y palabra reservada tales como el LIKE. NULL.<).Empate de caracteres (LIKE and NOT LIKE).Rangos (BETWEEN and NOT BETWEEN).

Operadores de Comparación – Select/From/Where. OPERADOR = > < >= <= != !> !< !< es equivalente a >= !> es equivalente a <= SIGNIFICADO Igual que Mayor que Menor que Mayor o igual que Menor o igual que No igual que No mayor que No menor que - . - Operadores de comparación.

Where state = ‟CA‟ Las letras minúsculas son mayores que la mayúsculas... - .Operadores de Comparación – Select/From/Where. < significa antes de y > significa después de Use comillas dobles o sencillas alrededor de todos los datos que sean CHAR. VARCHAR y DATETIME. las letras mayúsculas son mayores que los números. Ej. - Al comparar fechas.

Recupera datos. city. .Operadores de Comparación – Select/From/Where. . SELECT stor_name..de stores . Ejemplo de cláusula con el operador = (igual que).que están en California.. state FROM stores WHERE state = “CA” .

state FROM stores WHERE state != “CA” . SELECT stor_name.. .Recupera datos. Ejemplo de cláusula con el operador != (no igual que). .Operadores de Comparación – Select/From/Where.de stores . city.que no están localizados en California..

WHERE store_id > “7066” . Ejemplo de cláusula con el operador > (mayor que).. . FROM stores .Operadores de Comparación – Select/From/Where.Para stores. SELECT stor_id. stor_name . stor_name.Recupera los datos de stor_id.Que tiene un store_id mayor que 7066..

Para stores que están alfabéticamente. WHERE city <“Remulade” – Ordenadas antes de Remulade.. stor_name . FROM stores . SELECT city..Operadores de Comparación – Select/From/Where. - Ejemplo de cláusula con el operador < (menor que).Recupera el stor_name y city. .

. Ejemplo de estatuto usando BETWEEN SELECT stor_id. FROM stores .de los cuales su stor_id está entre WHERE stor_id BETWEEN “7067” and ”8000”. state – Despliega los datos de la tabla. city. stor_name. La palabra reservada BETWEEN es usada para especificar un rango. .7067 y 8000 inclusive. Valores tanto de mayúsculas como las minúsculas son incluidas en la búsqueda.Rangos – Select/From/Where.

Rangos – Select/From/Where. La palabra reservada NOT BETWEEN excluye tanto los valores de mayúsculas como de minúsculas que están especificadas en la búsqueda.. – Encuentra aquellas tiendas en las .y mayor que 8000. state FROM stores WHERE. Ejemplo de estatuto usando NOT BETWEEN SELECT stor_id. stor_id NOT BETWEEN “7067” and ”8000”.que su stor_id es menor que 7067 . stor_name. city. ..

Caracteres de Empate – Select/From/Where. • La palabra reservada LIKE. Usada para seleccionar los renglones de una tabla en los cuales empaten porciones especificas de un string de caracteres. Solamente se usan con datos tipo char, varchar, datetime.

-

Se pueden usar comodines.
Significado de los comodines: % cualquier string de cero o más caracteres. - cualquier caracter sencillo. [] cualquier caracter sencillo dentro de un rango especificado. [^] cualquier caracter sencillo fuera de un rango especificado. Encierre los comodines y el string de caracteres en comillas sencillas.

-

Caracteres de empate – Select/From/Where... Ejemplo de estatuto usando la palabra reservada LIKE.

SELECT stor_name FROM stores

- Recupera los datos - de las tiendas en las cuales su stor_name WHERE stor_name LIKE „B%‟ – inicie con una letra B.

Caracteres de empate – Select/From/Where... Ejemplo de estatuto usando la palabra reservada NOT LIKE.

SELECT stor_name - Recupera los datos de las tiendas FROM stores - en las cuales su stor_name WHERE stor_name NOT LIKE „B%‟ - no inicie con una letra B.

stor_id de cuatro posiciones. de las cuales WHERE stor_id LIKE ‟70_‟ .Caracteres de empate – Select/From/Where.las 2 primeras tienen un valor de 70.Recupera las tiendas que tienen un FROM stores . SELECT stor_id. stor_name . . Ejemplo de estatuto usando valores numéricos específicos dentro de un carácter...

. SELECT stor_name .stor_name empiece con letras mayúsculas WHERE stor_name LIKE ‟[D-F]%‟ – entre la D y F incluyéndolas..Caracteres de Empate – Select/From/Where. .Recupera las tiendas de las cuales su FROM stores . Ejemplo de estatuto usando un rango de caracteres.

.Recupera las tiendas de las cuales su FROM stores . Ejemplo de estatuto con valores fuera de un rango especificado de caracteres. SELECT stor_name .Caracteres de Empate – Select/From/Where..stor_name no empiece con letras WHERE stor_name LIKE ‟[^D-F]%‟ -mayúsculas entre la D y F incluyéndolas. .

Caracteres de Empate – Select/From/Where.Recupera las tiendas de las cuales su FROM stores .. ..G-Z]%‟ -mayúsculas entre la D y F incluyéndolas.stor_name no empiece con letras WHERE stor_name LIKE ‟[A-C. Otra manera de obtener todos los nombres de las tiendas en los que su letra inicial mayúscula no este entre D y F es la siguiente: SELECT stor_name . Ejemplo usando dos rangos.

Permite obtener los renglones de una tabla cuyos valores empaten con los seleccionados en la lista de valores.. La palabra reservada IN . .Recupera los renglones en los que la FROM stores . SELECT stor_name. state .Listas – Select/From/Where. city.´WA´) -Washington..tienda esta en California y WHERE state IN (´CA´.

Ejemplo usando NOT IN SELECT stor_name. .´WA´) ..los que la tienda no esta en WHERE state NOT IN (´CA´. state . city.Recupera aquellos renglones en los FROM stores .Listas – Select/From/Where.California y Washington..

Es inclusive. city. SELECT stor_name. state .los que las tiendas se localicen en WHERE state=´CA´AND city=´Fremont – Fremont..Recupera aquellos renglones en los FROM stores . .. Devuelve resultados solo cuando todas las condiciones son verdaderas. California. AND Une dos o más condiciones.Condiciones de Unión – Select/From/Where.

OR Une dos o más condiciones. SELECT stor_name. state . city. Devuelve resultados cuando cualquiera de las condiciones sean verdaderas..que las tiendas están en el estado WHERE state=´CA´OR city=´Portland .California o en la ciudad de Portland. ..Condiciones de Unión – Select/From/Where.Recupera aquellos renglones en los FROM stores .

.Condiciones de Unión – Select/From/Where. esto cambia el significado de la búsqueda. .. Cuando se usa más de un operador lógico el orden en el cual se realiza la evaluación es el siguiente: NOT AND OR Para forzar el orden de la evaluación se pueden utilizar paréntesis.

de libro de tipo business así como los de WHERE type=´business .advance .Condiciones de Unión – Select/From/Where.type.tipo psychology los cuales tengan un OR type=´Psychology´ .Recupera aquellos renglones en los títulos FROM titles ... SELECT title_id.anticipo superior a los $5500 AND advance >5500 . Ejemplo de estatuto sin usar paréntesis.

advance ..títulos de libro son de tipo business y de WHERE (type=´business´ OR type=´Psychology´) AND advance >5500 .Recupera aquellos renglones en los que los FROM titles . Ejemplo de estatuto AND y OR usando paréntesis.psychology y que han tenido un anticipo ..superior a los $5500 = .Condiciones de Unión – Select/From/Where.type. SELECT title_id.

Sybase Modulo 3 Recuperacion Básica de Datos II .

. Sintaxis: select titulo _columna=nombre _columna[...Renombrando columnas.] Ejemplo: SELECT numero_seguro_social=au_id. Permite al usuario proporcionar otro nombre para que sea usado en la salida del select en lugar de la columna.apellido_paterno=au_lname FROM authors .

Permite agregar string de caracteres en cada uno de los renglones que se obtienen en la búsqueda.Strings de caracteres en los resultados de la busqueda. Ejemplo: SELECT „El nombre de la tienda es:‟. stor_name FROM stores WHERE stor_id=„7067‟ .

Strings de caracteres en los resultados de la busqueda.. total_sales. ‟para el libro‟. title_id FROM titles WHERE type=„psychology‟ . Ejemplo: SELECT „Ventas totales‟..

.Strings de caracteres en los resultados de la busqueda. Ejemplo: SELECT „El nombre del editor #‟.pub_name FROM publishers . pub_id.. ‟es:‟.

Operdores aritméticos. . SÍMBOLO + * / % OPERACIÓN SUMA RESTA MULTIPLICACIÓN DIVISIÓN MODULO .Puede ser usados con cualquier columna numérica. .Se utiliza en cualquier estatuto que permita expresiones.Expresiones numéricas.El módulo no puede ser usado en columnas con moneda. . .

Ejemplos de suma: select advance.. price.advance+price.title_id from titles where type=„business‟ .Expresiones numéricas. ..

Expresiones numéricas.title_id from titles where type=„business‟ .. price.Ejemplos de resta: select advance.. .advance-price.

Expresiones numéricas. ... revenue=price*total_sales from titles where type=„business‟ .Ejemplos de multiplicación: select title.

Ejemplos de multiplicación usada en el Where: select title... .Expresiones numéricas. revenue=price*total_sales from titles where price*total_sales>80000 .

revenue=price*total_sales from titles where price*total_sales>80000 and type=„business‟ . .Ejemplos de multiplicación usando condiciones múltiples: select title...Expresiones numéricas.

. month_sales=total_sales/12 from titles where type=„business‟ ..Ejemplos de división: select title.Expresiones numéricas..

.Ejemplos de modulo (Encuentra los números impares): select total_sales.. .Expresiones numéricas. title_id from titles where total_sales % 2=1 . total_sales % 2.

Ejemplo (error. expresión) . .Conversión de tipos de datos a Expresiones numéricas.Sintaxis: convert (tipos_de datos. . por tipos de datos incompatibles): select stor_id * 10 from stores Implicit Convertion from datatype CHAR to INT is not . .sllowed. Use the CONVERT function to sum the query.La función CONVERT: * Convierte expresiones de un tipo de datos a otro * Se usa en la lista del Select y en la cláusula Where * No puede convertir a entero una expresión de caracteres que incluya letras.

..stor_id)* 10 from stores .Ejemplo: select convert (int.Conversión de tipos de datos a Expresiones numéricas. .

Conversión de tipos de datos a Expresiones numéricas. .Ejemplo(sin usar $): select price * 1...10. . se puede anteponer el signo $ a dichos tipos de datos y así forzar el resultado de la columna.title from titles where type=„business‟ . int.Con los tipos de datos Money y otros tipos tales cmo float.

Ejemplo (usando $): select price * $ 1.10..Conversión de tipos de datos a Expresiones numéricas. title from titles where type=„business‟ .. .

. . * Los valores nulos no implican que su valor sea de cero o blancos. .Algunas columnas son definidas para permitir valores nulos.Un valor nulo nunca es igual a otro valor nulo. . no hay un valor explicito asignado. * IS NULL(and = NULL) puede ser usado para seleccionar columnas que contengan valores nulos.Valores nulos.Los valores nulos impiden que se den valores desconocidos.

Ejemplo: select title.Valores nulos. price from titles where type=„popular_comp‟ and price = null .. . price from titles where type=„popular_comp‟ and price is null otra manera sería: select title..

Ejemplo: select title_id.Valores nulos... . advance from titles where advance is not null .

..Valores nulos. advance from titles where advance <5000 .Ejemplo: select title_id. .

. advance from titles where advance <5000 or advance is null .Ejemplo: select title_id. ..Valores nulos.

Valores nulos. advance/price from titles where type not in(„business‟. .Operaciones entre columnas que tienen valores nulos .‟trad_cook‟) .Ejemplo: select title_id.‟psychology‟. price... advance.

.. * Cuando se usa order by..]] .Select /Order by.Sintaxis: select [distinct] lista_columnas from nombre_tabla [.El estatuto Order by ordena el resultado de la busqueda (por default en forma ascendente).. . . los nulos se listan primero... * Las columnas que se utilizan en la cláusula order by no necesariamente van incluidas en la lista del select.] [where condiciones_busqueda] [order by {nombre_columna/expresión}[asc|desc][.

.Ejemplo: select stor_name. .. state from stores order by stor_name .Select /Order by.

... state from stores order by state. stor_name .Ejemplo (con más de una columna): select stor_name.Select /Order by.

Select /Order by... - Ejemplo (una columna ascendente y otra descendente): select stor_name, state from stores order by state, stor_name desc

Select /Order by. - Ejemplo (ordenada en base a una columna resultante): select ((total_sales/12)*1.10), title_id – pronostica cuantos libros se from titles where type=„Psychology‟ – necesitan vender en promedio order by ((total_sales/12)*1.10) - cada mes el próximo año, trabajando con un incremento del 10% en las ventas.

Select /Order by.
- Ejemplo (sin incluir un pubdate en la lista del select): Select title, price from titles Where pub_id=„0736‟ Order by pubdate

Ejemplo (mostrando los nulos primero): Select title_id.Select /Order by. . price from titles where type=„popular_comp‟ Order by price . type.

Sybase Modulo 4 Organizando Resultados y Resumiendo Datos .

- FUNCIONES PARA AGRUPAR: Funcion SUM AVG MIN MAX COUNT(*) COUNT([DISTINCT] Nombre_columna) Valor que regresa TOTAL VALOR PROMEDIO VALOR MINIMO VALOR MAXIMO NUMERO DE RENGLONES NUMERO DE VALORES UNICOS .Funciones para Agrupar.

Estas funciones ignoran valores nulos (excepto el count(*)).Funciones para Agrupar.. SUM y AVG solo trabajan con valores numéricos. No puede usarse en la cláusula Where.Sintaxis: select nombre_función ([distinct] expresión) from nombre_de_la_tabla [where.condiciones] . Se pueden aplicar en todos los renglones de una tabla o subconjunto de tabla. ... Regresan solo un renglón (si no es usada una cláusula Group by)..

Count.Funciones para Agrupar . La función count sumariza el número de renglones que cumplen con la condiciónque se especifica. Ejemplo: (número de renglones recuperados): select count(*) from titles .

Ejemplo (número de renglones en una columna que no tengan valor nulo): select count(advance) from titles ..Funciones para Agrupar – Count..

Ejemplo: select max(price) from titles .Funciones para Agrupar – Max/Min. La función Max encuentra el valor más grande dentro de una selección.

Ejemplo: select min(price) from titles . La función Min encuentra el valor más pequeño dentro de una selección.Funciones para Agrupar – Max/Min...

Funciones para Agrupar – Sum/Avg. Ejemplo: select sum(total_sales) from titles where type=„psychology‟ . La función Sum encuentra la cantidad total de los valores especificados en una columna.

La función Avg encuentra el valor promedio de los datos especificados en una columna.. Ejemplo: select avg(advance) from titles .Funciones para Agrupar – Sum/Avg..

Ejemplo: select min(advance).Funciones para Agrupar. Se puede utilizar más de una función para agrupar dentro de una cláusula select. max(advance) from titles ...

Funciones para Agrupar – Palabra Reservada Distinct.Uso opcional con las funciones sum. .Permitida con la función count(nombre_columna). no con expresiones aritméticas.Se usa solamente con nombres de columnas.avg y count. . Compare: select avg(distinct price) select avg(price) from titles from titles where type=„business‟ where type=„business‟ . La palabra reservada DISTINCT: . max y count(*). .No se puede utilizar con las funciones min.

Funciones para Agrupar – Palabra Reservada Distinct. ¿Cuántos tipos diferentes de libros podemos manejar? select count(distinct type) from titles .

Sintaxis: Isnull(expresión. - Ejemplo: select avg(price) from titles .Isnull.Tratando con Valores nulos .valor). Obteniendo valores nulos para ser contados en las funciones para agrupar.

que aún no se les había asignado.$9..Tratando con Valores nulos – Isnull.98 a los libros from titles .98)) .. . Ejemplo: select avg(Isnull(price.Se da el precio de $9.

Ejemplo: select price *2 from titles select isnull(price..Tratando con Valores nulos – Isnull. 0)*2 from titles ..

.]] condiciones_búsqueda] expresiones_libres _de agrupación[.. * Es usada normalmente con una función para agrupar en la lista de selects.Select/Group by . .]] columna /número_en_la_lista_de_selects /expresión [asc|desc] [.....El estatuto Group by divide los datos en grupos.. .Sintaxis: select [distinct] [from [where [group by [all] [order by lista selects tabla[.]] . * Todos los valores nulos en los Group by de columna son tratados como un solo grupo.. .

avg(price) from titles . parecerá que todos los tipos tienen el mismo precio). Ejemplo (uso incorrecto. select type.Select/Group by...

. avg(price) from titles group by type .Select/Group by.. Ejemplo (uso correcto). select type.

avg(price) from titles group by type order by avg(price) . Ejemplo (usando order by).. select type..Select/Group by.

sum(qty) . group by title_id .. Ejemplo: select title_id.cuántos libros han sido vendidos from salesdetail .para cada titulo.Select/Group by..

sum(total_sales) from titles group by „ID#:‟+title_id . Ejemplo: - select „ID#‟+title_id. La agrupación puede hacerse por un nombre de columna o por cualquier expresión que no contenga funciones para agrupación por el títulode columna o un alias..Select/Group by..

No es necesario que la lista de select contenga solamente valores fijos o una función de agrupación para cada grupo.. Ejemplo: select title_id.Select/Group by..sum(total_sales) from titles group by title_id .

..Select/Group by. Ejemplo (usando funciones de agrupación anidadas): select avg(sum(qty)) from salesdetail group by title_id .Despliega el promedio total de .la cantidad vendida de todos .los libros..

Sybase Modulo 5 Joins .

. ....title_id y qty ordenados para cada libro que se vende.. .. ... ...Joins. . 50 qty 75 ........... PC8888 Title_id PS2091 PS2091 PS2091 10 20 Results stor_id 7066 7066 stor_name Bernum‟s Bernum‟s qty 75 50 Title_id PS2091 PC8888 7067 News & Brews 10 PS2091 . Ejemplo: Despliegue stor_id.... * La operación Join es el sello del modelo relacional. .. - Salesdetail stor_id 7066 7067 7131 8042 7066 . stor_name Bernum‟s News & Brews Doc-U-Mat Bookbest .... ..Permite recuperar datos de dos o más tablas... Stores stor_id 7066 7067 7131 8042 . ... * Este combina tablas buscando valores que empaten en los renglones de cada tabla.. . .. stor_name....... ..

Cuales Tablas Usar. Ejemplo: Despliegue las columnas stor_name. STORES stor_id stor_name stor_address city state country postalcode payterms SALESDETAIL 1 stor_id stor_id ord_num title_id qty discount N stor_id . Localice en el diagrama entidad-relación las tablas a usar. title_id y qty ordenadas para cada venta. - Identifica cuales columnas necesita ver en el resultado. Siga las líneas de relación para encontrar las uniones necesarias para conectar las tablas.

La operación Join... . STORES stor_id stor_name stor_address city state zip TITLES title_id title type pub_id price advance royalty yid_sales notes 1 stor_id SALESDETAIL stor_id ord_num stor_id date qty N payterms title_id N pub_id pub_id 1 PUBLISHERS pub_id pub_name city state .Cuales Tablas Usar.

. ...... ...Cuales Tablas Usar... titles title_id PS7777 PB3333 BU1111 MC2222 TC7777 TC4023 BU7832 PS1372 PC9999 title .. pubdate Publishers Pub_id Pub_name 1389 Algodata infosystems 0736 New Age Books 0877 Binnet & Hardley city Berkeley Boston Washington state CA MA DC ... . ......... . . .... type pub_id 0736 0736 1389 0877 0877 0877 1389 0877 1389 price advance royalty yid_sales notes ...... ... . . Join........ . . . . ..

pero si deben ser de tipos que el SQL Server puede convertir automáticamente. * (char. * Las columnas no necesariamente deben ser del mismo tipo. SELECT: El nombre de la columna debe ser precedido por el nombre de la tabla en caso de existir ambigüedad en el nombre.La Operación Join. esto es cuando se tiene más de una columna especificada en el estatuto from con el mismo nombre. y deben ser iguales en esencia. indica al SQL Server que se trata de una operación Join. * Se puede hacer referencia a tablas que estén dentro de una misma base de datos o una base de datos diferente. tinyint. * (int. varchar and datatime). WHERE: Las columnas que son comparadas deben pertenecer al mismo dominio ya sea numérico o alfanumérico. El Join es una operación multitabla. - - . decimal or float). FROM: Dos o más tablas enumeradas en el estatuto from. smallint.

column_name..La Operación Join. [. Las columnas en la condición Join no es necesario que estén en la cláusula Select. - Sintaxis: select [table]...] [where condiciones_búsqueda] ... - Las columnas con valores nulos no pueden hacer un Join. [..] from {table}. {table}.

. 0877 PB1372 Computer Phobic ..title_id From publishers. titles Select pub_name....Uniendo Tablas. 0877 BU1032 The Busy Executive‟s Database Guide 1389 BU1111 Cooking with Computers...----------------------------------------------------------------PB2106 New Age Books 0736 PB2091 Is Anger the Enemy? 0736 BU2075 You Can Combat Stress! 0736 PB7777 Emotional Security: A New Algorithm 0736 PB3333 Prolonged Dats.pub_id.. titles Where publishers. 0736 TC7777 Sushi Anyone? 0877 MC3026 The Psychology of . 1389 BU7832 Straight Talk About Computers 1389 publishers pub_id --------0736 0877 1389 pub_name ------------New Age Books Binnet & Hardley Algodata infosystems . 0877 MC3021 The Gounnet Microwave 0877 MC2222 Slitcon Valley 0877 TC3218 Onions Leeks. Titles.. publishers.pub_id=titles-pub_id title_id title pub_id --------..

Esta columna se obtiene de la tabla Publishers Resultado del Join pub_name ------------------------------New Age Books New Age Books New Age Books New Age Books New Age Books Binnet & Hardley Binnet & Hardley Binnet & Hardley Binnet & Hardley Binnet & Hardley Binnet & Hardley Binnet & Hardley Algodata infosystems Algodata infosystems Algodata infosystems Algodata infosystems Algodata infosystems Algodata infosystems pub_id --------0736 0736 0736 0736 0736 0877 0877 0877 0877 0877 0877 0877 1389 1389 1389 1389 1389 1389 title_id ---------BU2075 PS2091 PB2106 PB3333 PB7777 MC2222 MC3021 MC3026 PS1372 TC3216 TC4203 TC7777 BU1032 BU1111 BU7832 PC1036 PC8888 PC9999 Esta columna se obtiene de la tabla Titles .Uniendo Tablas...

Ejecute una query que contenga: en la lista del select todas las columnas. en el from las tablas authors y publishers y no contengan ninguna condición where.. Ejemplo:El producto cartesiano de la tabla de authors y la de publishers es de 69. ¿Cómo se procesan los Joins? Conceptualmente hablando el primer paso para formar un Join es el de formar el producto cartesiano de las tablas – todas las posibles combinaciones de los renglones de cada tabla.Joins.. 23 autores multiplicados por tres editores. • • . • El número de renglones es un producto Cartesiano de dos tablas es igual al número de renglones de la primera tabla multiplicado por el número de renglones de la segunda.

Joins.. .. El resultado que se obtiene carece de sentido.

stores -ordena de cada libro.title_id.stor_id=stores.stor_id -nombre e identificación de la tienda. . el título where salesdetail.stor_name -Despliegue la cantidad que se tiene from salesdetail.Joins Basados en Igualdades. Ejemplo: select stores.stor_id.qty. Basados en una igualdad entre los valores en las columnas especificadas.

stor_id. group by salesdetail.stor_id. sales detail.. select stor_name..stor_id -ordenados cada tienda. Ejemplo: (cláusulas adicionales: usando funciones para agrupar y group by).stor_id=stores. stores -cuantos libros tienen where salesdetail.Joins Basados en Igualdades.tot_ordenados=sum(qty) from salesdetail.stor_name .

title_id.Joins Basados en Igualdades.title_id=salesdetail. Ejemplo: (cláusulas adicionales: ordenando por una columna calculada).para cada tipo de libro select titles.venta_total=price*qty from titles. salesdetail where titles..price. .qty.Cuál es la venta total .title_id order by price*qty ..

Sintaxis: select lista_de_selects from nombre_tabla alias_1. Funciones que proporcionan una forma abreviada de hacer referencia a las tablas dentro de un solo estatuto de SQL.title_id from titles t.title_id=ta.title_id and au_id=‟409-56-7008‟ .nombre_columna .Aliases. nombre_tabla alias2 where alias1. Nombre_columna=alias2. titleauthor ta where t.Ejemplo: select t.

stores where salesdetail.stor_name from salesdetail.qty.stor_id.Otras Condiciones en los Joins. select stores.title_id. Ejemplo:(condición adicional).stor_id=stores.stor_id and qty<40 .

publishers.au_lname.cuáles autores viven es estados que where authors.au_fname. > Mayor que < Menor que >= Mayor o igual que <= Menor o igual que != No igual que !> Menor o igual que !< Mayor o igual que .state. Operadores de comparación usados.state from publishers.Joins que No se Basan en Igualdades.que el estado en el cual se localiza el editor „New Age Books‟ .state>publishers.Ejemplo: select pub_name. authors .alfabéticamente esten después and pub_name=„New Age Books‟ .authors.state .

Joins que No se Basan en Igualdades.. .. Resultado.

au_fname.city .city from authors au1.au_lname.au_fname=„Livia‟ and au1. au1. authors au2 where au2.city=au2.au1.Self . * Une renglones de una tabla con otros renglones de la misma tabla o bien con ellos mismos. Ejemplo: - select au1.Joins. Une una tabla con ella misma.au_lname=„Karsen‟ and au2. Pueden usarse más de dos columnas para especificar las condiciones del Join.

Joins. Resultado.Self . ...

.......... Ringer Albert Salt Lake City au1 au_lname au_fname city ---------------------------------------------White Johnson Menlo Park Green Marjorie Oakland Carson Chery! Berkeley O‟Leary Michael San Jose Straight Dick Oakland Smith Meender Lawrence Bennet Abraham Berkeley Dull Ann Palo Alto DeFrance Michel Gary Stringer Dirk Oakland Karaen Livia Oakland . ..Joins....Self ... ...... ..... Ringer Albert Salt Lake City . authors au_lname au_fname city ---------------------------------------------White Johnson Menlo Park Green Marjorie Oakland Carson Chery! Berkeley O‟Leary Michael San Jose Straight Dick Oakland Smith Meender Lawrence Bennet Abraham Berkeley Dull Ann Palo Alto DeFrance Michel Gary Stringer Dirk Oakland Karaen Livia Oakland ... Ringer Albert Salt Lake City au2 au_lname au_fname city --------------------------------------------White Johnson Menlo Park Green Marjorie Oakland Carson Chery! Berkeley O‟Leary Michael San Jose Straight Dick Oakland Smith Meender Lawrence Bennet Abraham Berkeley Dull Ann Palo Alto DeFrance Michel Gary Stringer Dirk Oakland Karaen Livia Oakland ...

au_lname . ¿Hay algunos autores que tengan el mismo apellido? Ejemplo (Self-Join): select a1.au_lname. authors a2 where a1.Self – Joins y Not-Equal Joins.au_fname from authors a1.au_lname=a2.a1.

au_id . authors a2 where a1.. .Ejemplo (Not-Equal Join): select a1.a1.au_fname from authors a1.au_lname..au_id!=a2.Self – Joins y Not-Equal Joins.

authors a2 where a1.au_id!=a2.a1.Ejemplo (forma correcta): select a1. . * Son usadas dos columnas en la condición Join. El Not-Equal Join es usualmente usado con un Self-Join.au_lname and a1.au_id .au_lname=a2..au_lname..au_fname from authors a1.Self – Joins y Not-Equal Joins.

.. au1 au_lname Karsen Green Dull Hunter Locksle Ringer Smith Bennet Ringer au_lname Karsen Green Dull Hunter Locksle Ringer Smith Bennet Ringer au_lname Karsen Green Dull Hunter Locksle Ringer Smith Bennet Ringer au2 au_lname Karsen Green Dull Hunter Locksle Ringer Smith Bennet Ringer au_lname Karsen Green Dull Hunter Locksle Ringer Smith Bennet Ringer au_lname Karsen Green Dull Hunter Locksle Ringer Smith Bennet Ringer .Self – Joins y Not-Equal Joins.

t1. titles t2 -el mismo precio.price -Despliega los libros que tienen from titles t1. where t1.price .title_id order by t1...price and t1.Self – Joins y Not-Equal Joins.price=t2.title_id!=t2.title_id. - Ejemplo (Self Join and Not-Equal Join) select distinct t1.

Ejemplo (Self Join and Not-Equal Join) select distinct s1.stor_id!=s2. salesdetail s2 .title_id=s2.Cuáles libros fueron vendidos where s1. ..title_id from salesdetail s1.stor_id -en más de una tienda.Self – Joins y Not-Equal Joins..title_id and s1.

titleauthor.au_fname.su title_id. and titleauthor.nombre del autor.title-id=titles. .title_id . title y el where authors.title_id.au_id . La cláusula from deberá incluir todas las tablas involucradas.Join con más de dos Tablas.titles.Ejemplo: select au_lname.au_id=titleauthor.title -despliega para cada libro from authors. No es necesario que se despliegue una columna de cada una de las tablas que intervienen en el Join. La cláusula where deberá incluir las condiciones de unión suficientes para mantener las tablas encadenadas. titles .

... .Join con más de dos Tablas... .. .. . . Authors au_id 409-56-7008 213-46-8915 238-95-7706 au_lname Bennet Green Carson au_fname Abraham Marjorie Chery! .. titleauthor au_id 409-56-7008 213-46-8915 238-95-7706 title_id BU1032 BU1032 PC1035 Titles title_id BU1032 PC1035 title The Busy Executive‟s But it User Friendly .......

.Join con más de dos Tablas.. Resultados: .

disponible.title_id=titles.title_id .stor_id .. Ejemplo (tres tablas – dos condiciones): - select stor_name.title . titles . and salesdetail.Join con más de dos Tablas..tiendas en las que se encuentra where stores.stor_id=salesdetail. Cuando se tiene un Join de n tablas es necesario tener por lo menos n-1 condiciones para que permitan eliminar el producto cartesiano. las from stores. salesdetail.Despliega para cada libro.

- Ejemplo (tres tablas .Join con más de dos Tablas.dos condiciones): TITLES title_id title type pub_id price advance royalty yid_sales notes pubdate SALES stor_id ord_num date qty payterms title_id STORES stor_id stor_name stor_address city state zip ...

.. Resultado: .Join con más de dos Tablas.

Sybase Modulo 6 Subqueries .

1.Ejemplo introductorio (Subqueries). Encuentra el pub_id para New Age Books select pub_id from publishers where pub_name=„New Age Books‟ . ¿Cuáles libros son publicados por New Age Books? * Usando dos estatutos select.

Ejemplo introductorio... ¿Cuáles libros son publicados por New Age Books? * Usando dos estatutos select. 2. Encuentra los libros asociados con el pub_id select title from titles where pub_id=„0736‟ .

.. select title from titles where pub_id= (select pub_id from publishers where pub_name=„New Age Books‟) .Ejemplo introductorio. * Usando el estatuto select anidado.

pub_id and publishers.Ejemplo introductorio. * Usando el estatuto Join.pub_name=„New Age Books‟ . publishers where titles. select title from titles.pub_id=publishers...

La subquery (select anidado) se resuelve y el resultado es sustituido dentro de la query externa. esta debe ser compatible con la columna a la que se hace referencia en la lista de selects de la subquery para que se pueda efectuar el join. - - - . Si la cláusula where de la query externa incluye un nombre de columna. La lista de selects de una subquery incluida dentro de una comparación. insert o delete.Subqueries. Una subquery es un estatuto select. update. usado como una expresión. como parte de otro estatuto select. El estatuto select de una subquery debe ir entre paréntesis. En las subquerys no se pueden incluir ni el order by ni el compute. puede incluir una sola expresión o nombre de columna y la subquery debe regresar un solo valor.

]] [where condiciones_busqueda]= (Select lista..]] [.Subqueries....... Sintaxis: select select_list [from (tabla) [..] [compute agrupar(columna)[....]] ...selects_subquery [from (tabla) [..]columna |número_en_la_lista_de_selects |expresiones}[asc|desc][........] [where condiciones_busqueda] [group by expresiones-para_agrupar [.]] [having condiciones_busqueda]) [group by expresiones_para_agrupar[.] [by columna [.]] [having condiciones_búsqueda] [order by {{tabla}......

. - . * La cláusula where o having de un estatuto select. * Realiza algunas tareas que de otra manera serian imposibles. el valor de más de una columna pudiera ser que no fuera devuelto.Algunas veces resultan más fácil de entender que un join que realiza la misma búsqueda. insert. Razones para usar subquery: * Muchos joins pueden resolverse con una subquery. * La lista de selects de la subquery puede incluir solo una columna (excepto para la subquery exists). update o delate puede contener una subquery. * La palabra reservada distinct no puede ser usada con subqueries que incluya la cláusula group by. Subqueries – Restricciones. .Subqueries. * Solo se puede desplegar las columnas de la lista de selects del estatuto más externo..

Cuál libro escribió Blotchet-Halls from titles where title_id=(select title_id from titleauthor where au_id=(select au_id from authors where au_lname=„Blotchet-Halls‟)) . Una subquery puede contener una o más subqueries.No hay un nivel máximo para anidar. . Ejemplo (dos niveles): select title .Anidaciones Múltiples.

.Anidaciones Múltiples.. Resultado: .

where pub_id=(select pub_id from titles where price=(select max(price) from titles)) .libro más caro. pub_id .Anidaciones Múltiples.Cuál editor imprime el from publishers .. Ejemplo (dos niveles): select pub_name..

Subqueries que devuelven varios renglones.]propietario]{tabla}[.. La subqueries que se usan con in y not in.Cuáles editores han where pub_id in (select pub_id . from publishers . pub_name.]] [where condiciones_búsqueda] [not] in (subquery) Ejemplo: select pub_id.psicologia. pueden devolver 0 o más valores...publicado libros de from titles . Sintaxis: select lista_de_selects [from [[base_datos. where type=„psychology‟) - .

Subqueries que devuelven varios renglones. Resultado: .

Ejemplo: select stor_name from stores .Subqueries que devuelven varios renglones.guide‟ from salesdetail where title_id in (select title_id from titles where title like “The Busy Executive‟s Database Guide”)) .„The Busy Executives Database (select stor_id .Cuáles tiendas venden el libro where stor_id in .

Subqueries que devuelven varios renglones. Resultado:

Subqueries que devuelven varios renglones. - Ejemplo: select distinct pub_name - Cuáles editores no han from publishers - publicado por lo menos where pub_id not in(select pub_id - un libro de „business‟ from titles where type=„business‟)

¿Puedes usar en lugar del not in el operador !=?

Subqueries con operadores de comparación. - Los subqueries deben devolver un solo valor, de otra manera se provoca un error. Sintaxis: select lista_de_selects [from {tabla}[,...]] [where expresión{=|!=|>|>=|<|<=}[any|all]] (subquery) - Cuáles libros tienen un precio - superior al promedio de el - precio de todos los libros.

- Ejemplo (mayor que): select title_id,price from titles where price>(select avg(price) from titles)

Subqueries que operadores de comparación. .Resultados: ...

Subqueries que operadores de comparación... - Ejemplo (dos condiciones): select distinct title, price from titles – Despliega los libros de tipo where type=„business‟ and price> - business y que tienen un precio (select avg(price) from titles) - superior al precio promedio de todos los libros.

Subqueries que operadores de comparación... - Otros ejemplos: select title, advance from titles where advance > (select min(advance) from titles, publishers where titles.pub_id =publishers.pub_id and pub_name=„Algodata Infosystems‟) Despliega los títulos que tengan un anticipo mayor al mínimo anticipo pagado por Algodata Infosystems.

Subqueries que operadores de comparación... Resultados:

.Subqueries que operadores de comparación. Otros Ejemplos: select title..pub_id and pub_name=„Algodata Infosystems‟) Despliega los libros que tienen un anticipo mayor que el anticipo más grande pagado por Algodata Infosystems - . advance from titles where advance>(select max(advance) from publishers. titles where titles.pub_id=publishers.

. Resultados: .Subqueries que operadores de comparación..

. .La palabra reservada EXISTS no es precedida por un nombre de columna. no datos.Usualmente la lista_de_selects de la subquery será “*” ya que la función exists devuelve valores de falso o verdadero.Diferencia: los elementos que pertenecen solo al primero de los dos conjuntos. ..]] [where {exists|not exists}] (subquery) - . El EXISTS y NOT EXISTS son usados en una serie de teoría de conjuntos. exists (subquery) Verdadero Si se devuelven renglones Falso Si no se devuelven renglones not exists (subquery) Verdadero Si no se devuelven renglones Falso Si se devuelven renglones Sintaxis: select lista_de_selects [from {tabla}[.Exists.Intersección: todos los elementos que pertenecen a los dos conjuntos... .

..tanto un autor como un editor.city) .city=publishers. Una subquery que no pueda ser ejecutada por ella misma. where exists (select * from publishers where authors.Exists. es una definición de una query de correlación.En que ciudades se localizan select distinct city from authors . Ejemplo (intersección de authors y publishers) .

pero no tienen editores.Exists.. .autores viviendo ahí where authors.Cuáles ciudades tienen where not exists (select * from publishers .city=publishers. Ejemplo (diferencia entre authors y publishers) select distinct city from authors ..city) .

SYBASE Módulo 7 Definición y Manipulación de Datos. .

Sintaxis: select lista_de_selects [into tabla] [from {tabla}[.…]] [where condiciones_de_búsqueda] Ejemplo (crear una tabla y cargar todos sus datos) select * into new_titles from titles Ejemplo (crear una tabla sin cargar datos) select * into new_pubs from publishers where 1=2 - - . La palabra reservada INTO es usada para crear una tabla de otra tabla ya existente.Crear una tabla de otra existente.

Ejemplo (crear una tabla y cargar datos específicos) select* into pub_1389_titles from titles where pub_id=„1389‟ Ejemplo (crear una tabla seleccionando algunas columnas) select pub _name. pub_id into short_pubs from publishers .Crear una tabla de otra existente.

.Algunas columnas se definen para que permitan valores nulos. . * Si el valor es demasiado largo el SQL Server lo trunca a su longitud especificada y no devuelve ningún mensaje de error. . * Para insertar un strig de caracteres de mayor tamaño que una línea utilice un backslash () antes de cambiar a la siguiente línea.SQL Server checa que el dato sea del tipo correcto. . en el momento de ser insertado. La cláusula INSERT agrega nuevos valores dentro de una tabla ya exixtente.• Modificando datos-insertando datos. * Para una columna que permite valores nulos. se puede especificar que es NULL o bien no especificar valor cuando se va a insertar un valor nulo.Inserta los datos tipo datetime y todos los valores tipo carácter encerrados entre comillas dobles o sencillas.

.. Sintaxis: insert [into] nombre_tabla [(lista_de_columnas)] {valores(expresiones_constantes) | estatuto_select} . * Para insertar comillas como una literal.. Inserta los. por ejemplo si la literal a insertar es una comilla sencilla deberá encerrar el valor entero dentro de comillas dobles.. deberá usar el tipo opuesto de comillas.Modificando datos-insertando datos.

”Jardin‟s Inc.Ejemplo: (parte de un renglón) insert new_pubs(pub_id.Agregando un nuevo editor values („4445‟.. „Mysteries Galore‟..Agregando un nuevo editor values („4444‟.‟DC‟) - Cualquier columna no incluida debe permitir nulos .‟KS‟) Ejemplo: (insertando valores con comilla como literal) insert into new_pubs .”) . „Washington‟.Modificando datos-insertando datos. „Kansas City‟.”O„Bryan Publishing House”. Agregando un solo renglón: Ejemplo: (insertando un renglón completo) insert into new_pubs . pub_name) -Agregando un nuevo editor values(„3333‟.

type char (12). Null. price money null. Null. pubdate datatime Contract bit not null) . Ejemplo (crear tabla) Create table new_titles (title_id char(6). “5555”. Si se omiten en el insert los nombres de las columnas. title varchar (50).. “More or Least”. Null. notes varchar (200) null. 0) total_sales money null. Null. Ejemplo (insertando) Insert new_titles values (“BU2222”. advance money null.Modificando datos-insertando datos. los valores deben ponerse en el mismo orden que tienen las columnas en el CREATE de la tabla. pub_id char(4). “05/17/88”.. “business”.

city.Modificando datos-insertando datos. pub_name. Ejemplo (insertando datos de otra tabla) insert into new_pubs(pub_id.. state) select * from publishers Ejemplo (insertando usando una subquery) insert into new_pubs select * from publishers where pub_id in (select pub_id from publishers where city=„Boston‟) - -Inserta nuevos editores del área de Boston ..

.nombre_columna={expresión | null}] [from nombre_tabla... .] [where condiciones_búsqueda] - . .La cláusula FROM determina de cuales tablas vienen los datos si es usada más de una tabla para determinar el valor de la nueva columna. Sintaxis simplificada: update nombre_de_tabla set nombre_columna={expresión null} [.. .El CANNOT puede actualizar múltiples tablas en el mismo estatuto UPDATE.La cláusula SET determina las columnas que serán cambiadas.La cláusula WHERE determina los renglones que van ha cambiar.nombre_tabla..Modificando datos-Actualizando datos. . La cláusula UPDATE cambia el valor de una o más columnas en una tabla (cambia los valores de los datos en los renglones existentes columna por columna).

..editor .Cambia el nombre del . Ejemplo (cambio de datos basados en un valor constante) update new_pubs set pub_name=“New Publisher‟s Name” where pub_name=„New Age Books‟ .Modificando datos-Actualizando datos.

para todos los renglones where pub_id=„1389‟ .Cambia el precio a 25 set price=25 . update new_titles ..Modificando datos-Actualizando datos. Ejemplo (cambio de datos en los renglones que cumplan con la condición)..que tenga un pub_id=„1389‟ .

Modificando datos-Actualizando datos. update new_titles set advance=0 .. Ejemplo (cambio de datos en todos los renglones sin condición)..

publishers where new_titles.. Ejemplo (cambio de datos en una tabla..Modificando datos-Actualizando datos.pub_id and pub_name=„New Age Books‟ . basados en datos de otra tabla). update new_titles set price=15 from new_titles.pub_id=publishers.

.Modificando datos-Actualizando datos. update new_titles set total_sales=(select min(qty) from salesdetail where title_id=„BU1032‟) where title_id=„BU1032‟ . Ejemplo (actualizar usando una subquery)..

. -La palabra reservada FROM (extención de la sintaxis) permite que los datos sean borrados de una tabla basada en datos almacenados en otra tabla.Modificando datos-Borrando datos. La cláusula DELETE remueve los datos seleccionados dentro de una tabla.] [where condiciones_búsqueda] .... si se omite todos los renglones se borrarán. -La cláusula WHERE califica cuales renglones se borrarán.. Sintaxis: delete [from]{nombre_tabla} [from{nombre_tabla}][. -La palabra reservada FROM (después del DELETE)es opcional.

.Modificando datos-Borrando datos.. Ejemplo (Borrando datos de una tabla basada en una constante) delete from new_pubs where pub_name=“New Publisher‟s Name” .

Modificando datos-Borrando datos...Borra los datos de todos los libros where price>15 .cuyo costo es mayor a $15 . Ejemplo (Borrando datos de una tabla basada en una constante) delete from new_titles .

pub_id .pub_id corresponde .new_pubs .pub_id=new_pubs...Borra de new_titles where new_titles.a“Binnet & Hardley” & . Ejemplo (Borra renglones basados en datos en otras tablas). delete new_titles from new_titles.renglones que su and pub_name=“Binnet & Hardley” .Modificando datos-Borrando datos.

Ejemplo (Borra renglones usando una subquery). delete from new_titles where titles_id in (select title_id from titleauthor where au_id in (select au_id from authors where state=„UT‟)) title_id /* Después del delete BU1032 BU1111 BU2075 BU7032 MC2222 PC1035 PC8888 PC9999 PS1372 PS3333 PS7777 TC3218 TC4209 TC7777 title_id /* Antes del delete BU1032 BU1111 BU2075 BU7032 MC2222 MC3021 PC1035 PC8888 PC9999 PS1372 PS2091 PS2186 PS3333 PS7777 TC3218 TC4209 TC7777 ..Modificando datos-Borrando datos..

EVALUACION. .

•¿Qué otro término es usado para describir una tabla? •¿Cuál tabla contiene la dirección de la tienda? •¿Cuál tabla contiene el número de identificación del editor? . 1.Preguntas de repaso Modulo No. •¿Qué significa SQL? •¿Cuál es la definición de un dominio? •Especifique dos características de SQL.

Encuentre los tipos de los libros en los que su pub_id = 0877. 4. 3. Nombre de todas las tiendas. 2 1. Select pub_name from store ¿Qué tiendas están en Washington? Desplegar toda la información de la tabla titles. Desplegar todos los libros cuyo tipo es business. 10. . 11. Módulo no. Desplegar todos los libros existentes y en que fecha fueron publicados. 9. 8. Desplegar los tipos de libros disponibles. 2. Encuentre los libros relacionados con cocina. Encuentre los libros que tengan Computer en el título. 12. Encuentre libros de psicología cuyo costo sea mayor a 20. 6. 13. Desplegar libros que tengan precios entre 10 y 20. Desplegar libros de los cuales su costo fue superior a 10. 7. 5.Preguntas de repaso.

Qué libros tienen cualesquiera de las siguientes clasificaciones mod_cook. 13. type from titles where title like „C%‟ b) select title_id. type from titles where pubdate>‟12/31/86‟ 16. 14. Cuáles libro vendieron más de 10. . 18.Preguntas de repaso. 15. Cuál es el resultado de: a) select title_id. Encuentre libros que tengan precio mayor que $10 y sus ventas totales sean menores a 5000 . Encuentre los libros con los títulos cuya letra inicial se encuentra entre la A y la F. 17.000 copias y costaron menos de 10 en la categoría de los business a la categoría modern_cooking.trad_cook y business. Encuentre el libro de psicología que haya costado más de 20 y tenga la palabra Computer en el título.

3 1. Poner el título GANANCIAS al resultado y cambiar el título de la columna title_id por CODIGO. Cuantas ganancias han sido generadas por cada titulo que se maneja. Cambiar el nombre de la columna stor_id por código y el de la columna stor_name a nombre_tienda al desplegar los resultados. Ordené la tabla de títulos por tipo y dentro de tipo por precio. Un incremento en el precio de un 15% por libro es proyectado por el siguiente año. . 2. 6. 5.Preguntas de repaso. 3. A que títulos no se les ha asignado un precio. 4. 7. Aproximadamente cuantos libros tendrían que ser vendidos para pagar el anticipo de cada libro. Cuales editores no han fijado el anticipo y cuales han decidido no dar dicho anticipo. Modulo No. desplegar los precios anteriores y los precios nuevos usados precio_anterior y precio_nuevo como encabezado.

Encuentre los libros que tienen ganancias menores a 10. 9. Encuentre aquellos autores que viven en el estado de “CA”. 8. nombre y número de teléfono. . desplegar apellido.Preguntas de repaso.000 (Nota total_sales es un número de libros no valor moneda).

¿cuál será el costo promedio que tendrá un libro en comparación con el actual? 9. Desplegar el costo del libro menos caro que se encuentra disponible por medio de esta distribución. Desplegar la cantidad total de libros que se han sido vendidos. Encuentre el anticipo máximo que se ha dado a cada tipo del libro. 6. Si el precio de los libros aumenta un 15%. ¿Cuál es el precio promedio de los libros del editor 0736? 4. . 3. 2. Desplegar la ultima fecha en la que se pidió un libro. ¿Cuántos libros están disponibles en la base de datos? 8. ¿cuántos libros de tipo business han sido vendidos? 10. El anticipo que no se ha definido es por 5000. 11. ¿Cuántos editores tiene libros editados? 7. Desplegar el número total de libros que se manejan. 4 1. encuentre el anticipo promedio.Preguntas de repaso Modulo No. 5.

calcule el precio promedio de todos esos libros. 14. ¿Cuál es el costo menos caro y cual es el costo más caro para cada tipo de libro? 15. Para los editores que tienen libros cuyo precio es menor a $10. ¿Cuál es el precio promedio de un libro? a) Por su tipo.Preguntas de repaso Modulo No. ¿Cuántos libros existen de cada tipo? . ¿Cuál es el precio promedio de los libros de cada tipo? 13. 17. b) Por su editor. ¿Cuántos libros ha vendido cada editor? 16. 4 12.

Desplegar todos los autores y si hay editor en la ciudad que ellos viven desplegar el pub_name. Cuál es el nombre del autor que publico el libro MC2222. 8. Desplegar los libros que tienen más de un autor.Preguntas de repaso Modulo No. Cuantos libros ha vendido cada autor. . 6. solo sabia que era de psicología y que lo habia escrito una mujer de nombre Ann o Anne. 10. 5. 7. Cuales son los términos de pago para la tienda Eric The Read Books. Cuales autores viven en la misma ciudad (cuales ciudades tienen más de un autor viviendo en ellos). 2. 9. Cuales autores viven en la misma ciudad que los editores. cual es el nombre completo y el titulo del libro. 5 1. Cuales libros fueron publicados el mismo día. 4. 3. Un cliente llamo para ordenar un libro. Que libros han sido ordenados y por cuales tiendas.

6 1. Cuales autores viven en la misma ciudad que Algodata Infosystems? 6. ¿Cuál es el nombre del editor que vendió el libro más caro? 2. 10.Preguntas de repaso Modulo No. ¿Cuáles editores han publicado libros de business? 8. A cuales autores les ha impreso libros la editora New Age Books. ¿Cuáles autores tienen el mismo apellido? 4. ¿Cuáles libros no han sido ordenados? 9.? 3. ¿Cuántos libros ha ordenado la tienda Bookbeat. ¿Cuáles libros han impreso los editores del estado de Massachusett? .? 7. ¿Cuáles tiendas no han ordenado ningún libro? 5. ¿Cuál libro tiene un anticipo mayor que el anticipo más grande que pago el editor Algodata Infosystems. ¿Cuáles libros tienen un precio por arriba del precio mínimo actual? 11.

¿cuáles libros han sido publicados pero no vendidos? 13. ¿cuáles autores han sido escribieron libros sobre cocina? .Preguntas de repaso 12.

Usando select into. 2. 3. . 5. crear una tabla llamda dirección N (la cual tendrá las mismas columnas que la tabla autores. Elimine los renglones que tienen como ciudad San José. 4. La tabla debe estar vacía.Preguntas de repaso Modulo No. Inserte 2 datos ficticios en la tabla anterior. Inserte datos recuperando los autores que viven en Palo Alto y San José. 7 1. Cambiar un valor existente en la tabla dirección N: el codigo postal de aquellas personas que viven en Palo Alto el valor 94333.