Кратко ръководство за МySQL

Написана от Мартин Петров

Благодарности на www.dhstudio.eu


  1. Какво е MySQL ?

  2. Създаване на бази данни и таблици

  3. Контрол на потребители и привилегии

  4. Добавяне, извличане, актуализиране и изтриване на данни

  5. Придобиване на метадaнни за база данни



1. Какво е MySQL ?


MySQL е много бърза, стабилна система за управление на релационни бази данни (Relational Management Systems- RDBMS). Базата данни позволява ефективно съхранение, претърсване, сортиране и извличане на данни. MySQL контролира достъпа до вашите данни и позволява едновременна работа на множество потребители, бърз достъп, както и осигуряване на достъп само на оторизираните за това потребители. Използва се SQL (Structured Query Language, Структуриран език за заявки) които е стандартният световно разпространен език за заявки към бази данни. MySQL се разпространява открито от 1996 г. , но началото на разработката му датира чак от 1979 година. Няколко пъти е печелил наградата "Избор на читателите" на Linux Journal. MySQL се разпространява със лиценз за отворен код, но съществуват и комерсиални лицензи.


2. Създаване на бази данни и таблици


Преди създаване на база от данни е необходимо да се влезе в MySQL с административен акаунт- root . Влизането в системата става по следния начин:

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>


След влизане в MySQL ще създадем база данни “dhstudio” :

mysql> create database dhstudio;

Query OK, 1 row affected (0.00 sec)


Сега имаме възможност да проверим дали новата база данни е създадена коректно по следния начин:

mysql> show databases;

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

| Database |

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

| dhstudio |

| mysql |

| test |

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

3 rows in set (0.01 sec)


След създаване на база данни ще създаден една таблица “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;


За да проверим дали таблицата “knigi” е създадена коректно трябва да изпълним командата: show tables; :

mysql> show tables;

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

| Tables_in_dhstudio |

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

| knigi |

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

1 row in set (0.00 sec)


3. Контрол на потребители и привилегии


Една MySQL система може да има много потребители. От съображения за сигурност супер потребителя root трябва да бъде използван само за административни цели. Поради същите съображения е редно всеки които иска да използва системата да има потребител. Командите за задаване и отнемане на права в MySQL потребители са GRANT и REVOKE. В MySQL има четири нива на привилегии:

Преди създаване на потребител трябва да сме наясно с какви привилегии ще разполага. Най- често срещаните случай са създаване на потребител с пълни привилегии или само с привилегии за четене.


Пример за създаване на потребител “dhstudio” с пълни привилегии върху база данни “dhstudio”:

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

Query OK, 0 rows affected (0.00 sec)


Пример за създаване на потребител “dhstudio” с привилегии само за разглеждане:

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

Query OK, 0 rows affected (0.00 sec)


Пример за отнемане на всички права на потребител “dhstudio”:

mysql> REVOKE ALL ON dhstudio.* from dhstudio;

Query OK, 0 rows affected (0.00 sec)



4. Добавяне, извличане, актуализиране и изтриване на данни


След като създадохме база данни с таблица и потребител с пълни привилегии върху тях нека добавим данни с командата “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)


Пример за извличане на данни:

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)



Пример за извличане на данни по критерии:

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)


Пример за актуализиране на данни:

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


Пример за изтриване на данни:

mysql> delete from knigi where knigi_id='1;

Query OK, 1 row affected (0.00 sec)


5. Придобиване на метадaнни за база данни


Базите данни съдържат данни, а информацията за начина им на структуриране се нарича метаданни. До момента използвахме командата “show” за да разберем какви таблици и бази данни има. Нека разгледаме още една възможност на “show”, а именно извеждане на информация за колоните в таблицата:




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)


Командата “show” може да приема и незадължителна ключова дума “FULL”, която предизвиква показване на допълнителна информация (колации, привилегии и коментари):

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)


Нека разгледаме друга конструкция за показване на метаданни която е еквивалентна на “show columns”. Следните две конструкции показват една и съща информация.


В тази статия се запознахме с MySQL и някои основни операции като създаване на бази данни и таблици, контрол на потребителите, добавяне, извличане, актуализиране и изтриване на данни както и придобиване на метадaнни за база данни. Ако искате да научите повече може да посетите уеб сайта на MySQL на адрес: www.mysql.com