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

Oracle

关于表空间

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

创建表空间

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

创建用户并分配表空间

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

授予一些权限给用户

  1. grant create session to utest --或者是CONNECT
  2. grant RESOURCE to utest
  3. --grant dba to utes

导入与导出

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

Oracle导入.dmp文件

  1. 命令语句为 imp 用户名/密码@实例名 file=d:\data\x.dmp log=d:\data\x.log full=y ignore=y;
  2. 其中:file 表示待导入的dmp文件位置;
  3. log 指定导入过程log的记录文件位置,注意,即使指定了将记录保存到log文件里,屏幕打印也不会关闭;
  4. full 表示将dmp全部内容导入;
  5. ignore 表示忽略表创建过程中的错误,比如表名已存在时将直接覆盖原来表的内容;

Oracle导出.dmp文件

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

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

Oracle导入.sql文件

  1. @文件名

oracle 导入数据泵

  1. 创建与数据泵文件(也是个.dmp文件)相同的表空间
  2. 创建数据泵文件相同的用户并分配表空间
  3. 授予一些权限给用户(有时候还是需要dba权限)
  4. 创建一个目录,并分配读写权限
  1. CREATE OR REPLACE DIRECTORY BM as 'D:\bm' --D:\bm 手动创建
  2. grant read,write on directory 目录名 to 用户名
  3. --revoke read,write on directory BM from als7zx04 --收回目录的读写权限
  1. 将数据泵文件放在目录下,这里是D:\bm 下
  2. 使用impdp导入
  1. impdp 用户名/密码@数据库实例 directory=目录名 dumpfile='数据泵文件名'full=y ignore=y; --数据泵文件名不要写全路径

系统查询

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

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

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

查询当前数据库实例名

  1. select instance_name from v$instance;

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

  1. jdbc:oracle:thin:@localhost:1521:orclorcl就为数据库实例名)

查询表个数

  1. select table_name from user_tables; --当前用户拥有的表
  2. --select count(1) from tabs;
  3. --select count(1) from user_tables;
  4. select table_name from all_tables; --所有用户的表
  5. select table_name from dba_tables; --包括系统表
  6. select table_name from dba_tables where owner='用户名'
  7. --类似的,除了表,还有视图、存储过程、同义词等等对象,使用[DBA|USER|ALL]_TABLES可以查看到你想要的对象

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

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

创建表空间

Oracle查看哪些表被锁了

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

解除锁定

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

查询语句

这里是一些特殊的SELECT

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

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

格式化时间

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

Oracle查询上一月

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

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

  1. --语法
  2. extract (
  3. { year | month | day | hour | minute | second }
  4. | { timezone_hour | timezone_minute }
  5. | { timezone_region | timezone_abbr }
  6. from { date_value | interval_value } )
  7. --例子(从一个日期里提取年,月,日)
  8. select extract (year from sysdate) year, extract (month from sysdate) month, extract (day from sysdate) day from dual;
  9. --EXTRACT(MONTH FROM TO_DATE(MIN(A1.EARLIESTDUEBILLPUTOUTMON),'YYYY-MM-DD'))

数据字典

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

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

MySQL

导入与导出

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

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

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

使用SOURCE命令

  1. mysql uroot proot
  2. create database db1;
  3. user db1;
  4. SOURCE 导入文件的路径;

查询语句

如果是null设置默认值

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

  1. SELECT COUNT(IFNULL(english,0)) FROM student3;

设置小数位数

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

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

数据字典

  1. SELECT
  2. table_schema,
  3. table_name,
  4. column_name,
  5. column_type,
  6. column_comment
  7. FROM
  8. information_schema.`COLUMNS`
  9. WHERE
  10. table_schema = '数据库名';

增强版:

  1. SELECT
  2. a.TABLE_SCHEMA AS '数据库名',
  3. a.TABLE_NAME AS '表名',
  4. b.TABLE_COMMENT AS '表备注',
  5. a.ORDINAL_POSITION AS '序号',
  6. a.COLUMN_NAME AS '字段名',
  7. a.COLUMN_TYPE AS '字段类型',
  8. a.COLUMN_DEFAULT AS '默认值',
  9. a.IS_NULLABLE AS '是否为空',
  10. a.COLUMN_COMMENT AS '字段备注',
  11. a.COLUMN_KEY AS '键',
  12. a.EXTRA AS '额外'
  13. FROM
  14. information_schema. COLUMNS a
  15. LEFT JOIN (
  16. SELECT
  17. TABLE_COMMENT,
  18. TABLE_NAME
  19. FROM
  20. information_schema. TABLES
  21. WHERE
  22. TABLE_SCHEMA = '数据库名'
  23. ) b ON a.TABLE_NAME = b.TABLE_NAME
  24. WHERE
  25. a.TABLE_SCHEMA = '数据库名'
  26. ORDER BY
  27. b.TABLE_NAME

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. 使用新密码登录即可

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

  1. Oracle转MySQL

    1. to_date 直接去掉 例如 select log.id from CM_LOGINLOG log  where log.orgid =?  and log.isAuto =?  and lo ...

  2. Oracle、MySql、SQLServer数据分页查询

    看过此博文后Oracle.MySql.SQLServer 数据分页查询,在根据公司的RegionRes表格做出了 SQLserver的分页查询语句: 别名.字段 FROM( SELECT row_nu ...

  3. oracle迁移mysql数据库注意

    oracle转mysql修改: . substr() substr( string , 0, 10) 这里测试 必须从 第一位获取 既是 substr(string , 1 , 10)2. to_ch ...

  4. Oracle与MySQL的区别

    1. Oracle是大型数据库而Mysql是中小型数据库,Oracle市场占有率达40%,Mysql只有20%左右,同时Mysql是开源的而Oracle价格非常高. 2. Oracle支持大并发,大访 ...

  5. 配置ogg目录索引-oracle与mysql的双向同步步骤

    以下几篇文章描述了利用ogg对oracle与mysql进行双向同步的配置过程以及注意事项,欢迎参考. 配置ogg异构oracle-mysql(1)基础环境配置 http://www.cnblogs.c ...

  6. Loadrunner参数化连接oracle、mysql数据源报错及解决办法

    Loadrunner参数化连接oracle.mysql数据源报错及解决办法 (本人系统是Win7 64,  两位小伙伴因为是默认安装lr,安装在 最终参数化的时候,出现连接字符串无法自动加载出来: 最 ...

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

    一. varchar2(10)和number应该转换为什么类型? oracle转成mysql时:varchar2(10)可以转成varchar(10)number则要看oracle中存储的具体是什么类 ...

  8. 数据库迁移之从oracle 到 MySQL

    方式一: 手动方式导入导出 手动的方式导入, 就是操作步骤会比较繁琐一些. 对Table 的结构和数据: 1. 使用 SQL Developer 把 oracle 的 table 的schema 和 ...

  9. Oracle使用goldengate分别向Oracle和mysql双路的单向复制

    一.Oracle分别向Oracle和mysql双路的单向复制是在: ORACLE-mysql的单向复制基础上做的.http://blog.csdn.net/q947817003/article/det ...

  10. [数据库]Oracle和mysql中的分页总结

    Mysql中的分页 物理分页 •在sql查询时,从数据库只检索分页需要的数据 •通常不同的数据库有着不同的物理分页语句 •mysql物理分页,采用limit关键字 •例如:检索11-20条 selec ...

随机推荐

  1. ios 从网络上获取图片

    -(UIImage *) getImageFromURL:(NSString *)fileURL { NSLog(@"执行图片下载函数"); UIImage * result; N ...

  2. kindle看扫描版pdf的解决办法

    (1)先把PDF crop (2)转JPEG (3)JPEG根据kindle的屏幕的分辨率,调整JPEG图像大小,kindle whater paper 大小为1448*1072 (4)   最后把j ...

  3. caffe安装编译问题-ImportError: No module named caffe

    问题描述 ~/Downloads/caffe$ python Python (default, Dec , ::) [GCC ] on linux2 Type "help", &q ...

  4. STM32 RTC时钟的配置

    1) 使能电源时钟和备份区域时钟. RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); //使能电源时钟和 ...

  5. Audition CS6在Win 7中“音频输入的采样频率与输出设备不匹配”问题的解决 - imsoft.cnblogs

    1.运行Audion CS6,出现问题框. 2.右击任务栏右下方的那个小喇叭图标,在弹出的提示框里,单击“播放设备”.如图: 3.单击“播放设备”后,在图内左键单击“扬声器”然后双击“扬声器”,出现下 ...

  6. hdu1255 覆盖的面积 线段树-扫描线

    矩形面积并 线段树-扫描线裸题 #include<stdio.h> #include<string.h> #include<algorithm> #include& ...

  7. dbt 包依赖简单测试

    dbt 包含一个自己的包管理,可以使用git 等工具,还是很方便的,可以方便的进行代码共享,实现复用 创建简单包 实际上就是一个简单的dbt 项目,参考项目 https://gitlab.com/da ...

  8. window.open()与window.showModalDialog

    弹出窗口两种方式:    1.window.showModalDialog:      var feature = "dialogWidth:615px;dialogHeight:505px ...

  9. 模板引擎之jade 学习

    jade 模板引擎在node express 开发中有较多的使用,首先我们看一个简单的使用jade 生成的html 页面的标签代码: doctype html html(lang="en&q ...

  10. 系列文章--jQuery教程

    从零开始学习jQuery (一) 开天辟地入门篇 从零开始学习jQuery (二) 万能的选择器 从零开始学习jQuery (三) 管理jQuery包装集 从零开始学习jQuery (四) 使用jQu ...