数据库
首页 > 数据库> > SQL笔记,随缘看

SQL笔记,随缘看

作者:互联网

---1、用create database语句创建“学籍管理”数据库,要求主数据文件逻辑文件名为:xjgl,物理文件名为:d:\姓名\xjgl.mdf,其他项可采用默认值或自定义。

create database 学籍管理

on primary

(

        name='xjgl',

        filename='d:\王蕾\xjgl.mdf'

)

---2、用create table命令为“学籍管理”数据库创建“xsxx”和“xkk”两个表,两个表的结构如下:

create table xsxx

(

        学号 char(12) primary key,

        姓名 varchar(20),

        性别 varchar(50) default '男',

        出生年月 datetime

)

create table xkk

(

        学号 char(12),

        课程号 char(4),

        成绩 decimal(18,2)

)

---3、用insert into命令插入记录,两个表的记录如图。

insert into xsxx values('201710624128','史雪慧','女','1998-11-19')

insert into xsxx values('201710624127','沈晓敏','女','1999-01-01')

insert into xsxx values('201710624129','魏波','男','1998-01-23')

insert into xsxx values('201410624101','张三','男','1995-02-01')

insert into xkk values('201410624101','0101',96)

insert into xkk values('201410624101','0102',62)

insert into xkk values('201410624101','0103',82)

insert into xkk values('201710624128','0101',100)

insert into xkk values('201710624128','0102',90)

insert into xkk values('201710624127','0101',50)

---4、用SQL语句修改表的结构和记录:

----(1)为“xsxx”添加一列:高考成绩,类型为float,可以为空。

alter table xsxx add 高考成绩 float null

----(2)把“xsxx”的性别的长度变为2。

alter table xsxx alter column 性别 varchar(2)

----(3)把“xkk”中课程号为0102的成绩增加2分。

update xkk set 成绩=成绩+2 where 课程号='0102'

----(4)删除成绩不及格的记录。

delete from xkk where 成绩<60

----(5)修改表增加约束,把“xkk”中的成绩限制在大于等于零并且小于等于100的范围内。

alter table xkk add constraint check_cj check(成绩>=0 and 成绩<=100)

---5、用SELECT语句查询:

----(1)在“xsxx”中查询姓名含有“三”这个字的学生信息。

select * from xsxx where 姓名 like '%三%'

----(2)在“xsxx”中查询男性且出生年月在1998年以前出生的学生信息。

select * from xsxx where 性别='男' and year(出生年月)<1998

----(3)在“xsxx”中查询姓名是三个字的学生信息。

select * from xsxx where 姓名 like '___'

----(4)在“xkk”中查询每个人的平均成绩。

select 学号,AVG(成绩) 平均成绩 from xkk group by 学号

----(5)查询学生选课情况,内容包括姓名,课程号,成绩。

select xsxx.姓名,课程号,成绩 from xsxx,xkk where xsxx.学号=xkk.学号

----(6)查询还没有选课的学生的信息。(即在xkk表中没有相应的xsxx的学号)

select * from xsxx where 学号 not in(select 学号 from xkk)

----(7)在“xkk”中查询共有几门课被选。

select COUNT(distinct 课程号) 选课门数 from xkk

----(8)查询每门课的平均成绩高于60的选课信息。

select 课程号,AVG(成绩) 平均成绩 from xkk group by 课程号 having AVG(成绩)>=60

----(9)查询成绩在70以上每门课的平均成绩。

select 课程号,AVG(成绩) 平均成绩 from xkk where 成绩>=70 group by 课程号

----(10)查询和你选了同一门课的其他人的姓名。

select distinct(姓名) from xkk inner join xsxx on xkk.学号=xsxx.学号 where xkk.学号 <>'201710624128'

---6、创建视图v_lr,查询“xsxx”和“xkk”,显示每个人的选课情况,要求学号、姓名、性别、课程号、成绩。

create view v_lr

as

SELECT     dbo.xsxx.学号, dbo.xsxx.姓名, dbo.xsxx.性别, dbo.xkk.课程号, dbo.xkk.成绩

FROM         dbo.xkk INNER JOIN

                      dbo.xsxx ON dbo.xkk.学号 = dbo.xsxx.学号

---7、创建一个触发器cfq,实现在试图v_lr中插入记录从而实现插入基本表中的功能。例如:当执行insert into v_lr(学号、姓名、性别、课程号、成绩) values(‘201410624102’,’张三丰’,’男’,’0101’,60)时,分别在xsxx和xkk中分别插入相应记录。

create trigger cfq on v_lr

instead of insert

as

declare @学号 char(12),@姓名 varchar(20),@性别 varchar(2),@课程号 char(4),@成绩 decimal(18,2)

select @学号=学号,@姓名=姓名,@性别=性别,@课程号=课程号,@成绩=成绩 from

inserted

insert into xsxx(学号,姓名,性别) values(@学号,@姓名,@性别)

insert into xkk(学号,课程号,成绩) values(@学号,@课程号,@成绩)

go

insert into v_lr values('201410624102','张三丰','男','0101',60)

标签:xkk,xsxx,into,SQL,笔记,----,insert,随缘,成绩
来源: https://www.cnblogs.com/051129-mgzhl/p/16120607.html