一.Oracle启动及登录
1.1 服务手启动即关闭
服务名称:
OracleOraDB19Home1TNSListener
OracleServiceORACLE
手动启动服务方法:
net start 服务名称
手动关闭服务方法:
net stop 服务名称
1.2 SQL* PLUS命令
(1)登录:sqlplus/nolog (2)连接数据库:conn 用户名/密码(as sysdba) (3)修改用户密码(例:修改sys的密码为123):alter user sys identified by 123; 管理员用户打开cmd: win + R -> cmdd //查看表空间 select tablespace_name from dba_tablespaces; //连接数据库 sqlplus system/root@mydb1 sqlplus system/密码@数据库名 //查看当前正在使用的数据库 select name from v$database; //显示当前可用命令 help index //查看命令的用法 help 具体命令 //创建用户(此时用户没有权限连接数据库) create user test identified by root; //如果是容器数据库,用户名必须是c## ,即 create user c##test identified by root; //用system用户连接数据库,给test用户授权 grant connect to test; //显示当前用户 show user; //查看所有系统变量值 show all //设置变量值自动提交 set autocommit no //清屏 clear screen //创建sql文件 //edit 文件路径/文件名
二. 表的创建和维护
2.1 创建表
- 用create table创建表以存储数据
create table acctmanager( amid number(4), amname varchar(20), amedate date dafault sysdate, amweight number (4,2), region char(2) );
- 使用desc查看表的结构
describe acctmanager; 注意:describe 是SQL*PLUS命令二而不是SQL命令,可简写为desc tableanme
- 通过子查询创建表
create table manager as (select amid, aname from acctmanager);
2.2 修改表
- 使用alter table 添加一列
alter table acctmanager add(tel number(11)); //查看表结构 desc acctmanager; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- AMID NUMBER(4) ANAME VARCHAR2(20) AMEDATE DATE AMWEIGHT NUMBER(4,2) REGION CHAR(2) TEL NUMBER(11)
- 使用alter table 修改一列
alter table acctmanager modify(tel number(10)); //查看表结构 desc acctmanager; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- AMID NUMBER(4) ANAME VARCHAR2(20) AMEDATE DATE AMWEIGHT NUMBER(4,2) REGION CHAR(2) TEL NUMBER(10)
- 使用alter table删除一列
可以通过alter table…drop column语句完成
(1)与带有add 或modify 的子句的alter table命令不同, drop column子句只能引用一个列
(2)如果从表中删除一列,那么删除将是永久的,如果不小心从表中错误的删除了列,那么不能“取消”这种损坏,唯一的选择是将这一列重新添加到表中,然后重新输入以前包含的所有数据
(3)不能删除表中剩余的最后一列,如果一个表只剩下最后一列并尝试删除这一列,那么这个命令将会失败,并返回一个错误信息
(4)该字句将删除列及其内容,所以使用是要格外去小心
alter table acctmanager drop column tel; //查看表结构 desc acctmanager; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- AMID NUMBER(4) ANAME VARCHAR2(20) AMEDATE DATE AMWEIGHT NUMBER(4,2) REGION CHAR(2)
- 使用alter table…set unused /drop unused colunms命令
//将acctmanager表中区域经理ID(amid)字段设置为不可用列并使用功能select语句进行查看结果 alter table acctmanager set unused (amid); select * from acctmanager; ANAME AMEDATE AMWEIGHT REGI ---------------------------------------- -------------- ---------- ---- 张三 15-9月 -22 50 ji //将acctmanager表中的区域经理ID(amid)不可用列删除掉 alter table acctmanager drop unused columns;
2.3 重命名表
在一个组织工作中,不要更改其他用户访问的表的名称,除非事先通知某用户新的表的名称
//将acctmanager表改名为accma rename acctmanager to accma; //用select查询 select * from accma; ANAME AMEDATE AMWEIGHT REGI ---------------------------------------- -------------- ---------- ---- 张三 15-9月 -22 50 ji
2.4 截断表
如果只需要删除表内数据,而保留表结构,可以使用truncate table语句截断表
格式语法: truncate table table_name;
truncate table accma; //查看表数据 select * from accma; 未选定行 //查看表结构 desc accma; 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- ANAME VARCHAR2(20) AMEDATE DATE AMWEIGHT NUMBER(4,2) REGION CHAR(2)
2.5 删除表
当不需要表时,可以使用drop table 语句删除表,drop table 将表结构和表数据一起删除
语法格式: drop table table_name;
drop table accma; 表已删除。 //查看表结构 desc accma; ERROR: ORA-04043: 对象 accma 不存在
三. 数据完整性与约束
3.1 约束类型