GIÁO TRÌNH PHP - GIÁO VIÊN PHẠM HỮU KHANG - 5
lượt xem 44
download
TẠO CƠ SỞ DỮ LIỆU VÀ NGƯỜI DÙNG Trong trường hợp bạn sử dụng giao diện đồ hoạ thì dùng ích quản trị cơ sở dữ liệu MySQL, bạn có thể chạy tập tin mysqlfront.exe trong thư mục MySQL Control, bằng cách chạy tập tin cửa sổ xuất hiện như hình 8-1. Nếu lần đầu tiên tạo kết nối cơ sở dữ liệu, bạn cần phải tạo một Connection, cung cấp tên Server hay IP của máy chứa MySQL. Tuy nhiên, trong trường hợp máy chứa cơ sở dữ liệu MySQL là máy đang sử dụng, bạn có thể sử dụng...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: GIÁO TRÌNH PHP - GIÁO VIÊN PHẠM HỮU KHANG - 5
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com [WinMySQLadmin] Server=C:/mysql/bin/mysqld-nt.exe user=root password= QueryInterval=10 3. TAÏO CÔ SÔÛ DÖÕ LIEÄU VAØ NGÖÔØI DUØNG Trong tröôøng hôïp baïn söû duïng giao dieän ñoà hoaï thì duøng ích quaûn trò cô sôû döõ lieäu MySQL, baïn coù theå chaïy taäp tin mysqlfront.exe trong thö muïc MySQL Control, baèng caùch chaïy taäp tin cöûa soå xuaát hieän nhö hình 8-1. Neáu laàn ñaàu tieân taïo keát noái cô sôû döõ lieäu, baïn caàn phaûi taïo moät Connection, cung caáp teân Server hay IP cuûa maùy chöùa MySQL. Tuy nhieân, trong tröôøng hôïp maùy chöùa cô sôû döõ lieäu MySQL laø maùy ñang söû duïng, baïn coù theå söû duïng localhost. Ngaøi ra, cuõng gioáng nhö caùc cô sôû döõ lieäu khaùc, Username maëc ñònh cuûa cô sôû döõ lieäu MySQl laø root vaø Password laø roãng. Neáu baïn ñaõ coù cô sôû döõ lieäu ñang toàn taïi, baïn coù theå goõ teân cô sôû döõ lieäu trong phaàn Databases ( neáu muoán môû nhieàu database, baïn coù theå duøng daáu ; ñeå phaân caùch). Trong tröôøng hôïp laàn ñaàu tieân, baïn khoâng caàn cung caáp teân cô sôû döõ lieäu, baïn coù theå taïo chuùng sau khi keát noái. Hình 8-1: Keát noái cô sôû döõ lieäu baèng MySQLFront Tool Sau keát noái cô sôû döõ lieäu thaønh coâng, trình ñieàu khieån cô sôû döõ lieäu MySQL coù giao dieän nhö hình 8-2, coäng vieäc ñaàu tieân baïn phaûi thöïc hieän laø taïo cô sôû döõ lieäu. Baét ñaàu töø menu coù teân Tools | Create Database hay choïn teân root@localhost | R-Click | Create Database, cöûa soå xuaát hieän nhö hình 8-3. Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Hình 8-2: Giao dieän ñieàu khieån cô sôû döõ lieäu MySQL Cung caáp teân cô sôû döõ lieäu, trong tröôøng hôïp naøy baïn coù theå nhaäp Test, baám nuùt OK, cô sôû döõ lieäu xuaát hieän trong cöûa soå ñieàu khieån. Hình 8-3: Taïo cô sôû döõ lieäu coù teân Test Trong caû hai tröôøng hôïp taïo cô sôû döõ lieäu baèng MySQL thaønh coâng nhö treân, baïn coù theå tìm thaáy teân cô sôû döõ lieäu ñoù trong thö muïc mysql/data nhö hình 8-4 sau: Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Hình 8-4: Thö muïc tin cô sôû döõ lieäu Test 3.1. Quaûn lyù ngöôøi duøng Laøm theá naøo ñeå ñaêng nhaäo vaøo cô sôû döõ lieäu MySQL, baïn coù theå söû duïng hai caùch nhö trình baøy ôû treân. Tuy nhieân, sau khi taïo ra caùc username khaùc, baïn coù theå söû duïng chuùng ñeå ñaêng nhaäp. Ñeå ñaêng nhaäp vaøo MySQL baèng Command line, baïn chæ caàn goõ >mysql – hostname –u username – p töø daáu nhaéc hay ñaêng nhaäp baèng caùch söû duïng trình giao dieän ñoà hoaï. Töø khoaù -h hæ ra raèng teân (computer name), IP, hay localhost cuûa maùy coù söû duïng cô sôû döõ lieäu MySQL, -u chæ ra raèng baïn söû duïng username, username laø teân username, -p ñöôïc chæ ñònh khi username naøy coù password. Trong tröôøng hôïp password laø roãng, baïn coù theå khoâng cung caáp tham soá –p. Ñeå taïo User trong cô sôû döõ lieäu MySQL, baïn coù theå söû duïng hai caùch treân. Neáu baïn thöïc hieän vieäc taïo moät Username baèng Command line, baïn coù theå goõ töø daáu nhaéc nhö phaùt bieåu sau: GRANT Select, Insert, Update, Delete, Index, Alter, Create, Drop, References ON *.* TO 'myis'@'%' IDENTIFIED BY '12345678' Trong phaùt bieåu treân, vöøa taïo ra User coù teân myis, vôùi hostname laø cô sôû döõ lieäu hieän haønh, password laø 1234 vaø ñöôïc caùc ñaët quyeàn Select, Insert, Update, Delete, Index, Alter, Create, Drop treân cô sôû döõ lieäu hieän haønh. Trong tröôøng hôïp baïn taïo ra moät Username khoâng cung caáp caùc ñaët quyeàn treân cô sôû döõ lieäu, baïn coù theå thöïc hieän nhö phaùt bieåu taïo username: test, password: 1234 sau: GRANT usage ON *.* TO 'test'@'%' Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com IDENTIFIED BY '1234' Neáu baïn söû duïng giao dieän ñoà hoaï, baïn coù theå taïo username vaø gaùn quyeàn nhö treân baèng caùch söû duïng menu coù teân Tools | User-Manager, cöûa soå xuaát hieän nhö hình 8-5. Hình 8-5: Taïo Username 3.2. Caáp quyeàn cho ngöôøi duøng Caùc ñaët quyeàn Select, Insert, Update, Delete, Index, Alter, Create, Drop treân cô sôû döõ lieäu, baïn coù theå tham khaûo chi tieát trong baûng 8-1. Baûng 8-1: Caùc ñaët quyeàn treân cô sôû döõ lieäu ---------------------------------------------- Loaïi aùp duïng Dieãn giaûi ---------------------------------------------- Cho pheùp user truy vaán maåu select tables, tin töø Table. columns Cho pheùp user theâm môùi maåu insert tables, tin vaøo Table. columns Cho pheùp user thay ñoåi giaù update tables, columns trò cuûa maåu tin toàn taïi trong Table. delete tables Cho pheùp user maåu tin toàn taïi trong Table. Cho pheùp user theâm môùi hay index tables xoaù chæ muïc cuûa Table. Cho pheùp user thay ñoåi caáu alter tables truùc cuûa ñoái töôïng Table Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com hay Database toàn taïi, nhö theâm coät vaøo trong Table toàn taïi, thay ñoåi kieåu döõ lieäu cuûa coät döõ lieäu, .. databases Cho pheùp user taïo môùi ñoái create töôïng Table hay Database. tables drop databases Cho pheùp user xoaù ñoái töôïng Table hay Database. tables ---------------------------------------------- Xuaát phaùt töø caùc quyeàn coù aûnh höôûng ñeán caáu truùc cô sôû döõ lieäu, caùc ñoái töôïng cuûa cô sôû döõ lieäu vaø döõ lieäu, baïn coù theå xem xeùt kyõ caøng tröôùc khi caáp quyeàn cho user aøm vieäc treân cô sôû döõ lieäu. Ngoaøi caùc quyeàn treân, trong MySQL coøn coù moät soá quyeàn khoâng gaùn maëc ñònh nhö trong baûng 8-2, baïn coù theå xem xeùt caùc ñaët quyeàn quaûn trò ñeå caáp cho ngöôøi duøng. Baûng 8-2: Caùc ñaët quyeàn quaûn trò treân cô sôû döõ lieäu ---------------------------------------------- Loaïi Dieãn giaûi ---------------------------------------------- reload Cho pheùp ngöôøi quaûn trò naïp laïi caùc Table, quyeàn, host, logs vaø Table. shutdown Cho pheùp ngöôøi quaûn trò chaám döùt hoaït ñoäng MySQL Server. process Cho pheùp ngöôøi quaûn trò xem quaù trình thöïc hieän cuûa trình chuû vaø coù theå chaám döùt moät soá quaù trình ñang thöïc thi. Cho pheùp döõ lieäu ghi vaøo Table töø taäp file tin. ---------------------------------------------- Löu yù: Nhöõng username bình thöôøng khoâng neân caáp quyeàn nhö trong baûng 8-2 cho hoï, trong tröôøng hôïp baïn muoán caàp taát caû caùc quyeàn trong baûng 8-1 vaø Baûng 8-2 cho username khi taïo ra hoï, baïn Table söû duïng töø khoaù All thay vì All Privileges trong phaùt bieåu taïo user nhö sau: GRANT ALL ON *.* TO 'ekhang'@'%' IDENTIFIED BY '12345678' Töông töï nhö vaäy, trong tröôøng hôïp baïn khoâng cung caáp baát kyø ñaët quyeàn naøo treân cô sôû döõ lieäu hieän haønh, baïn coù theå khai baùo phaùt bieåu caáp uyeàn nhö sau: GRANT usage ON *.* TO 'ekhang'@'%' IDENTIFIED BY '12345678' 3.3. Xoaù quyeàn cuûa user Ñeå xoaù caùc quyeàn cuûa user töø cô sôû döõ lieäu hieän haønh, baïn coù theå söû duïng phaùt bieåu SQL coù teân Revoke, phaùt bieåu Revoke ngöôïc laïi vôùi phaùt bieåu Grant. Neáu baïn xoaù moät soá quyeàn cuûa user, baïn coù theå söû duïng khai baùo nhö phaùt bieåu sau: Revoke privileges [(columns)] ON item From username Trong tröôøng hôïp xoaù taát caû caùc quyeàn cuûa user, baïn coù theå söû duïng phaùt bieåu nhö sau: Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Revoke All ON item From username Neáu user ñoù ñöôïc caáp quyeàn vôùi tuyø choïn Grant Option, ñeå xoaù caùc quyeàn ñoù cuûa user, baïn coù theå khai baùo nhö sau: Revoke Grant Option ON item From username Ñeå tham khaûo chi tieát quaù trình caáp vaø xoaù quyeàn cuûa moät user, baïn coù theå tham khaûo moät soá phaùt bieåu nhö sau: Gaùn quyeàn Administrator cho user coù teân fred treân moïi cô sôû döõ lieäu trong MySQL, password cuûa anh ta laø mnb123, baïn coù theå khai baùo nhö sau: Grant all On * To fred indetifyed by ‘mnb123’ With Grant Option; Neáu baïn khoâng muoán user coù teân fred trong heä thoáng, baïn coù theå xoaù anh ta baèng caùch khai baùo phaùt bieåu sau: Revoke all On * From fred; Taïo moät user coù teân ekhang vôùi password laø 12345678, ñöôïc laøm vieäc treân cô sôû döõ lieäu Test, khoâng caáp quyeàn cho user naøy, baïn coù theå khai baùo nhö sau: Grant usage On Test.* To ekhang identified by ‘12345678’; Töông töï nhö vaäy, trong tröôøng hôïp baïn muoán caáp moät soá quyeàn cho user coù teân ekhang treân cô sôû döõ lieäu Test, baïn coù theå khai baùo nhö sau: Grant select, insert, delete, update, index, drop On Test.* To ekhang; Neáu baïn muoán xoaù bôùt moät soá quyeàn cuûa user coù teân ekhang treân cô sôû döõ lieäu Test, baïn coù theå khai baùo nhö sau: Revoke update, delete, drop On Test.* From ekhang; Nhöng trong tröôøng hôïp xoaù taát caû caùc quyeàn cuûa user coù teân ekhang treân cô sôû döõ lieäu Test, baïn coù theå khai baùo: Revoke All On Test.* From ekhang; Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 4. KIEÅU DÖÕ LIEÄU CUÛA CÔ SÔÛ DÖÕ LIEÄU MYSQL Tröôùc khi thieát keá cô sôû döõ lieäu treân MySQL, baïn caàn phaûi tham khaûo moät soá kieåu döõ lieäu thöôøng duøng, chuùng bao goàm caùc nhoùm nhö: numeric, date and time vaø string. Ñeàu caàn löu yù trong khi thieát keá cô sôû döõ lieäu, baïn caàn phaûi xem xeùt kieåu döõ lieäu cho moât coät trong Table sao cho phuø hôïp vôùi döõ lieäu cuûa theá giôùi thöïc. Ñieàu naøy coù nghóa laø khi choïn döõ lieäu cho coät trong Table, baïn phaûi xem xeùt ñeán loaïi döõ lieäu caàn löu tröõ thuoäc nhoùm kieåu döõ lieäu naøo, chieàu daøi cuõng nhö caùc raøng buoäc khaùc, nhaèm khai baùo cho phuø hôïp. 4.1. Loaïi döõ lieäu numeric Kieåu döõ lieäu numeric bao goàm kieåu soá nguyeân trình baøy trong baûng 8-3 vaø kieåu soá chaám ñoäng, trong tröôøng hôïp döõ lieäu kieåu daáu chaám ñoäng baïn caàn phaûi chæ roõ bao nhieàu soá sau ñaáu phaàn leû nhö trong baûng 8-4. Baûng 8-3: Kieåu döõ lieäu soá nguyeân ---------------------------------------------- Loaïi Range Bytes Dieãn giaûi ---------------------------------------------- tinyint -127->128 1 Soá nguyeân raát nhoû. hay 0..255 smallint -32768 2 Soá nguyeân nhoû. ->32767 hay 0..65535 mediumint -8388608 3 Soá nguyeân vöøa. -> 838860 hay 0..16777215 -231->231-1 int 4 Soá nguyeân. hay 0..232-1 -263->263-1 bigint 8 Soá nguyeân lôùn. hay 0..264-1 ---------------------------------------------- Baûng 8-4: Kieåu döõ lieäu soá chaám ñoäng ---------------------------------------------- Loaïi Range Bytes Dieãn giaûi ---------------------------------------------- float phuï thuoäc Soá thaäp phaân daïng Single hay Soá thaäp Double. Phaân Float(M,D) 4 Soá thaäp phaân ±1.175494351E-38 daïng Single. ±3.40282346638 Double(M,D) 8 Soá thaäp phaân daïng Double. ±1.7976931348623157308 ±2.2250738585072014E-308 Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Float(M[,D]) Soá chaám ñoäng löu döôùi daïng char. ---------------------------------------------- 4.2. Loaïi döõ lieäu Datet and Time Kieåu döõ lieäu Date and Time cho pheùp baïn nhaäp lieäu döôùi daïng chuoãi hay daïng soá nhö trong baûng 8-5. Baûng 8-5: Kieåu döõ lieäu soá nguyeân ---------------------------------------------- Loaïi Range Dieãn giaûi ---------------------------------------------- 1000-01-01 Date trình baøy döôùi daïng Date yyyy-mm-dd. -838:59:59 Time trình baøy döôùi Time 838:59:59 daïng hh:mm:ss. DateTime 1000-01-01 Date vaø Time trình baøy döôùi 00:00:00 daïng yyyy-mm-dd hh:mm:ss. 9999-12-31 23:59:59 TimeStamp[(M)] 1970-01-01 TimeStamp trình baøy döôùi 00:00:00 daïng yyyy-mm-dd hh:mm:ss. Year[(2|4)] 1970-2069 Year trình baøy döôùi 1901-2155 daïng 2 soá hay 4 soá. ---------------------------------------------- Ñoái vôùi kieåu döõ lieäu TimeStamp, baïn coù theå ñònh daïng nhieàu caùch nhö trình baøy trong baûng 8- 6. Baûng 8-6: Trình baøy ñaïi dieän cuûa TimeStamp ---------------------------------------------- Loaïi Hieån thò ---------------------------------------------- TimeStamp YYYYMMDDHHMMSS TimeStamp(14) YYYYMMDDHHMMSS TimeStamp(12) YYMMDDHHMMSS TimeStamp(10) YYMMDDHHMM TimeStamp(8) YYYYMMDD TimeStamp(6) YYMMDD TimeStamp(4) YYMM TimeStamp(2) YY ---------------------------------------------- 4.3. Loaïi döõ lieäu String Kieåu döõ lieäu String chia laøm ba loaïi, loaïi thöù nhaát nhö char (chieàu daøi coá ñònh) vaø varchar (chieàu daøi bieán thieân). Char cho pheùp baïn nhaäp lieäu döôùi daïng chuoãi vôùi chieáu daøi lôùn nhaát baèng chieàu daøi baïn ñaõ ñònh nghóa, nhöng khi truy caäp döõ lieäu treân Field coù khai baùo daïng naøy, baïn caàn phaûi xöû lyù khoaûng traéng. Ñieàu naøy coù nghóa laø neáu khai baùo chieàu daøi laø 10, nhöng baïn chæ nhaäp hcuoãi 4 kyù töï, MySQL löu tröõ trong boä nhôù chieàu daøi 10. Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Ngöôïc laïi vôùi kieåu döõ lieäu Char laø Varchar, chieàu daøi lôùn haát ngöôøi duøng coù theå nhaäp vaøo baèng chieàu daøi baïn ñaõ ñònh nghóa cho Field naøy, boä nhôù chæ löu tröõ chieàu daøi ñuùng vôùi chieàu daøi cuûa chuoãi baïn ñaõ nhaäp. Nhö vaäy, coù nghóa laø neáu baïn khai baùo kieåu varchar 10 kyù töï, nhöng baïn hcæ nhaäp 5 kyù töï, MySQL chæ löu tröõ chieàu daøi 5 kyù töï, ngoaøi ra, khi baïn truy caäp ñeán Field coù kieåu döõ lieäu naøy, baïn khoâng caàn phaûi giaûi quyeát khoaûng traéng. Loaïi thöù hai laø Text hay Blob, Text cho pheùp löu chuoãi raát lôùn, Blob cho pheùp löu ñoái töôïng nhò phaân. Loaïi thöù 3 laø Enum vaø Set. Baïn coù theå tham khaûo caû ba loaïi treân trong baûng 8-7. Baûng 8-7: Kieåu döõ lieäu String ---------------------------------------------- Loaïi Range Dieãn giaûi ---------------------------------------------- char 1-255 Chieàu daøi cuûa chuoãi lôùn nhaát characters 255 kyù töï. varchar 1-255 Chieàu daøi cuûa chuoãi lôùn nhaát characters 255 kyù töï (characters). tinyblob 28-1 Khai baùo cho Field chöùa kieåu ñoái töôïng nhò phaân côû 255 characters. tinytext 28-1 Khai baùo cho Field chöùa kieåu chuoãi côû 255 characters. 216-1 Khai baùo cho Field chöùa kieåu blob blob côû 65,535 characters.. 216-1 Khai baùo cho Field chöùa kieåu text chuoãi daïng vaên baûn côû 65,535 characters. Mediumblob 224-1 Khai baùo cho Field chöùa kieåu blob vöøa khoaûng 16,777,215 characters. Mediumtext 224-1 Khai baùo cho Field chöùa kieåu chuoãi daïng vaên baûn vöøa khoaûng 16,777,215 characters. Longblob 232-1 Khai baùo cho Field chöùa kieåu blob lôùn khoaûng 4,294,967,295 characters. Longtext 232-1 Khai baùo cho Field chöùa kieåu chuoãi daïng vaên baûn lôùn khoaûng 4,294,967,295 characters. ---------------------------------------------- 5. PHAÙT BIEÅU SQL MySQL laø moät heä thoáng quaûn lyù cô sôû döõ lieäu quan heä (RDBMS) hay coøn ñöôïc goïi laø Relational Database Management System. RDBMS laø moät trong nhöõng moâ hình cô sôû döõ lieäu quan heä thoâng duïng hieän nay. Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 5.1. Nhoùm phaùt bieåu SQL Nhö ñaõ trình baøy trong chöông 3, haàu heát saûn phaåm cô sôû döõ lieäu quan heä hieän nay ñeàu döïa treân chuaån cuûa SQL vaø ANSI-SQL, chaúng haïn nhö SQL Server, Oracle, PostgreSQL vaø MySQL. Ñieàu naøy coù nghóa laø taát caû nhöõng cô sôû döõ lieäu quan heä ñeàu phaûi coù nhöõng tieâu chuaån theo cuù phaùp SQL vaø MySQL cuõng khoâng phaûi laø ngoaïi leä. Ngoân ngöõ SQL chia laøm 4 loaïi sau: DDL (Data Definition Language): Ngoân ngöõ ñònh nghóa döõ lieäu, duøng ñeå taïo cô sôû döõ lieäu, ñònh nghóa caùc ñoái töôïng cô sôû döõ lieäu nhö Table, Query, Views hay caùc ñoái töôïng khaùc. DML (Data Manipulation Language): Ngoân ngöõ thao taùc döõ lieäu, duøng ñeå thao taùc döõ lieäu, chaúng haïn nhö caùc phaùt bieåu: Select, Inert, Delete, Update, ... DCL: (Data Control Language): Ngoân ngöõ söû duïng truy caäp ñoái töôïng cô sôû döõ lieäu, duøng ñeå thay ñoåi caáu truùc, taïo ngöôøi duøng, gaùn quyeàn chaúng haïn nhö: Alter, Grant, Revoke, ... TCL: (Transaction Control Language): Ngoân söû duïng ñeå khai baùo chuyeån taùc chaúng haïn nhö: Begin Tran, Rollback, Commit, ... 5.2. Phaùt bieåu SQL thao taùc döõ lieäu Phaùt bieåu SQL bao goàm caùc loaïi nhö sau: SELECT (Truy vaán maåu tin). INSERT (Theâm maåu tin). UPDATE (Caäp nhaät döõ lieäu). DELETE (Xoaù maåu tin). 5.2.1. Khaùi nieäm cô baûn veà Select Phaùt bieåu Select duøng ñeå truy vaán döõ lieäu töø moät hay nhieàu baûng khaùc nhau, keát quaû traû veà laø moät taäp maåu tin thoaõ caùc ñieàu kieän cho tröôùc neáu coù, cuù phaùp cuûa phaùt bieåu SQL daïng SELECT: SELECT [FROM ] [WHERE ] [GROUP BY ] [HAVING ] [ORDER BY ] [LIMIT FromNumber | ToNumber] Danh saùch caùc coät: Khai baùo caùc teân coät, bieåu thöùc keát hôïp giöõa caùc coät cuûa Table baïn caàn truy luïc. Trong tröôøng hôïp coù hai coät cuøng teân cuûa hai Table trong phaùt bieåu, baïn caàn phaûi chæ ñònh teân Table ñi tröôùc. Chaúng haïn, nhö ví duï 8-1. Ví duï 8-1: Phaùt bieåu SELECT Select ItemID,ItemName From tblItems Where Cost>100; Select tblOrders.OrderID,OrderDate,ItemID,Qtty From tblOrders,tblOrderDetails Where tblOrders.OrderID = _ tblOrderDetail.OrderID; Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 5.2.2. Phaùt bieåu SELECT vôùi meänh ñeà FROM Phaùùt bieåu SQL daïng SELECT laø moät trong nhöõng phaùt bieåu yeâu caàu MySQL truy luïc döõ lieäu treân cô sôû döõ lieäu chæ ñònh. SELECT duøng ñeå ñoïc thoâng tin töø cô sôû döõ lieäu theo nhöõng tröôøng quy ñònh, hay nhöõng bieåu thöùc cho tröôøng ñoù. Meänh ñeà FROM chæ ra teân moät baûng hay nhöõng baûng coù quan heä caàn truy vaán thoâng tin. Thöôøng chuùng ta söû duïng coâng cuï MySQL-Front | Query ñeå thöïc thi phaùt bieåu SQL. Sau khi thöïc thi phaùt bieåu SQL, keát quaû traû veà soá maåu tin vaø toång soá maåu tin ñöôïc laáy ra töø baûng. Daáu * cho pheùp loïc maåu tin vôùi taát caû caùc tröôøng trong baûng, neáu muoán chæ roõ nhöõng tröôøng naøo caàn loïc baïn caàn neâu teân cuï theå nhöõng tröôøng ñoù. Ñeå tieän tham khaûo trong giaùo trình naøy chuùng toâi söû duïng moät phaàn cô sôû döõ lieäu coù saün cuûa MySQL, ñoàng thôøi boå sung theâm cô sôû döõ lieäu daønh cho öùng duïng baùn haøng qua maïng. Cô sôû döõ lieäu baùn haøng qua maïng coù teân laø Test, vaø bao goàm nhieàu baûng. Baèng phaùt bieåu SELECT chuùng ta coù theå bieát soá baûng hay ñoái töôïng khaùc ñang coù trong cô sôû döõ lieäu Test Ví duï 8-2: Thöïc thi phaùt bieåu SQL SELECT heä thoáng show tables from Test /* Hieån thò taát caû teân baûng cuûa cô sôû döõ lieäu hieän haønh */ Keát quaû traû veà danh saùch baûng nhö sau: TABLES_IN_TEST -------------------------------------- tblCountries tblProvinces tblAuthors tblPayment tblItemsion tblCustomers tblSoftware Ghi chuù: Baïn coù theå söû duïng phaùt bieåu SQL treân ñeå hieån thò nhöõng ñoái töôïng trong cô sôû döõ lieäu, baèng caùch thay theá caùc tham soá vaø ñieàu kieän. Cuù phaùp ñôn giaûn Select * From tablename /* Loïc taát caû soá lieäu cuûa taát caû caùc coät (field) cuûa tablename*/ Select field1,field2 From tablename /* Loïc taát caû soá lieäu cuûa 2 field: field1, field2 cuûa tablename*/ Select * From tablename Limit 0,10 /* Loïc top 10 maåu tin ñaàu tieân cuûa taát caû caùc field cuûa tablename*/ Select field1, field2 From tablename Limit 0,10 /* Loïc top 10 maåu tin ñaàu tieân cuûa 2 fields field1, field2 cuûa Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com tablename*/ Ví duï 8-3: phaùt bieåu phaùt bieåu SQL daïng Select Select * From tblCountries /* Lieät keâ taát caû caùc quoác gia trong baûng tblCountries hoaëc baïn coù theå lieät keâ teân nhö phaùt bieåu sau */ Select CountryName From tblCountries Keát quaû traû veà nhö sau: CountryCode CountryName -------- ---------- ------------ ------------- VNA Vietnam SNG Singapore USS United Stated UKD United Kingdom GER Germany CAM Cambodia THA Thai Land MAL Malaysia INC Indonesia CHN China 5.2.3. Phaùt bieåu SQL daïng SELECT vôùi meänh ñeà Where Khi baïn duøng meänh ñeà WHERE ñeå taïo neân tieâu chuaån caàn loïc maåu tin theo tieâu chuaån ñöôïc ñònh nghóa, thoâng thöôøng WHERE duøng coät (tröôøng) ñeå so saùnh vôùi giaù trò, coät khaùc, hay bieåu thöùc chöùa coät (tröôøng) baát kyø coù trong baûng. Phaùt bieåu SQL daïng Select vôùi meänh ñeà Where cuù phaùp coù daïng nhö sau: Select * from tablename where conditions Select field1, field2, field3 from tablename where conditions Vôùi conditions trong caû hai phaùt bieåu treân ñöôïc ñònh nghóa ñieàu kieän truy vaán nhö khai baùo sau: Select * From tablename where field1>10 select * from tblCountries where CountryCode in('VNA','CHN') Caùc pheùp toaùn so saùnh trong conditions bao goàm: >: lôùn hôn where Amount > 100000; ♦ = : lôùn hôn hoaëc baèng where Amount >= 100000; ♦ >= : nhoû hôn hoaëc baèng where Amount
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com ♦ != : Khaùùc where CustID!='12'; ♦ : Khaùc where CustID'12'; Caùc pheùp toaùn logic coù theå söû duïng trong conditions ♦ and : Pheùp toaùn "and" SELECT * FROM tblOrders Where Amount!>100000 And CustID='12'; ♦ Or : Pheùp toaùn "or" SELECT * FROM tblOrderDetails Where Amount!>100000 Or CustID=‘12’; ♦ Not : Pheùp toaùn phuû ñònh (not) SELECT * FROM tblOrders where OrderDate is not null; ♦ Not in : Pheùp toaùn phuû ñònh (not in) SELECT * FROM tblOrders where OrderID not in (‘12’,’15’); ♦ Between: Keát quaû thuoäc trong mieàn giaù trò SELECT * FROM tblOrders Where Amount between 10 And 500; Like : Pheùp toaùn so saùnh gaàn gioáng, söû duïng daáu % ñeå theå hieän thay theá baèng kyù töï ñaïi ♦ dieän SELECT * FROM tblCustomers where CustName like '%A'; Not Like : Pheùp toaùn phuû ñònh so saùnh gaàn gioáng, söû duïng daáu % ñeå theå hieän thay theá ♦ baèng kyù töï ñaïi dieän SELECT * FROM tblCustomers where CustName not like '%A'; ♦ IN : Pheùp toaùn so saùnh trong moät taäp hôïp SELECT * FROM tblOrders Where OrderID in ('100','200','300'); Ví duï 8-5: Ví duï veà SQL daïng SELECT vaø Where Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com /* > : lôùn hôn */ Select * From tblOrders Where Amount > 100000; /* < : nhoû hôn */ Select * From tblOrders Where Amount < 100000; /* >= : lôùn hôn hoaëc baèng */ Select * From tblOrders Where Amount >= 100000; /* >= : nhoû hôn hoaëc baèng */ Select * From tblOrders Where Amount : Khoâng lôùn hôn */ Select * From tblOrders Where Amount !> 100000; /* !< : Khoâng nhoû hôn */ Select * From tblOrders Where Amount !< 100000; -- Caùc pheùp toaùn logic /* and : Pheùp toaùn vaø */ Select * From tblOrders Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Where Amount !>100000 And CustID=‘12’; /* Or : Pheùp toaùn hoaëc */ Select * From tblOrders Where Amount !>100000 Or CustID=‘12’; /* Not : Pheùp toaùn phuû ñònh */ Select * From tblOrders Where OrderDate is NOT NULL; /* Between: giaù trò naèm trong mieàn */ Select * From tblOrders Where Amount Between 10 and 500; /* Like : Pheùp toaùn so saùnh gaàn gioáng, söû duïng daáu % ñeå theå hieän thay theá baát kyø kyù töï */ Select * From tblOrders Where Descriion like '%A' Or CustID ='152'; /* Not Like : Pheùp toaùn phuû ñònh so saùnh gaàn gioáng, söû duïng daáu % ñeå theå hieän thay theá baát kyø kyù töï */ Select * From tblOrders Where Descriion not like '%A' Or CustID ='152'; /* IN : Pheùp toaùn so saùnh trong moät taäp hôïp */ Select * From tblOrders Where OrderID in ('134','244','433'); /* Not IN : Pheùp toaùn phuû ñònh so saùnh trong moät taäp hôïp */ Select * From tblOrders Where OrderID not in ('134','244','433'); Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 5.2.4. Meänh ñeà Order by Thoâng thöôøng, trong khi truy vaán maåu tin töø baûng döõ lieäu, keát quaû hieån thò caàn saép xeáp theo chieàu taêng hay giaûm döïa treân kyù töï ALPHABET. Nhöng baïn cuõng coù theå saép xeáp theo moät tieâu chuaån baát kyø, chaúng haïn nhö bieåu thöùc. Khi saép xeáp döõ lieäu trình baøy trong keát quaû, caàn phaûi choïn tröôøng hay bieåu thöùc theo traät töï taêng daàn hoaëc giaûm daàn. Cuù phaùp cho meänh ñeà ORDER BY cuøng vôùi traïng thaùi taêng hay giaûm, öùng vôùi ASC saép xeáp taêng daàn, DESC giaûm daàn. Cuù phaùp coù daïng nhö sau: Order by columnname DESC Order by columnname1 + columnname2 DESC Order by columnname ASC Order by columnname1 ASC, columnname2 DESC Ví duï 8-6: SELECT vôùi meänh ñeà Order by DESC /*-- Giaûm daàn theo thôøi gian */ Select OrderID , OrderDate, CustID, Amount From tblOrders Where Amount >1000 Order by OrderDate DESC Keát quaû traû veà nhö sau: OrderID OrderDate CustID Amount ---------- ------------ ---------------------- 17 2001-09-20 12 178.243 18 2001-09-20 12 2.78534 16 2001-09-19 12 398.798 15 2001-09-18 12 5.758.876 14 2001-09-17 12 5.539.647 12 2001-09-16 12 1.330 13 2001-09-16 12 1.585.563 31 2001-09-16 13 459.525 11 2001-09-15 11 1.401.803 28 2001-09-15 13 1.45200 Ví duï 8-7: SQL daïng SELECT vôùi meänh ñeà Order by vaø ASC /*-- Taêng daàn theo thôøi gian */ Select OrderID , OrderDate, CustID, Amount From tblOrders Where Amount >1000 Order by OrderDate ASC Keát quaû traû veà nhö sau OrderID OrderDate CustID Amount ---------- --------------------------- -------- 01 2001-09-05 10 2.903.576 02 2001-09-05 10 48.168.567 03 2001-09-05 10 5.107.032 04 2001-09-08 10 2.355.537 05 2001-09-08 16 1.817.487 06 2001-09-10 16 26.000 19 2001-09-10 12 575.667 Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 29 2001-09-10 13 466.500 07 2001-09-11 16 186.782 23 2001-09-11 12 459.162 Neáu muoán saép xeáp theo nhieàu coät (tröôøng), chæ caàn söû duïng daáu phaåy (,) ñeå phaân caùch caùc coät. Ví duï 8-7: SELECT vôùi meänh ñeà Order by vôùi 2 coät döõ lieäu Select OrderID , OrderDate, CustID, Amount From tblOrders Where Amount >1000 Order by OrderID,CustID DESC Keát quaû traû veà nhö sau: OrderID OrderDate CustID Amount ---------- --------------------------- -------- 31 2001-09-16 13 459.525 30 2001-09-15 13 153.120 29 2001-09-10 13 466.500 28 2001-09-15 13 145.200 27 2001-09-14 13 603.033 26 2001-09-13 13 230.000 25 2001-09-11 13 244.904 24 2001-09-12 13 1.367.228 23 2001-09-11 12 459.162 19 2001-09-10 12 575.667 Neáu muoán saép xeáp theo nhieàu tröôøng keát hôïp, chæ caàn duøng thöù töï töøng coät caùch nhau baèng daáu +. Ví duï 8-8: SELECT vôùi meänh ñeà Order by hôïp 2 coät /*-- Giaûm daàn theo soá OrderID vaø CustID */ Select OrderID , OrderDate, CustID, Amount From tblOrders Where Amount >1000 Order by OrderID + CustID DESC Keát quaû traû veà nhö sau: OrderID OrderDate CustID Amount ---------- --------------------------- -------- 31 2001-09-16 13 459.525 30 2001-09-15 13 153.120 29 2001-09-10 13 466.500 28 2001-09-15 13 145.200 27 2001-09-14 13 603.033 26 2001-09-13 13 230.000 25 2001-09-11 13 244.904 24 2001-09-12 13 1.367.228 23 2001-09-11 12 459.162 19 2001-09-10 12 575.667 Neáu trong phaùt bieåu SQL daïng SELECT coù nhieàu baûng keát hôïp laïi vôùi nhau, baïn coù theå duøng theâm teân baûng öùng vôùi coät cuûa baûng ñoù. Phaàn naøy seõ ñöôïc dieãn giaûi cuï theå hôn trong phaàn keá tieáp (JOIN -Pheùp hôïp). Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com 5.2.5. SQL daïng SELECT vôùi meänh ñeà GROUP BY Khi truy vaán maåu tin treân moät hay nhieàu baûng döõ lieäu, thoâng thöôøng coù nhöõng nghieäp vuï thuoäc tröôøng naøo ñoù coù cuøng giaù trò, ví duï khi hieån thò hôïp ñoàng phaùt sinh trong thaùng, keát quaû seõ coù nhieàu hôïp ñoàng cuûa khaùch haøng laëp ñi laëp laïi nhö ví duï 8-9. Ví duï 8-9: SQL daïng SELECT vôùi meänh ñeà Order by Select CustID, Amount from tblOrders Vôùi phaùt bieåu treân keát quaû traû veà nhö sau: CustID Amount ---------- ------------------------ 10 2.903.576 10 48.168.567 10 5.107.032 10 2.3555347 16 181.074.847 16 26.000 16 1.867.682 16 3.600.000 16 195.713.899 16 961.804.228 16 140.180.347 12 138 12 158.555.638 12 5.539.647 12 575.887.767 12 39.879.489 12 17.824.938 12 278.503.048 12 5.756.667 12 459.162 13 136.727.628 13 244.904 13 230.000 13 603.033 13 1.452.000 13 4.665.100 13 1.531.200 13 459.525 Trong baùo caùo chuùng ta laïi caàn phaûi bieát moãi khaùch haøng coù bao nhieâu laàn traû tieàn, toång soá tieàn cuûa moãi khaùch haøng ñaõ traû laø bao nhieâu? Ñeå laøm ñieàu naøy, chuùng ta söû duïng meänh ñeà GROUP BY trong phaùt bieåu SQL daïng SELECT cuøng vôùi moät soá haøm trong MySQL, baïn tham khaûo ví duï 8-10 ñöôïc trình baøy chi tieát töø ví duï 4-8 nhöng nhoùm maåu tin baèng meänh ñeà Group By. Ví duï 8-10: SQL daïng SELECT vôùi meänh ñeà Group By Select CustID, count (CustID), Sum(Amount) From tblOrders Group by CustID Order by CustID Keát quaû traû veà nhö sau: Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com CustID ---------- ---- ------------------- 16 7 2.956.562.368 12 9 3.843.022.604 13 8 145.913.378 10 4 72.382.804 5.3. Caùc haøm thoâng duïng trong MySQL 5.3.1. Caùc haøm trong phaùt bieåu GROUB BY Haøm AVG: Haøm traû veà giaù trò bình quaân cuûa coät hay tröôøng trong caâu truy vaán, ví duï nhö phaùt bieåu sau: Select AVG(Amount) From tblOrders Haøm MIN: Haøm traû veà giaù trò nhoû nhaát cuûa coät hay tröôøng trong caâu truy vaán, ví duï nhö phaùt bieåu sau: Select Min(Amount) From tblOrders Haøm MAX: Haøm traû veà giaù trò lôùn nhaát cuûa coät hay tröôøng trong caâu truy vaán, ví duï nhö caùc phaùt bieåu sau: Select Max(Amount) From tblOrders Haøm Count: Haøm traû veà soá löôïng maåu tin trong caâu truy vaán treân baûng, ví duï nhö caùc phaùt bieåu sau: Select count(*) From tblOrders Select count(CustID) From tblOrders Select count(*) From tblOrderDetails Haøm Sum: Haøm traû veà toång caùc giaù trò cuûa tröôøng, coät trong caâu truy vaán, ví duï nhö caùc phaùt bieåu sau: Select sum(Amount) From tblOrders Chaúng haïn, baïn coù theå tham khaûo dieãn giaûi toaøn boä caùc haøm duøng trong meänh ñeà GROUP BY. Ví duï 8-11: SQL daïng SELECT vôùi Group By vaø caùc haøm Select CustID, Count (CustID),Sum(Amount), Max(Amount), Min(Amount), Avg(Amount) From tblOrders Group by CustID Giaùo vieân: Phaïm Höõu Khang
- COMPUTER LEARNING CENTER WWW.HUUKHANG.COM Simpo PDF Merge and Split Unregistered Version - http://www.simpopdf.com Order by CustID Keát quaû traû veà nhö sau: CustID ---------- ----------- ------------------------- 16 7 2956562368 1.95713899 26000 422366052 12 9 3843022604 39879489 459162 427002511 13 8 145913378 1.36727628 230000 18239172.25 10 4 72382804 48168567 2903576 18095701 5.3.2. Caùc haøm xöû lyù chuoãi Haøm ASCII: Haøm traû veà giaù trò maõ ASCII cuûa kyù töï beân traùi cuûa chuoãi, ví duï nhö khai baùo: Select ASCII('TOI') Keát quaû traû veà nhö sau: 84 Haøm Char: Haøm naøy chuyeån ñoåi kieåu maõ ASCII töø soá nguyeân sang daïng chuoãi: Select char(35) Keát quaû traû veà nhö sau: # Haøm UPPER: Haøm naøy chuyeån ñoåi chuoãi sang kieåu chöõ hoaï: Select UPPER('Khang') Keát quaû traû veà nhö sau: KHANG Haøm LOWER: Haøm naøy chuyeån ñoåi chuoãi sang kieåu chöõ thöôøngï: Select LOWER('Khang') Keát quaû traû veà nhö sau: khang Haøm Len: Haøm naøy traû veà chieàu daøi cuûa chuoãi: Select len('I Love You') Keát quaû traû veà nhö sau: 10 Thuû tuïc LTRIM: Thuû tuïc loaïi boû khoaûng traéng beân traùi cuûa chuoãiï: Select ltrim(' Khang') Keát quaû traû veà nhö sau: 'khang' Giaùo vieân: Phaïm Höõu Khang
CÓ THỂ BẠN MUỐN DOWNLOAD
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn