metodi di accesso ai data base mysql

Indagheremo in questo nuovo articolo i primi 2 metodi di base per l’accesso (in locale: sul computer personal) che potremo chiamare:

  1. da linea di comando (cmd)
  2. da interfaccia phpMyAdmin

Successivamente (dopo il presente articolo) indagheremo:

il trasferimento dei dati negli archivi mysql con:

  • file ad hoc, ovvero studiati per convertire i formati txt, excel, etc in formati idonei (anche usando la modalità “Workbench”)
  • gestione automatizzata grazie al linguaggio software php.

§§§

Sviluppiamo ora i primi due argomenti sopra citati:

§1 “creazione di un data base”:

Già nel nostro primo articolo (vedi):

apache+php+mysql

(in cui trattavamo oltre che la installazione) grazie al video seguente:

Al minuto 20.06 del video trovavamo:

“MySQL 8.0 Command Line Client”
(nella barra di windows 11 reperiamo l’attivazione con “Cerca”)

dobbiamo dare la password (creata al momento della installazione)

quindi -il video- propone sulla linea di comando:

mysql> create database mytestdb;

dove “create database” è il comando

dove “mytestdb” è il nome che avevamo scelto (ma tale nome può essere diverso).

Se infatti andiamo a vedere con phpMyAdmin:

quando scriviamo .. nel browser ..

localhost/phpMyAdmin-5.2.1-all-languages

poiché la cartella di installazione è sul mio computer:

C:\Apache24\htdocs\phpMyAdmin-5.2.1-all-languages

ci compare:

scrivendo

Nome utente = root

Password = ***

ottengo:

se aprite la foto in una nuova videata e fate lo zoom si vede il data base: “mytestdb“!
(sulla colonna di sinistra).

Da linea di comando (cmb), invece, avremmo visto la foto seguente ..

dopo avere dato i comandi:
mysql> show databases;
che mostra tutti i data base ..

++
cit on
++

mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| mytestdb |
| mytestdb2 |
| performance_schema |
| sakila |
| sys |
| world |
+——————–+
8 rows in set (0.00 sec)

++
cit off
++

il video -sopra citato- continua inizializzando la estensione ext che ci abiliterà alle nuove versioni del php, che sono già state spiegate ..

(vedi):

apache+php+mysql

Viceversa a noi interessa seguire la guida “ufficiale” che possiamo reperire al link seguente:

https://dev.mysql.com/doc/refman/8.0/en/

e più specificatamente:

https://dev.mysql.com/doc/refman/8.0/en/tutorial.html

§2 “le queries”

https://dev.mysql.com/doc/refman/8.0/en/entering-queries.html

(1) attivo “MySQL 8.0 Command Line Client”

mi dice:

++
cit on
++

Enter password: *********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.37 MySQL Community Server – GPL

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

++

cit off

++

gli dico:

msql> SELECT VERSION(), CURRENT_DATE;

mi risponde: (ho chiesto la versione sql attualmente installata)

mysql> SELECT VERSION(), CURRENT_DATE;
+———–+————–+
| VERSION() | CURRENT_DATE |
+———–+————–+
| 8.0.37 | 2024-07-05 |
+———–+————–+
1 row in set (0.00 sec)

mysql>

§3 la chiamata di “elenco di tutti i database” sul personal computer:

https://dev.mysql.com/doc/refman/8.0/en/database-use.html

mysql> SHOW DATABASES;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| mytestdb |
| performance_schema |
| sakila |
| sys |
| world |
+——————–+
7 rows in set (0.01 sec)

§4: la creazione di un database (già visto nel §1, ma stiamo seguendo il tutorial citato nel paragrafo §2)

https://dev.mysql.com/doc/refman/8.0/en/creating-database.html

mysql> CREATE DATABASE mytestdb2;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| mytestdb |
| mytestdb2 |
| performance_schema |
| sakila |
| sys |
| world |
+——————–+
8 rows in set (0.00 sec)

mysql>

§5: la creazione di una tabella(pet) in un data base(mytestdb2):

https://dev.mysql.com/doc/refman/8.0/en/creating-tables.html

mysql> SHOW TABLES;
ERROR 1046 (3D000): No database selected

non vede le tabelle se non selezioni un particolare data base con USE:

mysql> USE mytestdb2;
Database changed
mysql> show tables;
Empty set (0.01 sec)

non vi sono tabelle! (lo ha detto con Empty!)

creo una tabella!

dalla cmd:

mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
Query OK, 0 rows affected (0.02 sec)

Nota Bene: “->” si attiva automaticamente con “enter”: sono andato a capo con enter
Nota Bene: DATE va scritto a lettere maiuscole poiché è un comando e non una etichetta

ora vado a vedere cosa ho realizzato con phpMyAdmin

e cioé localhost:

http://localhost/phpMyAdmin-5.2.1-all-languages/

commento:
pet = animale domestico (nome della tabella)

name=nome dell’animale (1° campo)

owner=proprietario (1° campo della tabella pet)

species=specie animale (2° campo della tabella)

sex=sesso dell’animale (3° campo della tabella)

birth DATE= data di nascita (4° campo)

death DATE=data di morte (5° campo)

§6 riempire i campi della tabella (pet) su
phpMyAdmin?

i1) si va al link: http://localhost/phpMyAdmin-5.2.1-all-languages/

da phpMyAdmin:

etichetta per inserire i valori in pet

i2) “inserisci”

sotto la etichetta “Nome” scegliere un nome

da inserire sotto la etichetta “Valore” = Lucertolina

sotto la etichetta “ower” scegliere un nome

da inserire sotto la etichetta “Valore” = Gigia Cenerentola

etc

i3) per immettere i dati nella tabella (pulsante) “esegui”

phpMyAdmin fornisce anche le istruzioni per linea di comando
(dopo avere riempito i forms):

INSERT INTO `pet` (`name`, `owner`, `species`, `sex`, `birth`, `death`) VALUES (‘Lucertolina’, ‘Gigia Cenerentola’, ‘Lucertola’, ‘f’, ‘2024-07-05’, ‘2024-07-31’);

per inserire una nuova riga nella tabella “pet”; cambiamo leggermente il comando di insert e scriviamo da linea di comando:

INSERT INTO `pet` (`name`, `owner`, `species`, `sex`, `birth`, `death`) VALUES (‘cocca’, ‘Gigia Cocca’, ‘Lucertola’, ‘f’, ‘2024-07-05’, ‘2024-07-31’);

ma prima:

mysql> USE mytestdb2;

da linea di comando:

mysql> USE mytestdb2;
Database changed
mysql> INSERT INTO `pet` (`name`, `owner`, `species`, `sex`, `birth`, `death`) VALUES (‘cocca’, ‘Gigia Cocca’, ‘Lucertola’, ‘f’, ‘2024-07-05’, ‘2024-07-31’);
Query OK, 1 row affected (0.00 sec)

commento: ha funzionato!

§7 Analisi dei Problemi?

PROBLEMA N.1:

(1)

Il manuale NON spiegava che la possibilità di inserire dati in una tabella è “disabilitato” come scelta di uso in primis (default) (quando si agisce da locale: ovvero dal proprio personal computer: ciò per evitare di entrare a modificare tabelle che dovrebbero essere sotto il controllo del lato “server”). Ma noi stiamo imparando su postazione locale, quindi dobbiamo fare le prove di inserire in dati in una tabella.

Si può verificare ciò con la istruzione:

++
cit on
++

mysql> SHOW VARIABLES LIKE ‘LOCAL_INFILE’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| local_infile | OFF |
+—————+——-+
1 row in set (0.00 sec)

mysql>

++
cit off
++

Apparentemente basterà fare:

++
cit on
++

mysql> SET GLOBAL local_infile = true;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW VARIABLES LIKE ‘LOCAL_INFILE’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| local_infile | ON |
+—————+——-+
1 row in set (0.00 sec)

mysql>

++
cit off
++

ma non è sufficiente!

Grazie alla fonte seguente (error 2068): https://www.youtube.com/watch?v=xr7x-f-3s1A

Necessita *CAMBIARE* la configurazione nel file my.ini

in particolare

  1. salvare una versione di backup di my.ini
  2. inserire il comando “local_infile=1” in due punti specifici di my.in

esattamente

a) sotto la scritta:

++
cit on
++
[mysql]
no-beep
local_infile=1
++
cit off
++

ed inoltre sotto la scritta:

# SERVER SECTION
# ———————————————————————-
#
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this
# file.
#
[mysqld]
local_infile=1

STOP PROBLEMA N.1

PROBLEMA N. 2:

dal manuale ufficiale:

https://dev.mysql.com/doc/refman/8.0/en/loading-tables.html

oltre che la tipologia di “insert” dei dati in una tabella come:

mysql> INSERT INTO pet VALUES (‘Puffball’,‘Diane’,‘hamster’,‘f’,‘1999-03-30’,NULL);

c’è la possibilità di usare un file testo quindi del tipo file.txt

quindi scrive:

mysql> LOAD DATA LOCAL INFILE ‘/path/pet.txt’ INTO TABLE pet;

questa istruzione ha vari problemi:

2-1:

errata: ‘/path/pet.txt’

corrige: ‘path/pet.txt’

infatti il path che sia C:\Apache24\htdocs\pet.txt

va scritto come anche nel video: https://www.youtube.com/watch?v=xr7x-f-3s1A

al minuto del video 0.30 (sec)

errata: ‘/path/pet.txt’

corrige: ‘D:/indra/WIDD_20.csv’

quindi il path non è tra  delimitatori “/”

ma tra delimitatori ” ‘ ” (apice)

2-2:

Non ha spiegato come usare i delimitatori in un file txt, oppure cvs, affinché siano inseriti i valori negli associati campi.

Tutto ciò sarà trattato nel mio prossimo articolo, come già annunciato nella prefazione di inizio dell’articolo attuale.

Grazie dell’attenzione.

Eventuali segnalazioni o domande al link:

parmenidea@gmail.com

ALBERO DEI ARTICOLI sul tema INFORMATICA:

  1. apache+php+mysql (146)
    https://6viola.it/apachephpmysql/
  2. phpMyAdmin (studio) (147)
    https://6viola.it/phpmyadmin-studio/
  3. forms e il software php che elabora i forms (studio) (148)
    https://6viola.it/forms-e-il-software-php-che-elabora-i-forms-studio/
  4. metodi di accesso ai data base mysql (149)
    https://6viola.it/metodi-di-accesso-ai-data-base-mysql/
  5. load dati in tabelle MySQL da file txt / csv (150)
    https://6viola.it/load-dati-in-tabelle-mysql-da-file-txt-csv/
  6. Espansione delle basi di “dati da files in MySQL” e “dati in php versus MySQL” (151)
    https://6viola.it/espansione-delle-basi-di-dati-da-files-in-mysql-e-dati-in-php-versus-mysql/

ultimo aggiornamento:
8 luglio 2024 ore 9.58

 

 

 

 

 

 

Questa voce è stata pubblicata in informatica. Contrassegna il permalink.