Story Transcript
Select Select (sentencia) Esta instrucción especifica la o las columnas que quiero traer o recuperar Sintaxis Select column_name, From Especifica la tabla donde se encuentra las columnas que quiero traer o recupera Sintaxis From table name Entonces la sintaxis estaria formada de la siguiente forma Select column_name From table_name Ejemplo Select au_name, au_lname From authors Entonces la sentencia select aparecerá de la siguiente forma Au_name au_lname Daniel Gaito Gabriel Feldman Cintia Hefman Analia Stumbo Nota: hay que tener en cuenta que cuando se trae mas de una columna esta tiene que estar separada por coma (,) Eligiendo todas la columnas (*) El asterisco (*) representa toda las columnas de las tabla que quiero traer o recuperar Sintaxis 1
Select * From table_name Ejemplo Select * From publishers Entonces aparecera Pub_id Pub_name city state 0736 Oracle pres Buenos aires Cap 6546 Sql server Entre rios E R Distinct El distinct elimina las filas que esten duplicadas del resultado de una sentecia select Si no se especifica el distinct se vera todas las filas incluida las duplicadas Sintaxis Select distinct column_name From table_name Ejemplo Sin distinct Select au_id From titleauthor Au_id 175175 313313 313133 1234567 4567899 4567899
2
3216549 7987987 7987987 3216549 Con distinct Select distinct au_id From titleauthor 175175 313313 313133 1234567 4567899 1234567 1234567 3216549 213213 7987987 Nota: las numeros que estan en negrita seria los que no se repiten con la sentencia Distinct Columna especifica Si se quiere traer una columna/s especifica la la sintaxis seria SELECT column_name From table_name Ejemplos Select pub_id, pub_name From publishers Pub_id pub_name
3
• oracle press • Lobos marinos en el ciudad lujuriosa • Ll llsl s in china Nota: recuerde que el orden en que pone las columnas (select) es el orden en que va aparecer Ejemplo Select pub_id, pub_name From publishers Pub_id pub_name • oracle press • lobos marinos en la ciudad lujuri select pub_name, pub_id from publishers pub_name Pub_id oracle press 736 lobos marinos 737 Alias El alias va ser el nombre que aparecerá en la pantalla de la columna que quiero que tenga el alias Sintaxis Select colunm_name Alias From table_name Ejemplo Select pub_id NumPub, pub_name Nombre From publishers NumPub Nombre • oracle pres • sql server • xxx Resumen Lo visto hasta ahora se reduce que con la sentencias SELECT y FROM puedo ver los datos de la forma que 4
mas quiera. Siempre y cuando se conserven ciertas reglas del lenguaje SELECT ............ FROM Table_name Condicion Clausula where La clausula where especifica el criterio por el cual las filas apareceran Sintaxis Select column_name From table_name WHERE sarch_condition Ejemplo Select id,f_name, l_name From authors Where id = 5 En el where se pueden utilizar operaciones de comparacion, como opereraciones logicas Operaciones de comparacion =, <,>, >=,=<, <>, where id>5,where id <> 15, etc Operaciones logicas and, or where (id = 5 or id > 6) Ejemplo Select title_id, type, advance From titles Where (type = ` business' or type = `psycologhy') And advance > 5500
5
Vista Title_id type advance Bu1300 business 5600 Xx3168 psicology 5684 Fsalk psicology 7893 Vbad s business 10000 Between and not between El between especifica entre que rango se encuntra la busqueda El not between encuentra todo lo que no este especificado en el rango Sintaxis Select column_name From table_name Where search_condition BETWEEN rango and rangoxxxxxx Ejemplo Select title_id, ytd_sales From titles Where ytd_sales BETWEEN 4095 and 12000 Vista Title_id ytd_sales Bus313 4095 Djffskj 12000 Sdfk 5896 Sdafk 10597 Nota: el between incluye los rangos especificados (4095,12000) Ahora si no quiero incluir 4095 y 12000 usaremos las operaciones de comparacion Where yet_sales > 4095 and ytd_sales < 12000
6
Vista Title_id ytd_sales Sdfk 5896 Sdafk 10597 Not between Select title_id, ytd_sales From title Where ytd_sales NOT BETWEEN 4095 and 12000 Vista Title id ytd_sales Sdfj 4094 Sdffsda 12001 Ssadf 32169 Nota: trae como resultado todo lo que encuntra fuera del rango que va entre 4095 y 1200 In and not in In: encuentra todas la filas que incluye la clausula in Not in:encuentra todas las filas que no incluye el not in Sintaxis Select column_name From table_name Where search_condition in ( ) Ejemplo Select au_lname, state From authors Where state in (`ca','in','md') Vista
7
Au_lname state White in Black ca Blue in Yelow md Brown in Otra forma de obtener este resultado seria atraves de un conector lógico or Pero seria muy engorroso Select au_lname, state From authors Where state = `ca' or state = `in' or state = `md' Not in Select au_lname, state From authors Where state not in (`ca','md') Vista Au_lname state White in blue in Brown in Like Like El like selecciona las filas que contiene parte de los campos especificados por el carácter string en el like Existen varios tipos Like `mc%' Busca todos los nombres que comiencen con MC (mcbaden)
8
Like `%inger' Busca todos los nombres que terminen con letras inger (Ringer) Like `%en%' Busca todos los nombres que contengan las letras en (mcbadeen, green) Ejemplo Select phone From authors Where phone like `415%' Vista Phone 415−3164 415−6499 415−6499 Not like Encuentra todas las filas que se encuentra fuera del not like Select phone From authors Where phone not like `415%' Phone 313−4597 316−5555 555−5555 Is null and is not null Null: encuetra todas las filas cuyo campo sea null Is not null: encuentra tadas las filas cuyo campe se not null Ejemplo
9
Select title_id, advance From titles Where advance < 5000 And advance is null Vista Title_id advance Sdf sa 0.00 Sdfsdg null Asklñjf 2275 Sdaf 4000 Select title_id, advance From title Where advance is not null Order by La clausula order by es el rusultado del ordenamiento de una o mas columnas hasta 16 columnas Sintaxis Select ......... From.............. Where ................ Order by column_name Ejemplo Select pub_id, type, title_id From title Order by pub_id Pub_id type title_id 0736 hhklh ¡khkhkl
10
0739 ñjhkjh xxxxxx 0915 jjhkh 13131 1523 lkjklj kjhkjh 5555 313 kñkhjlk Nota: los datos fueron ordenados por pub_id en forma ascendente, si queremos hacerlo en forma descendente usaremos la palabra desc al final de la colunmna a ardernar Ejemplo Select pub_id, type, title_id From title Order by pub_id desc Si queremos ordenar por mas de una columna entonces usaremos la siguiente sintaxeis Select pub_id, type, title_id From title Order by pub_id desc, type Otra forma de hacer esto sin tener que tipear nuevamente las columnas es atraves de números que especifica la columna a ordenar Select pub_id, type, title_id From title Order by 1 Nota : el numero 1 especifica la columna a ordenar (pub_id) Resumen Por lo visto hasta ahora en la clausula where tenemos varios tipos se subcondiciones Ejemplo Like Betweenn In Not in
11
Etc Select type, id. Lname,F_name, state, price From authors Where lname like %ed Id in (5,7,8) price between 2 and 5 order by 3,id Mantenimiento de una tabla INSERT Cuando queremos insertar una fila en una tabla lo debemos usar la clausula insert Sintaxis Insert into table_name Values (constant1,constant2, ......) Ejemplo INSERT into titles VALUES (`bu222', `faster', `business',1389, null,null,null,'ok',' 06/14/95') Nota: aca se inserto en todas las columnas de la tabla title Podemos seleccionar las columnas que queremos insertar datos Insert into stores (stor_id, stor_name) Values (129,'mary') Tambien se puede copiar de una tabla existente a otra tabla Insert newpublishers (pub_id, pub_name) Select pub_id, pub_name From publishers Where pub_name = `new books'
12
Update El update puede modificar una sola fila un grupo de fila o todas las filas de una tabla. Se puede modificar de una tabla a la vez El nuevo dato puede ser una constante o una expresion que nosotros queramos o tambien pueden ser datos de otra tabla. Syntaxis UPDATE table_name Set column_name Where serch condition Set : Esta clausula especifica la o las columnas que van a ser modificadas con su nuevo valor. La clausula where determina cuales son las filas a cambiar Ejemplo UPDATE authors Set au_lname = `macBaden' Where au_lname = `Daniel' Nota: lo que hace este update es donde lname sea daniel ponele macbadeen Veamos Sin el update Au_lname id Daneil 5 Gaby 12 Con el update Au_lname id Macbadeen 5 Gaby 12 Delete
13
Borra filas de una tabla Syntaxis DELETE table_name Where serch condition Ejemplo DELETE from authors Where au_lname = `macbaden' Transacciones Una transaccion es la union de insert, update y delete. Cuando se termina de generar la transaccin al final de esta se pone un commit. Esto significa que el commit cierra y graba en la base de datos correspondientes INSERT ............... INSERT................ DELETE UPDATE UPDATE COMMIT; Rollback El rolback lo que hace es volver a para tras la transaccion. Dejándola como estaba anteriormente. Ejemplo Delete from authors UPDATE authors Set au_lname = `macBaden' Where au_lname = `Daniel' Insert into title (`daniel') Rollback;
14
Nota: en este ejemplo se ve que todas la modificaciones en la transaccion no va ser modificado. Crear tablas Diagrama de entidad relacion (DER) El diagrama de entidad relacion va estar compuestos por 3 tipos 1.− entidades 2.− atributos 3.− relaciones Una empresa puede tener varias entidades como por ejemplo, depto, empleados proyectos, etc A su vez estas entidades tienen atributos. En el caso de empleados los atributos serian id, nombre , apellido,etc Entonces las relaciones estarian dadas por sus entidades. Veamos como se diagrama un der muy simple Empleados departamento
Este sencillo diagrama muestra que los empelados deben tener un departamento ( linea no punteada) Y departamento puede que no tenga empleados En forma mas sencilla significa que todos los empleados deben estar asignados a algun departamento. Y algun departamento no tenga empleados Entonces para crear una tabla tendremo s en cuenta Reglas de integridad Consite en las restricciones que pude tomar cada una de las columna a crear Estas reglas denominadas de integridad estan formadas por Not null no pueden tener valores nulos Unique conjunto de columnas unicos para todas las filas, genera un indice automatido Primary key : clave primaria y unica Foreign key: hijo de la PK unida a la PK Pasos a tener en cuenta El nombre de la tabla tiene ciertas caracteristicas 15
No duplicar el nombre Tiene una extencion de 30 caracteres Tipos de datos Varchar 2 long variable max 2000 caracteres Char long fija max 255 Number numeros de decimales Date fecha y hora Long carácter de 26 Raw datos binarios Con todas estas caracteristicas ya podriamos armar una tabla Ejemplo Create table empleados ( id number (7) constraint empleados_id_pk primary key apelldio varchar 2 (25) constraint empleados_apelldio_nn not null Nombre varchar2 (35) Departamento number (7) Constraint empleados_departamento_id_fk reference departamento (id);); Nota: esto hace referencia al der descripto en la hoja anterior Añadir una columna a una tabla existente Sintaxis ALTER TABLE table _name ADD (column_name, datatype,null, default) Ejemplo Alter table publishers
16
Add manager_name varchar (40) null Modificar una columna en una tabla existente ALTER TABLE table _name modify (column_name, datatype,null, default) Agregar una constraints Sintaxis Alter table table_name Add constraint constraint name constraint type (column_name) Ejemplo Alter table title Add pub_id_fk foreing key (pub_id reference publishers pub−id) Borrar una constraint Alter table title Drop constraint pub_id_fk Habilitar y deshabilitar constraint Alter table title Enable/disable constraint pub_id_fk En oracle poseemos un diccionario de datos que contiene los tipos de constraint Desc user_constraints Desc user_con_column Si queremos ver las contraint de una tabla podemos hacerlo de la siguiente manera Sintaxis Select * From user_constraints Where table_name= table_name Ejemplo
17
Select * From user_constraints Where table_name= `publisher' Nota: con este select nos permite ver las contraint para el tabla publishers Borrar o eliminar una tabla Sintaxis Drop table table_name Ejemplo Drop table publishers Nota: cuando se dropea una tabla hay que tener en cuenta que se borrara los datos cargados en ella y ademas tener mucho cuidado con las constraint por que aveces no podra dropearse por ser que la tabla sea hijo de otra tabla. Truncate Esta sentecia elimina las filas de la tabla Sintaxis Truncate table table_name Ejemplo Truncate table authors Create view Sirve para cuando una instrucción es muy utilizada (ej Select* from xxx where xxx) En vez de tipear siempre lo mismo, crea una vista y la ejecuta Sintaxis Create view view_name As select_statement Where search_condition Ejemplo Create view titles_view
18
As select title,type,price,pubdate From titles Where price >15 Vista Title type price pubdate Fsadff sdf 16 asdfff Asdf sd 69 asdf Nota: esto es lo mismo que ejecutar el select nada mas que esto se escribio una sola vez La vista no puede llevar un order by Borrar o eliminar una vista Drop view title_view Sequencia Objeto de base de datos que genera en forma automatica numeros para los insert Sintaxis Create sequence nombre de la sequencia [increment_byn] [start with n] [{max_value n / no max_value}] [{min_value n / no min_value}] [{cycle / no cycle}] [{cache / not cache}] Ejemplo Create sequence authors Increment by 1 Star whit 23 Max value 99999
19
No cache No cycle Nota: lo que hace esta secuencia es incrementar de uno cuando se introduce un insert a partir de la posicion numero 23 En las pk no se utiliza cycle Para consultar la secuencia Select sequence_name, max_value,min_value, increment by, last_number From user_sequence Borrar o eliminar una sequence Drop sequence sequence_name Ejemplo Drop sequence authors Funciones y cálculos Se puede ejecutar cálculos sobre las columnas numericas o un numero constante sobre esta utilizando operadores matematicos Operadores matematicos Ma(+) menos (−), division (/), multiplicacion (*) Estos operadores se pueden utilizar en el select where order by Ejemplo Select title_id, ytd_sales, ytd_sales * 2 From titles Vista Title_id ytd_sales Sdaff 5 10 Sadffffff 11 22 Asgfdsd 152 304 Asdffsad null null
20
Kjhgjgf 339 678 Nota: cuando se ejecuta un operador aritmetico sobre un valor null el resultado es null En la clausula where Ejemplo Select title_id, ytd_sales, ytd_sales * 2 From titles Where title= sales_rep' And ytd_sales*2 / 0.5 >125 En la clausula order by Select title_id, ytd_sales, ytd_sales * 2 From titles Where title= sales_rep' And ytd_sales*2 / 0.5 >125 Order by ytd_sales >=300 Funciones Funciones a nivel de fila Carácter Numero Fecha Conversión Estas funciones se utilizan en el select, where , order by. Caracteres Lower (column / expresión ) Devuelve la expresión en minúscula Where lower (title) = ` SSSSSSS ` Upper (column / expresión )
21
Devuelve la expresion en mayuscula Select uper (`SSSSS') From dual Unitcap (column/ expresion) Devuelve la primera letra en mayuscula Select unitcap (`daniel') From dual Concat (column1/expresion1, column2/expresion2) Devuelve la cocatenacion de las expresion Select concat (`daniel', `gaito') From dual Lenght (column/expresion) select lenght (`daniel') from dual Nul (column/expresion, column/expresion) Si la primera expresion es nula toma la segunda Select nul (nul,'res') From dual Ltrim (column/expresion) Select ltrim (................Daniel) From dual Lpad lpad (`palabra',longitud, `carácter') Select lpad (`palacio', 15,'*') Algunos ejemplos Select f_name, l_name
22
From authors Where lower (l_name) like `%tu%' Select concat (L_name, F_name) From authors Where ytd_sales < 5693 Select upper (l_name) From authors Where l_name = ` dannniel' Select L_name, lengh (l_name) From authors Where id = 5 Funciones numéricas Round Redondeo Sintaxis Round (column/expresion/n) Ejemplo Round (823.286,2) = 823,29 Round (823.286,1) = 823,3 Round (823.286,0) = 823 Trunc Truncar Sintaxis Trunc ( column/expresion,n) Ejemplo Trunc (823.286,2) = 823,28
23
Trunc (823.286,1) = 823,2 Trunc (823.286,−1) = 820 Funciones con fecha Fecha Se representa de la siguiente manera dd−mon−yy = 05−04−99 sysdate La funcion sysdate devuelve la fecha actual Ejemplo Sysdate 04−05−99 Con las fechas se pueden hacer operaciones devolviendo un resultado en fechas o números Fecha + numero = fecha 05−04−99 + 15 = 20−04−99 Fecha − numero = fecha 20−04−99 − 15 = 20−04−99 fecha − fecha = cantidad de dias entre ambas 20−04−99 − 05−04−99 = 15 Fecha + numero / 24 = fecha Months_between (fecha1,fecha2) Me devuelve la cantidad de meses Months_between (15−5−99,15−8−99) =3 Algunos ejemplos Select l_name (sysdate − starDate) From authors Where l_name = `Dannir'
24
Select lower (L_name), round (salary,2) From authors Where l_name = `dd' Select * From author Where st_date < sysdate And salary > 150 Funciones de grupo Group by Las funciones de grupo son Sum retorna el total de los valores numericos Avg promedio Count retorna el total de filas Max retorna el maximo valor Min retorna el minimo valor Ejemplo Select type, title_id, avg (price), avg (advance) From title Group by type Vista Type title_id avg(price) avg Advance Busines asñlkdjf 3.73 3216 Salñdkf salñdkf 13.73 6.281.25 Sdafffsd sdfffff 156 32167 Nota: lo que hace es que toma todo el grupo type y saca el promedio devolviendo el precio promedio y el promedio de venta. Entoces como dicia mas arriba agarro el conjunto de fila y me devuelve un unico resultado 25
Group by + where Select type, avg(price) From title Where advance > 5000 Order by type Vista Type avg Busines 2.99 Asdj 5.99 Dg 3.3 Nota: Solamente muestra las filas que son mayores que 5000 Clausula having El having es una condicion del group by similar a la clausula where Esta clausula ( having) es usada solamente en el group by Sintaxis Select column, funcion de grupo From table_name Where serach condition Group by columna Having condicion de la funcion del grupo Ejemplo Select pub_id, sum (advance), avg (price) From title Group by pub_id Having sum(advance) > 1513 And avg(price) >5.3
26
Vista Pub_id sum avg Dsf 1569 6.3 Dd 5693 10.3 Dsw 1893 9.9 Group by + order by Ejemplo Select pub_id, sum (advance), avg (price) From title Group by pub_id Having sum(advance) > 1513 And avg(price) >5.3 Order by pub_id Vista Pub_id sum avg Dd 5693 10.3 Dsf 1569 6.3 Dsw 1893 9.9 Join Join 2 o mas tablas La operación con join habilita para traer datos de una o mas tablas o vista de la base de datos Hay que tener en cuenta que las tablas a comparar se caracteriza por que una tabla va ser padre y la otra tabla va se hijo. Por eso cuando queremos traer un resultado tenemos que tener encuenta esto. Ejemplo Select au_fname, au_lname,pub_name From authors, publishers 27
Where authors.city = publishers:city La clausula where especifica la conexión entre las tablas o vistas nombradas en el from Alias Es usado para calificar los nombres de las columnas en el resto del querry Ejemplo Select e.L_name, d.name From s_emp e, s_dept d Where d. Id = e.dep_id Nota: tanto la letra e como la d son el arias sin el arias el query seria haci Select s_emp.l_name, dept.name From s_emp l_name, s_dept name Where s_emp.id = dept_id Como es medio engorroso por eso se pone el arias NON EQUISJOIN Ejemplo Select e.name, e.job, e.sal,s.grado From emp e, salgrade s Where e.sal between s.lower_sal And s.high_sal Outer join Filas que no cumplen con la condicion del join (+) Ejemplo Select e.last_name, c.name, e.id From s.emp e , s_customer c Where e.id (+) = c.sales_dept_id Order by e.last_name
28
Self join Asimismo Select e.last_name, m.last_name From s.emp e, s.emp m Where e.managmet.ed = m.id Subconsulta (Subquery) Es un select embebido con otro select tanto en where havy from o delete. No se puede usar en un order by Esta subconsulta tiene que estar encerrado entre parentesis Se utiliza dos tipos de operadores. 1.− de fila simple 2.− de fila multiple Las de filas simples son <,>,= >=,<= ,<>. Las de filas compuestas son in not in exist, not exist Hay que tener en cuenta que primero se ejecuta la subconsulta y despues el select principal. Paso por paso Si usted quiere encontrar todo los libros que tienen el mismo precio que ssss. Usted puede ejecutar la tarea en dos pasos. Primero encuentra el precio de ssss Select price From titles Where title = `sss' Vista Price 19.99 Segundo paso Select title, price 29
From title Where price = 19.99 Vista Title price Asdf 19.99 Asdffsd 19.99 Asdfff 19.99 Asdfas 19.99 Para mejorar la performance se puede hacer un subquery Ejemplo Select title, price From title Where price = (select price from title where title = `sss') con funciones multiples select au_lname, au:fname from authors where state = `ca' and au_id in (select au_id from titleauthors where royaltype<30) Ejemplo con delete Delete sales
30
Where title_id in (select title_id from title where type = `busines') Con having Ejemplo Select distinct title From title Where price > (select min(price) from titles group by type having type = `sdt' 1 Id Nombre Apellido Direccion Id_empleados Proyecto Id_depto MANUAL DE SQL
31