Hướng dẫn data type mapping oracle to mysql - kiểu dữ liệu ánh xạ oracle sang mysql
This chapter compares the MySQL database and the Oracle database. It includes the following sections: Show
2.1 Database SecurityThis section includes information about security issues with MySQL databases and Oracle databases. As with Oracle, MySQL users are maintained by the database. MySQL uses a set of grant tables to keep track of users and the privileges that they can have. MySQL uses these grant tables when performing authentication, authorization and access control for users. 2.1.1 Database AuthenticationUnlike Oracle (when set up to use database authentication) and most other databases that use only the user name and password to authenticate a user, MySQL uses an additional 2.1.2 PrivilegesThe MySQL privilege system is a hierarchical system that works through inheritance. Privileges granted at a higher level are implicitly passed down to all lower levels and may be overridden by the same privileges set at lower levels. MySQL allows privileges to be granted at five different levels, in descending order of the scope of the privileges:
Each level has a corresponding grant table in the database. When performing a privilege check, MySQL checks each of the tables in descending order of the scope of the privileges, and the privileges granted at a lower level take precedence over the same privileges granted at a higher level. The privileges supported by MySQL are grouped into two types: administrative privileges and per-object privileges. The administrative privileges are global privileges that have server-wide effects and are concerned with the functioning of MySQL. These administrative privileges include the FILE, PROCESS, REPLICATION, SHUTDOWN and SUPER privilege. The per-object privileges affect database objects such tables, columns, indexes, and stored procedures, and can be granted with a different scope. These per-object privileges are named after the SQL queries that trigger their checks. Unlike in Oracle, there is no concept of role in MySQL. Thus, in order to grant a group of users the same set of privileges, the privileges have to be granted to each user separately. Alternately, though less satisfactory for auditing, users performing tasks as a role may all share a single user account that is designated for the "role" and with the required privileges granted. 2.2 Schema MigrationThe schema contains the definitions of the tables, views, indexes, users, constraints, stored procedures, triggers, and other database-specific objects. Most relational databases work with similar objects. This section contains the following:
2.2.1 Schema Object SimilaritiesThere are many similarities between schema objects in Oracle and MySQL. However, some schema objects differ between these databases. For more information about schema objects, see Oracle SQL Reference. Table 2-1 shows the differences between Oracle and MySQL. Table 2-1 Schema Objects in Oracle and MySQL
2.2.2 Schema Object NamesOracle is case insensitive to object names, and Oracle schema object names are stored as uppercase. As in Oracle, column, index, stored procedure, and trigger names as well as column aliases in MySQL are case insensitive on all platforms. However, the case sensitivity of database and tables names for MySQL differs from Oracle. In MySQL, databases correspond to directories within the data
directory, and tables correspond to one or more files within the database directory. As such, the case sensitivity of the database and table names is determined by the case sensitivity of the underlying operating systems. This means that database and table names are not case-sensitive in Windows and are case-sensitive in most varieties of Unix. However, MySQL allows users to determine how the database and table names are stored on disk and in their use in MySQL through the Cả Oracle và MySQL đều cho phép bạn sử dụng các từ dành riêng làm tên đối tượng bằng cách đại diện cho tên với một định danh được trích dẫn. Tuy nhiên, MySQL cho phép một số từ dành riêng như ngày và dấu thời gian được sử dụng làm định danh không được trình bày cho tên đối tượng, mặc dù điều này không được phép trong Oracle. Nhà phát triển SQL nối một dấu gạch dưới (_) vào tên của một đối tượng MySQL là một từ dành riêng của Oracle. MySQL và Oracle có một số khác biệt nhỏ trong định nghĩa về định danh. Trong MySQL, một mã định danh chưa được trích xuất có thể bắt đầu bằng một chữ số và dấu ngoặc kép được cho phép trong một định danh được trích dẫn; Tuy nhiên, cả hai đều không được phép trong một định danh Oracle. Trong MySQL, ký tự trích dẫn là backtick (`). Nếu chế độ SQL ANSI_Quotes được đặt, các báo giá kép cũng có thể được sử dụng để trích dẫn các định danh. Trong Oracle, số nhận dạng được trích dẫn bằng dấu ngoặc kép. Bạn nên chọn một tên đối tượng lược đồ duy nhất theo trường hợp và ít nhất một đặc điểm khác và đảm bảo rằng tên đối tượng không phải là một từ dành riêng từ một trong hai cơ sở dữ liệu. 2.2.3 Cân nhắc thiết kế bảng Table Design ConsiderationsPhần này thảo luận về các vấn đề thiết kế bảng mà bạn cần xem xét khi chuyển đổi cơ sở dữ liệu MySQL sang Oracle. Phần này bao gồm những điều sau:
2.2.3.1 Kiểu dữ liệu ký tự Character Data TypesMySQL và Oracle có một số khác biệt trong các loại ký tự mà chúng hỗ trợ và theo cách họ lưu trữ và truy xuất các giá trị loại ký tự. MySQL hỗ trợ loại char và varchar cho loại ký tự có độ dài nhỏ hơn 65,535 byte. Loại char có thể có độ dài tối đa 255 byte và kể từ MySQL 3.23, nó cũng có thể được khai báo với chiều dài 0 byte. Trước MySQL 5.0.3, đặc tả độ dài cho loại varchar giống như loại char. Từ MySQL 5.0.3 trở đi, độ dài tối đa cho loại varchar là 65,535 byte. Oracle hỗ trợ bốn loại ký tự: char, nchar, nvarchar2 và varchar2. Độ dài tối thiểu có thể được khai báo cho tất cả các loại ký tự Oracle là 1 byte. Kích thước tối đa được phép cho char và nchar là 2.000 byte, và đối với nvarchar2 và varchar2, nó là 4.000 byte. Các giá trị Char MySQL được gắn bên phải với các khoảng trống theo chiều dài được chỉ định khi chúng được lưu trữ và các không gian dấu vết được gỡ bỏ khi các giá trị được truy xuất. Mặt khác, các giá trị varchar được lưu trữ bằng nhiều ký tự như được đưa ra, nhưng trước khi các không gian kéo dài MySQL 5.0.3 được gỡ bỏ khi các giá trị được lưu trữ và truy xuất. Oracle Blank-pads giá trị cho loại char và nchar của nó với độ dài cột nếu giá trị ngắn hơn chiều dài cột và không gian dấu vết không được gỡ bỏ khi truy xuất. Đối với các cột loại dữ liệu NVARCHAR2 và VARVHAR2, các cửa hàng của Oracle và truy xuất giá trị chính xác như được đưa ra, bao gồm cả không gian theo dõi. Nếu một giá trị được gán cho cột loại ký tự vượt quá độ dài được chỉ định của nó, MySQL cắt tỉa giá trị và không tạo ra lỗi trừ khi chế độ SQL nghiêm ngặt được đặt. Oracle tạo ra một lỗi nếu giá trị được gán cho cột loại ký tự vượt quá độ dài được chỉ định của nó. Trong MYSQL, mỗi loại ký tự (char, varchar và văn bản) có một bộ ký tự cột và đối chiếu. Nếu tập hợp hoặc bộ đối chiếu không được xác định rõ ràng trong định nghĩa cột, bộ hoặc bộ đối chiếu ký tự được ngụ ý nếu được chỉ định; Mặt khác, ký tự cơ sở dữ liệu hoặc đối chiếu được chọn. Trong Oracle, các loại ký tự cho các loại char và varchar2 được xác định bởi bộ ký tự cơ sở dữ liệu và cho các loại ký tự cho các loại nchar và nvarchar được xác định tập hợp ký tự quốc gia. Khi khai báo loại char hoặc varchar trong MySQL, ngữ nghĩa độ dài mặc định là ký tự thay vì byte cho MySQL 4.1 trở lên. Trong Oracle, ngữ nghĩa độ dài mặc định là byte cho các loại và ký tự char và varchar2 cho các loại nchar và nvarchar2. Nhà phát triển SQL sẽ ánh xạ các loại MySQL Char và Varchar thành các loại Oracle Char và Varchar2, tương ứng. Nhà phát triển SQL sẽ xác định số lượng byte tối đa cho các cột loại dữ liệu của Oracle Char và Varchar2 từ số byte cần thiết để giữ độ dài tối đa được chỉ định cho các cột Dữ liệu MySQL Char và Varchar tương ứng. Nếu cột MySQL Varchar2 sao cho dữ liệu vượt quá 4000 byte, hãy chuyển đổi cột thành cột Kiểu dữ liệu Oracle Clob. 2.2.3.2 Giá trị mặc định cột Column Default ValueMySQL khác với Oracle theo cách xử lý giá trị mặc định cho một cột không cho phép giá trị null. Trong MySQL, đối với một cột không cho phép giá trị null và không có dữ liệu nào được cung cấp cho cột khi dữ liệu được chèn vào bảng, MySQL xác định giá trị mặc định cho cột. Giá trị mặc định này là giá trị mặc định ngầm cho kiểu dữ liệu cột. Tuy nhiên, nếu chế độ nghiêm ngặt được bật, MySQL sẽ tạo lỗi và đối với các bảng giao dịch, nó sẽ quay lại câu lệnh chèn. Trong Oracle, khi dữ liệu được chèn vào bảng, dữ liệu phải được cung cấp cho tất cả các cột không cho phép giá trị null. Oracle không tạo ra giá trị mặc định cho các cột có ràng buộc không null. 2.2.4 Di chuyển nhiều cơ sở dữ liệu Migrating Multiple DatabasesNhà phát triển SQL hỗ trợ việc di chuyển nhiều cơ sở dữ liệu MySQL nếu chúng có trên cùng một máy chủ cơ sở dữ liệu MySQL. 2.2.5 Cân nhắc di chuyển lược đồ cho MySQL Schema Migration Considerations for MySQLCân nhắc di chuyển lược đồ cho MySQL áp dụng trong các lĩnh vực sau "
2.2.5.1 Cơ sở dữ liệu DatabasesKhi chuyển cơ sở dữ liệu MySQL sang Oracle, nhà phát triển SQL ánh xạ mỗi cơ sở dữ liệu MySQL sang một không gian bảng trong Oracle. Các đối tượng cơ sở dữ liệu, chẳng hạn như bảng, chỉ mục và chế độ xem được lưu trữ trong các không gian bảng tương ứng và được tham chiếu từ lược đồ Oracle cho người dùng sở hữu chúng. 2.2.5.2 Ánh xạ các đặc quyền cấp cơ sở dữ liệu MySQL Global và cơ sở dữ liệu cho các đặc quyền hệ thống Oracle Mapping MySQL Global and Database-Level Privileges to Oracle System PrivilegesNhà phát triển SQL không xử lý tất cả các đặc quyền quản trị trên MySQL, ngoại trừ siêu đặc quyền. Bảng 2-2 cho thấy các ánh xạ cho các đặc quyền của Per-Object MySQL được cấp ở các cấp độ khác nhau cũng như siêu đặc quyền được cấp ở cấp độ toàn cầu. Bảng 2-2 Đặc quyền MySQL và đặc quyền hệ thống Oracle
Thay đổi bất kỳ bảng nào, thay đổi bất kỳ chuỗi nào, thay đổi bất kỳ custer nào, nhận xét bất kỳ bảng nào Temporary TablesThay đổi thói quen Thay đổi bất kỳ thủ tục nào, bỏ bất kỳ thủ tục nào TẠO RA Tạo bất kỳ bảng nào, tạo bất kỳ chuỗi nào, tạo bất kỳ cụm nào, tạo liên kết cơ sở dữ liệu, nhận xét bất kỳ bảng nào Owner of Schema ObjectsTạo thói quen Tạo bất kỳ thủ tục Data TypesTẠO NGƯỜI DÙNG
XÓA BỎ Supported Oracle Data TypesThay đổi bất kỳ bảng, thả người dùng, xóa bất kỳ bảng nào LÀM RƠISupported Oracle Data Types
Để biết thêm thông tin về các loại dữ liệu của Oracle, hãy xem Tài liệu tham khảo ngôn ngữ SQL cơ sở dữ liệu Oracle.Oracle Database SQL Language Reference. 2.3.2 Ánh xạ kiểu dữ liệu mặc định Default Data Type MappingsBảng 2-4 cho thấy các cài đặt mặc định được sử dụng bởi SQL Developer để chuyển đổi các loại dữ liệu từ MySQL sang Oracle. Nhà phát triển SQL cho phép bạn thay đổi cài đặt mặc định cho một số loại dữ liệu nhất định bằng cách chỉ định loại thay thế. Để biết thông tin về việc thay đổi ánh xạ kiểu dữ liệu mặc định, hãy xem Trợ giúp trực tuyến của Nhà phát triển SQL. Bảng 2-4 Ánh xạ kiểu dữ liệu mặc định được sử dụng bởi Nhà phát triển Oracle SQL
Note: Số có độ chính xác p và tỷ lệ s. Độ chính xác P có thể nằm trong khoảng từ 1 đến 38. thang đo S có thể nằm trong khoảng từ -84 đến 127. Nvarchar2 (kích thước) Comparing Data TypesChuỗi ký tự có độ dài thay đổi có ký tự kích thước chiều dài tối đa hoặc byte, tùy thuộc vào sự lựa chọn của bộ ký tự quốc gia. Kích thước tối đa được xác định bởi số byte cần thiết để lưu trữ mỗi ký tự, với giới hạn trên là 4000 byte. Bạn phải chỉ định kích thước cho NVARCHAR2.
Kiểu dữ liệu Varchar hiện đồng nghĩa với kiểu dữ liệu Varchar2. Oracle khuyên bạn nên sử dụng varchar2 chứ không phải varchar. Trong tương lai, Varchar có thể được định nghĩa là một loại dữ liệu riêng biệt được sử dụng cho các chuỗi ký tự có độ dài thay đổi so với ngữ nghĩa so sánh khác nhau. Kích thước tối đa là 4000 và tối thiểu 1 là mặc định. Numeric TypesMột kiểu dữ liệu số dấu nổi 64 bit, chính xác kép.
2.3.2 Ánh xạ kiểu dữ liệu mặc định
NGÀY Date and Time TypesNGÀY GIỜ
4 byte String TypesTHỜI GIAN
CON SỐ Note: 2.3.3.3 Các loại chuỗi
NGÀY GIỜ Data Storage Concepts8 byte Dấu thời gian 4 byte THỜI GIAN NĂM
1, 2, 3, 4 hoặc 8 byte tùy thuộc vào số lượng thành viên đặt (tối đa 64 thành viên) CHỮ
1 hoặc 2 byte tùy thuộc vào số lượng enum. Giá trị (65535 Giá trị tối đa) & nbsp; Tôi có thể kết nối với cơ sở dữ liệu Oracle với MySQL không?Bạn có thể sử dụng Cổng SQL từ trình điều khiển ODBC cho Oracle để truy vấn dữ liệu Oracle thông qua giao diện MySQL..
Varchar2 có được hỗ trợ trong MySQL không?MySQL hỗ trợ loại char và varchar cho loại ký tự có độ dài nhỏ hơn 65,535 byte..
Kiểu dữ liệu nào được sử dụng trong cơ sở dữ liệu MySQL?Trong MySQL có ba loại dữ liệu chính: chuỗi, số và ngày và thời gian.string, numeric, and date and time.
Sự khác biệt giữa cú pháp Oracle và MySQL là gì?MySQL chỉ hỗ trợ chỉ số toàn văn và băm.Oracle sử dụng nhiều chỉ mục hơn chỉ là các chỉ mục này, bao gồm bitmap, dựa trên chức năng, phân vùng, v.v.Oracle tốt hơn cho việc triển khai doanh nghiệp, trong khi MySQL phù hợp với quy mô nhỏ đến trung bình.MySQL miễn phí, trong khi Oracle yêu cầu phí cấp phép. |