MySQL grunnskipanir gagnagrunnsstjórnunar - I. hluti


Gagnagrunnur er skipulagt safn gagna sem eru geymd rafrænt. Hugmyndin um gagnagrunn var þekkt af forfeðrum okkar jafnvel þegar engar tölvur voru til, en að búa til og viðhalda slíkum gagnagrunni var mjög leiðinlegt starf. Í handvirkum gagnagrunni segjum við 100 síður, ef þú þarft að leita að öllum þeim starfsmönnum sem voru með laun undir 10 þúsund, hugsaðu bara hversu erfitt það hefði verið.

Í heimi nútímans geturðu bara ekki flúið gagnagrunn. Núna vinna milljónir gagnagrunna um allan heim við að geyma og sækja gögn af öllum toga hvort sem það er stefnumótandi gögn, starfsmannaskrá eða veftækni.

Gagnagrunnur er oft kallaður bakvinnsluferli, þar sem hann er hvorki sýnilegur notandi né notandi hefur bein samskipti við gagnagrunninn. Þeir vinna á framhliðarferli þ.e. PHP, VB, ASP.NET osfrv. og biðja framenda um að takast á við gagnagrunn í bakenda.

Það eru nokkrir gagnagrunnsþjónar og biðlarar í boði eins og Oracle, MySQL, MySQLi, MongoDB osfrv. Setningarfræði allra þessara er nokkurn veginn sú sama. Að ná tökum á einum þýðir að ná stjórn á flestum þeirra og læra fyrirspurnir í gagnagrunni er mjög auðvelt og skemmtilegt.

Byrjum á einföldum fyrirspurnum um gagnagrunn. Við munum nota MySQL sem fylgir flestum Linux dreifingum sjálfgefið, þú gætir sett það upp handvirkt úr geymslunni, ef það er ekki sjálfgefið uppsett í þínu tilviki.

Jæja, gagnagrunnsfyrirspurn er einfalt stykki af kóða sem er sendur í gagnagrunn til að fá sérsniðna og fágaða niðurstöðu, eftir þörfum.

Settu upp MySQL gagnagrunn

Notaðu „yum“ eða „apt“ pakkastjóra til að setja upp 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)

Byrjaðu MySQL gagnagrunnsþjónustu sem:

# service mysqld start
or
# service mysql start

Jæja, með því að setja upp MySQL gagnagrunn mun þú fara í uppsetninguna þar sem þú ert beðinn um að setja upp stjórnandalykilorð o.s.frv. Þegar þú hefur lokið uppsetningu og ræsingu á þjóninum skaltu fara í MySQL hvetja.

# mysql -u root -p

Skiptu um rót með uppsettu notendanafninu þínu og sláðu inn lykilorð þegar beðið er um það, ef innskráningarskilríkin eru rétt muntu vera á MySQL hvetja þegar þú blikkar.

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ú er það mjög fræðandi og skemmtilegt að framkvæma fyrirspurnir á þessari hvetju.

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

mysql>

Athugið: Það greinir frá því að fyrirspurnin hafi verið rétt, þýðir að gagnagrunnur er búinn til. Þú getur staðfest nýstofnaðan gagnagrunn þinn sem.

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

Athugið: Taktu eftir gagnagrunninum þínum í úttakinu hér að ofan.

Nú þarftu að velja gagnagrunninn til að vinna með hann.

mysql> use tecmint;
Database changed
mysql>

Hér munum við búa til töflu sem segir „minttec“ með þremur reitum sem:

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

Athugið: Fyrirspurnin hér að ofan segir OK sem þýðir að tafla var búin til án nokkurra villu. Til að staðfesta töfluna skaltu keyra fyrirspurnina hér að neðan.

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

1 row in set (0.00 sec) 

mysql>

Hlutirnir ganga vel þangað til núna. Já! Þú getur skoðað dálkana sem þú bjóst til í töflunni „minttec“ sem:

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>

Það var ekkert minna en galdur. Engu að síður mun ég segja þér frá tegundum yfirlýsinga og merkingu þeirra.

  1. Int er heiltala
  2. Varchar er bleikja með breytilega lengd eins og skilgreint er. Gildið á eftir Type er lengd reits þar sem hægt er að geyma gögn.

Allt í lagi núna þurfum við að bæta við dálki þar sem segir „eftirnafn“ á eftir dálki „fornafn“.

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ú skaltu staðfesta það í töflunni þinni.

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ú munum við bæta við dálki til hægri og segðu dálk „land“ hægra megin við tölvupóstinn.

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>

Staðfestu ofangreinda dálkainnsetning fyrirspurn.

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>

Hvað með að setja gildi í reitinn?

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

mysql>

Hvernig væri að setja inn meira en 1 gildi í einu í töflunni hér að ofan.

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

Staðfestu ofangreinda innsetningu.

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>

Segjum að þriðja færslan í úttakinu hér að ofan sé ógild og við þurfum að eyða þriðju færslunni.

mysql> DELETE FROM minttec WHERE id = 3;

Query OK, 1 row affected (0.02 sec)

Staðfestu ofangreinda aðgerð.

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)

Auðkenninu (=4) þarf að breyta.

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>

Staðfestu ofangreinda fyrirspurn.

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>

Athugið: Fyrirspurnin hér að ofan, eins og hún er framkvæmd, er ekki góð hugmynd. Það mun breyta auðkenninu í '4' þar sem fornafnið er 'tecmint'. Það er alltaf góð hugmynd að nota fleiri en einn dálk með where-ákvæði til að fá lágmarksvillu, eins og:

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>

Við skulum sleppa (eyða) dálki sem við teljum að skipti engu máli að segja „land“ hér.

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

mysql>

Staðfestu töfluna.

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>

Finnst þér borðnafnið okkar „minttec“ ekki vera mjög viðeigandi. Hvernig væri að breyta því í tecmint_table.

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

mysql>

Sjá allar töflur undir núverandi gagnagrunni.

mysql> show tables; 

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

mysql>

Taflan hefur verið endurnefnd. Taktu nú öryggisafrit af ofangreindum MySQL gagnagrunni, í einni skipunarlínu án nokkurs háþróaðs tóls. Keyrðu kóðann hér að neðan á flugstöðinni þinni og ekki á mysql hvetja.

# 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

Það er alltaf góð hugmynd að viðhalda öryggisafriti af MySQL gagnagrunnum. Að endurheimta afrituð MySQL gögnin er aftur einföld lína af kóða sem þú þarft til að keyra á flugstöðinni þinni en ekki á mysql hvetjunni þinni.

En bíddu fyrst við munum eyða gagnagrunninum til að staðfesta hvort endurheimt okkar sé fullkomið.

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

Athugaðu hvort gagnagrunnurinn „tecmint“ sé á gagnagrunnsþjóninum þínum.

mysql> show databases; 

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

7 rows in set (0.00 sec) 
mysql>

Frábært! Gagnagrunnurinn er glataður, en við þurfum ekki að hafa áhyggjur, við erum með öryggisafritið.

Til að endurheimta glataðan gagnagrunn skaltu keyra eftirfarandi skipun.

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

ÚPS! Villa, hey við höfum ekki búið til gagnagrunninn tecmint. Svo farðu í mysql hvetja þína og búðu til gagnagrunn „tecmint“.

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

mysql>

Nú er kominn tími til að keyra endurheimtarskipunina við skeljabeiðni þína (stranglega).

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

Staðfestu gagnagrunninn þinn.

mysql> show databases; 

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

Staðfestu innihald gagnagrunns.

mysql> show tables from tecmint;

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

mysql>

Staðfestu innihald endurheimtu töflunnar þinnar.

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)

Þetta er ekki endirinn örugglega, við munum fjalla um hugtakið aðallykill, erlendur lykill, margar töflur og hlaupandi fyrirspurnir með einföldu PHP handriti í næsta hluta greinarinnar.

Ekki gleyma að segja okkur hvernig þér leið þegar þú fórst í gegnum greinina. Athugasemdir þínar eru mjög vel þegnar. Vertu heilbrigður og stilltur, haltu áfram að tengjast Tecmint.