Creació de base de dades utilitzant llenguatge SQL.

12
Instal·lació MySQL server Create database Charset Collation Miquel Boada 25-11-2016

Transcript of Creació de base de dades utilitzant llenguatge SQL.

Instal·lació MySQLserver

Create database

Charset

Collation

Miquel Boada

25-11-2016

Desenvolupament aplicacions multiplataforma (DAM)

Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL

Tema 0 – Introducció . Creació bases de dades

Objectius1. Creació de bases de dades.

Coneixements previs• Coneixements bàsics Linux

Autor: Miquel Boada Pàgina 1 de 13

Desenvolupament aplicacions multiplataforma (DAM)

Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL

Tema 0 – Introducció . Creació bases de dades

Creació base de dades amb SQLInstal·lació MySQL server..................................................................................................1Create database................................................................................................................1Charset..............................................................................................................................1Collation............................................................................................................................1Objectius...........................................................................................................................1Coneixements previs.........................................................................................................1Introducció.........................................................................................................................3

MySQL Server...............................................................................................................3 MySQL Workbench........................................................................................................3

Llenguatge SQL.................................................................................................................3Instal·lació de MySQL Server.............................................................................................4

Configuració dels repositoris.........................................................................................4 Instal·lació sistema gestor base de dades....................................................................4

Instal·lació MySQL Workbench...........................................................................................5 Configuració client MySQL Workbench.........................................................................5

Creació de base de dades en SQL.....................................................................................7 Sintaxis «Create Database»..........................................................................................7

Interpretació sintaxis................................................................................................8 Mots obligatoris.....................................................................................................8 Símbol claus - {}...................................................................................................8 Símbol de barra - |.................................................................................................8 Símbol clàudator - []..............................................................................................8

Exemple d'execució......................................................................................................8 «Charset» i «Collate»....................................................................................................9

charset......................................................................................................................9 collate.......................................................................................................................9

«Charset» i «Collate»: exemples.........................................................................10 Aplicació «charset» i «collate»................................................................................10

Creació base de dades – Exemples..................................................................................10Webgrafia........................................................................................................................11

Autor: Miquel Boada Pàgina 2 de 13

Desenvolupament aplicacions multiplataforma (DAM)

Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL

Tema 0 – Introducció . Creació bases de dades

IntroduccióEls objectius principals de crear una base de dades és la de poder consultar i gestionarla informació de forma concurrent per molts usuaris a la vegada. L'utilització d'una basede dades monousuari , tot i que pugui ser útil en algunes situacions molt puntuals,normalment es treballa amb sistemes gestors de base de dades centralitzades, com laque ens aporta el software de MySQL server.Com a eina client, per accedir al servidor, s'utilitzarà el software MySQL Workbench.

MySQL ServerMySQL Server és un software que implementa un sistema gestor de base de dades quepermet l'accés, configuració i gestió de la informació per múltiples usuaris de formaconcurrent. Cal tenir en compte que MySQL Server és un software de llicència GPL osoftware lliure: l'ús, la compartició, modificació i distribució de les modificacions estangarantitzats.

MySQL WorkbenchMySQL Server és un programa de servidor; cal un software (client) per a poder-nos-hiconnectar/accedir i poder interactuar amb ell. Tot i que hi ha moltes clients disponibles,s'utilitzarà MySQL Workbench com a eina client pel sistema gestor de base de dades.MySQL Workbench és una eina gràfica que incorpora múltiples utilitats per a poderinteractuar amb un servidor MySQL. Tot i que l'eina permet efectuar una connexióremota (entre dos ordinadors distants), per a fer els exemples la connexió s'establiràsempre en local: això vol dir que tant el client de base de dades com el servidor de basede dades estaran instal·lats en el mateix equip físic o virtual.

Llenguatge SQLEl llenguatge SQL, de les sigles en anglès Standard Query Language (llenguatge deconsulta estàndard) és un llenguatge informàtic orientat a la gestió dels sistemesgestors de bases de dades. Utilitzant aquest llenguatge és possible interactuardirectament amb el servidor de base de dades. El llenguatge SQL està dividit en 4 parts:

➔ Data Definition Language (DDL): llenguatge de definició de dades.

➔ Data Manipulation Language (DML): llenguatge de manipulació de dades.

➔ Data Control Language (DCL): llenguatge de control de dades.

➔ Transaction Control Language (TCL): llenguatge de control de transaccions.

Dels diferents tipus de llenguatge SQL en aquest document utilitzarem el DDL, que és elllenguatge que ens permet crear elements (bases de dades, taules, camps...) en unsistema gestor de base de dades.Tot i que el llenguatge SQL sigui un estàndard, cal tenir en compte que hi ha petitesvariacions en la seva sintaxis segons el sistema gestor de base de dades. Durant eldocument es farà referència a la notació específica relacionada amb el sistema gestorde base de dades MySQL.

Autor: Miquel Boada Pàgina 3 de 13

Desenvolupament aplicacions multiplataforma (DAM)

Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL

Tema 0 – Introducció . Creació bases de dades

Instal·lació de MySQL ServerPer a realitzar els diferents exemples d'aquest document s'utilitzarà un equip servidoramb el sistema operatiu Linux i distribució Debian en la seva versió «Jessie». El softwareMySQL Server està disponible en els repositoris estàndard d'aquesta distribució fent quela seva instal·lació sigui realment sencilla.

Configuració dels repositorisEl primer pas per a procedir en la instal·lació és verificar que els repositoris del nostreequip estan correctament configurats. En el nostre cas s'han utilitzat els repositorisestàndard de «uk» (http://ftp.uk.debian.org/debian/) . La substitució de «jessie» per«stable» és també una opció vàlida.

Instal·lació sistema gestor base de dadesActualitzem els fitxers d'índex de paquets amb la comanda «apt-get update» i amb«apt-get install mysql-server» instal·lem el sistema de gestor de base de dades MySQL.

La comanda anterior instal·larà la versió estable de MySQL per la distribució Debian enla seva versió 8. En el nostre cas utilitzarem la versió 5.5.Durant la instal·lació se'ns demanarà el password de l'usuari administrador del servidorde base de dades. El nom de l'usuari per defecte és root. Tot i que el password siguiopcional, en un entorn de producció cal associar un «password» que compleixi amb elsrequisits de complexitat recomanats per a mots clau.

Video: https://youtu.be/Qg_wb_eZOrk

Autor: Miquel Boada Pàgina 4 de 13

Desenvolupament aplicacions multiplataforma (DAM)

Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL

Tema 0 – Introducció . Creació bases de dades

Instal·lació MySQL WorkbenchPer a instal·lar el client d'accés al servidor MySQL serà necessari disposar d'un entorngràfic ja instal·lat en el nostre servidor1. En el nostre cas s'ha instal·lat en el servidor unentorn gràfic «lxde». La comanda a executar per la instal·lació del client és la mateixaque hem utilitzat pel servidor però en aquest cas el nom del paquet a instal·lar és«mysql-workbench».

Video: https://youtu.be/XY85OOXnWRc

Configuració client MySQL WorkbenchAmb el software MySQL Workbench instal·lat cal establir la connexió entre el client i elservidor. Per fer-ho cal obrir el programa i polsar sobre el botó «+» que hi ha pròxim a«Mysql connections».

1 La instal·lació del client i del servidor en la mateixa màquina és per motius de simplificació. Normalment, el servidor s'accedeixdes d'una segona màquina client de forma remota.

Autor: Miquel Boada Pàgina 5 de 13

Desenvolupament aplicacions multiplataforma (DAM)

Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL

Tema 0 – Introducció . Creació bases de dades

Comprovem amb el botó «Test connection» que laconfiguració és correcte. En el cas que ens donialgun error cal comprovar que el servidor mysql-server s'està executant. Per a gestionar l'estat delservidor polsarem sobre el botó OK de laconnexió per poder accedir a les eines de gestióde MySQL Server disponibles en l'eina. En eltabulador de «Management» del menú esquerrade l'eina, en la secció «Instance» tenim lapossibilitat de parar i iniciar el servidor.

L'opció «server status» ubicada en la secció «management» podem comprovar l'estatdel nostre servidor MySQL

Amb la connexió estaberta es pot procedir a crear les nostres bases de dades. Tot i quel'eina permeti crear bases de dades de forma gràfica, en el nostre cas utilitzaremdirectament el llenguatge SQL per a la seva creació.Video: https://youtu.be/QOQ2XV2n-pk

Autor: Miquel Boada Pàgina 6 de 13

Desenvolupament aplicacions multiplataforma (DAM)

Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL

Tema 0 – Introducció . Creació bases de dades

Creació de base de dades en SQLPer a crear una base de dades ens hem d'ubicar en una finestra de consulta del clientWorkbench. L'accés a la pantalla de consulta és el predeterminat després de connectar-nos en el servidor.

Com es pot observar en l'exemple es pot utilitzar el doble guionet (--) per a fercomentaris. El doble guionet permet només comentar una única línia. Si es volcomentar un conjunt de línies es pot utilitzar com a alternativa /* i */ . Totes les líniesincloses entre les dues parelles de símbols seran ignorades pel servidor.La instrucció per a crear una base de dades és «Create Database» . Una base de dadesés un contenidor on es podran emmagatzemar les taules amb els seus camps i enúltima instància les dades o informació per la qual s'ha designat la base de dades.En l'execució de les instruccions SQL no es diferencia majúscules de minúscules, pertant, les comandes «create database», «Create Database» o «CREATE DATABASE» sóncomandes equivalents.

Sintaxis «Create Database»

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name

[create_specification] ...

create_specification:

[DEFAULT] CHARACTER SET [=] charset_name

| [DEFAULT] COLLATE [=] collation_name

En el requadre anterior hi ha l'especificació de la sintaxis per l'ordre de crear d'una basede dades. El primer que cal observar és que hi ha diferents mots, alguns en cursiva idiferents símbols. Cada símbol i format de lletra es basen en un significat estàndard.

Autor: Miquel Boada Pàgina 7 de 13

Desenvolupament aplicacions multiplataforma (DAM)

Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL

Tema 0 – Introducció . Creació bases de dades

Interpretació sintaxisEl llenguatge utilitzat per a indicar la sintaxis d'una comanda és un sistema estàndardàmpliament utilitzat en informàtica. El seu coneixement ens permet interpretar lasintaxis de noves comandes com especificacions d'altres comandes (Linux, PHP, …)

Mots obligatoris

Els mots no inclosos entre cap símbol (CREATE i db_name) o inclosos entre claus(DATABASE i SCHEMA) són mots obligatoris. Els mots en cursiva cal modificar-los pel seusignificat. Així, per exemple, en la sintaxis de la comanda apareix «db_name» encursiva: en l'execució de la comanda CREATE substituirem «db_name» pel nom que esvulgui donar a la nova base de dades. La resta de mots no estan en cursiva i, per tant,seran literals.

Símbol claus - {}

El símbol de claus s'utilitza per a indicar un conjunt de paraules en el nostre cas elconjunt de paraules estaria format per: DATABASE i SCHEMA

Símbol de barra - |

Amb el símbol | s'indica que cal escollir un dels mots que separa. En l'exemple utilitzatper a crear una base de dades ens indica que hem d'escollir entre DATABASE o SCHEMA.

Símbol clàudator - []

Tots els mots que estiguin entre clàudators són opcionals. Per tant, no cal especificar-lossi no precisem de la seva funcionalitat.

Exemple d'execucióSeguint amb els criteris associats a la sintaxis exposats anteriorment es pot deduir queper a crear una base de dades ho podem fer executant la comanda:

CREATE DATABASE prova;2

o bé

CREATE SCHEMA prova;3

Si es compara l'exemple i la sintaxis de la comanda es pot observar com la restad'opcions estan entre claudàtors i, per tant, no són necessaris.

2 Les instruccions no són case-sensitive: podem utilitzar majúscules i minúscules indiferentment3 La paraula DATABASE i SCHEMA són sinònims: no hi ha cap diferència entre utilitzar una o altra paraula en la creació de la base dedades.

Autor: Miquel Boada Pàgina 8 de 13

Desenvolupament aplicacions multiplataforma (DAM)

Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL

Tema 0 – Introducció . Creació bases de dades

«Charset» i «Collate»Quan es crea una base de dades cal tenir en compte quin joc de caràcters s'utilitzaràper a emmagatzemar la informació. El joc de caràcters en principi cal suposar que seràdiferent si la base de dades s'ha d'utilitzar a la Xina o al Japó que si s'ha d'utilitzar aEuropa. Per a especificar el joc de caràcters que es vol utilitzar s'utilitzen els arguments«charset» i «collate». Com es pot observar la seva especificació és opcional. Si s'ometl'argument s'utilitzarà el joc de caràcters per defecte del sistema gestor de base dedades4. Podem consultar aquest joc executant la comanda:

select charset(version()), collation(version());

charsetL'argument «charset» només permet indicar quin «alfabet» o joc de caràcters es volutilitzar en la base de dades. Quan s'utilitza aquest argument l'ordenació i comparaciódel text es realitza mitjançant el mètode establert per defecte pel «charset» especificat.Per a veure tots els jocs de caràcters disponibles disposem de la instrucció:

show character set

Per a canviar de forma permanent el charset per defecte cal modificar el fitxer deconfiguració de mysql. Si es vol canviar el joc de caràcters de forma temporal es potexecutar la comanda «set names joc-de-caràcters» . Per exemple:

set names 'utf8';

Especifica que utilitzi el joc de caràcters definit com a «utf8».

collateL'especificació associada a «collate» fa referència tant al joc de caràcters com alsistema utilitzat per a ordenar o comparar els elements. Amb la clàusula «collate» notan sols s'indica quin joc de caràcters utilitzar sinó també quin comportament es desitjaquan es cerqui o s'ordeni la informació en la base de dades. Per exemple, ens potinteressar que quan es busqui una informació en la base de dades no es diferencïi entremajúscules i minúscules («case-insensitive») o bé que el context sigui «case-sensitive».Per a entendre el funcionament de «collate» i «charset» es proposa executar lessegüents instruccions.

set names 'utf8';select 'A'='a','À'='A', 'à'='a', 'é'='e', 'ü'='u';-- Resultat: 1,1,1,1,1 (1 significa que és cert i 0 (zero) que és fals)

El resultat 1 significa que els dos caràcters (a o e) que es comparen són considerats elmateix caràcter. Amb el sistema 'utf8', el sistema gestor de base de dades no diferencia

4 Les eines que s'utilitzin per accedir a la base de dades també hauran de suportar el joc de caràcters definit per la base de dades.

Autor: Miquel Boada Pàgina 9 de 13

Desenvolupament aplicacions multiplataforma (DAM)

Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL

Tema 0 – Introducció . Creació bases de dades

les lletres accentuades de les no accentuades5. Si volem que la nostra base de dades nosigui sensible als accents seria una bona codificació.

«Charset» i «Collate»: exemples

-- Sense especificar collate, s'assigna el collate associat per defecte al joc de caràctersset names 'latin1';select 'A'='a','À'='A', 'à'='a', 'é'='e', 'ü'='u';-- Resultat: 1,0,0,0,0-- El «collate» associat per defecte a 'latin1' és case-insensitive. Per aquest motiu, el resultat -- de les dues execucions és el mateixset names 'latin1' collate 'latin1_general_ci';select 'A'='a','À'='A', 'à'='a', 'é'='e', 'ü'='u';-- Resultat: 1,0,0,0,0 -- Diferenciar majúscules i minúscules (case-sensitive)set names 'latin1' collate 'latin1_general_cs';select 'A'='a','À'='A', 'à'='a', 'é'='e', 'ü'='u';-- Resultat: 0,0,0,0,0

Aplicació «charset» i «collate»El fet de definir un determinat joc de caràcters «charset» i «collate» per a una base dedades determina el comportament per defecte de totes les seves taules i camps enrelació a l'ordenació dels caràcters i a la seva comparació. Si és necessari, podenparticularitzar-se aquestes opcions a nivell de taula i de camp en aquells casosespecífics que siguin necessaris. Per exemple, si en una taula hem de guardar un mot clau, és imprescindible que elgestor de base de dades sigui capaç de comparar aquell camp on es guarda el«password» utilitzant majúscules de minúscules: independentment de si aquestcomportament és desitjable o no en la resta de camps de la base de dades.

Creació base de dades – Exemples

Create database db1 character set latin1 collate latin1_spanish_ci;Create database db2 character set latin1;Create database db3 collate latin1_general_cs;Create database if not exists db3 collate latin1_general_cs;Create database db4 default character set=latin1;

Video: https://youtu.be/TZSxtl8Cy3EVideo: https://youtu.be/m_k9Xq1q2hoVideo: https://youtu.be/FURiiQP3Eoo

5 També és insensible a les dièresis com es pot comprovar en l'execució de la comanda.

Autor: Miquel Boada Pàgina 10 de 13

Desenvolupament aplicacions multiplataforma (DAM)

Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL

Tema 0 – Introducció . Creació bases de dades

Webgrafiahttp://dev.mysql.com/doc/refman/5.7/en/charset-general.htmlhttp://dev.mysql.com/doc/refman/5.7/en/charset-database.htmlhttp://www.tech-recipes.com/rx/55356/dml-ddl-dcl-and-tcl-statements-in-sql-with-examples/

Autor: Miquel Boada Pàgina 11 de 13