前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oralce的二维表操作

Oralce的二维表操作

作者头像
葆宁
发布2019-04-19 10:30:33
6440
发布2019-04-19 10:30:33
举报
文章被收录于专栏:FREE SOLO

Oralce的二维表操作

–创建表并同时添加约束 –主键约束 –非空约束 –检查约束 –唯一约束 –外键约束 –简单的表创建和字段类型 –简单的创建语句: create table student( sno number(10) ,–primary key sname varchar2(100) ,–not null sage number(3), --check(sage<150 and sage>0) ssex char(4) ,–check(ssex=‘男’ or ssex=‘女’) sfav varchar2(500), sbirth date, sqq varchar2(30) --unique –constraints pk_student_sno primary key(sno)–添加主键约束 –constraints ck_student_sname check(sname is not null)–非空约束 –constraints ck_student_sage check(sage<150 and sage>0)–检查约束 –constraints ck_student_ssex check(ssex=‘男’ or ssex=‘女’)–检查约束 –constraints un_student_sqq unique(sqq)–唯一约束 ) –添加主键约束 alter table student add constraints pk_student_sno primary key(sno); alter table student drop constraints pk_student_sno; –添加非空约束 alter table student add constraints ck_student_sname check(sname is not null); alter table student drop constraints ck_student_sname; –添加检查约束 alter table student add constraints ck_student_sage check(sage<150 and sage>0) alter table student drop constraints ck_student_sage; –添加检查约束校验性别 alter table student add constraints ck_student_ssex check(ssex=‘男’ or ssex=‘女’) alter table student drop constraints ck_student_ssex; –添加唯一约束 alter table student add constraints un_student_sqq unique(sqq) select * from student drop table student

–二维表创建约束学习:(主键约束,非空约束,检查约束,唯一约束) –问题1:学号重复依然可以添加 insert into student values(1,‘关晓彤’,18,‘女’,‘拍电影’,to_date(‘2000-01-01’,‘yyyy-mm-dd’),‘267889900’); insert into student values(1,‘关晓彤001’,18,‘女’,‘拍电影’,to_date(‘2000-01-01’,‘yyyy-mm-dd’),‘267889900’); –问题2:竟然可以没有名字 insert into student values(2,’’,18,‘女’,‘拍电影’,to_date(‘2000-01-01’,‘yyyy-mm-dd’),‘267889900’); –问题3:年龄竟然可以超过200岁 insert into student values(3,‘关晓彤002’,300,‘女’,‘拍电影’,to_date(‘2000-01-01’,‘yyyy-mm-dd’),‘267889900’); –问题4:性别竟然可以为任意字符 insert into student values(4,‘关晓彤’,18,‘a’,‘拍电影’,to_date(‘2000-01-01’,‘yyyy-mm-dd’),‘267889900’); –问题5:qq号竟然可以重复 insert into student values(5,‘关晓彤003’,18,‘女’,‘拍电影’,to_date(‘2000-01-01’,‘yyyy-mm-dd’),‘267889900’); insert into student values(6,‘关晓彤004’,18,‘女’,‘拍电影’,to_date(‘2000-01-01’,‘yyyy-mm-dd’),‘267889900’); —解决: –问题1:添加主键,主键特点:非空唯一 –使用: –直接在创建表的字段后使用 primary key –在创建表的语句的最后面使用 constraints pk_表名_字段名 primary key(字段名) –在创建表后使用 alter table 表名 add constraints pk_表名_字段名 primary key(字段名); –删除主键 alter table student drop constraints 主键的约束名; –问题2:使用非空约束 –使用: –直接在创建表的字段后使用 not null 关键字 –在创建表的语句的最后面使用 constraints ck_表名_字段名 check(字段名 is not null) –在创建表后使用 alter table 表名 add constraints ck_表名_字段名 check(字段名 is not null); –删除非空约束 alter table student drop constraints 非空约束名; –问题3:使用检查约束 –直接在创建表的字段后使用 check(条件) 例如 sage number(3) check(sage<150 and sage>0), –在创建表的语句的最后面使用 constraints ck_表名_字段名 check(条件) –在创建表后使用 alter table 表名 add constraints ck_表名_字段名 check(条件); –删除检查约束 alter table student drop constraints 检查约束名;

–问题4:使用检查约束 –直接在创建表的字段后使用 check(条件) –在创建表的语句的最后面使用 constraints ck_表名_字段名 check(条件) –在创建表之后使用alter table 表名 add constraints ck_表名_字段名 check(条件); –删除检查约束 alter table 表名 drop constraints 检查约束名; –问题5:使用唯一约束 –直接在创建表的字段后使用 unique –在创建表的语句后面使用 constraints un_表名_字段名 unique(字段名); –在创建表后使用 alter table 表名 add constraints un_表名_字段名 unique(字段名); –删除约束:alter table 表名 drop constraints 唯一约束名;

–二维表创建 外键约束学习: –创建学生表 create table student( sno number(10) primary key, sname varchar2(100) not null, sage number(3) check(sage>0 and sage<150), ssex char(4) check(ssex=‘男’ or ssex=‘女’), sfav varchar2(500), sqq varchar2(30) unique, cid number(10) --references clazz(cno) –constraints fk_student_cid foreign key(cid) references clazz(cno)–外键 ) –添加外键 alter table student add constraints fk_student_cid foreign key(cid) references clazz(cno) on delete set null alter table student drop constraints fk_student_cid drop table student –添加测试数据 insert into student values(1,‘张三001’,18,‘男’,‘唱歌’,‘657889900’,1); insert into student values(2,‘张三002’,18,‘男’,‘唱歌’,‘657889901’,1); insert into student values(3,‘李四001’,18,‘男’,‘唱歌’,‘657889903’,2); insert into student values(4,‘李四002’,18,‘男’,‘唱歌’,‘657889904’,2); –创建班级表 create table clazz( cno number(10) primary key, cname varchar2(100) not null, cdesc varchar2(300) ) –添加测试数据 insert into clazz values(1,‘java高薪就业班’,‘6666’); insert into clazz values(2,‘python高薪就业班’,‘33333’); –查询学生及其班级信息 select * from student s inner join clazz c on s.sno=c.cno –问题:竟然可以在学生表中插入一个不存在班级 insert into student values(5,‘李四003’,18,‘男’,‘唱歌’,‘657889905’,3); –使用外键: –作用:当在子表中插入的数据在父表中不存在,则会自动报错。 –概念:当一张表的某个字段的值需要依赖另外一张表的某个字段的值,则使用外键约束。 –其中主动依赖的表称为子表,被依赖的表称为父表。外键加在子表中。 –使用: –在子表中的字段后直接使用 references 父表名(字段) 例如: cid number(10) references clazz(cno) –在创建表语句的最后面使用 constraints fk_子表名_字段名 foreign key(字段名) references 父表名(字段名) –在创建表后使用:alter table 表名 add constraints fk_子表名_字段名 foreign key(字段名) references 父表名(字段名) –删除外键:alter table 表名 drop constraints 外键约束名 –外键选取: –一般选取父表的主键作为子表的外键。 –外键的缺点: –无法直接删除父表数据,除非级联删除 –级联删除:在添加外键约束时,使用关键字 on delete cascade –使用:当删除父表数据时,自动删除子表相关所有数据。 –缺点:无法保留子表历史数据。 –使用关键字 on delete set null –删除父表数据时,将子表中的依赖字段的值设置为null。 –注意:子表依赖字段不能添加非空约束。 –删除班级1的信息 select * from student delete from clazz where cno=1

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年03月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Oralce的二维表操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档