03-数据库和数据表的基本操作

前置知识:

在Oracle数据库中,SYS 和 SYSTEM 确实是两个默认存在的超级管理员账户,但它们在权限级别、用途和管理对象上有着本质的区别。

以下是二者的主要区别简述:

  1. 权限级别与角色
    SYS:
    拥有最高权限。
    默认以 SYSDBA 或 SYSOPER 角色登录。
    可以执行几乎所有的数据库操作,包括启动和关闭数据库实例、修改数据库结构、访问数据字典基表(Base Tables)等。
    它是数据字典的所有者。
    SYSTEM:
    拥有较高的管理权限,但低于 SYS。
    默认以 DBA 角色登录(普通DBA权限,非SYSDBA)。
    不能执行某些底层操作,如启动/关闭数据库实例、创建数据库、恢复控制文件等。
    主要用于日常的数据库管理和维护任务。
  2. 存储对象与用途
    SYS:
    用途:用于维护数据库内部结构、数据字典和动态性能视图。
    存储对象:所有数据字典表和动态性能视图都存储在 SYS 模式下。
    原则:官方强烈建议不要在 SYS 模式下创建任何用户表、存储过程或业务对象,以免破坏数据字典或导致升级失败。
    SYSTEM:
    用途:用于日常的管理任务,如创建用户、分配权限、监控会话、管理存储等。
    存储对象:通常存储一些额外的管理工具和视图(如 Oracle Enterprise Manager 的一些配置信息)。
    原则:虽然可以在 SYSTEM 模式下创建对象,但最佳实践是避免在此模式下存放业务数据,应专门为业务创建新的表空间和用户。
  3. 密码管理与依赖
    SYS:如果 SYS 密码丢失且无法通过操作系统认证登录,数据库将极难恢复,可能需要重建控制文件或进行复杂的恢复操作。
    SYSTEM:如果 SYSTEM 密码丢失,可以使用 SYS 账户登录后对其进行重置,风险相对较小。

1.创建数据库

请看演示录屏

如果上班使用的数据库版本是9i 10g 11g

解锁一下scott用户

2.删除数据库

请看演示录屏

切记不能删除orcl !!!!

温馨提示:执行删除数据库时要非常谨慎,在执行该操作后,数据库中存储的所有的数据表和数据将一同删除,而且不能修复!

卸载数据库清理完注册表重启电脑后需要做的工作:

  1. Win + R,输入 lusrmgr.msc 并回车。

3.创建数据表

3.1 创建表的语法和注意事项
bash 复制代码
create table <数据表名>
(
字段名1 数据类型 [列级别的约束][默认值],
字段名2 数据类型 [列级别的约束][默认值],
字段名3 数据类型 [列级别的约束][默认值],
.........
[表级别的约束]
);
备注:<>的内容必须写    []的内容根据需求写

创建表必须指定的信息:
1.创建的表的名称不区分字母大小写,不能使用SQL语言中的关键字 create  、table 。。。
2.数据表中的每一个列(字段)的名称和数据类型,如果说需要创建多个列,就要使用逗号隔开

创建员工信息表

字段名 数据类型 备注

id number(11) 员工编号

name varchar2(30) 员工姓名

deptid number(11) 所属部门编号

salary number(9,2) 工资

bash 复制代码
create table tb_emp1( id number(11),name varchar2(30),deptid number(11),salary number(9,2));
3.2使用主键约束

标识唯一 针对于编号

bash 复制代码
定义列的时候同时指定主键
语法: 
字段名 数据类型 primary key


create table tb_emp2
( 
id number(11) primary key,
name varchar2(30),
deptid number(11),
salary number(9,2)
);


编写好字段在后面填
create table tb_emp3
( 
id number(11),
name varchar2(30),
deptid number(11),
salary number(9,2),
primary key(id)
);

上面讲的是单独的主键 

多字段联合主键 (慎用)
primary key [字段1,字段2,....,字段n]


create table tb_emp4
( 
name varchar2(30),
deptid number(11),
salary number(9,2),
primary key(name,deptid)
);

表已经创建好忘记添加主键的解决方案:

create table tb_emp5
( 
id number(11),
name varchar2(30),
deptid number(11),
salary number(9,2)
);

创建好表以后再添加主键:
alter table 表名 add constraints 主键名pk_列名  primary key(列名);

操作的sql语句以及效果图:

bash 复制代码
C:\Users\liuqingdong>sqlplus "/as sysdba"

SQL*Plus: Release 19.0.0.0.0 - Production on 星期三 2月 25 10:48:05 2026
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle.  All rights reserved.


连接到:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0

SQL> create table tb_emp1()
  2  /
create table tb_emp1()
                     *
第 1 行出现错误:
ORA-00904: : 标识符无效


SQL> create table tb_emp1( id number(11),name varchar2(30),deptid number(11),salary number(9,2));

表已创建。

SQL> desc tb_emp1;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(11)
 NAME                                               VARCHAR2(30)
 DEPTID                                             NUMBER(11)
 SALARY                                             NUMBER(9,2)

SQL> create table tb_emp2
  2  (
  3  id number(11) primary key,
  4  name varchar2(30),
  5  deptid number(11),
  6  salary number(9,2)
  7  );

表已创建。

SQL> desc tb_emp2;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER(11)
 NAME                                               VARCHAR2(30)
 DEPTID                                             NUMBER(11)
 SALARY                                             NUMBER(9,2)

SQL> create table tb_emp3
  2  (
  3  id number(11),
  4  name varchar2(30),
  5  deptid number(11),
  6  salary number(9,2),
  7  primary key(id)
  8  );

表已创建。

SQL> desc tb_emp3;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER(11)
 NAME                                               VARCHAR2(30)
 DEPTID                                             NUMBER(11)
 SALARY                                             NUMBER(9,2)

SQL> create table tb_emp4
  2  (
  3  name varchar2(30),
  4  deptid number(11),
  5  salary number(9,2),
  6  primary key(name,depid)
  7  );
primary key(name,depid)
                 *
第 6 行出现错误:
ORA-00904: "DEPID": 标识符无效


SQL> create table tb_emp4
  2  (
  3  name varchar2(30),
  4  deptid number(11),
  5  salary number(9,2),
  6  primary key(name,deptid)
  7  );

表已创建。

SQL> desc tb_emp4;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 NAME                                      NOT NULL VARCHAR2(30)
 DEPTID                                    NOT NULL NUMBER(11)
 SALARY                                             NUMBER(9,2)

SQL> create table tb_emp5
  2  (
  3  id number(11),
  4  name varchar2(30),
  5  deptid number(11),
  6  salary number(9,2)
  7  );

表已创建。

SQL> desc tb_emp5;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER(11)
 NAME                                               VARCHAR2(30)
 DEPTID                                             NUMBER(11)
 SALARY                                             NUMBER(9,2)

SQL> alter table tb_emp5 add constraints pk_id primary key(id);

表已更改。

SQL> desc tb_emp5;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 ID                                        NOT NULL NUMBER(11)
 NAME                                               VARCHAR2(30)
 DEPTID                                             NUMBER(11)
 SALARY                                             NUMBER(9,2)

SQL>
相关推荐
xiaoliuliu123452 小时前
treeNMS-1.7.5部署步骤详解(附Java环境准备与数据库配置)
java·开发语言·数据库
数据知道2 小时前
MongoDB 更新操作符 `$set` 与 `$unset`:精准修改字段与删除字段
数据库·mongodb
数据知道2 小时前
MongoDB 数值更新原子操作:`$inc` 实现点赞、计数器等高并发原子操作
数据库·算法·mongodb
jnrjian2 小时前
Oracle 共享池 库缓存下的 Library Cache Lock
数据库·缓存·oracle
科技块儿2 小时前
开发者需要为网站或应用集成IP归属地显示功能,如何选择可靠的数据源?
服务器·网络·数据库·tcp/ip·edge·ip
没有bug.的程序员2 小时前
金融风控系统:实时规则引擎内核、决策树物理建模与 Drools 性能压榨
java·数据库·决策树·金融·drools·物理建模·实时规则
SuniaWang2 小时前
Milvus 深度解析:为 AI 而生的云原生向量数据库
数据库·人工智能·milvus
北京_小杰子2 小时前
Windows10本地安装SQLserver数据库连接的过程
数据库·windows·sqlserver·php
堕2742 小时前
MySQL数据库《基础篇--表的增删改查操作CRUD(3)》
数据库·mysql