Sie sind auf Seite 1von 53

Análisis de Datos Avanzados

SQL Server
Es un sistema para la gestión de bases de datos producido por Microsoft
basado en el modelo relacional, cuya principal función es la de
almacenar y consultar datos solicitados por otras aplicaciones, sin
importar si están en la misma computadora, si están conectadas a una
red local o si están conectadas a través de internet (plataforma “Cloud-
Ready”).

UANL 2017
Análisis de Datos Avanzados

SQL Server

La sigla que se conoce como SQL corresponde a la expresión inglesa


Structured Query Language (entendida en español como Lenguaje de
Consulta Estructurado), la cual identifica a un tipo de lenguaje vinculado
con la gestión de bases de datos de carácter relacional.

Gracias a la utilización del álgebra y de cálculos relacionales, el SQL


brinda la posibilidad de realizar consultas con el objetivo de recuperar
información de las bases de datos de manera sencilla.

UANL 2017
Análisis de Datos Avanzados

SQL Server
SQL Server permite que varios clientes usen la misma base de datos al mismo
tiempo controlando el acceso simultaneo mediante 2 modos de control de
concurrencia:

- Pessimistic concurrency: Uso de bloqueos exclusivos y compartidos.

- Optimistic concurrency: Similar al uso de sistemas subversión. Permite la


creación de una nueva fila cada vez que ésta se actualiza, almacenando las
“versiones anteriores” de la fila en una tabla temporal junto con el ID de la
transacción mediante la cual fueron actualizadas.

UANL 2017
Análisis de Datos Avanzados

SQL Server

¿Qué es SQL?

Cuando un usuario quiere obtener información de una base de datos, puede


utilizar un “query”

Un query es un petición de regresar datos o información con una cierta condición.

SQL es un lenguaje de “query” que permite al usuario determinar ciertas


condiciones en vez de algoritmos.

UANL 2017
Análisis de Datos Avanzados

SQL Server

Concepto de SQL

1. El usuario especifica cierta condición

2. El programa leerá todos los datos en la base y seleccionara los datos que
satisfagan la condición

3. Información Estadística de los datos

4. El resultado del “query” será almacenado en forma de una tabla nueva

UANL 2017
Análisis de Datos Avanzados

SQL Server
Estructura General SELECT, ALL/DISTINCT, *, AS,
FROM, WHERE
Comparación IN, BETWEEN, LIKE
Agrupar GROUP BY, HAVING, COUNT(),
SUM(), AVG(),MAX(), MIN()

Ordenamiento ORDEY BY, ASC/DESC


Operadores Lógicos AND, OR, NOT
Output INTO TABLE/ CURSOR TO FILE
{ADDITIVE}, TO PRINTER, TO
SCREEN
Unión UNION

UANL 2017
Análisis de Datos Avanzados
General Structure
SELECT [ALL / DISTINCT] expr1 [AS col1], expr2 [AS col2] ;
FROM tablename WHERE condition
El “query” seleccionará renglones del insumo: tabla1 y el resultado lo pondrá en forma de
otra tabla

Expresiones expr1 expr 2 puede ser:


(1) una columna o
(2) una expresión de función y campos

Y col1 y col2, son las columnas resultantes en la tabla de salida (output).

DISTINCT eliminará la duplicidad en el output, mientras que ALL mantendrá todos los
renglones duplicados

CONDITIONS, pueden ser:


(1) una desigualdad, o
(2) una comparación de caracteres
usando operadores de lógica: AND, OR, NOT

UANL 2017
Análisis de Datos Avanzados

General Structure
field type width contents
id numeric 4 student id number
name character 10 name
dob date 8 date of birth
sex character 1 sex: M / F
class character 2 class
hcode character 1 house code: R, Y, B, G
dcode character 3 district code
remission logical 1 fee remission
mtest numeric 2 Math test score

UANL 2017
Análisis de Datos Avanzados

General Structure
SELECT * FROM student

id name dob Sex Class mtest hcode dcode remission


9801 Peter 06/04/86 M 1A 70 R SSP .F.
9802 Mary 01/10/86 F 1A 92 Y HHM .F.
9803 Johnny 03/16/86 M 1A 91 G SSP .T.
9804 Wendy 07/09/86 F 1B 84 B YMT .F.
9805 Tobe 10/17/86 M 1B 88 R YMT .F.

UANL 2017
Análisis de Datos Avanzados

General Structure
SELECT name, hcode, clase FROM students
WHERE class=“1A”

Name Hcode Class name hcode class


1A 1A
1A 1A
1A 1A
1B
1B

UANL 2017
Análisis de Datos Avanzados

General Structure

La nueva tabla tendrá solo los estudiantes con el código de clase 1A

name hcode class


Pedro R 1A
María Y 1A
John G 1A

UANL 2017
Análisis de Datos Avanzados

General Structure
SELECT DISTINCT dcode FROM student
WHERE hcode = “R”

dcode
SSP
YMT

UANL 2017
Análisis de Datos Avanzados

General Structure
List the names and ages (1 d.p.) of 1B girls.

Functions:
# days : DATE( ) – dob
# years :(DATE( ) – dob) / 365
1 d.p.: ROUND(__ , 1)

UANL 2017
Análisis de Datos Avanzados

General Structure
List the names and ages (1 d.p.) of 1B girls.

SELECT name, ROUND((DATE( )-dob)/365,1) AS age ;


FROM student WHERE class="1B" AND sex="F"

Result name age


Wendy 12.1
Kitty 11.5
Janet 12.4
Sandy 12.3
Mimi 12.2

UANL 2017
Análisis de Datos Avanzados

General Structure
List the names, id of 1A students with no fee remission.
SELECT name, id, class FROM student ;
WHERE class="1A" AND NOT remission
name id class
Peter 9801 1A
Result Mary 9802 1A
Luke 9810 1A
Bobby 9811 1A
Aaron 9812 1A
Ron 9813 1A
Gigi 9824 1A
: : :
UANL 2017
Análisis de Datos Avanzados

Comparison

expr IN ( value1, value2, value3)


expr BETWEEN value1 AND value2
expr LIKE "%_"

UANL 2017
Análisis de Datos Avanzados

Comparison
List the students who were born on Wednesday or
Saturdays.
SELECT name, class, CDOW(dob) AS bdate ;
FROM student ;
WHERE DOW(dob) IN (4,7)
name class bdate
Result Peter 1A Wednesday
Wendy 1B Wednesday
Kevin 1C Saturday
Luke 1A Wednesday
Aaron 1A Saturday
: : :
UANL 2017
Análisis de Datos Avanzados

Comparison
List the students who were not born in January,
March, June, September.
SELECT name, class, dob FROM student ;
WHERE MONTH(dob) NOT IN (1,3,6,9)
name class dob
Result Wendy 1B 07/09/86
Tobe 1B 10/17/86
Eric 1C 05/05/87
Patty 1C 08/13/87
Kevin 1C 11/21/87
Bobby 1A 02/16/86
Aaron 1A 08/02/86
: : :

UANL 2017
Análisis de Datos Avanzados

Comparison
List the 1A students whose Math test score is
between 80 and 90 (incl.)
SELECT name, mtest FROM student ;
WHERE class="1A" AND ;
mtest BETWEEN 80 AND 90

Result name mtest


Luke 86
Aaron 83
Gigi 84

UANL 2017
Análisis de Datos Avanzados

Comparison
List the students whose names start with "T".

SELECT name, class FROM student ;


WHERE name LIKE "T%"

Result name class


Tobe 1B
Teddy 1B
Tim 2A

UANL 2017
Análisis de Datos Avanzados

Comparison
List the Red house members whose names contain
"a" as the 2nd letter.

SELECT name, class, hcode FROM student ;


WHERE name LIKE "_a%" AND hcode="R"

name class hcode


Result
Aaron 1A R
Janet 1B R
Paula 2A R

UANL 2017
Análisis de Datos Avanzados

Grouping
SELECT ...... FROM ...... WHERE condition ;
GROUP BY groupexpr [HAVING requirement]

Group functions:
COUNT( ), SUM( ), AVG( ), MAX( ), MIN( )

• - groupexpr specifies the related rows to be grouped as one entry.


Usually it’s a column.
• WHERE condition specifies the condition of individual rows before the
rows are grouped.
• HAVING requirement specifies the condiftion involving the whole group

UANL 2017
Análisis de Datos Avanzados

List the number of students of each class.

UANL 2017
Análisis de Datos Avanzados

class
1A

1A 1A
1A
COUNT( )
1B
1B
1B
COUNT( )
1B 1B
1B
1B
1C

1C 1C
1C
COUNT( )
Student

UANL 2017
Análisis de Datos Avanzados

Grouping
List the number of students of each class.
SELECT class, COUNT(*) FROM student ;
GROUP BY class
class cnt
Result 1A 10
1B 9
1C 9
2A 8
2B 8
2C 6
UANL 2017
Análisis de Datos Avanzados

Grouping
List the average Math test score of each class.

SELECT class, AVG(mtest) FROM student ;


GROUP BY class

class avg_mtest
Result 1A 85.90
1B 70.33
1C 37.89
2A 89.38
2B 53.13
2C 32.67
UANL 2017
Análisis de Datos Avanzados

Grouping
List the number of girls of each district.

SELECT dcode, COUNT(*) FROM student ;


WHERE sex="F" GROUP BY dcode

dcode cnt
Result HHM 6
KWC 1
MKK 1
SSP 5
TST 4
YMT 8
UANL 2017
Análisis de Datos Avanzados

Grouping
List the max. and min. test score of Form 1 students of
each district.
SELECT MAX(mtest), MIN(mtest), dcode ;
FROM student ;
WHERE class LIKE "1_" GROUP BY dcode
max_mtest min_mtest dcode
Result 92 36 HHM
91 19 MKK
91 31 SSP
92 36 TST
75 75 TSW
88 38 YMT

UANL 2017
Análisis de Datos Avanzados

Grouping
List the average Math test score of the boys in each class.
The list should not contain class with less than 3 boys.
SELECT AVG(mtest), class FROM student ;
WHERE sex="M" GROUP BY class ;
HAVING COUNT(*) >= 3
avg_mtest class
Result 86.00 1A
77.75 1B
35.60 1C
86.50 2A
56.50 2B
UANL 2017
Análisis de Datos Avanzados

Display Order

SELECT ...... FROM ...... WHERE ......


GROUP BY ..... ;
ORDER BY colname ASC / DESC

UANL 2017
Análisis de Datos Avanzados

Display Order
List the boys of class 1A, order by their names.

SELECT name, id FROM student ;


WHERE sex="M" AND class="1A" ORDER BY name

name id Result name id


Peter 9801 Aaron 9812
Johnny 9803 ORDER BY Bobby 9811
Luke 9810 Johnny 9803
dcode
Bobby 9811 Luke 9810
Aaron 9812 Peter 9801
Ron 9813 Ron 9813

UANL 2017
Análisis de Datos Avanzados

Display Order
List the 2A students by their residential district.
SELECT name, id, class, dcode FROM student ;
WHERE class="2A" ORDER BY dcode
name id class dcode
Result Jimmy 9712 2A HHM
Tim 9713 2A HHM
Samual 9714 2A SHT
Rosa 9703 2A SSP
Helen 9702 2A TST
Joseph 9715 2A TSW
Paula 9701 2A YMT
Susan 9704 2A YMT
UANL 2017
Análisis de Datos Avanzados

Display Order
List the number of students of each district
(in desc. order).
SELECT COUNT(*) AS cnt, dcode FROM student ;
GROUP BY dcode ORDER BY cnt DESC
cnt docode
Result 11 YMT
10 HHM
10 SSP
9 MKK
5 TST
2 TSW
1 KWC
1 MMK
1 SHT

UANL 2017
Análisis de Datos Avanzados

Display Order

List the boys of each house order by the


classes. (2-level ordering)

SELECT name, class, hcode FROM student ;


WHERE sex="M" ORDER BY hcode, class

UANL 2017
Análisis de Datos Avanzados

Result
name hcode class
Blue
Bobby B 1A
House Teddy B 1B Order
Joseph B 2A by
Zion B 2B class
Order
Leslie B 2C
by Johnny G 1A
hcode Luke G 1A
Kevin G 1C
Green
House George G 1C
: : :
:
:

UANL 2017
Análisis de Datos Avanzados

Output
INTO TABLE tablename the output table is saved as a
database file in the disk.

INTO CURSOR temp the output is stored in the


working memory temporarily.

TO FILE filename [ADDITIVE] output to a text file.


(additive = append)

TO PRINTER send to printer.

TO SCREEN display on screen.

UANL 2017
Análisis de Datos Avanzados
Output
List the students in desc. order of their names and
save the result as a database file name.dbf.
SELECT * FROM student ;
ORDER BY name DESC INTO TABLE name.dbf
Result id name dob sex class mtest hcode dcode remission
9707 Zion 07/29/85 M 2B 51 B MKK .F.
9709 Yvonne 08/24/85 F 2C 10 R TST .F.
9804 Wendy 07/09/86 F 1B 84 B YMT .F.
9819 Vincent 03/15/85 M 1C 29 Y MKK .F.
9805 Tobe 10/17/86 M 1B 88 R YMT .F.
9713 Tim 06/19/85 M 2A 91 R HHM .T.
9816 Teddy 01/30/86 M 1B 64 B SSP .F.
: : : : : : : : :

UANL 2017
Análisis de Datos Avanzados
Output
Print the Red House members by their classes, sex
and name.
SELECT class, name, sex FROM student ;
WHERE hcode="R" ;
ORDER BY class, sex DESC, name TO PRINTER
class name sex
1A Aaron M
Result 1A Peter M
1A Ron M
1B Tobe M
1B Janet F
1B Kitty F
1B Mimi F
: : :

UANL 2017
Análisis de Datos Avanzados

SQL JOINS

We will discuss seven different ways you can return data from two relational tables

1.INNER JOIN
2.LEFT JOIN
3.RIGHT JOIN
4.OUTER JOIN
5.LEFT JOIN EXCLUDING INNER JOIN
6.RIGHT JOIN EXCLUDING INNER JOIN
7.OUTER JOIN EXCLUDING INNER JOIN

UANL 2017
Análisis de Datos Avanzados

SQL JOINS

This is the simplest, most understood Join


and is the most common. This query will
return all of the records in the left table
(table A) that have a matching record in the
right table (table B). This Join is written as
follows:

SELECT <select_list>
FROM Table_A A
INNER JOIN Table_B B
ON A.Key = B.Key

UANL 2017
Análisis de Datos Avanzados

SQL JOINS
Examples

TABLE_A
PK Value
---- ----------
1 FOX
2 COP
3 TAXI
6 WASHINGTON
7 DELL
5 ARIZONA
4 LINCOLN
10 LUCENT

TABLE_B
PK Value
---- ----------
1 TROT
2 CAR
3 CAB
6 MONUMENT
7 PC
8 MICROSOFT
9 APPLE
11 SCOTCH

UANL 2017
Análisis de Datos Avanzados

SQL JOINS

This query will return all of the records in


the left table (table A) regardless if any of
those records have a match in the right
table (table B). It will also return any
matching records from the right table. This
Join is written as follows:

SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key

UANL 2017
Análisis de Datos Avanzados

SQL JOINS
Examples

TABLE_A
PK Value
---- ----------
1 FOX
2 COP
3 TAXI
6 WASHINGTON
7 DELL
5 ARIZONA
4 LINCOLN
10 LUCENT

TABLE_B
PK Value
---- ----------
1 TROT
2 CAR
3 CAB
6 MONUMENT
7 PC
8 MICROSOFT
9 APPLE
11 SCOTCH

UANL 2017
Análisis de Datos Avanzados

SQL JOINS

This query will return all of the records in


the right table (table B) regardless if any of
those records have a match in the left table
(table A). It will also return any matching
records from the left table. This Join is
written as follows:

SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key

UANL 2017
Análisis de Datos Avanzados

SQL JOINS
Examples

TABLE_A
PK Value
---- ----------
1 FOX
2 COP
3 TAXI
6 WASHINGTON
7 DELL
5 ARIZONA
4 LINCOLN
10 LUCENT

TABLE_B
PK Value
---- ----------
1 TROT
2 CAR
3 CAB
6 MONUMENT
7 PC
8 MICROSOFT
9 APPLE
11 SCOTCH

UANL 2017
Análisis de Datos Avanzados

SQL JOINS

This Join can also be referred to as a FULL


OUTER JOIN or a FULL JOIN. This query will
return all of the records from both tables,
joining records from the left table (table A) that
match records from the right table (table B).
This Join is written as follows:

SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key

UANL 2017
Análisis de Datos Avanzados

SQL JOINS
Examples

TABLE_A
PK Value
---- ----------
1 FOX
2 COP
3 TAXI
6 WASHINGTON
7 DELL
5 ARIZONA
4 LINCOLN
10 LUCENT

TABLE_B
PK Value
---- ----------
1 TROT
2 CAR
3 CAB
6 MONUMENT
7 PC
8 MICROSOFT
9 APPLE
11 SCOTCH

UANL 2017
Análisis de Datos Avanzados

SQL JOINS

This query will return all of the records in


the left table (table A) that do not match
any records in the right table (table B). This
Join is written as follows:

SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL

UANL 2017
Análisis de Datos Avanzados

SQL JOINS
Examples

TABLE_A
PK Value
---- ----------
1 FOX
2 COP
3 TAXI
6 WASHINGTON
7 DELL
5 ARIZONA
4 LINCOLN
10 LUCENT

TABLE_B
PK Value
---- ----------
1 TROT
2 CAR
3 CAB
6 MONUMENT
7 PC
8 MICROSOFT
9 APPLE
11 SCOTCH

UANL 2017
Análisis de Datos Avanzados

SQL JOINS

This query will return all of the records in


the right table (table B) that do not match
any records in the left table (table A). This
Join is written as follows:

SELECT <select_list>
FROM Table_A A
RIGHT JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL

UANL 2017
Análisis de Datos Avanzados

SQL JOINS
Examples

TABLE_A
PK Value
---- ----------
1 FOX
2 COP
3 TAXI
6 WASHINGTON
7 DELL
5 ARIZONA
4 LINCOLN
10 LUCENT

TABLE_B
PK Value
---- ----------
1 TROT
2 CAR
3 CAB
6 MONUMENT
7 PC
8 MICROSOFT
9 APPLE
11 SCOTCH

UANL 2017
Análisis de Datos Avanzados

SQL JOINS

This query will return all of the records in


the left table (table A) and all of the records
in the right table (table B) that do not
match. I have yet to have a need for using
this type of Join, but all of the others, I use
quite frequently. This Join is written as
follows:

SELECT <select_list>
FROM Table_A A
FULL OUTER JOIN Table_B B
ON A.Key = B.Key
WHERE A.Key IS NULL OR B.Key IS
NULL

UANL 2017
Análisis de Datos Avanzados

SQL JOINS
Examples

TABLE_A
PK Value
---- ----------
1 FOX
2 COP
3 TAXI
6 WASHINGTON
7 DELL
5 ARIZONA
4 LINCOLN
10 LUCENT

TABLE_B
PK Value
---- ----------
1 TROT
2 CAR
3 CAB
6 MONUMENT
7 PC
8 MICROSOFT
9 APPLE
11 SCOTCH

UANL 2017

Das könnte Ihnen auch gefallen