Bài viết này về Kết nối cơ sở dữ liệu Python là một hướng dẫn toàn diện về cách kết nối cơ sở dữ liệu với Python và thực hiện các hoạt động khác nhau.

Bạn đang xem : python kết nối với cơ sở dữ liệu

Kết nối cơ sở dữ liệu Python – Biết cách kết nối với cơ sở dữ liệu

Kết nối cơ sở dữ liệu Python – Edureka

Cơ sở dữ liệu rất quan trọng để lưu trữ và xử lý dữ liệu ngay cả khi bạn coi là ngôn ngữ lập trình mạnh mẽ như Python. Bạn đã bao giờ tự hỏi toàn bộ tập hợp dữ liệu lớn này được lưu trữ hoặc lấy từ đâu? Trong bài viết này về “Kết nối cơ sở dữ liệu Python”, tôi sẽ nói về vấn đề tương tự và đưa bạn qua các khía cạnh sau một cách chi tiết.

  • Cơ sở dữ liệu là gì?
  • MySQLdb là gì?
  • Python kết nối với cơ sở dữ liệu như thế nào?
  • Tạo a Cơ sở dữ liệu
  • Hoạt động cơ sở dữ liệu-CRUD

>

Hãy bắt đầu started 🙂

Cơ sở dữ liệu là gì ?

Cơ sở dữ liệu về cơ bản là một tập hợp dữ liệu có cấu trúc theo cách mà nó có thể dễ dàng được truy xuất, quản lý và truy cập theo nhiều cách khác nhau. Một trong những dạng cơ sở dữ liệu đơn giản nhất là cơ sở dữ liệu văn bản. Cơ sở dữ liệu quan hệ là hệ thống cơ sở dữ liệu phổ biến nhất bao gồm các hệ thống sau:

  • MySQL
  • Cơ sở dữ liệu Oracle
  • Máy chủ SQL
  • Sybase
  • Informix
  • IBM db2
  • KHÔNG CÓ SQL

Trong số tất cả các cơ sở dữ liệu này, MySQL là một trong những phần mềm mở rộng t cơ sở dữ liệu để làm việc. Để tôi hướng dẫn bạn chi tiết về vấn đề này.

MySQLdb là gì?

MySQLdb là hệ quản trị cơ sở dữ liệu quan hệ miễn phí mã nguồn mở sử dụng Ngôn ngữ truy vấn có cấu trúc. Bây giờ một trong những câu hỏi quan trọng nhất ở đây là “SQL là gì?”

SQL (Ngôn ngữ truy vấn có cấu trúc) là một ngôn ngữ tiêu chuẩn cho cơ sở dữ liệu quan hệ cho phép người dùng thực hiện các thao tác khác nhau trên dữ liệu như, Thao tác, Tạo, Loại bỏ, v.v. Trong một tóm lại, SQL cho phép bạn làm bất cứ điều gì với dữ liệu.

Hãy tiếp tục và đi sâu vào kết nối cơ sở dữ liệu Python, trong đó bạn sẽ học cách kết nối với cơ sở dữ liệu.

Python kết nối với cơ sở dữ liệu như thế nào?

Rất đơn giản để kết nối Python với cơ sở dữ liệu. Tham khảo hình ảnh bên dưới minh họa kết nối Python với cơ sở dữ liệu nơi cách một yêu cầu kết nối được gửi tới trình kết nối MySQL Python, được chấp nhận từ cơ sở dữ liệu và con trỏ được thực thi với dữ liệu kết quả.

Trước khi kết nối với cơ sở dữ liệu MySQL, hãy đảm bảo bạn có MySQL trình cài đặt được cài đặt trên máy tính của bạn. Nó cung cấp một bộ công cụ toàn diện giúp cài đặt MySQL với các thành phần sau:

  • Máy chủ MySQL
  • Tất cả các trình kết nối khả dụng
  • MySQL Workbench
  • MySQL Notifier
  • Công cụ cho Excel và Microsoft Visual Studio
  • Cơ sở dữ liệu mẫu MySQL
  • Tài liệu MySQL

Trước khi tiếp tục, bạn nên đảm bảo rằng bạn đã cài đặt MySQL db trên máy tính của mình. Tham khảo các lệnh dưới đây để cài đặt MySQL trong command prompt và pycharm:

Sử dụng Pip:

Lệnh:

import mysql.connector

Đầu ra:

C: UsersHarshit_KantPycharmProjectstest1venvScriptspython.exe C: / Users / Harshit_Kants / Pycharm /venv/python-db-conn.py

Quá trình hoàn tất với mã thoát 0

Tiếp tục trong bài viết này với Kết nối cơ sở dữ liệu Python, hãy cho chúng tôi xem các tham số cần thiết để kết nối với cơ sở dữ liệu:

  • Tên người dùng- Nó chỉ đơn giản là tên người dùng bạn cấp để máy chủ MySQL hoạt động, tên người dùng Mặc định là root.
  • Mật khẩu- Mật khẩu được người dùng cung cấp khi bạn đã cài đặt cơ sở dữ liệu MySQL. Tôi đặt mật khẩu ở đây là ‘password123’
  • Host Name- Về cơ bản, đây là tên máy chủ hoặc địa chỉ IP mà MySQL của bạn đang chạy, Nếu là ‘localhost’, thì địa chỉ IP của bạn là 127.0.0.0
  • I sẽ chỉ cho bạn từ góc độ mã hóa để kết nối python với cơ sở dữ liệu MySQL.

    Ví dụ:

     

    import mysql.connector

    mydb = mysql.connector.connect (máy chủ = "localhost", người dùng = "root", passwd = "password123") // Tôi đã sử dụng 'host', 'username' , 'password'

    print (mydb)

    Đầu ra:

    C: UsersHarshit_KantPycharmProjectstest1venvScriptspython .exe C: /Users/Harshit_Kant/PycharmProjects/test1/venv/python-db-conn.py
    & lt; mysql.connector.connection_cext.CMySQLConnection đối tượng tại 0x000001606D7BD6A0 & gt;

    Quá trình kết thúc với mã thoát 0

    Giải thích: Đây ‘mydb’ chỉ là một ví dụ. Từ kết quả đầu ra, bạn có thể thấy rõ rằng nó đã kết nối với cơ sở dữ liệu.

    Tiếp theo trong Kết nối cơ sở dữ liệu Python, bạn sẽ học cách tạo cơ sở dữ liệu.

    Tạo Cơ sở dữ liệu:

    Sau khi kết nối cơ sở dữ liệu được thiết lập, bạn đã sẵn sàng tạo cơ sở dữ liệu của riêng mình. làm cầu nối giữa python và máy chủ MySQL của bạn.

    Hãy xem phần thực hiện của nó.

    Ví dụ:

     

    import mysql.connector

    mydb = mysql .connector.connect (máy chủ = "localhost", người dùng = "root", passwd = " password123 ")

    mycursor = mydb.cursor ()

    mycursor.execute (" tạo databasershdb ")

    Đầu ra:

    C: /Users/Harshit_Kant/PycharmProjects/test1/venv/python-db-conn.py

    Quá trình kết thúc với mã thoát 0

    Giải thích:

    • Trong chương trình trên, tôi đã sử dụng con trỏ, về cơ bản là một đối tượng được sử dụng để giao tiếp với toàn bộ máy chủ MySQL của bạn, qua đó tôi có thể tạo cơ sở dữ liệu của riêng mình.
    • Bạn có thể thấy từ kết quả đầu ra rằng cơ sở dữ liệu của tôi với tên “rshdb” được tạo theo tùy chỉnh, vì bạn có thể đặt bất kỳ tên nào cho cơ sở dữ liệu của bạn.

    Nếu bạn muốn xem cơ sở dữ liệu trong máy chủ MySQL của mình, y Bạn có thể triển khai đoạn mã sau trong pycharm:

    Ví dụ:

     

    import mysql.connector

    mydb = mysql.connector.connect (máy chủ = "localhost", người dùng = "root", passwd = "password123")

    mycursor = mydb.cursor ()

    mycursor.execute ("hiển thị cơ sở dữ liệu")

    for db in mycursor:
    print (db)

    Output:

    C: UsersHarshit_KantPycharmProjectstest1venvScriptspython .exe C: /Users/Harshit_Kant/PycharmProjects/test1/venv/python-db-conn.py
    (‘rshdb ‘,)
    (‘ information_schema ‘,)
    (‘ mysql ‘ ,)
    (‘performance_schema’,)
    (‘sakila’,)
    (‘sys’,)
    (‘world’,)

    Quá trình kết thúc với mã thoát 0 < / p>

    Giải thích:

    • Bằng cách triển khai đoạn mã viết trên, tôi đã thử hiển thị tất cả các cơ sở dữ liệu hiện có trong máy chủ MySQL.

    Bây giờ bạn đã tạo cơ sở dữ liệu của mình, hãy đi sâu vào một trong những khía cạnh quan trọng nhất của Kết nối cơ sở dữ liệu Python bằng cách thực hiện một số thao tác trong đó. Hãy để chúng tôi hiểu chi tiết điều này.

    Hoạt động cơ sở dữ liệu [CRUD]:

    Lập trình viên có thể thực hiện nhiều thao tác bằng cách sử dụng cơ sở dữ liệu và SQL để có kiến ​​thức vững chắc về lập trình cơ sở dữ liệu và MySQL.

    Tôi đã trình bày các hoạt động CRUD bên dưới

    • Tạo – Đó là một câu lệnh SQL dùng để tạo một bản ghi trong bảng hay có thể nói nó được dùng để tạo một bảng.
    • Read- Nó được sử dụng để tìm nạp thông tin hữu ích từ cơ sở dữ liệu.
    • Update- Câu lệnh SQL cụ thể này được sử dụng để cập nhật các bản ghi trong bảng hoặc cập nhật bảng.
    • Delete- Như chính tên gọi, lệnh này được dùng để xóa bảng.
    • Hãy chúng tôi xem xét từng khía cạnh chi tiết từ góc độ mã hóa.

      Thao tác tạo:

       

      import mysql.connector

      mydb = mysql.connector.connect (máy chủ = " localhost ", người dùng = "root", passwd = "password123", cơ sở dữ liệu = < / strong >rshdb)

      mycursor = mydb.cursor ()

      mycursor.execute ("tạo nhân viên bảng (tên varchar (250 ), sal int (20)) ")

      Đầu ra:

      C: UsersHarshit_KantPycharmProjectstest1venvScriptspython.exe C: / Users / Harshit_Kant / PycharmProjects / python -db-conn.py

      Quá trình kết thúc với mã thoát 0

      Giải thích:

      • Trong chương trình đã cho ở trên, tôi đã tạo một bảng ‘nhân viên’.
      • Nhân viên bảng có hai trường ‘name’ và ‘sal’.
      • Ở đây, User id là “root” và Mật khẩu là “password123” được sử dụng cho đang truy cậprshdb.

      Ảnh chụp màn hình cho sẵn bên dưới hiển thị bảng ‘nhân viên’ và trả về các trường ‘tên’ và ‘sal’.

      Để xem bảng mà tôi đã tạo, hãy tham khảo đoạn mã sau trong python

       

      nhập mysql.connector

      mydb = < / mysql.connector.connect(host = "localhost", người dùng = "root", passwd = " password123 ", cơ sở dữ liệu = "rshdb")
      mycursor = mydb.cursor ()
      mycursor.execute ("hiển thị bảng")

      for tb in mycursor:

      print (tb)

      Đầu ra:

      C: UsersHarshit_KantPycharmProjectstest1venvScriptspython.exe C: /Users/Harshit_Kant/PycharmProjects/test1/venv/python-db-conn.py
      (‘worker’, )

      Quá trình hoàn tất với mã thoát 0

      Ảnh chụp màn hình dưới đây hiển thị bảng ‘nhân viên’ mà tôi đã tạo. < / p>

      Bây giờ bạn đã thấy cách tạo một bảng, hãy cùng xem cách người dùng có thể lấy các giá trị từ nó.

      Đọc Thao tác:

      Thao tác cụ thể này xảy ra trong nhiều giai đoạn khác nhau. Để làm được điều đó, bước đầu tiên là điền vào bảng.

      Mã:

       

      import mysql.connector

      mydb = mysql.connector.connect (máy chủ = " localhost ", người dùng = "root", passwd = "password123", cơ sở dữ liệu = < / strong> "rshdb ")

      mycursor = < / mydb.cursor()

      sqlformula = "Chèn vào giá trị của nhân viên (tên, sal) (% s,% s)" // các giá trị có chỗ đứng ers

      nhân viên = [(" harshit ", 200000), (" rahul ", 30000), (" avinash ", 40000), (" amit ", 50000),] // Đã tạo một mảng emplpoyees

      mycursor.executemany (sqlformula, nhân viên) / / Truyền dữ liệu

      mydb.commit () // Câu lệnh SQL được sử dụng để lưu các thay đổi

      Sản lượng: < / p>

      C: UsersHarshit_KantPycharmProjectstest1venvScriptspython.exe C: / Users / Harshit_Kant / PycharmProjec ts / test1 / venv / python-db-conn.py

      Quá trình hoàn tất với mã thoát 0

      Ở trên mã, tôi đã điền dữ liệu bằng cách sử dụng một mảng nhân viên bằng cách viết câu lệnh SQL bằng Python. Bên dưới ảnh chụp màn hình cơ sở dữ liệu sẽ hiển thị các thay đổi

      Ở đây, ‘harshit’ được sử dụng hai lần trong bản ghi khi tạo mảng.

      Giai đoạn 2: Trong giai đoạn này, chúng ta sẽ sử dụng câu lệnh SQL “select” để thực hiện thao tác đọc thực tế.

      • fetchall () – Hàm cụ thể này tìm nạp tất cả dữ liệu từ câu lệnh được thực thi cuối cùng.
      • fetchone () – Câu lệnh cụ thể này tìm nạp một dữ liệu từ câu lệnh được thực thi cuối cùng.

      Mã: < / strong>

       

      import mysql.connector

      mydb = mysql.connector.connect (máy chủ = " localhost ", người dùng = " root ", passwd = " password123 ", cơ sở dữ liệu = "rshdb")

      mycursor = mydb.cursor ()

      mycursor.execute (" select * from staff ")

      myresult = mycursor.fetchall ()

      for row in myresult:

      print (row)

      Sản lượng: < / strong>

      (‘harshit’, 200000)
      (‘harshit’, 200000)
      (‘rahul’, 30000)
      (‘avinash’, 40000)
      (‘ amit ‘, 50000)

      Quá trình hoàn tất với mã thoát 0

      Giải thích: Trong đoạn mã trên, chúng tôi đã sử dụng func tion ‘fetchall ()’. Nó tìm nạp tất cả dữ liệu từ câu lệnh được thực thi cuối cùng.

      Dưới đây là ảnh chụp màn hình của cơ sở dữ liệu.

      Mã:

       

      import mysql.connector

      mydb = mysql.connector.connect (máy chủ = "localhost", người dùng = "root", passwd = "password123", cơ sở dữ liệu = " rshdb ")

      mycursor = mydb .cursor ()

      mycursor.execute (" chọn tên từ nhân viên ") // chọn trường tôi muốn dữ liệu được tìm nạp từ

      myresult = mycursor. fetchone ()

      for row < strong class = "ns ix"> in myresult:

      print (row)

      Sản lượng: < / h2>

      C: UsersHarshit_KantPycharmProjectstest1venvScriptspython .exe C: /Users/Harshit_Kant/PycharmProjects/test1/venv/python-db-conn.py
      harshit

      Quá trình kết thúc với mã thoát 0

      Giải thích: Trong đoạn mã trên, tôi đã sử dụng hàm “fetchone ()” về cơ bản tìm nạp một dữ liệu từ câu lệnh được thực thi cuối cùng.

      Đó là tất cả về ‘Thao tác đọc’, hãy đi sâu vào thao tác Cập nhật.

      Thao tác cập nhật:

      Câu lệnh SQL này được sử dụng để cập nhật các bản ghi trong bảng. Hãy triển khai mã và xem các thay đổi đang diễn ra như thế nào.

      Mã:

       

      import mysql.connector

      mydb < strong class = "ns ix"> = mysql.connector.connect (máy chủ = "localhost", người dùng = < / strong> "root", passwd = "password123", cơ sở dữ liệu = "rshdb ")

      < p class = "fy nb lq iw ns b do nz oa ob oc od nx l ny" id = "6a00"> mycursor = mydb.cursor ()

      sql = "Cập nhật nhân viên SET sal = 70000 WHERE name = 'harshit' "

      my cursor.execute (sql)

      mydb.commit ()

      Đầu ra:

      C: UsersHarshit_KantPycharmProjectstest1venvScriptspython.exe C: / Users / Harshit_Kant / PycharmProjects / test1 / venv / python-db-conn.py

      Quá trình kết thúc với mã thoát 0

      Giải thích: Chúng tôi đã cập nhật hàng” sal “của bản ghi harshit trong đoạn mã đã cho ở trên. Ảnh chụp màn hình dưới đây sẽ cung cấp cho bạn một hình ảnh rõ ràng.

      Như bạn có thể thấy rõ ràng hàng ‘sal’ của bản ghi ‘harshit’ được cập nhật lên 70000.

      Đây là tất cả về hoạt động Cập nhật, tiếp tục với bài viết” Kết nối cơ sở dữ liệu Python “chúng ta sẽ thấy thao tác cuối cùng là ‘xóa’.

      Thao tác Xóa:

      Như chính cái tên đã chứng minh, thao tác Xóa được sử dụng để xóa các bản ghi khỏi bảng. Hãy hiểu nó từ góc độ mã hóa.

      Mã:

       

      nhập mysql.connector < br />
      mydb = mysql.connector.connect (host = "localhost", user = "root", passwd = "password123", database = "rshdb ")
      mycursor = mydb.cursor ()

      sql = "XÓA khỏi nhân viên WHERE name = 'harshit'"

      mycursor.execute (sql)

      mydb.commit ()

      Sản lượng:

      C: UsersHarshit_KantPycharmProjectstest1venvScriptspython.exe C: /Users/Harshit_Kant/PycharmProjects/test1/venv/python-db-conn.py

      Quá trình kết thúc với mã thoát 0

      Giải thích: Trong đoạn mã trên, tôi đã xóa một bản ghi ‘harshit’ vì nó được lặp lại hai lần.

      Ảnh chụp màn hình dưới đây sẽ cho bạn hình ảnh đẹp hơn.

      Cái này đưa chúng ta đến phần cuối của bài viết về “Kết nối cơ sở dữ liệu Python”. Tôi hy vọng bạn đã rõ ràng với tất cả các khái niệm liên quan đến cơ sở dữ liệu, MYSQL db, các hoạt động cơ sở dữ liệu trong python. Đảm bảo bạn luyện tập nhiều nhất có thể và hoàn nguyên kinh nghiệm của mình.

      Nếu bạn muốn xem thêm các bài viết về các công nghệ thịnh hành nhất trên thị trường như Trí tuệ nhân tạo, DevOps, Ethical Hacking, thì bạn có thể tham khảo tại Trang web chính thức của Edureka.

      Hãy tìm các bài viết khác trong loạt bài này sẽ giải thích các khía cạnh khác nhau của Python và Khoa học dữ liệu.


Xem thêm những thông tin liên quan đến chủ đề python kết nối với cơ sở dữ liệu

D3: Kết nối dữ liệu mySQL và python, mysql.connector , hướng dẫn mySQL cơ bản, 2021 “lato’ channel”

  • Tác giả: Lato’ channel
  • Ngày đăng: 2021-08-31
  • Đánh giá: 4 ⭐ ( 1794 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: ********************************************************************
    Đây là kênh chat của tụi mình:
    Liện hệ qua chương trình discord: https://discord.gg/RfHSp3nQYd

    Link hướng dẫn Qt Designer cơ bản các bạn xem ở link này nhé:
    https://www.youtube.com/watch?v=UJrsn4G_ls8&list=PLGf7gEjelw-nETK3dEh7GAarOIGLF64-B&index=10

    Các video có liên quang trong chuỗi liên kết dữ liệu này:
    https://www.youtube.com/watch?v=wJbSVmuxOo4&list=PLGf7gEjelw-ng8pEA4eWvB2JwPgTz0L0a&index=4

    1. source code cho main:
    no need to install anything
    import sys
    pip install pyqt5, pip install pyqt5 tools
    from PyQt5.QtWidgets import QApplication,QMainWindow
    just change the name
    from ID import Ui_MainWindow

    import mysql.connector
    import numpy

    db = mysql.connector.connect(user=’root’, password=’1234′,
    host=’127.0.0.1′, database=’new_database’)
    class MainWindow:
    def __init__(self):
    the way app working
    self.main_win = QMainWindow()
    self.uic = Ui_MainWindow()
    self.uic.setupUi(self.main_win)
    khai bao nut an
    self.uic.Button_find.clicked.connect(self.showinfo)

    def showinfo(self):
    a = self.uic.Screen_ID.toPlainText()
    lenh chay
    code_8 = ‘SELECT * FROM customer’
    lệnh chạy code
    mycursor = db.cursor()
    mycursor.execute(code_8) make database
    result = mycursor.fetchall()
    b = numpy.array(result)
    print(b)
    c = ”
    for row in result:
    if row[0] == a:
    c = row
    try:
    print(c)
    self.uic.Screen_name.setText(c[1])
    self.uic.Screen_age.setText(str(c[2]))
    except:
    self.uic.Screen_name.setText(“khong co”)
    def show(self):
    command to run
    self.main_win.show()

    if __name__ == “__main__”:
    run app
    app = QApplication(sys.argv)
    main_win = MainWindow()
    main_win.show()
    sys.exit(app.exec())

    👉Chào mừng các bạn đã đến với kênh Lato’channel!!!
    👍Là Kênh Chuyên đăng tải những video đa dạng về cuộc sống, giải trí… Nhằm mang đến cho tất cả quý vị và các bạn những hướng dẫn có ích, Và những giây phút thư giản sau những giờ làm việc mệt mỏi..
    Nếu các bạn yêu thích và quan tâm thì hãy nhấn đăng ký kênh để theo dõi và ủng hộ cho Lato nhé…Chân thành Cảm ơn Mọi Người Rất Nhiều..!!
    Đăng Ký Kênh👇FREE (miễn phí) https://www.youtube.com/channel/UCDt2vE_57gsgC-xxxBGJDkQ
    Tránh làm phiền bạn có thể không bấm vào biểu tượng quả chuông.
    Video Gốc Bản Quyền Thuộc Về Lato’channel. © Copyright by Lato’channel
    👉 Vui lòng không làm mới lại(reup)👉 Do not Reup

Làm việc với PostgreSQL trong Python sử dụng psycopg2

  • Tác giả: hocdevops.com
  • Đánh giá: 3 ⭐ ( 2926 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Kết nối và giao dịch cơ sở dữ liệu bằng Python

  • Tác giả: helpex.vn
  • Đánh giá: 5 ⭐ ( 2449 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Rất dễ dàng thiết lập kết nối với cơ sở dữ liệu và thực thi các câu lệnh DML (PL / SQL) khác nhau bằng Python. Ở đây, tôi sẽ giải thích hai mô-đun khác nhau mà qua đó chúng ta sẽ kết nối với…

Làm việc với cơ sở dữ liệu trong Python

  • Tác giả: kcntt.duytan.edu.vn
  • Đánh giá: 4 ⭐ ( 7527 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Tạo bảng dữ liệu trong Python

    Khi một kết nối tới Database đã được thành lập, chúng ta có thể tạo các bảng hoặc bản ghi vào trong bảng đó bởi sử dụng phương thức execute của đối tượng cursor đã được tạo.

    Bạn theo dõi ví dụ để tạo bảng SINHVIEN:

    import MySQLdb

    # mo…

Kết nối cơ sở dữ liệu MySQL trong Python sử dụng PyMySQL

  • Tác giả: openplanning.net
  • Đánh giá: 4 ⭐ ( 8891 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

[Tự học python] Thao tác với cơ sở dữ liệu trong Python

  • Tác giả: cafedev.vn
  • Đánh giá: 5 ⭐ ( 7913 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Bài học này sẽ đề cập đến vấn đề kết nối cơ sở dữ liệu trong chương trình Python. Có thể nói rằng, việc kết nối một chương trình với một cơ sở dữ liệu được xem

Làm thế nào để kết nối Cơ sở dữ liệu bằng Python?

  • Tác giả: vn.wsxdn.com
  • Đánh giá: 5 ⭐ ( 6809 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Ví dụ và sử dụng hàm khác biệt trong SQL - hàm khác biệt trong sql

By ads_php