неделя, юни 17, 2007

MySQL basics

Понеже в момента уча MySQL и PHP, реших да напиша малка поредица от HOWTO-та, които отразяват моя опит и общо взето, това което съм прочел в нета. Това е първото от тях и да се надяваме, че ще ми стигне търпението да напиша още поне 3-4 :)

Създаване на база от данни (БД)

За да създадете база от данни е необходимо да отворите конзола и да стартирате mysql, след което


> mysql -u root -p
mysql> show databases;

+----------+
| Database |
+----------+
| mysql |
| test |
+----------+

mysql> CREATE database petstore;
mysql> USE petstore;
Database changed
mysql> SHOW tables;
Empty set (0.00 sec)


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

Създадохме БД, но трябва да вмъкнем в нея таблици. Ще създадем 2 таблици - първата ще описва видовете животни в магазин за животни, а втората ще съдържа информация за животните.

mysql> CREATE TABLE species
(
id INT NOT NULL AUTO_INCREMENT,
species varchar(30) NOT NULL,
primary key(id)
);
Query OK, 0 rows affected (0.02 sec)

Създаваме таблица species, която има две колони id и species. AUTO_INCREMENT в колоната ID "казва" на mysql след всеки запис автоматично да увеличава с 1
стойността на ID, това ни освобождава от нуждата всеки път да въвеждаме стойност на ID.

mysql> CREATE TABLE pet
(
id INT NOT NULL AUTO_INCREMENT,
sp_id INT NOT NULL,
sex CHAR(1) NOT NULL,
price DECIMAL(4,2) NOT NULL,
primary key(id)
);
Query OK, 0 rows affected (0.03 sec)


mysql> SHOW tables;
+--------------------+
| Tables_in_petstore |
+--------------------+
| pet |
| species |
+--------------------+
2 rows in set (0.00 sec)


Преглеждаме таблиците.
За да видите по нагледно каква точно таблица се е получила е необходимо само да драснете в конзолата :

mysql> DESCRIBE species;

+---------+-------------+----+-----+---------+---------------+
| Field | Type |Null| Key | Default | Extra |
+---------+-------------+----+-----+---------+---------------+
| id | int(11) | | PRI | NULL | auto_increment|
| name | varchar(30) | | | | |
+---------+-------------+----+-----+---------+---------------+
2 rows in set (0.05 sec)


mysql> DESC pet;

+-------+--------------+----+-----+---------+----------------+
| Field | Type |Null| Key | Default | Extra |
+-------+--------------+----+-----+---------+----------------+
| id | int(11) | | PRI | NULL | auto_increment |
| sp_id | int(11) | | | 0 | |
| sex | char(1) | | | | |
| price | decimal(4,2) | | | 0.00 | |
+-------+--------------+----+-----+---------+----------------+
4 rows in set (0.00 sec)


Извеждаме информация за таблицата pet. Обърнете внимание, че DESCRIBE и DESC вършат една и съща работа, може би защото едното е съкращение от другото :) Може също да използвате explain или show columns.

След като вече имаме таблици, трябва да вкараме информация в тях. Това може да стане директно от конзолата чрез INSERT

mysql> INSERT INTO species (name) values ('Cat');
Query OK, 1 row affected (0.00 sec)


Както виждате, просто пишем INSERT INTO името на таблицата, след това в скоби името на колоната VALUES и отново в скоби, но този път и в единични кавички въвеждаме стойността, която да бъде добавена в полето. Отново си заслужава да отбележим, че не въвеждаме стойност за ID, това става автоматично (AUTO_INCREMENT).

Извеждане на информация от таблица

Извеждането на информацията става доста лесно:

mysql> SELECT * FROM species;

+----+--------+
| id | name |
+----+--------+
| 1 | Cat |
| 2 | Bird |
| 3 | Fish |
| 4 | Turtle |
+----+--------+
4 rows in set (0.00 sec)


Ако искаме да видим само определена колона или част от таблицата можем да направим следното :

mysql> SELECT name FROM species;

+--------+
| name |
+--------+
| Cat |
| Bird |
| Fish |
| Turtle |
+--------+
4 rows in set (0.00 sec)

mysql> SELECT * FROM species WHERE id = 4;

+----+--------+
| id | name |
+----+--------+
| 4 | Turtle |
+----+--------+
1 row in set (0.59 sec)


Обновяване и изтриване на информация

UPDATE се използва за променяне на стойност в таблицата. Например сега ще сменим името от Turtle на Dog.

mysql> UPDATE species SET name = 'Dog' WHERE name = 'Turtle';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> SELECT * FROM species;


+----+-------+
| id | name |
+----+-------+
| 1 | Cat |
| 2 | Bird |
| 3 | Fish |
| 4 | Dog |
+----+-------+
4 rows in set (0.00 sec)



DELETE изтрива редове от таблицата, като се задава условието WHERE за да укажем, точно коя част от таблицата да се изтрие. Сега ще изтрием запис с ID=1


mysql> DELETE FROM species WHERE id = 1;
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM species;

+----+-------+
| id | name |
+----+-------+
| 2 | Bird |
| 3 | Fish |
| 4 | Dog |
+----+-------+
3 rows in set (0.01 sec)


Можем да използваме не само "=", но и > (по-голямо) < (по-малко).


Това е за сега, надявам се да е полезно на някого. Можете да погледнете тук и тук за да прочетете интересни статии по темата.