数据库的基本操作(1)

一、表的创建

创建学生表

create table Student
(
    Sno char(9) primary key,
    Sname char(20) unique,
    Ssex char(2),
    Sage SMALLINT,
    Sdep char(20)
);

创建课程表

create table Course
(
    Cno char(4) PRIMARY KEY,
    Cname char(40) not null,
    Ccredit SMALLINT
);

创建学生选课表

create table SC
(
    Sno char(9),
    Cno char(4),
    grade SMALLINT,
    PRIMARY KEY(Sno,Cno),
    FOREIGN KEY (Sno) REFERENCES Student(Sno),
    FOREIGN KEY (Cno) REFERENCES Course(Cno)
);

 二、数据的插入

插入数据到Student表中:

insert into Student (Sno,Sname,Ssex,Sage,Sdep) values('1','张三','男',19,'软件');
insert into Student (Sno,Sname,Ssex,Sage,Sdep) values('2','李四','男',22,'体育');
insert into Student (Sno,Sname,Ssex,Sage,Sdep) values('3','小静','女',20,'音乐');
insert into Student (Sno,Sname,Ssex,Sage,Sdep) values('4','王五','男',20,'软件');
insert into Student (Sno,Sname,Ssex,Sage,Sdep) values('5','小文','女',21,'音乐');

插入数据到Course表中:

insert into Course (Cno,Cname,Ccredit) values('1','数据库',4);
insert into Course (Cno,Cname,Ccredit) values('2','嵌入式',2);
insert into Course (Cno,Cname,Ccredit) values('3','数据结构',3);
insert into Course (Cno,Cname,Ccredit) values('4','计算机基础',1);
insert into Course (Cno,Cname,Ccredit) values('5','操作系统',3);

插入数据到SC表中:

insert into SC (Sno,Cno,grade) values('1',1,92);
insert into SC (Sno,Cno,grade) values('1',2,85);
insert into SC (Sno,Cno,grade) values('1',3,88);
insert into SC (Sno,Cno,grade) values('2',2,90);
insert into SC (Sno,Cno,grade) values('2',3,80);

三、简单的sql语句

一、查询语句:

/*查询全部学生的详细信息*/
select * from Student;

/*自定义列标题查询*/
select Sno ID,Sname NAME,Ssex Sex,Sage Age,Sdep DEPARTMENT from Student;

/*消除取值重复发行(查询选秀了课程的学生学号)*/
select Sno from SC;/*没有消除*/
select DISTINCT Sno from SC;/*消除重复后的*/

/*查询满足某个条件的元组,例如查询属于音乐学院的学生信息*/
select * from Student where Sdep = '音乐';

/*查询学生年龄在22以下的学生信息*/
select * from Student where Sage < 22;

/*查询某个属性在某个范围内的学生信息,例如年龄在20~22之间的学生信息*/
select * from Student where Sage between 20 and 22;

/*同时查询满足不同条件的学生信息*/
select * from Student where Sdep in ('软件','体育');
/*in可以使用or来代替*/
select * from Student where Sdep = '软件' or Sdep = '体育';

/*模糊查询,例如查询姓小的学生信息*/
select * from Student where Sname like '小%';

/*查询姓张且名字只包含两个字的学生信息*/
select * from Student where Sname like '张_';(数据库字符集为ASCII时,汉字需要使用两个_而字符集为GBK时,只需使用一个_)

/*查询选修了3号课程的学生学号和成绩,分数按降序排列*/
select Sno,Grade from SC where Cno = '3' order by Grade DESC;(ASC为升序)

聚合函数:COUNT(*)、COUNT(列名)、SUM(列名)、AVG(列名)、MAX(列名)、MIN(列名)

/*查询选秀2号课程的学生最高分*/
select MAX(grade) from SC where Cno = '2';

/*查询学号为1同学的选修课总分*/
select SUM(Ccredit) from SC,Course where Sno = '1' and SC.Cno = Course.Cno;

/*查询各个课程号及相应的选课人数*/
select Cno,COUNT(Sno) from SC GROUP BY Cno;

/*查询选修了两门以上课程的学生学号*/
select Sno from SC GROUP BY Sno HAVING COUNT(*) > 2;(此处不使用where语句查询是因为where中不能使用聚合函数作为条件表达式)

/*查询选修了3号课程且成绩在80分以上的所有学生信息*/
select * from Student,SC where Student.Sno = SC.Sno and SC.Cno = '3' and SC.grade > 80;

/*查询每个学生的学号,姓名,选修的课程名及成绩*/
select Student.Sno,Student.Sname,Course.Cname,SC.grade from Student,Course,SC where SC.Sno = Student.Sno and SC.Cno = Course.Cno;

/*查询与小静同一个系的学生信息*/(不相关子查询)
select * from Student where Sdep in (select Sdep from Student where Sname = '小静');
select S1.Sno,S1.Sname,S1.Ssex,S1.Sage,S1.Sdep from Student S1,Student S2 where S1.Sdep = S2.Sdep and S2.Sname = '小静';

/*查询选修了课程名称为数据库的学生学号和姓名*/(不相关子查询)
select Sno,Sname from Student        /*最后在Student中取出学生学号和姓名*/
    where Sno in
        (select Sno from SC         /*然后在SC中找出选修了‘数据库’课程的学生学号*/
            where Cno in
            (select Cno from Course   /*首先在Course表中查询‘数据库’课程号*/
                where Cname = '数据库'
            )
    );

    /*查询每个学生超过自己选修课程平均分成绩的课程号*/(相关子查询)
    select Sno,Cno from SC x where grade >=
        (select AVG(grade) from SC y 
            where y.Sno = x.Cno
    );

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值