1zuoye

SQL 基礎文法練習

一,基本表的定义与删除.

 

题1:

用SQL语句创建如下三张表:学生(Student),课程表(Course),和学生选课表(SC),这三张表的结构如表1-1到表1-3所示。

 

表1-1 Student表结构

列名    说明    数据类型    约束

Sno    学号    字符串,长度为7    主码

Sname    姓名    字符串,长度为10    非空

Ssex    性别    字符串,长度为2    取‘男’或‘女’

Sage    年龄    整数    取值15~45

Sdept    所在系    字符串,长度为20    默认为‘计算机系’

 

Use hello;

create table Student(

    Sno varchar(7)  NOT NULL primary key,

    Sname varchar(10) NOT NULL,

    Ssex varchar(2) check(Ssex='男' or Ssex='女'),

    Sage int check(Sage>15 and Sage<45),

    Sdept varchar(20) default '计算机系'

);

--------------------------------------------------------------------------------

表1-2Course表结构

列名    说明    数据类型    约束

Cno    课程号    字符串,长度为10    主码

Cname    课程名    字符串,长度为20    非空

Ccredit    学分    整数    取值大于0

Semster    学期    整数    取值大于0

Period    学时    整数    取值大于0

 

USE hello;

create TABLE Course(

       Cno varchar(10) NOT NULL primary key,

       Cname varchar(20) NOT NULL,

       Ccredit int CHECK(Ccredit>0),

       Semster int CHECK(Semster>0),

       Period int CHECK(Period>0)

);

--------------------------------------------------------------------------------

 

表1-3 SC表结构

列名    说明    数据类型    约束

Sno    学号    字符串,长度为7    主码,引用Student的外码

Cno    课程名    字符串,长度为10    主码,引用Course

Grade    成绩    整数    取值0~100

create table SC(

    Sno varchar(7)  NOT NULL,

    Cno varchar(10) NOT NULL,

    Grade int CHECk(Grade>0 and Grade<100),

    primary key(Sno,Cno),

    foreign key(Sno)  REFERENCES Student(Sno),

    foreign key(Cno)  REFERENCES Course(Cno)

);

--------------------------------------------------------------------------------

 

 

二,修改表结构

题2:

为SC表添加“选课类别”列,此列的定义为XKLB char(4).

alter table SC add column XKLB char(4);

题3:

将新添加的XKLB的类型改为char(6)。

alter table SC alter column XKLB char(6);

题4:

删除Course表的Period列。

alter table course drop column period;

三,数据查询功能

 

表3-1 Student表数据

Sno    Sname    Ssex    Sage    Sdept

9512101    李勇    男    19    计算机系

9512102    刘晨    男    20    计算机系

9512103    王敏    女    20    计算机系

9521101    张立    男    22    信息系

9521102    吴宾    女    21    信息系

9521103    张海    男    20    信息系

9531101    钱小平    女    18    数学系

9531102    王大力    男    19    数学系

 

-------------------------------------------------------------------------------------------------------

 

表3-2 Course表数据

Cno    Cname    Ccredit    Cemester

C01    计算机文化学    3    1

C02    VB    2    3

C03    计算机网络    4    7

C04    数据库基础    6    6

C05    高等数学    8    2

C06    数据结构    5    4

 

-------------------------------------------------------------------------------------------------------

 

表 3-3 SC表数据

Sno    Cno    Grade    XKLB

9512101    c01    90    必修

9512101    c02    86    选修

9512101    c06    <NULL>    必修

9512102    c02    78    选修

9512102    c04    66    必修

9521102    c01    82    选修

9521102    c02    75    选修

9521102    c04    92    必修

9521102    c05    50    必修

9521103    c02    68    选修

9521103    c06    <NULL>    必修

9531101    c01    80    选修

9531101    c05    95    必修

9531102    c05    85    必修

 

-------------------------------------------------------------------------------------------------------

 

题5:

用sql语句填写以上(表3-1 Student表数据、表3-2 Course表数据、表 3-3 SC表数据)数据。

Student表:

insert into student values('9512101','李勇','男',19,'计算机系');

insert into student values('9512102','刘晨','男',19,'计算机系');

insert into student values('9512103','王敏','女',19,'计算机系');

insert into student values('9521101','张立','男',19,'信息系');

insert into student values('9521102','吴宾','女',19,'信息系');

insert into student values('9521103','张海','男',19,'信息系');

insert into student values('9531101','钱小平','女',19,'数学系');

insert into student values('9531102','王大力','男',19,'数学系');

Course表:

insert into course values('C01','计算机文化学',3,1);

insert into course values('C02','VB',2,3);

insert into course values('C03',' 计算机网络',4,7);

insert into course values('C04','数据库基础',6,6);

insert into course values('C05','高等数学',8,2);

insert into course values('C06','数据结构',5,4);

SC表:

insert into sc values('9512101','C01',90,'必修');

insert into sc values('9512101','C02',86,'选修');

insert into sc values('9512101','C06',NULL,'必修');

insert into sc values('9512102','C02',78,'选修');

insert into sc values('9512101','C04',66,'必修');

insert into sc values('9521102','C01',82,'选修');

insert into sc values('9521102','C02',75,'选修');

insert into sc values('9521102','C04',92,'必修');

insert into sc values('9521102','C05',50,'必修');

insert into sc values('9521103','C02',68,'选修');

insert into sc values('9521103','C06',NULL,'必修');

insert into sc values('9531101','C01',80,'选修');

insert into sc values('9531101','C05',95,'必修');

insert into sc values('9531102','C05',85,'必修');

题6:

查询全体学生的学号与姓名。

Select Sno,Sname from student;

题7:

查询全体学生的姓名,学号和所在系。

Select Sno,Sname,Sdept from student;

题8:

查询全体学生的记录。

Select * from student;

题9:

查询全体学生的姓名及其出生年份。

select sname,2021-Sage as year from student;

题10:

查询全体学生的姓名和出生年份,并在出生年份列前加入一个列,此列的每行数据均为“Year of Birth”常量值。

select sname as Name , 'Year of Birth' as Birth ,2021-Sage as Year from student;

题11:

在选课表(SC)中查询有哪些学生选修了课程,并列出学生的学号。

 

题12:

查询计算机系全体学生的姓名。

Select sname from student;

题13:

查询所有年龄在20岁以下的学生的姓名及年龄。

Select Sname,age from student where age<20;

题14:

查询考试成绩不及格的学生的学号。

Select sno from sc where grade<60;

题27:

将学生按年龄升序排序。

Select * from student order by Sage ;

 

题28:

查询选修了课程“c02”的学生的学号及其成绩,查询结果按成绩降序排列。

Select sno ,grade from sc where Cno = 'C02' order by grade desc;

题29:

查询全体学生的信息,查询结果按所在系的系名升序排列,同一系的学生按年龄降序排列。

Select * from student order by Sdept,Sage desc;

题55:

将新生纪录(9521105,陈冬,男,信息系,18岁)插入到Student表中。

insert into student values('9521105','陈冬','男',18,'信息系');

题56:

在SC表中插入一新记录(9521105,c01),成绩暂缺。

insert into SC values('9521105','c01',null,null);

题57:

将所有学生的年龄加1。

Update Student Set Sage=Sage+1;

题58:

将“9512101”学生的年龄改为21岁。

update student set Sage =21 where Sno='9512101';

题59:

将计算机系学生的成绩加5分。

Update SC set Grdae = Grade+5

where Sno in (select Sno from student where Sdept='计算机系');

题60删除所有学生的选课记录。

Delete from SC;

题61:

删除所有不及格学生的选课记录。

DELETE FROM SC WHERE Grade < 60;

题62:

删除计算机系不及格学生的选课记录。

DELETE FROM SC

     WHERE Grade < 60 AND Sno IN (

         SELECT Sno FROM Student WHERE Sdept = '计算机系' )

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值