ot M.Petrov(11-06-2007)

reiting (40)   [ dobre ]  [ zle ]

Printer Friendly Variant za otpechatvane

Kratko rukovodstvo za MySQL

Napisana ot M.Petrov


  1. Kakvo e MySQL ?

  2. Suzdavane na bazi danni i tablitsi

  3. Kontrol na potrebiteli i privilegii

  4. Dobaviane, izvlichane, aktualizirane i iztrivane na danni

  5. Pridobivane na metadanni za baza danni



1. Kakvo e MySQL ?


MySQL e mnogo burza, stabilna sistema za upravlenie na relatsionni bazi danni (Relational Management Systems- RDBMS). Bazata danni pozvoliava efektivno suhranenie, pretursvane, sortirane i izvlichane na danni. MySQL kontrolira dostupa do vashite danni i pozvoliava ednovremenna rabota na mnozhestvo potrebiteli, burz dostup, kakto i osiguriavane na dostup samo na otoriziranite za tova potrebiteli. Izpolzva se SQL (Structured Query Language, Strukturiran ezik za zaiavki) koito e standartniiat svetovno razprostranen ezik za zaiavki kum bazi danni. MySQL se razprostraniava otkrito ot 1996 g. , no nachaloto na razrabotkata mu datira chak ot 1979 godina. Niakolko puti e pechelil nagradata "Izbor na chitatelite" na Linux Journal. MySQL se razprostraniava sus litsenz za otvoren kod, no sushtestvuvat i komersialni litsenzi.


2. Suzdavane na bazi danni i tablitsi


Predi suzdavane na baza ot danni e neobhodimo da se vleze v MySQL s administrativen akaunt- root . Vlizaneto v sistemata stava po sledniia nachin:

alpha:~# mysql -u root -p

Enter password:

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

Your MySQL connection id is 7

Server version: 5.0.32


Type 'help;' or '\h' for help. Type '\c' to clear the buffer.


mysql>


Sled vlizane v MySQL shte suzdadem baza danni “dhstudio” :

mysql> create database dhstudio;

Query OK, 1 row affected (0.00 sec)


Sega imame vuzmozhnost da proverim dali novata baza danni e suzdadena korektno po sledniia nachin:

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| dhstudio |

| mysql |

| test |

+--------------------+

3 rows in set (0.01 sec)


Sled suzdavane na baza danni shte suzdaden edna tablitsa “knigi” :

mysql> CREATE TABLE `knigi` (

`knigi_id` int(5) unsigned NOT NULL auto_increment,

`ddate` date NOT NULL default '0000-00-00',

`ttime` time NOT NULL default '00:00:00',

`snimka` text NOT NULL,

`info` text NOT NULL,

PRIMARY KEY (`knigi_id`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1;


Za da proverim dali tablitsata “knigi” e suzdadena korektno triabva da izpulnim komandata: show tables; :

mysql> show tables;

+-----------------------+

| Tables_in_dhstudio |

+-----------------------+

| knigi |

+-----------------------+

1 row in set (0.00 sec)


3. Kontrol na potrebiteli i privilegii


Edna MySQL sistema mozhe da ima mnogo potrebiteli. Ot suobrazheniia za sigurnost super potrebitelia root triabva da bude izpolzvan samo za administrativni tseli. Poradi sushtite suobrazheniia e redno vseki koito iska da izpolzva sistemata da ima potrebitel. Komandite za zadavane i otnemane na prava v MySQL potrebiteli sa GRANT i REVOKE. V MySQL ima chetiri niva na privilegii:

  • Globalni (Global)

  • Baza danni (Database)

  • Tablitsa (Table)

  • Kolona (Column)

Predi suzdavane na potrebitel triabva da sme naiasno s kakvi privilegii shte razpolaga. Nai- chesto sreshtanite sluchai sa suzdavane na potrebitel s pulni privilegii ili samo s privilegii za chetene.


Primer za suzdavane na potrebitel “dhstudio” s pulni privilegii vurhu baza danni “dhstudio”:

mysql> GRANT ALL ON dhstudio.* TO dhstudio identified by 'dhstudiopass' with grant option;

Query OK, 0 rows affected (0.00 sec)


Primer za suzdavane na potrebitel “dhstudio” s privilegii samo za razglezhdane:

mysql> GRANT select ON dhstudio.* TO dhstudio identified by 'dhstudiopass' with grant option;

Query OK, 0 rows affected (0.00 sec)


Primer za otnemane na vsichki prava na potrebitel “dhstudio”:

mysql> REVOKE ALL ON dhstudio.* from dhstudio;

Query OK, 0 rows affected (0.00 sec)



4. Dobaviane, izvlichane, aktualizirane i iztrivane na danni


Sled kato suzdadohme baza danni s tablitsa i potrebitel s pulni privilegii vurhu tiah neka dobavim danni s komandata “insert”:


mysql> INSERT INTO knigi(ddate,ttime,snimka,info) VALUES ('4891-09-07','09:07:09','/images/image-2.jpg','Info book');

Query OK, 1 row affected (0.00 sec)


Primer za izvlichane na danni:

mysql> select * from knigi;

+----------+--------------+------------+-------------------------+------------+

| knigi_id | ddate | ttime | snimka | info |

+----------+--------------+------------+-------------------------+------------+

| 1 | 4891-09-07 | 09:07:09 | /images/image-2.jpg | Info book |

+----------+--------------+------------+-------------------------+------------+

1 row in set (0.00 sec)



Primer za izvlichane na danni po kriterii:

mysql> select * from knigi where ddate='2007-10-10';

+----------+--------------+------------+-------------------------+------------+

| knigi_id | ddate | ttime | snimka | info |

+----------+--------------+------------+-------------------------+------------+

| 1 | 2007-10-10 | 09:07:09 | /images/image-2.jpg | Info book |

+----------+--------------+------------+-------------------------+------------+

1 row in set (0.00 sec)


Primer za aktualizirane na danni:

mysql> update knigi set info='New info' where knigi_id='1';

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0


Primer za iztrivane na danni:

mysql> delete from knigi where knigi_id='1;

Query OK, 1 row affected (0.00 sec)


5. Pridobivane na metadanni za baza danni


Bazite danni sudurzhat danni, a informatsiiata za nachina im na strukturirane se naricha metadanni. Do momenta izpolzvahme komandata “show” za da razberem kakvi tablitsi i bazi danni ima. Neka razgledame oshte edna vuzmozhnost na “show”, a imenno izvezhdane na informatsiia za kolonite v tablitsata:




mysql> show columns from knigi;

+----------+-----------------+------+-----+------------+----------------+

| Field | Type | Null | Key | Default | Extra |

+----------+-----------------+------+-----+------------+----------------+

| knigi_id | int(5) unsigned | NO | PRI | NULL | auto_increment |

| ddate | date | NO | | 0000-00-00 | |

| ttime | time | NO | | 00:00:00 | |

| snimka | text | NO | | | |

| info | text | NO | | | |

+----------+-----------------+------+-----+------------+----------------+

5 rows in set (0.00 sec)


Komandata “show” mozhe da priema i nezadulzhitelna klyuchova duma “FULL”, koiato predizvikva pokazvane na dopulnitelna informatsiia (kolatsii, privilegii i komentari):

mysql> show full columns from knigi\G

*************************** 1. row ***************************

Field: knigi_id

Type: int(5) unsigned

Collation: NULL

Null: NO

Key: PRI

Default: NULL

Extra: auto_increment

Privileges: select,insert,update,references

Comment:

*************************** 2. row ***************************

Field: ddate

Type: date

Collation: NULL

Null: NO

Key:

Default: 0000-00-00

Extra:

Privileges: select,insert,update,references

Comment:

*************************** 3. row ***************************

Field: ttime

Type: time

Collation: NULL

Null: NO

Key:

Default: 00:00:00

Extra:

Privileges: select,insert,update,references

Comment:

*************************** 4. row ***************************

Field: snimka

Type: text

Collation: latin1_swedish_ci

Null: NO

Key:

Default:

Extra:

Privileges: select,insert,update,references

Comment:

*************************** 5. row ***************************

Field: info

Type: text

Collation: latin1_swedish_ci

Null: NO

Key:

Default:

Extra:

Privileges: select,insert,update,references

Comment:

5 rows in set (0.00 sec)


Neka razgledame druga konstruktsiia za pokazvane na metadanni koiato e ekvivalentna na “show columns”. Slednite dve konstruktsii pokazvat edna i sushta informatsiia.

  • show columns from knigi; (beshe razgledana po- gore)

  • describe knigi;


V tazi statiia se zapoznahme s MySQL i niakoi osnovni operatsii kato suzdavane na bazi danni i tablitsi, kontrol na potrebitelite, dobaviane, izvlichane, aktualizirane i iztrivane na danni kakto i pridobivane na metadanni za baza danni. Ako iskate da nauchite poveche mozhe da posetite ueb saita na MySQL na adres: www.mysql.com


<< | >>