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>
相关推荐
w-w0w-w7 小时前
SQL注入
网络·数据库·sql
tianyuanwo7 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
一条泥憨鱼7 小时前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路
网络·数据库·网络协议·tcp/ip·计算机网络
IvorySQL8 小时前
深入 PostgreSQL WAL:从崩溃恢复到逻辑复制
数据库·postgresql
幽灵诶9 小时前
Mysql(基于测试的学习)
数据库·mysql
砚底藏山河9 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
宇宙无敌暴龙战士66610 小时前
MySQL 8 库表操作学习笔记:SQL 基础、库表管理、约束与用户授权全流程
数据库·sql·mysql·学习笔记·后端开发
猿究院_夏燊10 小时前
MySQL 的四种隔离级别
java·数据库·mysql
say_fall10 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
共享家952711 小时前
408 操作系统第一章
服务器·数据库·windows