平时使用的比较多的数据库管理系统就是Oracle
和MySQL
,我在这里记录下使用过程当中的遇到的问题以及解决方案,以备不时之需java
Oracle建立数据的代价仍是比较大的,因此使用表空间的概念,每一个表空间相互独立。这里记录的操做包括从建立表空间、建立用户并分配表空间、受权用户这一系列操做mysql
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
文件、数据泵方式进行导入与导出sql
.dmp
文件命令语句为 imp 用户名/密码@实例名 file=d:\data\x.dmp log=d:\data\x.log full=y ignore=y; 其中:file 表示待导入的dmp文件位置; log 指定导入过程log的记录文件位置,注意,即便指定了将记录保存到log文件里,屏幕打印也不会关闭; full 表示将dmp所有内容导入; ignore 表示忽略表建立过程当中的错误,好比表名已存在时将直接覆盖原来表的内容;
.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 就能够了
@文件名
CREATE OR REPLACE DIRECTORY BM as 'D:\bm' --D:\bm 手动建立 grant read,write on directory 目录名 to 用户名 --revoke read,write on directory BM from als7zx04 --收回目录的读写权限
impdp 用户名/密码@数据库实例 directory=目录名 dumpfile='数据泵文件名'full=y ignore=y; --数据泵文件名不要写全路径
这里的查询不是说如何查询表,而是查询一些与系统有关的信息session
select username,default_tablespace from dba_users where username='用户名'; --用户名大写
select instance_name from v$instance;
数据库实例名(instance_name)用于对外部链接。在操做系统中要取得与数据库的联系,必须使用数据库实例名。好比咱们做开发,要链接数据库,就得链接数据库实例名:oracle
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';
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
app
--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 格式化
select to_char(add_months(sysdate,-1),'yyyymm') from dual;
--语法 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'))
查询表的表名,字段名,字段类型,注释spa
--若是还须要查询系统中的表 使用数据字典 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
中我使用最多的是sql
文件的方式导入与导出操作系统
mysql ‐uroot ‐proot
user db1;
source
命令导出source C:\bak.sql
导入也须要先登陆系统,并选中数据库(这个数据库须要提早建好,一个空数据库)code
使用SOURCE
命令
mysql ‐uroot ‐proot create database db1; user db1; SOURCE 导入文件的路径;
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
忘记密码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