oracle数据库操作流程(从零开始学习Oracle之数据库和数据表的基本操作)
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”,单击【确定】按钮即可。
免费起名工具
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至82281456@qq.com 举报,一经查实,本站将立刻删除。