febbraio 2007 - Posts
Nel corso della mia attività di formatore in materia MS-Sql Server, non
è raro incontrare programmatori o sistemisti validissimi nel proprio lavoro, ma
con forti carenze di concetti di basi di dati nonché di linguaggio SQL.
Mentre nel caso di scarsa conoscenza di teoria di database, il cammino da
percorrere è spesso duro ed impervio, nel caso del linguaggio SQL, di solito
basta un po' di pratica e qualche buona dritta, daltronde è pur sempre un
linguaggio di programmazione.
A questo proposito, un classico dubbio che sorge in coloro che hanno poca
dimistichezza con SQL è quello legato alla presenza di duplicati in una tabella
così come in una query di selezione.
Premesso che il vincolo di chiave primaria o quello di unicità su una o più
colonne di una tabella, forniscano una risposta al primo dei due dubbi (la loro
presenza garantisce di fatto l'impossibilità di presenza di righe duplicate in
tabella), altro discorso va fatto relativamente a una query di selezione.
A differenza dell'algebra relazionale - ovvero la teoria matematica alla base
dei database relazionali - , SQL consente la presenza di duplicati nel risultato
di una proiezione (termine dell'algebra relazionale che indica una selezione di
tuple da una relazione, ovvero una selezione di righe da una tabella).
Di conseguenza spetta alla query di selezione eliminare le righe duplicate
sempre che il risultato non comprenda la chiave primaria o una colonna su cui
sia stato definito un vincolo di unicità, nel qual caso il risultato sarà già
privo di duplicati per definizione.
Vediamo un esempio.
USE
tempdb
GO
CREATE
TABLE Contatti (
Nome VARCHAR(30),
Cognome
VARCHAR(30),
CONSTRAINT PK_Contatti
PRIMARY KEY (Cognome, Nome)
)
INSERT
Contatti VALUES ('Francesco', 'Quaratino')
INSERT
Contatti VALUES ('Maurizio', 'Tammacco')
INSERT
Contatti VALUES ('Francesco', 'Totti')
INSERT
Contatti VALUES ('Maurizio', 'Vandelli')
SELECT
* FROM
Contatti
Per eliminare le righe duplicati dalla selezione, SQL mette a disposizione
l'attributo DISTINCT della SELECT.
SELECT DISTINCT Nome
FROM
Contatti
Oltre alla DISTINCT, ci sono altre operazioni che "indirettamente"
producono l'eliminazione dei duplicati.
Si tratta della GROUP BY e delle
operazioni insiemistiche UNION e EXCEPT.
GROUP BY ha lo scopo di raggruppare il risultato di una SELECT su un insieme
di colonne ordinate con la possibilità di applicare funzioni di raggruppamento
(per es. SUM(), AVG()) sul valore di una colonna sulla base del raggruppamento
applicato.
SELECT Nome, COUNT(Nome) FROM Contatti
GROUP
BY Nome
UNION ed EXCEPT sono due dei tre operatori insiemistici contemplati dallo
standard SQL (il terzo è INTERSECT).
Esse hanno lo scopo di agire come gli
operatori di UNIONE e DIFFERENZA sugli insiemi.
Proprio per la loro natura
insiemistica, tali operatori eliminano eventuali duplicati (ricordo che un
insieme è una collezione di oggetti distinti).
Per cui, con un piccolo
espediente potrebbero essere adoperatori a tale scopo.
L'espediente in
questione è una SELECT che non restituisca alcuna riga in virtù di una
condizione WHERE sempre falsa (per es. 0=1).
SELECT Nome FROM Contatti
UNION
SELECT
NULL WHERE
0=1
SELECT
Nome FROM Contatti
EXCEPT
SELECT
NULL WHERE
0=1
DotNetSide ha da poco pubblicato le date dei nuovi eventi di Marzo e Aprile
per gli sviluppatori Microsoft e che si terranno, come ormai consuetudine, a
Bari. Tra gli speaker, da notare la presenza di "qualcuno che viene da lontano":
Lorenzo Barbieri - noto MVP e blogger UGIDOTNET -, Giancarlo Sudano -
fondatore della community GUISA (Gruppo Utenti Italiani Solution Architect) e
Gerardo Fransecky - MVP Windows.
Di seguito le agende:
23 Marzo 2007: Ready for a new day!
Windows Vista Overview [Gerardo Fransecky (MVP Windows)]
Office 2007 Overview [Laura Ciccarese]
Windows Workflow Foundaton Pratical Overview [Michele Locuratolo (MVP Visual
Developer - Visual C#)]
Windows Communication Foundation Pratical Overview [Fabio Cozzolino]
Windows Presentation Foundation Pratical Overview [Vito Arconzo]
20 Aprile 2007: .NET Data Management
Ado.NET e ADO.Net vNext [Michele Locuratolo (MVP Visual Developer -
Visual C#)]
Data Management in .NET [Fabio Cozzolino, Tiziana Loporchio, Vito
Arconzo]
Visual Studio Team System for Database Professional [Lorenzo Barbieri (MVP
Visual Developer - Team System)]
NHibernate: Quello che avreste sempre voluto fare con un DAL... e non avete
mai osato fare [Giancarlo Sudano]
25 Maggio 2007: Windows Mobile 6.0 for Win&Web
Developers
programma da definire
Maggiori Info: http://www.dotnetside.org/content/nextevents.aspx
Apex regala una copia di "
ApexSQL Developer Studio" agli MCT SQL che ne facciano richiesta.
Di seguito l'annuncio che appare nella sezione
Special Offer del sito
MCT Member Home:
"
ApexSQL is offering a free copy of ApexSQL Developer Studio, a bundle of seven SQL Developer tools including ApexSQL's award winning Editor/IDE, with three years support and upgrades to any MCT who is certified to deliver SQL Server courses. Send an e-mail message to: sqlmct@apexsql.com, and include your MCP ID, your transcript-sharing ID, and transcript-sharing password to take advantage of this offer."
Inutile dire che è un'occasione da non perdere!
Sono state fissate le date della "
DevCon'07
": 15/16/17 Maggio prossimo, Milano.
Cos'è la DevCon? Si tratta della conferenza rivolta a sviluppatori Microsoft e tenuta ogni anno dal gruppo "
DevLeap" composto da Marco Russo, Paolo Pialorsi, Roberto Brunetti, Luca Regnicoli.
Sarà trattato anche MS-SQL 2005 - anche se marginalmente.
riporto di seguito la newsletter che il buon "
Vito Lecci" invia pazientemente ogni anno a tutti i suoi contatti per annunciare la partecipazione di "
SIDEREUS"
alla "Giornata della Divulgazione Scientifica":
Cari ragazzi,
giunge alla sua terza edizione
l'appuntamento annuale con la Giornata della Divulgazione Scientifica, che
si terrà presso lo Sheraton Nicolaus Conference Center di Bari.
Come nel passato,
contemporaneamente alla Star Trek Apulia Convention, che ospita un folto
gruppo di proseliti di questa affascinante serie fantascientifica, viene
allestita anche un'area completamente dedicata alla divulgazione
scientifica.
Sarà presente il nostro
Planetario Itinerante, una Galleria delle Scienze, dove saranno tenuti
alcuni esperimenti scientifici in pubblico, sarà allestita una piccola
mostra di Meridiane, Orologi Solari, Calendari Astronomici, Astrofotografie,
modellini NASA, materiale filatelico viaggiato nello spazio e una piccola
collezione di meteoriti provenienti da tutto il mondo. Saranno inoltre tenute alcune conferenze
scientifiche.
Importanti le novità di
quest'anno:
1) La manifestazione si snoderà
in DUE giornate: sabato 3 Marzo, dalle 17:00 alle 21:00 e
domenica 4 Marzo dalle 09:00 alle 21:00 con una breve pausa
pranzo.
2) Nella notte tra il sabato e la
domenica, dalle 23:00 circa alle 02:00 sarà allestita un'area con vari
telescopi messi a disposizione degli intervenuti per l'osservazione
dell'Eclisse Totale di Luna.
3) Anche quest'anno sarà presente
l'astronauta Umberto Guidoni che, nella giornata di
domenica, presenterà una sua relazione ed anche il suo ultimo libro, è
prevista inoltre una sessione di autografi che l'astronauta
rilascerà a tutti gli interessati.
Come vedete anche quest'anno
ci siamo davvero fatti in quattro per offrirvi un ventaglio di attività
ancora più ricco, vario e interessante. Tutto questo grazie anche al
vostro interesse dimostrato ogni anno con le oltre mille presenze
di partecipanti provenienti non solo da tutta la Puglia, ma dall'intera
penisola Italiana.
Vi ricordo che l'ingresso rimane
sempre GRATUITO, per entrambe le giornate.
Vi aspettiamo, anche quest'anno,
numerosissimi.
Vito Lecci
****************************************************************
SIDEREUS
Complesso Astronomico
Osservatorio Astronomico - PLANETARIUM - Galleria
delle Scienze
Via Carducci, 206 - 73050 Salve (LE)
www.sidereus.info
Ultimo aggiornamento:
01/02/2007
****************************************************************
Premesso che il concetto di
leggerezza è soggettivo.. (leggero in bytes o leggero per il portafogli?), con questo post intendo rispondere a coloro i quali mi chiedono di suggerire loro uno strumento grafico con cui connettersi a un'istanza di MS-Sql Server 2000 e 2005 allo scopo di amministrarlo e/o interrogarlo, e che abbia due tra le più invidiabili qualità che un software possa avere:
a)
costo ZERO
b)
facile da trasportare e installare
Innanzitutto, c'è il "
Sql Server Management Studio Express (SSMS Express)" che con il suo invidiabile peso di 38.5 MB (a cui aggiungere i 45.2 MB del "
Microsoft .NET Framework 2.0"
e, infine, il "
MSXML 6.0", il cui peso varia da 1.5 MB a 2.6 MB a seconda della versione), consente di connettersi a un'istanza SQL 2000 e 2005.
Se, invece, non ci interessa Sql 2005, ma le sole versioni precenti 2000 e 7.0, possiamo usare rispettivamente DbaMg2k (3.788 MB) e DbaMgr (3.763 MB), entrambi figli di
Andrea Montanari e scaricabili direttamente dal sito dell'autore
http://www.asql.biz/it/.
Lo stesso sito propone altri interessantissimi
tool per Sql Server 2005.