关于Oracle与MySQL的使用总结

平时使用的比较多的数据库管理系统就是OracleMySQL,我在这里记录下使用过程中的遇到的问题以及解决方案,以备不时之需

Oracle

关于表空间

Oracle创建数据的代价还是比较大的,所以使用表空间的概念,每个表空间相互独立。这里记录的操作包括从创建表空间、创建用户并分配表空间、授权用户这一系列操作

创建表空间

create tablespace db_test
datafile 'D:\app\Administrator\oradata\orcl\db_test.dbf'  --表空间文件位置
size 50m  --初始大小
autoextend on  --自动增长

创建用户并分配表空间

CREATE USER utest  --用户名
IDENTIFIED BY utestpwd  --密码
DEFAULT TABLESPACE db_test --分配表空间

授予一些权限给用户

grant create session to utest  --或者是CONNECT
grant RESOURCE to utest
--grant dba to utes

导入与导出

Oracle可以使用dmp文件、sql文件、数据泵方式进行导入与导出

Oracle导入.dmp文件

命令语句为 imp 用户名/密码@实例名 file=d:\data\x.dmp log=d:\data\x.log full=y ignore=y;

其中:file 表示待导入的dmp文件位置;
log 指定导入过程log的记录文件位置,注意,即使指定了将记录保存到log文件里,屏幕打印也不会关闭;

full 表示将dmp全部内容导入;

ignore 表示忽略表创建过程中的错误,比如表名已存在时将直接覆盖原来表的内容;

Oracle导出.dmp文件

exp有三种主要的方式(完全、用户、表)

1. 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中 (完全) DBA权限
  exp system/[email protected] file=d:\test.dmp full=y
2. 将数据库中system用户与sys用户下的对象导出 (用户)
  exp system/[email protected] file=d:\test.dmp owner=(system,sys)
3. 将数据库中的表table1 、table2导出 (表),只导出表
  exp system/[email protected] file=d:\test.dmp tables=(table1,table2)
4. 将数据库中的表table1中的字段filed1以”00”打头的数据导出
  exp system/[email protected] file=d:\test.dmp tables=(table1) query=\” where filed1 like ‘00%’\”
5. 只导出表table1结构,不导出数据
   exp userid=uname/pwd  tables=table1  file=d:\test.dmp rows=n;
上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。
不过在上面命令后面加上 compress=y 就可以了

Oracle导入.sql文件

@文件名

oracle 导入数据泵

  1. 创建与数据泵文件(也是个.dmp文件)相同的表空间
  2. 创建数据泵文件相同的用户并分配表空间
  3. 授予一些权限给用户(有时候还是需要dba权限)
  4. 创建一个目录,并分配读写权限
CREATE OR REPLACE DIRECTORY  BM as 'D:\bm'  --D:\bm 手动创建

grant read,write on directory 目录名 to 用户名
--revoke read,write on directory BM from als7zx04  --收回目录的读写权限
  1. 将数据泵文件放在目录下,这里是D:\bm 下
  2. 使用impdp导入
impdp 用户名/密码@数据库实例 directory=目录名 dumpfile='数据泵文件名'full=y ignore=y;  --数据泵文件名不要写全路径

系统查询

这里的查询不是说如何查询表,而是查询一些与系统有关的信息

oracle怎么查看用户属于哪个表空间

select username,default_tablespace from dba_users  where username='用户名'; --用户名大写

查询当前数据库实例名

select instance_name from v$instance;

数据库实例名(instance_name)用于对外部连接。在操作系统中要取得与数据库的联系,必须使用数据库实例名。比如我们作开发,要连接数据库,就得连接数据库实例名:

jdbc:oracle:thin:@localhost:1521:orcl(orcl就为数据库实例名)

查询表个数

select table_name from user_tables; --当前用户拥有的表
--select count(1) from tabs;
--select count(1) from user_tables;

select table_name from all_tables; --所有用户的表
select table_name from dba_tables; --包括系统表
select table_name from dba_tables where owner='用户名'

--类似的,除了表,还有视图、存储过程、同义词等等对象,使用[DBA|USER|ALL]_TABLES可以查看到你想要的对象

查看数据库对象,可以发现同名数据库对象被占用的问题

--对象名为GETORGNAME
SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_NAME='GETORGNAME';

创建表空间

Oracle查看哪些表被锁了

SELECT object_name, machine, s.sid, s.serial#, logon_time, locked_mode
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;

解除锁定

--alter system kill session 'sid,serial#';
ALTER system kill session '23,1647'; 

查询语句

这里是一些特殊的SELECT

oracle中把1,2,3显示成01,02

--oracle中把1,2,3显示成01,02,03等的数值怎么写
SELECT to_char(2,'fm00') FROM dual;  --结果 02
SELECT to_char(2,'fm999.00') FROM dual; --结果 2.00

格式化时间

select
cc.IDEXPIRY,cc.CUSTOMERID,ci.CUSTOMERNAME
from
CUSTOMER_CERT cc,CUSTOMER_INFO ci
where cc.CUSTOMERID=ci.CUSTOMERID and cc.IDEXPIRY<=to_char(sysdate,'yyyy/mm/dd')
-- Oracle 使用to_char 将当前时间sysdate 格式化

Oracle查询上一月

select to_char(add_months(sysdate,-1),'yyyymm') from dual;

Oracle从一个日期中提取特定部分

--语法
extract (    

        { year | month | day | hour | minute | second }    

        | { timezone_hour | timezone_minute }    

        | { timezone_region | timezone_abbr }    

from { date_value | interval_value } )

--例子(从一个日期里提取年,月,日)
select  extract (year from sysdate) year, extract (month from sysdate) month, extract (day from sysdate) day from  dual;
--EXTRACT(MONTH  FROM TO_DATE(MIN(A1.EARLIESTDUEBILLPUTOUTMON),'YYYY-MM-DD'))

数据字典

查询表的表名,字段名,字段类型,注释

--如果还需要查询系统中的表 使用数据字典 dba_ 打头的数据字典
select
user_tab_columns.table_name,user_tab_comments.comments as tablename,
user_tab_columns.COLUMN_NAME,user_col_comments.comments,
user_tab_columns.data_type||'('||user_tab_columns.data_length||')',
user_tab_columns.COLUMN_ID
from user_tab_columns,user_col_comments,user_tab_comments
where user_tab_columns.TABLE_NAME=user_tab_comments.table_name
and user_tab_columns.TABLE_NAME=user_col_comments.table_name
and user_tab_columns.COLUMN_NAME=user_col_comments.column_name
and user_tab_columns.table_name like '表名%' order by user_tab_columns.COLUMN_ID
--表名大写,或者使用upper('brc_21bank_custrisk'),以创建表的字段顺序(column_id)排序

MySQL

导入与导出

MySQL中我使用最多的是sql文件的方式导入与导出

  1. 登录MySQL
mysql?‐uroot?‐proot
  1. 选中需要操作的数据库
user db1;
  1. 使用source命令导出
source?C:\bak.sql

导入也需要先登录系统,并选中数据库(这个数据库需要提前建好,一个空数据库)

使用SOURCE命令

mysql?‐uroot?‐proot

create database db1;

user db1;

SOURCE?导入文件的路径;

查询语句

如果是null设置默认值

ifnull(表达式1,表达式2)方法 : 若表达式1的值为null,则返回表达式2的结果;若表达式1的值不为null,则返回表达式1的值 ifnull(age, 0)

SELECT?COUNT(IFNULL(english,0))?FROM?student3;

设置小数位数

可以使用cast(数值 as decimal(总位数,小数位))设置小数的位数

select cast(avg(price) as decimal(5,2)) from products;     

数据字典

SELECT
    table_schema,
    table_name,
    column_name,
    column_type,
    column_comment
FROM
    information_schema.`COLUMNS`
WHERE
    table_schema = '数据库名';

MYSQL忘记密码

  1. 使用管理员运行cmd ---> net stop mysql停止mysql服务
  2. 使用无验证方式启动mysql服务:mysqld --skip-grant-tables
  3. 打开新的cmd窗口,直接输入mysql,回车登录成功
  4. user mysql;
  5. set password for ‘用户名‘@‘主机名‘ = password(‘新密码‘);或者 update user set password = password(‘新密码‘) where user = ‘用户名‘;
  6. 关闭两个窗口
  7. 打开任务管理器,手动结束mysqld.exe进程
  8. 启动mysql服务 ---> net start mysql
  9. 使用新密码登录即可

原文地址:https://www.cnblogs.com/lz2017/p/10731754.html

时间: 2024-08-03 16:08:56

关于Oracle与MySQL的使用总结的相关文章

oracle、mysql时区设置对timestamp的不同影响

因最近国际去Oracle上MySQL,这就不可避免的涉及到时区和timestamp问题.做一下实验,总结一下. Oracle 首先看下oracle concepts对timestamp的定义: The TIMESTAMP data type is an extension of the DATE data type. It stores fractional seconds in addition to the information stored in the DATE data type.

Oracle也Mysql的区别

Mysql与Oracle区别总结如下:1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高.2. Oracle支持大并发,大访问量,是OLTP最好的工具.3. 安装所用的空间差别也是很大的,Mysql安装完后才152M而Oracle有3G左右,且使用的时候Oracle占用特别大的内存空间和其他机器性能.4.Oracle也Mysql操作上的一些区别①主键Mysql一般使用自动增长类型,在创

数据库笔试面试题库(Oracle、MySQL等)

数据库笔试面试题库(Oracle.MySQL等) ⊙ [DB笔试面试67]在Oracle中,关于表分区下列描述不正确的是()⊙ [DB笔试面试65]在Oracle中,哪一种表分区方式建议的分区数是2的幂(2.4.8等),以获得最平均的数据发布()⊙ [DB笔试面试63]要以NAME's address is ADDR格式返回数据,以下SQL语句正确的是⊙ [DB笔试面试61]以下关于数据模型要求错误的是()⊙ [DB笔试面试59]以下关于视图叙述不正确的是()⊙ [DB笔试面试57]下列关于SQ

数据库迁移之从oracle 到 MySQL

方式一: 手动方式导入导出 手动的方式导入, 就是操作步骤会比较繁琐一些. 对Table 的结构和数据: 1. 使用 SQL Developer 把 oracle 的 table 的schema 和 Data(.sql 和 .xls) 导出 2. 使用 MySQL 的 WorkBench 创建 Table 和导入数据. 这里语法上会稍微有一些不同, 所以需要略微做一些调整. 对于View 来说, 特别是复杂的有子查询的Oracle View 说, 要导入到MySQL 看起来就不是那么容易了. 方

oracle转Mysql中,varchar2(10)和number应该转换为什么类型? (转)

一. varchar2(10)和number应该转换为什么类型? oracle转成mysql时:varchar2(10)可以转成varchar(10)number则要看oracle中存储的具体是什么类型的数据:1.如果是整型,那么mysql中,用int即可:2.如果是带小数位的,那么mysql中可用numeric类型. 注:mysql中没有varchar2(10)和number这两个数据类型 二. Mysql varchar VS Oracle varchar2 mysql和oracle做数据同

oracle迁移mysql数据库注意

oracle转mysql修改: 1. substr() substr( string , 0, 10) 这里测试 必须从 第一位获取 既是 substr(string , 1 , 10)2. to_char() 只能用做oracle的函数,兼容oracle和mysql故 改为concat( … , '');  这里 使用了两个, 一个 是将类似 int 转为 string 3. select * from (select * from table2)   这里 要加别名4. nvl函数 被改为

SqlServer 、Oracle 、MySql 的区别

一.sqlserver 优点: 易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能.与许多其他服务器软件紧密关联的集成性.良好的性价比等: 为数据管理与分析带来了灵活性,允许单位在快速变化的环境中从容响应,从而获得竞争优势.从数据管理和分析角度看,将原始数据转化为商业智能和充分利用Web带来的机会非常重要.作为一个完备的数据库和数据分析包,SQLServer为快速开发新一代企业级商业应用程序.为企业赢得核心竞争优势打开了胜利之门.作为重要的基准测试可伸缩性和速度奖的记录保持者,SQLS

Oracle、MySql、Sql Server比对

1.    价格 MySql:廉价(部分免费):当前,MySQL採用双重授权(DualLicensed),他们是GPL和MySQLAB制定的商业许可协议.假设你在一个遵循GPL的自由(开源)项目中使用MySQL,那么你能够遵循GPL协议免费使用MySQL.否则,你须要购买MySQLAB制定的那个商业许可协议.Windows $200,Unix或Linux自行安装免费,.Unix或Linux第三方安装$200. Sql Server:适中. SQL 2008 标准版:[1CPU 无限用户 R2 版

Oracle与Mysql主键、索引及分页的区别小结

Oracle与Mysql主键.索引及分页的区别,学习oracle的朋友可以参考下 区别: 1.主键,Oracle不可以实现自增,mysql可以实现自增. oracle新建序列,SEQ_USER_Id.nextval 2.索引: mysql索引从0开始,Oracle从1开始. 3.分页, mysql: select * from user order by desc limit n ,m. 表示,从第n条数据开始查找,一共查找m条数据. Oracle:select * from user sele

mybatis的jdbcType和javaType、oracle,MySQL的对应类型

Mybatis中jdbcType和javaType的对应关系 1 JDBC Type Java Type 2 CHAR String 3 VARCHAR String 4 LONGVARCHAR String 5 NUMERIC java.math.BigDecimal 6 DECIMAL java.math.BigDecimal 7 BIT boolean 8 BOOLEAN boolean 9 TINYINT byte 10 SMALLINT short 11 INTEGER int 12