Heim Datenbank MySQL-Tutorial MySQL与Oracle的语法区别详细对比

MySQL与Oracle的语法区别详细对比

Jun 07, 2016 pm 05:55 PM
区别 语法

Oracle和mysql的一些简单命令对比在本文中将会涉及到很多的实例,感兴趣的你不妨学习一下,就当巩固自己的知识了

Oracle和mysql的一些简单命令对比
1) SQL> select to_char(sysdate,'yyyy-mm-dd') from dual;
  SQL> select to_char(sysdate,'hh24-mi-ss') from dual;
  mysql> select date_format(now(),'%Y-%m-%d');
  mysql> select time_format(now(),'%H-%i-%S');
  日期函数
  增加一个月:
  SQL> select to_char(add_months(to_date ('20000101','yyyymmdd'),1),'yyyy-mm-dd') from dual;
  结果:2000-02-01
  SQL> select to_char(add_months(to_date('20000101','yyyymmdd'),5),'yyyy-mm-dd') from dual;
  结果:2000-06-01
  mysql> select date_add('2000-01-01',interval 1 month);
  结果:2000-02-01
  mysql> select date_add('2000-01-01',interval 5 month);
  结果:2000-06-01
  截取字符串:
  SQL> select substr('abcdefg',1,5) from dual;
  SQL> select substrb('abcdefg',1,5) from dual;
  结果:abcdemysql> select substring('abcdefg',2,3);
  结果:bcd
  mysql> select mid('abcdefg',2,3);
  结果:bcd
  mysql> select substring('abcdefg',2);
  结果:bcdefg
  mysql> select substring('abcdefg' from 2);
  结果:bcdefg
2) 在MySQL中from 后的表如果是(select.......)这种,那么后面必须有别名
3) 连接字符串在Oracle中用|| ,SqlServer中用+,MySQL中用concat('a','b','c')

4)
在SqlServer中的写法:
代码如下:
declare @id varchar(50);
set @id='4028e4962c3df257012c3df3b4850001';
select * from sims_sample_detect where ID= @id;

在MySQL中的写法:
代码如下:
set @a = 189;
select * from bc_article where id = @a //不用declare

在Orcale中的写法:

5)MySQL存储过程:
代码如下:
DELIMITER $$
DROP PROCEDURE IF EXISTS `SIMS`.`transaction_delSampleInfo`$$
CREATE DEFINER=`root`@`%` PROCEDURE `transaction_delSampleInfo`(in sampleInfoId varchar(50))
BEGIN
start transaction;
update sims_sample_info set del='1' where ID = sampleInfoId;
update sims_sample_detect set del='1' where SAMPLE_ID_PARENT = sampleInfoId;
update sims_sample_detect_info set del='1' where DETECT_ID in(
select ID from sims_sample_detect where SAMPLE_ID_PARENT = sampleInfoId
);
commit;
END$$
DELIMITER ;

变量名不能跟列名相同,否则效果为1=1,且MySQL不区分大小写。

6)mysql 游标
mysql没有像orcale的动态游标,只有显示游标,例子如下:
代码如下:
DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`liyukun`$$
CREATE DEFINER=`ids`@`localhost` PROCEDURE `liyukun`(out z int)
BEGIN
declare count1 int;
DECLARE done INT DEFAULT 0;
declare v_haoma varchar(50);
declare v_yingyeting varchar(100);
DECLARE cur1 CURSOR FOR select haoma,yingyeting from eryue where idDECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
//这里和oracle有区别,Oracle的PL/SQL的指针有个隐性变
量%notfound,Mysql是通过一个Error handler的声明来进行判断的
OPEN cur1;
cur1: LOOP
FETCH cur1 INTO v_haoma,v_yingyeting;
IF done=1 THEN //如果没有数据了,则离开
LEAVE cur1;
ELSE
select count(*) into count1 from year2012 where haoma=v_haoma ;
if(count1=0) then
insert into year2012(haoma, yingyeting)
values(v_haoma,v_yingyeting);
else
set z = z+1;
update year2012 set eryue = ‘100' where haoma=v_haoma;
end if;
END IF;
END LOOP cur1;
CLOSE cur1;
END$$
DELIMITER ;

执行:
代码如下:
call liyukun(@a);
select @a;

7) mysql的group by 语句可以select 没有被分组的字段,如
select id,name,age from A group by age 这样
但是在orcale和sqlserver中是会报错的。这个取出的id,name所在的行是每个分组中的第一行数据。
8)orcale用decode()来转换数据,mysql,sqlserver用case when:
case t.DETECT_RESULT when '2402' then t.SAMPLEID end (必须有end)
9)mysql: 两个select 出的数据相减:
(COUNT(distinct(t.SAMPLEID))-
CONVERT((COUNT(distinct(case t.DETECT_RESULT when '2402' then t.SAMPLEID end))), SIGNED)) AS NEGATIVE
FROM `view_sims_for_report` t
10)convert,cast用法
mysql将varchar转为int
convert(字段名, SIGNED)
字符集转换 : CONVERT(xxx USING gb2312)
类型转换和SQL Server一样,就是类型参数有点不同 : CAST(xxx AS 类型) , CONVERT(xxx,类型)
可用的类型 
二进制,同带binary前缀的效果 : BINARY
字符型,可带参数 : CHAR()
日期 : DATE
时间: TIME
日期时间型 : DATETIME
浮点数 : DECIMAL
整数 : SIGNED
无符号整数 : UNSIGNED
11)如果从mysql数据库中取的时候没有乱码,而在Java的List中得到的是乱码的话,那么可能是SQL语句中的有字段不是 varchar的数据类型,这时需要转换convert(字段名, 类型)转换一下,Orcale则用ToChar函数
12)Orcale的大字段用clob,图像用blob,clob字段在Hibernate的映射文件中用String就可以
13) mysql,orcale,sqlserver 语句执行顺序
开始->FROM子句->WHERE子句->GROUP BY子句->HAVING子句->ORDER BY子句->SELECT子句->LIMIT子句->最终结果
每个子句执行后都会产生一个中间结果 ,供接下来的子句使用,如果不存在某个子句,就跳过。
14) LPAD函数
1在oracle的数据库里有个函数 LPAD(String a,int length,String addString).
2作用:把addString添加到a的左边,length 是返回值的长度。
3例子
代码如下:
A : SQL> select lpad('test',8,0) from dual;
LPAD('TEST',8,0)
----------------
0000test
B: select lpad('test',8) from dual;
LPAD('TEST',8)
--------------
test 注:不写最后一个参数,函数会默认在返回值左边加一个空格。
C: SQL> select lpad('test',2,0) from dual;
LPAD('TEST',2,0)
----------------
te
D:SQL> select lpad('test',3) from dual;
LPAD('TEST',3)
--------------
tes

15)Orcale中没有TOP,是通过
select * from (select * from A order by id desc) where rownum=1
注:不能直接写 select * from A where rownum=1 order by id desc 因为语句执行的顺序是先where再order by ,如果这样写就无法按id的排序来取第一个了。
不能写rownum=2或rownum>1这样,因为Orcale 默认必须包含第一条。
如果非要取第二条的话,可以写成:
代码如下:
select * from (select id,rownum as row_num from lws_q_bl_result r where r.sample_id = 'B10226072') where row_num=2

16)Orcale,MySql while循环比较
Orcale:
代码如下:
while numloop
str := to_char(num);
num := num+1;
end loop;

也可以:
代码如下:
for num in 1..10 --这样的缺陷是无法间隔取值
loop
str := to_char(num);
end loop;

mysql:
代码如下:
while numdo
str := to_char(num);
num := num+1;
end while;

17)orcale 生成唯一序列是 select sys.guid() from dual ,mysql是 select uuid() from dual

18)MySql和Orcale的ID自增
MySql由于是在数据库中实现ID自增,所以如果想返回插入一条序列的该条ID,只能用如下方法:
代码如下:
public int insertSign(final SpaceSign sign) throws Exception {
try{
KeyHolder keyHolder = new GeneratedKeyHolder();
final String sql = "insert into space_sign(userId,userName,nickName,contentText,contentHtml,isPublic,commentCount,userIp,status,insertTime)" +
" values(?,?,?,?,?,?,?,?,?,?)";
template.update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
ps.setInt(1, sign.getUserId());
ps.setString(2, sign.getUserName());
ps.setString(3, sign.getNickName());
ps.setString(4, sign.getContentText());
ps.setString(5, sign.getContentHtml());
ps.setInt(6, sign.getIsPublic());
ps.setInt(7,sign.getCommnetCount());
ps.setString(8, sign.getUserIp());
ps.setInt(9, sign.getStatus());
ps.setTimestamp(10, new java.sql.Timestamp(sign.getInsertTime().getTime()));
return ps;
}
}, keyHolder);
Long generatedId = keyHolder.getKey().longValue();
return generatedId.intValue();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
throw new SQLException("发表签名失败", e);
}
}

由于Orcale的ID是在插入该条数据之前就通过select SEQ_BLOG_ID.nextval from dual 获得的,所以直接返回既可。ps:SEQ_BLOG_ID为在数据库中设置的sequence。
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Deepseek Was ist der Unterschied zwischen der R1- und V3 -Version Deepseek Was ist der Unterschied zwischen der R1- und V3 -Version Feb 19, 2025 pm 03:24 PM

Deepseek: Eingehender Vergleich zwischen R1- und V3-Versionen hilft Ihnen, den besten AI-Assistenten auszuwählen! Deepseek hat bereits zig Millionen von Benutzern, und seine KI -Dialogfunktion wurde gut aufgenommen. Aber sind Sie verwirrt, wenn Sie sich den Versionen der R1- und V3 stellen? In diesem Artikel werden die Unterschiede zwischen den beiden im Detail erläutert, um die am besten geeignete Version auszuwählen. Der Kernunterschied zwischen Deepseekl1 und V3-Version: Features Das Designziel der V3-Version konzentriert Milliarden bis 70 Milliarden MOE Hybrid -Expertenarchitektur, die Gesamtparameter sind bis zu 671 Milliarden, jedes Token wird um 37 Milliarden aktiviert

Zusammenfassung der FAQs für die Verwendung von Deepseek Zusammenfassung der FAQs für die Verwendung von Deepseek Feb 19, 2025 pm 03:45 PM

Deepseekai Tool User Guide und FAQ Deepseek ist ein leistungsstarkes KI -Intelligent -Tool. FAQ: Der Unterschied zwischen verschiedenen Zugriffsmethoden: Es gibt keinen Unterschied in der Funktion zwischen Webversion, App -Version und API -Aufrufen, und App ist nur ein Wrapper für die Webversion. Die lokale Bereitstellung verwendet ein Destillationsmodell, das der Vollversion von Deepseek-R1 geringfügig unteren ist, das 32-Bit-Modell theoretisch 90% Vollversionsfunktion. Was ist eine Taverne? SillyTervern ist eine Front-End-Oberfläche, die das KI-Modell über API oder Ollama anruft. Was ist Breaking Limit

Hat Bitcoin Aktien? Hat Bitcoin Aktien? Mar 03, 2025 pm 06:42 PM

Der Kryptowährungsmarkt boomt, und Bitcoin als Führungskraft hat die Aufmerksamkeit vieler Investoren auf sich gezogen. Viele Menschen sind neugierig: Haben Bitcoin Aktien? Die Antwort ist nein. Bitcoin selbst ist keine Aktie, aber Anleger können indirekt in Bitcoin-bezogene Vermögenswerte über verschiedene Kanäle investieren, die in diesem Artikel ausführlich erläutert werden. Alternativen zu Bitcoin -Investitionen: Anstatt direkt in Bitcoin zu investieren, können Anleger am Bitcoin -Markt teilnehmen. Dies ist eine relativ bequeme Option für Anleger, die an Aktieninvestitionen gewöhnt sind, ohne Bitcoin direkt halten zu müssen. Aktien des Bitcoin -Bergbauunternehmens: Das Geschäft dieser Unternehmen ist Bitcoin Mining und Holding Bitcoin

Was ist der Unterschied zwischen dem Handel vor dem Markt und nach dem Markt? Detaillierte Erläuterung der Unterschiede zwischen dem Handel mit Vormarkt und After-Market Was ist der Unterschied zwischen dem Handel vor dem Markt und nach dem Markt? Detaillierte Erläuterung der Unterschiede zwischen dem Handel mit Vormarkt und After-Market Mar 03, 2025 pm 11:54 PM

In den traditionellen Finanzmärkten bezieht sich der Handel vor dem Markt und nach dem Markt für Handelsaktivitäten außerhalb des regulären Handelszeitraums. Obwohl der Kryptowährungsmarkt rund um die Uhr handelt, bieten Handelsplattformen wie Bitget auch ähnliche Funktionen, insbesondere einige umfassende Plattformen, die gleichzeitig Aktien und Kryptowährungen handeln. In diesem Artikel werden die Unterschiede im Handel mit Vormarkt und After-Market klargestellt und die Auswirkungen auf den Währungspreis untersucht. Vier wichtige Unterschiede zwischen dem Handel vor dem Markt und nach dem Markt: Die Hauptunterschiede zwischen dem Handel vor dem Markt und dem Handel und regulären Handelsperioden nach dem Markt sind in vier Aspekten: Handelszeit, Liquidität, Preisschwankungen und Handelsvolumen: Handelszeit: Vormarkethandel erfolgt, bevor der offizielle Handel nach dem Handel nach dem Handel nach dem Handel nach dem Handel nach dem Handel nach dem Handel nach dem Handel ist. Liquidität: Die Liquidität des Handels vor und nach der Zeit ist niedrig, es gibt nur wenige Händler, und die Preisdifferenz und die Angebotspreisdifferenz ist groß.

Warum wird Bittensor als 'Bitcoin' in der KI -Strecke gesagt? Warum wird Bittensor als 'Bitcoin' in der KI -Strecke gesagt? Mar 04, 2025 pm 04:06 PM

Original -Titel: Bittensor = Aibitcoin? Bittensor nimmt ein Subnetzmodell an, das die Entstehung verschiedener KI -Lösungen ermöglicht und Innovation durch Tao -Token inspiriert. Obwohl der KI -Markt ausgereift ist, steht Bittensor mit wettbewerbsfähigen Risiken aus und kann anderen Open Source unterliegen

Gibt es einen Unterschied zwischen südkoreanischer Bitcoin und inländischer Bitcoin? Gibt es einen Unterschied zwischen südkoreanischer Bitcoin und inländischer Bitcoin? Mar 05, 2025 pm 06:51 PM

Der Bitcoin Investment Boom erhitzt sich weiter. Obwohl China einst der größte Markt für Bitcoin war, haben die politischen Auswirkungen zu Transaktionsbeschränkungen geführt. Heute ist Südkorea zu einem der wichtigsten Bitcoin -Märkte der Welt geworden und veranlasst Anleger, die Unterschiede zwischen ihm und seinem inländischen Bitcoin in Frage zu stellen. Dieser Artikel wird eine eingehende Analyse der Unterschiede zwischen den Bitcoin-Märkten der beiden Länder durchführen. Analyse der Unterschiede zwischen Südkorea und China Bitcoin -Märkten. Zum Beispiel war Ende Oktober 2024 der Preis für Bitcoin in Südkorea einst

Pepe hat in großem Umfang gekauft und ausverkauft. Ist Mutm eine intelligentere Investition im Jahr 2025? Pepe hat in großem Umfang gekauft und ausverkauft. Ist Mutm eine intelligentere Investition im Jahr 2025? Mar 03, 2025 pm 07:09 PM

Kann MUTM nach dem Anstieg in Pepe im Jahr 2025 zu einer stabileren Wahl für die Investition werden? Pepe (Pepe) hat frühe Investoren profitabel gemacht, aber seine gewalttätigen Preisschwankungen haben viele Menschen auch dazu gebracht, seine langfristigen Aussichten in Frage zu stellen. Während der Meme -Währungsmarkt weiterhin turbuent weiterhin beginnt, konzentrieren sich die Händler auf Projekte mit grundlegenderen Vorteilen, und Mutuumfinance (MUTM) ist einer von ihnen. Dies ist eine dezentrale Kreditplattform, die sich auf praktische finanzielle Anwendungen konzentriert. Im Gegensatz zu Pepe, der auf spekulativen Spekulationen beruht, baut MUTM ein strukturiertes Defi -Ökosystem auf, in dem Benutzer passive Einnahmen ausleihen und verdienen können. Der Vorverkauf hat eine Million US-Dollar überschritten, die erste Phase des Umsatzkurs von 97%, frühe Investitionen

Vertikaler Proxy: Anwendungsszenarien und Interpretation des disruptiven Potenzials von nativem Verschlüsselungsträger Vertikaler Proxy: Anwendungsszenarien und Interpretation des disruptiven Potenzials von nativem Verschlüsselungsträger Mar 04, 2025 am 10:21 AM

Künstliche Intelligenz -Agenten (AIAGENTS) integrieren sich schnell in den täglichen Betrieb von Unternehmen, von großen Unternehmen bis zu kleinen Unternehmen. Fast alle Bereiche haben begonnen, um Vertrieb, Marketing, Finanzen, Recht, IT, Projektmanagement, Logistik, Kundendienst und Workflow -Automatisierung zu verwenden. Wir bewegen uns aus einer Zeit der manuellen Verarbeitung von Daten, der Ausführung wiederholter Aufgaben und verwenden Excel -Tabellen bis zu einer Zeit des autonomen Betriebs durch AI -Agenten rund um die Uhr, was nicht nur die Effizienz verbessert, sondern auch die Kosten erheblich reduziert. Anwendungsfall von AI -Agenten in Web2: Perspektive von Ycombinator: Ein Tool für Verkaufs- und Marketingoptimierung, das die KI- und SMS -Technologie kombiniert. Bildai: Ein Modell, das architektonische Blaupausen lesen kann,

See all articles