Esercitazioni con il Bright Star Catalog


--
--   di seguito il prompt "mysql>" viene omesso per semplificare il taglia-e-incolla
--

-- Ci posizioniamo del database "opus2017"

use opus2017;

-- Facciamo pratica con il catalogo "Bright Stars Catalogue"
-- Se non avete il catalogo nel DB "opus2017", i file SQL sono disponibili da (tasto destro per scaricare)
-- http://ross.iasfbo.inaf.it/opusfacere/dati/bsc.sql e
--
-- La descrizione delle colonne e'  QUI 

-- Quindi lo carichiamo nel database facendo attenzione di dare il nome completo, ad es.

source c:\dati_opus\bsc.sql

-- Vediamo come e' fatta il catalogo (tabella) bsc 

describe bsc;

-- Contiamo il numero di righe (quindi di stelle) presenti nel catalogo

select count(*) from bsc;


-- Facciamo pratica con query di tipo SELECT, query "informative" e creazione di indici
-- MIN(), MAX(), AVG(), ROUND(), ...
--
-- Notare che non ha importanza se il carattere e' maiuscolo o minuscolo


-- Magnitudine minima, massima e media di tutte le stelle del catalogo

select MIN(vmag), MAX(vmag), AVG(vmag) from bsc;

-- Nome e magnitudine delle 10 stelle piu' brillanti

select name, vmag from bsc order by vmag asc limit 10;

-- Contiamo le stelle che hanno un nome (il campo nome e' vuoto o NULL - cioe' indefinito)

select count(*) from bsc where name is not null and name != ' ';

-- quindi quelle che NON hanno un nome

select count(*) from bsc where name is null or name = ' ';


-- Creiamo una nuova tabella "prova" con 4 colonne lette da bsc - solo le prime 100 stelle

create table prova select name, ra, de, vmag from bsc limit 100;

-- Vediamo...
describe prova;
select * from prova limit 10;

-- La stella piu' brillante in questa tabella
select * from prova order by vmag asc limit 1;

-- Cancelliamo

drop table prova;

-- Ricreiamo la tabella prova scrivendoci solo le stelle dell'emisfero Nord e che hanno magnitudine massimo 3
-- Notare che la colonna "decd" contiene la declinazione in frazioni di grado (quindi va da -90 a + 90 gradi)

create table prova select * from bsc where decd > 0 and vmag < 3;

-- Sapendo che la stella polare ha declinazione vicino ai 90 gradi, cerchiamola intorno a quel valore (88 - 90 gradi)

select * from prova where decd between 88 and 90;

-- Vediamo quali sono le stelle vicino al piano della Galassia (latitudine + o - 2 gradi)

select * from prova where glat between -2 and 2;

-- Cancelliamo gli oggetti con magnitudine inferiore a 1 - prima vediamo quanti sono

select count(*) from prova where vmag < 1
delete from prova where vmag < 1;

-- mettiamo artificialmente a 0 la magnitudine di tutte le stelle piu' vicine di 10 gradi dal Polo Nord

update prova set vmag=6 where decd > 0;

-- altre query a piacere ...

-- cancelliamo la tabella

drop table prova;



-- Creiamo una tabella selezionando solo le stelle con una parallassi misurata, quindi > 0
-- teniamo solo coordinate in gradi, magnitudine e parallassi

create table parallassi select rad, decd, vmag, parallax from bsc where parallax > 0;


-- Vediamo che abbiamo selezionato 3099 stelle


-- Adesso proviamo a vedere se magnitudine e parallassi sono collegate (in media)
-- Selezioniamo gruppi di stelle in modo crescente
-- (le magnitudini non diminuiscono linearmente con la distanza!)
-- Notare l'uso di "sub-query", tra parentesi, e dell'istruzione "limit" con 1 o 2 parametri (n_skip, n_read)
-- il primo numero indica il numero di righe da saltare, il secondo quelle da leggere.
-- Quindi nel secondo caso qui sotto chiedo di saltare 100 righe e leggere le successive 500.

-- leggiamo le 100 stelle piu' brillanti
select avg(vmag),avg(parallax) from (select vmag, parallax from parallassi order by vmag limit 100) p;
-- risultato: 1.902800 |     0.0571600 

-- leggiamo le successive 500 stelle piu' brillanti
select avg(vmag),avg(parallax) from (select vmag, parallax from parallassi order by vmag limit 100, 500) p;
-- risultato: 3.725460 |     0.0327700

-- leggiamo le successive 2500 stelle
select avg(vmag),avg(parallax) from (select vmag, parallax from parallassi order by vmag limit 500, 2500) p;
-- risultato: 5.349928 |     0.0244048

-- Si nota quindi che la parallassi "in media" diminuisce al crescere del valore della magnitudine


-- Cancelliamo tutte le stelle con parallassi < 0.01

delete from parallassi where parallax < 0.01;

-- Continuare a piacere con altre query, anche creando nuove tabelle di prova ...


-- Cancelliamo

drop table parallassi;