MySQL Basic Database Administration Commands - Bahin I


Ang database usa ka structured set sa datos nga gitipigan sa elektronik nga paagi. Ang konsepto sa database nahibal-an sa atong mga katigulangan bisan kung wala’y mga kompyuter, bisan pa ang paghimo ug pagmentinar sa ingon nga database kapoy kaayo nga trabaho. Sa usa ka manual database ingna sa 100 ka mga panid, kung kinahanglan nimo pangitaon ang tanan nga mga empleyado kansang suweldo wala’y 10k, hunahunaa lang kung unsa kini ka lisud, unya.

Sa kalibutan karon dili ka makaikyas sa Database. Sa pagkakaron minilyon nga database ang nagtrabaho sa tibuok kalibutan aron sa pagtipig ug pagkuha sa mga datos sa tanang matang ma-stratehikong data man kini, rekord sa empleyado o mga teknolohiya sa web.

Ang database sagad gitawag nga back-end nga proseso, tungod kay dili kini makita sa end user o End User nga direktang nakig-interact sa database. Nagtrabaho sila sa front-end process viz., PHP, VB, ASP.NET, ug uban pa ug pangutan-a ang front end sa pag-atubang sa database sa back-end.

Adunay ubay-ubay nga database server ug kliyente nga magamit sama sa Oracle, MySQL, MySQLi, MongoDB ug uban pa. Ang syntax sa tanan niini parehas ra. Ang pag-master sa usa nagpasabut nga makontrol ang kadaghanan sa kanila ug ang pagkat-on sa mga pangutana sa usa ka database dali ug makalingaw.

Magsugod ta sa yanong mga pangutana sa database. Gamiton namon ang MySQL nga nag-uban sa kadaghanan sa mga distribusyon sa Linux nga default, mahimo nimo kini i-install nga mano-mano gikan sa repository, kung wala kini gi-install nga default sa imong kaso.

Maayo ang usa ka pangutana sa database usa ka yano nga piraso sa code nga gipadala sa database aron makuha ang naandan ug dalisay nga resulta, kung gikinahanglan.

I-install ang MySQL Database

Gamita ang yum o apt package manager aron ma-install ang MySQL Database.

# yum install mysql mysql-client mysql-server  (on Yum based Systems)

# apt-get install mysql mysql-client mysql-server (on Apt based Systems)

Pagsugod sa serbisyo sa database sa MySQL ingon:

# service mysqld start
or
# service mysql start

Ang maayo nga pag-instalar og MySQL database magdala kanimo ngadto sa configuration diin ikaw hangyoon sa pag-setup sa admin password, ug uban pa. Kung nahuman na ang pag-instalar ug pagsugod sa server adto sa imong MySQL prompt.

# mysql -u root -p

Ilisan ang gamut sa imong gi-configure nga username ug isulod ang password kung giaghat, kung husto ang kredensyal sa pag-login, naa ka sa imong MySQL prompt sa pagpamilok sa imong mga mata.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 195 

Server version: 5.5.31-0+wheezy1 (Debian) 

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 

Oracle is a registered trademark of Oracle Corporation and/or its affiliates. 
Other names may be trademarks of their respective owners. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

Karon ang paghimo sa mga pangutana sa kini nga pag-aghat labi ka edukado ug makalingaw.

mysql> create database tecmint ;
Query OK, 1 row affected (0.02 sec) 

mysql>

Mubo nga sulat: Nagreport kini nga husto ang pangutana, nagpasabut nga gihimo ang database. Mahimo nimong pamatud-an ang imong bag-ong nahimo nga database ingon.

mysql> show databases; 
+--------------------+
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
| tecmint            | 
| test               | 
+--------------------+ 
9 rows in set (0.00 sec) 
mysql>

Hinumdomi: Matikdi ang imong database sa output sa ibabaw.

Karon kinahanglan nimo nga pilion ang database aron magtrabaho niini.

mysql> use tecmint;
Database changed
mysql>

Dinhi maghimo kami usa ka lamesa nga nag-ingon nga minttec nga adunay tulo nga mga natad sama sa:

mysql> CREATE TABLE minttec (
    -> id Int(3), 
    -> first_name Varchar (15), 
    -> email Varchar(20) 
    -> ); 
Query OK, 0 rows affected (0.08 sec) 
mysql>

Mubo nga sulat: Ang pangutana sa ibabaw nag-ingon OK nga nagpasabut nga ang lamesa gihimo nga wala’y sayup. Aron mapamatud-an ang lamesa padagana ang pangutana sa ubos.

mysql> show tables; 
+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| minttec           | 
+-------------------+ 

1 row in set (0.00 sec) 

mysql>

Maayo ang kahimtang hangtod karon. Oo nga! Mahimo nimong tan-awon ang mga kolum nga imong gibuhat sa lamesa nga minttec ingon:

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+ 
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+ 
3 rows in set (0.00 sec)

mysql>

Kini usa ka salamangka. Bisan pa niana, isulti ko kanimo ang bahin sa mga tipo sa deklarasyon ug ang kahulugan niini.

  1. Int kay Integer
  2. Ang Varchar kay char nga adunay baryable nga gitas-on sama sa gipasabot. Ang bili human sa Type mao ang gitas-on sa field up-diin kini makatipig og data.

OK karon kinahanglan namong idugang ang usa ka kolum nga isulti ang 'last_name' pagkahuman sa kolum 'first_name'.

mysql> ALTER TABLE minttec ADD last_name varchar (20) AFTER first_name; 
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0

Karon, pamatud-i kini sa imong lamesa.

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+ 
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| last_name  | varchar(20) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+ 

4 rows in set (0.00 sec) 

mysql>

Karon magdugang kami usa ka kolum sa tuo ingon usa ka kolum nga 'nasud' sa tuo sa email.

mysql> ALTER TABLE minttec ADD country varchar (15) AFTER email; 
Query OK, 0 rows affected (0.16 sec) 
Records: 0  Duplicates: 0  Warnings: 0 

mysql>

Tinoa ang pangutana sa pagsulod sa kolum sa ibabaw.

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| last_name  | varchar(20) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
| country    | varchar(15) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec) 

mysql>

Unsa man ang bahin sa pagsal-ot sa mga kantidad sa uma?

mysql> INSERT INTO minttec VALUES ('1' , 'Ravi' , 'Saive' , '[email ' , 'India' );
Query OK, 1 row affected (0.02 sec) 

mysql>

Giunsa ang pagsal-ot sa labaw sa 1 nga kantidad matag higayon sa lamesa sa ibabaw.

mysql> INSERT INTO minttec VALUES ('2' , 'Narad' , 'Shrestha' , '[email ' , 'India' ), ('3' , 'user' , 'singh' , '[email ' , 'Aus' ), ('4' , 'tecmint' , '[dot]com' , '[email ' , 'India' );
Query OK, 3 rows affected (0.05 sec) 
Records: 3  Duplicates: 0  Warnings: 0

Tinoa ang insertion sa ibabaw.

mysql> select * from minttec; 
+------+------------+-----------+-------------------+---------+ 
| id   | first_name | last_name | email             | country | 
+------+------------+-----------+-------------------+---------+ 
|    1 | Ravi	    | Saive     | [email  | India   | 
|    2 | Narad      | Shrestha  | [email      | India   | 
|    3 | user       | singh     | [email       | Aus     | 
|    4 | tecmint    | [dot]com  | [email  | India   | 
+------+------------+-----------+-------------------+---------+ 

4 rows in set (0.00 sec)

mysql>

Ingnon ta nga ang ikatulo nga entry sa output sa ibabaw dili balido ug kinahanglan natong papason ang ikatulo nga entry.

mysql> DELETE FROM minttec WHERE id = 3;

Query OK, 1 row affected (0.02 sec)

Tinoa ang operasyon sa ibabaw.

mysql> select * from minttec;

+------+------------+-----------+-------------------+---------+ 
| id   | first_name | last_name | email             | country | 
+------+------------+-----------+-------------------+---------+
|    1 | Ravi       | Saive     | [email  | India   | 
|    2 | Narad      | Shrestha  | [email      | India   | 
|    4 | tecmint    | [dot]com  | [email  | India   | 
+------+------------+-----------+-------------------+---------+
3 rows in set (0.00 sec)

Ang id (=4) kinahanglan i-edit.

mysql> UPDATE minttec SET id = 3 WHERE first_name = 'tecmint'; 
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Tinoa ang pangutana sa ibabaw.

mysql> UPDATE minttec SET id = 3 WHERE first_name = 'tecmint'; 
Query OK, 1 row affected (0.02 sec) 
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Mubo nga sulat: Ang pangutana sa ibabaw, ingon nga gihimo dili maayo nga ideya. Kini mag-usab sa id ngadto sa '4' diin ang una nga ngalan kay 'tecmint'. Kanunay nga usa ka maayong ideya nga mogamit labaw pa sa usa ka kolum kung diin ang clause makakuha gamay nga sayup, sama sa:

mysql> UPDATE minttec SET id = 6 WHERE first_name = 'tecmint'AND last_name = '[dot]com'; 
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Kinahanglan naton nga ihulog (pagtangtang) ang usa ka kolum nga gihunahuna namon, wala’y hinungdan nga giingon nga 'nasud' dinhi.

mysql> ALTER TABLE minttec drop country; 
Query OK, 3 rows affected (0.15 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql>

Tinoa ang lamesa.

mysql> select * from minttec; 

+------+------------+-----------+-------------------+ 
| id   | first_name | last_name | email             | 
+------+------------+-----------+-------------------+ 
|    1 | Ravi       | Saive     | [email  | 
|    2 | Narad      | Shrestha  | [email      | 
|    6 | tecmint    | [dot]com  | [email  | 
+------+------------+-----------+-------------------+
3 rows in set (0.00 sec) 

mysql>

Wala ba nimo hunahunaa ang among ngalan sa lamesa nga minttec dili kaayo hinungdanon. Giunsa kini pagbag-o sa tecmint_table.

mysql> RENAME TABLE minttec TO tecmint_table; 
Query OK, 0 rows affected (0.03 sec)

mysql>

Tan-awa ang tanang mga lamesa ubos sa kasamtangan nga database.

mysql> show tables; 

+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| tecmint_table     | 
+-------------------+
1 row in set (0.00 sec) 

mysql>

Giilisan ang ngalan sa lamesa. Karon pagkuha usa ka backup sa naa sa ibabaw nga MySQL database, sa usa ka linya sa mando nga wala’y bisan unsang sopistikado nga himan. Pagdalagan ang ubos nga code sa imong terminal ug dili sa mysql prompt.

# mysqldump -u root -p tecmint > tecmint.sql

check the dumped file on your desktop which would have contents something like
-- MySQL dump 10.13  Distrib 5.5.31, for debian-linux-gnu (i686) --
-- Server version 5.5.31-0+wheezy1 -- 
Dump completed on 2013-09-02 12:55:37

Kanunay nga usa ka maayong ideya ang pagpadayon sa Backup sa mga database sa MySQL. Ang pagpasig-uli sa gi-back up nga MySQL Data usa na usab ka yano nga linya sa code nga kinahanglan nimong ipadagan sa imong terminal prompt ug dili sa imong mysql prompt.

Apan, paghulat una atong tangtangon ang database aron mapamatud-an kung perpekto ba ang atong pag-uli.

mysql> drop database tecmint; 
Query OK, 1 row affected (0.02 sec)

Susiha ang database 'tecmint' sa imong database server.

mysql> show databases; 

+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| my_database        | 
| mysql              | 
| performance_schema | 
| phpmyadmin         | 
| sisso              | 
| test               | 
+--------------------+

7 rows in set (0.00 sec) 
mysql>

Nindot! Ang database nawala, apan dili kita kinahanglan nga mabalaka, kita adunay backup.

Aron mapasig-uli ang nawala nga database, padagana ang mosunod nga sugo.

# mysql -u root -p tecmint < tecmint.sql
Enter password:
ERROR 1049 (42000): Unknown database 'tecmint'

OOPS! Usa ka kasaypanan, uy wala pa mi nagmugna sa database tecmint. Busa adto sa imong mysql prompt ug paghimo og database 'tecmint'.

mysql> create database tecmint; 
Query OK, 1 row affected (0.00 sec) 

mysql>

Karon panahon na sa pagpadagan sa pagpasig-uli nga sugo sa imong shell prompt (estrikto).

# mysql -u root -p tecmint < tecmint.sql 
Enter password:

I-verify ang imong database.

mysql> show databases; 

+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
| tecmint            | 
| test               | 
+--------------------+ 
8 rows in set (0.00 sec)

Susiha ang mga sulod sa database.

mysql> show tables from tecmint;

+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| tecmint_table     | 
+-------------------+ 
1 row in set (0.00 sec)

mysql>

Tinoa ang mga sulod sa imong gipahiuli nga lamesa.

mysql> select * from tecmint_table; 

+------+------------+-----------+-------------------+ 
| id   | first_name | last_name | email             | 
+------+------------+-----------+-------------------+ 
|    1 | Ravi       | Saive     | [email  | 
|    2 | Narad      | Shrestha  | [email      | 
|    6 | tecmint    | [dot]com  | [email  | 
+------+------------+-----------+-------------------+

3 rows in set (0.00 sec)

Dili kini ang katapusan siguradong, atong tabonan ang konsepto sa panguna nga yawe, langyaw nga yawe, daghang mga lamesa ug pagpadagan sa mga pangutana gamit ang yano nga script sa PHP sa sunod nga bahin sa artikulo.

Ayaw kalimti ang pagsulti kanamo, kung unsa ang imong gibati samtang nagbasa sa artikulo. Ang imong mga komento gipabilhan pag-ayo. Magpabiling Himsog ug Tuned, magpabiling konektado sa Tecmint.