MySQL Basic Database Administration Commands - Part I


Database er et struktureret datasæt, der er gemt elektronisk. Begrebet database var kendt af vores forfædre, selv når der ikke var nogen computere, men det var meget kedeligt at oprette og vedligeholde en sådan database. I en manuel database siger vi på 100 sider, hvis du skal søge efter alle medarbejdere, hvis løn var mindre end 10k, så tænk bare på hvor meget det ville have været svært.

I dagens verden kan du bare ikke undslippe databasen. Lige nu arbejder millioner af databaser rundt om i verden for at gemme og hente data af enhver art, hvad enten det er strategiske data, medarbejderjournaler eller webteknologier.

Database kaldes ofte som back-end-proces, fordi den hverken er synlig for slutbruger eller slutbruger interagerer direkte med databasen. De arbejder på front-end proces nemlig, PHP, VB, ASP.NET osv. Og beder frontend om at håndtere database i back-end.

Der er adskillige databaseserver og klienter tilgængelige som Oracle, MySQL, MySQLi, MariaDB, MongoDB osv. Syntaksen for alle disse er mere eller mindre den samme. At beherske det ene betyder at få kontrol over de fleste af dem og at lære forespørgsler i en database er meget let og sjovt.

Lad os starte med enkle forespørgsler i databasen. Vi bruger MySQL, der leveres med de fleste Linux-distributioner som standard, du kan installere det manuelt fra arkivet, hvis det ikke er installeret som standard i dit tilfælde.

En databaseforespørgsel er et simpelt stykke kode, der sendes til databasen for at få tilpasset og raffineret resultat efter behov.

Installer MySQL-database

Brug “yum” eller “apt” pakkehåndtering til at installere MySQL-database.

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

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

Start MySQL-databasetjeneste som:

# service mysqld start
or
# service mysql start

Godt at installere en MySQL-database fører dig til den konfiguration, hvor du bliver bedt om at konfigurere administratoradgangskode osv. Når installationen og start af serveren er færdig, skal du gå til din MySQL-prompt.

# mysql -u root -p

Udskift rod med dit konfigurerede brugernavn, og indtast adgangskode, når du bliver bedt om det. Hvis loginoplysningerne er korrekte, vil du være ved din MySQL-prompt ved at blinke.

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>

Det er meget lærerigt og sjovt at udføre forespørgsler på denne prompt.

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

mysql>

Bemærk: Den rapporterer, at forespørgslen var korrekt, betyder, at der oprettes en database. Du kan bekræfte din nyoprettede database som.

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

Bemærk: Læg mærke til din database i ovenstående output.

Nu skal du vælge databasen for at arbejde på den.

mysql> use tecmint;
Database changed
mysql>

Her opretter vi en tabel, der siger "minttec" med tre felter som:

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

Bemærk: Ovenstående forespørgsel siger OK, hvilket betyder, at tabellen blev oprettet uden nogen fejl. For at bekræfte tabellen, kør nedenstående forespørgsel.

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

1 row in set (0.00 sec) 

mysql>

Det går fint indtil nu. Jep! Du kan se de kolonner, du oprettede i tabellen “minttec” som:

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>

Det var intet mindre end en magi. Alligevel vil jeg fortælle dig om typerne af erklæring og deres betydning.

  1. Int er heltal
  2. Varchar er char med variabel længde som defineret. Værdien efter Type er længden af feltet, op til hvilket den kan gemme data.

OK, nu skal vi tilføje en kolonne, der siger 'efternavn' efter kolonne 'fornavn'.

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

Bekræft det nu i din tabel.

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>

Nu vil vi tilføje en kolonne til højre og sige en kolonne 'land' til højre for e-mail.

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>

Bekræft ovenstående kolonneindsætningsforespørgsel.

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>

Hvad med at indsætte værdier i feltet?

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

mysql>

Hvad med at indsætte mere end 1 værdi ad gangen i ovenstående tabel.

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

Bekræft ovenstående indsættelse.

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>

Lad os sige, at den tredje post i ovenstående output er ugyldig, og vi skal slette den tredje post.

mysql> DELETE FROM minttec WHERE id = 3;

Query OK, 1 row affected (0.02 sec)

Bekræft ovenstående handling.

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) skal redigeres.

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>

Bekræft ovenstående forespørgsel.

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>

Bemærk: Ovenstående forespørgsel, som udført, er ikke en god idé. Det vil ændre id'et til '4', hvor fornavnet nogensinde er 'tecmint'. Det er altid en god ide at bruge mere end en kolonne med hvor klausul for at få minimal fejl, som:

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>

Lad os have brug for at droppe (slette) en kolonne, som vi synes er uden betydning, sige 'land' her.

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

mysql>

Bekræft tabellen.

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>

Tror du ikke, at vores tabelnavn "minttec" ikke er særlig relevant. Hvad med at ændre det til tecmint_table.

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

mysql>

Se alle tabellerne under den aktuelle database.

mysql> show tables; 

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

mysql>

Tabellen er blevet omdøbt. Tag nu en sikkerhedskopi af ovenstående MySQL-database i en enkelt kommandolinje uden noget sofistikeret værktøj. Kør nedenstående kode på din terminal og ikke på mysql-prompt.

# 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

Det er altid en god ide at vedligeholde Backup af MySQL-databaser. Gendannelse af sikkerhedskopierede MySQL Data er igen en simpel kode kode, du skal køre ved din terminalprompt og ikke ved din mysql-prompt.

Men vent først, vi sletter databasen for at kontrollere, om vores gendannelse er perfekt.

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

Se efter database 'tecmint' på din databaseserver.

mysql> show databases; 

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

7 rows in set (0.00 sec) 
mysql>

Store! Databasen er tabt, men vi behøver ikke bekymre os, vi har sikkerhedskopien.

For at gendanne mistet database skal du køre følgende kommando.

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

OOPS! En fejl, hej, vi har ikke oprettet database tecmint. Så gå til din mysql-prompt, og opret en database 'tecmint'.

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

mysql>

Nu tid til at køre gendannelseskommandoen ved din shell-prompt (strengt).

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

Bekræft din database.

mysql> show databases; 

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

Bekræft indholdet af databasen.

mysql> show tables from tecmint;

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

mysql>

Bekræft indholdet af din gendannede tabel.

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)

Dette er ikke afslutningen bestemt, vi vil dække begrebet primær nøgle, fremmed nøgle, flere tabeller og kørende forespørgsler ved hjælp af simpelt PHP-script i den næste del af artiklen.

Glem ikke at fortælle os, hvordan du havde det, mens du gennemgik artiklen. Dine kommentarer er meget værdsat. Bliv sund og tunet, bliv forbundet med Tecmint.