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;

 

 

 

 

  

 

posted @   不会游泳的鱼丶  阅读(231)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示