oracle数据库表的一些基本处理

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。oracle数据库表的一些基本处理,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

oracle 数据库的简单使用语法

用户的数据实际上是存在数据库的表中,所以当我们要向数据库中存放数据时,必须先创建表。

/*
创建语法 create table [<模式名 >.]<表名>(
<字段1> <类型 > [约束条件],
<字段 2> <类型 > [约束条件],
… )[tablespace <命名空间>];
*/

–创建一个班级信息表用来存放班级信息,班级信息包括班级编号、班级名称、入学年份、学制

create table classinfo01(
cid number (4),–班级编号
cname varchar2(100), –班级编号
cyear number(4),–入学年份
clen number (1)–学制
);

–添加一条数据

insert into classinfo01 values (1001,‘软件本101’,2018,4);
insert into classinfo01 values (1002,‘软件本102’,2018,4);

–查询数据

select *from classinfo01;
select classinfo01.cid from classinfo01;
–查询表classinfo01下学生的学号;

–删除数据的语法:delete from <表名>[where <条件>]
–我们先删除所有的数据

delete from classinfo01;

–开始添加约束

–因为班级编号不能重复且不能为空,用来唯一标识一条数据的,所以我们可以在这个列上添加一个主键约束

–语法:

alter table <表名> add constraint <主键约束名> (这里注意一下要在要约束的名字前加个)primary key <列名1,列名2,…>;

alter table classinfo01 add constraint PK_classinfo01_cid primary key (cid);

–因为班级名称不能为空,且不能重复,此时我们可以在此列上面添加一个非空约束和一个唯一约束

–非空约束语法:alter table <表名> modify <列名> not null;
alter table classinfo01 modify cname not null;

insert into classinfo01 values (102,null,2018,4); –报错 01400

–唯一约束语法:

alter table <表名> add constraint <唯一约束名> unique(列名1,列名2…) [using
index tablespace <表空间>]

alter table classinfo01 add constraint UQ_classinfo01_cname unique (cname);

insert into classinfo01 values (103,‘软件本103’,2018,4);

–创建自增主键表格
–主键:可以唯一标识一个实体(记录)的列称之为主键列
–主键列选择的原则是:
–最少性
–尽量选择单个键作为主键
–稳定性
–尽量选择数值更新少的列作为主键
–先删除表

–删除表的语法:drop table <表名>

drop table classinfo01; –这里不等于delete delete是将表中所有数据删除 ,而drop 则是将表名字都删除了

/*
–这里我举个例子

create table ddd( sno varchar2 (5) primary key , sname char(8) )

insert into ddd values (15555,‘啊还’);

drop table ddd;

delete from ddd; –这里没有条件,说明删除的是整个表数据(不包括表名字)
– 如果有条件那么删除的是表的某一个属性,我的理解为表的某一列
select * from ddd;
*/

–重新创建带行级约束的表

create table classinfo01(
cid number (4) primary key ,–班级编号
cname varchar2 (100) unique not null, –班级编号
cyear number(4),–入学年份
clen number (1)–学制

);

–创建序列CREATE SEQUENCE 序列名[INCREMENT BY n] –每次加几[START WITH n] –序列从几开始

create sequence seq_classinfo01_cid start with 101 increment by 1;

–插入数据

insert into classinfo01 values(seq_classinfo01_cid.nextval,‘软件本101’,2018,4);
insert into classinfo01 values(seq_classinfo01_cid.nextval,‘软件本102’,2018,4);

select *from classinfo01;

–主键与外键

–删除表
drop table classinfo01;

–重建创建带表级约束的classInfo表

–创建一个学生信息表stuInfo,包含以下信息:
–学号(stuNo)、班级编号(cid)、姓名(stuName)、身份证号码(stuCardID)、性别(sex)、年龄(stuAge)、联系方式(stuTel)、家庭住址(stuAddr)
–要求:学号唯一且非空、姓名不能为空、联系方式必须唯一

create table StuInfo(
stuNo number (10) primary key ,
cid number (4),
stuName varchar2 (100) not null,
stucardID varchar2(18) ,
sex varchar2(4),
stuAge number (3),
stuTel varchar2(11),
stuAddr varchar2(100)
)

–再添加如下要求
–1.引用的班级编号必须在班级表中存在
select *from classinfo01;
select *from stuInfo01;

insert into stuinfo values(101,103,‘张三’,‘1325031234578987’,‘男’,21,‘15365487896’,‘湖南刚刚’);

–此时学生数据会出现引用完整性异常,班级1003还不存在,但数据照样能添加成功

–那么我们可以对学生信息表中的cid列添加外键约束来解决

–语法:alter table <表名> add constraint <外键约束名> foreign key(列名) references <被引用的表名>(<列名>)
–[on delete cascade | on delete set null]
delete from stuInfo where stuNo =102;
alter table stuInfo add constraint FK_stuInfo_sex check (sec =’男’or sex =‘女’); insert into stuinfo values(101,101,‘张三’,‘432503198626494356’,‘不详’,21,‘15946586473’,‘湖南省海米’);

–2.性别必须是男或女,默认为男 —— 此时我们需要在性别上添加检查约束和默认约束

–检查语法:alter table <表名> add constraint <检查约束名> check(<检查条件>) alter table StuInfo add constant CK_stuInfo_sex check (sex=’男’or sex=‘女’);
alter table StuInfo add constant CK_stuInfo_sex check (sex in (‘男’,‘女’));

insert into stuInfo values
(102,101,‘张三丰’,‘435689167503844305’,‘不详’,21,‘13458798456’,‘毛概夹史蒂夫’);

–默认约束语法:alter table <表名> modify <列名> default <值>

alter table stuInfo modify sex default ‘男’;

insert into stuinfo values(102,101.‘张三丰’,‘435689167503844305’,default,21,‘15576946842’,‘你没写呀’);

–3.年龄必须在12到30岁之间

alter table stuInfo add constrain CK_stuInfo_stuAge check(stuAge >=12
and stuAge <=30 );

alter table stuInfo add constrain CK_stuInfo_stuAge check(stuAge
between 12 and 30 );–闭合区域

insert into stuinfo values
(103,101,‘张无忌’,‘435689167503844305’,default,31,‘15994674564’,‘幻化哈觉得’);
insert into stuinfo values
(103,101,‘张无忌’,‘435689167503844305’,default,30,‘15994674564’,‘幻化哈觉得’);

–4.联系方式和家庭住址中至少有一个不能为空

alter table stuInfo add constraint CK_stuInfo_stuTelAndAddr check
(stuTel is not or stuAddr is not null);

insert into stuinfo
values(103,101.‘张三丰’,‘435689167503844305’,default,21,‘15576946842’,‘你没写呀’);

insert into stuinfo
values(104,101.‘赵敏’,‘435689167503844315’,default,21,‘15576946841’,‘你没写呀1’);

–5.身份证号码必须是18位 length() 获取的字符长度 lengthb() 获取的字节长度
–对于单字节字符,LENGTHB和LENGTH是一样的 length(‘string’)=lengthb(‘string’)判断字符串是否含有中文
–一个汉字在Oracle数据库里占多少字节跟数据库的字符集有关,UTF8时,长度为三

alter table stuinfo add constraint CK_stuinfo_stuCardID check (length
(stuCardID)=18);

insert into stuinfo
values(104,101.‘小昭’,‘435689167503844325’,default,21,‘13576946841’,‘你几艘写呀1’);

–6.查询学生信息表上的所有约束

select *from user_constraints where table_name = ‘stuinfo’;
select * from user_constraints where table_name = ‘STUINFO’;–注意表名 全部字母大小写

–重建表,添加以上约束
drop table stuinfo;

–表级约束创建学生信息表

create table stuInfo{
stuNo number (10) primary key ,
cid number (4)
constraint FK_stuInfo_cid references classinfo01(cid),
stuName varchar2(100)not null,
stuCardID varchar2(18)
constraint CK_stuInfo_stuCardID check (length (stuCardID)=18),
sex varchar2 (4)
constraint CK_stuInfo_sex check (sex =’男’or sex=‘女’ ),
stuAge number (3)
constant Ck_stuInfo_stuAge check (stuAge >=12 and stuAge <=30 ),
stuTel varchar2 (11) unique ,–注意,约束条件 不对null做约束
stuAddr varchar2(100),
constraint CK_stuInfo_stuTelAndAddr check (stuTel is not null or stuAddr is not null) –表级约束 定义列之后 }

–约束操作

–1.删除联系方式上的唯一约束
–语法:alter table <表名> drop constraint <约束名>;

alter table stuinfo drop constraint SYS_c008362;

–2.禁用性别上的检查约束
–语法:alter table <表名> disable constraint <约束名>;

alter table stuinfo disable constraint CK_stuInfo_sex;

insert into stuinfo
values(106,101.‘赵敏1’,‘435689167503845515’,default,21,‘15576946821’,‘你没写呀1’);

–3.启用性别上的检查约束
–语法:alter table <表名> enable constraint <约束名>;

alter table stuinfo enable constraint CK_stuInfo_sex;

insert into stuinfo values(104,101.‘周至柔’,‘435689167503844415’,default,21,‘15576944641’,‘你没写呀1’);

select *from stuinfo;
–修改表结构
–1.查看学生信息表的表结构

select *from user_tab_columns where table_name = ‘STUINFO’;

–2.将学生信息表stuInfo重命名为studentInfo
–语法:alter table <原表名> rename to <新表名>

alter table stuinfo rename to stuinfo01;

–3.将学生信息表中的列sex重命名为stuSex;
–语法:alter table <表名> rename column <原列名> to <新列名>

alter table stuinfo01 rename column sex stuSex;

–4.在学生信息表中添加列stuPwd,类型为number(10)
–语法:alter table <表名> add <列名> <数据类型> [default] [null/not null]

alter table stuinfo01 add stuPwd number (10);

–5.修改学生信息表中的列stuPwd的数据类型为varchar2(20)
–语法:alter table <表名> modify <列名> <数据类型> [default] [null/not null]

alter table stuinfo01 modify stdPwd varchar2(10);

–6.删除列学生信息表中的列stuPwd
–语法:alter table <表名> drop column <列名>

alter table stuinfo01 drop column stuPwd;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/198038.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!