
每天分享技术栈,开发工具等
特性 | Oracle | PostgreSQL | MySQL |
|---|---|---|---|
类型 | 商业数据库(企业级) | 开源数据库(企业级扩展性强) | 开源数据库(轻量级) |
适用场景 | 大型企业、金融、高并发事务处理 | 复杂查询、地理数据、JSON支持 | Web应用、中小型系统 |
事务支持 | ACID,强一致性 | ACID,支持高级事务 | ACID(InnoDB引擎) |
存储引擎 | 单一存储引擎 | 单一存储引擎(可扩展插件) | 多引擎(InnoDB、MyISAM等) |
开源协议 | 商业授权 | MIT许可证 | GPL(部分商业版) |
安装:
验证安装:
sqlCopy Code
sqlplus sys as sysdba -- 登录
SELECT * FROM v$version; -- 查看版本
安装:
postgres用户,使用psql命令行工具。验证安装:
bashCopy Code
psql -U postgres -- 登录
SELECT version(); -- 查看版本
安装:
brew install mysql验证安装:
bashCopy Code
mysql -u root -p -- 登录
SELECT VERSION(); -- 查看版本
sqlCopy Code
-- Oracle
CREATETABLE student (
id NUMBER() PRIMARY KEY,
name VARCHAR2() NOTNULL,
birthdate DATEDEFAULT SYSDATE
);
-- PostgreSQL
CREATETABLE student (
id SERIAL PRIMARY KEY, -- 自增主键
name VARCHAR() NOTNULL,
birthdate TIMESTAMPDEFAULT NOW()
);
-- MySQL
CREATETABLE student (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR() NOTNULL,
birthdate DATETIME DEFAULTCURRENT_TIMESTAMP
);
区别:
CREATE SEQUENCE),PostgreSQL用SERIAL,MySQL用AUTO_INCREMENT。SYSDATE,PostgreSQL用NOW(),MySQL用CURRENT_TIMESTAMP。sqlCopy Code
-- Oracle(需手动指定自增ID)
INSERT INTO student (id, name) VALUES (, '张三');
-- PostgreSQL(自动生成ID)
INSERT INTO student (name) VALUES ('李四');
-- MySQL(自动生成ID)
INSERT INTO student (name) VALUES ('王五');
sqlCopy Code
-- Oracle
SELECT*FROM student WHERE id =;
-- PostgreSQL(不区分大小写查询)
SELECT*FROM student WHERE name ILIKE '李%';
-- MySQL(区分大小写查询)
SELECT*FROM student WHERE name LIKE'王%';
区别:
ILIKE,MySQL仅支持LIKE(默认区分大小写)。功能 | Oracle | PostgreSQL | MySQL |
|---|---|---|---|
事务隔离级别 | 支持所有SQL标准级别 | 支持所有级别 | 默认REPEATABLE-READ |
JSON支持 | 12c+版本支持 | 原生JSON类型 | 5.7+版本支持JSON |
地理数据 | 需安装Spatial插件 | 原生支持PostGIS | 需第三方扩展 |
存储过程 | PL/SQL | PL/pgSQL | 语法类似SQL |
student表。VARCHAR2长度限制)。通过第一天的学习,你已经掌握了三种数据库的基础操作和核心差异。明天我们将深入SQL高级查询(如JOIN、子查询)的对比!