MySQL andmebaasi põhihalduse käsud - I osa


Andmebaas on elektrooniliselt salvestatud struktureeritud andmete kogum. Andmebaasi mõiste oli meie esivanematele teada isegi siis, kui arvuteid polnud, kuid sellise andmebaasi loomine ja haldamine oli väga tüütu töö. Kui peate 100-leheküljelises käsitsi andmebaasis otsima kõiki töötajaid, kelle palk oli alla 10k, mõelge lihtsalt, kui raske see oleks olnud.

Tänapäeva maailmas ei pääse sa lihtsalt andmebaasist. Praegu töötab miljonid andmebaasid kogu maailmas, et salvestada ja tuua igasuguseid andmeid, olgu need siis strateegilised andmed, töötajate andmed või veebitehnoloogiad.

Andmebaasi nimetatakse sageli tagaprotsessiks, kuna see pole lõpptarbijale nähtav ega lõpptarbija suhtle andmebaasiga otse. Nad töötavad eessüsteemi protsessides, nimelt PHP, VB, ASP.NET jne ja paluvad kasutajaliidel tegeleda andmebaasiga tagalas.

Saadaval on mitu andmebaasiserverit ja klienti, näiteks Oracle, MySQL, MySQLi, MongoDB jne. Kõigi nende süntaks on enam-vähem sama. Ühe valdamine tähendab enamiku neist kontrolli saavutamist ja andmebaasi päringute õppimine on väga lihtne ja lõbus.

Alustame lihtsate päringutega andmebaasis. Kasutame MySQL-i, mis on vaikimisi komplekteeritud enamiku Linuxi distributsioonidega. Võite selle installida hoidlast käsitsi, kui teie puhul pole see vaikimisi installitud.

Noh, andmebaasipäring on lihtne kooditükk, mis saadetakse andmebaasi, et saada kohandatud ja täpsustatud tulemus vastavalt vajadusele.

Installige MySQL-i andmebaas

MySQL-i andmebaasi installimiseks kasutage paketihaldurit "yum" või "apt".

# yum install mysql mysql-client mysql-server  (on Yum based Systems)

# apt-get install mysql mysql-client mysql-server (on Apt based Systems)

Käivitage MySQL-i andmebaasiteenus järgmiselt:

# service mysqld start
or
# service mysql start

MySQL-i andmebaasi installimine viib teid konfiguratsiooni, kus teil palutakse seadistada administraatori parool jne. Kui olete serveri installimise ja käivitamise lõpetanud, minge oma MySQL-i viipale.

# mysql -u root -p

Asendage juur oma konfigureeritud kasutajanimega ja sisestage viipamise korral parool. Kui sisselogimismandaat on õige, olete oma silmapilgu ajal MySQL-i viip.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 195 

Server version: 5.5.31-0+wheezy1 (Debian) 

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 

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.

mysql>

Nüüd on selle kiirusega päringute esitamine väga hariv ja lõbus.

mysql> create database tecmint ;
Query OK, 1 row affected (0.02 sec) 

mysql>

Märkus. See teatab, et päring oli õige, see tähendab andmebaasi loomist. Oma värskelt loodud andmebaasi saate kontrollida kui.

mysql> show databases; 
+--------------------+
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
| tecmint            | 
| test               | 
+--------------------+ 
9 rows in set (0.00 sec) 
mysql>

Märkus. Pange tähele oma andmebaasi ülaltoodud väljundis.

Nüüd peate selle töötamiseks valima andmebaasi.

mysql> use tecmint;
Database changed
mysql>

Siin loome tabeli, mis ütleb "minttec" ja millel on kolm välja:

mysql> CREATE TABLE minttec (
    -> id Int(3), 
    -> first_name Varchar (15), 
    -> email Varchar(20) 
    -> ); 
Query OK, 0 rows affected (0.08 sec) 
mysql>

Märkus: ülaltoodud päring ütleb OK, mis tähendab, et tabel loodi ilma tõrgeteta. Tabeli kinnitamiseks käivitage allolev päring.

mysql> show tables; 
+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| minttec           | 
+-------------------+ 

1 row in set (0.00 sec) 

mysql>

Asjad lähevad siiani hästi. Jep! Tabelis “minttec” loodud veerge saate vaadata järgmiselt:

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+ 
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+ 
3 rows in set (0.00 sec)

mysql>

See polnud midagi muud kui maagia. Igatahes räägin teile deklaratsiooniliikidest ja nende tähendusest.

  1. Int on täisarv
  2. Varchar on söe, millel on määratletud muutuv pikkus. Tüübi järel olev väärtus on välja pikkus, kuni see saab andmeid salvestada.

OK, nüüd peame veeru „eesnimi” järele lisama veeru, mis ütleb „perekonnanimi”.

mysql> ALTER TABLE minttec ADD last_name varchar (20) AFTER first_name; 
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0

Nüüd kontrollige seda oma tabelis.

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+ 
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| last_name  | varchar(20) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+ 

4 rows in set (0.00 sec) 

mysql>

Nüüd lisame paremale veeru, öelge paremale veerg ‘riik’.

mysql> ALTER TABLE minttec ADD country varchar (15) AFTER email; 
Query OK, 0 rows affected (0.16 sec) 
Records: 0  Duplicates: 0  Warnings: 0 

mysql>

Kontrollige ülaltoodud veeru sisestamise päringut.

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| last_name  | varchar(20) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
| country    | varchar(15) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec) 

mysql>

Aga väärtuste sisestamine väljale?

mysql> INSERT INTO minttec VALUES ('1' , 'Ravi' , 'Saive' , '[email ' , 'India' );
Query OK, 1 row affected (0.02 sec) 

mysql>

Kuidas oleks, kui sisestaksite ülaltoodud tabelisse korraga rohkem kui 1 väärtuse.

mysql> INSERT INTO minttec VALUES ('2' , 'Narad' , 'Shrestha' , '[email ' , 'India' ), ('3' , 'user' , 'singh' , '[email ' , 'Aus' ), ('4' , 'tecmint' , '[dot]com' , '[email ' , 'India' );
Query OK, 3 rows affected (0.05 sec) 
Records: 3  Duplicates: 0  Warnings: 0

Kontrollige ülaltoodud sisestust.

mysql> select * from minttec; 
+------+------------+-----------+-------------------+---------+ 
| id   | first_name | last_name | email             | country | 
+------+------------+-----------+-------------------+---------+ 
|    1 | Ravi	    | Saive     | [email  | India   | 
|    2 | Narad      | Shrestha  | [email      | India   | 
|    3 | user       | singh     | [email       | Aus     | 
|    4 | tecmint    | [dot]com  | [email  | India   | 
+------+------------+-----------+-------------------+---------+ 

4 rows in set (0.00 sec)

mysql>

Oletame, et ülaltoodud väljundi kolmas kirje on vale ja me peame kolmanda kirje kustutama.

mysql> DELETE FROM minttec WHERE id = 3;

Query OK, 1 row affected (0.02 sec)

Kontrollige ülaltoodud toimingut.

mysql> select * from minttec;

+------+------------+-----------+-------------------+---------+ 
| id   | first_name | last_name | email             | country | 
+------+------------+-----------+-------------------+---------+
|    1 | Ravi       | Saive     | [email  | India   | 
|    2 | Narad      | Shrestha  | [email      | India   | 
|    4 | tecmint    | [dot]com  | [email  | India   | 
+------+------------+-----------+-------------------+---------+
3 rows in set (0.00 sec)

Id (= 4) tuleb muuta.

mysql> UPDATE minttec SET id = 3 WHERE first_name = 'tecmint'; 
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Kontrollige ülaltoodud päringut.

mysql> UPDATE minttec SET id = 3 WHERE first_name = 'tecmint'; 
Query OK, 1 row affected (0.02 sec) 
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Märkus. Ülaltoodud päring ei ole hea mõte. See muudab ID väärtuseks 4, kus eesnimi on kunagi tecmint. Minimaalse vea saamiseks on alati hea kasutada mitut veergu koos klausliga:

mysql> UPDATE minttec SET id = 6 WHERE first_name = 'tecmint'AND last_name = '[dot]com'; 
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Peame viskama (kustutama) veeru, mis meie arvates pole oluline öelda siin „riik”.

mysql> ALTER TABLE minttec drop country; 
Query OK, 3 rows affected (0.15 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql>

Kontrollige tabelit.

mysql> select * from minttec; 

+------+------------+-----------+-------------------+ 
| id   | first_name | last_name | email             | 
+------+------------+-----------+-------------------+ 
|    1 | Ravi       | Saive     | [email  | 
|    2 | Narad      | Shrestha  | [email      | 
|    6 | tecmint    | [dot]com  | [email  | 
+------+------------+-----------+-------------------+
3 rows in set (0.00 sec) 

mysql>

Kas te ei arva, et meie tabeli nimi „minttec“ pole eriti asjakohane. Kuidas oleks selle muutmisega tecmint_table.

mysql> RENAME TABLE minttec TO tecmint_table; 
Query OK, 0 rows affected (0.03 sec)

mysql>

Vaadake kõiki praeguse andmebaasi all olevaid tabeleid.

mysql> show tables; 

+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| tecmint_table     | 
+-------------------+
1 row in set (0.00 sec) 

mysql>

Tabel on ümber nimetatud. Nüüd tehke ülaltoodud MySQL-i andmebaasi varukoopia ühes käsureas ilma keeruka tööriistata. Käivitage allpool olev kood oma terminalis ja mitte mysql-i viipal.

# mysqldump -u root -p tecmint > tecmint.sql

check the dumped file on your desktop which would have contents something like
-- MySQL dump 10.13  Distrib 5.5.31, for debian-linux-gnu (i686) --
-- Server version 5.5.31-0+wheezy1 -- 
Dump completed on 2013-09-02 12:55:37

Alati on hea säilitada MySQL-i andmebaaside varukoopia. Varundatud MySQL-i andmete taastamine on jällegi lihtne koodirida, mida peate käivitama terminali viip, mitte aga mysql-i viip.

Kuid oodake kõigepealt, et kustutada andmebaas, et kontrollida, kas meie taastamine on täiuslik.

mysql> drop database tecmint; 
Query OK, 1 row affected (0.02 sec)

Kontrollige oma andmebaasiserveris andmebaasi 'tecmint' olemasolu.

mysql> show databases; 

+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| my_database        | 
| mysql              | 
| performance_schema | 
| phpmyadmin         | 
| sisso              | 
| test               | 
+--------------------+

7 rows in set (0.00 sec) 
mysql>

Suurepärane! Andmebaas on kadunud, kuid me ei pea muretsema, meil on varukoopia.

Kadunud andmebaasi taastamiseks käivitage järgmine käsk.

# mysql -u root -p tecmint < tecmint.sql
Enter password:
ERROR 1049 (42000): Unknown database 'tecmint'

OOPS! Viga, hei, me ei ole andmebaasi tekminti loonud. Nii et minge oma mysql-i viipale ja looge andmebaas 'tecmint'.

mysql> create database tecmint; 
Query OK, 1 row affected (0.00 sec) 

mysql>

Nüüd on käsk taastada käsk taaste shellil (rangelt).

# mysql -u root -p tecmint < tecmint.sql 
Enter password:

Kontrollige oma andmebaasi.

mysql> show databases; 

+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
| tecmint            | 
| test               | 
+--------------------+ 
8 rows in set (0.00 sec)

Kontrollige andmebaasi sisu.

mysql> show tables from tecmint;

+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| tecmint_table     | 
+-------------------+ 
1 row in set (0.00 sec)

mysql>

Kontrollige oma taastatud tabeli sisu.

mysql> select * from tecmint_table; 

+------+------------+-----------+-------------------+ 
| id   | first_name | last_name | email             | 
+------+------------+-----------+-------------------+ 
|    1 | Ravi       | Saive     | [email  | 
|    2 | Narad      | Shrestha  | [email      | 
|    6 | tecmint    | [dot]com  | [email  | 
+------+------------+-----------+-------------------+

3 rows in set (0.00 sec)

See pole kindlasti lõpp, käsitleme artikli järgmises osas põhivõtme, võõrvõti, mitut tabelit ja lihtsate PHP-skripte kasutades päringute käivitamist.

Ärge unustage meile öelda, mida tundsite artikli läbimisel. Teie kommentaare hinnatakse kõrgelt. Olge terved ja häälestatud, püsige Tecmintiga ühenduses.