неделя, юни 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)


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


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

сряда, май 16, 2007

Nokia 5300 XpressMusic

Тоя месец направо се олях ама кво да се прави :) Най-после си взех телефон - Nokia 5300.
подробности
Стандартна USB буксичка, ръгаш и тръгва. Писна ми за всеки Siemens да си купувам кабел и за всеки да трябва да инсталирам програми. От тая гледна точка по-лусно и по-удобно няма Nokia-та ги кърти всичките. Най-якото е, че повечето ми познати имат такъв тип кабели у тях и аз просто отивам, ръгам и пускам музика(geex к,во да ги правиш :).
С телефона ми дадоха и супер готини слушалки/handsfree, които обаче не са със стандартна аудио букса. Готиното в случая е, че ти дават преходник, слагаш го на телефона и пъхаш големите слушалки с оглушителния бас. :P
На мен лично miniSD 256MB ми стига, който иска може да си купи повече.
Софтуера се държи доста прилично, да не кажа направо супер. Съвсем спокойно може да си пуснете музика на слушалки и да цъкате сноуборд на телефона. Тази игра е доста готина, не знам дали по принцип се продава с нея или пичовете в магазина са си поиграли с Nokia-та, но с нея спокойно може да си загубите няколко часа.
Още в магазина слайдера ми се стори доста слабичък и бях убеден, че ще се разпадне на първия месец, но въобще не се получи така, слайдера си е напълно здрав вече доста време и няма изгледи да се чупи.

вторник, май 15, 2007

Получих интересен подарък

Въпреки че може да се възприеме като гавра с личността ми, аз го приемам повече като шегичка. Подаръка говори сам за себе си и моят коментар е излишен :)


10x 2 strawman

четвъртък, май 10, 2007

Имам нова играчка







От днес официално съм собственик на Asus A9RP-5A083 (това е лаптоп ;)). Доста прилична машина. Радвам се много и защото не успяха да ми пробутат лаптоп с Windows, никакви пари от моя джоб към Редмънд :)
Както повечето ученици/студенти и аз си мисля, че като имам лаптоп ще мога да върша повече работа, но ще видим как ще се получи. :)

сряда, май 09, 2007

MySQL, PHP, Apache под Линукс

Тук е мястото да пусна едно ламерско HOWTO, което доста ме измъчи и мисля, че ще бъде полезно на някои начинаещи Линукс потребители.
Ще използваме XAMPP, който можете да изтеглите от тук . След това ще го разархивираме в папка /opt със следната команда :


tar xvfz xampp-linux-1.6.1.tar.gz -C /opt

До тук добре, но за да избегнем леки проблеми с правата трябва да поправим някои неща :

cdmod 755 /opt/lampp/var/mysql -R
chmod 755 /opt/lampp/htdocs -R
chmod 755 /opt/lampp/phpmyadmin -R


Сега трябва да зададем парола на mysql:

mysql –u root
mysql> use mysql;
mysql>UPDATE user SET Password=PASSWORD('парола') WHERE user ='root';
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'парола' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;


При този вариант остават някои дупки в сигурността, за да ги поправим първо ще стартираме сървъра :

/opt/lampp/lampp start

и ще стартираме тест за сигурността :

/opt/lampp/lampp security

Програмата автоматично ще открие основните дупки и ще ви предложи да ги поправите.
Ако смятате да пуснете и Joomla трябва да създадете таблица :

/opt/lampp/bin/mysqladmin -u root create name_db

след като въведете паролата си трябва само да направим инсталацията на Jooma, която е графична, в 4 стъпки и е доста лесна.