MySQL與Oracle對(duì)比及區(qū)別說(shuō)明
一、比較
1、MySQL的特點(diǎn)
- 性能卓越,服務(wù)穩(wěn)定,很少出現(xiàn)異常宕機(jī);
- 開(kāi)放源代碼無(wú)版本制約,自主性及使用成本低;
- 歷史悠久,社區(qū)和用戶非?;钴S,遇到問(wèn)題及時(shí)尋求幫助;
- 軟件體積小,安裝使用簡(jiǎn)單且易于維護(hù),維護(hù)成本低;品牌口碑效應(yīng);
- 支持多種OS,提供多種API接口,支持多種開(kāi)發(fā)語(yǔ)言,對(duì)流行的PHP,Java很好的支持
2、Oracle的特點(diǎn)
- 兼容性:Oracle產(chǎn)品采用標(biāo)準(zhǔn)SQL,并經(jīng)過(guò)美國(guó)u構(gòu)架標(biāo)準(zhǔn)技術(shù)所(NIST)測(cè)試,與IBM SQL/DS、DB2、INGRES、IDMS/R等兼容。
- 可移植性:Oracle的產(chǎn)品可運(yùn)行于很寬范圍的硬件與操作系統(tǒng)平臺(tái)上。可以安裝在多種 大、中、小型機(jī)上,可在多種操作系統(tǒng)下工作。
- 可聯(lián)結(jié)性:Oracle能與多種通訊網(wǎng)絡(luò)相連,支持各種協(xié)議。
- 高生產(chǎn)率:Oracle產(chǎn)品提供了多種開(kāi)發(fā)工具,能極大地方使用戶進(jìn)行進(jìn)一步的開(kāi)發(fā)。
- 開(kāi)放性:Oracle良好的兼容性、可移植性、可連接性和高生產(chǎn)率使Oracle RDBMS具有良好的開(kāi)放性。
3、MySQL的缺點(diǎn)
- MySQL最大的缺點(diǎn)是其安全系統(tǒng),主要是復(fù)雜而非標(biāo)準(zhǔn),另外只有到調(diào)用mysqladmin來(lái)重讀用戶權(quán)限才會(huì)發(fā)生改變;
- MySQL的另一個(gè)主要的缺點(diǎn)是缺乏標(biāo)準(zhǔn)的RI(Referential Integrity-RI)機(jī)制,RI限制的缺乏(在給定字段域上的一種固定的范圍限制)可以通過(guò)大量的數(shù)據(jù)類(lèi)型來(lái)補(bǔ)償;
- MySQL不支持熱備份;
4、Oracle的缺點(diǎn)
- 對(duì)硬件要求很高;
- 價(jià)格比較昂貴;
- 管理維護(hù)麻煩一些;
- 操作比較復(fù)雜,需要技術(shù)含量高;
5、技術(shù)選型
Oracle適用場(chǎng)景
- 對(duì)數(shù)據(jù)庫(kù)有高級(jí)需求:如果企業(yè)對(duì)數(shù)據(jù)庫(kù)的高級(jí)需求較高,如存儲(chǔ)復(fù)雜數(shù)據(jù)及其方法,要求高可用性、災(zāi)備恢復(fù)、安全性等,可以考慮用Oracle。
- 大型企業(yè)應(yīng)用:Oracle在處理大規(guī)模、復(fù)雜的企業(yè)級(jí)應(yīng)用方面表現(xiàn)出色。它能夠處理海量的數(shù)據(jù)和高并發(fā)的訪問(wèn)請(qǐng)求,同時(shí)支持復(fù)雜的數(shù)據(jù)模型和關(guān)系。
- 項(xiàng)目并發(fā)量高:使用Oracle,它是是OLTP(聯(lián)機(jī)事務(wù)處理)最好的工具。
- 安全性要求高:Oracle使用了許多安全功能,如用戶名,密碼,配置文件,本地身份驗(yàn)證,外部身份驗(yàn)證,高級(jí)安全增強(qiáng)功能等。像金融、銀行等對(duì)安全性要求高的項(xiàng)目一般都選用Oracle作為數(shù)據(jù)庫(kù)。
- 高可用性和容災(zāi)需求:Oracle提供了強(qiáng)大的高可用性和容災(zāi)解決方案,例如集群配置、數(shù)據(jù)復(fù)制和自動(dòng)故障轉(zhuǎn)移等,能夠確保系統(tǒng)的連續(xù)性和數(shù)據(jù)的可靠性。MySQL付費(fèi)版也支持,但可靠性不如Oracle。
MySQL適用場(chǎng)景
- 中小型企業(yè)和個(gè)人使用:由于其開(kāi)源和低成本特性,MySQL廣泛應(yīng)用于中小型企業(yè)的業(yè)務(wù)系統(tǒng)。
- Web應(yīng)用:因其輕量級(jí)和高性能,MySQL是大多數(shù)Web應(yīng)用的理想選擇,如內(nèi)容管理系統(tǒng)(CMS)、電子商務(wù)平臺(tái)等。
- 移動(dòng)應(yīng)用和桌面應(yīng)用:適用于各類(lèi)移動(dòng)應(yīng)用和桌面應(yīng)用的數(shù)據(jù)庫(kù)支持。
二、區(qū)別對(duì)比
1、本質(zhì)的區(qū)別
Oracle數(shù)據(jù)庫(kù)是一個(gè)對(duì)象關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS)。它通常被稱(chēng)為Oracle RDBMS或簡(jiǎn)稱(chēng)為Oracle,是一個(gè)收費(fèi)的數(shù)據(jù)庫(kù)。
MySQL是一個(gè)開(kāi)源的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)。它是世界上使用最多的RDBMS,作為服務(wù)器運(yùn)行,提供對(duì)多個(gè)數(shù)據(jù)庫(kù)的多用戶訪問(wèn)。它是一個(gè)開(kāi)源、免費(fèi)的數(shù)據(jù)庫(kù)。
RDBMS和ORDBMS的區(qū)別
標(biāo)準(zhǔn)
- RDBMS
- ORDBMS
縮寫(xiě)含義
- 關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)
- 面型對(duì)象數(shù)據(jù)庫(kù)管理系統(tǒng)
數(shù)據(jù)存儲(chǔ)方式
- 數(shù)據(jù)存儲(chǔ)在實(shí)體里面,以包含特定信息的表格的形式存在
- 數(shù)據(jù)存儲(chǔ)在對(duì)象中
數(shù)據(jù)復(fù)雜性
- 處理比較簡(jiǎn)單的數(shù)據(jù)
- 比 RDBMS 處理更大且更復(fù)雜的數(shù)據(jù)
分組
- 擁有公共定義的實(shí)體集合的不同實(shí)體類(lèi)型
- 用類(lèi)描述擁有公共的關(guān)系、行為和相似的屬性的一組對(duì)象
數(shù)據(jù)處理
- RDBMS 只存儲(chǔ)數(shù)據(jù)
- 存儲(chǔ)數(shù)據(jù)以及方法
主要目標(biāo)
- 數(shù)據(jù)獨(dú)立于應(yīng)用程序
- 數(shù)據(jù)封裝
主鍵
- 主鍵可以明顯的標(biāo)識(shí)表中的對(duì)象
- 對(duì)象標(biāo)識(shí)符 (object identifier, OID) 對(duì)于任何一個(gè)對(duì)象和實(shí)體都是明確且持久的
2、基本操作區(qū)別
(1)、用戶名、端口號(hào)
- Oracle默認(rèn)端口:1521 默認(rèn)用戶:system
- MySQL默認(rèn)端口:3306 默認(rèn)用戶:root
(2)、登錄方式
- 連接MySQL:
mysql -u root -p -- 輸入密碼 -- 查詢(xún)所有數(shù)據(jù)庫(kù) show databases; -- 切換到 "test" 這個(gè)數(shù)據(jù)庫(kù) use test; -- 查詢(xún)?cè)摂?shù)據(jù)庫(kù)所有表 show tables; --修改戶密碼 set password for 用戶名@localhost = password('新密碼')
- 連接Oracle:
sqlplus -- 輸入用戶名 -- 輸入密碼 -- 查詢(xún)?cè)撚脩舻谋? select TABLE_NAME from user_tables; --修改密碼 ALTER USER 用戶名 IDENTIFIED BY 新密碼;
(3)、數(shù)據(jù)庫(kù)安全性
- MySQL使用三個(gè)參數(shù)來(lái)驗(yàn)證用戶,即用戶名,密碼和位置;
- Oracle使用了許多安全功能,如用戶名,密碼,配置文件,本地身份驗(yàn)證,外部身份驗(yàn)證,高級(jí)安全增強(qiáng)功能等。
3、語(yǔ)法區(qū)別
(1)、大小寫(xiě)是否敏感
- MySQL:在 Windows 操作系統(tǒng)下,MySQL 默認(rèn)表名、列名等是不區(qū)分大小寫(xiě)的;在 Linux 等類(lèi) UNIX 系統(tǒng)下,默認(rèn)情況下數(shù)據(jù)庫(kù)名、表名是區(qū)分大小寫(xiě)的,列名和索引名是不區(qū)分大小寫(xiě)的。不過(guò)這些行為可以通過(guò)配置文件(my.cnf)中的參數(shù)來(lái)修改。
- Oracle:表名、列名等通常是不區(qū)分大小寫(xiě)的。但是 Oracle 會(huì)按照創(chuàng)建對(duì)象時(shí)定義的大小寫(xiě)形式來(lái)存儲(chǔ)對(duì)象名稱(chēng),并且在引用對(duì)象時(shí)如果使用了錯(cuò)誤的大小寫(xiě)形式,Oracle 會(huì)自動(dòng)將其轉(zhuǎn)換為正確的形式。
(2)、常用字段類(lèi)型
- MySQL:有多種常用字段類(lèi)型。例如,整數(shù)類(lèi)型包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT;浮點(diǎn)數(shù)類(lèi)型有 FLOAT 和 DOUBLE;字符串類(lèi)型有 CHAR、VARCHAR、TEXT 等;日期時(shí)間類(lèi)型有 DATE、TIME、DATETIME、TIMESTAMP。其中,TIMESTAMP 類(lèi)型會(huì)自動(dòng)更新時(shí)間戳,在數(shù)據(jù)更新操作時(shí)非常有用。
- Oracle:整數(shù)類(lèi)型如 NUMBER(p),p 表示精度,可以用來(lái)表示不同范圍的整數(shù);浮點(diǎn)數(shù)也可以用 NUMBER 類(lèi)型,通過(guò)指定精度和小數(shù)位數(shù)來(lái)實(shí)現(xiàn);字符串類(lèi)型主要有 CHAR、VARCHAR2、CLOB 等;日期時(shí)間類(lèi)型包括 DATE(存儲(chǔ)日期和時(shí)間)、TIMESTAMP(比 DATE 更精確的時(shí)間戳)。Oracle 的 DATE 類(lèi)型存儲(chǔ)了世紀(jì)、年、月、日、時(shí)、分、秒信息。
(3)、時(shí)間日期
- MySQL:可以方便地使用函數(shù)來(lái)操作日期時(shí)間。例如,NOW () 函數(shù)獲取當(dāng)前日期和時(shí)間,CURDATE () 獲取當(dāng)前日期,CURTIME () 獲取當(dāng)前時(shí)間。在日期時(shí)間的計(jì)算方面,可以通過(guò) DATE_ADD () 和 DATE_SUB () 函數(shù)來(lái)進(jìn)行日期時(shí)間的加減操作。
- Oracle:通過(guò) SYSDATE 函數(shù)獲取當(dāng)前日期和時(shí)間,TRUNC (SYSDATE) 獲取當(dāng)前日期部分。日期時(shí)間的計(jì)算可以使用 INTERVAL 關(guān)鍵字,例如 SYSDATE + INTERVAL ‘1’ DAY 表示在當(dāng)前日期基礎(chǔ)上加一天。
(4)、創(chuàng)建表空間 / 數(shù)據(jù)庫(kù)
MySQL:創(chuàng)建數(shù)據(jù)庫(kù)相對(duì)簡(jiǎn)單,使用 CREATE DATABASE 語(yǔ)句。
CREATE DATABASE my_database;
對(duì)于表空間管理,在 MySQL 中可以通過(guò) InnoDB 存儲(chǔ)引擎的文件系統(tǒng)來(lái)管理表空間,通過(guò)設(shè)置參數(shù) innodb_data_file_path 等來(lái)配置表空間文件。
Oracle:創(chuàng)建表空間使用 CREATE TABLESPACE 語(yǔ)句,并且可以指定數(shù)據(jù)文件的位置、大小等多種屬性。
CREATE TABLESPACE my_tablespace DATAFILE 'my_tablespace.dbf' SIZE 100M;
創(chuàng)建數(shù)據(jù)庫(kù)則需要先創(chuàng)建表空間,然后通過(guò)數(shù)據(jù)庫(kù)配置助手(DBCA)或一系列復(fù)雜的 SQL 語(yǔ)句來(lái)創(chuàng)建數(shù)據(jù)庫(kù),包括定義控制文件、日志文件等。
(5)、創(chuàng)建臨時(shí)表
MySQL:可以使用 CREATE TEMPORARY TABLE 語(yǔ)句創(chuàng)建臨時(shí)表。
CREATE TEMPORARY TABLE temp_table (id INT, name VARCHAR (20));
臨時(shí)表只在當(dāng)前會(huì)話中可見(jiàn),當(dāng)會(huì)話結(jié)束時(shí),臨時(shí)表會(huì)自動(dòng)被刪除。
Oracle:同樣可以創(chuàng)建臨時(shí)表,分為會(huì)話級(jí)臨時(shí)表和事務(wù)級(jí)臨時(shí)表。會(huì)話級(jí)臨時(shí)表在整個(gè)會(huì)話期間存在,使用 CREATE GLOBAL TEMPORARY TABLE 語(yǔ)句創(chuàng)建;
CREATE GLOBAL TEMPORARY TABLE temp_table (id NUMBER, name VARCHAR2 (20)) ON COMMIT PRESERVE ROWS;(ON COMMIT PRESERVE ROWS 表示會(huì)話級(jí))
事務(wù)級(jí)臨時(shí)表在事務(wù)結(jié)束時(shí)自動(dòng)刪除,創(chuàng)建時(shí)使用 ON COMMIT DELETE ROWS。
(6)、創(chuàng)建表和插入記錄
MySQL:創(chuàng)建表的基本語(yǔ)法是 CREATE TABLE table_name (column1 datatype, column2 datatype, …)
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR (50), age INT);
插入記錄使用 INSERT INTO 語(yǔ)句,如
INSERT INTO users (name, age) VALUES ('John', 30)
Oracle:創(chuàng)建表的語(yǔ)法類(lèi)似,如
CREATE TABLE employees (employee_id NUMBER PRIMARY KEY, employee_name VARCHAR2 (100), department_id NUMBER);
插入記錄時(shí)
INSERT INTO employees (employee_name, department_id) VALUES ('Alice', 101);
Oracle 還支持通過(guò)子查詢(xún)來(lái)插入數(shù)據(jù),這在復(fù)雜的數(shù)據(jù)加載場(chǎng)景中很有用。
(7)、事務(wù)隔離級(jí)別
MySQL:支持四種事務(wù)隔離級(jí)別,分別是 :
- READ UNCOMMITTED(讀未提交)、READ COMMITTED(讀已提交)、REPEATABLE READ(可重復(fù)讀)SERIALIZABLE(可串行化)。
- 默認(rèn)的隔離級(jí)別是 REPEATABLE READ,在這種隔離級(jí)別下可以保證在同一個(gè)事務(wù)中多次讀取同一數(shù)據(jù)的結(jié)果是一致的。
Oracle:默認(rèn)的事務(wù)隔離級(jí)別是 READ COMMITTED。
- 這意味著一個(gè)事務(wù)只能看到其他事務(wù)已經(jīng)提交的數(shù)據(jù)。
- 和 MySQL 一樣,Oracle 也支持其他隔離級(jí)別,通過(guò)設(shè)置參數(shù)或者在事務(wù)中使用 SET TRANSACTION ISOLATION LEVEL 語(yǔ)句來(lái)改變隔離級(jí)別。
(8)、事務(wù)提交方式
- MySQL:使用 COMMIT 語(yǔ)句來(lái)提交事務(wù),例如 BEGIN; – 開(kāi)始事務(wù),執(zhí)行一系列 SQL 操作,如 INSERT、UPDATE 等,COMMIT; – 提交事務(wù)。也可以使用 ROLLBACK 語(yǔ)句來(lái)回滾事務(wù),即撤銷(xiāo)已經(jīng)執(zhí)行的操作。
- Oracle:事務(wù)提交也是使用 COMMIT 語(yǔ)句,并且事務(wù)控制機(jī)制類(lèi)似。可以在 SQL*Plus 或者其他客戶端工具中通過(guò) SET AUTOCOMMIT ON/OFF 來(lái)設(shè)置自動(dòng)提交模式。當(dāng) AUTOCOMMIT 為 ON 時(shí),每條 SQL 語(yǔ)句執(zhí)行后會(huì)自動(dòng)提交;當(dāng)為 OFF 時(shí),需要手動(dòng)使用 COMMIT 或 ROLLBACK 來(lái)控制事務(wù)。
(9)、分頁(yè)
MySQL:在 MySQL 中,分頁(yè)通常使用 LIMIT 子句。例如,SELECT * FROM table_name LIMIT start, count;,其中 start 是起始行索引(從 0 開(kāi)始),count 是要返回的行數(shù)。這種方式簡(jiǎn)單直接,適用于簡(jiǎn)單的分頁(yè)需求。
Oracle:分頁(yè)相對(duì)復(fù)雜一些。可以使用 ROWNUM 偽列來(lái)實(shí)現(xiàn)分頁(yè)。例如,
SELECT * FROM (SELECT a.*, ROWNUM rnum FROM (SELECT * FROM table_name) a WHERE ROWNUM <= end_row) WHERE rnum >= start_row;
其中 start_row 和 end_row 分別是起始行和結(jié)束行的編號(hào)。
從Oracle 12C開(kāi)始,提供了一種行限制(row limit)的寫(xiě)法,這種寫(xiě)法也可以用于分頁(yè)查詢(xún)。
select * from emp order by sal fetch first 5 rows only; EMPNO ENAME MGR HIREDATE SAL COM DEPTNO ---------- -------------------------------------------------- ---------- --------- ---------- ---------- ---------- 92 Bryana Worswick 80 03-JUL-18 2504 1 10 99 Rufus McDermott-Row 63 01-MAR-02 2512 61 10 36 Jacenta Joust 71 31-JAN-05 2515 9 30 2 Blisse Adamoli 65 12-APR-14 2517 67 20 98 Simona Shropshire 52 16-AUG-08 2518 24 88
(10)、查詢(xún)語(yǔ)句
MySQL:基本的查詢(xún)語(yǔ)法是
SELECT column1, column2, … FROM table_name WHERE condition;
支持多種連接查詢(xún),如內(nèi)連接(INNER JOIN)、左連接(LEFT JOIN)、右連接(RIGHT JOIN)等。例如
SELECT * FROM table1 INNER JOIN table2 ON table1.id = table2.id;
Oracle:查詢(xún)語(yǔ)法相似,如
SELECT column1, column2, … FROM table_name WHERE condition;
在連接查詢(xún)方面,Oracle 也支持標(biāo)準(zhǔn)的 SQL 連接語(yǔ)法,同時(shí)還有自己獨(dú)特的語(yǔ)法,如使用 “(+)” 來(lái)表示外連接,不過(guò)這種語(yǔ)法現(xiàn)在已經(jīng)不推薦使用,推薦使用標(biāo)準(zhǔn)的 JOIN 語(yǔ)法。
(11)、id 遞增的處理
MySQL:可以在創(chuàng)建表時(shí)使用 AUTO_INCREMENT 關(guān)鍵字來(lái)定義一個(gè)自動(dòng)遞增的主鍵列。例如
CREATE TABLE products (id INT AUTO_INCREMENT PRIMARY KEY, product_name VARCHAR (100));
每次插入新記錄時(shí),不需要指定 id 的值,MySQL 會(huì)自動(dòng)為其分配一個(gè)唯一遞增的值。
Oracle:沒(méi)有像 MySQL 那樣的 AUTO_INCREMENT 關(guān)鍵字。通常使用序列(SEQUENCE)來(lái)實(shí)現(xiàn)類(lèi)似的功能。首先創(chuàng)建一個(gè)序列,如
CREATE SEQUENCE product_seq START WITH 1 INCREMENT BY 1;
然后在插入記錄時(shí),通過(guò)調(diào)用序列的 NEXTVAL 屬性來(lái)獲取下一個(gè)遞增的值插入到 id 列中,例如
INSERT INTO products (id, product_name) VALUES (product_seq.NEXTVAL, 'Product A');
(12)、null 值處理
MySQL:在查詢(xún)中,可以使用 IS NULL 或者 IS NOT NULL 來(lái)判斷列值是否為 null。例如,
SELECT * FROM table_name WHERE column_name IS NULL;
在函數(shù)使用中,一些函數(shù)在遇到 null 值時(shí)會(huì)返回特定的結(jié)果,如 SUM 函數(shù)在計(jì)算包含 null 值的列時(shí)會(huì)忽略 null 值。
Oracle:同樣使用 IS NULL 和 IS NOT NULL 來(lái)判斷 null 值。在函數(shù)處理方面,Oracle 的函數(shù)對(duì) null 值的處理方式也有自己的規(guī)則,例如 NVL 函數(shù)可以將 null 值轉(zhuǎn)換為指定的值,NVL (column_name, 0) 會(huì)將 column_name 中的 null 值轉(zhuǎn)換為 0。
(13)、小數(shù)格式化
- MySQL:可以使用 ROUND 函數(shù)來(lái)對(duì)小數(shù)進(jìn)行四舍五入,例如 ROUND (number, decimal_places),其中 number 是要格式化的數(shù)字,decimal_places 是要保留的小數(shù)位數(shù)。另外,也可以通過(guò) CONVERT 函數(shù)來(lái)轉(zhuǎn)換數(shù)據(jù)類(lèi)型,從而實(shí)現(xiàn)一定程度的小數(shù)格式化。
- Oracle:也有 ROUND 函數(shù),使用方式類(lèi)似。同時(shí),Oracle 還可以使用 TO_CHAR 函數(shù)將數(shù)字轉(zhuǎn)換為字符格式來(lái)進(jìn)行更靈活的格式化,例如 TO_CHAR (number, ‘FM9999.99’) 可以將數(shù)字格式化為指定的小數(shù)格式,其中 ‘FM’ 表示去除前面多余的空格。
(14)、多條件判斷
MySQL:在 WHERE 子句中可以使用 AND、OR 邏輯運(yùn)算符來(lái)組合多個(gè)條件。例如,
SELECT * FROM table_name WHERE condition1 AND condition2;
也可以使用 CASE 語(yǔ)句在查詢(xún)結(jié)果中進(jìn)行多條件判斷,例如
SELECT column_name, CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 ELSE value3 END AS new_column FROM table_name;
Oracle:邏輯運(yùn)算符 AND 和 OR 的使用方式與 MySQL 相同。Oracle 也支持 CASE 語(yǔ)句,并且還支持 DECODE 函數(shù)進(jìn)行簡(jiǎn)單的多條件判斷,例如
SELECT column_name, DECODE (condition, value1, result1, value2, result2, default_result) AS new_column FROM table_name;
(15)、單引號(hào)的處理
MySQL:在 SQL 語(yǔ)句中,字符串常量通常需要用單引號(hào)括起來(lái)。如果字符串本身包含單引號(hào),需要使用反斜杠()進(jìn)行轉(zhuǎn)義,例如
INSERT INTO table_name (column_name) VALUES ('It's a sample');
Oracle:同樣,字符串常量用單引號(hào)括起來(lái)。如果有單引號(hào),需要使用兩個(gè)單引號(hào)來(lái)表示一個(gè)單引號(hào),例如
INSERT INTO table_name (column_name) VALUES ('It''s a sample');
(16)、模糊查詢(xún)
MySQL:使用 LIKE 關(guān)鍵字進(jìn)行模糊查詢(xún),支持通配符 “%”(表示任意字符序列)和 “_”(表示任意單個(gè)字符)。例如,
SELECT * FROM table_name WHERE column_name LIKE '% keyword%';
Oracle:也使用 LIKE 關(guān)鍵字進(jìn)行模糊查詢(xún),通配符的使用方法與 MySQL 相同。此外,Oracle 還提供了一些高級(jí)的文本搜索功能,如使用 CONTAINS 函數(shù)(需要安裝并配置 Oracle Text 組件)來(lái)進(jìn)行更復(fù)雜的文本搜索。
(17)、時(shí)間相減
oracle對(duì)于計(jì)算前7天,時(shí)間減7就行了,計(jì)算前1個(gè)小時(shí),時(shí)間減1/24就行了,加法同理:
select TO_DATE('2023-03-28 15:51:20', 'yyyy-mm-dd hh24:mi:ss') -7 from dual; -- 計(jì)算前7天,結(jié)果:2023-03-21 15:51:20 select TO_DATE('2023-03-28 15:51:20', 'yyyy-mm-dd hh24:mi:ss') -1/24 from dual; -- 計(jì)算前1個(gè)小時(shí),結(jié)果:2023-03-28 14:51:20
mysql計(jì)算前7天,或者前1個(gè)小時(shí),需要用不同的關(guān)鍵字:
select date_sub('2023-03-28 15:51:20' ,interval 7 day); -- 計(jì)算前7天,結(jié)果:2023-03-21 15:51:20 select date_sub('2023-03-28 15:51:20' ,interval 1 hour); -- 計(jì)算前1個(gè)小時(shí),結(jié)果:2023-03-28 14:51:20
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
mysql5.7.21啟動(dòng)異常的修復(fù)方法
這篇文章主要為大家詳細(xì)介紹了mysql5.7.21啟動(dòng)異常的修復(fù)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04innodb如何巧妙的實(shí)現(xiàn)事務(wù)隔離級(jí)別詳解
隔離是ACID(Atomicity,Consistency,Isolation,Durability)的重要部分,下面這篇文章主要給大家介紹了關(guān)于innodb如何巧妙的實(shí)現(xiàn)事務(wù)隔離級(jí)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-11-11MySQL?中MATCH?全文搜索關(guān)鍵字示例詳解
這篇文章主要介紹了MySQL?中MATCH?全文搜索關(guān)鍵字詳解,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-09-09MySQL 5.6.51 解壓版(zip版)安裝配置圖文方法
這兩天剛試用了一下MySQL5.6.51,感覺(jué)還不錯(cuò),有兄弟戲稱(chēng)是一個(gè)高富帥版本?,F(xiàn)將MySQL5.6.51 zip解壓版本的安裝配置過(guò)程記錄如下,希望能給需要安裝該版本的朋友一點(diǎn)參考作用2015-08-08SQL中日期與字符串互相轉(zhuǎn)換操作實(shí)例
我們經(jīng)常出于某種目的需要使用各種各樣的日期格式,當(dāng)然我們可以使用字符串操作來(lái)構(gòu)造各種日期格式,下面這篇文章主要給大家介紹了關(guān)于SQL中日期與字符串互相轉(zhuǎn)換操作的相關(guān)資料,需要的朋友可以參考下2022-10-10MySQL遠(yuǎn)程訪問(wèn)設(shè)置終極方法
這篇文章主要介紹了MySQL遠(yuǎn)程訪問(wèn)設(shè)置終極方法,本文總結(jié)了多種設(shè)置方法和技巧,是解決遠(yuǎn)程訪問(wèn)的終極解決方案,需要的朋友可以參考下2014-12-12