ຄຳ ສັ່ງບໍລິຫານຖານຂໍ້ມູນພື້ນຖານ MySQL - ພາກທີ I
ຖານຂໍ້ມູນແມ່ນຊຸດທີ່ມີໂຄງສ້າງຂອງຂໍ້ມູນທີ່ເກັບໄວ້ໃນລະບົບເອເລັກໂຕຣນິກ. ແນວຄວາມຄິດຂອງຖານຂໍ້ມູນແມ່ນເປັນທີ່ຮູ້ຈັກຂອງບັນພະບຸລຸດຂອງພວກເຮົາເຖິງແມ່ນວ່າໃນເວລາທີ່ບໍ່ມີຄອມພິວເຕີ້, ເຖິງຢ່າງໃດກໍ່ຕາມການສ້າງແລະຮັກສາຖານຂໍ້ມູນດັ່ງກ່າວແມ່ນວຽກທີ່ ໜ້າ ເບື່ອ. ໃນຖານຂໍ້ມູນຄູ່ມືກ່າວເຖິງ 100 ໜ້າ, ຖ້າທ່ານຕ້ອງຄົ້ນຫາພະນັກງານທຸກຄົນທີ່ມີເງິນເດືອນຕໍ່າກວ່າ 10k, ພຽງແຕ່ຄິດວ່າມັນຈະຫຍຸ້ງຍາກເທົ່າໃດ, ແລ້ວ.
ໃນໂລກປັດຈຸບັນທ່ານບໍ່ສາມາດ ໜີ ອອກຈາກຖານຂໍ້ມູນໄດ້. ດຽວນີ້ຖານຂໍ້ມູນຫລາຍລ້ານແຫ່ງ ກຳ ລັງເຮັດວຽກຢູ່ທົ່ວໂລກເພື່ອເກັບແລະເກັບ ກຳ ຂໍ້ມູນທຸກປະເພດບໍ່ວ່າຈະເປັນຂໍ້ມູນຍຸດທະສາດ, ບັນທຶກພະນັກງານຫລືເຕັກໂນໂລຢີເວບໄຊທ໌.
ຖານຂໍ້ມູນມັກຈະຖືກເອີ້ນວ່າເປັນຂັ້ນຕອນຫລັງ, ເພາະວ່າມັນບໍ່ສາມາດເບິ່ງເຫັນໄດ້ວ່າຜູ້ໃຊ້ສິ້ນສຸດຫລື End User ພົວພັນກັບຖານຂໍ້ມູນໂດຍກົງ. ພວກເຂົາເຮັດວຽກກ່ຽວກັບຂະບວນການດ້ານ ໜ້າ ຂອງ viz., PHP, VB, ASP.NET, ແລະອື່ນໆແລະຂໍໃຫ້ທາງດ້ານ ໜ້າ ຈັດການກັບຖານຂໍ້ມູນໃນ back-end.
ມີເຄື່ອງແມ່ຂ່າຍຖານຂໍ້ມູນຫຼາຍຢ່າງແລະລູກຄ້າສາມາດໃຊ້ໄດ້ເຊັ່ນ Oracle, MySQL, MySQLi, MongoDB ແລະອື່ນໆ syntax ຂອງທັງ ໝົດ ເຫຼົ່ານີ້ຈະຫຼາຍຫຼື ໜ້ອຍ ກ່ວາເກົ່າ. Mastering one ໝາຍ ຄວາມວ່າການຄວບຄຸມສ່ວນໃຫຍ່ຂອງພວກມັນແລະການຮຽນແບບສອບຖາມຂອງຖານຂໍ້ມູນແມ່ນງ່າຍແລະມ່ວນຫຼາຍ.
ໃຫ້ເລີ່ມຕົ້ນດ້ວຍການສອບຖາມແບບງ່າຍໆໃນຖານຂໍ້ມູນ. ພວກເຮົາຈະ ນຳ ໃຊ້ MySQL ເຊິ່ງມາພ້ອມກັບການແຈກແຈງ Linux ສ່ວນຫລາຍໂດຍຄ່າເລີ່ມຕົ້ນ, ທ່ານສາມາດຕິດຕັ້ງມັນໂດຍກົງຈາກບ່ອນເກັບຂໍ້ມູນ, ຖ້າມັນບໍ່ໄດ້ຖືກຕິດຕັ້ງໂດຍຄ່າເລີ່ມຕົ້ນໃນກໍລະນີຂອງທ່ານ.
ການສອບຖາມຖານຂໍ້ມູນແມ່ນແບບງ່າຍໆຂອງລະຫັດທີ່ຖືກສົ່ງໄປຫາຖານຂໍ້ມູນເພື່ອໃຫ້ໄດ້ຜົນຕາມຄວາມຕ້ອງການແລະປັບປຸງຕາມຄວາມຕ້ອງການ.
ຕິດຕັ້ງຖານຂໍ້ມູນ MySQL
ໃຊ້“ yum” ຫຼື“ apt” ຜູ້ຈັດການຊຸດເພື່ອຕິດຕັ້ງຖານຂໍ້ມູນ MySQL.
# yum install mysql mysql-client mysql-server (on Yum based Systems) # apt-get install mysql mysql-client mysql-server (on Apt based Systems)
ເລີ່ມຕົ້ນການບໍລິການຖານຂໍ້ມູນ MySQL ຄື:
# service mysqld start or # service mysql start
ການຕິດຕັ້ງຖານຂໍ້ມູນ MySQL ໄດ້ດີຈະພາທ່ານໄປຕັ້ງຄ່າບ່ອນທີ່ທ່ານຖືກຖາມໃຫ້ຕັ້ງລະຫັດຜ່ານ admin, ແລະອື່ນໆ. ເມື່ອ ສຳ ເລັດການຕິດຕັ້ງແລະເລີ່ມຕົ້ນ server ໄປທີ່ MySQL ຂອງທ່ານ.
# mysql -u root -p
ປ່ຽນຮາກດ້ວຍຊື່ຜູ້ໃຊ້ທີ່ຖືກຕັ້ງຄ່າຂອງທ່ານແລະໃສ່ລະຫັດຜ່ານເມື່ອຖືກກະຕຸ້ນ, ຖ້າຂໍ້ມູນການເຂົ້າສູ່ລະບົບຖືກຕ້ອງ, ທ່ານຈະຢູ່ທີ່ MySQL ຂອງທ່ານທີ່ກະພິບຕາຂອງທ່ານ.
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>
ດຽວນີ້ການ ດຳ ເນີນການສອບຖາມໃນເວລາກະຕຸ້ນນີ້ແມ່ນມີການສຶກສາແລະມ່ວນຫຼາຍ.
mysql> create database tecmint ; Query OK, 1 row affected (0.02 sec) mysql>
ໝາຍ ເຫດ: ມັນລາຍງານວ່າການສອບຖາມຖືກຕ້ອງ, ໝາຍ ຄວາມວ່າຖານຂໍ້ມູນຖືກສ້າງຂື້ນ. ທ່ານສາມາດກວດພິສູດຖານຂໍ້ມູນທີ່ທ່ານສ້າງຂື້ນ ໃໝ່ ເປັນ.
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | tecmint | | test | +--------------------+ 9 rows in set (0.00 sec) mysql>
ໝາຍ ເຫດ: ສັງເກດຖານຂໍ້ມູນຂອງທ່ານໃນຜົນຜະລິດຂ້າງເທິງ.
ຕອນນີ້ທ່ານ ຈຳ ເປັນຕ້ອງເລືອກຖານຂໍ້ມູນເພື່ອເຮັດວຽກກັບມັນ.
mysql> use tecmint; Database changed mysql>
ນີ້ພວກເຮົາຈະສ້າງຕາຕະລາງເວົ້າວ່າ“ minttec” ເຊິ່ງມີສາມຂົງເຂດຄື:
mysql> CREATE TABLE minttec ( -> id Int(3), -> first_name Varchar (15), -> email Varchar(20) -> ); Query OK, 0 rows affected (0.08 sec) mysql>
ໝາຍ ເຫດ: ການສອບຖາມຂ້າງເທິງກ່າວວ່າ OK ເຊິ່ງ ໝາຍ ຄວາມວ່າຕາຕະລາງຖືກສ້າງຂື້ນໂດຍບໍ່ມີຂໍ້ຜິດພາດ. ເພື່ອພິສູດຕາຕະລາງ ດຳ ເນີນການສອບຖາມລຸ່ມນີ້.
mysql> show tables; +-------------------+ | Tables_in_tecmint | +-------------------+ | minttec | +-------------------+ 1 row in set (0.00 sec) mysql>
ສິ່ງທີ່ ກຳ ລັງ ດຳ ເນີນໄປຈົນເຖິງດຽວນີ້. ຢື! ທ່ານສາມາດເບິ່ງຖັນທີ່ທ່ານສ້າງໃນຕາຕະລາງ“ minttec” ຄື:
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>
ມັນບໍ່ມີຫຍັງ ໜ້ອຍ ກວ່າເວດມົນ. ເຖິງຢ່າງໃດກໍ່ຕາມຂ້ອຍຈະບອກທ່ານກ່ຽວກັບປະເພດຂອງການປະກາດແລະຄວາມ ໝາຍ ຂອງມັນ.
<
ຕະຫຼອດດຽວນີ້ພວກເຮົາ ຈຳ ເປັນຕ້ອງເພີ່ມຖັນທີ່ເວົ້າວ່າ 'ນາມສະກຸນຊື່' ຫຼັງຈາກຖັນ 'ຊື່ - ທຳ ອິດ'.
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
ຕອນນີ້, ພິສູດມັນຢູ່ໃນຕາຕະລາງຂອງທ່ານ.
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>
ຕອນນີ້ພວກເຮົາຈະເພີ່ມຖັນໃສ່ເບື້ອງຂວາເວົ້າວ່າຖັນ 'ປະເທດ' ຢູ່ທາງຂວາມືຂອງອີເມວ.
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>
ຢືນຢັນການສອບຖາມກ່ຽວກັບການໃສ່ຄໍ ລຳ ຂ້າງເທິງ.
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>
ຈະເປັນແນວໃດກ່ຽວກັບການເອົາຄ່າເຂົ້າໃນສະ ໜາມ?
mysql> INSERT INTO minttec VALUES ('1' , 'Ravi' , 'Saive' , '[email ' , 'India' ); Query OK, 1 row affected (0.02 sec) mysql>
ແນວໃດກ່ຽວກັບການໃສ່ຫຼາຍກ່ວາ 1 ມູນຄ່າໃນແຕ່ລະຄັ້ງໃນຕາຕະລາງຂ້າງເທິງ.
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
ຢືນຢັນການແຊກຂ້າງເທິງ.
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>
ໃຫ້ເວົ້າວ່າການເຂົ້າສາມຂອງຜົນໄດ້ຮັບຂ້າງເທິງນີ້ແມ່ນບໍ່ຖືກຕ້ອງແລະພວກເຮົາຕ້ອງການທີ່ຈະລົບລາຍການທີສາມ.
mysql> DELETE FROM minttec WHERE id = 3; Query OK, 1 row affected (0.02 sec)
ກວດສອບການ ດຳ ເນີນງານຂ້າງເທິງ.
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)
id (= 4) ຈຳ ເປັນຕ້ອງແກ້ໄຂ.
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>
ຢືນຢັນການສອບຖາມຂ້າງເທິງ.
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>
ໝາຍ ເຫດ: ການສອບຖາມຂ້າງເທິງ, ດັ່ງທີ່ຖືກປະຕິບັດບໍ່ແມ່ນຄວາມຄິດທີ່ດີ. ມັນຈະປ່ຽນ id ໃຫ້ເປັນ '4' ບ່ອນທີ່ຊື່ ທຳ ອິດແມ່ນ 'tecmint'. ມັນເປັນຄວາມຄິດທີ່ດີທີ່ຈະໃຊ້ຖັນຫຼາຍກ່ວາ ໜຶ່ງ ບ່ອນທີ່ມີອານຸປະໂຫຍດທີ່ຈະມີຂໍ້ຜິດພາດ ໜ້ອຍ ທີ່ສຸດ, ດັ່ງທີ່:
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>
ຂໍໃຫ້ພວກເຮົາ ຈຳ ເປັນຕ້ອງຖີ້ມ (ລຶບ) ຖັນທີ່ພວກເຮົາຄິດວ່າບໍ່ມີຄວາມ ສຳ ຄັນຫຍັງເລີຍເວົ້າວ່າ 'ປະເທດ' ຢູ່ນີ້.
mysql> ALTER TABLE minttec drop country; Query OK, 3 rows affected (0.15 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql>
ກວດສອບຕາຕະລາງ.
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>
ທ່ານບໍ່ຄິດວ່າຊື່ຕາຕະລາງຂອງພວກເຮົາ“ minttec” ແມ່ນບໍ່ມີຄວາມກ່ຽວຂ້ອງຫຼາຍ. ແນວໃດກ່ຽວກັບການປ່ຽນມັນເປັນ tecmint_table.
mysql> RENAME TABLE minttec TO tecmint_table; Query OK, 0 rows affected (0.03 sec) mysql>
ເບິ່ງຕາຕະລາງທັງ ໝົດ ພາຍໃຕ້ຖານຂໍ້ມູນປະຈຸບັນ.
mysql> show tables; +-------------------+ | Tables_in_tecmint | +-------------------+ | tecmint_table | +-------------------+ 1 row in set (0.00 sec) mysql>
ຕາຕະລາງໄດ້ຖືກປ່ຽນຊື່ ໃໝ່. ດຽວນີ້ ສຳ ຮອງຖານຂໍ້ມູນ MySQL ຂ້າງເທິງ, ໃນ ຄຳ ສັ່ງດຽວໂດຍບໍ່ມີເຄື່ອງມືທີ່ສັບສົນ. ດໍາເນີນການລະຫັດຂ້າງລຸ່ມນີ້ຢູ່ປາຍຍອດຂອງທ່ານແລະບໍ່ແມ່ນໃນ 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
ມັນເປັນຄວາມຄິດທີ່ດີສະເຫມີທີ່ຈະຮັກສາ Backup ຂອງຖານຂໍ້ມູນ MySQL. ການຟື້ນຟູຂໍ້ມູນ MySQL ທີ່ໄດ້ຮັບການ ສຳ ຮອງແມ່ນອີກເທື່ອ ໜຶ່ງ ເປັນລະຫັດງ່າຍໆທີ່ທ່ານຕ້ອງການທີ່ຈະໃຊ້ໃນເວລາສົ່ງຂອງທ່ານແລະບໍ່ແມ່ນຢູ່ທີ່ mysql ຂອງທ່ານ.
ແຕ່, ລໍຖ້າກ່ອນອື່ນ ໝົດ ພວກເຮົາຈະລຶບຖານຂໍ້ມູນເພື່ອກວດສອບວ່າການຟື້ນຟູຂອງພວກເຮົາສົມບູນແບບ.
mysql> drop database tecmint; Query OK, 1 row affected (0.02 sec)
ກວດເບິ່ງຖານຂໍ້ມູນ 'tecmint' ໃນຖານຂໍ້ມູນຂອງທ່ານ.
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | my_database | | mysql | | performance_schema | | phpmyadmin | | sisso | | test | +--------------------+ 7 rows in set (0.00 sec) mysql>
ຍິ່ງໃຫຍ່! ຖານຂໍ້ມູນຖືກສູນຫາຍ, ແຕ່ພວກເຮົາບໍ່ ຈຳ ເປັນຕ້ອງກັງວົນ, ພວກເຮົາ ກຳ ລັງມີການ ສຳ ຮອງຂໍ້ມູນ.
ເພື່ອຟື້ນຟູຖານຂໍ້ມູນທີ່ສູນຫາຍ, ໃຫ້ເຮັດຕາມ ຄຳ ສັ່ງຕໍ່ໄປນີ້.
# mysql -u root -p tecmint < tecmint.sql Enter password: ERROR 1049 (42000): Unknown database 'tecmint'
OOPS! ມີຂໍ້ຜິດພາດ, ພວກເຮົາບໍ່ໄດ້ສ້າງ tecmint ຖານຂໍ້ມູນ. ສະນັ້ນໄປທີ່ການກະຕຸ້ນ mysql ຂອງທ່ານແລະສ້າງຖານຂໍ້ມູນ 'tecmint'.
mysql> create database tecmint; Query OK, 1 row affected (0.00 sec) mysql>
ໃນປັດຈຸບັນເວລາທີ່ຈະດໍາເນີນການປະຕິບັດຄໍາສັ່ງຄືນທີ່ແທັບ shell ຂອງທ່ານ (ຢ່າງເຂັ້ມງວດ).
# mysql -u root -p tecmint < tecmint.sql Enter password:
ຢືນຢັນຖານຂໍ້ມູນຂອງທ່ານ.
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | tecmint | | test | +--------------------+ 8 rows in set (0.00 sec)
ຢັ້ງຢືນເນື້ອໃນຂອງຖານຂໍ້ມູນ.
mysql> show tables from tecmint; +-------------------+ | Tables_in_tecmint | +-------------------+ | tecmint_table | +-------------------+ 1 row in set (0.00 sec) mysql>
ຢັ້ງຢືນເນື້ອໃນຂອງຕາຕະລາງທີ່ທ່ານໄດ້ຟື້ນຟູແລ້ວ.
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)
ນີ້ບໍ່ແມ່ນຈຸດຈົບແນ່ນອນ, ພວກເຮົາຈະເວົ້າເຖິງແນວຄວາມຄິດຂອງຫຼັກຫຼັກ, ກຸນແຈຕ່າງປະເທດ, ຫລາຍຕາຕະລາງແລະການສອບຖາມທີ່ໃຊ້ໂດຍໃຊ້ script PHP ງ່າຍໆໃນພາກຕໍ່ໄປຂອງບົດ.
ຢ່າລືມບອກພວກເຮົາວ່າທ່ານຮູ້ສຶກແນວໃດໃນຂະນະທີ່ທ່ານອ່ານບົດຄວາມນີ້. ຄຳ ເຫັນຂອງທ່ານໄດ້ຮັບການຕີລາຄາສູງ. ມີສຸຂະພາບທີ່ດີແລະເບິ່ງແຍງ, ຕິດຕໍ່ກັບ Tecmint.