MySQL кратко ръководство

- Секция Компютри

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 knigiG
*************************** 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;






Коментирай свободно: