ORACLE实例练习一

1. 建表

create table stu (
sno varchar2 (10) not null,
sname varchar2(10),
sgentle varchar2(2),
sbirth date,
sdept varchar2(20))

tips:
date 存储日期与时间
timestamp 年月日时分秒 秒后6位同时包含时区
clob 存储大文本,ex:非结构化的XML文档
blob 二进制对象,ex:图形、视频、声音等

2. 添加字段

SQL> l
  1  alter table stu
  2  add snajor varchar2(20)
  3   default '计算机科学与技术'
  4* not null
SQL> /
alter table stu
*1 行出现错误:
ORA-00600: 内部错误代码, 参数: [kkdlReadOnDiskDefVal: bad defValLen], [24],
[20], [], [], [], [], [], [], [], [], []

这里有

报错ORA-00600

,参考https://stackoverflow.com/questions/18050871/ora-00600-internal-error-code-arguments-4194-65-51?r=SearchResults在这里插入图片描述
重新打开一个命令窗口后不再报错。

3. 修改字段

SQL> l
  1  alter table stu
  2     modify  snajor varchar2(200)
  3*  default '计算机科学与技术'

4. 删除字段

SQL> alter table stu
  2  drop column sbirth
  3  /
alter table stu
*1 行出现错误:
ORA-12988: 无法删除属于 SYS 的表中的列

sys用户不能删除表中字段,那就只好新建一个用户了

SQL> create user scott identified by tiger;
create user scott identified by tiger
            *1 行出现错误:
ORA-65096: 公用用户名或角色名无效

新建用户由于版本不一样,12和11的命令似乎不一样,12在CDB模式下需要以C##开头新建用户

新建用户

SQL> create user c##a identified by password;
SQL> grant dba,connect to  c##a;

授权成功。

5. 重命名表

两种方法

SQL> rename stu to stu1;

表已重命名。
SQL> alter table stu1 rename to stu;

表已更改。

6. 复制相同结构的表

SQL> create table stu1 as select * from stu where 1=2;

表已创建。

SQL> desc stu1;
 名称                                      是否为空? 类型
 ----------------------------------------- -------- ----------------------------
 SNO                                       NOT NULL VARCHAR2(10)
 SNAME                                              VARCHAR2(10)
 SGENTLE                                            VARCHAR2(2)
 SBIRTH                                             DATE
 SDEPT                                              VARCHAR2(20)

where 1 = 2

表示只复制表结构,不复制表数据
也可写成

where rownum<1

7. DROP删除表

SQL> drop table stu1;

表已删除。

drop执行后,目标表被移除到回收站中,基于该表的索引、触发器等对象也同时删除;
该表并未完全消失,而是被重命名为系统定义名称,存在于统一表空间中,具有与原始表相同结构,还可被恢复。

8. 创建主键约束

一个表只能有一个主键约束,可以为一列或一组列。
主键保证数据的唯一性和非空
创建表时

SQL> create table stu(
  2  sno varchar2(10) primary key,
  3  sname varchar2(10),
  4  sgentle varchar2(2),
  5  sage number(2),
  6  sbirth date,
  7  sdept varchar2(20))
  8  /

创建表后

SQL> alter table stu add constraint pk_stu primary key(sno)

9. 创建唯一性约束

unique约束保证了在非主键列不输入重复的值,每个字段只允许一个空值

SQL> create table stu(
  2  sno varchar2(10) unique,
  3  sname varchar2(10),
  4  sgentle varchar2(2),
  5  sage number(2),
  6  sbirth date,
  7  sdept varchar2(20))
  8  /

表已创建。

10. 创建CHECK约束

限制输入到一列或者多列的值的范围

  • Oracle PL/SQL支持单独一列使用多个check约束,按约束创建的顺序对其取值
  • 可在表一级创建check约束,再应用到多列

建表时创建:

SQL> create table stu(
  2  sno varchar2 (10),
  3  sname varchar2(10),
  4  sgentle varchar2(10),
  5  check(sgentle='男' or sgentle='女'),
  6  sage number(2)
  7  check(sage>=10 and sage<=90),
  8  sbirth date,
  9  sdept varchar2(20))
 10  /

表已创建。

建表后创建:

SQL> alter table stu
  2  add constraint ck_stu
  3  check(sno>='120001' and sno<='129999')
  4  /

表已更改。

查看所有约束

SQL> l
  1  select table_name,constraint_name,constraint_type
  2  from user_constraints
  3* where table_name='STU'
SQL> /

TABLE_NAME  CONSTRAINT_NAME        CO
----------- ---------------------- --
STU         SYS_C008453            C
STU         SYS_C008454            C
STU         CK_STU                 C
  • C表示约束属于CHECK类型
  • P表示PRIMARY KEY
  • U表示UNIQUE KEY
  • R表示外键FOREIGN KEY

11. 创建外键约束

  • 即FOREIGN KEY约束,为表中的一列或者多列提供数据完整性参照;
  • 通常与PRIMARY约束或者UNIQUE约束同时使用;
  • 可包含空值,包含空值时将跳过所有值的验证
SQL> create table stu1 (
 2  sno varchar2(10),
 3  foreign key(sno)
 4  references stu(sno),
 5  sname varchar2(10),
 6  sgentle varchar2(2),
 7  sage number(2),
 8  sbirth date,
 9  sdept varchar2(20))
10  /
references stu(sno),
               *4 行出现错误:
ORA-02270: 此列列表的唯一关键字或主键不匹配

引用stu表的SNO字段作为STU1表的外键,必须保证SNO是STU的主键

SQL> save d:1.sql
已创建 file d:\1.sql
SQL> alter table stu add constraint pk_stu primary key(sno);

表已更改。

SQL> @ d:1.sql

表已创建。

SQL> select table_name ,constraint_name,constraint_type from user_constraints where table_name in('STU','STU1');

TABLE_NAME  CONSTRAINT_NAME        CO
----------- ---------------------- --
STU         SYS_C008453            C
STU         SYS_C008454            C
STU         CK_STU                 C
STU         PK_STU                 P
STU1        SYS_C008457            R

追加外键约束

SQL> l
  1  alter table stu1
  2  add constraint fk_stu
  3*  foreign key(sno) references stu(sno

12. 删除约束

通过确认的约束名删除

SQL>  select table_name ,constraint_name,constraint_type from user_constraints where table_name in('STU','STU1');

TABLE_NAME  CONSTRAINT_NAME        CO
----------- ---------------------- --
STU         SYS_C008453            C
STU         SYS_C008454            C
STU         CK_STU                 C
STU         PK_STU                 P
STU1        SYS_C008457            R

SQL> alter table stu
  2  drop constraint SYS_C008453
  3  /

表已更改。

SQL>  select table_name ,constraint_name,constraint_type from user_constraints where table_name in('STU','STU1');

TABLE_NAME  CONSTRAINT_NAME        CO
----------- ---------------------- --
STU1        SYS_C008457            R
STU         SYS_C008454            C
STU         CK_STU                 C
STU         PK_STU                 P

13. 为字段设置默认值

  • 默认值不属于约束,无法在约束中查看
  • 只能使用下列三种:
  1. 常量值(字符串)
  2. 系统函数(SYSTEM_USER())
  3. NULL
  • 只能在创建表时执行
SQL> L
  1  create table stu (
  2  sno varchar2 (10)
  3  primary key,
  4  sname varchar2(10)
  5  not null,
  6   sgentle varchar2(4)
  7  default '男',
  8  sage number(2),
  9  sbirth date,
 10  sdept varchar2(20)
 11* default '暂未分配')
SQL> /

表已创建。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Oracle数据库是一种流行的关系型数据库系统,它具有广泛的应用领域和功能。随着中国市场的增长,越来越多的企业和开发者开始使用Oracle数据库,对于非英语母语用户,中文手册是必不可少的工具。 一本Oracle中文手册需要覆盖的内容非常广泛,从Oracle数据库的基础概念到高级特性,都需要被详细阐述。手册的目的是帮助读者更好地理解Oracle技术,方便用户进行开发和管理,提高工作效率。 手册的主要内容应包括数据库管理、SQL语法、数据类型、存储过程、触发器、备份和恢复、性能优化等。对于使用Oracle数据库的管理员和开发者,手册还应提供一些实用的技巧和最佳实践,如如何管理数据库实例、如何优化查询性能等。 当然,一本好的Oracle中文手册也应该包含足够的例子和练习,以帮助读者掌握Oracle技术。手册中可以提供一些示例代码,供读者试验和学习。同时,也可以提供一些练习题,检验读者的理解程度和掌握程度。 总之,Oracle中文手册应该是实用、全面、易于理解的。它应该成为使用Oracle数据库的管理员和开发者的重要参考资料,帮助他们更好地使用Oracle技术,提高工作效率。 ### 回答2: Oracle 中文手册是一份详尽的安装、配置及应用 Oracle 数据库的指南,适用于中文读者。手册内容包含了 Oracle 数据库的概述、安装和升级、Oracle 实例的创建和管理、数据库对象的创建和管理、备份和恢复、安全和用户管理等方面的内容,覆盖了 Oracle 数据库管理的方方面面。 手册的第一部分介绍了 Oracle 数据库的基础理论和相关概念,包括数据库的体系结构、主要特性及应用场景等;第二部分详细介绍了 Oracle 数据库的安装和升级,在此过程中,手册着重强调了安装前的准备工作和注意事项;第三部分主要介绍了如何创建和管理 Oracle 实例,包括初始化参数设置、用户和角色管理、元数据管理等;第四部分讲解了数据库对象的创建和管理,如表、视图、存储过程、触发器等;第五部分介绍了备份和恢复的方法和策略,以及在异常情况下如何保证数据库的可靠性和可用性;最后一部分涵盖了数据库的安全管理和用户管理方法,如登录安全、密码策略、权限管理等。 总的来说,Oracle 中文手册是一份非常实用、权威、全面的数据库管理指南,对于想要了解 Oracle 数据库的读者以及希望提高自己 Oracle 数据库管理技能的从业人员都是非常有价值的参考资料。 ### 回答3: Oracle 中文手册是一份针对 Oracle 数据库管理和开发的中文使用指南,主要提供用户和开发者在使用 Oracle 数据库时所需的技术资料和操作手册。该手册内容分为多个章节,主要涵盖了 Oracle 数据库的基本架构、安装和配置、管理和维护、数据备份和恢复、性能优化和调试、SQL 和 PL/SQL 编程语言、应用程序开发等方面。 在使用 Oracle 数据库时,用户和开发者需要掌握数据库的基本知识,了解其基本架构和相关工具的使用方法,以提高数据库的维护和管理效率。此外,用户和开发者还需掌握 Oracle 数据库的性能优化和调试技术,以提高数据库的运行效率和稳定性。 对于应用程序开发人员来说,掌握 Oracle 数据库的 SQL 和 PL/SQL 编程语言是非常重要的。该手册提供了有关 SQL 和 PL/SQL 语言的详细说明和使用案例,包括 SQL 的基本用法、查询优化、分析函数、数据类型等;PL/SQL 语言的使用、存储过程、触发器、游标等内容,以及如何使用 Oracle 开发工具进行开发。 总之,Oracle 中文手册是 Oracle 数据库用户和开发者必备的参考资料,提供了全面且易于理解的数据库管理和开发知识。无论是初学者还是有经验的用户和开发者,都可以从中收获丰富的知识和技巧,以提高数据库的维护和开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值