日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

关于Oracle与MySQL的使用总结

發(fā)布時間:2024/7/5 数据库 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于Oracle与MySQL的使用总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

平時使用的比較多的數(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ù)泵

  • 創(chuàng)建與數(shù)據(jù)泵文件(也是個.dmp文件)相同的表空間
  • 創(chuàng)建數(shù)據(jù)泵文件相同的用戶并分配表空間
  • 授予一些權(quán)限給用戶(有時候還是需要dba權(quán)限)
  • 創(chuàng)建一個目錄,并分配讀寫權(quán)限
  • CREATE OR REPLACE DIRECTORY BM as 'D:\bm' --D:\bm 手動創(chuàng)建grant read,write on directory 目錄名 to 用戶名 --revoke read,write on directory BM from als7zx04 --收回目錄的讀寫權(quán)限
  • 將數(shù)據(jù)泵文件放在目錄下,這里是D:\bm 下
  • 使用impdp導(dǎo)入
  • impdp 用戶名/密碼@數(shù)據(jù)庫實例 directory=目錄名 dumpfile='數(shù)據(jù)泵文件名'full=y ignore=y; --數(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)出

  • 登錄MySQL
  • mysql?‐uroot?‐proot
  • 選中需要操作的數(shù)據(jù)庫
  • user db1;
  • 使用source命令導(dǎo)出
  • source?C:\bak.sql

    導(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忘記密碼

  • 使用管理員運行cmd ---> net stop mysql停止mysql服務(wù)
  • 使用無驗證方式啟動mysql服務(wù):mysqld --skip-grant-tables
  • 打開新的cmd窗口,直接輸入mysql,回車登錄成功
  • user mysql;
  • set password for '用戶名'@'主機(jī)名' = password('新密碼');或者 update user set password = password('新密碼') where user = '用戶名';
  • 關(guān)閉兩個窗口
  • 打開任務(wù)管理器,手動結(jié)束mysqld.exe進(jìn)程
  • 啟動mysql服務(wù) ---> net start mysql
  • 使用新密碼登錄即可
  • 轉(zhuǎn)載于:https://www.cnblogs.com/lz2017/p/10731754.html

    總結(jié)

    以上是生活随笔為你收集整理的关于Oracle与MySQL的使用总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。