关于Oracle与MySQL的使用总结
平时使用的比较多的数据库管理系统就是Oracle
和MySQL
,我在这里记录下使用过程中的遇到的问题以及解决方案,以备不时之需
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/manager@TEST file=d:\test.dmp full=y
2. 将数据库中system用户与sys用户下的对象导出 (用户)
exp system/manager@TEST file=d:\test.dmp owner=(system,sys)
3. 将数据库中的表table1 、table2导出 (表),只导出表
exp system/manager@TEST file=d:\test.dmp tables=(table1,table2)
4. 将数据库中的表table1中的字段filed1以”00”打头的数据导出
exp system/manager@TEST 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 导入数据泵
- 创建与数据泵文件(也是个.dmp文件)相同的表空间
- 创建数据泵文件相同的用户并分配表空间
- 授予一些权限给用户(有时候还是需要dba权限)
- 创建一个目录,并分配读写权限
CREATE OR REPLACE DIRECTORY BM as 'D:\bm' --D:\bm 手动创建
grant read,write on directory 目录名 to 用户名
--revoke read,write on directory BM from als7zx04 --收回目录的读写权限
- 将数据泵文件放在目录下,这里是D:\bm 下
- 使用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
文件的方式导入与导出
- 登录MySQL
mysql ‐uroot ‐proot
- 选中需要操作的数据库
user db1;
- 使用
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 = '数据库名';
增强版:
SELECT
a.TABLE_SCHEMA AS '数据库名',
a.TABLE_NAME AS '表名',
b.TABLE_COMMENT AS '表备注',
a.ORDINAL_POSITION AS '序号',
a.COLUMN_NAME AS '字段名',
a.COLUMN_TYPE AS '字段类型',
a.COLUMN_DEFAULT AS '默认值',
a.IS_NULLABLE AS '是否为空',
a.COLUMN_COMMENT AS '字段备注',
a.COLUMN_KEY AS '键',
a.EXTRA AS '额外'
FROM
information_schema. COLUMNS a
LEFT JOIN (
SELECT
TABLE_COMMENT,
TABLE_NAME
FROM
information_schema. TABLES
WHERE
TABLE_SCHEMA = '数据库名'
) b ON a.TABLE_NAME = b.TABLE_NAME
WHERE
a.TABLE_SCHEMA = '数据库名'
ORDER BY
b.TABLE_NAME
MYSQL
忘记密码
- 使用管理员运行
cmd
--->net stop mysql
停止mysql
服务 - 使用无验证方式启动
mysql
服务:mysqld --skip-grant-tables
- 打开新的
cmd
窗口,直接输入mysql
,回车登录成功 user mysql;
set password for '用户名'@'主机名' = password('新密码');
或者update user set password = password('新密码') where user = '用户名';
- 关闭两个窗口
- 打开任务管理器,手动结束
mysqld.exe
进程 - 启动
mysql
服务 --->net start mysql
- 使用新密码登录即可
关于Oracle与MySQL的使用总结的更多相关文章
- Oracle转MySQL
1. to_date 直接去掉 例如 select log.id from CM_LOGINLOG log where log.orgid =? and log.isAuto =? and lo ...
- Oracle、MySql、SQLServer数据分页查询
看过此博文后Oracle.MySql.SQLServer 数据分页查询,在根据公司的RegionRes表格做出了 SQLserver的分页查询语句: 别名.字段 FROM( SELECT row_nu ...
- oracle迁移mysql数据库注意
oracle转mysql修改: . substr() substr( string , 0, 10) 这里测试 必须从 第一位获取 既是 substr(string , 1 , 10)2. to_ch ...
- Oracle与MySQL的区别
1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高. 2. Oracle支持大并发,大访 ...
- 配置ogg目录索引-oracle与mysql的双向同步步骤
以下几篇文章描述了利用ogg对oracle与mysql进行双向同步的配置过程以及注意事项,欢迎参考. 配置ogg异构oracle-mysql(1)基础环境配置 http://www.cnblogs.c ...
- Loadrunner参数化连接oracle、mysql数据源报错及解决办法
Loadrunner参数化连接oracle.mysql数据源报错及解决办法 (本人系统是Win7 64, 两位小伙伴因为是默认安装lr,安装在 最终参数化的时候,出现连接字符串无法自动加载出来: 最 ...
- oracle转Mysql中,varchar2(10)和number应该转换为什么类型?
一. varchar2(10)和number应该转换为什么类型? oracle转成mysql时:varchar2(10)可以转成varchar(10)number则要看oracle中存储的具体是什么类 ...
- 数据库迁移之从oracle 到 MySQL
方式一: 手动方式导入导出 手动的方式导入, 就是操作步骤会比较繁琐一些. 对Table 的结构和数据: 1. 使用 SQL Developer 把 oracle 的 table 的schema 和 ...
- Oracle使用goldengate分别向Oracle和mysql双路的单向复制
一.Oracle分别向Oracle和mysql双路的单向复制是在: ORACLE-mysql的单向复制基础上做的.http://blog.csdn.net/q947817003/article/det ...
- [数据库]Oracle和mysql中的分页总结
Mysql中的分页 物理分页 •在sql查询时,从数据库只检索分页需要的数据 •通常不同的数据库有着不同的物理分页语句 •mysql物理分页,采用limit关键字 •例如:检索11-20条 selec ...
随机推荐
- HAWQ + MADlib 玩转数据挖掘之(六)——主成分分析与主成分投影
一.主成分分析(Principal Component Analysis,PCA)简介 在数据挖掘中经常会遇到多个变量的问题,而且在多数情况下,多个变量之间常常存在一定的相关性.例如,网站的" ...
- Nuxt.js实践篇
nuxt.js 追求完美,相信大家都是这样的.因为前后端分离的弊端性,在项目构建时,浏览器并不会捕捉到项目的内容,所以开始,笔者决定引入nuxt.js文件来配合vue完成Server Slider R ...
- 度限制最小生成树 POJ 1639 贪心+DFS+prim
很好的解题报告: http://blog.csdn.net/new_c_yuer/article/details/6365689 注意两点: 1.预处理环中权值最大的边···· 2.可以把去掉度限制后 ...
- LG2945 【[USACO09MAR]沙堡Sand Castle】
经典的贪心模型,常规思路:将M和B排序即可 看到没有人用优先队列,于是我的showtime到了 说下思路: 读入时将数加入啊a,b堆中,不用处理(二叉堆本来就有有序的性质) 读完后逐个判断,照题目模拟 ...
- benthos stream 处理工具说明
benthos 是golang 编写的流处理工具,同时也可以作为一个类库使用,当前支持的source sink 还是比较全的 (kafka rabbitmq http service s3 redis ...
- smarty学习——编程知识
smarty 提供了丰富的api 接口可以方便我们进行操作: 1.clear_all_assign清除所有赋值 2.clear_all_cache清除所有缓存 3.clear_assign清除赋值 4 ...
- 根据IP获得城市信息(百度API的运用)
/** * 根据IP获取城市 * @param string $ip ip地址 * @return array * http://api.map.baidu.c ...
- slf4j-api、slf4j-log4j12、log4j 之间是什么关系?
slf4j:Simple Logging Facade for Java,为java提供的简单日志Facade.Facade:门面,更底层一点说就是接口.他允许用户以自己的喜好,在工程中通过slf4j ...
- es 中的 Set 和 Map
Set 函数可以接受一个数组(或者具有 iterable 接口的其他数据结构)作为参数,用来初始化.
- PHP安全相关的配置(1)
PHP作为一门强大的脚本语言被越来越多的web应用程序采用,不规范的php安全配置可能会带来敏感信息泄漏.SQL注射.远程包含等问题,规范的安全配置可保障最基本的安全环境.下面我们分析几个会引发安全问 ...