当前位置:文档之家› 数据库sql查询语句练习2_习题_结果(单世民)

数据库sql查询语句练习2_习题_结果(单世民)

数据库sql查询语句练习2_习题_结果(单世民)
数据库sql查询语句练习2_习题_结果(单世民)

现在有一教学管理系统,具体的关系模式如下:Student (no, name, sex, birthday, class)

Teacher (no, name, sex, birthday, prof, depart)

Course (cno, cname, tno)

Score (no, cno, degree)

其中表中包含如下数据:

Course表:

Score表:

Student表:

Teacher表:

根据上面描述完成下面问题:

(注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原)DDL

1.写出上述表的建表语句。

命令:create table Student(no int,name varchar(14),sex varchar(2),birthday date,class int);

create table Teacher(no int,name varchar(14),sex varchar(2),birthday date,prof varchar(10),depart varchar(10));

create table Course(cno varchar(8),cname varchar(14),tno int);

create table Score(no int,cno varchar(8),degree int);

DML

2.给出相应的INSERT语句来完成题中给出数据的插入。

命令:

insert into Student values(5001,'李勇','男','1987-7-22',95001);

insert into Student values(5002,'刘晨','女','1987-11-15',95002);

insert into Student values(5003,'王敏','女','1987-10-5',95001);

insert into Student values(5004,'李好尚','男','1987-9-25',95003);

insert into Student values(5005,'李军','男','1987-7-17',95004);

insert into Student values(5006,'范新位','女','1987-6-18',95005);

insert into Student values(5007,'张霞东','女','1987-8-29',95006);

insert into Student values(5008,'赵薇','男','1987-6-15',95007);

insert into Student values(5009,'钱民将','女','1987-6-23',95008);

insert into Student values(5010,'孙俪','女','1987-9-24',95002);

insert into Student values(108,'赵里','男','1987-6-15',95007);

insert into Student values(109,'丘处机','男','1987-6-23',95008);

insert into Student values(107,'杨康','男','1987-9-24',95001);

insert into Teacher values(1,'李卫','男','1957-11-5','教授','电子工程系'); insert into Teacher values(2,'刘备','男','1967-10-9','副教授','math'); insert into Teacher values(3,'关羽','男','1977-9-20','讲师','sc');

insert into Teacher values(4,'李修','男','1957-6-25','教授','elec'); insert into Teacher values(5,'诸葛亮','男','1977-6-15','教授','计算机系'); insert into Teacher values(6,'殷素素','女','1967-1-5','副教授','sc'); insert into Teacher values(7,'周芷若','女','1947-2-23','教授','sc'); insert into Teacher values(8,'赵云','男','1980-6-13','副教授','计算机系'); insert into Teacher values(9,'张敏','女','1985-5-5','助教','sc');

insert into Teacher values(10,'黄蓉','女','1967-3-22','副教授','sc');

insert into Teacher values(11,'张三','男','1967-3-22','副教授','sc');

insert into Course values('3-101','数据库',1);

insert into Course values('5-102','数学',2);

insert into Course values('3-103','信息系统',3);

insert into Course values('3-104','操作系统',4);

insert into Course values('3-105','数据结构',5);

insert into Course values('3-106','数据处理',5);

insert into Course values('4-107','pascal语言',6);

insert into Course values('4-108','C++',7);

insert into Course values('4-109','java',8);

insert into Course values('3-245','数据挖掘',10);

insert into Course values('3-111','软件工程',11);

insert into Score values(5001,'3-105',69);

insert into Score values(5001,'5-102',55);

insert into Score values(5003,'4-108',85);

insert into Score values(5004,'3-105',77);

insert into Score values(5005,'3-245',100);

insert into Score values(5006,'3-105',53);

insert into Score values(5003,'4-109',45);

insert into Score values(5008,'3-105',98);

insert into Score values(5004,'4-109',68);

insert into Score values(5010,'3-105',88);

insert into Score values(5003,'3-105',98);

insert into Score values(5005,'4-109',68);

insert into Score values(5002,'3-105',88);

insert into Score values(107,'3-105',98);

insert into Score values(108,'4-109',68);

insert into Score values(109,'3-105',88);

insert into Score values(109,'4-109',80);

insert into Score values(107,'3-111',88);

insert into Score values(5003,'3-111',80);

单表查询

3.以class降序输出student的所有记录(student表全部属性)

命令:select*from Student order by class desc;

4.列出教师所在的单位depart(不重复)。

命令:select distinct depart from Teacher;

5.列出student表中所有记录的name、sex和class列

命令:select name,sex,class from Student;

6.输出student中不姓王的同学的姓名。

命令:select name from Student except select name from Student where name like'王%';或

select name from Student where name not like'王%';

7.输出成绩为85或86或88或在60-80之间的记录(no,cno,degree)

命令:select no,cno,DEGREE from Score where degree=85 or degree=86 or degree=88 or degree between 60 and 80;

8.输出班级为95001或性别为‘女’的同学(student表全部属性)

命令:select*from Student where class=95001 or sex='女';

9.以cno升序、degree降序输出score的所有记录。(score表全部属性)

命令:select*from Score order by cno asc,degree desc;

10.输出男生人数及这些男生分布在多少个班级中

命令:select COUNT(*),count(distinct class)from Student where sex='男';

11.列出存在有85分以上成绩的课程编号。

命令:select distinct cno from Score where degree>85;

12.输出95001班级的学生人数

命令:select COUNT(*)from Student where class=95001;

13.输出‘3-105’号课程的平均分

命令:select avg(cast(degree as float))from Score where cno='3-105';

14.输出student中最大和最小的birthday日期值

命令:select MAX(birthday),MIN(birthday)from Student;

15.显示95001和95004班全体学生的全部个人信息(不包括选课)。(student表全部属性)

命令:select*from Student where class=95001 or class=95004;

聚合查询

16.输出至少有5个同学选修的并以3开头的课程的课程号,课程平均分,课程最高分,课

程最低分。

命令:select cno,avg(cast(degree as float)),MAX(degree),MIN(degree) from Score where cno like'3%'group by cno having COUNT(cno)>5;

或者:

select cno,AVG(cast(DEGREE as float)),MAX(degree),MIN(DEGREE)from Score group by cno having COUNT(cno)>=5 and cno like'3%'

17.输出所选修课程中最低分大于70分且最高分小于90分的学生学号及学生姓名

命令:select Student.no,name from Student join Score on Student.no=Score.no group by Student.no,name having MAX(Score.degree)<90 and MIN(Score.degree)>70;

18.显示所教课程选修人数多于5人的教师姓名

命令:select name from Teacher join Course on Teacher.no=Course.tno where https://www.doczj.com/doc/226451541.html,o in(select cno from Score group by cno having COUNT(https://www.doczj.com/doc/226451541.html,o)>5);

19.输出’95001’班级所选课程的课程号和平均分

命令:select cno,avg(cast(degree as float))from Score where no in(select no from Student where class=95001)group by cno;

或者:

select cno,AVG(cast(degree as float))from Score join Student on Score.no=Student.no group by cno,class having class='95001'

20.输出至少有两名男同学的班级编号。

命令:select class from Student where sex='男'group by class having COUNT(class)>=2;

或者:select a.class from (select*from Student where sex='男')a group by a.class having COUNT(a.class)>=2

多表查询

21.列出与108号同学同年出生的所有学生的学号、姓名和生日

命令:select no,name,birthday from Student where year(birthday) =(select year(birthday)from Student where no=108);

或者:select b.no,https://www.doczj.com/doc/226451541.html,,b.birthday from Student a join Student b on datediff(YEAR,a.birthday,b.birthday)=0 and a.no='108'

22.列出存在有85分以上成绩的课程名称

命令:select cname from Course where cno in(select distinct cno from Score where degree>85);或

select distinct cname from Course join Score on https://www.doczj.com/doc/226451541.html,o=https://www.doczj.com/doc/226451541.html,o

where degree>85;

23.列出“计算机系”教师所教课程的成绩表(课程编号,课程名,学生名,成绩)。

命令:select https://www.doczj.com/doc/226451541.html,o,cname,https://www.doczj.com/doc/226451541.html,,DEGREE from Teacher join Course on Teacher.no=Course.tno join Score on https://www.doczj.com/doc/226451541.html,o=https://www.doczj.com/doc/226451541.html,o join Student on Score.no=Student.no where Teacher.depart='计算机系';

24.列出所有可能的“计算机系”与“电子工程系”不同职称的教师配对信息,要求输出每

个老师的姓名(name)和(职称)

命令:select https://www.doczj.com/doc/226451541.html,,a.prof,https://www.doczj.com/doc/226451541.html,,b.prof from (select name,prof,depart from Teacher where depart='计算机系'or depart='电子工程系')a join(select name,prof,depart from Teacher where depart='电子工程系'or depart='计算机系')b on not a.prof=b.prof and not

a.depart=

b.depart;

25.列出所有处于不同班级中,但具有相同生日的学生,要求输出每个学生的学

号和姓名。(提示:使用datediff函数,具体用法可以参考:https://www.doczj.com/doc/226451541.html,/blog/588844)

命令:select a.no,https://www.doczj.com/doc/226451541.html,,b.no,https://www.doczj.com/doc/226451541.html, from Student a join Student b on not a.class=b.class and a.birthday=b.birthday;

26.显示‘张三’教师任课的学生姓名,课程名,成绩

命令:select https://www.doczj.com/doc/226451541.html,,cname,DEGREE from Teacher join Course on Teacher.no=Course.tno join Score on https://www.doczj.com/doc/226451541.html,o=https://www.doczj.com/doc/226451541.html,o join Student on Score.no=Student.no where https://www.doczj.com/doc/226451541.html,='张三';

27.列出所讲课已被选修的教师的姓名和系别

命令:select distinct name,depart from Teacher join Course on Teacher.no=Course.tno join Score on https://www.doczj.com/doc/226451541.html,o=https://www.doczj.com/doc/226451541.html,o;

28.输出所有学生的name、no和degree。(degree为空的不输出和为空的输出两种

情况)。

命令:select name,Student.no,DEGREE from Student left join Score on Student.no=Score.no;

select name,Student.no,DEGREE from Student join Score on Student.no=Score.no;

29.列出所有任课教师的name和depart。(从课程选修和任课两个角度考虑)

命令:select distinct name,depart from Teacher join Course on Teacher.no=Course.tno;

select distinct name,depart from Teacher join Course on Teacher.no=Course.tno join Score on https://www.doczj.com/doc/226451541.html,o=https://www.doczj.com/doc/226451541.html,o;

30.输出男教师所上课程名称。

命令:select cname from Teacher join Course on Teacher.no=Course.tno where Teacher.sex='男';

31.出与“李军”同性别的所有同学的name。

命令:select name from Student where sex=(select sex from Student where name='李军');

32.输出选修“数据结构”课程的男同学的成绩。

命令:select DEGREE from Score join Student on Score.no=Student.no join Course on https://www.doczj.com/doc/226451541.html,o=https://www.doczj.com/doc/226451541.html,o where sex='男'and cname='数据

结构';

33.列出选修编号为‘3-105’课程并且该门课程成绩比课程‘3-111’的最高分

要高的cno,no和degree。

命令:select https://www.doczj.com/doc/226451541.html,o,Score.no,DEGREE from Course join Score on https://www.doczj.com/doc/226451541.html,o=https://www.doczj.com/doc/226451541.html,o join Student on Score.no=Student.no where https://www.doczj.com/doc/226451541.html,o='3-105'and Score.degree>(select max(degree)from Score where https://www.doczj.com/doc/226451541.html,o='3-111');

子查询

34.输出score中成绩最高的学号和课程号

命令:select no,cno from Score where degree in(select MAX(degree)from Score);

35.输出选修3-105课程,其成绩高于109号同学在此课程所得成绩的所有同学的学号,姓

命令:select Student.no,name from Student join Score on Student.no =Score.no where https://www.doczj.com/doc/226451541.html,o='3-105'and degree>(select degree from Score where no='109'and cno='3-105');

36.列出成绩比该课程平均成绩低的同学的学号,成绩和该门课的平均成绩

命令:select no,DEGREE,a.avg_degree from Score join(select cno,AVG(cast(degree as float))from Score group by cno) a(cno,avg_degree) on https://www.doczj.com/doc/226451541.html,o=https://www.doczj.com/doc/226451541.html,o where Score.degree

37.列出没有实际授课的教师的姓名和系别

命令:select name,depart from Teacher except select name,depart from Teacher join Course on Teacher.no=Course.tno join Score on https://www.doczj.com/doc/226451541.html,o=https://www.doczj.com/doc/226451541.html,o;

38.列出选修了编号为‘3-105’课程且其成绩高于‘4-109’课程最高成绩的同学的课程

编号,学号和成绩

命令:select cno,no,DEGREE from Score where cno='3-105'and degree>(select MAX(degree)from Score where cno='4-109');

39.**列出符合下述条件的所有可能的同学配对(sno1,sname1,sno2,sname2,difference)。其

中要求学号为sno1的sname1同学的所学课程的平均分大于学号为sno2的sname2同学的所学课程平均分,两个同学的课程平均分的差值difference为(sno1同学平均分-sno2同学平均分)

命令:select a.no,https://www.doczj.com/doc/226451541.html,,b.no,https://www.doczj.com/doc/226451541.html,,a.avg_degree-b.avg_degree as difference from (select Student.no,name,avg(degree)from Student join Score on Student.no=Score.no group by Student.no,name) a(no,name,avg_degree)join(select Student.no,name,avg(degree)from Student join Score on Student.no=Score.no group by Student.no,name) b(no,name,avg_degree)on a.avg_degree>b.avg_degree;

SQL查询语句大全集锦(超经典)

SQL查询语句大全集锦 MYSQL查询语句大全集锦 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的 表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 复制内容到剪贴板 代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: 复制内容到剪贴板 代码:SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: 复制内容到剪贴板 代码:SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题:

复制内容到剪贴板 代码:SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认 为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: 复制内容到剪贴板 代码:SELECT TOP 2 * FROM `testtable` 复制内容到剪贴板 代码:SELECT TOP 20 PERCENT * FROM `testtable` (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图, 它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: 复制内容到剪贴板 代码:SELECT `username`,citytable.cityid FROM `usertable`,`citytable` WHERE usertable.cityid=citytable.cityid在FROM子句中可用以下两种格式为表或视图指定别名: 复制内容到剪贴板 代码:表名 as 别名 表名别名例如上面语句可用表的别名格式表示为: 复制内容到剪贴板

数据库SQL语句

1、select x.商品代号,分类名,数量,品牌 From 商品表现1 x,商品表2 y Where x.商品代号=y.商品代号 (从商品库中查询出每一种商品的商品代号、分类名、数量和品牌等信息。)2、select distinct 产地 From商品表2 (从商品库中查询出所有商品的不同产地。) 3、select distinct 品牌 From 商品表2 (从商品库中查询出所有商品的不同品牌) 4、select count(distinct产地)as产地数From商品表2 (从商品库中查询出所有商品的不同产地的总数。) 5、select x.商品代号,分类名,产地,品牌 From商品表1 x.,商品表2 y Where x,商品代号=y.商品代号and (品牌=‘熊猫’or品牌=‘春兰’) (从商品库中查询出品牌为熊猫或春兰的所有商品的商品代号、分类名、产地和品牌。) 19、select 商品表1.商品代号,单价,数量,产地 From 商品表1,商品表2 Where 商品表达式1.商品代号=商品表达式2.商品代号 (从商品库中查询出每种商品的商品代号、单价、数量和产地。) 20、select count(*) From 商品表1 Where数量》10 (从商品库中查询出数量大于10的商品种数。) 21、select * From商品表1 Where数量between 10 and20 (从商品库中查询出数量在10和20之间的所有商品。) 22、select分类名,max(单价)as最高单价 From商品表1 Group by 分类名 (从商品库中查询出每类(即类名相同)商品的最高单价)23、select分类名,avg(数量)as平均 数量 From商品表1 Group by分类名 (从商品库中查询出每类(即分类名相 同)商品的平均数量) 24、select分类名,sum(数量)as总 数量 From商品表1 Group by分类名 (从商品库中查询出每类(即分类名相 同)商品的总数量。) 25、select* From商品表1 Where单价>all(select单价 From商品表1 Where分类名’电视机’) (从商品库中查询出比所有电视机的 单价都高的每种商品) 26、select* From商品表1 Where单价>all(select avg(单价) From商品表1) (从商品库中查询出比所有商品单价 的平均值要高的全部商品) 27、select* From商品表1 Where数量=some(select max(数量) From商品表1) (从商品库中查询出数量最多的一种 商品) 28、select distinct分类名 From商品表1. Group by 分类名having count(*)>1 (从商品库中查询出同一类商品多于一 种的所有分类名) 29、select商品表1.*,产地 From商品表1,商品表2 Where商品表1.商品代号=商品表2.商 品代事情and产地in( Select 产地 From商品表1 x ,商品表2 y Where x.商品代号=y.商品代号 Group by产地having count(*)=1) (从商品库中查询出同一产地的商品 只有一种的所有商品) 30、select*,单价*数量as总价值 From商品表1 Order by总价值desc (从商品库中查询出每种商品的总价 值,并按降序排列出来 6、select 学生。学生号,count(*)as选 课门数 From学生,选课 Where学生.学生号=选课.学生号 Group by 学生。学生号 (从教学库中查询出互个学生选课的 门数。) 7、select distinct x.* From 学生产x,选课y,选课z Where y.学生号=z.学生号and y .课程 号<>z.课程号and x.学生号=y.学生号 (从教学库中查询出至少选修了两门 课程的全部学生。) 8、select * From 学生 Where 学生号in (select 学生号 From 选课 Group by 学生号having coount (*)=1) (从教学库中查询出只选修了一门课 程的全部学生。) 9、select x.学生号,y.学生号,y.课程号 From 选课x,选课y Where x.学生号=@sl and y.学生号=@ s2 and x.课程号=y.课程号 (从教学库中查询出学生号为@s1的学 生和学生号为@s2的学生所选修的共 同课程的课程号。) 10、select x.* From 课程x,选课y Where x.课程号=y.课程号and y .学生 号=@s1 and y.课程号not in( select 课程号 from 选课 where 选课.学生号=@s2) (从教学库中查询出学生号为@S1的学 生所选修、而学生号为@s2的学生没有 选修的全部课程。) 11、select * From 课程 Where not exists( select * from 选课 where 课程.课程号=选课.课程号) (从教学库中查询出所有未被学生选 修的课程。) 12、select * From 课程 Where exists(Select * From 选课 Where 课程.课程号=选课.课程号) (从教学库中查询出所有已被学生选 修的课程。)

简单数据库查询语句

数据查询语言(SELECT语句) 数据操纵语言(INSERT, UPDATE, DELETE语句) 数据定义语言(如CREATE, DROP等语句) 数据控制语言(如COMMIT, ROLLBACK等语句 超详细的SQL语句语法2008-07-11 14:25简单的Transact-SQL查询只包括选择列表、FROM 子句和WHERE子句 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。SELECT nickname,email FROM testtable WHERE name='张三' (一) 选择列表 选择列表(select_list)指出所查询列 它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行, 默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行, 而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如: SELECT TOP 2 *FROM testtable SELECT TOP 20 PERCENT * FROM testtable 9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,

数据库SQL查询语句大全

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tab name(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

sql语句大全1

SQL语句大全 --语句功能 --数据操作 SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 --数据定义 CREATE TABLE --创建一个数据库表 DROP TABLE --从数据库中删除表 ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程 DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器 DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域 ALTER DOMAIN --改变域定义 DROP DOMAIN --从数据库中删除一个域 --数据控制 GRANT --授予用户访问权限 DENY --拒绝用户访问 REVOKE --解除用户访问权限 --事务控制 COMMIT --结束当前事务 ROLLBACK --中止当前事务 SET TRANSACTION --定义当前事务数据访问特征--程序化SQL DECLARE --为查询设定游标 EXPLAN --为查询描述数据访问计划 OPEN --检索查询结果打开一个游标 FETCH --检索一行查询结果 CLOSE --关闭游标 PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句 DESCRIBE --描述准备好的查询

数据库中SQL查询语句习题含的答案

.word 版本可编辑. 查询问题:设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT );学习关系SC (SNO ,CNO ,GRADE );课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) (1)检索计算机系的全体学生的学号,姓名和性别; (2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS ”的学生学号与姓名; (4)检索选修课程号为C2或C4的学生学号; (5)检索至少选修课程号为C2和C4的学生学号; (6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名; (8)查询所学课程包含学生S3所学课程的学生学号。 (1)检索计算机系的全体学生的学号,姓名和性别; SELECT Sno ,Sname ,Sex FROM S WHERE Sdept =’CS ’; (2)检索学习课程号为C2的学生学号与姓名; (1)首先在C 表中找出“DS ”课程的课程号Cno ; (2)然后在SC 表中找出Cno 等于第一步给出的Cno 集合中的某个元素Cno ; (3)最后在S 关系中选出Sno 等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname 送入结果表列。 SELECT Sno ,Sname FROM S WHERE Sno IN (SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM C WHERE Cname=‘DS ’)); (4)检索选修课程号为C2或C4的学生学号; SELECT Sno FROM SC WHERE Cno=‘C2’ OR Cno=‘C4’; (5)检索至少选修课程号为C2和C4的学生学号; SELECT Sno FROM SC X ,SC Y WHERE X.Sno=Y.Sno AND https://www.doczj.com/doc/226451541.html,o=‘C2’ AND https://www.doczj.com/doc/226451541.html,o=‘C4’ ; (6)检索不学C2课的学生姓名和年龄; 有学。 SELECT Sname FROM S WHERE NOT EXISTS (SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE SC.Sno=S.Sno AND https://www.doczj.com/doc/226451541.html,o=https://www.doczj.com/doc/226451541.html,o )); (8)查询所学课程包含学生S3所学课程的学生学号。 分析:不存在这样的课程Y ,学生S3选了Y ,而其他学生没有选。 SELECT DISTINCT Sno FROM SC AS X WHERE NOT EXISTS (SELECT * FROM SC AS Y WHERE Y.Sno=‘S3’ AND NOT EXISTS (SELECT * FROM SC AS Z WHERE Z.Sno=X.Sno AND https://www.doczj.com/doc/226451541.html,o=https://www.doczj.com/doc/226451541.html,o )); 设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT ); 学习关系SC (SNO ,CNO ,GRADE ); 课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) 查询问题: 1:查所有年龄在20岁以下的学生姓名及年龄。 2:查考试成绩有不及格的学生的学号 3:查所年龄在20至23岁之间的学生姓名、系别及年龄。 4:查计算机系、数学系、信息系的学生姓名、性别。 5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别 6:查所有姓“刘”的学生的姓名、学号和性别。 7:查姓“上官”且全名为3个汉字的学生姓名。 8:查所有不姓“张”的学生的姓名。 9:查DB_Design 课程的课程号。 10:查缺考的学生的学号和课程号。 11:查年龄为空值的学生的学号和姓名。 12:查计算机系20岁以下的学生的学号和姓名。 13:查计算机系、数学系、信息系的学生姓名、性别。 14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。 15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。 16:查询学生总人数。 17:查询选修了课程的学生人数。 18:计算选修了C1课程的学生平均成绩。

SQL搜索语句

SQL查询语句大全集锦 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。 代码:SELECT `nickname`,`email`FROM `testtable`WHERE `name`='张三' (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: 代码:SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: 代码:SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列 标题: 代码:SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n 是 表示一百分数,指定返回的行数等于总行数的百分之几。 例如: 代码:SELECT TOP 2 * FROM `testtable` 代码:SELECT TOP 20 PERCENT * FROM `testtable` (二) FROM子句 FROM子句指定SELECT语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列 所属的表或视图。例如在usertable和citytable表中同时存在cityid列,在查询两个表中的cityid时应

数据库图书信息管理数据库SQL语句

实验 SQL语言 一、实验目的 1、理解数据库以及数据表的设计; 2、熟悉SQL Server2005中的数据类型; 3、熟悉使用SQL语句创建和删除模式和索引; 4、掌握使用SQL语句创建、修改和删除数据表; 5、掌握使用SQL语句查询表中的数据; 6、掌握使用SQL语句插入、修改和删除数据表中的数据; 7、掌握使用SQL语句创建、删除、查询和更新视图。 二、实验容 (一)创建数据库和模式 1、通过SQL语句创建图书信息管理数据库,命名为“db_Library”,数据文件和日志文件放在D盘下以自己学号和命名的文件夹中,数据文件的逻辑名为db_Library_data,数据文件的操作系统名为db_Library_data.mdf,文件初始大小为10MB,最大可增加至300MB,增幅为10%;日志文件的逻辑名为db_Library_log,日志文件的操作系统名为db_Library_data.ldf,文件初始大小为5MB,最大可增加至200MB,增幅为2MB。 2、通过SQL语句在该数据库中创建模式L-C。 (二)创建和管理数据表 要求为各数据表的字段选择合适的数据类型及名称;为各数据表设置相应的完整性约束条件。 1、通过SQL语句将以下数据表创建在L-C模式下: 课程信息表(tb_course)——课程编号Course number 、课程名Course name 、先修课The first course 、学分credit 2、通过SQL语句将以下数据表创建在该数据库的默认模式dbo下: 图书类别信息表(tb_booktype)——类别编号Type number 、类别名称Category name 图书信息表(tb_book)——图书编号ISBN 、类别编号Type number、书名title 、作者author、BookPublic、定价BookPrice、库存数Inventory number 读者信息表(tb_reader)——读者编号Reader ID 、、性别、学号Student ID 、班级、系部pastern 借阅信息表(tb_borrow)——图书编号、读者编号、借阅日期Borrowing date 、归还日期Return date 3、通过SQL语句对读者信息表进行修改:删除系部字段、添加所在系字段。 4、通过SQL语句对图书信息表进行修改:将定价的数据类型改为REAL。 5、通过SQL语句删除课程信息表。 (三)创建和删除索引 1、使用SQL语句在图书信息表上创建一个非聚簇索引IX_S_QUANTITY,要求按照该表中库存数字段的降序创建。 2、使用SQL语句在读者信息表上创建一个唯一的非聚簇索引IX_S_NAME,要求按照该表中的字段的升序创建。 3、使用SQL语句删除之前创建的两个索引。 (四)数据库及数据表设计

数据库中SQL查询语句习题含的答案

查询问题:设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT );学习关系SC (SNO ,CNO ,GRADE );课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) (1)检索计算机系的全体学生的学号,姓名和性别; (2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS ”的学生学号与姓名; (4)检索选修课程号为C2或C4的学生学号; (5)检索至少选修课程号为C2和C4的学生学号; (6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名; (8)查询所学课程包含学生S3所学课程的学生学号。 (1)检索计算机系的全体学生的学号,姓名和性别; SELECT Sno ,Sname ,Sex FROM S WHERE Sdept =’CS ’; (2)检索学习课程号为C2的学生学号与姓名; (1)首先在C 表中找出“DS ”课程的课程号Cno ; (2)然后在SC 表中找出Cno 等于第一步给出的Cno 集合中的某个元素Cno ; (3)最后在S 关系中选出Sno 等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname 送入结果表列。 SELECT Sno ,Sname FROM S WHERE Sno IN (SELECT Sno FROM SC WHERE Cno IN (SELECT Cno FROM C WHERE Cname=‘DS ’)); (4)检索选修课程号为C2或C4的学生学号; SELECT Sno FROM SC WHERE Cno=‘C2’ OR Cno=‘C4’; (5)检索至少选修课程号为C2和C4的学生学号; SELECT Sno FROM SC X ,SC Y WHERE X.Sno=Y.Sno AND https://www.doczj.com/doc/226451541.html,o=‘C2’ AND https://www.doczj.com/doc/226451541.html,o=‘C4’ ; (6)检索不学C2课的学生姓名和年龄; 在表S 中找学生,要求这个学生学了全部课程。换言之,在S 表中找学生,在C 中不存在一门课程,这个学生没有学。 SELECT Sname FROM S WHERE NOT EXISTS (SELECT * FROM C WHERE NOT EXISTS (SELECT * FROM SC WHERE SC.Sno=S.Sno AND https://www.doczj.com/doc/226451541.html,o=https://www.doczj.com/doc/226451541.html,o )); (8)查询所学课程包含学生S3所学课程的学生学号。 分析:不存在这样的课程Y ,学生S3选了Y ,而其他学生没有选。 SELECT DISTINCT Sno FROM SC AS X WHERE NOT EXISTS (SELECT * FROM SC AS Y WHERE Y.Sno=‘S3’ AND NOT EXISTS (SELECT * FROM SC AS Z WHERE Z.Sno=X.Sno AND https://www.doczj.com/doc/226451541.html,o=https://www.doczj.com/doc/226451541.html,o )); 设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT ); 学习关系SC (SNO ,CNO ,GRADE ); 课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) 查询问题: 1:查所有年龄在20岁以下的学生姓名及年龄。 2:查考试成绩有不及格的学生的学号 3:查所年龄在20至23岁之间的学生姓名、系别及年龄。 4:查计算机系、数学系、信息系的学生姓名、性别。 5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别 6:查所有姓“刘”的学生的姓名、学号和性别。 7:查姓“上官”且全名为3个汉字的学生姓名。 8:查所有不姓“张”的学生的姓名。 9:查DB_Design 课程的课程号。 10:查缺考的学生的学号和课程号。 11:查年龄为空值的学生的学号和姓名。 12:查计算机系20岁以下的学生的学号和姓名。 13:查计算机系、数学系、信息系的学生姓名、性别。 14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。 15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。 16:查询学生总人数。

数据库经典SQL语句大全

数据库经典SQL语句大全 篇一:经典SQL语句大全 下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk','testBack', 'c:mssql7backupMyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2? from tab_old definition only 5、说明: 删除新表: tabname 6、说明: 增加一个列:Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明: 添加主键:Alter table tabname add primary key(col) 说明: 删除主键:Alter table tabname drop primary key(col) 8、说明: 创建索引:create [unique] index idxname on tabname(col?.) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。

数据库sql查询语句上机练习1_习题_结果(单世民)

习题1 请根据给出的数据库表结构来回答相应问题: DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13)); EMP (EMPNO INT,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE, SAL FLOAT, COMM FLOAT, DEPTNO INT); BONUS (ENAME VARCHAR(10), JOB VARCHAR(9), SAL INT, COMM INT); SALGRADE ( GRADE INT, LOSAL INT, HISAL INT); 其中表中包含如下数据: DEPT表: EMP表: SALGRADE表:

BONUS表: 无数据 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原) DDL 1. 写出上述表的建表语句。此外,在DEPT上创 建名为”PK_DEPT”的主键约束,在EMP表上 创建名为”PK_EMP”的主键约束以及指向表 DEPT的外键约束”FK_DEPTNO”。 命令: Create table DEPT (DEPTNO INT NOT NULL,DNAME VARCHAR(14),LOC VARCHAR(13)); Alter table DEPT add constraint PK_DEPT PRIMARY KEY (DEPTNO); create table EMP(EMPNO INT NOT NULL,ENAME VARCHAR(10),JOB VARCHAR(9),MGR INT,HIREDATE DATE, SAL FLOAT,COMM FLOAT,DEPTNO INT); alter table EMP add constraint PK_EMP PRIMARY KEY (EMPNO); alter table EMP add constraint FK_DEPTNO foreign key(DEPTNO) references DEPT(DEPTNO);

数据库基本SQL语句大全

数据库基本SQL语句大全 数据库基本----SQL语句大全 一、基础 1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1、d at' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 typ e2 [not null],、、) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definit ion only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的就是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col…、) 删除索引:drop index idxname 注:索引就是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement

数据库SQL查询语句大全修订稿

数据库S Q L查询语句 大全 公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definitio n only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type

注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A:UNION 运算符

学生选课数据库SQL语句练习题

一、设有一数据库,包括四个表:学生表(Student)、课程表 (Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表(一)~表(四)所示。用SQL语句创建四个表并完成相关题目。 表1-1数据库的表结构 表(一)Student 含义 属性名数据类型可否为 空 Sno Char(3)否学号(主 键) Sname Char(8)否学生姓名 Ssex Char(2)否学生性别 Sbirthday datetime可学生出生年 月 Class Char(5)可学生所在班 级 表(二)Course 含义 属性名数据类型可否为 空 Cno Char(5)否课程号(主 键) Cname Varchar(10)否课程名称 Tno Char(3)否教师编号 (外键) 表(三)Score 含义 属性名数据类型可否为 空 Sno Char(3)否学号(外 键) Cno Char(5)否课程号(外 键)

Degree Decimal(4,1)可成绩 主码:Sno+ Cno 表(四)Teacher 含义 属性名数据类型可否为 空 Tno Char(3)否教师编号 (主键)Tname Char(4)否教师姓名Tsex Char(2)否教师性别Tbirthday datetime可教师出生年 月 Prof Char(6)可职称Depart Varchar(10)否教师所在部 门 表1-2数据库中的数据 表(一)Student Sno Sname Ssex Sbirthday class 95033 108曾华男1977-09- 01 105匡明男1975-10- 95031 02 95033 107王丽女1976-01- 23 95033 101李军男1976-02- 20 109王芳女1975-02- 95031 10 95031 103陆君男1974-06- 03 表(二)Course

数据库SQL语句实验报告

《数据库原理及应用》实验报告SQL语句部分 :绩成总

实验一熟悉SQL SERVER,数据定义实验 实验一成绩: 一、实验目的 1、利用查询分析器创建数据库 2、利用查询分析器用SQL语言定义基本表、索引并进行相关操作 二、实验步骤及内容 在以下实验中,使用学生-课程数据库,它描述了学生的基本信息、课程的基本信息及学生选修课程的信息。 1.创建学生课程数据库 2.创建学生关系表S : 3.创建课程关系表C : 课程名学分先行课课程号Cno ccreditCname Cpno 4.创建课程关系表SC : 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 7、删除表S的“年龄”属性列。 8、删除S姓名列的唯一值约束。 9、修改SC表成绩属性列为精确数字型。 10、在表S上,按“Sno”属性列的唯一值方式建立索引。 11、删除表SC,利用磁盘上保存的.SQL文件重新创建表SC。 12、创建教材P74页习题5中SPJ数据库中的四个关系:S、P、J、SPJ。 三、实验结果: 1.创建学生课程数据库 ; Studend create database2.创建学生关系表S : S create table(, 9Sno CHAR()PRIMARYKEY UNIQUE,)(Sname CHAR20CHAR Ssex (2), smallint Sage ,

char Sdept 20(), ); .创建课程关系表C 3: 课程号课程名先行课学分 ccredit Cpno CnoCname table C create (primary key,) Cno char(4Cname CHAR(40 ),char(), 4Cpno ,Ccredit SMALLINT); 4.创建课程关系表SC : 学号课程号成绩 grade Sno Cno createtable SC(9),Sno char(),char Cno (4, Grade smallint); 5.将以上创建表S、C、SC的SQL命令以 .SQL文件的形式保存在磁盘上。 6、在表S上增加“出生日期”属性列。 ;datetimeadd Sbirthday alter table S 7、删除表S的“年龄”属性列。

相关主题
相关文档 最新文档