数据库原理:笔记-0x02

SQL语言的功能

数据查询、数据操纵、数据定义、数据控制

学生—课程数据库

学生表:student(sno,sname,ssex,sage,sdept)
课程表:course(cno,cname,pcno,credit)
选课表: SC(sno,cno,grade)

建立基本表student

Create Table student(   
	sno CHAR(9) PRIMARY KEY, /*列级完整性约束条件:体现实体完整性,sno是主码*/
	Sname CHAR(20) UNIQUE, /*Sname取值唯一*/
 	Ssex  CHAR(2),
 	Sage  SMALLINT,
 	Sdept  CHAR(20)
)

建立基本表SC

Create Table SC(  
	sno char9,
	cno char4,
	grade smallint,
	Primary Key(sno,cno),
	Foreign Key(sno)References STUDENT(sno),/*表级完整性约束条件:体现参照完整性,被参照表是STUDENT*/
	Foreign Key(cno)References COURSE(cno),
	Check ((Grade Is Null) or (Grade Between 0 and 100))/*用户自定义完整性约束条件*/
)

向表student增加“入学时间”列,数据类型为日期型

ALTER TABLE Student ADD S_entrance DATE

将年龄的数据类型改为整数。

ALTER TABLE Student ALTER COLUMN Sage INT

增加课程名称必须取唯一值的约束条件

ALTER TABLE course ADD UNIQUE(cname)

删除student表

DROP TABLE student CASCADE

为SC表建立按学号升序和课程号降序的唯一索引

CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC)

将SC表的SCno索引名改为SCSno

ALTER INDEX SCno RENAME TO SCSno

删除student表的Stusname索引

DROP INDEX Stusname

查询全体学生的详细记录

SELECT *FROM student

查询所有选修课程的学生学号,并去掉重复的行

SELECT DISTINCT sno From SC

查询21岁以下的学生姓名及年龄

Select  sname,sage  from  student  where  sage<21

查询所有姓刘的学生的姓名、学号和性别。

select sname, sno, sex from student where sname like '刘% '

查询学生信息, 按系升序,同系学生按年龄降序。

Select * From  student  Order by  sdept, sage  DESC

计算课程号为101的课程平均分

select  AVG(grade)  from SC  where  cno=101

查询各个课程的课程号与选课人数,查询结果按课程分组

Select  cno, count(sno)  from  SC  group  by  cno

查询选修了2门以上课程的学生学号

Select  sno From  SC Group  by   sno  Having count (*)> 2

查询选修201号课程且成绩>90分的学生的学号和姓名

select  s.sno, sname  from  S,SC
where S.sno=SC.sno  and SC.cno=201and  SC.grade>90

查询与“刘小冬”同系的学生。

 Select sno,sname,sdept  From  studuent
 Where sdept IN(
	select sdept from student where sname =‘刘小冬’
 )

查询未选修101号课程的学生姓名

 select  sname  from  S where not exists(
	select  * from  SC where cno=101and sno=S.sno
 )

建立信息系学生视图

Create  View  IS_student  As  Select  sno,sname,sage From  S  Where  sdept=IS

将学号及其平均成绩定义为视图

Create view S_G(sno, gavg) As Select sno, avg(grade) From SC Group by  sno

把S-G视图中学号95001的平均成绩由85改为90分,

Update  S_G  Set  Gavg=90  Where  sno=95001
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值