1 / 54

MySQL

MySQL. ความรู้เบื้องต้นเกี่ยวกับ MySQL. อ. นัฐพงศ์ ส่งเนียม http://www.siam2dev.com ม. ราชภัฎพระนคร. ฐานข้อมูลคืออะไร?.

erica-king
Download Presentation

MySQL

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MySQL ความรู้เบื้องต้นเกี่ยวกับ MySQL อ. นัฐพงศ์ ส่งเนียม http://www.siam2dev.com ม. ราชภัฎพระนคร

  2. ฐานข้อมูลคืออะไร? • ฐานข้อมูล(Database) คือ กลุ่มของข้อมูลแบบต่างๆที่รวบรวมไว้ และนำมาจัดเรียงให้เป็นระบบเพื่อใช้ตามวัตถุประสงค์ที่ต้องการ เช่น สมุดรายชื่อผู้ใช้โทรศัพท์ ทะเบียนรายชื่อนักศึกษา เป็นต้น

  3. คุณสมบัติฐานข้อมูล • การนำข้อมูลที่สัมพันธ์กันทั้งหมดมาไว้รวมกัน • ข้อมูลที่มีลักษณะเป็นมาตรฐาน • มีชุดเดียว • ใช้ได้ทั้งหน่วยงาน • มีระบบตรวจสอบป้องกัน • เป็นอิสระจากโปรแกรม • มีภาษาสอบถาม (QUERY LANGUAGE) • ต้องมีระบบจัดการฐานข้อมูล (DATABASE MANAGEMENT SYSTEM)

  4. ข้อดีของฐานข้อมูล • ลดความซ้ำซ้อนของข้อมูล • ใช้ข้อมูลร่วมกันได้ • มีระบบจัดการความปลอดภัยของข้อมูล • หลีกเลี่ยงความขัดแย้งของข้อมูล

  5. ระบบจัดการฐานข้อมูล(DBMS)ระบบจัดการฐานข้อมูล(DBMS) • นิยมเรียกว่า ดีบีเอ็มเอส(DBMS) • คือชุดของโปรแกรมคอมพิวเตอร์ซึ่งทำหน้าที่สร้าง ดูแลรักษา และใช้งานส่วนต่าง ๆของฐานข้อมูล

  6. User/Programmers DATABASE SYSTEM Application Programs/Queries DBMS SOFTWARE SOFTWARE TO PROCESS QUERIES/PROGRAMS SOFTWARE TO ACCESS DTORED DATA Store Database Definition (META-DATA) Stored DataBase

  7. ระบบจัดการฐานข้อมูล(DBMS)ระบบจัดการฐานข้อมูล(DBMS) • ต้องมีการใช้งานทรัพยากรของคอมพิวเตอร์อย่างมีประสิทธิภาพ • ทำหน้าที่ติดต่อกับตัวจัดการระบบไฟล์ • การควบคุมการคงสภาพ • การควบคุมระบบความปลอดภัย • การสร้างระบบสำรองและการฟื้นสภาพ • การควบคุมภาวะพร้อมกัน

  8. แบบจำลองข้อมูล(Data Modelling) มี 3 แบบ • ฐานข้อมูลแบบลำดับขั้น (Hierarchical Database Model) • ฐานข้อมูลแบบข่ายงาน (Network Database Model) • ฐานข้อมูลแบบตาราง (Relational Database Model)

  9. แบบลำดับขั้น (Hierarchyical Database) • เป็นการแสดงความสัมพันธ์ของเอนติตี้ในแบบลำดับขั้น ซึ่งเริ่มจากเอนติตี้หลักแล้วย่อยลงไปเป็นเอนติตี้ต่างๆตามลำดับ เป็นความสัมพันธ์แบบพ่อกับลูก คณะ 1 1 N N N อาจารย์ นิสิต ห้อง lab N N วิชา

  10. แบบข่ายงาน (Network Database) • เป็นการแสดงความสัมพันธ์ของเอนติตี้ในแบบที่เอนติตี้มีความสัมพันธ์กับเอนติตี้อื่นๆได้หลายเอนติตี้ โครงการ คณะ 1 1 N N N N N อาจารย์ นิสิต ห้อง lab

  11. ฐานข้อมูลเชิงสัมพันธ์(Relational Database) • การจัดเก็บข้อมูลจะอยู่ในรูปของตาราง มีคอลัมน์ และแถว ในแต่ละตารางจะเก็บข้อมูลเกี่ยวกับเรื่องใดเรื่องหนึ่ง โดยข้อมูลในตารางหนึ่งอาจมีความสัมพันธ์กับตารางอื่นๆได้ • เช่นตารางที่เก็บข้อมูลการขาย กับตารางที่เก็บข้อมูลลูกค้า และตารางที่เก็บข้อมูลสินค้า เมื่อต้องการพิมพ์ใบสั่งซื้อ จะเห็นว่ามีข้อมูลจากทั้งสามตาราง คือ มีรายการขาย ชื่อ ที่อยู่ลูกค้า ชื่อ ราคาสินค้า ปริมาณการสั่งซื้อ ทั้งนี้ต้องมีการกำหนดความสัมพันธ์ระหว่างตารางต่างๆไว้ก่อน

  12. ฐานข้อมูลเชิงสัมพันธ์ฐานข้อมูลเชิงสัมพันธ์ • เก็บข้อมูลในรูปตาราง กลุ่มของข้อมูลที่จัดมีความสัมพันธ์กันในรูปแนวนอนและแนวตั้ง ซึ่งเรียกข้อมูลที่เรียงกันในรูปแนวนอนว่า เรคอร์ด(record) และจะเรียกข้อมูลที่วางในแนวตั้งว่า เขตข้อมูล(Field)

  13. ระบบจัดการฐานข้อมูลเชิงสัมพันธ์ระบบจัดการฐานข้อมูลเชิงสัมพันธ์ • หรือที่เรียกว่า RDBMS(Relational DataBase System) เป็นเครื่องมือในการจัดเก็บข้อมูล เพื่อให้ค้นหาข้อมูลแบบต่างๆได้ตามต้องการ นอกจากนี้ยังช่วยในการดูแลรักษาข้อมูล เช่นการแก้ไข เพิ่ม ลบข้อมูล ตลอดจนการออกรายงานได้ง่ายขึ้นความสามารถของระบบจัดการฐานข้อมูลมี 3 ประการคือ • การกำหนดนิยามข้อมูล(Data Definition) • การจัดการกับข้อมูล(Data Manipulation) • การควบคุมข้อมูล(Data Control)

  14. การกำหนดนิยามข้อมูล • ได้แก่การกำหนดโครงสร้างของข้อมูลที่เก็บในฐานข้อมูล การกำหนดชนิดของข้อมูลและลักษณะการจัดเก็บข้อมูล เช่น • สามารถจะกำหนดกฎในการตรวจสอบข้อมูล • สามารถกำหนดความสัมพันธ์(Relation)ระหว่างกลุ่มของข้อมูลหรือที่เรียกว่าตาราง(Table) เพื่อให้สามารถตรวจสอบว่าข้อมูลมีความถูกต้องตรงกันอยู่เสมอหรือไม่ • CREATE, ALTER, DROP

  15. การจัดการกับข้อมูล • ได้แก่การทำงานกับข้อมูล เช่นการเรียกค้นข้อมูล(Select) การเพิ่ม (Insert), ปรับปรุง(Update), และลบข้อมูล(Delete) ฟิลด์ใดฟิลด์หนึ่ง หรือพร้อมกันหลายฟิลด์หลายเรคอร์ดได้

  16. การควบคุมข้อมูล • ได้แก่การรักษาความปลอดภัยของข้อมูล เพื่อให้แน่ใจว่าผู้ที่จะอ่านหรือแก้ไขข้อมูลได้นั้น จะต้องเป็นผู้ที่ได้รับอนุญาตเท่านั้น และสามารถป้องกันไม่ให้มีการแก้ไขข้อมูลเดียวกันพร้อมๆกันได้ • GRANT, REVOKE

  17. ศัพท์เบื้องต้นของฐานข้อมูลศัพท์เบื้องต้นของฐานข้อมูล Field Table Record

  18. เอนติตี้(Entity)และแอตทริบิวต์(Attribute) • เอนติตี้ หมายถึงบุคคล สิ่งของ เหตุการณ์หรืออะไรก็ได้ที่เราสนใจ ต้องการจะเก็บข้อมูล • แอตทริบิวต์ คือคุณลักษณะหรือรายละเอียดของแต่ละเอนติตี้ โดยแต่ละเอนติตี้จะมีได้หลายแอตทริบิวต

  19. ความสัมพันธ์(Relationship) • เป็นสิ่งที่เชื่อมโยงระหว่างข้อมูลในตารางต่างๆเข้าด้วยกัน แบ่งได้เป็น 3 ลักษณะ ดังนี้ • แบบหนึ่งต่อกลุ่ม(One-to-Many) • แบบหนึ่งต่อหนึ่ง(One-to-One) • แบบกลุ่มต่อกลุ่ม(Many –to-Many)

  20. ความสัมพันธ์ (Relation) • หมายถึงสิ่งที่เกี่ยวข้องกันของสิ่งของตั้งแต่สองสิ่ง • คนกับบ้าน • ความสัมพันธทาง Relational Database จะหมายถึง ตาราง 2 ตารางมีความสัมพันธ์กัน ซึ่งแบ่งเป็น 3 แบบ ดังนี้ • One-To-One เช่น ความสัมพันธ์ระหว่างทะเบียนรถยนต์กับรถยนต์ มี รถยนต์ ทะเบียน

  21. ความสัมพันธ์ (Relation) • One-To-Many เช่นอาจารย์สอนนิสิต • Many-To-Many เช่นนิสิต 1 คนเลือกเรียนหลายวิชาแต่ละวิชามีผู้นิสิตหลายคนลงทะเบียน, คำสั่งซื้อกับสินค้า สอน นิสิต อาจารย์ เลือกเรียน นิสิต วิชา

  22. MySQL • เป็น SQLDatabase Server ที่นิยมใช้งานกันบนระบบปฏิบัติการ ลีนุกซ์ • MySQL นี้ได้ถูกพัฒนาโดย T.c.X. DataKonsultAB. โดยพัฒนาจนได้มาตราฐาน ISO/ANSI SQL 1992 • ทำงาน แบบไคลเอนต์ / เซิร์ฟเวอร์  (client / server) • จุดมุ่งหมายหลักของ MySQL คือความเร็ว ความคงทน และง่ายต่อการใช้

  23. การติดต่อกับMySQL • ผ่านโปรแกรมไคลเอนต์ที่ชื่อ mysql ซึ่งจะทำหน้าที่ในการติดต่อกับเซิร์ฟเวอร์ โดยจะต้องระบุการเชื่อมโยงผ่านพารามิเตอร์ ไปยังเซิร์ฟเวอร์ที่ต้องการติดต่อ โดยผ่านจากชื่อผู้ใช้และรหัสผ่าน รูปแบบการใช้งานคำสั่ง เป็นดังนี้ • $ mysql [- h host_name] [- u user_name] [- pyour_pass] • หรืออาจจะใช้รูปแบบอื่นที่สามารถใช้แทนของ '- h', '- u' และ '- p' options คือ • '- - host = host_name', '- - user = user_name' และ '- - password = your_pass'

  24. การติดต่อกับMySQL • MySQL ใช้ค่า default สำหรับการติดต่อกับพารามิเตอร์ที่หายไปจาก command line defaulthost_name คือlocalhost และ default ชื่อผู้ใช้ เป็นชื่อที่ใช้ในการ login บน Unix (จะไม่มี password เช่น ถ้าไม่มี '- p' option) • ดังนั้นสำหรับตัวอย่าง user ของ 'test' จะใช้คำสั่งดังนี้ $ mysql -h localhost -u test $ mysql -h localhost $ mysql -u test

  25. การเพิ่มชื่อผู้ใช้เข้าไปในระบบฐานข้อมูล MySQL • เริ่มแรกเมื่อติดตั้ง MySQL เสร็จจะมีชื่อผู้ใช้ root อยู่ในระบบแล้ว โดยผู้ใช้จำเป็นต้องตั้งรหัสผ่านก่อน ทั้งนี้เพื่อความปลอดภัยของระบบ ซึ่งจะสามารถใช้คำสั่งในการตั้งรหัสผ่าน หรือเปลี่ยนรหัสผ่านดังนี้ $ mysqladmin -u root password student • จากคำสั่งนี้จะตั้งรหัสผ่านของผู้ใช้ root เป็น student

  26. ปัญหาที่เกิด • สำหรับการเพิ่มชื่อผู้ใช้เข้าไปในระบบ (Add user ) นั้น ในระบบของ MySQL นั้นจะเก็บข้อมูลที่เกี่ยวกับชื่อผู้ใช้ สิทธิการใช้งานต่างๆ ของ MySQL ไว้ในฐานข้อมูลชื่อ mysql โดยจะเก็บข้อมูลของผู้ใช้ไว้ในตารางข้อมูลชื่อ user ซึ่ง ตารางข้อมูลนี้จะมีฟิลด์ข้อมูลดังนี้ • * Table name * ‘ user ’ • * Scope fields * ‘ host ’ ‘ user ’ ‘ password ’

  27. * Privilege fields ‘ ‘ select_priv ’ ‘ insert_priv ’ ‘ update_priv ’ ‘ delete_priv ’ ‘ index_priv ’ ‘ alter_priv ’ ‘ create_priv ’ ‘ drop_priv ’ ‘ grant_priv ’ ‘reload_priv ’ ‘ shutdown_priv ’ ‘ process_priv ’ ‘ file_priv ’

  28. คำสั่งเพิ่มผู้ใช้ $ mysql –uroot -p Password : mysql> INSERT INTO user VALUES('localhost','test',PASSWORD('student'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); mysql> INSERT INTO user VALUES('%','test',PASSWORD('password'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); mysql> FLUSH PRIVILEGES;

  29. การติดต่อกับ mysql $ mysql –u root –ppassword php_book Welcome to MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 to server version: 3.22.16agamma Type ‘help’ for help

  30. การสร้าง ฐานข้อมูลและการเรียกใช้ ใช้คำสั่ง msql > create database dataName; • ตัวอย่าง msql > create database php_book; • การเปิดใช้งานฐานข้อมูล mysql > use ฐานข้อมูล; • ตัวอย่าง mysql > use php_book;

  31. The SQL Create Table Statement • คำสั่ง create table จะเป็นคำสั่งที่ใช้สำหรับตารางในระบบฐานข้อมูล ซึ่งจะต้องใส่ชื่อตาราง ชื่อคอลัมน์ (field) ชนิดของคอลัมน์โดยสามารถใส่ได้หลายคอลัมน์ • รูปแบบคำสั่ง Create table { table_name } ( { fieldl_name } { field1_data_type } , { field2_name } { field2_data_type } );

  32. ตัวอย่าง • mysql > create table email_messages ( -> key_email_messages INTERGER -> ,date_created VARCHAR(19) -> ,date_updated VARCHAR(19) -> ,date_email VARCHAR(19) -> ,addr_from VARCHAR(100) -> ,addr_reply_to VARCHAR(100) -> ,subject VARCHAR(100) -> ,message MEDIUMTEXT -> );

  33. การสร้างตารางด้วย script • สร้างscript ของ SQL เก็บลงแฟ้มชื่อ fname.sql • ที่ linux prompt พิมคำสั่งดังนี้ cat fname.sql | mysql database name -p เมื่อ -p หมายถึงให้ใส่ password

  34. ตัวอย่างscript ชื่อ crea.sql CREATE TABLE publishers ( key_publishers INT(5) DEFAULT '0' NOT NULL AUTO_INCREMENT ,publisher_name VARCHAR(50) NOT NULL ,PRIMARY KEY (key_publishers) ) CREATE TABLE authors ( key_authors INT(5) DEFAULT '0' NOT NULL AUTO_INCREMENT

  35. ,author_name VARCHAR(50) NOT NULL ,author_phone VARCHAR(20) NOT NULL ,PRIMARY KEY (key_authors) ) CREATE TABLE books ( key_books int(5) DEFAULT '0' NOT NULL AUTO_INCREMENT ,key_authors int(5) DEFAULT '0' NOT NULL ,key_publishers int(5) DEFAULT '0' NOT NULL ,book_title varchar(50) NOT NULL ,PRIMARY KEY (key_books) ); • คำสั่งที่ใช้คือ cat crea.sql | mysql bookstore -p

  36. คำสั่งแสดงโครงสร้างตารางคำสั่งแสดงโครงสร้างตาราง • mysql > describe table_name; • ตัวอย่าง mysql > describe email_message;

  37. การแสดง database & Table • การแสดง database ใช้คำสั่ง show database ; • การแสดง table ใช้คำสั่ง show tables ;

  38. The SQL Alter Table Statement • คำสั่ง alter table ใช้สำหรับเพิ่มเติม หรือเปลี่ยนแปลงคอลัมน์ในตาราง รูปแบบ มีดังนี้ • alter table { table_name } add column { field_name } { field_data_type }; • alter table { table_name } change column {existing_field_name} { new_field_name } { new_field_data_type }; • alter table { table_name } drop column { existing_field_name}

  39. Using Add Column Option • แสดงการใช้คำสั่ง alter table เพิ่มฟิลดชื่อ temp_field ลงในตาราง email_message ใช้คำสั่งดังนี้ mysql > use php_book; Database changed mysql > alter table email_messages add column -> temp_field -> integer; mysql > describe email_messages;

  40. Using Change Column Option mysql > use php_book; Database changed mysql > alter table email_messages change column temp_field -> temp_field -> varchar(25); • เรียกดูโครงสร้าง mysql > describe email_messages;

  41. Using Drop Column Option • การลบคอลัมน์ออกจากตารางสามารถทำได้ โดยใช้คำสั่ง alter table ดังนี้ mysql > use php_book; Database changed mysql > alter table email_messages drop column -> temp_field;

  42. The SQL Drop Table Statement • การลบตารางออกจากฐานข้อมูลจะง่ายกว่าการลบคอลัมน์โดยกำหนดชื่อตารางที่จะลบ โดยใช้คำสั่งดังนี้ mysql > use php_book; Database changed mysql > drop table email_messages;

  43. The SQL Insert Statement • คำสั่ง insert ใช้สำหรับเพิ่มเรคอร์ดลงในตาราง มีรูปแบบคำสั่งดังนี้ insert into { table_name } ( { column_list } ) values ( { value_list } ) • สตริงก์ที่ใช้ในคำสั่ง insert จะต้องปิดล้อมด้วยเครื่องหมาย single quoteและจำนวนของค่าใน value_list จะต้องเท่ากับจำนวนคอลัมน์ใน column_list

  44. ตัวอย่าง • ให้พิมพ์คำสั่งเพิ่มข้อมูลดังต่อไปนี้ mysql > create table test ( -> a integer ,b VARCHAR(10) -> ); mysql > insert into test -> (a, b) -> values -> ( 134, ‘aaa’ );

  45. The SQL Update Statement • คำสั่ง update เป็นคำสั่งใช้สำหรับเปลี่ยนแปลงสารสนเทศในตาราง มีรูปแบบคำสั่งดังนี้ update { table_name } set { column_name } = { expression }… where { where_clause } • คำสั่ง update ที่ใช้กันมากคือเพิ่มฟิลด์ในเรคอร์ด

  46. ตัวอย่าง mysql> create table test (a integer); mysql> insert into test (a) values (134); mysql> insert into test (a) values (100); mysql> select * from test; mysql> update test set a = a+1; Query OK, 2 rows affected (0.00 sec) Rows matched: 2 Changed: 2 Warnings: 0 mysql> select * from test;

  47. ตัวอย่าง • update employees set salary = salary * 1.15; • เราสามารถใช้คำสั่ง update กับอนุประโยค where ได้ดังนี้ update employees set salaary = salary * 1.15 where last_name = ‘medinets’ ; • นอกจากนี้ยังสามารถใช้ร่วมกับฟังก์ชันอื่นๆได้อีกเช่น update employees set last_name = upper(last_name);

  48. The SQL Select Statement • คำสั่ง select จะใช้สำหรับการแสดงคอลัมน์ (field) หรือกลุ่มของคอลัมน์ที่เราต้องการดูข้อมูล รูปแบบการใช้งานคือ select {field_list}from {table_list} from {table_list} where {where_clause} <------ filters group by {column_list} <----- aggregates order by {column_list} <------ sorts having {having_cluase} <------ filters after aggregation

  49. The Field List • คำสั่ง select ที่ง่ายที่สุดคือ SELECT *FROM Table_name ; • คำสั่งจะแสดงทุกฟิลด์ของเรคอร์ดที่อยู่ในตาราง ถ้าต้องการแสดงข้อมูลเฉพาะจะต้องระบุฟิลด์ด้วยดังตัวอย่าง • SELECT str_name_first ,int_ageFROM Select01;

  50. The Where Clause • อนุประโยค where ใช้แสดงข้อมูลแบบมีเงื่อนไข ดังเช่น • SELECTstr_name_first,int_age FROM select01 WHERE UPPER(str_name_first) LIKE ‘F%’ ; • SELECT str_name_first,int_age FROM select01 WHEREUPPER(str_name_first) LIKE ‘F%’ OR UPPER(str_name_first) LIKE ‘G%’ ;

More Related