ORACLE学习笔记:SQL入门
SQL基础命令
DDL : CREATE ALTER DROP RENAME TRUNCATE COMENT ,可以创建和改变数据库的结构。
DML : SELECT INSERT UPDATE DELETE 可以用于查新,添加更改删除数据
ORACLE SQL 数据类型
CHAR:数据类型按照字节或字符储定的长度字符,可以通过形参size来重写默认值
NCHAR : nchar 数据类型按照字节或者字符来存储定长的Unicode国假字符数据
STRING:STRING数据类型列是VARCHAR2的子类型并且按照字节或字符来存储可变长度的字符串
VARCHAR : VARCAHR 数据类型与VARCHAR2数据类型是同义词,如果使用它来定义列 ORACLE会将其转换为VARCHAR2类型
VARCHAR2 :VARCHAR2 数据紫烈按照字节或者字符来存储可变长度的字符串
NVARCHAR2: NVARCHAR2数据类型列与VARCHAR2在Unicode上等价的数据类型
CLOB :CLOB数据类型代表字符型大对象
NCLOB :NCLOB数据类型代表的列存储最大为4GB的字符串
BINARY_FLOAT :BINARY_FLOAT 数据类型是一种占用4个字节存储空间的32位浮点数
BINARY_DOUBLE: BINARY_DOUBLE 数据类型是一种占用8个字节存储空间的32位浮点数
FLOAT: FLOAT 是NUMBER 数据类型数据列的126位置的子类型
NUMBER :NUMBER 是一种38位置的数据类型可以声明它的精度,定义NUMBER类型不带你形参
DATE DATE是一个7字节的列,使用公历法表示从 Jan 2712 B C E 到31 Dec 9999 的时间戳 日期类型
数据定义语言(DDL)
DDL命令允许创建,替换,更改,删除,重命名和截断数据库对象,权限及设置
DDL部分可以化为多个字部分并涵盖如下:
CREATE语句
ALTER语句
RENAME语句
DROP语句
TRUNCATE语句
COMMENT语句
DBA 和应用程序DBA 可以通过CREATE 语句来创建数据库,表空间和用户。同时也可以创建表,序列,标识列,约束,索引,视图,函数,过程,包,对象类型,外部表,用户定义类型,分区表和别名
用户(user)
在oracle数据库中,用户和模式是同义词,有时候模式被称为名空间。数据库或模式是私有的工作区域,单也是表的容器
用户拥有操作数据库的权限,每一个数据库中至少有一个默认的超级用户,超级用户拥有改数据库的所有权限
创建ORACLE用户 在ORACLE数据库中,创建用户与创建模式相同,
创建用户的SQL 原型中,可以通过密码识别用户,也可以通过外部的SSL身份验证认证名标识用户,或使用基于LDAP的全局表示用户名来识别用户
创建语法
以局部数据库密码标识
CREATE USER student IDENTIFIED BY student;
CREATE USER c##plsql IDENTIFIED BY Working2 CONTAINER=ALL;
通过在CONTAINER 子句指定,将普通用户限定至某一可插拔数据库
CREATE USER c##plsql IDENTIFIED BY Working2 CONTAINER=HR;
创建局部永不另一种代替方式是SSL 身份验证
CREATE USER student IDENTIFIED EXTERNALLY AS 'certificate_name';
证书是一个SSL(安全套接字层,Serure Sockets Layer) 他会加密数据库连接凭据以支持安全数据库通信
上述的三种方式都可以创建私有的student工作区,即模式
下面的实例包含局部密码,遵循默认的表空间分配和定额上限
CREATE USER student IDENTIFILED BY student PROFILE profile_name;
设置密码已过期状态,这样设置后,用户登陆系统会提示用户立即更新密码
CREATE USER student IDENTIFILED BY student
PROFILE profile_name
PASSWORD EXPIRE
ACCOUNT LOCK;
在需要激活用户时,可以使用ALTER语句解锁用户账户
2.ORACLE授权
有两种类型的安全权限,其中一种包含系统权限,另一种包含对象权限。系统权限与特定的对象,模式或数据库无关,对象权限则为单体的对象,模式或数据库提供特定的权限
原则上来说,至扩展用户请求的基本权限。必须控制对物理空间的访问。同事要注意在创建用户时,如果没有DEFAULT 子句和TEMPORARY TABLEPACE子句,权限不会生效,当然有一种情况例外,就是授权UNLIMITED TABLESPACE
GRANT create cluster,create indextype , create operator
create procedure,create sequence, create session
create table,create trigger,create type,
create view,unlimited tablespace TO student;
这种类型的GRANT语句可以在晓得,仅用于开发的环境中创建用户,但不应该用于生产数据库。
通用用户必须获取对所有可插拔数据库的权限,这些权限来自超级用户、如system。下面代码为跨CDB用户自定义的c##dba用户授权CONNECT和RESOURCE角色:
GRANT CONNECT ,RESOURCE TO c##dba CONTAINER=ALL;
如果忽略语句中的CONTAINER=ALL,则表示用户授权只限于局部的CDB。,例如用户可以用户连接至Hr容器
C:\> sqlplus /nolog
sqlplus > connect c##plsql@hr
授权查询权限
GRANT SELECT ON some_tablename TO some_user;
有时候用户需要为其他用户授权的权限,进而可以将权限扩展至第三方。
GRANT SELECT some_tablename TO some_user WITH GRANT OPTION;
通过别名进行授权
GRANT SELECT ON some_tablename FOR some_user.some_tablename;
通常,局部表名与其他模式中的表名相同,但是这并不是绝对的。可以将表的权限授权给PUBLIC用户,这样所有的用户都可以访问该表。
GRANT SELECT ON some_tablename TO PUBLIC;
授权后,使用下面的语法创建公共别名:
GRANT PUBLIC SYNONYM some_tablename FOR some_user.some_tablename;
3.撤销权限
REVOKE unlimited tablespace FROM studen;
REVOKE select ON some_tablename FROM PULIC;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了