Informática
SQL (Structured Query Language)
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
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
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
-
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 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
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
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
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)
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
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
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
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'
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
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;
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
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
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
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
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
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
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 )
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
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
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'
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
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
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
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
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
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
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
Descargar
Enviado por: | El remitente no desea revelar su nombre |
Idioma: | castellano |
País: | Argentina |