关于Oracle与MySQL的使用总结
平時使用的比較多的數(shù)據(jù)庫管理系統(tǒng)就是Oracle和MySQL,我在這里記錄下使用過程中的遇到的問題以及解決方案,以備不時之需
Oracle
關(guān)于表空間
Oracle創(chuàng)建數(shù)據(jù)的代價還是比較大的,所以使用表空間的概念,每個表空間相互獨立。這里記錄的操作包括從創(chuàng)建表空間、創(chuàng)建用戶并分配表空間、授權(quán)用戶這一系列操作
創(chuàng)建表空間
create tablespace db_test datafile 'D:\app\Administrator\oradata\orcl\db_test.dbf' --表空間文件位置 size 50m --初始大小 autoextend on --自動增長創(chuàng)建用戶并分配表空間
CREATE USER utest --用戶名 IDENTIFIED BY utestpwd --密碼 DEFAULT TABLESPACE db_test --分配表空間授予一些權(quán)限給用戶
grant create session to utest --或者是CONNECT grant RESOURCE to utest --grant dba to utes導(dǎo)入與導(dǎo)出
Oracle可以使用dmp文件、sql文件、數(shù)據(jù)泵方式進(jìn)行導(dǎo)入與導(dǎo)出
Oracle導(dǎo)入.dmp文件
命令語句為 imp 用戶名/密碼@實例名 file=d:\data\x.dmp log=d:\data\x.log full=y ignore=y;其中:file 表示待導(dǎo)入的dmp文件位置; log 指定導(dǎo)入過程log的記錄文件位置,注意,即使指定了將記錄保存到log文件里,屏幕打印也不會關(guān)閉;full 表示將dmp全部內(nèi)容導(dǎo)入;ignore 表示忽略表創(chuàng)建過程中的錯誤,比如表名已存在時將直接覆蓋原來表的內(nèi)容;Oracle導(dǎo)出.dmp文件
exp有三種主要的方式(完全、用戶、表)
1. 將數(shù)據(jù)庫TEST完全導(dǎo)出,用戶名system 密碼manager 導(dǎo)出到D:\daochu.dmp中 (完全) DBA權(quán)限exp system/manager@TEST file=d:\test.dmp full=y 2. 將數(shù)據(jù)庫中system用戶與sys用戶下的對象導(dǎo)出 (用戶)exp system/manager@TEST file=d:\test.dmp owner=(system,sys) 3. 將數(shù)據(jù)庫中的表table1 、table2導(dǎo)出 (表),只導(dǎo)出表exp system/manager@TEST file=d:\test.dmp tables=(table1,table2) 4. 將數(shù)據(jù)庫中的表table1中的字段filed1以”00”打頭的數(shù)據(jù)導(dǎo)出 exp system/manager@TEST file=d:\test.dmp tables=(table1) query=\” where filed1 like ‘00%’\” 5. 只導(dǎo)出表table1結(jié)構(gòu),不導(dǎo)出數(shù)據(jù)exp userid=uname/pwd tables=table1 file=d:\test.dmp rows=n; 上面是常用的導(dǎo)出,對于壓縮我不太在意,用winzip把dmp文件可以很好的壓縮。 不過在上面命令后面加上 compress=y 就可以了Oracle導(dǎo)入.sql文件
@文件名oracle 導(dǎo)入數(shù)據(jù)泵
系統(tǒng)查詢
這里的查詢不是說如何查詢表,而是查詢一些與系統(tǒng)有關(guān)的信息
oracle怎么查看用戶屬于哪個表空間
select username,default_tablespace from dba_users where username='用戶名'; --用戶名大寫查詢當(dāng)前數(shù)據(jù)庫實例名
select instance_name from v$instance;數(shù)據(jù)庫實例名(instance_name)用于對外部連接。在操作系統(tǒng)中要取得與數(shù)據(jù)庫的聯(lián)系,必須使用數(shù)據(jù)庫實例名。比如我們作開發(fā),要連接數(shù)據(jù)庫,就得連接數(shù)據(jù)庫實例名:
jdbc:oracle:thin:@localhost:1521:orcl(orcl就為數(shù)據(jù)庫實例名)查詢表個數(shù)
select table_name from user_tables; --當(dāng)前用戶擁有的表 --select count(1) from tabs; --select count(1) from user_tables;select table_name from all_tables; --所有用戶的表 select table_name from dba_tables; --包括系統(tǒng)表 select table_name from dba_tables where owner='用戶名'--類似的,除了表,還有視圖、存儲過程、同義詞等等對象,使用[DBA|USER|ALL]_TABLES可以查看到你想要的對象查看數(shù)據(jù)庫對象,可以發(fā)現(xiàn)同名數(shù)據(jù)庫對象被占用的問題
--對象名為GETORGNAME SELECT OBJECT_NAME,OBJECT_TYPE FROM USER_OBJECTS WHERE OBJECT_NAME='GETORGNAME';創(chuàng)建表空間
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等的數(shù)值怎么寫 SELECT to_char(2,'fm00') FROM dual; --結(jié)果 02 SELECT to_char(2,'fm999.00') FROM dual; --結(jié)果 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 將當(dāng)前時間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'))數(shù)據(jù)字典
查詢表的表名,字段名,字段類型,注釋
--如果還需要查詢系統(tǒng)中的表 使用數(shù)據(jù)字典 dba_ 打頭的數(shù)據(jù)字典 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'),以創(chuàng)建表的字段順序(column_id)排序MySQL
導(dǎo)入與導(dǎo)出
MySQL中我使用最多的是sql文件的方式導(dǎo)入與導(dǎo)出
導(dǎo)入也需要先登錄系統(tǒng),并選中數(shù)據(jù)庫(這個數(shù)據(jù)庫需要提前建好,一個空數(shù)據(jù)庫)
使用SOURCE命令
mysql?‐uroot?‐prootcreate database db1;user db1;SOURCE?導(dǎo)入文件的路徑;查詢語句
如果是null設(shè)置默認(rèn)值
ifnull(表達(dá)式1,表達(dá)式2)方法 : 若表達(dá)式1的值為null,則返回表達(dá)式2的結(jié)果;若表達(dá)式1的值不為null,則返回表達(dá)式1的值 ifnull(age, 0)
SELECT?COUNT(IFNULL(english,0))?FROM?student3;設(shè)置小數(shù)位數(shù)
可以使用cast(數(shù)值 as decimal(總位數(shù),小數(shù)位))設(shè)置小數(shù)的位數(shù)
select cast(avg(price) as decimal(5,2)) from products;數(shù)據(jù)字典
SELECTtable_schema,table_name,column_name,column_type,column_comment FROMinformation_schema.`COLUMNS` WHEREtable_schema = '數(shù)據(jù)庫名';MYSQL忘記密碼
轉(zhuǎn)載于:https://www.cnblogs.com/lz2017/p/10731754.html
總結(jié)
以上是生活随笔為你收集整理的关于Oracle与MySQL的使用总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis数据持久化、数据备份、数据的故
- 下一篇: mysql报错:Expression #