导读:本期聚焦于小伙伴创作的《Oracle数据库创建第一个表教程:从小白到掌握建表语句与约束设置》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Oracle数据库创建第一个表教程:从小白到掌握建表语句与约束设置》有用,将其分享出去将是对创作者最好的鼓励。

小白学Oracle第二关:第一个Oracle数据库表的创建

在上一关的学习中,我们已经掌握了Oracle数据库的安装与基本连接。现在,我们将正式进入数据库操作的核心环节:创建第一个Oracle数据库表。表是存储数据的基础结构,理解如何创建表是掌握Oracle数据库的第一步。对于初学者来说,创建表不仅仅是执行一条SQL语句那么简单,还需要明确表的结构、字段类型以及一些基本约束。

准备工作:连接到数据库

在创建表之前,确保你已经成功连接到Oracle数据库实例。通常,我们可以使用SQL*Plus或SQL Developer等工具。假设我们已经使用system用户连接到了本地数据库实例ORCL。如果还没有数据库用户,可以先创建一个用户来存放我们自己的表,例如:

CREATE USER my_user IDENTIFIED BY my_password;
GRANT CONNECT, RESOURCE TO my_user;
CONNECT my_user/my_password@orcl;

使用自己的用户创建表,可以避免与系统表冲突。现在,我们已经准备好开始创建第一个表了。

了解表的基本结构

在关系型数据库中,表由行(记录)和列(字段)组成。每个列都有特定的数据类型,用于定义该列可以存储的数据种类。Oracle数据库支持多种数据类型,常用的包括:

  • CHAR(n):固定长度的字符类型,n表示字符数,最大为2000字节。

  • VARCHAR2(n):可变长度的字符类型,n表示最大字符数,最大为4000字节。

  • NUMBER(p,s):数值类型,p表示总位数,s表示小数位数。

  • DATE:日期和时间类型,精确到秒。

  • CLOB:字符大对象,用于存储大量文本,最大为4GB。

  • BLOB

  • :二进制大对象,用于存储图片、文件等。

对于初学者来说,最常用的是VARCHAR2NUMBERDATE

设计第一个表:学生信息表

假设我们要创建一个用于存储学生信息的表,名为students。这个表需要包含以下字段:

  • student_id:学生编号,唯一标识每个学生,使用NUMBER类型。

  • name:学生姓名,最大长度为100个字符的字符串。

  • gender:性别,使用固定长度1个字符('M'或'F')。

  • birth_date:出生日期,使用DATE类型。

  • phone

  • :联系电话,最大长度为20个字符。

  • email:电子邮箱,最大长度为100个字符。

在设计表时,我们还需要考虑约束条件。例如,学生编号应该唯一且不能为空,姓名不能为空。下面给出完整的CREATE TABLE语句。

编写CREATE TABLE语句

Oracle使用CREATE TABLE语句来创建表。基本语法如下:

CREATE TABLE table_name (
    column1 datatype [constraint],
    column2 datatype [constraint],
    ...
);

对于我们的学生信息表,完整的创建语句为:

CREATE TABLE students (
    student_id    NUMBER(6)       NOT NULL,
    name          VARCHAR2(100)   NOT NULL,
    gender        CHAR(1)         NOT NULL,
    birth_date    DATE,
    phone         VARCHAR2(20),
    email         VARCHAR2(100),
    CONSTRAINT pk_students PRIMARY KEY (student_id),
    CONSTRAINT ck_gender CHECK (gender IN ('M', 'F'))
);

在以上语句中,我们做了以下几件事:

  • 为每个字段指定了数据类型和是否允许为空(NOT NULL)。

  • 定义了主键约束(PRIMARY KEY)在student_id上,确保每行数据唯一。

  • 添加了检查约束(CHECK),限制gender列只能包含'M'或'F'。

执行创建表操作

将上述SQL语句复制到SQL*Plus或SQL Developer等工具的执行窗口中,然后执行。如果语句没有错误,系统会返回Table created.的提示。如果出现错误,请检查语法和用户权限。创建成功后,我们可以使用DESC students命令查看表结构:

DESC students;

输出结果应该显示类似以下内容:

Name        Null?    Type
----------- -------- ------------
STUDENT_ID  NOT NULL NUMBER(6)
NAME        NOT NULL VARCHAR2(100)
GENDER      NOT NULL CHAR(1)
BIRTH_DATE           DATE
PHONE                VARCHAR2(20)
EMAIL                VARCHAR2(100)

现在,表已经成功创建。我们可以插入一些数据来验证表是否可用:

INSERT INTO students (student_id, name, gender, birth_date, phone, email)
VALUES (1001, '张三', 'M', TO_DATE('2000-01-15', 'YYYY-MM-DD'), '13800138000', 'zhangsan@example.com');

INSERT INTO students (student_id, name, gender, birth_date, phone, email)
VALUES (1002, '李四', 'F', TO_DATE('1999-08-20', 'YYYY-MM-DD'), '13900139000', 'lisi@example.com');

COMMIT;

执行SELECT * FROM students;可以看到插入的两条记录:

STUDENT_ID NAME   G BIRTH_DATE PHONE        EMAIL
---------- ------ - ---------- ------------ --------------------
      1001 张三   M 15-JAN-00 13800138000 zhangsan@example.com
      1002 李四   F 20-AUG-99 13900139000 lisi@example.com

常见错误与解决方法

初学者在创建表时经常遇到以下错误:

  • ORA-00942: 表或视图不存在:通常是因为表还未创建,或者用户没有权限访问。检查用户和表名。

  • ORA-00001: 违反唯一约束条件:插入重复主键值时发生。确保每个表的student_id唯一。

  • ORA-02290: 违反检查约束条件:例如插入gender值不是'M'或'F'时触发。

  • ORA-01950: 表空间中无权限:用户没有在表空间上创建对象的权限。通过ALTER USER my_user QUOTA UNLIMITED ON USERS;授权。

另外,注意Oracle中的表名和列名默认是大写的,但引用时不区分大小写。如果表名包含特殊字符,需要用双引号括起来,但通常不建议这样做。

表的修改与删除

创建表之后,可能需要进行修改。例如,添加新列:

ALTER TABLE students ADD (address VARCHAR2(200));

修改列的数据类型:

ALTER TABLE students MODIFY (phone VARCHAR2(30));

删除表:

DROP TABLE students;

注意,删除表会永久丢失数据,操作前请务必确认。

总结

通过本关的学习,你已经成功创建了第一个Oracle数据库表——学生信息表。我们学习了如何设计表结构、使用CREATE TABLE语句、定义主键和检查约束,以及如何验证和修改表。这是Oracle数据库开发的基础,后续的增删改查操作都基于此。下一关,我们将深入学习数据插入、查询和更新的技巧。记住,动手实践是掌握Oracle的关键,请在你的环境下创建不同的表进行练习。

Oracle数据库创建表 CREATETABLE语句 数据类型 主键约束 ALTERTABLE

免责声明:已尽一切努力确保本网站所含信息的准确性。网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。