当前位置:首页 >> IT/计算机 >>

sql语句复习


第三章:sql语言 查询成绩在~分之间的学生情况。 SELECT Sno, Cno, Grade FROM SC WHERE Grade >= 85 AND Grade <= 90

查询Student表中所有学生的学号、姓名、性别和出生年份
SELECT Sno as 学号, Sname as 姓名, Ssex as 性别, Year(GetDate()) - Sage as 出 生年份 FROM Students // as 取别名 或者用学号= Sno Year(GetDate()) – Sage计算学生出生年 查询有成绩的学生的学号。 SELECT DISTINCT Sno FROM SC //使用 DISTINCT 关键字,可以消除重复记录 查询学生成绩为或的学生的学号。 SELECT * FROM SC WHERE Grade IN (80, 85) //使用IN关键字,选择不连续条件的记录 查询姓“张”的学生的基本情况。 SELECT * FROM Student WHERE Sname LIKE '张%' //使用谓词 LIKE 和通配符“%”或“_” ,实现模糊查询

%”代表0个或多个字符, “_”代表一个字符,一个汉字占两个字符
查询所有学生的号课的成绩,并按成绩由高向低排序。 SELECT * FROM SC WHERE Cno =’2’ ORDER BY Grade DESC

//ASC 为升序 DESC 为降序
查询2号课成绩最高的学生记录
SELECT TOP 1 * FROM SC WHERE Cno = '1' ORDER BY Grade DESC

//使用TOP关键字,选择查询结果的前几条记录

将总分在分以上的学生的情况(学号、姓名、性别、总成绩)存储到数据表GradeList中,假设数 据表GradeList不存在。 SELECT A.Sno, Sname, Ssex, SUM(Grade) AS sumGrade INTO GradeList

FROM Student A, SC WHERE A.Sno = SC.Sno GROUP BY A.Sno, Sname, Ssex HAVING (SUM(SC.Grade) >= 200)

查询学号为200215121的学生1号课的成绩,将其保存到变量Grade中
DECLARE @Grade INT --定义变量 SELECT @Grade = Grade --给变量赋值 FROM SC WHERE Sno = '200215122' PRINT @Grade --显示变量的值

求计算机系学生的学号和姓名
SELECT Sno,Sname FROM Students WHERE Sdept IN (SELECT Sdept FROM Students WHERE Sdept='CS')

求选修 3 号课程的学生学号和成绩,结果按成绩降序排列,如成绩同按学号升序排列
SELECT Sno,Grade FROM SC WHERE Cno IN (SELECT Cno FROM SC WHERE Cno='3') ORDER BY Grade DESC,Sno

ASC

求选修课程 2 成绩在 80-90 之间的学生学号和成绩,并将成绩乘以 0.8 输出
SELECT Sno,Grade*0.8 FROM SC WHERE Cno IN (SELECT Cno FROM SC WHERE Cno='2' ) AND Grade BETWEEN 80 AND 90

求数学或计算机系姓’张’的学生的信息
SELECT * FROM Students WHERE Sname LIKE '张%' AND (Sdept='IS' OR Sdept='MA')

查询总成绩在 200 分以上的学生的学号、总成绩和平均成绩。
SELECT Students.Sno,SUM(Grade) AS sumGrade,AVG(Grade) AS avgGrade FROM Students, SC WHERE Students.Sno = SC.Sno GROUP BY Students.Sno

HAVING (SUM(SC.Grade) >= 200)

在 FROM 子句中用 INNER JOIN 连接符指定连接条件查询所有有 2 号课程成绩的学生的学号、 姓名和成绩。
go use Student select Students.Sno,Students.Sname,Grade from Students inner join SC on Students.Sno=SC.Sno where SC.Cno='2'

查询学生中年龄相同的学生情况(使用自连接查询) 。
go use Student select a.Sno,a.Sname,a.Sage from Students as a,Students as b where a.Sage=b.Sage and a.Sname<>b.Sname

查询所有学生的总成绩(包括没有成绩的学生) 、学号和姓名(外部连接查询) 。
SELECT Students.Sno,Students.Sname,SUM(Grade),AVG(Grade) FROM Students left join SC on Students.Sno=SC.Sno GROUP BY Students.Sno,Students.Sname

查询某课程成绩在 90 分以上的学生的学号和姓名(使用谓词 IN 连接子查询) 。
go use Student select Students.Sno,Students.Sname from Students,SC where Students.Sno=SC.Sno and Grade IN (select Grade from SC where Grade>=90 )

查询有课程成绩的学生的学号和姓名(使用谓词 EXISTS 连接子查询)。
go use Student select Students.Sno,Students.Sname from Students where exists (select * from SC where SC.Sno=Students.Sno and Grade is not null )

第四章:数据库安全性 create login login6 with password='stu1' create user stu6 for login login6

create role myrole grant select //all 全部权限 on Students to stu6 with grant option //stu6可以把权限给其它用户 revoke select on Students from stu6 CASCADE //public 全部用户 CASCADE 级联 exec sp_droplogin login6 exec sp_dropuser stu6 exec sp_droprole myrole

go use Student alter TABLE SC add CONSTRAINT FK_Sno FOREIGN KEY (Sno) REFERENCES Students (Sno) ON update CASCADE; update Students SET sno='200215128' WHERE sno='200215121';

设置 Student 表中 Sdept 的取值默认为‘CS’ ;
ALTER TABLE Student add CONSTRAINT Mydefault default'CS' FOR Sdept

触发器: 要求为 Course 表编写一个名为 CourseTrigger 插入触发器,当插入记录到 Course 表时,该触 发器检查新插入记录的 userid 字段, 如果插入这个字段的值不存在于 Teacher 表中, 则从 Course 表中删除这个新插入记录。
create trigger CourseTrigger on Course for insert as declare @course_id char(20) set @course_id = (select userid from inserted) if not exists(select * from Teacher where userid = @course_id) begin delete from Course where userid=@course_id end

创建一个 after 触发器,在 Student 表中删除某学生的记录时,删除其相应的选课记录 (不允 许使用外键级联删除约束)。
create trigger StudentTrigger on Students for delete as declare @sno_id char(10) set @sno_id=(select Sno from deleted ) if exists(select * from SC where Sno=@sno_id) begin delete from SC where Sno=@sno_id end

创建一个触发器,不允许删除 Course 表中的任何数据。
create trigger CourseTrigger on Course for delete as if(select count(*) from deleted)>0 begin print('你不能删除该表中的任何记录') rollback transaction end

使用 STUDENT 数据库中的学生表、课程表、选课表,创建一个带参数的存储过程—userproc。 该存储过程的作用是:当任意输入一个学生的姓名时,将从三个表中返回该学生的学号、选修 的课程名称和课程成绩。
use Student go create procedure student_userproc @Sname char(10) as begin select Students.Sno,SC.Grade,Course.Cname from Students,SC,Course where Sname=@Sname and Students.Sno=SC.Sno and SC.Cno=Course.Cno end

exec student_userproc 刘晨

将姓名为 XXX 的学生所有课程的成绩减少 10 分(其中学生姓名为存储过程的参数) 。
use Student go create procedure Grade_userproc @Sname char(10) as begin declare @Sno char(10) select @Sno=Sno from Students where Sname=@Sname update SC set Grade=Grade-10 where Sno=@Sno end

exec Grade_userproc 刘晨


相关文章:
sql语句复习.doc
sql语句复习_电脑基础知识_IT/计算机_专业资料。SQL语句,应试宝典 表:
复习SQL关键语句_图文.ppt
复习SQL关键语句 - 数据查询 ? ? ? ? ? T1 、在数据库stude
SQL语言复习题.doc
SQL语言复习题 - 1)显示 T_BookInfo 表中所有字段的值。 SEL
SQL语言复习_图文.ppt
SQL语言复习 - sql语言的复习文档 sql语言总结... SQL语言复习_IT认证_资格考试/认证_教育专区。sql语言的复习文档 sql语言总结 SQL复习演讲人 王浩 学校:北大青鸟...
SQL语句练习题.doc
SQL 语句练习题一、单表查询练习 1、查询<学生信息表>,查询学生
sql语句练习题及答案.doc
sql语句练习题及答案 - 一 在数据库 school 中建立 student
基本的SQL语句练习.doc
基本的SQL语句练习 - 根据下面三个关系模式完成下面习题:答案已设为白色 需要
SQL语句复习(初学者适用).doc
SQL语句复习(初学者适用)_工学_高等教育_教育专区。自己整理的,大家看看吧。
SQL语句练习题答案.doc
篇三:sql 语句强化练习题及答案 sql 语句强化练习题及答案 一、简单查询
SQL语句复习题.doc
SQL语句复习题 - 一、对于教学数据库的三个基本表 学生 S(S#,SNAME
SQL查询语句复习题.doc
SQL查询语句复习题 - SQL 查询语句复习题 新建学生-课程数据库的三个表:
SQL语句习题11.doc
SQL语句习题11 - 设某商业集团关于商店销售商品的数据库中有三个基本表: 设
sql查询语句练习.doc
sql查询语句练习 - 最近在学习 SQL 嘛,所以各个地方找题目来练手,毕竟现
sql语句复习.doc
sql语句复习 - 第三章:sql语言 查询成绩在~分之间的学生情况。 SELE
Sql语句复习.doc
Sql语句复习 - Sql 语句复习 数据定义:create,alter,dro
第三章 SQL语言练习题和答案.doc
SQL 语言是(B )的语言,容易学习 。 A.过程化 B. 非过程化 C.格式化 D. 导航式 2. SQL 语言的数据操纵语句包括 SELECT、INSERT、UPDATE、DELETE 等。其中 ...
sql语句大全.doc
sql语句大全 - 经典 SQL 语句大全 一、基础 1、说明:创建数据库 CR
Oracle的sql语句练习题含答案.txt
Oracle的sql语句练习题含答案 - Oracle的sql语句范例 1. 表
数据库SQL查询语句练习题2.doc
数据库SQL查询语句练习题2 - Student(S#,Sname,Sage,S
SQL语句复习二.doc
SQL语句复习二 - 一、Oracle 学习查询语句的笔记 在 Oracle 中