首页 > 数据库 >oracle常用语句-DCL

oracle常用语句-DCL

时间:2023-12-26 11:56:39浏览次数:26  
标签:语句 DCL like -- create tu dept tablespace oracle

表空间

创建表空间

create tablespace test01 datafile 'test01.dbf' size 10m;
create temporary tablespace temp01 tempfile 'temp01.dbf' size 10m;

查看表空间

select file_name from dba_data_files where tablespace_name = 'TEST01';
select file_name from dba_temp_files where tablespace_name = 'TEMP01';

修改表空间状态(联机【只读、可读可写】、脱机)

select status from dba_tablespaces where tablespace_name = 'TEST01';
alter tablespace test01 offline;

创建用户

输入 sqlplus 用户名/密码 as sysdba 以管理员身份连接数据库。

如: sqlplus scott/123456 as sysdba;

--创建用户
create user 用户名 identified by 密码;
--授予所有权限,一次性授权多个用户用逗号隔开即可。
grant all privileges to 用户名;
grant create table, create view to 用户名;

更改初始密码

alter user test01 identified by j2yd;

锁定用户

alter user test01 account lock;

删除用户

drop user test01 cascade;

添加索引

-- 格式
create index 索引名 on 表名(列名);

-- 声明表空间
create index 索引名 on 表名(列名) online tablespace 空间名;
create index 索引名 on 表名(列名) tablespace 表空间名;

-- 组合索引
create index 索引名 on 表名(列名1,,列名2);
-- 唯一索引
create unique index 索引名 on 表名(列名);

备份表:

create table 表名 as select * from t1; 

创建序列:

CREATE sequence 序列名 increment by 每次加多少 start with 从多少开始 maxvalue 99999999999 nocycle nocache;

--CREATE sequence SEQ_DECLARE_INFO increment by 1 start with 1000 maxvalue 99999999999 nocycle nocache;

-- 使用序列
select SEQ_DECLARE_INFO.nextval from dual;
select SEQ_DECLARE_INFO.currval from dual;

创建同义词

语法结构:

CREATE [OR REPLACE] [PUBLIC] SYSNONYM [当前用户.]synonym_nameFOR [其他用户.]object_name;

create synonym scms.tb_user for mobuser.tb_user;

授权

-- 其中TABLExxx是需要授权的表,userxxx是被授权者
GRANT SELECT,UPDATE,INSERT,DELETE ON TABLExxx TO userxxx;
-- 或者
GRANT ALL ON TABLExxx TO userxxx;

decode()函数

decode(字段表达式,'条件1','满足条件1的返回值','不满足的返回值');

case when

case when '条件表达式' then '满足条件时返回的值' else '不满足条件时返回的值' end
SELECT 
	tu.DEPT_ID ,
	tu.WORK_NO ,
	TU .NAME ,
	tu.ID_CARD ,
	(SELECT pm.MAPPING_POST FROM PCH_MAPPING pm WHERE pm.MAPPING_POST_ID = tu.POST) post_name,
	(CASE WHEN tbu.LOGIC_SYS_NO IS NULL THEN '0' ELSE to_char(to_char(SYSDATE,'yyyy')-substr(LOGIC_SYS_NO,1,4)) end) work_year,
	eval."RESULT",
	eval.SCORE,
	eval.ADD_TIME
FROM 
	TB_USER tu 
left join 
	tb_base_user tbu on tu.work_no = tbu.work_no

START WITH... CONNECT BY PRIOR...

用来遍历含有父子关系的表结构

select
	*
from
	tb_dept
start with
	dept_id = '44001469'
connect by 
	prior dept_id = upper_dept_id

start with 后面是根节点的限定语句。

connect by 是连接条件

prior 是用来表示上一条记录,connect by prior dept_id = upper_dept_id 表示上一条记录的 dept_id 是本条记录的 upper_dept_id ,即本记录的父亲是上一条记录。

后面还可以跟 where 条件

exists()函数

SELECT * FROM tb_user tu WHERE not EXISTS (SELECT 1 FROM TB_DEPT td WHERE tu.DEPT_ID =td.DEPT_ID)

使用 in() 函数查询,效率太慢,可用 exists() 代替

exists() 的子查询实际上并不返回任何数据,而是返回true和false

regexp_like() 正则匹配

regexp_like就是使用正则表达式校验字符串是否符合规则

例如:判断‘123456as’是否是小数或者整数

 SELECT '123' FROM dual where regexp_like('123456as','^[0-9\.]+$')

有时候判断条件中需要使用两个或者多个like操作的时候,也可以使用regexp_like来操作,例如下面的

SELECT '123' FROM dual where regexp_like('123456as','(12|49)')

就是判断字符串'123456as'中是否存在12或者49,若存在,则返回123,否则返回空

同理:使用not like不存在的时候,也可以使用not regexp_like来校验。例如下面

SELECT '123' FROM dual where not regexp_like('123456as','(12|49)')

就是判断字符串'123456as'中是否不存在12或者49,若存在,则返回123,否则返回空

标签:语句,DCL,like,--,create,tu,dept,tablespace,oracle
From: https://www.cnblogs.com/luler/p/17927802.html

相关文章

  • Oracle数据链接(DB Link)
    需求想在本地的Oracle数据库中,操作另一个远程的数据库,访问并同步其中的数据。可以使用DBLink-----Oracle数据库链接进行操作。概述在Oracle数据库中,数据链可以通过创建数据库链接DatabaseLink实现。数据库链接是一个指向远程数据库的指针,它允许用户在本地数据库中访问远......
  • 什么是 MySQL JDBC 连接池中最高效的连接检测语句?
    在回答这个问题之前,首先我们看看MySQL中有哪些常用的JDBC连接池:c3p0DBCPDruidTomcatJDBCPoolHikariCP这些连接池中,这些连接池中,c3p0是一个老牌的连接池,很多流行框架,在其老版本中,都将c3p0作为默认的连接池。DBCP和TomcatJDBCPool(Tomcat的默认连接池)是Apache......
  • Oracle-19c图形化界面安装部署
    ---Oracle数据库图形化界面安装,可以用linux桌面版来安装,也可以用linux命令行界面安装,不过需要Xmanager辅助图形化安装1、安装前期准备:#关闭防火墙,并关闭防火墙开机自启动systemctlstopfirewalldsystemctldisablefirewalld#检查防火墙状态systemctlstatusfirewalld#关闭......
  • Oracle 插入数据报错 ORA-00918
    1.报错内容ErrorCode=918,SQLState=23000,Details=ORA-00918:column'TO_DATE('2023-12-1809:13:45','YYYY-MM-DDHH24:MI:SS')'infieldlistambiguouslydefined  2.原因sql中的值重复了,导致Oracle未能明确,列跟哪一列......
  • JavaScript基础语句和window对象
    ifelse语句varsum=190varyouhuisum//赋予一个容器if(sum>=200){youhuisum=sum-10console.log(111)}else{//如果上面if不满足则都执行else语句......
  • C 语言教程:条件和 if...else 语句
    C语言中的条件和if...else语句您已经学习过C语言支持数学中的常见逻辑条件:小于:a<b小于或等于:a<=b大于:a>b大于或等于:a>=b等于:a==b不等于:a!=b您可以使用这些条件来根据不同的决策执行不同的操作。C语言具有以下条件语句:使用if来指定要执行的代码块,......
  • C 语言教程:条件和 if...else 语句
    C语言中的条件和if...else语句您已经学习过C语言支持数学中的常见逻辑条件:小于:a<b小于或等于:a<=b大于:a>b大于或等于:a>=b等于:a==b不等于:a!=b您可以使用这些条件来根据不同的决策执行不同的操作。C语言具有以下条件语句:使用if来指定要执行的代码块......
  • Mysql基础增删改查语句
    一,基础语句1.增加Insert(特殊的如果id自动递增的话,就不需要插入id)基本语法 insertinto表名(列1,列2,列3,列4,...) values(值,值,值)例子 insertintostudent(name,sex,age)values('张三',18,'男')插入的另外一种形式:insertinto表名set列=值,列=值,列=值,....例子 insertinto......
  • 2023年12月|ORACLE OCP 19C考试通过
    数据库工程师-OracleOCP19C认证介绍厦门微思网络......
  • sql语句一览表
    登录到MySQL:mysql-h主机名-u用户名-p-h:该命令用于指定客户端所要登录的MySQL主机名,登录当前机器该参数可以省略;-u:所要登录的用户名;-p:告诉服务器将会使用一个密码来登录,如果所要登录的用户名密码为空,可以忽略此选项。创建一个数据库:createdatabase数据库......