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

with 1 comment(s)
Filed under:

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!
with no comments
Filed under:
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
****************************************************************
with 3 comment(s)
Filed under:
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.
with no comments
Filed under: