Кратко ръководство за МySQL
Написана от Мартин Петров
Какво е MySQL ?
Създаване на бази данни и таблици
Контрол на потребители и привилегии
Добавяне, извличане, актуализиране и изтриване на данни
Придобиване на метад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 има четири нива на привилегии:
Глобални (Global)
База данни (Database)
Таблица (Table)
Колона (Column)
Преди създаване на потребител трябва да сме наясно с какви привилегии ще разполага. Най- често срещаните случай са създаване на потребител с пълни привилегии или само с привилегии за четене.
Пример за създаване на потребител “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”. Следните две конструкции показват една и съща информация.
show columns from knigi; (беше разгледана по- горе)
describe knigi;
В тази статия се запознахме с MySQL и някои основни операции като създаване на бази данни и таблици, контрол на потребителите, добавяне, извличане, актуализиране и изтриване на данни както и придобиване на метадaнни за база данни. Ако искате да научите повече може да посетите уеб сайта на MySQL на адрес: www.mysql.com