SQL*Plus命令工具
1. 该工具是 Oracle 系统默认安装下,自带的一个客户端工具。 用户明输入:sys、system 即可登录。
2.接下来需要输入口令:即是在安装的时候设置的口令和密码;
3.然后开始连接该客户端的工具:conn system as sysdba;
连接到 Oracle 服务器的命令是:
conn 用户名/密码 as 连接身份@服务器连接字符串
说明:
1. 连接身份:表示该用户连接后拥有的权限。
sysdba: 即数据库管理员,权限包括:打开数据库服务器、关闭数据库服务器、备份数据库、恢复数据库、日志归档、会话限制、管理功能、创建数据库。
sys 用户必须用 sysdba 身份才能登录,system 用户可以用普通身份登录。
sysyoper:即数据库操作员,权限包括:打开数据库服务器、关闭数据库服务器、备份数据库、恢复数据库、日志归档、会话限制。
normal: 即普通用户,权限只有查询某些数据表的数据。默认的身份是 normal用户。
4. Oracle 启动和关闭
OracleService 启动后,就可以对数据库进行管理了,Oracle 的启动和关闭是最基本的命
令,在 SQL*Plus 中,启动 Oracle 必须是 sys 用户,命令格式是:
启动:startup open;
关闭:shutdown immediate
5. Oracle 用户和权限
Oracle 中,一般不会轻易在一个服务器上创建多个数据库,在一个数据库中,不同的项
目由不同的用户访问,每一个用户拥有自身创建的数据库对象,因此用户的概念在 Oracle
中非常重要。Oracle 的用户可以用 CREATE USER 命令来创建。其语法是:
语法结构:创建用户
CREATE USER 用户名 IDENTIFIED BY 口令 [ACCOUNT LOCK|UNLOCK]
语法解析:
LOCK|UNLOCK 创建用户时是否锁定,默认为锁定状态。锁定的用户无法正常的登录进行数据库操作。
创建用户(Oracle中是大写的):create user mahui identidied by root;
语法结构:授权
GRANT角色|权限 TO 用户(角色)
给用户授权:grant connect to mahui;
语法结构:其他操作
//回收权限
REVOKE 角色|权限 FROM 用户(角色)
//修改用户的密码
ALTER USER 用户名 IDENTIFIED BY 新密码
//修改用户处于锁定(非锁定)状态
ALTER USER 用户名 ACCOUNT LOCK|UNLOCK
回收权限:revoke connect from mahui;
修改用户的密码:alter user mahui identitied by 1234;
alter user mahui account unlock;
3. 创建表和约束
Oracle 创建表同 SQL Server 一样,使用 CREATE TABLE 命令来完成。创建约束则使用如下
命令: 语法格式:ALTER TABLE 命令
ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束内容。
不论创建表还是约束,与 SQL Server 基本相同,注意:在 Oracle 中 default 是一个值,
而 SQL Server 中 default 是一个约束,因此 Oracle 的 default 设置可以在建表的时候创建。
代码演示:Oracle 创建表和约束
CREATE TABLE INFOS
(
STUID VARCHAR2(7) NOT NULL, --学号 学号=‘S’+班号+2位序号
STUNAME VARCHAR2(10) NOT NULL, --姓名
GENDER VARCHAR2(2) NOT NULL, --性别
AGE NUMBER(2) NOT NULL, --年龄
SEAT NUMBER(2) NOT NULL, --座号
ENROLLDATE DATE, --入学时间
STUADDRESS VARCHAR2(50) DEFAULT '地址不详', --住址
CLASSNO VARCHAR2(4) NOT NULL --班号 班号=学期序号+班级序号
)
/ ①
ALTER TABLE INFOS ADD CONSTRAINT PK_INFOS PRIMARY KEY(STUID) ②
/
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_GENDER
CHECK(GENDER = '男' OR GENDER = '女') ③
/
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_SEAT
CHECK(SEAT >=0 AND SEAT <=50) ④
/
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_AGE
CHECK(AGE >=0 AND AGE<=100) ⑤
/
ALTER TABLE INFOS ADD CONSTRAINT CK_INFOS_CLASSNO
CHECK((CLASSNO >='1001' AND CLASSNO<='1999') OR
(CLASSNO >='2001' AND CLASSNO<='2999')) ⑥
/
ALTER TABLE INFOS ADD CONSTRAINTS UN_STUNAME UNIQUE(STUNAME) ⑦
/
代码解析:
① 在 Oracle 代码中,“/”执行缓存区中的语句,由于缓冲区中只存储一条刚刚保存过
语句,由于每条语句没有用分号结尾,只是保存在缓冲区,因此每条语句后面都有
单独一行“/”。
② 创建一个主键约束。
③ 与 ④ ⑤ ⑥ ⑦一起创建各种 check 约束。其中⑦是唯一约束,表示该列值是唯一
的,列中的值不能重复。
Oracle 中可以把查询的结果根据结果集中的表结构和数据形成一张新表。
语法结构:根据结果集创建表
CREATE TABLE 表名 AS SELECT 语句
代码演示:根据结果集创建表
SQL> CREATE TABLE INFOS1 AS SELECT * FROM INFOS;
TABLE CREATED
在 Oracle 中,一个 INSERT 命令可以把一个结果集一次性插入到一张表中。使用的语句
是:INSERT INTO 表 SELECT 子句,如下示例:
代码演示:INSERT 向表中插入一个结果集
SQL> INSERT INTO INFOS2 SELECT * FROM INFOS;
TRUNCATE
在数据库操作中, TRUNCATE 命令(是一个 DDL 命令)可以把表中的所有数据一次性
全部删除,语法是:
语法结构:TRUNCATE
TRUNCATE TABLE 表名
TRUNCATE 和 DELETE 都能把表中的数据全部删除,他们的区别是:
1. TRUNCATE 是 DDL 命令,删除的数据不能恢复;DELETE 命令是 DML 命令,删除后
的数据可以通过日志文件恢复。
2. 如果一个表中数据记录很多,TRUNCATE 相对 DELETE 速度快。
由于 TRUNCATE 命令比较危险,因此在实际开发中,TRUNCATE 命令慎用。
消除重复行
在 Oracle 查询中结果中,可能出现若干行相同的情况,那么可以使用 DISTINCT 消除重
复行。具体的用法如示例: