OracleMysqlSqlServer函数区别
浅谈sqlserver和mysql存储过程、函数的区别
浅谈sqlserver和mysql存储过程、函数的区别其实我不太喜欢搞数据库,平常也就是⽤⽤select、insert。
这次公司要把数据库从sqlserver迁到mysql,我也试着改了⼏个存储过程,在此总结。
⾸先吐槽⼀句,sqlserver和mysql差别还真⼤!区别⼀:存储过程⼊参USE [LearningReport_de]GOSET ANSI_NULLS ONGO DELIMITER $$SET QUOTED_IDENTIFIER ONGO USE `LearningReport_de`$$ALTER PROCEDURE [dbo].[wsGetLL1] DROP PROCEDURE IF EXISTS `wsGetLL1`$$@Child_id bigint,@Part_number nchar(17) CREATE PROCEDURE `wsGetLL1`(IN Child_id BIGINT(19), IN Part_number NCHAR(17)BEGINASBEGIN END$$END DELIMITER ;这是存储过程的结构,sqlserver中全都是GO 什么的,这些在mysql都没有。
但是需要注意的的是mysql的默认结束符是 “;”,所以要重新修改结束符。
存储过程可以传⼊参数,但是sqlserver和mysql的定义形式完全不⼀样。
sqlserver中的⼊参在begin之前,⽽mysql的⼊参和C语⾔类似,函数名后⾯加个括号,⽽且⽤IN /OUT 来标识传⼊和传出,在这个地⽅就可以看得出来,sqlserver和mysql定义变量的⽅法也不同,后⾯会讲到。
区别⼆:定义变量DECLARE @Product_number bigint DECLARE Product_number BIGINT;DECLARE @sSQL nvarchar(1000) DECLARE sSQL NVARCHAR(1000);DECLARE @Country_index nchar(2) DECLARE Country_index NCHAR(2);DECLARE @LL0_table nvarchar(50) DECLARE LL0_table NVARCHAR(50);DECLARE @LL1_table nvarchar(50) DECLARE LL1_table NVARCHAR(50);sqlserver中的变量都是⽤@开头的,以后使⽤也需要@,⽽mysql没有,我觉得这点sqlserver还是不错,以为后⾯很多地⽅变量和列名会混乱。
数据库管理系统比较MySQLvsOraclevsSQLServer
数据库管理系统比较MySQLvsOraclevsSQLServer 数据库管理系统比较:MySQL vs Oracle vs SQL Server引言:数据库管理系统是现代信息技术领域中不可或缺的一环。
随着数据量的急剧增加和数据库应用的广泛应用,选择适合自己需求的数据库管理系统变得至关重要。
在本文中,我们将比较三种常见的数据库管理系统:MySQL、Oracle和SQL Server。
通过对比它们的性能、功能、可扩展性和使用成本,为读者提供一个更好地了解和选择的依据。
一、性能比较在数据库管理系统中,性能是一个至关重要的因素。
下面将对MySQL、Oracle和SQL Server的性能进行比较。
1.1 MySQL性能MySQL是一个轻量级的开源数据库管理系统,以其高性能而闻名。
它采用多线程处理机制和高效的索引算法,能够处理大规模的数据访问和高并发请求。
此外,MySQL还支持垂直和水平扩展,可根据实际需求进行灵活配置和调整。
因此,在对于大多数中小型应用来说,MySQL提供了相对较好的性能。
1.2 Oracle性能Oracle是一个功能强大且成熟的商业数据库管理系统。
它具有出色的性能,并且能够处理大规模的复杂数据模型。
Oracle采用了先进的事务处理机制和高效的查询优化算法,使其在处理高并发访问和复杂查询时具有出色的性能表现。
然而,Oracle的性能和功能也伴随着更高的硬件要求和许可成本。
1.3 SQL Server性能SQL Server是由微软公司开发的关系型数据库管理系统。
它在处理大规模数据时表现出色,并且支持高并发访问和复杂查询。
SQL Server 采用了先进的内存管理和缓存技术,以提高查询速度和响应时间。
此外,SQL Server还具有良好的稳定性和可靠性,适用于中小型企业的应用场景。
综合比较,MySQL适用于中小型应用,对性能要求较高且成本敏感的场景;Oracle适用于大规模企业级应用,对功能和可靠性要求较高的场景;SQL Server适用于中小型企业应用,对性能和稳定性要求较高的场景。
SQLServer与oracle区别总结
SQLServer与oracle区别总结●开发语法A.SQL 语法两者的SQL语法基本上是相同的,只是一些细节方面的问题一:表的管理:修改表的结构,如增加,删除列,創建表修改表1.修改表的列的數據類型,大小的定義不同,如下面修改數據類型。
Ms sql是ALTER TABLE table_name ALTER COLUMN col DECIMAL (5, 2)Oracle是 Alter TABLE table_name modify(col decimal(5,2))2.增加和刪除表的列,兩者是相同的Alter tabe table_name add(col definition)Alter tabe table_name drop column col_name3 .Oracle如果不要用某列,然後又不想刪除,就可以将某个列标记为未用Alter tabe table_name set unused(tel_no).创建临时表Oracle 的語法是:Create global temporary table aa(col number) on commit preserve rows;临时表只在用户会话时存在的表,或其数据在用户事务处理期间可持续存在的表,创建临时表时可以指定该表是否应当在用户会话期间持续存在(使用on commit preserve rows)On commit delete rows 表示事务处理完成后删除它的行Ms sql的語法是:Select * into #temptable from existedtable二查询方面:1.查表的前N行记录oracle 是用rownum 如select * from table_name where rownum<nMs sql 是用top 如select top n * from table_name2.查詢表的結構Orace 可以通過desc来查看表的结构语法是:desc table_name或者使用数据字典表user_tab_coumns也可以查看到Select column_name,data_type from user_tab_coumnsWhere table_name=''Ms sql可以通過一些系統的存儲過程來看表的結構語法是:exec sp_help table_name3.将一个表的数据添加到另外一个表中a.新表存在前提下:兩者語法是一樣的,如insert into newtable(col1)select col1 from old_tableb.新表不存在前提下,可以用oracle 可以用Create tabe new _table_name as select * from old_tablems sql 可以用 Select * into new_table from old_table三操作符1.連接操作符Oracle是‘||’; Ms sql是‘+’2. Oracle的比较操作符中不等于除了'<>'之外,还有一个 '!='3. 算术操作符,都是+-*/;逻辑操作符都是and,not,or(相同點)4. oracle集合操作符除了union,union all之外还加入intersect,minusIntersect是仅返回两个查询都有行,minus返回第一个查询有第二个查询没有的行四函數1.轉換函數Oracle 中有to_char(),to_date(),to_number()Ms sql 中有cast,convert</n2.系统日期:Oracle: sysdateMs sql: getdate()如Select sysdate from dual 一定要from子句Select getdate() 不一定要from子句3.Decode函数相当if else,或者ms 中的case语句语法是decode(value,if1,then1,if2,then2....)如decode(col1,'1','true','0','fase')4.常规函数Nvl 语法是NVL(EXP1,EXP2) 表示如果ex1为空则返回ex2Nvl2 语法是nvl(exp1,exp2,exp3)表示如果ex1为空,则返回ex3,否则返回ex2Nullif 语法是nullif(ex1,ex2) 如果这两个表达式相等则返回空coalesce语法是coalesce(ex1,ex2,....exn)返回第一个非空表达式5.分組函數Oracle 中的分組函數Rollup,cubeRollup返回的结果集包含分组行和小计行,cube产生交叉报表如:Select a,b,sum(c) from tabname group by rollup(a,b)Select a,b,sum(c) from tabname group by cube(a,b)Ms sql中的分組函數 compute 和 compute byCompute子句为行聚集函数生成汇总值,该汇总值做为一个附加的行显示在结果集中。
SQLserver、Oracle、Mysql语法与用法对比(over)
alter table表名
add constraint唯一约束名unique (列名)
完全一样
altertable表名addunique(列名)
添加默认约束
alter table表名
add constraint default (值) for列名
完全一样
添加检查约束
alter table表名
add constraint check (列名> 10)
完全一样
添加外键约束
alter table子表
add constraiห้องสมุดไป่ตู้t外键约束名foreign key
(子表的列名) references主表(列名)
on update cascade / on update action
注意:
默认和加on update action表示更新受限
alter table表名Add列名数据库类型
删除表中一列
alter table表名drop column列名
alter table表名drop column列名
修改表现有列
alter table表名alter column列名
新数据库类型大小
alter table表明modify(列名数据类型)
删除约束
加on update cascade表示更新不受限,多项
操作时用逗号隔开
完全一样
添加索引约束
altertable表名addindex索引名(列名)
添加普通索引:
create index索引名ON表名(列名)
添加唯一索引:
create unique索引名ON表名(列名)
删除索引
Oracle和SQLServer的主要区别
序号 Oracle 1.Oracle的参数文件init.ora是可调的,既我们可以根据数据库的规 模调整Oracle对系统资源的使用情况,以达到最合理的资源分配,让 Oracle达到最佳的性能。因此Oracle的性能优势体现在它的多用户 上,比较适用于访问量和并发用户数大的大型应用系统上。 2.游标是以提高速度全部统一的单项游标,可以允许多用户异步读 取,而且声明比较简单,就一句declare cursor游标名 is select 语句就可以了。 数据库性能 3.Oracle以块为最小存储单位,以区为单位分配空间,用户可以根据 需要自己定义块的大小,且区可以按等额或递增进行分配,这可以大 大减少系统的I/O操作提高数据库的性能。 4.ORACLE中用户可以根据数据需要在创建块时定义填充因子(空闲空 间的百分比)和复用因子(当块的存储数据所占的空间下降到这个百分 比之下时,块才重新标记为可用)。用户可以根据记录变化频率和数 据量的大小设置合适的填充因子和空闲因子。 Oracle的安全可靠性更高: 1.Oracle的数据字典和真实数据是分开存放的,不同的数据分别放在 不同的表空间,而且基表(存储系统参数信息)是加密存储,任何人都 无法访问,只能通过用户可视视图查看。安全性高。 2.在ORACLE里默认只有三个系统用户,ORACLE只能通过注册用户登入 安全性 。 3.Oracle的控制文件记录了数据库文件的物理位置和有效性,在每次 打开Oracle系统都将自动对数据进行验证,查看其有效性,防止数据 的丢失,这体现了Oracle对数据管理的严密性。 4.ORACLE在创建表时用户可以精确定义数据存放的表空间,甚至可以 把一张表分开存放在多个表空间中,这样可以将数据量庞大的表按某 Oralce可以很好地支持Windows、Linux等多种操作系统,跨平台性比 跨平台 较好 Oracle的存储结构是由块、区、段组成,可扩展性好,空间利用率 高,但是操作比较复杂: 1.ORACLE里有两个块参数PCTFREE(填充因子)和PCTUSED(复用因子), 块的大小可设置,这样可降低数据行连接与行迁移的可能性。 2.连续的块组成区,区的分配可以是等额的也可以是自增长的,这样 存储结构的不同 可以减少空间分配次数。 3.Oracle的表可以分为多个段,段由多个区组成,每个段可指定分配 在哪个表空间里,这样大大降低了磁盘争用的可能性。 4.Oracle的数据字典和真实数据是分开存放的,不同的数据分别放在 不同的表空间,而且基表(存储系统参数信息)是加密存储,任何人都 无法访问。只能通过用户可视视图查看。 1.ORACLE中容错类型有三种,分别是预定义错误、非预定义错误、用 户自定义,其中在自定义错误中SQLCODE 错误号、SQLERRM错误描述 是SQL Server没有的。 容错机制 2.Oracle提供了健全的错误机制,用户可以轻松的获得错误位置和错 误原因而加以修改。用户还可以自己定义所须的错误类型,用以检查 逻辑错误。 备份机制 ORACLE提供了7种备份机制,具有联机备份功能 Oracle的日志默认有3个,先写入1号日志,满了后再写入2号日志,2 号满了再写入3号日志,3号满了后Oracle将自动备分1号日志的内 容,然后清空后写入新的日志信息,且Oracle的日志有多路复用功 能,我们可以为日志创建多个镜像,把相同的日志信息同时写入多个 日志文件中,这样可以防止磁盘损坏造成的数据丢失。
OracleMysqlSqlServer函数区别
OracleMysqlSqlServer函数区别OracleMysqlSqlServer函数区别Oracle/Mysql/SqlServer函数区别文章分类:数据库Sql代码1.类型转换--Oracleselect to_number('123') from dual; --123;select to_char(33) from dual; --33;select to_date('2004-11-27','yyyy/mm/dd') from dual;--2004-11-27--Mysqlselect cast('123' as signed integer); --123select cast(33 as char(2)); --33;select to_days('2000-01-01'); --730485--SqlServerselect cast('123' as decimal(30,2)); --123.00select cast(33 as char(2)); --33;select convert(varchar(12) , getdate(), 120)2.四舍五入函数区别--Oracleselect round(12.86*10)/10 from dual; --12.9--Mysqlselect format(12.89,1); --12.9--SqlServerselect round(12.89,1); --12.93.日期时间函数--Oracleselect sysdate from dual; --日期时间--Mysqlselect sysdate(); --日期时间select current_date(); --日期--SqlServerselect getdate(); --日期时间select datediff(day,'2010-01-01',cast(getdate() as varchar(10)));--日期相差天数4.Decode函数--Oracleselect decode(sign(12),1,1,0,0,-1) from dual;--1--Mysql/SqlServerselect case when sign(12)=1 then 1 when sign(12)=0 then 0 else -1 end;--15.判空函数--Oracleselect nvl(1,0) from dual; --1--Mysqlselect ifnull(1,0); --1--SqlServerselect isnull(1,0); --16.字符串连接函数--Oracleselect '1'||'2' from dual; --12select concat('1','2'); --12--Mysqlselect concat('1','2'); --12--SqlServerselect '1'+'2'; --127.记录限制函数--Oracleselect 1 from dual where rownum <= 10;-- Oracle 分页算法一select * from (select page.*,rownum rn from (select * from help) page-- 20 = (currentPage-1) * pageSize + pageSizewhere rownum <= 20)-- 10 = (currentPage-1) * pageSizewhere rn > 10;-- Oralce 分页算法二-- 20 = (currentPage-1) * pageSize + pageSizeselect * from help where rownum<=20minus-- 10 = (currentPage-1) * pageSizeselect * from help where rownum<=10;--Mysqlselect 1 from dual limit 10;select * from dual limit 10,20--SqlServerselect top 10 18.字符串截取函数--Oracleselect substr('12345',1,3) from dual;--Mysql/SqlServerselect substring('12345',1,3);8.把多行转换成一合并列--Oracleselect wm_concat(列名) from dual; --多行记录转换成一列之间用,分割--Mysql/SqlServerselect group_concat(列名);SQLServer和Oracle的常用函数对比1.绝对值S:select abs(-1) valueO:select abs(-1) value from dual2.取整(大)S:select ceiling(-1.001) valueO:select ceil(-1.001) value from dual3.取整(小)S:select floor(-1.001) valueO:select floor(-1.001) value from dual4.取整(截取)S:select cast(-1.002 as int) valueO:select trunc(-1.002) value from dual5.四舍五入S:select round(1.23456,4) value 1.23460O:select round(1.23456,4) value from dual 1.2346 6.e为底的幂S:select Exp(1) value 2.7182818284590451O:select Exp(1) value from dual 2.718281827.取e为底的对数S:select log(2.7182818284590451) value 1O:select ln(2.7182818284590451) value from dual; 1 8.取10为底对数S:select log10(10) value 1O:select log(10,10) value from dual; 19.取平方S:select SQUARE(4) value 16O:select power(4,2) value from dual 1610.取平方根S:select SQRT(4) value 2O:select SQRT(4) value from dual 211.求任意数为底的幂S:select power(3,4) value 81O:select power(3,4) value from dual 8112.取随机数S:select rand() valueO:select sys.dbms_random.value(0,1) value from dual;13.取符号S:select sign(-8) value -1O:select sign(-8) value from dual -1----------数学函数14.圆周率S:SELECT PI() value 3.1415926535897931O:不知道15.sin,cos,tan 参数都以弧度为单位例如:select sin(PI()/2) value 得到1(SQLServer)16.Asin,Acos,Atan,Atan2 返回弧度17.弧度角度互换(SQLServer,Oracle不知道) DEGREES:弧度-〉角度RADIANS:角度-〉弧度---------数值间比较18. 求集合最大值S:select max(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select greatest(1,-2,4,3) value from dual19. 求集合最小值S:select min(value) value from(select 1 valueunionselect -2 valueunionselect 4 valueunionselect 3 value)aO:select least(1,-2,4,3) value from dual20.如何处理null值(F2中的null以10代替)S:select F1,IsNull(F2,10) value from TblO:select F1,nvl(F2,10) value from Tbl--------数值间比较21.求字符序号S:select ascii('a') valueO:select ascii('a') value from dual22.从序号求字符S:select char(97) valueO:select chr(97) value from dual23.连接S:select '11'+'22'+'33' valueO:select CONCAT('11','22')||33 value from dual 23.子串位置--返回3S:select CHARINDEX('s','sdsq',2) valueO:select INSTR('sdsq','s',2) value from dual 23.模糊子串的位置--返回2,参数去掉中间%则返回7 S:select patindex('%d%q%','sdsfasdqe') valueO:oracle没发现,但是instr可以通过第四霾问刂瞥鱿执问?BR> select INSTR('sdsfasdqe','sd',1,2) value from dual 返回624.求子串S:select substring('abcd',2,2) valueO:select substr('abcd',2,2) value from dual25.子串代替返回aijklmnefS:SELECT STUFF('abcdef', 2, 3, 'ijklmn') valueO:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual26.子串全部替换S:没发现O:select Translate('fasdbfasegas','fa','我' ) value from dual27.长度S:len,datalengthO:length28.大小写转换lower,upper29.单词首字母大写S:没发现O:select INITCAP('abcd dsaf df') value from dual30.左补空格(LPAD的第一个参数为空格则同space函数)S:select space(10)+'abcd' valueO:select LPAD('abcd',14) value from dual31.右补空格(RPAD的第一个参数为空格则同space函数)S:select 'abcd'+space(10) valueO:select RPAD('abcd',14) value from dual32.删除空格S:ltrim,rtrimO:ltrim,rtrim,trim33. 重复字符串S:select REPLICATE('abcd',2) valueO:没发现34.发音相似性比较(这两个单词返回值一样,发音相同)S:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe')O:SELECT SOUNDEX ('Smith'), SOUNDEX ('Smythe') from dual SQLServer中用SELECT DIFFERENCE('Smithers', 'Smythers') 比较soundex的差返回0-4,4为同音,1最高--------------日期函数35.系统时间S:select getdate() valueO:select sysdate value from dual36.前后几日直接与整数相加减37.求日期S:select convert(char(10),getdate(),20) valueO:select trunc(sysdate) value from dualselect to_char(sysdate,'yyyy-mm-dd') value from dual38.求时间S:select convert(char(8),getdate(),108) valueO:select to_char(sysdate,'hh24:mm:ss') value from dual39.取日期时间的其他部分S:DATEPART 和DATENAME 函数(第一个参数决定)O:to_char函数第二个参数决定参数---------------------------------下表需要补充year yy, yyyyquarter qq, q (季度)month mm, m (m O无效)dayofyear dy, y (O表星期)day dd, d (d O无效)week wk, ww (wk O无效)weekday dw (O不清楚)Hour hh,hh12,hh24 (hh12,hh24 S无效)minute mi, n (n O无效)second ss, s (s O无效)millisecond ms (O无效)----------------------------------------------40.当月最后一天S:不知道O:select LAST_DAY(sysdate) value from dual41.本星期的某一天(比如星期日)S:不知道O:SELECT Next_day(sysdate,7) vaule FROM DUAL;42.字符串转时间S:可以直接转或者select cast('2004-09-08'as datetime) value O:SELECT To_date('2004-01-05 22:09:38','yyyy-mm-dd hh24-mi-ss') vaule FROM DUAL;43.求两日期某一部分的差(比如秒)S:select datediff(ss,getdate(),getdate()+12.3) valueO:直接用两个日期相减(比如d1-d2=12.3)SELECT (d1-d2)*24*60*60 vaule FROM DUAL;44.根据差值求新的日期(比如分钟)S:select dateadd(mi,8,getdate()) valueO:SELECT sysdate+8/60/24 vaule FROM DUAL;45.求不同时区时间S:不知道O:SELECT New_time(sysdate,'ydt','gmt' ) vaule FROM DUAL;-----时区参数,北京在东8区应该是Ydt-------AST ADT 大西洋标准时间BST BDT 白令海标准时间CST CDT 中部标准时间EST EDT 东部标准时间GMT 格林尼治标准时间HST HDT 阿拉斯加—夏威夷标准时间MST MDT 山区标准时间NST 纽芬兰标准时间PST PDT太平洋标准时间YST YDT YUKON标准时间。
SQLServer,MySQL,Oracle三者的区别
SQLServer,MySQL,Oracle三者的区别目录1 Oracle、Sql Server、MySql简介1.1 Oracle1.2 SQL Server1.3 MySQL2 Oracle和MySQL的主要区别2.1 客户端和命令窗口2.2 市场占有率及其他2.3 Oracle也与MySQL操作上的一些区别2.3.1 组函数用法规则2.3.2 自动增长的数据类型处理2.3.3 主键2.3.4 单引号的处理2.3.5 翻页的SQL语句的处理2.3.6 长字符串的处理2.3.7 日期字段的处理2.3.8 空字符的处理2.3.9 字符串的模糊比较1 Oracle、Sql Server、MySql简介返回1.1 OracleOracle 能在所有主流平台上运行(包括Windows)。
完全支持所有的工业标准。
采用完全开放策略。
可以使客户选择最适合的解决方案。
对开发商全力支持,Oracle并行服务器通过使一组结点共享同一簇中的工作来扩展Windows NT的能力,提供高可用性和高伸缩性的簇的解决方案。
如果Windows NT不能满足需要,用户可以把数据库移到UNIX中。
Oracle的并行服务器对各种UNIX平台的集群机制都有着相当高的集成度。
Oracle获得最高认证级别的ISO标准认证.Oracle性能最高,保持开放平台下的TPC-D和TPC-C的世界记录Oracle多层次网络计算,支持多种工业标准,可以用ODBC、JDBC、OCI等网络客户连接。
Oracle 在兼容性、可移植性、可联结性、高生产率上、开放性也存在优点。
Oracle产品采用标准SQL,并经过美国国家标准技术所(NIST)测试。
与 IBM SQL/DS,DB2,INGRES,IDMS/R等兼容。
Oracle的产品可运行于很宽范围的硬件与操作系统平台上。
可以安装在70种以上不同的大、中、小型机上;可在VMS、DOS、UNIX、WINDOWS等多种操作系统下工作。
SQL Server 和 Oracle 以及 MySQL 有哪些区别
孙文亮,笔下虽有千言,胸中实无一策糊涂、紫冰焰、张小枭Damon等人赞同SQL,在这里我理解成SQL Server。
三者是目前市场占有率最高(依安装量而非收入)的关系数据库,而且很有代表性。
排行第四的DB2(属IBM公司),与Oracle的定位和架构非常相似,就不赘述了。
第一,如果要说明三者的区别,首先就要从历史入手。
1.Oracle:中文译作甲骨文,这是一家传奇的公司,有一个传奇的大老板Larry Ellision。
Ellision 32岁还一事无成,读了三个大学,没得到一个学位文凭,换了十几家公司,老婆也离他而去。
开始创业时只有1200美元,却使得Oracle公司连续12年销售额每年翻一番。
Oracle成立于1977年,早期的理论基础,反而来自于一篇IBM的论文《A Relational Model of Data for Large Shared Data Banks》【1】。
作者CODD选取了关系代数的五种运算,并基于运算,架构了一种新型的数据存储模型。
基于这种模型,Oracle成为了一个非常典型的关系数据库。
因此也变的严谨、安全、高速、稳定,并且变的越来越庞大。
由于其诞生早、结构严谨、高可用、高性能等特点,使其在传统数据库应用中大杀四方,金融、通信、能源、运输、零售、制造等各个行业的大型公司基本都是用了Oracle,早些年的时候,世界500强几乎100%都是Oracle的用户。
2.MySQL :MySQL的最初的核心思想,主要是开源、简便易用。
其开发可追溯至1985年,而第一个内部发行版本诞生,已经是1995年。
到1998年,MySQL已经可以支持10中操作系统了,其中就包括win平台。
但依然问题多多,如不支持事务操作、子查询 、外键、存储过程和视图等功能。
下图是一个截止至2006年的数据库市场占有率【2】:图中可以看出,MySQL的爆发实际是在01、02年,尤其是02年发布的4.0 Beta版,正式选定InnoDB作为默认引擎,对事务处理能力及数据缓存能力有了极大的提高。
mysql oracle sqlserver 对比表格
并发控制
使用多版本并发控制(MVCC)
使用多版本并发控制(MVCC)
使用多版本并发控制(MVCC)
备份和恢复
支持备份和恢复
支持备份和恢复
支持备份和恢复
分区表
支持分区表
支持分区表
支持分区表
集群和复制
支持主从复制和集群
支持 Oracle RAC 集群
支持数据库镜像、AlwaysOn 可用性组等
开发公司
Oracle Corporation
Oracle Corporation
Microsoft Corporation
许可费用
开源(某些版本有商业版)
商业(也有免费版本,如 Oracle Express)
商业(也有免费版本,如 SQL Server Express)
数据类型
支持多种常见数据类型
非常丰富的数据类型支持
mysql oracle sqlserver 对比表格
下面是 MySQL、Oracle 和 SQL Server 三种常见的关系型数据库系统的一些主要特性的简要对比。请注意,这些信息可能在不同版本中有所变化,因此建议查阅每个数据库系统的官方文档以获取最新的信息。
特性
MySQL
Oracle
SQL Server
多种常见数据类型,如 varchar, int, datetime 等
存储过程和触发器
支持存储过程和触发器
支持存储过程和触发器
支持存储过程和触发器
索引
支持多种索引,包括全文索引
多种索引类型,包括 B 树索引、位图索引等
多种索引类型,如聚簇索引、非聚簇索引等
事务支持
支持事务,具备 ACID 特性
浅谈Mysql、SqlServer、Oracle三大数据库的区别
浅谈Mysql、SqlServer、Oracle三⼤数据库的区别⼀、MySQL优点:1. 体积⼩、速度快、总体拥有成本低,开源;2. ⽀持多种操作系统;3. 是开源数据库,提供的接⼝⽀持多种语⾔连接操作;MySQL的核⼼程序采⽤完全的多线程编程。
线程是轻量级的进程,它可以灵活地为⽤户提供服务,⽽不过多的系统资源。
⽤多线程和C语⾔实现的mysql能很容易充分利⽤CPU;MySql有⼀个⾮常灵活⽽且安全的权限和⼝令系统。
当客户与MySql服务器连接时,他们之间所有的⼝令传送被加密,⽽且MySql⽀持主机认证;⽀持ODBC for Windows,⽀持所有的ODBC 2.5函数和其他许多函数,可以⽤Access连接MySql服务器,使得应⽤被扩展;⽀持⼤型的数据库,可以⽅便地⽀持上千万条记录的数据库。
作为⼀个开放源代码的数据库,可以针对不同的应⽤进⾏相应的修改;拥有⼀个⾮常快速⽽且稳定的基于线程的内存分配系统,可以持续使⽤⾯不必担⼼其稳定性;MySQL同时提供⾼度多样性,能够提供很多不同的使⽤者介⾯,包括命令⾏客户端操作,⽹页浏览器,以及各式各样的程序语⾔介⾯,例如C+,Perl,Java,PHP,以及Python。
你可以使⽤事先包装好的客户端,或者⼲脆⾃⼰写⼀个合适的应⽤程序。
MySQL可⽤于Unix,Windows,以及OS/2等平台,因此它可以⽤在个⼈电脑或者是服务器上。
缺点:1. 不⽀持热备份;2. MySQL最⼤的缺点是其安全系统,主要是复杂⽽⾮标准,另外只有到调⽤mysqladmin来重读⽤户权限时才发⽣改变;3. 没有⼀种存储过程(Stored Procedure)语⾔,这是对习惯于企业级数据库的程序员的最⼤限制;4. MySQL的价格随平台和安装⽅式变化。
Linux的MySQL如果由⽤户⾃⼰或系统管理员⽽不是第三⽅安装则是免费的,第三⽅案则必须付许可费。
Unix或linux ⾃⾏安装免费、Unix或Linux 第三⽅安装收费。
浅析MySQL、SQL Server、Oracle的异同点
浅析MySQL、SQL Server、Oracle的异同点计112 肖洪岳从以下几方面进行简要分析:开放性可伸缩性,并行性安全性性能客户端支持及应用模式使用风险一、开放性Mysql 支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统SQL Serve r 只能在Windows 上运行,没有丝毫的开放性,操作系统的系统的稳定对数据库是十分重要的。
Oracle 能在所有主流平台上运行(包括Windows)。
完全支持所有的工业标准。
采用完全开放策略。
可以使客户选择最适合的解决方案。
对开发商全力支持。
二、可伸缩性,并行性1、Mysql使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
2、SQL Server并行实施和共存模型并不成熟。
很难处理日益增多的用户数和数据卷。
伸缩性有限。
3、Oracle平行服务器通过使一组结点共享同一簇中的工作来扩展Window NT的能力,提供高可用性和高伸缩性的簇的解决方案。
如果WindowsNT不能满足需要, 用户可以把数据库移到UNIX中。
三、安全性231SQL server 没有获得任何安全证书。
Mysql 有没有获得安全认证Oracle 获得最高认证级别的ISO 标准认证。
四、性能Mysql支持多线程,充分利用CPU资源SQL Server多用户时性能不佳Oracle性能最高,保持WindowsNT下的TPC-D和TPC-C的世界记录。
五、客户端支持及应用模式Mysql既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。
SQL ServerC/S结构,只支持Windows客户,可以用ADO,DAO,OLEDB,ODBC连接。
Oracle多层次网络计算,支持多种工业标准,可以用ODBC,JDBC,OCI等网络客户连接。
SQL server和oracle这两个数据库有什么区别?
SQL server和oracle这两个数据库有什么区别?首先这两个都是关系型数据库,都数据经常使用的数据库。
Oracle是排名第一的,从使用广度和并发性性能方面,SQL server排名第三。
它们的区别:1.应用平台的角度:Oracle可以运行在任何平台,像Window,Linux,MarOS 上。
SQL server主流的支持平台是Windows,因为它背后的靠山就是Microsoft.从2017版开始,SQL server也开始跨平台,你可以下载它的Docker版本,就可以运行在Linux和MarOS上。
2.从优化的角度:比如查询优化,Orcale支持*的查询优化,SQL server是没有这个操作的。
从更新的角度,Orcale更新一个字段后需要执行commit提交以后才能更新,而SQL server 不需要commit,它的值已经改变了。
从回滚的角度,Orcale 可以在事务执行中支持回滚,而SQL server不允许,只有事务执行完了,发生失败或发生意外,才执行rollback这个功能。
另外就是Schema的区别,Orcale中一个instance有多个Schema,对于Orcale来说,Schema相当于数据库的概念,对于SQL server来说,一个数据库中可以有多个Schema,所以这个Schema相当于table的概念。
3.从备份的角度说,Orcale支持差分备份,而SQL server不支持,像增量级的,完整的文件级的备份这两个数据库都是支持的。
4.从触发器的角度说,Orcale支持前触发器和后触发器,SQL server只支持后触发器。
最后就是从付费的角度考虑,两者都有开源的版本,可供下载使用。
以上就是两者的区别,希望对你有所帮助。
oracle、sqlserver、mysql常用函数对比[to_char、to_numbe。。。
oracle、sqlserver、mysql常⽤函数对⽐[to_char、to_numbe。
oracle --> mysqlto_char(sysdate,'yyyy-mm-dd')-->date_format(sysdate(),'%Y-%m-%d');to_date(sysdate,'yyyy-mm-dd')-->STR_TO_DATE(sysdate(),'%Y-%m-%d');1.oracle(1)使⽤TO_CHAR函数处理数字TO_CHAR(number, '格式')TO_CHAR(salary,’$99,999.99’);(2)使⽤TO_CHAR函数处理⽇期TO_CHAR(date,’格式’);to_char(sysdate,'q') 季to_char(sysdate,'yyyy')年to_char(sysdate,'mm')⽉to_char(sysdate,'dd')⽇to_char(sysdate,'d')星期中的第⼏天to_char(sysdate,'DAY')星期⼏to_char(sysdate,'ddd')⼀年中的第⼏天(3)TO_NUMBER使⽤TO_NUMBER函数将字符转换为数字TO_NUMBER(char[, '格式'])(4) TO_DATE使⽤TO_DATE函数将字符转换为⽇期TO_DATE(char[, '格式'])------------------------------------------------------------------------------------------2.sql1)类型转换:Cast()类型转换,例:Cast(@startdate as datetime),Cast(name as nvarchar)2)⽇期截取:Datepart()返回代表指定⽇期的指定⽇期部分的整数,例:Datepart(Dd,@startdate)--取⽇,Datepart(Month,@startdate)--取⽉,Datepart(Yy,@startdate)--取年3)⽇期操作:Dateadd()在向⼀个⽇期加上⼀个段时间的基础上,返回新的datetime类型。
oracle、MySQL、SQLServer的比较
oracle、MySQL、SQLServer的⽐较MySql的优点:1 MYSQL⽀持5000万条记录的数据仓库(3.x版本就⽀持了)2 MYSQL适应所有平台。
3 MYSQL是开源软件,开源的东西似乎总是⽐较实在⼀点,不会有太多商业化的考虑。
4 学起来简单5 MYSQL 因为是开源的,所以⽀持任意修改,也就是说你可以去除你不需要的功能,从⽽简化MYSQL,提⾼速度。
6美国西部时间2006年2⽉4⽇,测试⼚商Coverity公司发表声明,称对MySQL数据库软件的源代码进⾏分析后,结果表明其缺陷数量远远⼩于商业数据库软件的⽔平。
7使⽤C和C++编写,并使⽤了多种编译器进⾏测试,保证源代码的可移植性8⽀持AIX、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统9为多种编程语⾔提供了API。
这些编程语⾔包括C、C++、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。
10⽀持多线程,充分利⽤CPU资源11优化的SQL查询算法,有效地提⾼查询速度12既能够作为⼀个单独的应⽤程序应⽤在客户端服务器⽹络环境中,也能够作为⼀个库⽽嵌⼊到其他的软件中提供多语⾔⽀持,常见的编码如中⽂的GB 2312、BIG5,⽇⽂的Shift_JIS等都可以⽤作数据表名和数据列名13 提供TCP/IP、ODBC和JDBC等多种数据库连接途径14 提供⽤于管理、检查、优化数据库操作的管理⼯具MySql的缺点:1、MySQL最⼤的缺点是其安全系统,主要是复杂⽽⾮标准,另外只有到调⽤mysqladmin来重读⽤户权限时才发⽣改变。
2、MySQL的另⼀个主要的缺陷之⼀是缺乏标准的RI(Referential Integrity-RI)机制;Rl限制的缺乏(在给定字段域上的⼀种固定的范围限制)可以通过⼤量的数据类型来补偿。
mysql oracle sqlserver 类型
mysql oracle sqlserver 类型MySQL、Oracle和SQL Server是三种流行的关系型数据库管理系统(DBMS)。
它们都使用SQL作为查询和操作语言,但在某些方面具有不同的特点和功能。
在本文中,我们将以这三种DBMS为主题,并逐步介绍它们的特点、应用场景和优缺点。
第一步:介绍MySQL、Oracle和SQL ServerMySQL是一个开源的关系型数据库管理系统,由Oracle公司维护和发展。
它具有良好的性能和可靠性,并且易于部署和使用。
MySQL适用于中小型项目和需要快速开发和迭代的应用。
它被广泛应用于Web应用程序、企业级应用和嵌入式应用等各种场景。
Oracle是目前市场份额最大的商业关系型数据库管理系统。
它拥有强大的功能和扩展性,适用于大型企业级应用和高并发环境。
Oracle提供高级安全性和可靠性,以及丰富的管理工具和功能。
它被广泛应用于金融、电信、航空航天等需要处理大量数据和复杂业务逻辑的行业。
SQL Server是微软开发的关系型数据库管理系统。
它提供了一系列完整的数据库解决方案,包括数据库引擎、分析服务、报告服务等。
SQL Server具有良好的可扩展性和集成性,适用于中小型项目和企业级应用。
它被广泛应用于Windows平台下的各种应用程序和系统。
第二步:比较MySQL、Oracle和SQL Server的特点1. 性能:MySQL在处理简单查询和大量连接上表现良好,但在处理复杂查询和高并发访问方面可能略逊一筹。
Oracle在处理大型数据和复杂查询上表现出色,但需付出较高的硬件、网络和维护成本。
SQL Server 在处理中小型数据和较简单查询时表现出色。
2. 可靠性:MySQL在基本数据库操作方面表现良好,但在关键事务处理和高可用性方面可能受限。
Oracle提供高级事务管理和灾备功能,能够确保数据的一致性和持久性。
SQL Server提供数据复制和故障转移功能,以提高系统的可用性和容错性。
SQLserver与MySQL的区别(数据库小白须知!!!)
SQLserver与MySQL的区别(数据库⼩⽩须知)SQLserver与mysql的区别1、概述的不同 SQL Server 是Microsoft 公司推出的关系型数据库管理系统。
具有使⽤⽅便可伸缩性好与相关软件集成程度⾼等优点,可跨越从运⾏Microsoft Windows 98 的膝上型电脑到运⾏Microsoft Windows 2012 的⼤型多处理器的服务器等多种平台使⽤。
Microsoft SQL Server 是⼀个全⾯的数据库平台,使⽤集成的商业智能 (BI)⼯具提供了企业级的数据管理。
Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理⽤于业务的⾼可⽤和⾼性能的数据应⽤程序。
MySQL是⼀个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,⽬前属于 Oracle 旗下公司。
MySQL 最流⾏的关系型数据库管理系统,在 WEB 应⽤⽅⾯ MySQL 是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应⽤软件之⼀。
MySQL 是⼀种关联数据库管理系统,关联数据库将数据保存在不同的表中,⽽不是将所有数据放在⼀个⼤仓库内,这样就增加了速度并提⾼了灵活性。
MySQL 所使⽤的 SQL 语⾔是⽤于访问数据库的最常⽤标准化语⾔。
2、应⽤范围的不同 SQL Server的应⽤范围,和其具体的版本有⼀定的关系,基本上是:企业版(Enterprise Edition)(⼤中型企业商⽤);标准版(Standard Edition)(⼩型企业商⽤);开发版(Developer Edition)(开发公司、开发⼈员使⽤);个⼈版(Personal Edition)(开发⼈员使⽤);MSDE 2000(Microsoft SQL Server 2000 Desktop Engine)(简单的单机数据库、开发⼈员开发测试使⽤) mysql的应⽤:Web⽹站系统:安装配置简单,性能优越,开源。
SQLServer、MySQL、Oracle语法差异小集锦
SQLServer、MySQL、Oracle语法差异⼩集锦⼀、差异集锦 在建表的时候,只有⾃增的语法不同。
下⾯给出3种数据库通⽤的建表与初始化测试语句:CREATE TABLE Country(Id int PRIMARY KEY,Name varchar(20));CREATE TABLE Person (Id int PRIMARY KEY,CountryId int,Name varchar(20) NOT NULL UNIQUE,Sex int DEFAULT0,CONSTRAINT FK_CID_PID FOREIGN KEY (CountryId) REFERENCES Country(Id)); 插⼊测试数据:INSERT INTO Country VALUES(1, '蜀国');INSERT INTO Country VALUES(2, '魏国');INSERT INTO Country VALUES(3, '吴国');INSERT INTO Person VALUES(1,1,'刘备',1);INSERT INTO Person VALUES(2,1,'关⽻',1);INSERT INTO Person VALUES(3,1,'张飞',1);INSERT INTO Person VALUES(4,2,'曹操',1);INSERT INTO Person VALUES(5,2,'郭嘉',1);INSERT INTO Person VALUES(6,2,'典韦',1);INSERT INTO Person VALUES(7,3,'孙权',1);INSERT INTO Person VALUES(8,3,'周瑜',1);INSERT INTO Person VALUES(9,3,'⼤乔',2);SQLServer MySQL Oracle⾃增identity(1,1) AUTO_INCREMENT SEQUENCE/触发器⾃增⾏插⼊INSERT INTO PersonVALUES(NULL,1,'魏延',1)INSERT INTO Person VALUES(1,'魏延',1)INSERT INTO PersonVALUES(SEQID.NEXTVAL,1,'魏延',1)取前⼏条SELECT TOP 5 * FROM Person SELECT * FROM Person LIMIT 0,5SELECT * FROM Person WHERE ROWNUM < 5表别名SELECT * FROM Person AS P INNERJOIN Country AS C ON P.CountryId =C.IdSELECT * FROM Person AS P INNERJOIN Country AS C ON P.CountryId =C.IdSELECT * FROM Person P INNER JOINCountry C ON P.CountryId = C.Id字段名⼤⼩写与SELECT相同与SELECT相同Oracle中,字段名都是⼤写的,即使SELECT语句中是⼩写,得到的结果也是⼤写。
sqlserver和mysql区别
sqlserver和mysql区别开发公司不同、开发⼯具包搭配不同、开放性不同。
sqlserver是由Microsoft开发和推⼴。
mysql由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。
sqlserver和mysql区别开发⼯具包搭配不同1、SQLserver:SQLserver能与 Microsoft Visual Studio、Microsoft Office System以及开发⼯具包搭配。
2、Mysql:Mysql不能与 Microsoft Visual Studio、Microsoft Office System以及开发⼯具包搭配。
开放性不同1、SQLserver:SQLserver不是开放源码软件2、Mysql:Mysql是开放源码软件。
SQL Server的特点是可信任。
使得公司可以以很⾼的安全性、可靠性和可扩展性来运⾏他们最关键任务的应⽤程序;⾼效。
使得公司可以降低开发和管理他们的数据基础设施的时间和成本;智能。
提供了⼀个全⾯的平台,可以在⽤户需要的时候给他发送观察和信息。
Mysql的特点是其体积⼩、速度快、总体拥有成本低,尤其是开放源码。
⼀般中⼩型⽹站的开发都选择 MySQL 作为⽹站数据库。
什么是MySQL?MySQL是在90年代中期(后来被Oracle收购)开发的,它是最早的开源数据库之⼀,直到今天仍然如此。
这意味着MySQL有⼏种选择。
但这些变体之间的差异并不太明显; 语法和基本功能保持⼀致。
已经成为MySQL特征的东西是它在创业社区中的受欢迎程度。
因为它是开源的和免费的,所以开发⼈员可以轻松地开始使⽤MySQL,并在他们可能需要的极少数情况下修改其代码。
MySQL通常与PHP和Apache Web Server 结合使⽤,在Linux发⾏版之上,这导致了著名的⾸字母缩略词LAMP(L inux,Apache,MySQL,PHP)。
什么是SQL Server?SQL Server,也称为Microsoft SQL Server,⽐MySQL长得多。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
23.子串位置 --返回3
S:select CHARINDEX('s','sdsq',2) value
O:select INSTR('sdsq','s',2) value from dual
10.取平方根
S:select SQRT(4) value 2
O:select SQRT(4) value from dual 2
11.求任意数为底的幂
S:select power(3,4) value 81
O:select power(3,4) value from dual 81
24.求子串
S:select substring('abcd',2,2) value
O:select substr('abcd',2,2) value from dual
25.子串代替 返回aijklmnef
S:SELECT STUFF('abcdef', 2, 3, 'ijklmn') value
8.取10为底对数
S:select log10(10) value 1
O:select log(10,10) value from dual; 1
9.取平方
S:select SQUARE(4) value 16
O:select power(4,2) value from dual 16
--Mysql
select cast('123' as signed integer); --123
select cast(33 as char(2)); --33;
select to_days('2000-01-01'); --730485
--SqlServer
select cast('123' as decimal(30,2)); --123.00
O:select ascii('a') value from dual
22.从序号求字符
S:select char(97) value
O:select chr(97) value from dual
23.连接
S:select '11'+'22'+'33' value
select current_date(); --日期
--SqlServer
select getdate(); --日期时间
select datediff(day,'2010-01-01',cast(getdate() as varchar(10)));--日期相差天数
4.Decode函数
23.模糊子串的位置 --返回2,参数去掉中间%则返回7
S:select patindex('%d%q%','sdsfasdqe') value
O:oracle没发现,但是instr可以通过第四霾问刂瞥鱿执问?BR> select INSTR('sdsfasdqe','sd',1,2) value from dual 返回6
S:len,datalength
O:length
28.大小写转换 lower,upper
29.单词首字母大写
16.Asin,Acos,Atan,Atan2 返回弧度
17.弧度角度互换(SQLServer,Oracle不知道)
DEGREES:弧度-〉角度
RADIANS:角度-〉弧度
---------数值间比较
18. 求集合最大值
S:select max(value) value from
20.如何处理null值(F2中的null以10代替)
S:select F1,IsNull(F2,10) value from Tbl
O:select F1,nvl(F2,10) value from Tbl
--------数值间比较
21.求字符序号
S:select ascii('a') value
S:select floor(-1.001) value
O:select floor(-1.001) value from dual
4.取整(截取)
S:select cast(-1.002 as int) value
O:select trunc(-1.002) value from dual
8.把多行转换成一合并列
--Oracle
select wm_concat(列名) from dual; --多行记录转换成一列之间用,分割
--Mysql/SqlServer
select group_concat(列名);
SQLServer和Oracle的常用函数对比
1.绝对值
select cast(33 as char(2)); --33;
select convert(varchar(12) , getdate(), 120)
2.四舍五入函数区别
--Oracle
select round(12.86*10)/10 from dual; --12.9
O:select Exp(1) value from dual 2.71828182
7.取e为底的对数
S:select log(2.7182818284590451) value 1
O:select ln(2.7182818284590451) value from dual; 1
S:select abs(-1) value
O:select abs(-1) value from dual
2.取整(大)
S:select ceiling(-1.001) value
O:select ceil(-1.001) value from dual
3.取整(小)
--Mysql
select format(12.89,1); --12.9
--SqlServer
select round(12.89,1); --12.9
Hale Waihona Puke 3.日期时间函数 --Oracle
select sysdate from dual; --日期时间
--Mysql
select sysdate(); --日期时间
where rownum <= 20
)
-- 10 = (currentPage-1) * pageSize
where rn > 10;
-- Oralce 分页算法二
-- 20 = (currentPage-1) * pageSize + pageSize
--Oracle
select decode(sign(12),1,1,0,0,-1) from dual;--1
--Mysql/SqlServer
select case when sign(12)=1 then 1 when sign(12)=0 then 0 else -1 end;--1
-- Oracle 分页算法一
select * from (
select page.*,rownum rn from (select * from help) page
-- 20 = (currentPage-1) * pageSize + pageSize
12.取随机数
S:select rand() value
O:select sys.dbms_random.value(0,1) value from dual;
13.取符号
S:select sign(-8) value -1
O:select sign(-8) value from dual -1
O:SELECT Replace('abcdef', 'bcd', 'ijklmn') value from dual
26.子串全部替换
S:没发现
O:select Translate('fasdbfasegas','fa','我' ) value from dual
27.长度
5.四舍五入
S:select round(1.23456,4) value 1.23460
O:select round(1.23456,4) value from dual 1.2346
6.e为底的幂
S:select Exp(1) value 2.7182818284590451
select concat('1','2'); --12
--Mysql
select concat('1','2'); --12
--SqlServer
select '1'+'2'; --12
7.记录限制函数
--Oracle
select 1 from dual where rownum <= 10;
Oracle/Mysql/SqlServer函数区别