欢迎光临散文网 会员登陆 & 注册

Oracle 建表、删除表,数据,约束,创建视图、索引,表设计的三范式

2023-03-10 14:06 作者:阿彦绝地反击  | 我要投稿

day04 

1. 建表、删除表

2. 数据:插入、修改、删除

3. 约束:非空约束、主键约束、外键约束【难】、检查约束、唯一约束

4. 创建视图、索引*

5. 表设计的三范式

一、建表、删表

建表语法>>> | 删表的语法>>>

create table 表名( | dropt table 表名;

列名1 列类型 列级约束,

... ...

列名N 列类型 列级约束,

表级约束1...,

表级约束2...

);

1、创建学生信息表:学号、姓名、地址、电话、邮箱、年龄

学号:唯一、必填不可为null 【主键】

姓名:必填,但可重复

地址:可填、可不填

邮箱:包含@

电话: 非必填字段

年龄:>=15岁

drop table  studentTB;

create table studentTB(

id number(5) ,

name varchar2(50) not null, ###姓名 

email varchar2(50), ###邮箱 

age number(3), ###年龄

constraint PK_studentTB_id primary key(id), ###设id是当前表的主键

constraint CK_studentTB_age check(age>=15 ), ###检查年龄填写时必须>=15

constraint CK_studentTB_email check(email like '%@%') ###检查邮箱填写时必须包含@

);

--插入1000号学生蛋总

insert into studentTB(id,name,age,email) values(1000,'蛋总',28,'dan@qq.com');   commit;

2.创建课程表:课程编号、课程名 

create table classTB( ###创建课程表

id number(4), ###课程编号

name varchar2(30), ###课程名称

constraint PK_classTB_id primary key(id) ###设id是当前课程表的主键

);

--插入2门课程

insert into classTB(id,name) values(1,'数学');

insert into classTB(id,name) values(2,'体育');

commit;

3.考试信息表:考试编号id、学号sid (关联学生表的id)、课程号cid (关联课程表的id)、成绩

create table scoreTB( ###考试表

id number(5), ###考号

myCode varchar2(20), ###考场编码

sId number(5), ###学号

cId number(4), ###课程号

score number(5,2), ###成绩

constraint PK_scoreTB_id primary key(id), ###设id是课程表的主键

constraint FK_scoreTB_studentTB_sId foreign key(sid) references studentTB(id),##设sid外键关联学生表的主键id

constraint FK_scoreTB_classTB_cId foreign key(cid) references classTB(id)###设cid外键关联课程表的主键id

);

--插入1000学生(蛋总)的1号课程(数学)考试成绩

insert into scoreTB(id,mycode,sid,cid,score) values(101,'xdl184901',1000,1,59.5);

insert into scoreTB(id,mycode,sid,cid,score) values(102,'xdl184901',1000,1,62);

commit;


二、数据增、删、改

1.向学生表插入一行数据

插入语法:insert into 表名(列名1,...,列名n) values(值,....,值);

  commit;

insert into studentTB(id,name,age,email) values(1000,'蛋总',28,'dan@qq.com');

insert into studentTB(id,name,tel,age,email,address) values(1001,'张绍刚','12345678901',38,'hei@qq.com','魔都');

commit;


2.修改当前蛋总第一次考试成绩

修改数据的语法:update 表名 set 列名1=值,列名2=值 ,.... where 更新条件;

update scoreTB set score=48 where id=101;



3.删除

删除数据的语法:delect from 表名 where 删除条件;

delete from scoreTB where id=101 ;



三、约束【默写】

1.主键约束,表级语法:constraint 自定义名 primary key(主键列名).

主键的特点:值唯一,值必填。 

   一个表只能有一个主键,但一个主键可以包含多列。*包含多列的主键我们称联合主键


2.检查约束,表级语法:constraint 自定义名 check(条件)


3.唯一约束,表级语法:constraint 自定义名 unique(列)

唯一的特点:值唯一,可空,

唯一约束与主键约束的区别是:一个表只能有1个主键,但一个表可以有多个唯一约束

   唯一约束里值可以是null,但主键约束中值不能为null

4.外键约束,表级语法:constraint 自定义名 foreign key(外键列名) references 主表名(主键名) 



四、视图

什么是视图?

答:用来存储查询语句

什么时候用视图呢?

答:当查询业务复杂且频繁执行时,这个业务还具有较为广阔的应用型,可以将此查询保存到视图。


1.先用system/123456系统管理身份登录,给scott这个用户授予视图创建的权利后,重新scott/tiger登录

c:\...>sqlplus system/123456

SQL> grant create view to scott;

SQL> conn score/tiger

2.创建视图:create view 视图名 as 查询语句;

例如:查询学生成绩显示姓名、课程名及考试相关信息

create view v_score

as

select sc.id scId, sc.mycode scCode, s.name stuName, c.name className,sc.score score

from studentTB s inner join scoreTB sc on s.id=sc.sid

                  inner join classTB c on c.id = sc.cid;

3.视图使用:select * from 视图名;

select * from v_score;

4.删除视图:drop view 视图名;


五、创建索引

1.先系统管理员授权:grant create any index to scott;

2.在用scott登录创建索引:create index 自定义索引名称 on 表(列)

        create index index_score on scoreTB(sid);


六、作业

1.查每个学生每门课程的考试成绩

2.查没有参加考试的学生信息(学号、姓名)

3.查成绩不及格的信息(考号、学号、姓名、课程名、成绩)



Oracle 建表、删除表,数据,约束,创建视图、索引,表设计的三范式的评论 (共 条)

分享到微博请遵守国家法律