当前位置: 首页 >数据库 > MySQL、Oracle与DB2数据库差异

MySQL、Oracle与DB2数据库差异

第一章:SQL执行差异

 1.DB2数据库

  1.1用户创建

#用户名等1到8个字符#DB2中用户必须是个操作系统用户(比如Windows和Linux用户)#等同于在系统中创建用户设置密码(这点不同于oracle等数据库)useradd -d /home/testuser -m testuserpasswd testuser

  1.2赋权限

#查看数据库 dbdbnamesu - db2instdb2 list application#连接数据库权限授予、撤销db2 connect to dbdbname user db2inst using db2instdb2 GRANT dbadm ON DATABASE TO USER testuser;db2 REVOKE connect,resource,dba ON DATABASE FROM testuser;

  1.3创建表空间

--删除、创建自动存储、注释表空间drop tablespace testuserdb;CREATE TABLESPACE testuserdb MANAGED BY AUTOMATIC STORAGE;COMMENT ONTABLESPACE testuserdb IS '表空间';

  1.4创建schema

--查询当前存在的Schemaselect * from syscat.schemata;--在不同用户下创建与之相同的默认 schemaDROP schema testuser RESTRICT;CREATE schema testuser authorization testuser;--查询、修改当前Schema(DB2数据库中用户与Schema没有必然联系,设置给用户设置一个与之相同的默认Schema)select current schema from sysibm.sysdummy1;SET CURRENT SCHEMA = 'testuser';

   1.5创建索引

select * from sysibm.sysindexes where tbname = 'TESTTABLE';--查看表索引drop index ind_emp;--删除索引create index  ind_emp on testtable(NO);--普通索引create unique index  ind_emp on testtable(NAME,TYPE,NO);--唯一索引Create unique index ind_emp on u_emp(emp) cluster;--聚集索引

 

 2.Oracle数据库

  2.1创建用户、赋权限、删除用户

  https://www.cnblogs.com/ZhaoHS/p/10246064.html

 

 3.MySQL数据库

   3.1创建用户、赋权限

登陆mysqlmysql -uroot -p创建数据库CREATE DATABASE webDB;创建用户(密码注意是否需要字母大小写、数字、特殊符号)CREATE USER 'web'@'%' IDENTIFIED BY 'web@123';给用户赋数据库表权限(webDB.*表示给用户赋webDB数据库所有表权限)grant all privileges on webDB.* to 'web'@'%' with grant option;

  3.2例如(注意:恢复root用户超级权限)

[root@mysql ~]# mysql -h主机IP -u用户名 -p密码mysql: [Waing] Using a password on the command line interface can be insecure.Welcome to the MySQL monitor.  Commands end with ; or \g.Your MySQL connection id is 83282Server version: 5.7.37 MySQL Community Server (GPL)Copyright (c) 2000, 2022, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> GRANT ALL PRIVILEGES ON web.* TO 'web'@'%' IDENTIFIED BY 'web';ERROR 1044 (42000): Access denied for user 'root'@'%' to database 'web'mysql> SELECT host,user,password,Grant_priv,Super_priv FROM user;ERROR 1046 (3D000): No database selectedmysql> SELECT host,user,password,Grant_priv,Super_priv FROM mysql.user;ERROR 1054 (42S22): Unknown column 'password' in 'field list'mysql> UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';Query OK, 1 row affected (0.00 sec)Rows matched: 2  Changed: 1  Waings: 0mysql> FLUSH PRIVILEGES;Query OK, 0 rows affected (0.00 sec)mysql> exitByemysql> grant all privileges on web.* to 'web'@'%' with grant option;Query OK, 0 rows affected (0.00 sec)

   3.3删除用户、用户数据库、修改用户密码

删除用户>mysql -u root -p>密码mysql>DELETE FROM user WHERE User="web" and Host="localhost";//刷新系统权限表mysql>flush privileges;删除用户的数据库mysql>drop database webDB;修改指定用户密码>mysql -u root -p>密码mysql>update mysql.user set password=password('新密码') where User="web" and Host="localhost";mysql>flush privileges;

 

 

第二章:在使用与功能上的差异总结

  MySQL与DB2的对比

编号

功能

MySQL

DB2

1

账号管理

数据库用户名+IP地址

操作系统用户

2

权限管理

可以批量grant与revoke

只能单独授权包括最小单元

3

日志管理

归档日志与事务日志没有关系

归档日志由事务日志产生

4

锁的管理

MVCC实现锁的并发控制

内存模型实现锁的并发控制

5

schema的管理

每个schema为一个独立的DB

同一个DB内可以有多个schema

6

表空间管理

无法条带化、可管理、维护性较弱

管理方便、功能强大

7

数据备份

开源在线的备份工具少,传统的备份只支持温备份

备份方式严谨、功能强大

8

事务行为

回滚到上一个保存点,不会回滚整个事务

整个事务进行回滚

9

数据恢复

支持在恢复时打开数据库,灵活

不支持在恢复或前滚时打开数据库

10

SQL支持

对复杂SQL支持较弱,在运行时可能会存在性能问题

支持各种复杂SQL,多种jion方式

11

Package支持

不支持

支持

12

语法差异

遵守SQL92标准,但细节上有差异、默认大小写敏感

遵守SQL92标准,大小写不敏感

13

容灾与高可用

可选择方案较多、灵活、可二次开发

只有HADR

14

可扩展性

可选择方案较多、灵活、可定制、可开发

只有PureScale

15

DDL功能

支持指定位置加列、在线DDL

不支持

    引用:http://blog.chinaunix.net/uid-31518880-id-5782957.html

   MySQL与Oracle的对比

    引用:https://www.doc88.com/p-47216041896644.html?r=1

第三章:数据库连接&报错等

 1.DB2数据库

  1.1报错:https://www.cnblogs.com/ZhaoHS/p/14212588.html

  1.2 驱动:com.ibm.db2.jcc.DB2Driver

  URL:jdbc:db2://9.1.17.47:50001/TRDADB

 

 2.MySQL数据库

  2.1mysql安装磁盘满了,服务停止不能启动

  启动mysql数据库
  systemctl start mysqld
  连接mysql数据库
  mysql -h9.1.15.72 -uroot -proot

  2.2驱动:com.mysql.cj.jdbc.Driver

  URL:jdbc:mysql://9.1.15.72:3306/afaconsole?characterEncoding=utf8

  2.3 MySQL插入中文时出现ERROR 1406 (22001): Data too long for column ‘name‘ at row 1

    修改类型为:longtext,alter table 表名 modify column 字段名称 字段类型 not null;

    alter table AWEB_ROLE modify column PERMISSIONS longtext COMMENT '权限' not null;

 

待持续完善......

作者:借你耳朵说爱你
来源链接:https://www.cnblogs.com/ZhaoHS/p/14211214.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/117741.html

分享给朋友:

“MySQL、Oracle与DB2数据库差异” 的相关文章