Kratko
rukovodstvo za MySQL
Napisana
ot M.Petrov
Kakvo e MySQL
?
Suzdavane na bazi
danni i tablitsi
Kontrol na potrebiteli
i privilegii
Dobaviane,
izvlichane, aktualizirane i iztrivane
na danni
Pridobivane na
metadanni za baza danni
1. Kakvo
e MySQL ?
MySQL e mnogo
burza, stabilna sistema za upravlenie
na relatsionni bazi danni (Relational
Management Systems-
RDBMS). Bazata danni pozvoliava efektivno
suhranenie, pretursvane, sortirane i
izvlichane na danni. MySQL kontrolira
dostupa do vashite danni i pozvoliava
ednovremenna rabota na mnozhestvo
potrebiteli, burz dostup, kakto i
osiguriavane na dostup samo na otoriziranite
za tova potrebiteli. Izpolzva se SQL
(Structured Query Language, Strukturiran ezik za
zaiavki) koito e standartniiat svetovno
razprostranen ezik za zaiavki kum bazi
danni. MySQL se razprostraniava otkrito ot
1996 g. , no nachaloto na razrabotkata mu
datira chak ot 1979 godina. Niakolko puti e
pechelil nagradata "Izbor na chitatelite"
na Linux Journal. MySQL se razprostraniava sus
litsenz za otvoren kod, no sushtestvuvat
i komersialni litsenzi.
2. Suzdavane
na bazi danni i tablitsi
Predi suzdavane na baza
ot danni e neobhodimo da se vleze v MySQL
s administrativen akaunt-
root . Vlizaneto v sistemata stava po
sledniia nachin:
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>
Sled vlizane v MySQL
shte suzdadem baza danni “dhstudio”
:
mysql> create
database dhstudio;
Query OK, 1 row
affected (0.00 sec)
Sega imame vuzmozhnost
da proverim dali novata baza danni e
suzdadena korektno po sledniia nachin:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| dhstudio |
| mysql |
| test |
+--------------------+
3 rows in
set (0.01 sec)
Sled suzdavane na baza
danni shte suzdaden edna tablitsa “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;
Za da proverim dali
tablitsata “knigi” e suzdadena
korektno triabva da izpulnim komandata:
show tables; :
mysql> show tables;
+-----------------------+
| Tables_in_dhstudio |
+-----------------------+
| knigi |
+-----------------------+
1 row in set (0.00 sec)
3. Kontrol na potrebiteli
i privilegii
Edna MySQL
sistema mozhe da ima mnogo potrebiteli.
Ot suobrazheniia za sigurnost super
potrebitelia root triabva
da bude izpolzvan samo za administrativni
tseli. Poradi sushtite suobrazheniia e redno
vseki koito iska da izpolzva sistemata
da ima potrebitel. Komandite za zadavane
i otnemane na prava v MySQL
potrebiteli sa GRANT i
REVOKE. V MySQL
ima chetiri niva na privilegii:
Globalni (Global)
Baza danni (Database)
Tablitsa (Table)
Kolona (Column)
Predi suzdavane na
potrebitel triabva da sme naiasno s kakvi
privilegii shte razpolaga. Nai- chesto
sreshtanite sluchai sa suzdavane na
potrebitel s pulni privilegii ili samo
s privilegii za chetene.
Primer za suzdavane na
potrebitel “dhstudio” s
pulni privilegii vurhu baza danni
“dhstudio”:
mysql> GRANT ALL ON
dhstudio.* TO dhstudio identified by 'dhstudiopass' with grant
option;
Query OK, 0 rows
affected (0.00 sec)
Primer za suzdavane na
potrebitel “dhstudio” s
privilegii samo za razglezhdane:
mysql> GRANT select
ON dhstudio.* TO dhstudio identified by 'dhstudiopass' with grant
option;
Query OK, 0 rows
affected (0.00 sec)
Primer za otnemane na
vsichki prava na potrebitel “dhstudio”:
mysql> REVOKE ALL ON
dhstudio.* from dhstudio;
Query OK, 0 rows
affected (0.00 sec)
4. Dobaviane,
izvlichane, aktualizirane i iztrivane
na danni
Sled kato suzdadohme
baza danni s tablitsa i potrebitel s
pulni privilegii vurhu tiah neka dobavim
danni s komandata “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)
Primer za izvlichane na
danni:
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)
Primer za izvlichane na
danni po kriterii:
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)
Primer za aktualizirane
na danni:
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
Primer za iztrivane na
danni:
mysql> delete from
knigi where knigi_id='1;
Query OK, 1 row
affected (0.00 sec)
5. Pridobivane
na metadanni za baza danni
Bazite danni sudurzhat
danni, a informatsiiata za nachina im na
strukturirane se naricha metadanni. Do
momenta izpolzvahme komandata “show”
za da razberem kakvi tablitsi i bazi
danni ima. Neka razgledame oshte edna
vuzmozhnost na “show”, a
imenno izvezhdane na informatsiia za
kolonite v tablitsata:
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)
Komandata “show”
mozhe da priema i nezadulzhitelna klyuchova
duma “FULL”, koiato predizvikva
pokazvane na dopulnitelna informatsiia
(kolatsii, privilegii i komentari):
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)
Neka razgledame druga
konstruktsiia za pokazvane na metadanni
koiato e ekvivalentna na “show
columns”. Slednite dve konstruktsii
pokazvat edna i sushta informatsiia.
V tazi statiia
se zapoznahme s MySQL i niakoi
osnovni operatsii kato suzdavane na bazi
danni i tablitsi, kontrol na potrebitelite,
dobaviane, izvlichane, aktualizirane i
iztrivane na danni kakto i pridobivane
na metadanni za baza danni. Ako iskate
da nauchite poveche mozhe da posetite ueb
saita na MySQL na adres:
www.mysql.com