数据库表的查改增删

本地环境

操作系统:windows10-64位
编译工具:SQL Developer
时间:2020-05-27

表的建立与初始数据插入

创建表:

CREATE TABLE Student
        (
         Sno    varchar2(17)  primary key,
         Sname  varchar2(10) not null UNIQUE,        
         Sage   INT,
         Ssex   char(2) CHECK(Ssex IN ('男','女') ), 
         Sdept  varchar2(20)
         );
         
CREATE TABLE Course
        (
         Cno    varchar2(10)  primary key,
         Cname  varchar2(25) not null UNIQUE,        
         Ccredit  integer
         );  
               
CREATE TABLE SC
        (
         Sno  varchar2(17),
         Cno    varchar2(10)  ,
         Grade numeric(5,2),
         primary key(Sno, Cno),
         foreign key (Sno) references Student(Sno),
         foreign key (Cno) references Course(Cno)
         );
              
   

插入数据:

Student:
INSERT INTO student VALUES ('20200526','属性1',20,'男','计算机');
INSERT INTO student VALUES ('20200527','属性2',21,'男','计算机');
INSERT INTO student VALUES ('20200528','属性3',19,'女','工商管理');

Course:
INSERT INTO Course VALUES ('2020','生物学基础',2);
INSERT INTO Course VALUES ('2021','地理学基础',2);

SC:
INSERT INTO SC VALUES ('20200526','2020',98);
INSERT INTO SC VALUES ('20200527','2020',59);
INSERT INTO SC VALUES ('20200528','2021',90);

初始数据:
Student:
在这里插入图片描述
Course:
在这里插入图片描述
SC:
在这里插入图片描述

查询数据

1.查询整个表
select * from student;

输出:
SNO               SNAME            SAGE SSE SDEPT              
----------------- ---------- ---------- --- --------------------
20200526          属性1              20 男  计算机              
20200527          属性2              21 男  计算机              
20200528          属性3              19 女  工商管理            
2.查询表中某些数据

比如学号Sno 和 性别Ssex:

select sno,ssex  from student;

输出:
SNO               SSE
----------------- ---
20200526          男 
20200527          男 
20200528          女 

3.按条件筛选出某些数据

比如筛选出 Sage >= 20 的人姓名和年龄:

select sname,sage from student where sage >= 20;

输出:
SNAME            SAGE
---------- ----------
属性1              20
属性2              21

比如 Sage <= 20 且 性别为女:

select sname,sage from student where (sage <= 20 and ssex in '女');
 或者:select sname,sage from student where (sage <= 20 and ssex = '女');
输出:
SNAME            SAGE
---------- ----------
属性3              19

比如查询姓名中带‘1’的人的所有信息:

select * from student where sname like '_%1'; /*_是填充符号,就是说‘1’前面至少有1个子
或者:select * from student where sname like '%1';

 输出:
 SNO               SNAME            SAGE SSE SDEPT              
----------------- ---------- ---------- --- --------------------
20200526          属性1              20 男  计算机  
4.多表查询

比如查询出 Grade >= 60 的人的姓名

select Sname from Student where Sno in (select Sno from SC where Grade >= 60);

 输出:
 SNAME    
----------
属性1     
属性3     

修改数据

1.修改属性值
update sc set grade == 89 where grade = 90;

输出:
1行已更新。
2.修改数据类型

比如Sname的类型varchar2(10) 改为varchar2(12)

 alter table student modify(sname varchar2(12));

输出:
Table STUDENT已变更。

增加数据

1.增加属性列(字段)

比如为Course表增加SPno列:

alter table Course add SPno varchar2(10);

 输出:
 Table COURSE已变更。
2.增加约束条件

比为Course表的SPno属性增加UNIQUE约束:

alter table Course add constraint course_spno UNIQUE(spno); /* course_spno为约束名*/

输出:
Table COURSE已变更。

或者,简单点,可以这样增加:

alter table Course add  UNIQUE(spno); 

输出:
Table COURSE已变更。

删除数据

1.删除数据值

比如删除SC表中Grade = 89的所有数据:

delete from sc where grade = 89;

 输出:
 1行已删除。

当然,你也可以删除其他表的数据,这里有两中方式:
a.设置级联,并级联删除。
b.先删除SC表中数据,在删除其他表中数据。
因为SC表中Sno和Cno作为外码,从Student和Course表中引入。

2.删除约束条件

比如删除Student表中Sname的UNIQUE约束:

alter table Student drop  UNIQUE(sname);

输出:
Table STUDENT已变更。

也可以用约束名删除,如删除Course表的SPno属性的UNIQUE约束:

alter table Course drop constraint course_spno;

 输出:
 Table COURSE已变更。
3.删除数据列(字段)

比如删除Course中的SPno:

 alter table course drop(spno);
 
 输出:
 Table COURSE已变更。

删除表

Drop table SC;
Drop table Student;
Drop table Course;

 输出:
 Table SC已删除。


Table STUDENT已删除。


Table COURSE已删除。

注意:如果不是级联删除,先删除SC表,在删除其他表。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值