ảnh hưởng. Máy chủ-7. 1 — Trạng thái. Bỏ chỉ định Show
MySQL will implement a data type, ARRAY, to store variable-sized arrays, in compliance with Standard SQL (SQL:2003) array functionality. Rationale --------- -- Needed functionality: ARRAY functionality is required by standard SQL. MySQL 4.1 currently has no ability to support arrays. -- Compatibility: Other DBMSs (e.g. Oracle10g) do provide array support. Syntax ------ Add a new column data type: ARRAY [[ may be any data type supported (except for ARRAY itself, and REF, which MySQL does not support). It defines the type of data which the array will contain. -- The [] must be an unsigned integer greater than zero. It defines the maximum cardinality of the array, rather than its exact size. Note that the inner set of brackets are mandatory when defining an array with a specific size, e.g. INT ARRAY is correct for defining an array with the default size, INT ARRAY[5] is correct syntax for defining an array that will contain 5 elements. -- As shown in the syntax diagram, [] is optional. If omitted, the maximum cardinality of the array defaults to an implementation-defined default value. Oracle's VARRAY size is limited to the maximum number of columns allowed in a table, so I suggest we make our default match that maximum. Thus, if [] is omitted, the maximum cardinality of the array defaults to 1000, which should also be the absolute maximum cardinality. Thus: -- [] defaults to 1000. -- [] may range from 1 to 1000. Function -------- An array is an ordered collection of elements, possibly containing data values. The ARRAY data type will be used to store data arrays in database tables. Rules ----- -- An array is an ordered set of elements. -- The maximum number of elements in the array is known as the array's maximum cardinality. The maximum cardinality is defined at the time the array is defined, as is the element data type. -- The actual number of elements that contain data values is known as the array's cardinality. The cardinality of an array may vary and is not defined at the time the array is defined. That is, an instance of an array may always contain fewer elements than the maximum cardinality allows. -- Each element may contain a data value that corresponds to the array's defined data type. -- Each element has three states: blank (no value assigned to the element), NULL (NULL assigned to the element), and containing valid value (data value assigned to the element). -- Each element is associated with exactly one ordinal position in the array. The first array element is found at position 1 (one), the next at position 2 (two), and so on. Thus, assuming n is the cardinality of an array, the ordinal position of any array element is an integer in the range 1 (one) <= element <= n. -- An array has a maximum cardinality and an actual cardinality. -- It is an error if one attempts to assign a value to an array element whose position is greater than the maximum cardinality of the array. -- It is not an error if one attempts to assign values to only some of an array's elements. -- Privileges: -- No special privileges are required to create a table with the ARRAY data type, or to utilize ARRAY data. -- Comparison: -- See WL#2084 Add ability to compare ARRAY data. -- Assignment: -- See WL#2082 Add ARRAY element reference function and WL#2083 Add ARRAY value constructor function. Other statements ---------------- -- Two other syntax elements must be implemented in order for the ARRAY data type to be useful. See WL#2082 for Array Element Reference syntax and WL#2083 for Array Constructor syntax. -- Also related: -- CARDINALITY(). See WL#2085. -- Array concatenation. See WL#. An example ---------- Create a table with the new data type: CREATE TABLE ArrayTable (array_column INT ARRAY[3]); Insert data: INSERT INTO ArrayTable (array_column) VALUES (ARRAY[10,20,30]); Retrieve data: SELECT array_column from ArrayTable WHERE array_column <> ARRAY[]; -- Returns all cases where array_column is not an empty array Reserved words -------------- ARRAY, eventually CARDINALITY Copyright (c) 2000, 2023, Oracle Corporation và/hoặc các chi nhánh của nó. Đã đăng ký Bản quyền Bài viết này khám phá cách lưu các mảng PHP trong MySQL. MySQL là một hệ thống quản lý cơ sở dữ liệu quan hệ nguồn mở cho phép bạn lưu trữ dữ liệu theo hàng và cột. SQL là viết tắt của Ngôn ngữ truy vấn có cấu trúc để thao tác và truy xuất dữ liệu từ cơ sở dữ liệu SQL. Biết thêm về MySQL Mục lục Trước khi bạn đọcBài viết yêu cầu bạn kết nối với cơ sở dữ liệu MySQL của bạn bằng PHP, tạo một bảng và kết nối với nó trong PHP. Nếu bạn không quen thuộc với tất cả những điều này, hãy xem xét việc học nó từ w3schools. Ở đây chúng ta chỉ tập trung vào các cách lưu trữ mảng khác nhau trong MySQL PHP Lưu trữ mảng trong bảng chuẩn hóabảng nhân viênBạn cần tạo một bảng nhân viên ở cuối nếu bạn đang thử các ví dụ trong bài viết. Để thuận tiện cho bạn, đây là mã tạo bảng SQL dành cho bạn
Lưu trữ mảng PHP trong MySQL dưới dạng hàng mới bằng cách sử dụng hàm nổ với biếnCó điều gì đó không ổn với cách tiếp cận bên dưới. Bạn có thể hình dung về nó? Hàm implode PHP chuyển đổi một mảng thành một chuỗi. Các giá trị được phân tách bằng dấu phẩy từ hàm nổ đã sẵn sàng để sử dụng trong câu lệnh SQL INSERT INTO. Đây là một ví dụ về việc thêm một hàng vào bảng nhân viên bằng cách sử dụng câu lệnh INSERT
Mã bên dưới sử dụng hàm nổ và SQL INSERT để thêm nhiều hàng vào
Trong đoạn mã này, hàm implode của PHP nhận một mảng employee và biến nó thành một chuỗi được phân tách bằng dấu phẩy. Chuỗi được thêm vào biến $sql. Biến này lưu trữ chuỗi truy vấn, giống như cú pháp SQL mà chúng ta đã thấy ở trên Sự khác biệt ở đây là mã thực hiện nhiều lần chèn và do đó vòng lặp tiếp tục thêm vào chuỗi truy vấn. Cuối cùng, nó lưu mảng trong MySQL PHP bằng cách sử dụng hướng đối tượng – tìm hiểu thêm về MySQLi Hướng đối tượng tại đây Rủi ro bảo mật – SQL injection. Không sử dụngVâng. Vì vậy, chúng tôi vừa chỉ cho bạn một giải pháp và bạn có thể sẽ bắt gặp giải pháp này trên Stack Overflow hoặc các tài nguyên khác. Đừng sử dụng nó. Nó sẽ mở cơ sở dữ liệu của bạn đến các lỗ hổng Không bao gồm các biến PHP trực tiếp vào các câu lệnh SQL của bạn. Bạn cần tham số hóa chúng bằng các câu lệnh Tại sao lại thế này? Bởi vì biến của bạn có thể đến từ một giá trị không xác định như từ trình duyệt. Điều gì sẽ xảy ra nếu ai đó xấu đặt nó vào hộp văn bản của bạn và nó đã vượt qua xác thực của bạn? Không tốt Đây là lý do tại sao các câu lệnh được tham số hóa tồn tại. Bạn cần viết tuyên bố chung của mình và sau đó liên kết các biến của bạn dưới dạng tham số. Kiểm tra các liên kết và ví dụ dưới đây để tìm hiểu thêm
Lưu trữ Mảng trong MySQL dưới dạng hàng mới bằng cách sử dụng vòng lặp foreach và câu lệnh được tham số hóaHàm implode rất hữu ích khi có nhiều cột hoặc điểm dữ liệu. Nếu có một vài, thì vòng lặp for sẽ dễ dàng và hiệu quả hơn. Bảng cơ sở dữ liệu mà chúng ta đang xem xét chỉ bao gồm hai cột – tên và lương Hãy xem cách lưu một mảng bằng vòng lặp for trong PHP
Mã này khá giống nhau ngoại trừ việc nó lấy tên và lương của một nhân viên thông qua lập chỉ mục trực tiếp từ mảng. Lưu Analytics & dữ liệu không chuẩn hóaVâng. ở trên là tuyệt vời để chuyển đổi một mảng thành các hàng mới, nhưng nếu bạn muốn lưu toàn bộ mảng dưới dạng một chuỗi cho mục đích phân tích vào một cột thì sao? Sử dụng hàm json_encode để lưu trữ toàn bộ mảng PHP trong MySQLLưu nó dưới dạng JSON JSON nói chung là định dạng ưa thích để lưu trữ các mảng trong các cột MySQL. Dễ dàng chèn, đọc và rút ra khỏi cơ sở dữ liệu. Tất cả các ngôn ngữ hiện đại đều có thể giải thích và trích xuất nó. Ngoài ra, bạn thực sự có thể truy vấn đối tượng JSON kể từ MySQL 8. Đây phải là goto trừ khi bạn có lý do cụ thể để không sử dụng phương pháp này Kiểm tra ví dụ dưới đây sử dụng json_encode Hãy tạo một bảng phân tích
Ổn thỏa. Bây giờ hãy chèn một số dữ liệu
Lưu ý về mã hóa json và lưu trữ toàn bộ mảngNội dung trên có thể không thực tế nhưng tôi đã viết nó theo một cách nhất định để chỉ ra trường hợp tiềm năng mà bạn có thể cần lưu trữ các loại dữ liệu khác nhau. Điều này khá phổ biến trong dữ liệu phân tích. Bạn chỉ cần lưu trữ nó và các quy trình ETL dữ liệu của bạn sẽ quản lý nó cho người dùng doanh nghiệp sau này Bạn có thể truy vấn trực tiếp cột chi tiết bằng MySQL, nhưng nhiều khả năng bạn sẽ sử dụng cơ sở dữ liệu SQL làm kho lưu trữ dữ liệu đơn giản. Điều này là hợp lý để làm với số lượng nhỏ nhưng nó hơi có mùi mã. Một giải pháp thông minh hơn có khả năng lưu trữ các mảng dưới dạng JSON hoặc CSV trong nhóm s3 Lưu mảng trong MySQL PHP bằng serializeĐiều gì sẽ xảy ra nếu bạn không thể sử dụng JSON vì một lý do ngớ ngẩn nào đó? Bạn có thể sử dụng chức năng tuần tự hóa Hàm tuần tự hóa trả về một biểu diễn luồng byte của một mảng. Nó không thể đọc được trừ khi bạn gọi unserialize để biến nó trở lại thành một mảng. Sẽ hữu ích nếu bạn chỉ muốn lưu một chuỗi dài trong một cột trong cơ sở dữ liệu Bây giờ, nó đánh bại mục đích của cơ sở dữ liệu quan hệ vì bạn không thể có nhiều trường và do đó, mối quan hệ giữa các bảng theo đúng nghĩa. Nó chỉ là một cách để lưu trữ một mảng dưới dạng một chuỗi trong cơ sở dữ liệu. Đây là cách lưu mảng trong MySQL PHP với chức năng tuần tự hóa ________số 8Thấy rằng nó không cần vòng lặp nữa, nó tuần tự hóa toàn bộ mảng và lưu chuỗi luồng byte vào một cột dữ liệu duy nhất trong bảng EMPLOYEE_REVIEWS Gói (lạiPhù. Đó là rất nhiều thứ để tiêu hóa. Bài viết khám phá các cách khác nhau để lưu trữ mảng trong MySQL với PHP. Nó nhìn vào hàm implode và cách nó lưu mảng vào cơ sở dữ liệu. Tiếp theo, nó khám phá phương thức vòng lặp for và cuối cùng là hàm tuần tự hóa để lưu trữ một chuỗi dài trong một cột Đó là tất cả về nó. Chúng tôi hy vọng bạn thích nó. Hãy theo dõi để biết thêm tại FuelingPHP Bạn muốn tìm hiểu thêm về PHP?Chúng tôi có nhiều bài viết thú vị liên quan đến PHP. Bạn có thể khám phá những điều này để tìm hiểu thêm về PHP
Bài viết liên quanCách sắp xếp mảng nhiều chiều theo giá trị? Mảng kết hợp hoặc bản đồ băm trong PHP là gì Cách sắp xếp mảng đối tượng theo thuộc tính How to convert array to string with PHP implode function
báo cáo quảng cáo này Stephen Phép Lạ Chào. Tôi hy vọng bạn thích bài viết này. Tôi đã phát triển các trang web và phần mềm một cách chuyên nghiệp trong hơn 20 năm. Tôi bắt đầu FuelingPHP như một cách để đền đáp lại cộng đồng nguồn mở đã giúp tôi có thể sống thoải mái khi xây dựng những thứ tôi yêu thích MySQL có thể giữ mảng không?MySQL không có kiểu dữ liệu mảng . Đây là một vấn đề cơ bản trong các kiến trúc nơi lưu trữ các hàng không chuẩn hóa là một yêu cầu, ví dụ, trong đó MySQL (cũng) được sử dụng để lưu trữ dữ liệu.
Chúng ta có thể lưu trữ mảng trong cơ sở dữ liệu không?Mảng là một biến đặc biệt cho phép lưu trữ một hoặc nhiều giá trị trong một biến duy nhất e. g. – giữ tên người dùng hoặc thông tin chi tiết trong Mảng. Chúng dễ thao tác hơn. Đôi khi, yêu cầu lưu trữ Mảng trong cơ sở dữ liệu MySQL và truy xuất nó .
Làm cách nào để sử dụng mảng trong MySQL?mysql> select *from PassingAnArrayDemo; Sau đây là kết quả. Sau đây là cú pháp để gửi một tham số mảng với sự trợ giúp của mệnh đề IN. mysql> CHỌN * -> TỪ PassingAnArrayDemo trong đó id IN(1,3,6);
Chúng ta có thể lưu trữ mảng trong cơ sở dữ liệu quan hệ không?Mảng số đa chiều thường được tuần tự hóa thành định dạng nhị phân để lưu trữ và xử lý hiệu quả. Các biểu diễn này có thể được lưu trữ dưới dạng các đối tượng nhị phân trong các hệ thống quản lý cơ sở dữ liệu quan hệ hiện có . |