一、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解锁)
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 |
二进制类型:存储的是二进制对象 例:图片、视频、声音等转换过来的二进制对象 |
-- 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是降序。
原文:https://www.cnblogs.com/moxiaoyu557/p/11773876.html