首页 > 数据库技术 > 详细

Oracle数据库

时间:2019-10-31 22:42:08      阅读:118      评论:0      收藏:0      [点我收藏+]

一、Oracle客户端工具

  SQL Plus工具

    1. 打开

      该工具是 Oracle 系统默认安装的自带的一个客户端工具。在 Windows cmd 命令行中输入“sqlplus”命令,就能够启动该工具了。

    2. 登录

      输入账户:system 和密码即可登录到本地数据库

    3. 连接远程数据库

      在cmd命令行中输入“sqlplus /nolog ”启动工具;

      输入命令:conn 用户名/密码@服务器连接字符串(数据库IP地址)as 连接身份

        *连接身份达标者用户连接数据库后拥有的权限,有如下三种身份

          sysdba:数据库管理员身份。权限:打开(关闭)数据库服务器、备份(恢复)数据库、日志功能、会话限制、数据库管理功能等。

            例如:sys用户必须用sysdba才能登录,system用户用普通用户就可以登录。

          sysoper:数据库操作员身份。权限:打开(关闭)数据库服务器、备份(恢复)数据库、日志功能、会话限制。

          normal:普通用户。权限:操作该用户下的数据对象和数据查询,默认身份是normal用户。

 

二、Oracle服务

  (一)

    1、OraleServer+服务器名(ORCL)

      该服务是Oracle数据库的基础,只有启动该服务才能正常使用Oracle数据库。

    2、OracleOraDb11g_home1TNSlistenter

      在使用第三方客户端连接Oracle数据库时,该服务必须启动,才能连接到远程数据库!

      该服务为Oracle客户端提供监听程序的服务,只有启动该服务,本地的客户端程序才能通过监听连接到数据库,和数据库进行交互。

    3、Oracle ORCL VSS Wrier Service:

      Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service)能够让存储基础设备(比如磁盘,阵列等)创建高保真的时间点映像,即映射拷贝(shadow copy)。它可以在多卷或者单个卷上创建映射拷贝,同时不会影响到系统的性能。(非必须启动)

    4、OracleMTSRecoveryService:

      服务端控制。该服务允许数据库充当一个微软事务服务器MTS、COM/COM+对象和分布式环境下的事务的资源管理器。(非必须启动)

    5、OracleOraDb11g_home1ClrAgent:

      Oracle数据库 .NET扩展服务的一部分。 (非必须启动)

    6、OracleJobSchedulerORCL:

      Oracle作业调度(定时器)服务,ORCL是Oracle实例标识。(非必须启动)

  (二)数据库的启动和关闭

    1、启动:conn 用户名/密码@数据库连接字符(IP地址) as 身份

    2、关闭:shutdown 数据库名

    3、重启:startup open

 

三、Oracle用户

  (一)用户的创建

    create user student--用户名

    identified by "123456"--密码

    default tablespace USERS--表空间名
    temporary tablespace temp --临时表空间名
    profile DEFAULT    --数据文件(默认数据文件)
    account unlock-- 账户是否解锁(lock:锁定、unlock解锁)
    
    *通过上面语句,可以创建一个student用户,但是该用户现在还不能登录数据库,因为它没有登录数据库权限,最少他需要一个create session系统权限才能登录数据库。
 
  (二)用户权限
    Oracle数据库的权限分为:
      系统权限create session可以和数据库进行连接的权限;
           create table、create view等具有创建数据库对象的权限。
      对象权限:比如:对表中数据进行增删改查操作,拥有数据库对象权限的用户可以对所拥有的对象进行相应的操作。
 
  (三)数据库角色
    1、oracle数据库角色是若干系统权限的集合,给Oracle用户进行授数据库角色,就是等于赋予该用户若干数据库系统权限。常用的数据库角色如下:
      CONNECT角色:connect角色是Oracle用户的基本角色,connect权限代表着用户可以和Oracle服务器进行连接,建立session(会 话)。

      RESOURCE角色:resouce角色是开发过程中常用的角色。 RESOURCE给用户提供了可以创建自己的对象,包括:表、视图、序列、过程、触发器、索引、包、类型等。

      DBA角色:DBA角色是管理数据库管理员该有的角色。它拥有系统的所有权限,和给其他用户授权的权限。SYSTEM用户就具有DBA权限。

      *系统权限只能通过DBA用户授权,对象权限有拥有该对象权限的对象授权!(不一定是本身对象)用户不能自己给自己授权!

    2、语法:授权

--GRANT 对象权限 on 对象 TO 用户    
grant select, insert, update, delete on JSQUSER to STUDENT;
 
--GRANT 系统权限 to 用户
grant select any table to STUDENT;
 
--GRANT 角色 TO 用户
grant connect to STUDENT;--授权connect角色
grant resource to STUDENT;--授予resource角色

    3、语法:取消用户权限

-- Revoke 对象权限 on 对象 from 用户 
revoke select, insert, update, delete on JSQUSER from STUDENT;
 
-- Revoke 系统权限  from 用户
revoke SELECT ANY TABLE from STUDENT;
 
-- Revoke 角色(role) from 用户
revoke RESOURCE from STUDENT;

    4、语法:Oracle用户的其他操作

--修改用户信息
alter user STUDENT
  identified by ******  --修改密码
  account lock;--修改用户处于锁定状态或者解锁状态 (LOCK|UNLOCK )

 

四、SQL语句介绍

  在 Oracle 开发中,客户端把 SQL 语句发送给服务器,服务器对 SQL 语句进行编译、执行,把执行的结果返回给客户端。常用的SQL语句大致可以分为五类:

    1、数据定义语言(DDL),包括 CREATE(创建)命令、 ALTER(修改)命令、 DROP(删除)命令等。

    2、数据操纵语言(DML),包括 INSERT(插入)命令、 UPDATE(更新)命令、 DELETE(删除)命令、 SELECT … FOR UPDATE(查询)等。

    3、数据查询语言(DQL),包括基本查询语句、 Order By 子句、 Group By 子句等。

    4、事务控制语言(TCL),包括 COMMIT(提交)命令、 SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。 

    5、数据控制语言(DCL), GRANT(授权)命令、 REVOKE(撤销)命令。

 

五、Oracle建表(create table)

  列代表着Oracle字段(column),行代表着一行数据(即一条数据记录)。

  1、Oracle 字段数据类型

数据类型

类型解释

varchar2(length)

字符串类型:存储可变长度的字符串,

length:是字符串的最大长度,默认不填的时候是1,最长长度不超过4000

char(length)

字符串类型:存储固定长度的字符串,

length:字符串的固定的最大长度,默认是1,最大长度不超过2000

number(a, b)

数值类型:存储数据的类型,可以存整数,也可以存浮点数。

a 代表数值的最大位数:包含小数位和小数点,b 代表小数的位数。

例:number(6, 2), 输入123.12345,实际存入:123.12

data

时间类型:存储的是日期和时间,包括年、月、日、时、分、秒。

例:内置函数 sysdata 获取的就是 data 类型

timestamp

时间类型:存储的不仅是时间和日期,还包括了时区。

例:内置函数 systimestamp 获取的就是 timestamp 类型

clob

大字段类型:存储的是大的文本。

例:非结构化的txt文本,字段大于4000长度的字符串。

blob

二进制类型:存储的是二进制对象

例:图片、视频、声音等转换过来的二进制对象

 
  2、create table语句
    案例1:创建stuinfo(学生信息表)
-- Create table
create table STUDENT.stuinfo
(
  stuid      varchar2(11) not null,--学号:S+班号(7位数)+学生序号(3位数)(1)
  stuname    varchar2(50) not null,--学生姓名
  sex        char(1) not null,--性别
  age        number(2) not null,--年龄
  classno    varchar2(7) not null,--班号:C+年级(4位数)+班级序号(2位数)
  stuaddress varchar2(100) default 地址未录入,--地址 (2)
  grade      char(4) not null,--年级
  enroldate  date,--入学时间
  idnumber   varchar2(18) default 身份证未采集 not null--身份证
)
tablespace USERS --(3)
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Add comments to the table 
comment on table STUDENT.stuinfo --(4)
  is 学生信息表;
-- Add comments to the columns 
comment on column STUDENT.stuinfo.stuid -- (5)
  is 学号;
comment on column STUDENT.stuinfo.stuname
  is 学生姓名;
comment on column STUDENT.stuinfo.sex
  is 学生性别;
comment on column STUDENT.stuinfo.age
  is 学生年龄;
comment on column STUDENT.stuinfo.classno
  is 学生班级号;
comment on column STUDENT.stuinfo.stuaddress
  is 学生住址;
comment on column STUDENT.stuinfo.grade
  is 年级;
comment on column STUDENT.stuinfo.enroldate
  is 入学时间;
comment on column STUDENT.stuinfo.idnumber
  is 身份证号;

    代码解析:

    (1)处: not null 表示学号字段(stuid)不能为空。

    (2)处:default 表示字段stuaddress不填时候会默认填入‘地址未录入’值。

    (3)处:表示表stuinfo存储的表空间是users,storage表示存储参数:区段(extent)一次扩展64k,最小区段数为1,最大的区段数不限制。

    (4)处:comment on table 是给表名进行注释。

    (5)处:comment on column 是给表字段进行注释。

 

    通过上面crate table命令创建了stuinfo学生信息表后,还可以给表添加相应的约束来保证表数据的准确性。比如:学生的年龄不能存在大龄的岁数,可能是错误数据、性别不能填入不是1(男)、2(女)之外的数据等。

    案例2:stuinfo(学生信息表)添加约束

-- Create/Recreate primary, unique and foreign key constraints 
alter table STUDENT.STUINFO
  add constraint pk_stuinfo_stuid primary key (STUID);
  --把stuid当做主键,主键字段的数据必须是唯一性的(学号是唯一的)
   
-- Create/Recreate check constraints 
alter table STUDENT.STUINFO
  add constraint ch_stuinfo_age
  check (age>0 and age<=50);--给字段年龄age添加约束,学生的年龄只能0-50岁之内的
   
alter table STUDENT.STUINFO
  add constraint ch_stuinfo_sex
  check (sex=1 or sex=2);
   
alter table STUDENT.STUINFO
  add constraint ch_stuinfo_GRADE
  check (grade>=1900 and grade<=2999);

 

六、Oracle查询(select)

  1、select 命令结构

select *|列名|表达式 from 表名 where 条件 order by 列名

  例1:查询学生信息表(stuinfo)中“李四”同学的基本信息:

select t.* from STUDENT.STUINFO t where t.stuname = "李四"

  例2:查询“李四”同学的学号、班级、年级和地址:

select t.stuid, t.classno, t.stuaddress, t.grade from STUDENT .STUINFO t where t.stuname = "李四"

  例3:查询班级“C201801”所有同学信息,按年龄进行升序展示:

select t.*  from STUDENT.STUINFO t where t.classno = C201801 ORDER BY T.AGE ASC 

  语法解析:

    1、“t”代表stuinfo的别名。

    2、  "*"  代表所有字段。

    3、表达式可以是函数(列名)、常数、连接词“||”等组成的表达式。

    4、where子语句是查询语句的条件。

    5、order by :查询结果按某个字段进行排序,默认是升序,desc是降序。

 

 

Oracle数据库

原文:https://www.cnblogs.com/moxiaoyu557/p/11773876.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!