Вовед во MySQL

Испратено од Riste Pejov во 4 Мај, 2004 - 21:41.
::
Упатства
MySQL е дефинитивно најпопуларната база за GNU/Linux оперативните системи, најчесто користена за веб апликации. MySQL нема многу напредни опции, ниту пак може да се спореди со вистинските бази како PostgreSQL и FireBird, нема серверски процедури, нема тригери, итн. Но на сметка на овие опции кои се навистина потребни за развој на вистински апликации, MySQL е навистина едноставен за користење, многу брз и сосем задоволителен за едноставни веб апликации. Значи, доколку сакате едноставна, брза и практична веб апликација, MySQL е изборот за база. Инсталација Инсталацијата на MySQL е навистина едноставен процес, а во најчест случај го имате со самата инсталација на вашиот GNU/Linux. Но да претпоставиме дека сакате да го унапредите вашиот MySQL сервер до последната верзија. Одиме чекор по чекор (целата постапка ја извршуваме како root):
  1. Појдете до http://www.mysql.com/downloads/ одберете ја верзијата која ви одговара и превземете ја. Бидејќи ќе опишам како да го инсталирате MySQL од бинарка, превземете бинарна дистрибуција која што не е спакувана во rpm пакет (најверојатно сите знаеме како инсталираме rpm пакети, доколку не знаете, man rpm во конзола и ќе научите) . Архивата која треба да има име слично на mysql-standard-4.хх.хх-pc-linux-i686.tar.gz, каде хх.хх се однесуваат на верзијата која ја инсталирате, зачувајте ја како /tmp/mysql-standard-4.хх.хх-pc-linux-i686.tar.gz
  2. Додате корисник и корисничка група под која ќе работи MySQL (нема да го оставите да работи како root нели !?!?). [root@host root]# groupadd mysql [root@host root]# useradd -g mysql mysql
  3. Одберете каде сакате да го инсталирате MySQL и направете го дотичниот директориум. Јас се одлучив за /usr/local/mysql. [root@host root]# mkdir /usr/local/mysql
  4. Поставете го тековниот директоиум да биде ист со горенаведениот [root@host root]# cd /usr/local/mysql
  5. Распакувајте ја tar.gz архивата во тековниот директориум. [root@host root]# tar zxvf /tmp/mysql-standard-4.хх.хх-pc-linux-i686.tar.gz
  6. Иницијализирајте ги основните MySQL табели [root@host root]# mysql/scripts/mysql_install_db --user=mysql
  7. Доделете му го податочниот директориум /path/to/mysql/data на корисникот mysql: [root@host root]# chown -R mysql mysql/data
  8. За крај стартувајте го серверот: [root@host root]# bin/mysqld_safe --user=mysql & Доколку се за работи за верзија помала од 4.х тогаш треба: [root@host root]# bin/safe_mysqld --user=mysql &
Го инсталиравме mysql, што сега? Сега е време да научиме како да се најавуваме на mysql серверот, да додаваме нови бази на податоци, да ги прелистуваме постоечките, да додаваме нови табели, нови индекси, да додаваме нови корисници, да им доделуваме привилегии врз соодветните објекти од базата и да менуваме лозинки на веќе постоечките корисници. Најавување на mysqld Најавувањето на mysql серверот е многу едноставно, се што ни треба е конзолниот клиент кој се наоѓа во mysql/bin и го носи името mysql (збунувачки нели? името на серверот е mysqld, името на производот е MySQL а името на конзолниот клиент е mysql). Најавувањето се одвива вака: [root@host root]# cd /usr/local/mysql/bin [root@host root]# ./mysql -p Удрете еднаш и ќе се најдете во mysql конзолата каде може директно на mysql серверот да му издавата SQL наредби. Најавувањето секогаш ќе биде на истиот принцип. Само да наведам уште две многу корисни опции при најавување на серверот. При најавување на mysql серверот во командната линија на конзолниот клиент понекогаш е корисно да наведете различно корисничко име од корисничкото име под кое сте најавени на вашата работна станица. За да се најавите со друго корисничко име ќе треба да се послужите со следнава опција на mysql конзолниот клиент: [root@host root]# ./mysql -u richie -p Каде што richie е корисничкото име под кое сакате да се најавите. Друга корисна опција е опцијата за наведување на сервер различен од локалната машина, како и одредување на TCP/IP порта на која сакате да се врзе клиентот. [root@host root]# ./mysql -h mysql.ric.com.mk -P 5501 -p Овој пат, конзолниот клиент ќе проба да се поврзе на mysql серверот на машината со адреса mysql.ric.com.mk која очекува клиенти на порта 5501. Одкако ќе се поврземе на MySQL серверот, во конзолата ќе го добиеме типичниот промт кој изгледа овака: mysql> Одкако се најавивме на MySQL серверот, редно е да направиме по нешто корисно нели?. Прегледување на достапните бази, создавање на нови и нивно користење Наредбите кои ги користи MySQL се прилично едноставни и интуитивни. Така што со едноставно пишување на: mysql>SHOW DATABASES; во mysql конзолниот клиент, ќе добиете листа на базите кои постојат на соодветниот сервер. На свежо инсталиран сервер би требало да го добиете следново: mysql>SHOW DATABASES; +-----------+ | Database | +-----------+ | mysql | | test | +-----------+ 2 rows in set (0.00 sec) За почеток, ќе си поиграме со test базата која доаѓа со секоја инсталација. Први ќе треба да му кажеме на mysql серверот дека сакаме да ја користиме test базата: mysql>use test; Database changed Одкако сме најавени да ја користиме тест базата, сите следни дејствија се вршат врз тековната база. Да провериме кои табели ни се на располагање во тест базата користејќи ја "SHOW TABLES;" mysql наредбата: mysql> SHOW TABLES; +----------------+ | Tables_in_test | +----------------+ | test_tbl | +----------------+ 1 row in set (0.00 sec) Во тест базата имаме само една табела која се вика test_tbl. За да дознаеме нешто повеќе за структурата на оваа табела, т.е. да дознаеме колку колони содржи и од каков тип на податоци, ќе се послужиме со mysql наредбата за опишување на структура на табели, "DESCRIBE [TABLE_NAME];". Каде што [TABLE_NAME] e табелата за која сакаме да добиеме информации. На пример за нашата test_tbl ќе постапиме овака: mysql> DESCRIBE test_tbl; +----------+---------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+---------------------+------+-----+---------+-------+ | test_str | varchar(30) | YES | | 0 | | | test_int | tinyint(3) unsigned | YES | | 0 | | +----------+---------------------+------+-----+---------+-------+ 2 rows in set (0.06 sec) Од резултатот на оваа наредба можеме да приметиме дека табелата test_tbl во test базата има вкупно две колони, од кои првата е од тип varchar(30), што претставува текстуален тип со максимална должина од 30 знаци, може да прими NULL (празно) вредност, и доколку не обезбедиме вредност за оваа колона, mysql автоматски ќе и додели вредност нула. Втората колона е од тип tinyint(3), што претставува целобројна вредност со максимална должина од 3 цифри, и исто како и првата колона, може да прими NULL вредност а предефинираната вредност е 0. Доколку сакате да си создадете сопствена база, со табели по ваш терк, прво ќе треба да создадеме нова база со "CREATE DATABASE [IME_NA_BAZA]" mysql наредбата. mysql> CREATE DATABASE moja_baza; Query OK, 1 row affected (0.00 sec) mysql> Со ова создадовме нова база која се вика moja_baza. Да започнеме да работиме со нашата нова база: mysql>use moja_baza; Database changed Да провериме што имаме во новата база: mysql> SHOW TABLES; Empty set (0.00 sec) Базата е празна, без ниедна табела. Да се потрудиме да ја загадиме нашата нова база, ќе составиме нова табела: mysql> CREATE TABLE moja_tabela( -> kolona1 int, -> kolona2 text, -> kolona3 double) -> ; Query OK, 0 rows affected (0.11 sec) Ако повторно провериме што има во нашата нова база, ќе го добиеме следното: mysql> show tables; +---------------------+ | Tables_in_moja_baza | +---------------------+ | moja_tabela | +---------------------+ 1 row in set (0.00 sec) Структурата на новата табела може да ја провериме со користење на гореспомената наредба "DESCRIBE": mysql> DESCRIBE moja_tabela; +---------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+---------+------+-----+---------+-------+ | kolona1 | int(11) | YES | | NULL | | | kolona2 | text | YES | | NULL | | | kolona3 | double | YES | | NULL | | +---------+---------+------+-----+---------+-------+ 3 rows in set (0.05 sec) Накратко, податоци во колоната се внесуваат со помош на "INSERT" SQL израз, кој за нашата табела ќе изгледа овака: mysql> INSERT INTO moja_tabela VALUES(12,"Proben tekst",6.78); Query OK, 1 row affected (0.00 sec) Повеќе за начините на внесување податоци во вашите табели ќе може да најдете на http://dev.mysql.com/doc/mysql/en/INSERT.html Вредностите од табелата ќе може да ги извлечеме на следниов начин: mysql> SELECT * FROM moja_tabela; +---------+--------------+---------+ | kolona1 | kolona2 | kolona3 | +---------+--------------+---------+ | 12 | Proben tekst | 6.78 | +---------+--------------+---------+ 1 row in set (0.00 sec) Повеќе за начините на читање податоци од табелите ќе може да најдете на http://dev.mysql.com/doc/mysql/en/SELECT.html Вредноста на некоја колона во еден или повеќе слогови се менува на следниот начин: mysql> UPDATE moja_tabela SET kolona2="Nov tekst!!" WHERE kolona1=12; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT * FROM moja_tabela; +---------+-------------+---------+ | kolona1 | kolona2 | kolona3 | +---------+-------------+---------+ | 12 | Nov tekst!! | 6.78 | +---------+-------------+---------+ 1 row in set (0.02 sec) Веднаш потоа со SELECT проверуваме дека вредноста е сменета. Нешто повеќе околу UPDATE изразите за менување на вредности во табелите ќе најдете на http://dev.mysql.com/doc/mysql/en/UPDATE.html За да избришеме еден или повеќе слогови од некоја табела ќе се послужиме со "DELETE" SQL клучниот збор: mysql> DELETE FROM moja_tabela WHERE kolona1=12; Query OK, 1 row affected (0.05 sec) mysql> SELECT * FROM moja_tabela; Empty set (0.00 sec) Овој клучен збор користете со претпазливост. Доколку немате критериум за селекција (пр: WHERE kolona1=12;) со овој клучен збор може да ги избришете неповратно сите слогови од табелата. Повеќе за него ќе најдете на http://dev.mysql.com/doc/mysql/en/DELETE.html За крај, ќе ја избришеме денешната табела, само за да ви демонстрирам како да се ослободите од несаканите табели: mysql> DROP TABLE moja_tabela; Query OK, 0 rows affected (0.05 sec) mysql> SHOW TABLES; Empty set (0.00 sec) Со помош на SHOW TABLES се уверуваме дека табелата не постои. Сепак, тоа и не беше крај, бидејќи сакаме да се ослободиме и од базата: mysql> DROP DATABASE moja_baza; Query OK, 0 rows affected (0.00 sec) mysql>SHOW DATABASES; +-----------+ | Database | +-----------+ | mysql | | test | +-----------+ 2 rows in set (0.00 sec) Со помош на SHOW DATABASES се уверуваме дека базата не постои. За денес толку, повеќе во следната прилика, а во меѓувреме нападнете го сајтот со документација за MySQL лоциран на http://dev.mysql.com/doc/mysql/en/index.html ---------------------------------------------------------- (C) Copyleft 2002 Riste Pejov е-маил: richie_AT_freemail.org.mk ---------------------------------------------------------- Сето ова тресење глупости може да се објавува и дистрибуира по било каков пат, доколку текстот остане неизменет во целост. ----------------------------------------------------------