百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

从零开始学习Oracle之数据库和数据表的基本操作

sinye56 2024-10-01 20:04 4 浏览 0 评论

1.创建数据库

在Oracle 19C安装过程中已经创建了名为ORCL的数据库,我们也可以在Oracle安装完成后重新创建数据库,直接上干货:

step1: 在开始菜单中找到【Oracle-OraDB19Home1】——【Database Configuration Assistant】,鼠标单击打开;

step2: 打开【数据库操作】窗口默认第一项就是【创建数据库】,直接点击【下一步】;

step3: 打开【创建数据库】窗口,输入【全局数据库名】、【管理口令】、【Oracle主目录用户口令】(这里是安装数据库时创建的Oracle主目录用户口令,不是新建口令),【数据字符集】选择【GBK 16位简体中文】,取消勾选【创建为容器数据库】,点击【下一步】;

step4: 进入【概要】窗口,检查数据库详细信息无误后,点击【完成】;

step5: 开始自动创建数据库,耐心等待即可;

step6: 【完成】窗口查看创建数据库的最终信息,点击【关闭】完成数据库的创建。

2.删除数据库

删除数据库是将已经存在的数据库从磁盘空间上清除,清除之后,数据库中的所有数据 也将一同被删除。删除数据库的具体操作步骤如下:

step1: 在开始菜单中找到【Oracle-OraDB19Home1】——【Database Configuration Assistant】,鼠标单击打开;

step2: 【数据库操作】窗口选择【删除数据库】,点击【下一步】;

step3: 【选择数据库】窗口,选择要删除的数据库,输入数据库管理员的用户名和口令,点击【下一步】;

step4: 【管理选项】窗口,直接默认,点击【下一步】;

step5: 【概要】窗口,检查要删除数据库的详细信息,没有问题的话,直接点击【完成】;

step6: 弹出警告对话框,选择【是】即可;

step7: 开始自动删除数据库;

step8: 数据库删除完毕,点击【关闭】即可。

3.创建数据表

在创建完数据库之后,接下来的工作就是创建数据表。所谓创建数据表,指的是在已经创建好的数据库中建立新表。创建数据表的过程是规定数据列的属性的过程,同时也是实施数据完整(包括实体完整性、引用完整性和域完整性等)约束的过程。

3.1创建数据表的语法形式

创建数据表的语句为CREATE TABLE,语法规则如下:

CREATE TABLE <表名>
(
字段名1 数据类型 [列级别约束条件] [默认值],
字段名2 数据类型 [列级别约束条件] [默认值],
......
[表级别约束条件]
);

例1:创建一个student表,SQL语句如下:

CREATE TABLE student
(
id number(11),
name varchar2(25),
sex char(1),
age number(3)
)

使用CREATE TABLE创建表时,必须指定以下信息:

①要创建的表的名称,不区分大小写,不能使用SQL语言中的关键字,如DROP、ALTER、INSERT等。

②数据表中每一个列(字段)的名称和数据类型,如果创建多个列,要用逗号隔开。

3.2使用主键约束

主键,又称主码,是表中一列或多列的组合。主键约束(Primary Key Constraint)要求主键列的数据唯一,并且不允许为空。主键能够唯一地标识表中的一条记录,可以结合外键来定义不同数据表之间的关系,并且可以加快数据库查询的速度。主键和记录之间的关系如同身份证和人之间的关系,它们之间是一一对应的。主键分为两种类型:单字段主键和多字段联合主键

1.单字段主键

主键由一个字段组成,SQL语句格式分为以下两种情况:

①在定义列的同时指定主键,语法规则如下:

字段名 数据类型 PRIMARY KEY [默认值]

例2:定义一个student1表,其主键为id,SQL语句如下:

CREATE TABLE student1
(
id number(11) primary key,
name varchar2(25),
sex char(1),
age number(3)
);

②在定义完所有列之后指定主键,语法规则如下:

[CONSTRAINT <约束名>] PRIMARY KEY [字段名]

例3:定义一个student2表,其主键为id,SQL语句如下:

CREATE TABLE student2
(
id number(11),
name varchar2(25),
sex char(1),
age number(3),
PRIMARY KEY(id)
);

例2和例3的执行后的结果是一样的,都会在id字段上设置主键约束。

2.多字段联合主键

主键由多个字段联合组成,语法规则如下:

PRIMARY KEY [字段1,字段2,...,字段n]

例4:创建student3表,因没有id字段,为了唯一确定一个学生,设置name和age为联合主键,SQL语句如下:

CREATE TABLE student3
(
name varchar2(25),
sex char(1),
age number(3),
PRIMARY KEY(name,age)
);

3.使用 ALTER TABLE语句为表添加主键约束

在创建表时如果没有添加主键约束,可以在修改表时为表添加主键约束。添加主键约束的语法格式如下:

ALTER TABLE 数据表名称
ADD CONSTRAINTS 约束名称 PRIMARY KEY(字段名称)

例5:创建student4表时不设置主键,通过ALTER TABLE修改主键为id,创建student4表SQL语句如下:

CREATE TABLE student4
(
id number(11),
name varchar2(25),
sex char(1),
age number(3)
);

通过ALTER TABLE修改id为主键,SQL语句如下:

ALTER TABLE student4
ADD CONSTRAINTS pk_id PRIMARY KEY(id);

4.移除主键约束

对于不需要的主键约束,可以将其移除,具体的语法格式如下:

ALTER TABLE 数据表名称
DROP CONSTRAINTS 约束名称

例6:移除student4表的主键约束pk_id,SQL语句如下:

ALTER TABLE student4
DROP CONSTRAINTS pk_id;

3.3使用外键约束

外键用来在两个表的数据之间建立链接,它可以是一列或者多列。一个表可以有一个或多个外键。外键对应的是参照完整性,一个表的外键可以为空值,若不为空值,则每一个外键值必须等于另一个表中主键的某个值。

外键:首先它是表中的一个字段,它可以不是本表的主键,但对应另外一个表的主键。外键的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的行。外键的作用是保持数据的一致性、完整性。

主表(父表):对于两个具有关联关系的表而言,相关联字段中主键所在的那个表即是主表。

从表(子表):对于两个具有关联关系的表而言,相关联字段中外键所在的那个表即是从表。

1.创建外键

创建外键的语法规则如下:

[CONSTRAINT <外键名>] FOREIGN KEY 字段名1 [,字段名2,…]
REFERENCES <主表名> 主键列1 [,主键列2,…]

“外键名”为定义的外键约束的名称,一个表中不能有相同名称的外键;“字段名”表示子表需要添加外键约束的字段列;“主表名”即被子表外键所依赖的表的名称;“主键列”表示主表中定义的主键列,或者列组合。

关联指的是在关系型数据库中,相关表之间的联系。它是通过相容或相同的属性或属性组 来表示的。子表的外键必须关联父表的主键,且关联字段的数据类型必须匹配,如果类型 不一样,则创建子表时,就会出现错误。

2.在修改数据表时添加外键约束

在创建表时如果没有添加外键约束,可以在修改表时为表添加外键约束。添加外键约束的语法格式如下:

ALTER TABLE 从表数据表名称
ADD CONSTRAINTS 约束名称 FOREIGN KEY(外键约束的字段名称)
REFERENCE 主表数据表名称(字段名称)
ON DELETE CASCADE;

3.移除外键约束

对于不需要的外键约束,可以将其移除,具体的语法格式如下:

ALTER TABLE 数据表名称
DROP CONSTRAINTS 约束名称

3.4使用非空约束

非空约束(Not Null Constraint)指字段的值不能为空。对于使用了非空约束的字段,如果用户在添加数据时没有指定值,数据库系统会报错。

1.创建非空约束

非空约束的语法规则如下:

字段名 数据类型 not null

例7:创建student5表,指定学生姓名name字段不能为空,SQL语句如下:

CREATE TABLE student5
(
id number(11) PRIMARY KEY,
name varchar2(25) not null,
sex char(1),
age number(3)
);

2.修改表时添加非空约束

在创建表时如果没有添加非空约束,可以在修改表时为表添加非空约束。添加非空约束的语法格式如下:

ALTER TABLE 数据表名称
MODIFY 字段名称 NOT NULL;

例8:student5表,指定学生性别sex字段不能为空,SQL语句如下:

ALTER TABLE student5
MODIFY sex NOT NULL;

3.移除非空约束

对于不需要的非空约束,可以将其移除,具体的语法格式如下:

ALTER TABLE 数据表名称
MODIFY 字段名称 NULL;

例9:移除student5表中性别sex字段的非空约束,SQL语句如下:

ALTER TABLE student5
MODIFY sex NULL;

3.5使用唯一性约束

唯一性约束(Unique Constraint)要求该列唯一,允许为空,但只能出现一个空值。唯一约束可以确保一列或者几列不出现重复值。

1.创建唯一性约束

①在定义完列之后直接指定唯一性约束,语法规则如下:

字段名 数据类型 UNIQUE

例10:创建student6表,指定姓名唯一,SQL语句如下:

CREATE TABLE student6
(
id number(11) PRIMARY KEY,
name varchar2(25) UNIQUE,
sex char(1),
age number(3)
);

②在定义完所有列之后指定唯一性约束,语法规则如下:

[CONSTRAINT <约束名>] UNIQUE (<字段名>)

例11:创建student7表,指定姓名唯一,SQL语句如下:

CREATE TABLE student7
(
id number(11) PRIMARY KEY,
name varchar2(25),
sex char(1),
age number(3),
CONSTRAINT STH UNIQUE(name)
);

UNIQUE和PRIMARY KEY的区别: 一个表中可以有多个字段声明为UNIQUE,但只能 有一个PRIMARY KEY声明;声明为PRIMARY KEY的列不允许有空值,但是声明为UNIQUE的字段允许空值(NULL)的存在。

2.在修改表时添加唯一性约束

修改表时也可以添加唯一性约束,具体SQL语法格式如下:

ALTER TABLE 数据表名称
ADD CONSTRAINT 约束名称 UNIQUE(字段名称);

例12:将student5表中的字段name添加唯一性约束,SQL语句如下:

ALTER TABLE student5
ADD CONSTRAINT unq_name UNIQUE (name);

3.移除唯一性约束

对于不需要的唯一性约束,可以将其移除,具体的语法格式如下:

ALTER TABLE 数据表名称
DROP CONSTRAINTS 约束名称;

例13:移除student5表中字段name的唯一性约束,SQL语句如下:

ALTER TABLE student5
DROP CONSTRAINTS unq_name;

3.6使用默认约束

默认约束(Default Constraint)指定某列的默认值。如男性同学较多,性别就可以默认为“男”。如果插入一条新的记录时没有为这个字段赋值,那么系统会自动为这个字段赋值为“男”。

默认约束的语法规则如下:

字段名 数据类型 DEFAULT 默认值

例14:创建student8表,指定学生的性别默认为"男",SQL语句如下;

CREATE TABLE student8
(
id number(11) PRIMARY KEY,
name varchar2(25),
sex char(4) DEFAULT '男',
age number(3)
);

3.7使用检查约束

检查约束为CHECK约束,规定每一列能够输入的值,从而可以确保数值的正确性。例如,性别字段中可以规定只能输入男或者女,此时可以用到检查约束。

1.创建检查约束

检查约束的语法规则如下:

CONSTRAINT 检查约束名称 CHECK(检查条件)

例15:创建student9表,指定学生的性别只能输入“男”或者“女”,SQL语句如下;

CREATE TABLE student9
(
id number(11) PRIMARY KEY,
name varchar2(25),
sex varchar2(4),
age number(3),
CONSTRAINT CHK_sex CHECK (sex='男'or sex='女')
);

2.在修改表时添加检查约束

修改表时也可以添加检查约束,具体SQL语法格式如下:

ALTER TABLE 数据表名称
ADD CONSTRAINT 约束名称 CHECK(检查条件);

例16:将student9表上的年龄字段age添加检查约束,规定年龄输入值为15~25之间,SQL语句如下:

ALTER TABLE student9
ADD CONSTRAINT chk_age CHECK (age>=15 and age <=25);

3.移除检查约束

对于不需要的检查约束,可以将其移除,具体的语法格式如下:

ALTER TABLE 数据表名称
DROP CONSTRAINTS 约束名称;

例17:将student9表上的年龄字段age添加检查约束移除,SQL语句如下:

ALTER TABLE student9
DROP CONSTRAINTS chk_age;

3.8设置表的属性值自动增加

在数据库应用中,经常希望在每次插入新记录时,系统自动生成字段的主键值。可以通过为表主键添加GENERATED BY DEFAULT AS IDENTITY关键字来实现。默认,在Oracle中自增值的初始值是1,每新增一条记录,字段值自动加1。一个表只能有一个字段使用自增约束,且该字段必须为主键的一部分。

设置自增约束的语法规则如下:

字段名 数据类型 GENERATED BY DEFAULT AS IDENTITY

例18:创建student10表,指定id自动递增,SQL语句如下:

CREATE TABLE student10
(
id number(11) GENERATED BY DEFAULT AS IDENTITY,
name varchar2(25) not null,
sex varchar2(4),
age number(3)
);

4.查看数据表结构

使用SQL语句创建好数据表之后,可以查看表结构的定义,以确认表的定义是否正确。在Oracle中,查看表结构可以使用DESCRIBE语句。DESCRIBE/DESC语句可以查看表的字段信息,其中包括:字段名、字段数据类型、是否为主键、是否有默认值等。语法规则如下:

DESCRIBE 表名;
或者
DESC 表名;

注意:DESCRIBE/DESC语句只能在SQLPlus中使用,在PL/SQL Developer之类的软件中无法使用。

例19:在SQLPlus中分别使用DESCRIBE、DESC查看表student10的表结构;

5.修改数据表

修改表指的是修改数据库中已经存在的数据表的结构。Oracle使用ALTER TABLE语句修改表。常用的修改表的操作有:修改表名,修改字段数据类型或字段名,增加和删除字段,修改字段的排列位置,更改表的存储引擎,删除表的外键约束等。

5.1修改表名

Oracle是通过ALTER TABLE语句来实现表名的修改的,具体的语法规则如下:

ALTER TABLE <旧表名> RENAME TO <新表名>;

例20:修改表student10的表名为STU,SQL语句如下:

ALTER TABLE student10 RENAME TO STU;

5.2修改字段的数据类型

修改字段的数据类型,就是把字段的数据类型转换成另一种数据类型。在Oracle中修改字段数据类型的语法规则如下:

ALTER TABLE <表名> MODIFY <字段名> <数据类型>

例21:修改STU表中的age字段数据类型为VARCHAR2(6)

ALTER TABLE STU MODIFY age varchar2(6);

5.3修改字段名

Oracle 中修改字段名的语法规则如下:

ALTER TABLE <表名> RENAME COLUMN <旧字段名> TO <新字段名>;

例22:修改STU表中的age字段名为nianling

ALTER TABLE STU RENAME COLUMN age TO nianling;

5.4添加字段

随着业务需求的变化,可能需要在已经存在的表中添加新的字段。一个完整字段包括字段名、数据类型、完整性约束。添加字段的语法格式如下:

ALTER TABLE <表名> ADD <新字段名> <数据类型>

例23:添加无完整性约束条件的字段,在STU表中添加无完整性约束条件的NUMBER类型的字段class

ALTER TABLE STU ADD class number(10);

例24:添加有完整性约束条件的字段,在STU表中添加一个不能为空的数据类型为VARCHAR2(30)的字段address

ALTER TABLE STU ADD address VARCHAR2(30) not null;

注意:给表添加非空字段时,表内不能有数据,否则无法添加非空字段。

5.5删除字段

删除字段是将数据表中的某个字段从表中移除,语法格式如下:

ALTER TABLE <表名> DROP COLUMN <字段名>;

例25:删除STU表中的address字段

ALTER TABLE stu DROP COLUMN address;

在删除表中的列时,常常在列后添加CASCADE CONSTRAINTS,目的是将与该列相关的约束一并删除掉。

6.删除数据表

删除数据表就是将数据库中已经存在的表从数据库中删除。注意,在删除表的同时,表的定义和表中所有的数据均会被删除。因此,在进行删除操作前,最好对表中的数据做个备份,以免造成无法挽回的后果。

6.1删除没有被关联的表

在Oracle中,使用DROP TABLE可以一次删除一个或多个没有被其他表关联的数据表。语法格式如下:

DROP TABLE 表名;

例26:删除名为student1的表

DROP TABLE student1;

6.2删除被其他表关联的主表

数据表之间存在外键关联的情况下,如果直接删除父表,结果会显示失败。原因是直接删除,将破坏表的参照完整性。如果必须要删除,可以先删除与它关联的子表,再删除父表,只是这样同时删除了两个表中的数据。但有的情况下可能要保留子表,这时如要单独删除父表,只需将关联的表的外键约束条件取消,然后就可以删除父表。

例27:创建两个关联表student和tb_class

CREATE TABLE student
(
id number(11) primary key,
name varchar2(25),
sex varchar2(4),
age number(3)
);
CREATE TABLE tb_class
(
id number(11) primary key,
class_name varchar2(25),
studen_num varchar2(4),
studen_id number(11),
CONSTRAINT stu_class FOREIGN KEY (studen_id) REFERENCES student(id)
);

以上创建student和tb_class两个表,字表有名为stu_class的外键约束,主表student的字段id被子表tb_class的studen_id关联;

通过drop table student命令删除student表时,因存在外键约束,提示下图错误:

移除tb_class表的外键约束,SQL语句如下:

ALTER TABLE tb_class DROP CONSTRAINTS stu_class;

此时解除了student和tb_class两个表的关联关系,可以通过drop table student命令删除主表student了。

7.最后分享2个小知识

7.1 SQL Plus中开启复制、粘贴功能

SQL Plus主界面中,鼠标右击最上方,弹出菜单选择【属性】,勾选【快捷编辑模式】和【将Ctrl+Shift+C/V用作复制/粘贴的快捷键】,点击确定,即可在SQL Plus中进行复制粘贴命令了。

7.2无法登录SQL Plus,提示ORA-12560: TNS: 协议适配器错误

新建数据库后,再删除此数据库,登录SQL Plus时会提示“ORA-12560: TNS: 协议适配器错误”;

这是因为删除数据库后,ORACLE_SID并没有修改过来,此时需要恢复安装时的默认值为“ORCL”。具体操作方法:在【运行】对话框中输入“regedit”并按【Enter】键,打开系统的注册表页面,依次找到 HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraDB19Home1 项目下的ORACLE_SID,右击并在弹出的快捷菜单中选择【修改】命令,打开【编辑字符串】对话框,修改数据为“ORCL”,单击【确定】按钮即可。

相关推荐

Linux在线安装JDK1.8

首先在服务器pingwww.baidu.com查看是否可以连网然后就可以在线下载一、下载安装JDK1.81、在下载安装的同时做好一些准备工作...

Linux安装JDK,超详细

1、了解RPMRPM是Red-HatPackageManager(RPM软件包管理器)的缩写,这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的,现在包括OpenLinux...

Linux安装jdk1.8(超级详细)

前言最近刚购买了一台阿里云的服务器准备要搭建一个网站,正好将网站的一个完整搭建过程分享给大家!#一、下载jdk1.8首先我们需要去下载linux版本的jdk1.8安装包,我们有两种方式去下载安装...

Linux系统安装JDK教程

下载jdk-8u151-linux-x64.tar.gz下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index.ht...

干货|JDK下载安装与环境变量配置图文教程「超详细」

1.JDK介绍1.1什么是JDK?SUN公司提供了一套Java开发环境,简称JDK(JavaDevelopmentKit),它是整个Java的核心,其中包括Java编译器、Java运行工具、Jav...

Linux下安装jdk1.8

一、安装环境操作系统:CentOSLinuxrelease7.6.1810(Core)JDK版本:1.8二、安装步骤1.下载安装包...

Linux上安装JDK

以CentOS为例。检查是否已安装过jdk。yumlist--installed|grepjdk或者...

Linux系统的一些常用目录以及介绍

根目录(/):“/”目录也称为根目录,位于Linux文件系统目录结构的顶层。在很多系统中,“/”目录是系统中的唯一分区。如果还有其他分区,必须挂载到“/”目录下某个位置。整个目录结构呈树形结构,因此也...

Linux系统目录结构

一、系统目录结构几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树...

Linux文件查找

在Linux下通常find不很常用的,因为速度慢(find是直接查找硬盘),通常我们都是先使用whereis或者是locate来检查,如果真的找不到了,才以find来搜寻。为什么...

嵌入式linux基本操作之查找文件

对于很多初学者来说都习惯用windows操作系统,对于这个系统来说查找一个文件简直不在话下。而学习嵌入式开发行业之后,发现所用到的是嵌入式Linux操作系统,本想着跟windows类似,结果在操作的时...

linux系统查看软件安装目录的方法

linux系统下怎么查看软件安装的目录?方法1:whereis软件名以查询nginx为例子...

Linux下如何对目录中的文件进行统计

统计目录中的文件数量...

Linux常见文件目录管理命令

touch用于创建空白文件touch文件名称mkdir用于创建空白目录还可以通过参数-p创建递归的目录...

Linux常用查找文件方法总结

一、前言Linux系统提供了多种查找文件的命令,而且每种查找命令都具有其独特的优势,下面详细总结一下常用的几个Linux查找命令。二、which命令查找类型:二进制文件;...

取消回复欢迎 发表评论: