【SQL开发者必备】四大数据库语法对比:MySQL、PostgreSQL、Oracle、SQL Server17认证网

正规官方授权
更专业・更权威

【SQL开发者必备】四大数据库语法对比:MySQL、PostgreSQL、Oracle、SQL Server

一、基本情况
数据库
所属公司
开源协议
使用场景
核心特点
MySQL
Oracle
部分开源
互联网应用、Web
轻量快速,社区生态强大
PostgreSQL
开源社区
完全开源
GIS系统、复杂分析
高度可扩展,支持JSON/XML
Oracle
Oracle
商业
金融/电信级系统
高可用性,功能最全面
SQL server
Microsoft
商业
Windows生态企业
深度集成.NET,BI工具强
二、字段类型
1. 整数类型
MySQL: INT、TINYINTPostgreSQL: INTEGERBIGINTOracle: NUMBER(10) (无独立INT类型)SQL Server: INTSMALLINT
2. 字符串类型
MySQL: VARCHAR(255)、TEXTPostgreSQL: VARCHAR、TEXT (不限长度!)Oracle: VARCHAR2(4000)SQL Server: NVARCHAR(MAX)
3. 特色类型
PostgreSQL: JSONB、几何类型(GIS专用)Oracle: CLOB(超大文本)、BLOBSQL Server: XML、HIERARCHYID
三、查询语法
1. 自增字段实现
-- MySQLCREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY);
-- PostgreSQLCREATE TABLE users (id SERIAL PRIMARY KEY);-- 或使用 GENERATED BY DEFAULT AS IDENTITYCREATE TABLE users (    id INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY);-- 或更严格的 GENERATED ALWAYS AS IDENTITYCREATE TABLE users (    id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY);
-- OracleCREATE SEQUENCE user_seq;CREATE TABLE users (id NUMBER DEFAULT user_seq.nextval PRIMARY KEY);
-- SQL ServerCREATE TABLE users (id INT IDENTITY(1,1PRIMARY KEY);
2. 分页查询
-- MySQL/PostgreSQLSELECT * FROM table LIMIT 10 OFFSET 20;
-- OracleSELECT * FROM (  SELECT t.*, ROWNUM rn FROM (    SELECT * FROM table ORDER BY id  ) t WHERE ROWNUM <= 30WHERE rn > 20;
-- SQL ServerSELECT * FROM table ORDER BY id OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
四、字符串操作
1. 字符串拼接
-- MySQLSELECT CONCAT(name, '来自', city); -- CONCAT遇到NULL时会返回NULL!
-- PostgreSQL/OracleSELECT name || '来自' || city;
-- SQL ServerSELECT name + '来自' + city;
2. 字符串截取
-- MySQL/PostgreSQL/SQL ServerSELECT SUBSTRING('HelloWorld'25); -- 输出 elloW
-- OracleSELECT SUBSTR('HelloWorld'25FROM dual; -- 输出 ellow
个人观点,仅供参考-转自技术认识世界-WYL

想了解更多干货,可通过下方扫码关注

可扫码添加上智启元官方客服微信👇

未经允许不得转载:17认证网 » 【SQL开发者必备】四大数据库语法对比:MySQL、PostgreSQL、Oracle、SQL Server
分享到:0

评论已关闭。

400-663-6632
咨询老师
咨询老师
咨询老师