1.在命令提示符提示下進入SQL環(huán)境
1.sqlplus/nolog
進入SQL環(huán)境,然后再使用connect命令以sysdba角色連接sys用戶 connect sys as sysdba
斷開當前用戶的連接:disconnect
然后創(chuàng)建自己的用戶
2.sqlplus
回車后會逐步提示用戶名和密碼,這里的密碼不顯示
3.sqlplus 用戶名
回車后提示輸入密碼,如果輸入的密碼錯誤將重新輸入用戶名和密碼,這里的密碼也不顯示
例如登錄超級用戶:sqlplus / as sysdba
4.sqlplus 用戶名/密碼
輸入正確的用戶名和對應密碼直接進入到SQL環(huán)境下
2.創(chuàng)建用戶
create user 用戶名 identified by 密碼 [ ACCOUNT LOCK | UNLOCK ]
例如:create user zhangsan identified by zhangsan
3.用戶授權
grant 權限名稱/角色名稱 to 用戶名
例如:grant connect,resource,dba to zhangsan
dba:用戶具有數(shù)據(jù)庫所有的權限,.dmp 是由具有dba角色的用戶導出的,要有相同或更高權限的用戶才能導入該文件
connect:用戶具有連接數(shù)據(jù)庫的權限
resource:用戶可以創(chuàng)建實體
4.刪除權限
revoke 權限名稱或者角色名稱 from 用戶名
例如:revoke connect,resource from zhangsan
5.修改用戶的鎖定/非鎖定狀態(tài)
alter user 所改用戶名 account locl/unlock
6.修改用戶密碼
alter user 所要修改的用戶名 identified by 新密碼
7.導入腳本
可以用start或者@來執(zhí)行指定腳本,但是必須在自己的用戶下
start/@ 指定腳本的目錄+指定腳本的名稱
例如:start/@ D:\database-beginner\scripts\oracle\first_zh_cn.sql
8.查看用戶、表結構和表
顯示當前用戶:show user
查看表結構:desc user_objects;
查看當前用戶下的所有表:select * from user_tab_comments;
查看所有用戶下的所有表:select * from all_tab_comments
9.設置行寬、列格式和頁大小
行寬:
set linesize 所要設置的行寬大小
例如:set linesize 120;
列格式設置:
column 列名 format 格式
例如:column object_name format a20;
例如:修改金錢的顯示格式為:0000.00
頁大小:
set pagesize 所要設置的大小
例如: set pagesize 120;
10.備份與導入
備份:Oracle備份成.dmp文件
exp 賬號/密碼@IP地址:端口號/數(shù)據(jù)庫實例 file=導出數(shù)據(jù)文件存放位置
例如:exp zhangsan/zhangsan@127.0.0.1:1521/TEST file=E:/test_db.dmp
導入:
imp 賬號/密碼@IP地址:端口號/數(shù)據(jù)庫實例名 file=導入數(shù)據(jù)文件存放位置
例如:imp zhangsan/zhangsan@127.0.0.1:1521/TEST file=E:/test_db.dmp
要是導入有問題,在Oracle的安裝目錄下\product\11.2.0\dbhome_1\NETWORK\ADMIN\listener.ora 中的SID_LIST添加以下片段并重啟服務
(SID_DESC =
(GLOBAL_DBNAME = 全局數(shù)據(jù)庫名)
(ORACLE_HOME = Oracle安裝目錄\product\11.2.0\dbhome_1)
(SID_NAME = SID名)
)
并給用戶授予dba的權限
11.設置Oracle數(shù)據(jù)庫的密碼永久有效
查看用戶的proifle是哪個,一般是default
SELECT username,PROFILE FROM dba_users;
查看指定概要文件(如default)的密碼有效期設置
SELECT * FROM dba_profiles s WHERE s.profile='DEFAULT' AND resource_name='PASSWORD_LIFE_TIME';
將密碼有效期由默認的180天修改成“無限制”
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;
如果提示密碼已過期的用戶在設置完成以后還需要重新設置密碼
alter user smsc identified by <原來的密碼>
12.刪除用戶
drop user 用戶名 [cascade]
例如:drop user itlaobing [cascade]
加上 [cascade]是級聯(lián)刪除
13.查詢語句
基本結構:select 被選擇的列 from 被選擇的列對應的表或視圖
基本語法:select 列名…… from 表名 [where 條件] [grounp by 條件] [having 條件] [order by 條件]
查詢當前用戶所擁有的表:select tname from tab;/select table_name from user_tables;
查詢當前用戶擁有的數(shù)據(jù)庫對象:select object_name,object_type from user_objects;
查詢所有的列:select * from 表名或者視圖/select 列名……列名 from 表名
查詢 tab 中的所有列:select * from tab;
?在數(shù)據(jù)庫中默認都是select all…… from ……
帶有重復
?若想去除重復可使用select distinct …… from……
但只影響顯示結果,不影響表內數(shù)據(jù)
?可以使用lower或者upper將所要查詢的內容全轉為小寫或者大寫
14.修改當前會話的日期格式
alter session set nls_date_format =所要設置的日期格式 ;
alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss' ;
15.創(chuàng)建表
創(chuàng)建標準表
?create table 表名(
? 列名 類型( 寬度 ) [ 約束 ]
? [ , 列名 類型(寬度) [ 約束 ] , ...... ]
);
通過查詢語句創(chuàng)建表
CREATE TABLE 表名 AS 查詢語句 ;
例如:CREATE TABLE t_emp AS SELECT empno , ename , job , sal , hiredate FROM emp ;
16.變動表結構
增加列
alter table 表名 add (列名 類型 (寬度) [約束],……)
例如:ALTER TABLE t_students ADD ( married CHAR(1) , birthdate DATE , hometown VARCHAR2(200) ) ;
改列名
alter table 表名 rename column 原列名 to 新列名
例如: ALTER TABLE t_students RENAME COLUMN hometown TO address
修改列
可修改列的類型或者寬度
alter table 表名 modify (列名 類型 (寬度));
?例如:ALTER TABLE t_students MODIFY ( gender VARCHAR2(10) ) ;
刪除列
alter table 表名 drop (列名,……) [cascade constraints]
cascade constraints:表示刪除列的相關約束
例如: ALTER TABLE t_students DROP ( gender , married ) ;
17.重命名表
alter table 原表名 rename to 新表名
例如:ALTER TABLE t_students RENAME TO t_customers ;
rename 原表名 to 新表名
例如:RENAME t_customers TO t_students ;
18.刪除表
刪除到回收站
drop table 表名 [cascade consreaints]
cascade consreaints:表示刪除相關的約束
查看回收站
show recyclebin
使用 show recyclebin 時不要以分號結束,否則可能導致sql*plus退出
清空回收站
purge recyclebin
徹底刪除表
drop table 表名 [cascade consreaints] purge
恢復
?flashback table 原表名 to before drop
19.截斷表
truncate table 表名
作用:將整張表中的所有數(shù)據(jù)刪除,僅保留表的結構,使用rollback也不能將已刪除的數(shù)據(jù)找回
例如:TRUNCATE TABLE t_emp ;
20.插入數(shù)據(jù)
insert into 表名[(列名,……)] values (值……)
例如:insert into t_students(id,name) values (1,‘值’); / insert into t_students values (1,‘值’);
插入空值
INSERT INTO t_users VALUES ( 3 , '皓慕' , NULL , NULL );
注:在數(shù)據(jù)庫中存儲的數(shù)據(jù)是空值
插入引號
INSERT INTO t_users VALUES ( 4 , '皓慕**''**hh' , '男' , ' 12"33" ' );
插入查詢出來的內容
insert into 表名[(列名,……)] 查詢語句
注意不要在查詢語句前使用values
INSERT into x_users SELECT * from t_users ;
批量插入
insert all
? into 表名 (列名,……) values (值……)
? into 表名 (列名,……) values (值……)
select * from dual
例如:
insert all
into t_topics values(1,'哪個不是Java關鍵字',1,null,null)
into t_topics values(2,'哪個不是位運算符',1,null,null)
into t_topics values(null,'哪個不是位運算符',1,null,null)
select 1 from dual
21.更新數(shù)據(jù)
UPDATE 表名 SET 列名 = 新值 [ , 列名 = 新值 , ... ] [ WHERE 條件 ] ;
例如:update t_users set name = “你xx” where id = 3 ;
22.刪除數(shù)據(jù)
DELETE FROM 表名 [ WHERE 條件 ] ;
例如:delete from t_users where id = 3 ;
delete from t_users ;
可使用rollback回滾被刪除的數(shù)據(jù),
23.創(chuàng)建約束
23.1非空約束(not null)
建表時:
CREATE TABLE 表名 (
...
列名 類型(寬度) [ CONSTRAINT 約束名稱 ] NOT NULL ,
...
);
建表后:ALTER TABLE 表名 MODIFY ( 列名 [ CONSTRAINT 約束名 ] NOT NULL ) ;
例如:alter table t_topics modify(id constraint t_topics_id_nn not null);
23.2惟一約束
建表時:
CREATE TABLE 表名 (
...
列名 類型(寬度) [ CONSTRAINT 約束名稱 ] UNIQUE ,
...
);
建表后:ALTER TABLE 表名 MODIFY ( 列名 [ CONSTRAINT 約束名 ] UNIQUE ) ;
或者:ALTER TABLE 表名 ADD CONSTRAINT 約束名 UNIQUE( 列名 );
例如: alter table t_topics add constraint t_topics unique(title);
23.3缺省約束(default)
建表時:
CREATE TABLE 表名 (
...
列名 類型(寬度) DEFAULT 默認值 ,
...
);
建表后:ALTER TABLE 表名 MODIFY ( 列名 DEFAULT 默認值 ) ;
綜上結合例如:
create table t_monkey(
id number(8) constraint t_monkey_id_nn not null,
name varchar2(30) constraint t_monkey_name_uk unique,
birthdate date default current_date
);
23.4主鍵約束
建表時:
CREATE TABLE 表名 (
...
列名 類型(寬度) [ CONSTRAINT 約束名稱 ] PRIMARY KEY ,
...
);
或者:
CREATE TABLE 表名 (
...
列名 類型(寬度) ,
...
[ CONSTRAINT 約束名稱 ] PRIMARY KEY( 列名 [ , 列名 , ... ] ) ,
...
);
建表后:ALTER TABLE 表名 MODIFY ( 列名 [ CONSTRAINT 約束名 ] PRIMARY KEY ) ;
或者:ALTER TABLE 表名 ADD [ CONSTRAINT 約束名 ] PRIMARY KEY( 列名 [ , 列名 , ... ] );
例如:
create table t_options(
id number(10),
content varchar2(100),
code varchar2(500),
is_key char(1),
constraints t_options_id_pk primary key(id)
);
聯(lián)合主鍵:
create table t_score(
student_id number(5),
course_id number(5),
exam_time date,
score number(4,1),
constraint t_score_sid_cid_time_pk primary key(student_id,course_id,exam_time)
);
23.5檢查約束(check)
注:Oracle數(shù)據(jù)庫支持檢查約束,MySQL數(shù)據(jù)庫不支持檢查約束
CREATE TABLE 表名 (
...
[ CONSTRAINT 約束名稱 ] CHECK( 表達式 ) ,
...
);
例如:
create table t_users(
id number(10),
username varchar2(20) constraint t_users_username_nn not null constraint t_users_username_uk unique,
password varchar2(40) constraint t_users_password_nn not null,
constraint t_users_id_pk primary key(id),
constraint t_users_id_username_ck check(id>1000 and length(username)>5)
)
23.6外鍵約束(foreign key)
首先要先有被參照表,其次再創(chuàng)建參照表
建表時:
CREATE TABLE 參照表表名 (
...
[ CONSTRAINT 約束名稱 ] FOREIGN KEY( 列名 ) REFERENCES 被參照表表名( 被參照表主鍵列名 ) ,
...
);
建表后:ALTER TABLE 參照表表名
ADD [ CONSTRAINT 約束名 ] FOREIGN KEY( 列名 ) REFERENCES 被參照表表名( 被參照表主鍵列名 ) ;
例如:
create table t_students(
id number(10)
name varchar2(20)
major_id number(5)
constraint t_students_id_pk primary key(id)
foreign key(major_id) references t_major(id)
);
24.管理約束
24.1查看約束
通過user_constraints可以確定約束名稱和類型;
通過user_cons_columns可以確定哪張表哪個列對應哪個約束
例如:select table_name,constraint_name,constraint_type from user_constraints;
able_name 表示表名、constraint_name 表示約束名、constraint_type 表示約束類型
通過user_cons_columns數(shù)據(jù)字典查看那些表的那些列上有約束
例如:desc user_cons_columns
;
24.2修改約束
在約束名稱中應該盡量使用指定的前綴或后綴來明確約束類型
pk : primary key ,表示主鍵約束
uk : unique key ,表示惟一約束
fk : foreign key ,表示外鍵約束
nn : not null , 表示非空約束
ck : check ,表示檢查約束
格式:ALTER TABLE 表名 RENAME CONSTRAINT 原約束名 TO 新約束名 ;
例如:alter table t_topics rename constraint t_topics to t_topics_title_uk;
24.3刪除約束
①通用的格式(除了default不適用):ALTER TABLE 表名 DROP CONSTRAINT 約束名 ;
例如: alter table t_topics drop constraint t_topics_id_nn;
②不適用格式名
缺省約束:使用指定默認值:ALTER TABLE 表名 MODIFY ( 列名 DEFAULT 默認值 ) ;
讓默認值為null:ALTER TABLE 表名 MODIFY ( 列名 DEFAULT NULL ) ;
非空約束:ALTER TABLE 表名 MODIFY ( 列名 NULL ) ;
惟一約束:ALTER TABLE 表名 DROP UNIQUE ( 列名 ) ;
主鍵約束:ALTER TABLE 表名 DROP PRIMARY KEY [ CASCADE ] ;
24.4禁用約束/啟用約束
禁用約束
ALTER TABLE 表名 DISABLE CONSTRAINT 約束名 ;
啟用約束
ALTER TABLE 表名 ENABLE CONSTRAINT 約束名 ;
25.索引
25.1查看索引
與索引有關的數(shù)字字典:user_indexes、user_ind_columns、user_objects
例如: select table_name,index_name,index_type from user_indexes;
select object_name,object_type from user_objects;
select table_name,column_name,index_name from user_ind_columns;
25.2創(chuàng)建索引
格式:CREATE INDEX 索引名稱 ON 表名 ( 列名 [ ASC | DESC ] [ , 列名 [ ASC | DESC ] , ... ] ) ;
例如:create index ind_temps_id on t_emps(id asc);
25.3更改索引
ALTER INDEX 原索引名 RENAME TO 新索引名 ;
25.4刪除索引
DROP INDEX 索引名稱 ;
26.執(zhí)行計劃
概念:是關于 查詢語句 在 Oracle DBMS 中的 執(zhí)行過程 或 訪問路徑 的描述
作用:分析某個SQL的性能、查看某個SQL執(zhí)行是否存在問題
格式:SET AUTOTRACE { OFF | ON | TRACEONLY } [ EXPLAIN ] [ STATISTICS ]
EXPLAIN 表示 執(zhí)行計劃;STATISTICS 表示 統(tǒng)計信息
SET AUTOTRACE OFF 表示僅顯示 查詢結果 ,不顯示 執(zhí)行計劃 和 統(tǒng)計信息
SET AUTOTRACE ON 表示既顯示 查詢結果 ,又顯示 執(zhí)行計劃 ,也顯示 統(tǒng)計信息
SET AUTOTRACE TRACEONLY 表示不顯示 查詢結果 ,僅顯示 執(zhí)行計劃 和 統(tǒng)計信息
SET AUTOTRACE ON EXPLAIN 表示顯示 查詢結果 和 執(zhí)行計劃 ,不顯示 統(tǒng)計信息
SET AUTOTRACE ON STATISTICS 表示顯示 查詢結果 和 統(tǒng)計信息 ,不顯示 執(zhí)行計劃
Oracle查詢數(shù)據(jù)的方式
> 全表掃描 ( TABLE ACCESS FULL )
> 通過ROWID訪問 ( TABLE ACCESS ROWID )
> 索引掃描(INDEX SCAN / INDEX LOOKUP )
> > >索引惟一掃描( INDEX UNIQUE SCAN)
> > >索引范圍掃描 ( INDEX RANGE SCAN )
> > >索引全掃描 ( INDEX FULL SCAN )
> > >索引快速掃描 ( INDEX FAST FULL SCAN )
27.高級查詢之多表查詢
27.1無連接條件(笛卡爾乘積)
? 格式:selcet * from 表名1,表名2……
? 例如:select * from t_topics,t_options;
27.2內連接
概念:當查詢結果中的所有數(shù)據(jù)都 滿足連接條件 時,就稱該查詢?yōu)?內連接 ( INNERJOIN )
語法:SELECT 列名 , ...
FROM 表名
[INNER] JOIN 表名
ON 連接條件
[WHERE 篩選條件]
[GROUP BY 分組條件 [ HAVING 篩選條件] ]
[ORDER BY 排序條件];
27.2.1等值連接
使用的是等號運算符比較
SELECT e.empno , e.ename , e.deptno , d.deptno , d.dname , d.loc
FROM emp e INNER JOIN dept d
ON e.deptno = d.deptno ;
27.2.2非等值連接
使用 、<、between……and……運算符比較,就說該內連接查詢是非等值連接,比較某個值是否屬于某個區(qū)間
SELECT e.empno , e.ename , e.sal , g.grade , g.losal , g.hisal
FROM emp e INNER JOIN sal grade g
ON e.sal BETWEEN g.losal AND g.hisal ;
27.3外連接
概念:當查詢結果中除了 滿足連接條件 數(shù)據(jù)外,也包含不滿足連接條件的數(shù)據(jù)時,就稱該查詢?yōu)?外連接 ( OUTERJOIN )
格式:SELECT 列名 , ...
FROM 表名
{ LEFT | RIGHT | FULL } [OUTER] JOIN 表名
ON 連接條件
[WHERE 篩選條件]
[GROUP BY 分組條件 [ HAVING 篩選條件] ]
[ORDER BY 排序條件];
27.3.1左外連接
概念:查詢結果中既包含滿足連接條件的數(shù)據(jù),也包含了 【JOIN之前】的表中不滿足條件的數(shù)據(jù)
格式:SELECT ... FROM表名LEFT [ OUTER ] JOIN 表名 ON 連接條件 ;
例如:select e.empno,e.ename,d.deptno,d.dname
from emp e
left outer join dept d
on d.deptno=e.deptno;
27.3.2右外連接:
概念:查詢結果中既包含滿足連接條件的數(shù)據(jù),也包含了 【JOIN之后】的表中不滿足條件的數(shù)據(jù)
格式:SELECT ... FROM表名RIGHT [ OUTER ] JOIN 表名 ON 連接條件 ;
例如:select e.empno,e.ename,d.deptno,d.dname
from dept d
right outer join emp e
on e.deptno=d.deptno;
27.3.3全外連接
MySQL不支持FULL OUTER JOIN
概念:查詢結果中既包含滿足連接條件的數(shù)據(jù),也包含了 【JOIN之前】的表中不滿足條件的數(shù)據(jù),也包含了 【JOIN之后】的表中不滿足條件的數(shù)據(jù)
格式:SELECT ... FROM表名FULL [ OUTER ] JOIN 表名 ON 連接條件 ;
例如:select e.empno,e.ename,d.deptno,d.dname
from emp e
full outer join dept d
on e.deptno=d.deptno
27.3.4自連接
概念:就是將一張表當多張表來使用( 通過為表取不同別名來區(qū)分 ),自連接可以是內連接也可以是外連接
內連接自連接:
select this.empno,this.ename,manager.empno,manager.ename
from emp this
join emp manager
on this.mgr=manager.empno;
外連接自連接:
select e.empno,e.ename,m.empno,m.ename
from emp e
left join emp m
on e.mgr=m.empno
28.高級查詢之子查詢
概念:被嵌套在SELECT/UPDATE/DELETE/INSERT語句中的SELECT語句就是子查詢
1.所有的子查詢都是被 小括號 括起來的 ?
2.子查詢中通常不使用 ORDER BY 子句 ?
3.子查詢可以嵌套多層使用,但最多不超過 255 層
分類
? 單行子查詢:返回 單行、單列 ( 最多返回一行數(shù)據(jù) )
? 多行子查詢:返回 多行、單列
? 多列子查詢:返回 單行、多列
? 關聯(lián)子查詢:子查詢引用了外部語句中的某些表或某些列,子查詢與外部語句是相互關聯(lián)的
? 注意:外部語句不可以引用子查詢中的表或列,關聯(lián)子查詢 也被稱作 相關子查詢
? 嵌套子查詢:即在子查詢中繼續(xù)嵌套子查詢,但最多不超過 255 層
select * from emp
where deptno = (select deptno from emp where lower(ename)='smith')
and job=(select job from emp where lower(ename)='smith');
或者:select * from emp
where(deptno,job)=(select deptno,job from emp where >ename='SMITH');
select id,first_name,last_name,salary,dept_id
from s_emp e
where salary=(select max(salary) from s_emp x
where x.dept_id=e.dept_id)
order by dept_id asc,salary desc;
關聯(lián)子查詢:
查詢哪些在NEW YORK工作的員工
select * from emp e where exists(select * from dept x
where x.deptno=e.deptno
and x.loc='NEW YORK' )
29.視圖
概念:視圖(View)是由 SELECT 查詢語句定義的一個"邏輯表",視圖( View ) 只有定義而無數(shù)據(jù),是一個"虛表";是一個或多個表(或視圖)經過 SELECT 查詢后選擇的邏輯表示,創(chuàng)建視圖時所使用的表(或視圖)被稱作 基礎表 ( Base Table )
目的:提供各種數(shù)據(jù)表現(xiàn)形式;提高某些安全性保證;隱藏數(shù)據(jù)的邏輯復雜性并簡化查詢語句;執(zhí)行某些必須使用視圖的查詢,簡化用戶權限的管理
創(chuàng)建視圖(在當前用戶中創(chuàng)建視圖需要具有 CREATE VIEW 權限)
格式:CREATE [ OR REPLACE ] VIEW 視圖名稱
[ ( 列名 , ... ) ]
AS 查詢語句 ;
例如:create view v_emp_2 as select empno,ename,deptno from emp;
查看視圖
? 通過 user_objects 數(shù)據(jù)字典查看
? 通過 user_views 數(shù)據(jù)字典查看
刪除視圖(在當前用戶中刪除視圖需要具有 DROP VIEW 權限)
DROP VIEW 視圖名稱 ;
? 例如 desc v_emp_2;
30.時間格式
30.1日期模式:
YYYY:用 四位 數(shù)字表示年份;YY:用 兩位 數(shù)字表示年份,不涉及世紀轉換問題;RR:用 兩位 數(shù)字表示年份,涉及世紀轉換問題
MM:用 兩位 數(shù)字表示月份,取值范圍是 1 ~ 12;MON;用 三個 字符表示月份;MONTH:用 英文單詞 或 數(shù)字加中文 表示月份
DAY:表示一周中的第幾天;DY:表示一周中的第幾天;
D:用 一位 數(shù)字表示一周中的第幾天;DD:用 兩位 數(shù)字表示月份中的天數(shù);DDD:用 三位 數(shù)字表示年份中的天數(shù)
HH 或 HH12:表示以12小時計時所表示小時,取值范圍是 1 ~ 12;HH24:表示以24小時計時所表示小時,取值范圍是 0 ~ 23
MI:用 兩位 數(shù)字表示分鐘
SS:用 兩位 數(shù)字表示秒數(shù)
BC 或 B.C.:表示公元前 ( Before Christ )
AD 或 A.D.:表示公元后 ( Anno Domini )
30.2設置格式:
默認格式:dd-mon-yy
英文環(huán)境下,mon 表示用 月份名稱的 縮寫 ( 3個字符 );中文環(huán)境下,mon 表示 ‘X月’ ,比如 ’9月‘ 、‘12 月’
設置當前會話的日期格式:ALTER SESSION SET nls_date_format = ‘日期模式’ ;
alter session set nls_date_format='yyyy_mm_dd';
alter session set nls_date_format ='ad yyyy-mm-dd day ddd';
為某個日期時間值設置格式:to_char( 日期時間值 , ‘日期模式’ )
select to_char(sysdate,'yyyy-mm-dd day ddd' ) from dual;
select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
31.日期函數(shù)
31.1日期計算
last_day ( d ):用于返回 指定日期 所在月份的最后一天
例如:select last_day(sysdate) from dual;
next_day ( d , c ):用于獲取 d 之后第一個 c 對應的日期
第一個參數(shù) d 表示一個 DATE 值,第二個參數(shù) c 是用 字符 表示的 星期中的某一天 ,比如 ‘星期一’ 、‘MON’
例如: select next_day(sysdate,‘星期六’) from dual;在這里插入代碼片
add_months( d , m )
例如: select add_months(sysdate,5) from dual;
months_between( d1 , d2 ):用于返回 兩個日期 之間間隔的月數(shù)
31.2四舍五入
?使用 round( d [ , fmt ] )
函數(shù)可以 DATE 值進行四舍五入
若 fmt 為 year ,則表示四舍五入到年,以 7月1日 為分界線 ?
若 fmt 為 month ,則表示四舍五入到月,以 16日為分界線 ?
若 fmt 為 dd ,則表示四舍五入到日,以 中午12點 為分界線 ?
若 fmt 為 day,則表示四舍五入到周,以 周三中午12點 為分界線
? 例如:select round(to_date(‘2020-06-30 23:59:59’,‘yyyy-mm-dd hh24:mi:ss’),‘year’) from dual;
31.3截斷日期
使用 trunc( d [ , fmt ] )
可以將 DATE 值裁剪
若 fmt 為 year ,則表示截取到本年年初( 即 1月1日 ),超出部分全部舍棄 ?
若 fmt 為 month ,則截取到本月初( 即 1日 ),超出部分全部舍棄 ?
若 fmt 為 dd ,則截取到當日起點,超出部分全部舍棄 ?
若 fmt 為 day ,則截取到本周起點,超出部分全部舍棄
例如: select trunc(to_date(‘2020-12-31 23:59:59’,‘yyyy-mm-dd hh24:mi:ss’),‘year’) from dual;
31.4獲取日期
sysdate:獲取數(shù)據(jù)庫系統(tǒng)的當前日期時間
current_date:獲取當前會話時區(qū)所對應的日期時間值
systimestamp:獲得數(shù)據(jù)庫系統(tǒng)中一個 timestamp with time zone 類型的日期時間值
例如:select sysdate,current_date,systimestamp from dual;
結果依次為:18-9月 -20 18-9月 -20 18-9月 -20 05.11.42.253000 下午 +08:00
31.5查詢時區(qū)
dbtimezone:數(shù)據(jù)庫時區(qū)
sessiontimezone:會話時區(qū)
例如:select dbtimezone,sessiontimezone from dual;
DBTIME SESSIONTIMEZONE
------ ---------------------------------------------------------------------------
+00:00 +08:00
32.添加注釋
為表中的列添加注釋:comment on column 表名.字段名 is '注釋信息';
為表添加注釋:comment on table is '注釋信息';
33.Spool命令
將在命令行中一段時間內oracle所有的操作結果寫入到指定的文件中
例如:
開始寫入:spool test.log
結束寫入:spool off
34.whenever命令
當一個腳本中存在大量的sql/plsql語句時,執(zhí)行該腳本時,如果其中有一條sql語句執(zhí)行失敗,用sqlplus可能很難發(fā)現(xiàn);如果能讓碰到錯誤時,讓sqlplus退出,再結合spool命令查看日志,就很容易知道腳本的執(zhí)行情況,這可以通過whenever命令來實現(xiàn)
whenever sqlerror exit rollback
一旦腳本中該語句之后的某sql語句執(zhí)行出錯,就會停止出錯,sqlplus就會自動退出;加了rollback選項,則出錯后sqlplus在退出前會自動執(zhí)行rollback一下,把所有還沒提交的變化回滾處理;如果加了none選項或什么都不加,則退出不會做任何事
35.set feedback命令
set feedback on
:打開反饋,默認的當一條sql發(fā)出的時候,oracle會給一個反饋;
例如當表創(chuàng)建成時會輸出命令行會返回:Table created
set feedback off
:關閉反饋,用于關閉輸出提示信息,當有大量執(zhí)行語句時候,如果將每一條信息都反饋出來,則顯得太亂,往往會關閉"輸出提示信息功能"
set feedback n
:設置反饋限制;當一條 sql 語句返回 n 或者大于 n 行記錄的時候,就會有feedback,比如:set feedback 10,當返回記錄等于或多于 10 行的時候,會有類似 ‘10 rows selected’ 的反饋,如果返回行少于 10 則沒有此反饋
36.set define 命令
作用就是關閉和開啟替代變量
在SQLPlus中默認的"&"表示替代變量,只要在命令中出現(xiàn)該符號,SQLPlus就會要你輸入替代值;
因此如果我們輸入的命令中如果包含該字符,就要進行設置
set define on:開啟
set define off:關閉
37.prompt命令
相當于一般的操作系統(tǒng)命令echo,輸出后面的信息文章來源:http://www.zghlxwxcb.cn/news/detail-482715.html
例如sql>prompt helloworld
>helloworld
常見的sql命令就總結到這里了,謝謝閱讀,有問題請指出!文章來源地址http://www.zghlxwxcb.cn/news/detail-482715.html
到了這里,關于Oracle常見的sql命令的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!