MySQL Basic Database Administration Commands - Deel I


Datebank ass e strukturéierte Set vun Daten, déi elektronesch gespäichert sinn. D'Konzept vun der Datebank war eis Vorfahren bekannt, och wa keng Computere waren, awer d'Erstelle an d'Erhalen vun esou enger Datebank war ganz langweileg Aarbecht. An enger manueller Datebank soen vun 100 Säiten, wann Dir no all Mataarbechter sichen muss, deenen hir Pai manner wéi 10k waren, denkt just wéi schwéier et dann gewiescht wier.

An der heiteger Welt kënnt Dir einfach net vun der Datebank entkommen. De Moment schaffe Millioune Datebank ronderëm d'Welt fir Daten vun all Zort ze späicheren an ze sichen, sief et strategesch Donnéeën, Mataarbechterrekord oder Webtechnologien.

Datebank gëtt dacks als Back-End Prozess bezeechent, well et weder siichtbar ass fir den Endbenotzer nach den Endbenutzer direkt mat der Datebank interagéiert. Si schaffen op Front-End Prozess nämlech PHP, VB, ASP.NET, etc.

Et gi verschidde Datebankserver a Cliente verfügbar wéi Oracle, MySQL, MySQLi, MongoDB etc. D'Syntax vun all dësen ass méi oder manner d'selwecht. Een ze beherrschen heescht d'Kontroll iwwer déi meescht vun hinnen ze kréien an d'Ufroe vun enger Datebank ze léieren ass ganz einfach a lëschteg.

Loosst eis mat einfachen Ufroen op der Datebank ufänken. Mir wäerte MySQL benotzen déi mat de meeschte Linux Verdeelungen als Standard gebündelt ass, Dir kënnt et manuell vum Repository installéieren, wann et net als Standard an Ärem Fall installéiert ass.

Gutt eng Datebank Ufro ass en einfacht Stéck Code deen an d'Datebank geschéckt gëtt fir personaliséiert a raffinéiert Resultat ze kréien, wéi néideg.

Installéiert MySQL Datebank

Benotzt yum oder apt Package Manager fir MySQL Datebank z'installéieren.

# 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 Datebank Service als:

# service mysqld start
or
# service mysql start

Gutt d'Installatioun vun enger MySQL-Datebank bréngt Iech an d'Konfiguratioun wou Dir gefrot sidd e Administrator-Passwuert opzestellen, asw. Wann d'Installatioun fäerdeg ass an de Server starten, gitt op Är MySQL-Prompt.

# mysql -u root -p

Ersetzen Root mat Ärem konfiguréierte Benotzernumm a gitt Passwuert wann Dir gefrot gëtt, wann d'Login-Umeldungsinformatioun richteg ass, sidd Dir bei Ärem MySQL-Prompt beim Blénken vun Ären Aen.

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>

Elo Ufroen op dëser Prompt ausféieren ass ganz pädagogesch a lëschteg.

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

mysql>

Notiz: Et bericht datt d'Ufro richteg war, heescht datt d'Datebank erstallt gëtt. Dir kënnt Är nei erstallt Datebank als.

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

Notiz: Notéiert Är Datebank am uewe genannten Output.

Elo musst Dir d'Datebank auswielen fir drun ze schaffen.

mysql> use tecmint;
Database changed
mysql>

Hei wäerte mir en Dësch erstellen minttec mat dräi Felder wéi:

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

Notiz: Déi uewe genannte Ufro seet OK wat heescht datt den Dësch ouni Feeler erstallt gouf. Fir d'Tabell z'iwwerpréiwen, fuert déi folgend Ufro un.

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

1 row in set (0.00 sec) 

mysql>

D'Saache lafen bis elo gutt. Jo! Dir kënnt d'Saile kucken, déi Dir an der Tabell minttec erstallt hutt wéi:

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>

Et war näischt manner wéi eng Magie. Jiddefalls wäert ech Iech iwwer d'Zorte vun der Deklaratioun an hir Bedeitung soen.

  1. Int ass Integer
  2. Varchar ass Char mat variabelen Längt wéi definéiert. De Wäert nom Typ ass d'Längt vum Feld bis zu deem et Daten späichere kann.

OK elo musse mir eng Kolonn derbäi soen 'last_name' no der Kolonn 'first_name'.

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

Elo, z'iwwerpréiwen et an Ärer Tabell.

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>

Elo wäerte mir eng Kolonn op der rietser Säit derbäi soen eng Kolonn 'Land' riets vun der 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>

Vergewëssert Iech déi uewe genannte Kolonnen Insertion Query.

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>

Wat iwwer Wäerter an d'Feld aginn?

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

mysql>

Wéi wier et mat méi wéi 1 Wäert gläichzäiteg an der Tabell uewendriwwer ze setzen.

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

Vergewëssert Iech déi uewe genannte Insertion.

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>

Loosst eis soen datt den drëtten Entrée an der uewen Ausgang ongëlteg ass a mir mussen déi drëtt Entrée läschen.

mysql> DELETE FROM minttec WHERE id = 3;

Query OK, 1 row affected (0.02 sec)

Vergewëssert Iech déi uewe genannte Operatioun.

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)

D'ID (=4) muss geännert ginn.

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>

Verifizéiert déi uewe genannte Ufro.

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>

Notiz: Déi uewe genannte Ufro, sou wéi se ausgefouert gëtt, ass net eng gutt Iddi. Et wäert d'ID op '4' änneren, wou ëmmer den Virnumm 'tecmint' ass. Et ass ëmmer eng gutt Iddi méi wéi eng Kolonn ze benotzen mat wou Klausel fir minimale Feeler ze kréien, wéi:

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>

Loosst eis eng Kolonn falen (läschen) déi mir mengen, ass net wichteg hei ze soen Land.

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

mysql>

Verifizéiert den Dësch.

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>

Denkt Dir net datt eisen Dësch Numm minttec net ganz relevant ass. Wéi wier et mat der Ännerung op tecmint_table.

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

mysql>

Gesinn all Dëscher ënnert der aktueller Datebank.

mysql> show tables; 

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

mysql>

Den Dësch gouf ëmbenannt. Huelt elo e Backup vun der uewe genannter MySQL Datebank, an enger eenzeger Kommandozeil ouni sophistikéiert Tool. Fëllt de Code hei ënnen op Ärem Terminal an net op 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

Et ass ëmmer eng gutt Iddi fir de Backup vu MySQL Datenbanken z'erhalen. D'Erhuelung vun de Backup MySQL Donnéeën ass erëm eng einfach Zeil vu Code déi Dir braucht fir op Ärem Terminal Prompt ze lafen an net op Ärer MySQL Prompt.

Awer, waart als éischt, mir läschen d'Datebank fir z'iwwerpréiwen ob eis Restauratioun perfekt ass.

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

Kontrolléiert d'Datebank 'tecmint' op Ärem Datebankserver.

mysql> show databases; 

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

7 rows in set (0.00 sec) 
mysql>

Super! D'Datebank ass verluer, awer mir brauche keng Suergen ze maachen, mir hunn de Backup.

Fir verluer Datebank ze restauréieren, fuert de folgende Kommando.

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

OOPS! E Feeler, hey mir hunn d'Datebank net erstallt tecmint. Also gitt op Är mysql Prompt a erstellt eng Datebank 'tecmint'.

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

mysql>

Elo Zäit fir d'Restauratiounskommando op Ärer Shell-Prompt ze lafen (streng).

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

Verifizéiert Är Datebank.

mysql> show databases; 

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

Verifizéiert den Inhalt vun der Datebank.

mysql> show tables from tecmint;

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

mysql>

Verifizéiert den Inhalt vun Ärem restauréierten Dësch.

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)

Dëst ass net definitiv d'Enn, mir wäerten d'Konzept vum primäre Schlëssel, auslännesche Schlëssel, Multiple Dëscher a lafend Ufroen mat einfachen PHP Skript am nächsten Deel vum Artikel ofdecken.

Vergiesst net eis ze soen, wéi Dir Iech gefillt hutt wärend Dir duerch den Artikel gaang ass. Är Kommentarer sinn héich appréciéiert. Bleift gesond a gestëmmt, bleift verbonne mat Tecmint.