《数据库》实验二SQL查询代码
实验二SQL语言——数据查询操作
实验二SQL语言——数据查询操作SQL (Structured Query Language) 是一种用于管理关系数据库系统的标准语言。
在数据查询操作方面,SQL 可以帮助用户从数据库中检索想要的数据,通过下面的实验,我们将深入了解 SQL 语言在数据查询操作中的应用。
一、SELECT语句SELECT语句是SQL中最常用的语句之一,它用于从数据库中选择需要查询的数据。
SELECT语句的基本语法如下:```SELECT列名1,列名2,...FROM表名;```例如,我们有一个名为 "Students" 的表,其中包含了学生的姓名、年龄和性别等信息。
要查询学生的姓名和年龄,我们可以使用以下SELECT 语句:```SELECT 姓名, 年龄 FROM Students;```二、WHERE子句WHERE子句用于在SELECT语句中添加过滤条件,只返回满足条件的数据。
下面是WHERE子句的基本语法:```SELECT列名1,列名2,...FROM表名WHERE条件;```例如,我们要查询年龄大于等于18岁的学生信息,可以使用以下SELECT语句:```SELECT * FROM Students WHERE 年龄 >= 18;```三、ORDERBY子句ORDERBY子句用于按照指定的列进行排序,可以按照升序或降序排列。
下面是ORDERBY子句的基本语法:```SELECT列名1,列名2,...FROM表名ORDERBY列名[ASC,DESC];```例如,我们要按照学生的年龄从小到大排序,可以使用以下SELECT语句:```SELECT * FROM Students ORDER BY 年龄 ASC;```四、GROUPBY子句GROUPBY子句用于将查询结果按照一个或多个列进行分组,并对每个组进行聚合操作。
下面是GROUPBY子句的基本语法:```SELECT列名1,列名2,...FROM表名GROUPBY列名1,列名2,...;```例如,我们要统计每个性别的学生人数```SELECT 性别, COUNT(*) FROM Students GROUP BY 性别;```五、HAVING子句HAVING子句用于在GROUPBY子句中添加过滤条件,只返回满足条件的分组。
实验二 SQL语句查询
SQL语句查询练习实验报告一、实验项目名称SQL查询语句练习二、实验目的熟练掌握SQL查询语句,能够运用该语句完成各种查询。
三、实验环境1.硬件:网络实验室2.软件:Windows98/2000等操作系统,安装SQL Server 2000个人版或企业版四、实验内容book(总编号,分类号,书名,作者,出版社,单价,是否在库)图书数据表bookreader(借书证号,单位,姓名,性别,年龄,职称,地址)读者数据表readerborrow(借书证号,总编号,借书日期,还书日期)例题1:创建名为bookstore的数据库删除名为bookstore的数据库3.建立基本表reader(借书证号,单位,姓名,性别,年龄,职称,地址)4.删除基本表reader5.为book表在总编号上建立聚集索引6.删除book表在总编号上建立的索引7.在book表的基础,建立book_w视图,包含总编号,分类号,书名,作者8.删除视图book_wCREATE DATABASE bookstoreDROP DATABASE bookstoreCREATE TABLE reader(借书证号,单位,姓名,性别,年龄,职称,地址)DROP TABLE readerCREATE CLUSTER INDEX all_number ON book(总编号)DROP INDEX book.all_numberCREATE VIEW book_w as select 总编号,分类号,书名,作者 from book DROP VIEW book_w例题2:1.查询单位为“化工系”的读者的借书证号、姓名、职称。
2.查询单位为“化工系”或“数学系”,职称为“讲师”的读者的姓名及单位。
3.查询单价在10~20元之间的图书的书名、作者、出版单位、单价。
4.查询单位为“外语系”或“建工系”读者的姓名、单位、职称。
5.查询所有姓刘的读者的姓名、单位。
数据库实验报告-SQL语句查询
《数据库原理》实验报告(实验名称:SQL查询语句)一、实验目的数据查询语句是SQL语句的重要组成部分,是编程人员与数据库管理人员必不可少的工具,通过实验达到以下目的:(1)掌握SELECT 语句的基本语法,加深学生对查询语句基本概念的理解。
(2)掌握简单的单表查询。
(3)掌握连接查询。
二、实验内容:实验数据:实验二所建的数据库及表,实验三录入表中的数据。
1、简单查询(1)若干列或行的选择(2)*、distinc、between…and… 、 in、 like等运算符的使用(3)计算列、常量或空值的查询(4)查询结果排序和分组2、连接查询(1)内连接和自身连接(2)外连接(3)复合条件连接(4)多表连接(5)对表和列使用别名三、实验环境SQL server 2000,pc机一台四、程序源码与运行结果1.查询所有学生的全部信息2. 查询全体学生的学号与姓名3 查询年龄在20岁以下的学生姓名及其出生年份,并为出生年份加上标题4 查询选修了课程的学生学号,并消除重复行5 查询年龄在20~23岁的学生信息(用between… and…表示查询条件)6 查询全体学生情况,查询结果按班级编号升序排列,同一班的学生按年龄降序排列7 查询所有姓赵学生的姓名、学号和性别8 查询名字中第2个字为“小”字的学生姓名9 查询电气信息工程学院(dx) 和计算机学院(jsj)的学生(要求:使用IN关键字表示查询条件10 查询没有考试成绩的学生学号和课程号11 查询有2门以上课程是90分以上的学生的学号及(90分以上的)课程数(先用group by 分组,再用Having限定分组条件)12 查询学生总人数13 查询学号为‘’学生的平均成绩和总成绩,并为总成绩和平均成绩取别名。
14 查询c01号课程的最高分数和最低分15 查询没有考试成绩的学生学号和课程号16 查询全体学生的姓名、选修的课程名及成绩17 查询每个学生及其选修课程情况的所有信息(用*表示字段18 查询某门课程考试成绩相同的学生学号和课程名,并为各个表取别名19 查询与“张三”在一个系学习的学生(IN)20 查询选修了“数据结构”的学生学号和姓名五、实验总结列名写错:修改列名:心得体会:通过实验,了解了一些基本的查询操作,会一些的基本操作。
数据库SQL实验代码
数据库的查询题目--较难设有学生选取修课程数据库:S(Sno, SNAME, AGE, SEX, DEPARTMENT, ADDRESS, BIRTHPLACE)、SC(Sno, Cno, GRADE)C(Cno, CNAME, TEACHER)(1) 李老师所教的课程号、课程名称;SELECT Cno, CNAME FROM C WHERE TEACHER=”李”SELECT Sno, SNAME FROM S WHERE AGE>23 AND SEX=”女”(3) “李小波”所选修的全部课程名称;select cnamefrom cwhere cno in(select cno from scwhere sno in(select sno from s where sname='李晓波'))(4) 所有成绩都在80分以上的学生姓名及所在系;SELECT distinct sname,deptFROM S, SCWHERE S.sno=SC.Sno AND SC.Snonot in(SELECT SnoFROM SCWHERE GRADE<80 );(5) 没有选修“操作系统”课的学生的姓名;SELECT SNAME FROM S WHERE Sno NOT IN(SELECT Sno FROM SC, C ;WHERE o=o AND CNAME=’操作系统’ )(6) 与“李小波”同乡的男生姓名及所在系;select sname,deptfrom swhere dept in(select dept from s where sname='李晓波')and sname!='李晓波'select sname,deptfrom swhere dept in(select x.dept from s x inner join s y on x.dept=y.dept and x.sname='李晓波')(7) 英语成绩比数学成绩好的学生;Select sname from SWhere sno in(select X.sno from SC X inner join SC Y on X.Sno=Y.SnoWhere X.grade > Y.grade and o=(select cno from c where cname='英语')And o=(select cno from c where cname='数学'));(8)选修同一门课程时,女生比男生成绩好的学生名单;select snamefrom swhere sno in(select x.sno from sc x inner join sc y on o=o wherex.grade>y.grade and x.sno in(select sno from s where sex='女'and y.sno in(select sno from s where sex='男')))(9)至少选修两门以上课程的学生姓名、性别;Select sname,sex from s where sno in (select sno from sc group by sno having count(*)>=2); select sname,sexfrom swhere sno in(select sno from scgroup by snohaving count(cno)>=2)(10) 选修了李老师所讲课程的学生人数;Select count(*) from sc where cno in (select cno from c where teacher=’李老师’);select count(sno)from swhere sno in(select sno from sc where cnoin(select cno from c where teacher='李老师'))(11) 没有选修李老师所讲课程的学生;select count(sno)from swhere sno not in(select sno from sc where cnoin(select cno from c where teacher='李老师'))Select sname from s where sno in (select sno from scwhere cno not in (select cno from c where teacher=’李老师’));(12) “操作系统”课程得最高分的学生姓名、性别、所在系;select sname,sex,deptfrom swhere sno in(select sno from sc where cno in(select cno from c where cname='操作系统')andgrade in(select max(grade)from scwhere cno in(select cno from c where cname='操作系统')))Select sname,sex,deptment from s where sno in (select sno from scwhere (cno in (select cno from c Where cname=’操作系统’))and grade in (select max(grade) from sc group by cno))存储过程。
实验二SQL查询知识
实验二SQL查询知识1. SQL查询基础SQL(Structured Query Language)是一种用于在关系型数据库中进行数据操作的语言。
在实验二中,我们将学习SQL 查询的基础知识和常用语句。
1.1 SELECT语句SELECT语句用于从数据库中查询数据。
其基本语法如下:SELECT 列名1, 列名2, ... FROM 表名;其中,列名是要查询的数据列名,表名是要查询数据的表名。
例如,查询学生表中所有学生的学号和姓名,可以使用以下SQL语句:SELECT学号, 姓名FROM学生表;1.2 WHERE子句WHERE子句用于添加条件限制,在查询语句中使用。
其基本语法如下:SELECT 列名1, 列名2, ... FROM 表名 WHERE 条件;条件是一个表达式,用于筛选符合条件的数据行。
例如,查询学生表中年龄大于等于18岁的学生信息,可以使用以下SQL语句:SELECT*FROM学生表WHERE年龄>=18;1.3 排序ORDER BY语句用于对查询结果进行排序,默认是按照升序排列。
其基本语法如下:SELECT 列名1, 列名2, ... FROM 表名 ORDER BY 列名 [ASC|DESC];例如,查询学生表中年龄大于等于18岁的学生信息,并按照年龄降序排列,可以使用以下SQL语句:SELECT*FROM学生表WHERE年龄>=18ORDER BY 年龄DESC;1.4 聚合函数聚合函数用于对数据进行统计计算,常用的聚合函数包括COUNT、SUM、AVG、MAX和MIN等。
下面是一些常用的聚合函数及其使用方法:•COUNT:统计行的数量SELECT COUNT(*) FROM表名;•SUM:计算指定列的总和SELECT SUM(列名) FROM表名;•AVG:计算指定列的平均值SELECT AVG(列名) FROM表名;•MAX:计算指定列的最大值SELECT MAX(列名) FROM表名;•MIN:计算指定列的最小值SELECT MIN(列名) FROM表名;1.5 LIMIT子句LIMIT子句用于限制查询结果返回的行数。
实验二 SQL 2008数据库的查询
实验二数据库的查询一、实验内容1.SELECT语句的基本使用;2.子查询的使用,连接查询的使用,数据汇总,Group By、Order By子句的使用。
二、实验步骤1.SELECT语句的基本使用(1)对于实验1给出的数据库表结构,查询每个雇员的所有数据。
在查询分析器的窗口输入如下的语句并执行:USE YGGLSEIECT *FROM EmployeesGO【思考与练习】用SELECT语句查询Departments和Salary表的所有记录。
USE YGGLSELECT*FROM DepartmentsGO(2)查询每个雇员的地址和电话。
在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT Address,PhoneNumberFROM EmployeesGO【思考与练习】用SELECT语句查询Departments和Salary表的一列或若干列。
USE YGGLSELECT Income,OutcomeFROM SalaryGO(3)查询EmployeeID为000001的雇员的地址和电话。
在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT Address,PhoneNumber 7FROM EmployeesWHERE EmployeelD=’000001’GO【思考与练习】用SELECT语句查询Departments和Salary表中满足指定条件的1列或若干列USE YGGLSELECT DepartmentName,noteFROM DepartmentsWHERE DepartmentID='1'GO(4)查询Employees表中女雇员的地址和电话,使用AS子句将结果中各列的标题分别指定为地址、电话。
在查询分析器的窗口输入如下的语句并执行:USE YGGLSELECT Address AS地址,PhoneNumber AS电话FROM EmployeesWHERE sex=0GO注意:使用AS子句可指定目标列的标题。
数据库管理系统SQL实验报告-—SQL语句代码
数据库管理系统SQL实验报告-—SQL语句代码--创建数据库 TEST--create database TEST--使用数据库--use TEST--创建表学生表Student/*create table Student(S_no char(10) primary key,S_name char(8) not null,S_sex char(2),S_dept_no char(4));*/--创建表课程表Course/*create table Course(C_no char(6) primary key,C_name char(20) not null,C_credit int);*/--创建表选课表SC/*create table SC(S_no char(10),C_no char(6),SC_grade int,primary key(S_no,C_no));*/--创建表系表 DPT/*create table DPT(D_no char(4) primary key,D_name char(20) not null,D_T_no char(8) not null);*/--创建表教师表Teacher/*create table Teacher(T_no char(4) primary key,T_name char(8) not null,T_ranks char(12));*/--创建表授课表TC/*create table TC(T_no char(4),C_no char(6),TC_classroom char(6),primary key(T_no,C_no));*/--在Student中加入属性S_age(int)--alter table Student add age int;--修改表Student中的列名age为S_age--execute sp_rename 'Student.age','S_age','column' ; --在Course 中加入属性D_no(char(4))--alter table Course add D_no char(4);--在Teacher中加入属性T_sex(char(2))--alter table Teacher add T_sex char(2);--建立索引--在Student上建立关于属性S_no的唯一索引index_SS_no--create unique index index_SS_no on Student(S_no)--在Course 上建立关于属性C_no的唯一索引index_CC_no--create unique index index_CC_no on Course(C_no)--建立视图:在Student上为信管系学生的记录建立一个视图view_SS_dept/*create view view_SS_dept asselect Student.* from Student,DPT where DPT.D_name='信管' and DPT.D_no=Student.S_dept_no*/--插入数据--向DPT中插入一些数据:例如 0001,信管,0001--insert into DPT values ('0001','信管','0001');--insert into DPT values ('0002','计本','0002');--insert into DPT values ('0003','会计','0003');--insert into DPT values ('0004','国贸','0004');--insert into DPT values ('0005','金融','0005');--向Student中插入一些数据:例如2009970041,张晶晶,男,0001,22--insert into Student values ('2009970041','张晶晶','男','0001',22);--insert into Student values ('2009970042','张二二','女','0002',21);--insert into Student values ('2009970043','张三三','男','0003',23);--insert into Student values ('2009970044','张四四','女','0004',20);--insert into Student values ('2009970045','张五五','男','0005',24);--insert into Student values ('2009970046','张六六','女','0001',19);--向Course 中插入一些数据:例如090001,SQL数据库,2,0001--insert into Course values ('09001','SQL数据库',2,'0001');--insert into Course values ('09002','操作系统',1,'0002');--insert into Course values ('09003','会计基础',2,'0003');--insert into Course values ('09004','国际贸易',3,'0004');--insert into Course values ('09005','国际金融',2,'0005');--向Teacher中插入一些数据:例如 0001,张老师,教授,男--insert into Teacher values ('0001','张老师','教授','男');--insert into Teacher values ('0002','夏老师','教授','男');--insert into Teacher values ('0003','李老师','讲师','女');--insert into Teacher values ('0004','陈老师','副教授','女');--insert into Teacher values ('0005','刘老师','副教授','男');--向SC中插入一些数据:例如 2009970041,09001,100--insert into SC values ('2009970041','09001',100);--insert into SC values ('2009970042','09002',90);--insert into SC values ('2009970043','09003',80);--insert into SC values ('2009970044','09004',70);--insert into SC values ('2009970045','09005',60);--向TC中插入一些数据:例如 0001,090001,1#101--insert into TC values ('0001','09001','1#101');--insert into TC values ('0002','09002','1#102');--insert into TC values ('0003','09003','1#103');--insert into TC values ('0004','09004','1#104');--insert into TC values ('0005','09005','1#105');--单表查询--查询所有学生的信息--select * from Student--查询所有女生的姓名--select S_name as 女生姓名 from Student where S_sex='女'--查询成绩在80--90分之间的所有学生的选课记录,结果按照成绩的降序排列--select SC.* from SC where SC_grade>=80 and SC_grade<=90 order by SC_grade DESC--查询各个系的学生人数--select DPT.D_name,count(S_no) as number from SC,Course,DPT where SC.C_no=Course.C_no and Course.D_no=DPT.D_no group by DPT.D_name--连接查询--查询信管系年龄在21岁以下的女生的姓名及其年龄和所在系--select Student.S_name,Student.S_age,DPT.D_name from Student,DPT where Student.S_age<=21 and DPT.D_name='信管' and Student.S_dept_no=DPT.D_no--嵌套查询--查询选修课总学分在10分以下的学生姓名--select Student.S_name from Student where Student.S_no in (select SC.S_no from SC,Course where SC.C_no=Course.C_no group by SC.S_no having sum(Course.C_credit)<10 )--查询各门课程的最高成绩的学生姓名及其成绩--select Student.S_name,SC1.SC_grade from Student,SC SC1 where Student.S_no=SC1.S_no and SC1.SC_grade in (select max(SC2.SC_grade) from SC SC2 group by SC2.C_no )--查询选修了2009970041号学生所选修的全部课程的学生的学号--select S_no from Student where not exists (select * from SC SC1 where SC1.S_no='2009970041' and not exists (select * from SC SC2 where SC2.S_no=Student.S_no and SC2.C_no=SC1.C_no))--查询选修了张老师所开设的全部课程的学生的姓名--select S_name from Student where not exists (select * from TC where T_no in (select T_no from T eacher where T_name='张老师') and not exists (select * from SC where SC.S_no=Student.S_no and SC.C_no=TC.C_no));--删除索引--删除Student上的索引index_SS_no--drop index Student.index_SS_no--删除Course 上的索引index_CC_no --drop index Course.index_CC_no--删除视图:删除视图view_SS_dept --drop view view_SS_dept。
数据库SQL实验代码
数据库SQL实验代码--实验一、数据库的定义实验--1.创建XSCJGL数据库USE MASTERIF DB_ID('XSCJGL')IS NOT NULL DROP DATABASE XSCJGLCREATE DATABASE XSCJGL--2、刷新数据库目录后,选择新出现的XSCJGL数据库,在SQL 操作窗口中,创建Student、SC、Course三表及表记录插入命令如下:use xscjglif object_id('sc','u')is not null drop table scif object_id('s','u')is not null drop table sif object_id('c','u')is not null drop table cif object_id('tsc','u')is not null drop table tscif object_id('ts','u')is not null drop table tsif object_id('tc','u')is not null drop table tcCreate Table S( Sno CHAR(2)NOT NULL PRIMARY KEY(Sno),Sname CHAR(6),sex CHAR(2)DEFAULT'男'CHECK(sex='男'OR sex='女'),age SMALLINT CHECK(age>=15 AND age<=45),sdept CHAR(6));Create Table C( Cno CHAR(2)NOT NULL PRIMARY KEY(Cno),Cname VARCHAR(20),cdept CHAR(6),Tname CHAR(6),ct SMALLINT CHECK((ct IS NULL)OR(ct BETWEEN 1 AND 5)), CPNO VARCHAR(20));Create Table SC( Sno CHAR(2)NOT NULL CONSTRAINT S_F FOREIGN KEY REFERENCES S(Sno),Cno CHAR(2)NOT NULL,GRADE SMALLINT CHECK((GRADE IS NULL)OR(GRADE BETWEEN 0 AND 100)),PRIMARY KEY(Sno,Cno),FOREIGN KEY(Cno)REFERENCES C(Cno));INSERT INTO S VALUES('S1','李涛','男',22,'统计');INSERT INTO S VALUES('S2','王林','女',18,'计算机');INSERT INTO S VALUES('S3','陈高','女',15,'自动化');INSERT INTO S VALUES('S4','张杰','男',17,'自动化');INSERT INTO S VALUES('S5','吴小丽','女',19,'统计');INSERT INTO S VALUES('S6','张敏敏','女',20,'计算机');INSERT INTO S VALUES('S7','郑冬','男',19,'数学');INSERT INTO S VALUES('S8','朱雨','男',20,'数学');INSERT INTO C VALUES('C1','C语言','计算机','汪小寒','4','计算机基础');INSERT INTO C VALUES('C2','R软件','自动化','周在莹','3','线性代数');INSERT INTO C VALUES('C3','精算学','统计','刘晓','3','金融数学');INSERT INTO C VALUES('C4','计算机算法','计算机','李杰','2','C 语言'); INSERT INTO C VALUES('C5','数据库应用','自动化','周有顺','4','R软件'); INSERT INTO C VALUES('C6','金融数学','统计','黄旭东','3','数学分析'); INSERT INTO C VALUES('C7','时间序列','统计','何道江','4','精算学'); INSERT INTO C VALUES('C8','数学分析','数学','周文','4','高等数学'); INSERT INTO C VALUES('C9','线性代数','数学','储茂权','2','高等数学'); INSERT INTO SC VALUES('S1','C1',90);INSERT INTO SC VALUES('S1','C2',85);INSERT INTO SC VALUES('S2','C1',84);INSERT INTO SC VALUES('S2','C2',94);INSERT INTO SC VALUES('S2','C3',83);INSERT INTO SC VALUES('S3','C1',73);INSERT INTO SC VALUES('S3','C7',59);INSERT INTO SC VALUES('S3','C4',88);INSERT INTO SC VALUES('S3','C5',85);INSERT INTO SC VALUES('S4','C2',65);INSERT INTO SC VALUES('S4','C5',90);INSERT INTO SC VALUES('S4','C6',79);INSERT INTO SC VALUES('S5','C2',89);INSERT INTO SC VALUES('S5','C1',84);INSERT INTO SC VALUES('S6','C5',55);INSERT INTO SC VALUES('S6','C1',null);--实验二、数据库的查询实验--使用XSCJGL库,保存好并每次实验做好备份,以后实验要继续使用。
《数据库原理》实验报告2 SQL语言的DDL
《数据库原理》实验报告专业:计算机科学与技术班级:09-3学号:409417080332姓名:张华超SQL语言的DDL一、实验目的:SQL Server 2000的查询分析器是一种特别用于交互式执行SQL语句和脚本的极好的工具。
SQL(Structured Query Language)语言是关系数据库的标准语言。
是一种介于关系代数与关系演算之间的结构化查询语言,其功能并不仅仅是查询,SQL语言是一个通用的、功能极强的关系数据库语言。
在本次实验中熟悉表的创建、删除、修改及索引的创建与删除二、实验内容1.启动数据库服务软件SQL Server 2000的查询分析器,用如下语句对表进行操作,详细的语法格式参看课本相应章节:Create Table 建表Drop Table 删除表Alter Table 更改表2.如下语句对索引进行操作,详细的语法格式参看课本相应章节:Create Index 建立索引Drop Index 删除索引三、实验任务1.打开数据库SQL Server 2000的查询分析器,用Create Table建表aa,表2.用Create Table建表bb,表结构如下所示(其中Bb1与Bb2的组合是主键):3.用Drop Table删除表aa。
4.用Alter Table修改表bb,添加一个字段Bb4,类型Varchar,长度20。
5.用Create Index对表Bb的Bb3字段建立一个升序索引,索引名Indexbb。
6.用Drop Index删除索引Indexbb。
Create Table aa(Aa1 Varchar (20) primary key,Aa2 Int,Aa3 Decimal);Create Table bb(Bb1 Varchar (30),Bb2 Int,Bb3 Decimal (6,2),primary key (Bb1,Bb2));Drop Table aa;Alter Table bb add Bb4 Varchar (20);Create Index Indexbb on bb(Bb3 asc );Drop Index bb.Indexbb;。
数据库实验SQL语句
数据库实验SQL语句实验二查询操作一、实验目的和要求1、掌握通过SQL语句对数据库进行查询操作的方法。
二、实验步骤1、建立数据库dbtest2、根据附件里的SQL语句建立student表、course表、sc表,并填入数据。
3、完成下列查询操作。
1)查询学分为2的课程名称。
2)查询所有男生的名单。
3)查询所有成绩及格的学生学号。
4)查询成绩在80-90之间(包含两端)学生学号和课程号。
5)查询所有姓“刘”的同学的名单。
6)某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
查询缺少成绩的学生的学号和相应的课程号。
7)查询选修了3号课程,而且成绩大于80分的学生学号,查询结果按分数降序排列。
8)查询有多少人选修了课程。
9)查询2号课程的最高分。
10)查询2号课程的平均分。
11)统计所有的男生人数和女生人数。
12)查询学生的姓名和他/她选修的课程名称。
13)查询学生的姓名、他/她选修的课程名称和成绩。
14)查询选修了课程名为“信息系统”的学生学号、姓名、成绩。
15)查询每个学生超过他所选选修课的平均成绩的课程号。
16)每门课程所对应的平均成绩。
17)建立一张包含学生所有信息的视图student_all18)在student_all视图上查询查询学生的姓名、他/她选修的课程名称和成绩。
附件:CREATE TABLE Student(Sno CHAR(9) PRIMARY KEY, /* 列级完整性约束条件*/ Sname CHAR(20) UNIQUE, /* Sname取唯一值*/ Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20));insert into studentvalues('200215121','李勇','男',20,'CS');insert into studentvalues('200215122','刘晨','女', 19, 'CS');insert into studentvalues('200215123','王敏','女',18,'MA');insert into studentvalues('200215125','张立','男',19,'IS');insert into studentvalues('200215126','欧阳夏丹','女',18,'IS');CREATE TABLE Course(Cno CHAR(4) PRIMARY KEY,Cname CHAR(40),Cpno CHAR(4) ,Ccredit SMALLINT,FOREIGN KEY (Cpno) REFERENCES Course(Cno) );Insert into CourseValues('2','数学',null,2);Insert into CourseValues('6','数据处理',null,2);Insert into CourseValues('7','语言','6',4);Insert into CourseValues('4','操作系统','4',3);Insert into CourseValues('5','数据结构','7',4);Insert into CourseValues('1','数据库','5',4);Insert into CourseValues('3','信息系统','1',4);Insert into CourseValues('8','db_test','1',4);CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY (Sno,Cno),/* 主码由两个属性构成,必须作为表级完整性进行定义*/FOREIGN KEY (Sno) REFERENCES Student(Sno),/* 表级完整性约束条件,Sno是外码,被参照表是Student */ FOREIGN KEY (Cno) REFERENCES Course(Cno)/* 表级完整性约束条件,Cno是外码,被参照表是Course*/ );insert into scvalues('200215121','1',92);insert into scvalues('200215121','2',85);insert into scvalues('200215121','3',88);insert into scvalues('200215122','2',90);insert into scvalues('200215122','3',80);insert into scvalues('200215123','3',null);/*1*/select cname from course where ccredit=2/*2*/select sname from student where ssex='男'/*3*/select distinct sno from sc where grade>=60/*4*/select sno,cno from sc where grade between 80 and 90 /*5*/select sname from student where sname like'刘%'/*6*/select sno,cno from sc where grade is null/*7*/select sno from sc where cno=3 and grade>=80 order by grade desc /*8*/select count(distinct sno)from sc where cno is not null/*9*/select max(grade)from sc group by cno having cno=2 /*10*/select avg(grade)from sc group by cno having cno=2 /*11*/select count(*)as'男生人数'from student where ssex='男'/*11*/select count(*)as'女生人数'from student where ssex='女'/*12*/select sname,cname from student,sc,course where student.sno=sc.sno and /doc/2112466993.html,o=http://www.doc /doc/2112466993.html,o/*13*/select sname,cname,grade from student,sc,course wherestudent.sno=sc.sno and /doc/2112466993.html,o=http://www.doc /doc/2112466993.html,o/*14*/select student.sno,sname,grade from student,sc,course where student.sno=sc.sno and /doc/2112466993.html,o=http://www.doc /doc/2112466993.html,o and cname='信息系统'/*15*/select sno,cno from sc x where grade >(select avg(grade)from sc y group by cno having /doc/2112466993.html,o=http://www.doc /doc/2112466993.html,o)/*16*/select cno,avg(grade)as'平均成绩'from sc x group by cno/*17*/create view student_all as selectstudent.sno,sname,ssex,sage,sdept,/d oc/2112466993.html,o,grade,cname fromstudent,sc,course where student.sno=sc.sno and/doc/2112466993.html,o=http://www. /doc/2112466993.html,o/*18*/select sname,cname,grade from student_all。
SQL实验二:数据库查询实验报告
实验二数据库的查询实验实验目的和要求(1)掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解。
(2)熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
(3)熟练掌握数据查询中的分组、统计、计算和组合的操作方法。
实验内容和原理在实验一定义的“学生成绩数据库”中,使用T-SQL 语句完成以下查询:(1 )求计算机系学生的学号和姓名。
(2)求选修了数学的学生学号、姓名和成绩。
(3)求选修01 课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
(4)查找选修课程的平均成绩位于前三名的学生的学号。
(5)查询计算机系的姓刘且单名的学生的信息。
(6)查询至少选修两门课程的学生学号。
(7)查询学生的学号、课程号以及对应成绩与所有学生所有课程的最高成绩的百分比。
(8)查询选修“数据库”课程,且成绩在80 分以上的学生的学号和成绩。
(9)查询所有姓“王”的同学没有选修的课程名。
(请分别用exists和in完成该查询) (10)查询选修了全部课程的学生的姓名。
(请至少写出两种查询语句)(11)求选修了学生“ 95001”所选修的全部课程的学生学号和姓名。
(12)查询每一门课的间接先修课。
(13)列出所有学生所有可能的选课情况。
(14)列出每个学生的学号及选修课程号,没有选修的学生的学号也一并列出。
(15)输出与“张三”同性别并位于同一个系的所有同学的姓名。
(请至少写出两种查询语句)(16)查询至少被两名男生选修的课程名。
(17)对被两名以上学生所选修的课程统计每门课的选课人数。
要求输出课程号和选修人数,查询结果按人数降序排列;若人数相同,按课程号升序排列。
(18)列出选修课程超过 3 门的学生姓名及选修门数。
(19)检索至少选修课程号为01 和03 的学生姓名。
(20)检索至少选修课程“数学”和“操作系统”的学生学号。
(21 )查询‘操作系统'课程的最高分的学生的姓名、性别、所在系(22)查询数据结构的成绩低于操作系统的成绩的学生姓名及该生的这两门课的成绩(23)所有成绩都在70 分以上的学生姓名及所在系。
数据库实验二,sql查询语句
实验二:数据查询语言实验内容SQL数据查询语句:例5-1:(选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。
select sno,sname,sex,sage from student;例5-2:(不选择重复行) 求选修了课程的学生学号。
select distinct cno from sc where cno is not null;例5-3:(选择表中的所有列) 求全体学生的详细信息。
select * from student;例5-4:(使用表达式) 求全体学生的学号、姓名和出生年份。
select sno,sname,birthday from student;例5-5:(使用列的别名) 求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。
select sno as"学号",birthday as"出生年份" from student;例5-6:(比较大小条件) 求年龄大于19岁的学生的姓名和年龄。
select sname,age from studentwhere age>19;例5-7:(比较大小条件) 求计算机系或经济管理系年龄大于18岁的学生的姓名、系和年龄。
select sname,depname ,agefrom student,departmentwhere student.depno=department.depnoand age>18;例5-8:(确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。
select sno,age from studentwhere age in(19,22);例5-9:(确定范围条件) 求年龄不在19岁与22岁之间的学生的学号和年龄。
select sno,age from studentwhere age not in(19,22);例5-10:(确定集合条件) 求在下列各系的学生信息:数学系、计算机系。
实验2SQL语言—SELECT查询操作
实验2SQL语言—SELECT查询操作SELECT查询操作是SQL语言中最常用和最重要的操作之一、SELECT 语句用于从数据库中检索数据,并将其返回给用户。
它可以用于从一个或多个表中选择特定的列,使用条件筛选数据,并对结果进行排序和分组。
SELECT语句的基本语法如下:SELECT列名1,列名2,...FROM表名WHERE条件;其中,列名是要检索的数据列的名称,可以是单个列名或多个列名,使用逗号分隔。
表名是要从中检索数据的表的名称。
条件是可选的,用于过滤不满足条件的行。
如果省略WHERE子句,则SELECT语句将返回表中的所有行。
下面是一些常用的SELECT查询操作的示例:1.检索所有列的数据:SELECT*FROM表名;这将返回表中的所有列的所有行。
2.检索特定列的数据:SELECT列名1,列名2,...FROM表名;这将返回表中指定列的所有行。
3.使用条件过滤数据:SELECT列名1,列名2,...FROM表名WHERE条件;条件可以使用比较运算符(如等于、大于、小于等),逻辑运算符(如AND、OR、NOT等)和通配符(如%和_)进行定义。
4.对结果进行排序:SELECT列名1,列名2,...FROM表名ORDERBY排序列ASC/DESC;ASC表示升序排序,DESC表示降序排序。
默认情况下,数据将按照升序排序。
5.对结果进行分组:SELECT列名1,列名2,...FROM表名GROUPBY列名;GROUPBY子句用于将数据按照指定的列进行分组。
通常与聚合函数(如SUM、AVG、COUNT等)一起使用,以便对每个组的结果进行计算。
6.使用聚合函数计算数据:SELECT聚合函数(列名)FROM表名;聚合函数可以计算一列的总和、平均值、最大值、最小值等。
SELECT查询操作还可以包括其他进阶功能,如子查询、连接表和使用别名等。
子查询用于在主查询中嵌套其他查询,连接表用于将多个表中的数据按照指定的条件进行关联,而别名用于为表和列指定临时名称。
SQL实验二:数据库查询实验报告
SQL实验二:数据库查询实验报告实验二数据库的查询实验一、实验目的和要求(1)掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解。
(2)熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
(3)熟练掌握数据查询中的分组、统计、计算和组合的操作方法。
二、实验内容和原理在实验一定义的“学生成绩数据库”中,使用T-SQL语句完成以下查询:(1)求计算机系学生的学号和姓名。
(2)求选修了数学的学生学号、姓名和成绩。
(3)求选修01课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
(4)查找选修课程的平均成绩位于前三名的学生的学号。
(5)查询计算机系的姓刘且单名的学生的信息。
(6)查询至少选修两门课程的学生学号。
(7)查询学生的学号、课程号以及对应成绩与所有学生所有课程的最高成绩的百分比。
(8)查询选修“数据库”课程,且成绩在80分以上的学生的学号和成绩。
(9)查询所有姓“王”的同学没有选修的课程名。
(请分别用exists和in完成该查询)(10)查询选修了全部课程的学生的姓名。
(请至少写出两种查询语句)(11)求选修了学生“*****”所选修的全部课程的学生学号和姓名。
(12)查询每一门课的间接先修课。
(13)列出所有学生所有可能的选课情况。
(14)列出每个学生的学号及选修课程号,没有选修的学生的学号也一并列出。
(15)输出与“张三”同性别并位于同一个系的所有同学的姓名。
(请至少写出两种查询语句)(16)查询至少被两名男生选修的课程名。
(17)对被两名以上学生所选修的课程统计每门课的选课人数。
要求输出课程号和选修人数,查询结果按人数降序排列;若人数相同,按课程号升序排列。
(18)列出选修课程超过3门的学生姓名及选修门数。
(19)检索至少选修课程号为01和03的学生姓名。
(20)检索至少选修课程“数学”和“操作系统”的学生学号。
实验二 sql查询
实验二数据查询实验一、学时2学时二、实验类型综合三、实验目的熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL 语句的各种形式;加深理解关系运算的各种操作(尤其的关系的选择,投影,连接和除运算)四、实验方法及步骤1.在表S、C、SC上进行简单查询;2.在表S、C、SC上进行连接查询;3.使用聚合函数的查询;4.对数据的分组查询;5.对数据的排序查询。
五、实验内容1.创建学生-课程数据库2.创建学生关系表S :5.将以上创建表S、C、SC的SQL命令以.SQL文件的形式保存在磁盘上。
SNO SName SSex SAge SdeptTX0214 张名M 23 信息系TX0215 李军M 21 外语系TX0216 张玲 F 20 经贸系TX0217 刘放M 19 信息系TX0218 袁齐M 18 理学系TX0219 李冰冰 F 17 经贸系TX0220 云 F 24 建筑系CNO CName Ctea CPno CreditA11 代数李C2 2C1 高数张彤C3 3C12 办公自动周C3 4化C2 英语李名春 2C3 数字信号周名c4 3C4 网络袁名 3SNO CNO gradeTX0214 C1 76TX0214 C2 56TX0214 C3 76TX0215 C1 86TX0215 C2 78TX0215 C3 76TX0216 C1 75TX0216 C2 76TX0217 C1 78TX0218 C1 56TX0218 C3 67TX0218 C4 45TX0219 C1 89TX0219 C2 34TX0219 C4 67TX0220 A11 78TX0221 A11在表S,C,SC上完成以下查询:1.查询学生的基本信息;2.查询“信息系”学生的基本信息;3.查询“信息系”学生年龄不在19到21之间的学生的学号、姓名;4.找出最大年龄;5.找出“信息系”年龄最大的学生,显示其学号、姓名;6.找出各系年龄最大的学生,显示其学号、姓名;7.统计“信息系”学生的人数;8.统计各系学生的人数,结果按升序排列;9.按系统计各系学生的平均年龄,结果按降序排列;10.查询每门课程的课程名;11.查询无先修课的课程的课程名和学时数;12.统计无先修课的课程的学时总数;13.统计每位学生选修课程的门数、学分及其平均成绩;14.统计选修每门课程的学生人数及各门课程的平均成绩;15.找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排列;16.查询选修了“1”或“2”号课程的学生学号和姓名;17.查询选修了“1”和“2”号课程的学生学号和姓名;18.查询选修了课程名为“高数”且成绩在60分以下的学生的学号、姓名和成绩;19.查询每位学生选修了课程的学生信息(显示:学号,姓名,课程号,课程名,成绩);20.查询没有选修课程的学生的基本信息;21.查询选修了3门以上课程的学生学号;22.查询选修课程成绩至少有一门在80分以上的学生学号;23.查询选修课程成绩均在80分以上的学生学号;24.查询选修课程平均成绩在80分以上的学生学号;25.在表SC中插入某个学生的选课信息(如:学号为“95001”,课程号为“c123”,成绩待定)26.将“计算机”系全体学生的成绩置零;27.把选修了课程名为“数字信号”的学生的成绩提高10%28.把选修了“C2”号课程,且成绩低于该门课程的平均成绩的学生的成绩提高5%;29.把选修了“C2”号课程,且成绩低于该门课程的平均成绩的学生成绩删除掉。
实验2、SQL的数据查询
实验2、SQL的数据查询实验2、SQL的数据查询2.1 实验目的熟悉SQL语句的数据查询语言,能够SQL语句对数据库进行单表查询、连接查询、嵌套查询、集合查询和统计查询。
2.2 实验内容实验内容主要是对数据库进行查询操作,包括如下四类查询方式:〔1〕单表查询? 查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。
? 使用DISTINCT保存字消除重复行。
? 对查询结果排序和分组。
? 集合分组使用集函数进行各项统计。
〔2〕连接查询? 笛卡儿连接和等值连接。
? 自连接。
? 外连接? 复合条件连接。
? 多表连接。
〔3〕嵌套查询? 通过实验验证对子查询的两个限制条件。
? 体会相关子查询和不相关子查询的不同。
? 考察四类谓词的用法,包括:第一类,IN、NOT IN;第二类,带有比拟运算符的子查询;第三类,SOME、ANY或ALL谓词的子查询,查询最大值和最小值;第四类,带有EXISTS谓词的子查询,实现“所有〞等情况〔如王宏的“所有〞课程,“所有〞女生选修的课程〕〔4〕集合运算? 使用保存字UNION进行集合或运算。
? 采用逻辑运算符AND或OR来实现集合交和减运算。
2.3 实验步骤以University_Mis数据库为例,该数据库中有四张如实验1,其中Score是每门课的考试成绩,Scredit是学生所有考试合格课程所获得的积分总数,Ccredit每门课程的学分数。
在数据库中,存在这样的联系:学生可以选择课程,一个课程对应一个教师。
在表Reports中保存学生的选课记录和考试成绩。
请先输入如下符合条件的元组后,再对数据库进行有关的查询操作:图1.1、Students表图1.2、Teachers表图1.3、Courses表图1.4、Reports表〔1〕查询性别为“男〞的所有学生的名称并按学号升序排列。
〔2〕查询学生的选课成绩合格的课程成绩,并把成绩换算为积分。
积分的计算公式为:[1+(考试成绩-60)*0.1]*Ccredit。
数据库应用 实验报告2 查询操作及SQL语言应用
实验报告二 查询操作及SQL 语言应用实验类型:基本学时:4(分两次完成)班级:无机非(2) 日期:3月24日请输入你的班级和做实验的日期。
按照《数据库技术及应用——习题与实验指导》第一部分实验指导中“实验六 查询操作”和“实验二 SQL 语言应用”的实验内容,边完成各项实验操作,边按要求填写该实验报告。
一、实验目的1. 了解查询类型。
2. 掌握创建单表和多表选择查询的操作方法。
3. 掌握创建生成表查询的操作方法。
4. 掌握创建更新查询的操作方法。
5. 掌握创建SQL 查询的操作方法。
二、实验报告内容1. 打开自备优盘保存位置的“学号 姓名 英才学校数据库”,参照P.31图1-6-11~图1-6-14的表格内容,分别给“学号 姓名 英才学校数据库”数据库表中“学院”、“系”、“班级”和“学生”表输入数据(其中必须有自己院、系和班级的真实信息的记录),并将四张“表”粘贴到此:姓名:潘红星 错误!未找到引用源。
学号:1002010211错误!未找到引用源。
并将实验操作结果粘贴到此:级_学生查询”),并将实验操作结果粘贴到此:4.预习P.7“实验二SQL语言应用”中实验2-9~实验2-18的操作提示,参照P.33“实验六查询操作”中实验6-3~实验6-12的操作提示,使用查询“设计视图”创建SQL查询,并将定义中的每一个SQL编辑器窗口和查询结果的窗口粘贴到此:“查询1”(SQL编辑窗口)检索每位学生的姓名及生日“查询1”(选择查询窗口)检索出每位学生的姓名及生日“查询2”(SQL编辑窗口)检索男、女学生的人数“查询2”(选择查询窗口)检索出男、女学生的人数日“查询3”(SQL编辑窗口)检索每位学生所在班级“查询3”(选择查询窗口)检索出每位学生所在班级“查询4”(SQL编辑窗口)检索“软件工程”专业的全体学生“查询4”(选择查询窗口)检索出“软件工程”专业的全体学生“查询5”(SQL编辑窗口)检索每位学生所在学院、系和班级“查询5”(选择查询窗口)检索出每位学生所在学院、系和班级“查询6”(SQL编辑窗口)统计“J101”系全体男同学的人数“查询6”(选择查询窗口)统计出“J101”系全体男同学的人数“查询7”(SQL编辑窗口)检索男学生数3人及3人以上的班级“查询7”(选择查询窗口)检索出男学生数3人及3人以上的班级“查询8”(SQL编辑窗口)检索“计算机”学院院长姓名和电话以及系主任“查询8”(选择查询窗口)检索出“计算机”学院院长姓名和电话以及系主任“查询9”(SQL编辑窗口)检索“计算机”学院每位学生信息“查询9”(选择查询窗口)检索出“计算机”学院每位学生信息“查询10”(SQL编辑窗口)检索每个学生所选课程的成绩《信息技术应用》电子实验报告二 查询操作及SQL 语言应用将此电子实验报告以自己的学号姓名和实验序号为文件名(如:070000001张三 实验二)保存后上传到FTP 服务器“查询10” (选择查询窗口)检索出每个学生所选课程的成绩三、保存和上传实验报告注意将“学号 姓名 英才学校数据库”数据库文件保存在自备优盘的相应文件夹中,后续实验将反复应用。
数据库及其应用实验代码sql
Sy4create view View1asselect worker.职工号,worker.姓名,部门编号,工资from worker join salaryon worker.职工号=salary.职工号where 日期='2004-02-03'create view View2asselect 职工号,姓名,avg(工资) as 平均工资from salary group by 职工号,姓名create view View3asselect 部门名称,avg(工资) as 平均工资from depart join worker join salaryon worker.职工号=salary.职工号on depart.部门编号=worker.部门编号group by 部门名称sy3.SELECT year(getdate())-year([出生日期]) as 年龄FROM worker2.select 部门编号,count(*) as 人数from worker where 党员否= '是' group by 部门编号3.select 姓名,工资from salary where 日期= '2001-04-04' order by 工资desc4.select top 5 * from salary where 日期= '2001-04-04' order by 工资5.select 职工号,姓名,avg(工资) from salary group by 职工号,姓名6.select salary.职工号,salary.姓名,部门编号,salary.工资from worker join salaryon worker.职工号= salary.职工号where 日期= '2001-04-04'order by 部门编号7.select 部门名称,avg(工资) from depart join worker join salaryon worker.职工号= salary.职工号on depart.部门编号= worker.部门编号group by 部门名称8.select 部门名称,avg(工资) from depart join worker join salaryon worker.职工号= salary.职工号on depart.部门编号= worker.部门编号group by 部门名称having avg(工资)>12009.select worker.职工号,worker.姓名,部门名称,日期,工资from depart join worker join salary on worker.职工号= salary.职工号on depart.部门编号= worker.部门编号where 工资= (select max(工资) from salary)10.select distinct 职工号,姓名from salary where 职工号in(select 职工号from salary group by 职工号having avg(工资)<(select avg(工资) from salary))11.select * from worker where 部门编号= (select 部门编号from worker where 姓名= '刘欣')12.insert into depart(部门编号,部门名称) values ('6','公关') select * from depart13.update depart set depart.部门名称= '销售处'where 部门编号= '5' select * from depart14.delete from depart where 部门编号= '5' select * from depart5.1declare @num int,@sname char(20)declare depart_cursor cursor for select 部门编号,部门名称from depart order by 部门名称open depart_cursorfetch from depart_cursor into @num,@snamewhile @@fetch_status = 0beginprint str(@num)+@snamefetch from depart_cursor into @num,@snameendclose depart_cursordeallocate depart_cursor5.2declare @work datetime,@num int,@sname char(20),@sex char(2),@dang char(2),@bumen int,@csrq datetimedeclare worker_cursor cursor for select 参加工作,职工号,姓名,性别,党员否,部门编号,出生日期from workeropen worker_cursorfetch from worker_cursor into @work,@num,@sname,@sex,@dang,@bumen,@csrqwhile @@fetch_status = 0beginprintconvert(varchar(30),@work,111)+str(@num)+@sname+@sex+@dang+str(@bumen)+convert(var char(30),@csrq,111)fetch from worker_cursor into @work,@num,@sname,@sex,@dang,@bumen,@csrqendclose worker_cursordeallocate worker_cursor6.1create procedure st_proc;1@x float(8)=null,@y float(8)=nullasif (@x is null or @y is null)beginprint'输入工资范围'return(1)endelsebeginselect depart.部门编号,部门名称,worker.职工号,worker.姓名,工资from depart join worker join salary on worker.职工号=salary.职工号on depart.部门编号=worker.部门编号where 工资between @x and @yreturn(0)endgoexecute st_proc;1 1000,1500create procedure st_proc;5@x float(8)=null,@y float(8)=nullasif (@x is null or @y is null)beginprint'输入工资范围'return(1)endelsebeginselect depart.部门编号,部门名称,worker.职工号,worker.姓名,工资from depart join worker join salary on worker.职工号=salary.职工号on depart.部门编号=worker.部门编号where 工资between @x and @yreturn(0)endgoexecute st_proc;5 10006.2create procedure st_proc;3@num char(4) = nullasif(@num is null)select * from workerelseselect * from worker where 职工号=@numgoexecute st_proc;3 '1002'create procedure st_proc;4@num char(4) = nullasif(@num is null)select * from workerelseselect * from worker where 职工号=@numgoexecute st_proc;47.1create trigger depart_d_trigger111on depart for deleteasprint'删除成功!'update workerset abc=nullwhere abc=(select 部门编号from deleted)delete from depart where 部门名称='人事处'select * from worker7.2create trigger worker_ins_triggeron worker for insertasif(select count(*) from depart w,inserted i where w.部门编号=i.部门编号)=0 beginrollback transactionprint '非法部门号'endinsert into worker .....select * from worker7.3create trigger worker_upd_triggeron worker for updateasdeclare @num1 char(10),@num2 char(10)if update (部门编号)beginif(select count(*) from worker w,inserted i where w.部门编号=i.部门编号)=0beginrollback transactionprint '非法部门号'endelsebeginselect @num1=部门编号from depart where 部门名称='市场部'select @num2=部门编号from insertedif @num1=@num2update salary set 工资= 工资*1.15endendupdate worker set 部门编号=?where 职工号='?'select * from workerselect * salary实验五declare cursor_depart1 cursorfor select 部门编号,部门名称from depart order by 部门编号declare @n char(10),@m char(10)open cursor_depart1fetch from cursor_depart1 into @n,@mwhile @@fetch_status=0beginprint @n+@mfetch from cursor_depart1 into @n,@mendclose cursor_depart1deallocate cursor_depart1declare cursor_depart2 cursorfor select 部门名称,职工号,姓名,性别,出生日期,党员否,参加工作from worker,depart where worker.部门编号=depart.部门编号order by depart.部门编号declare @dname char(8),@wnumber char(4),@wname char(8),@wsex char(2),@wbirthday datetime,@wtf bit,@waw datetimeopen cursor_depart2fetch from cursor_depart2 into @dname,@wnumber,@wname,@wsex,@wbirthday,@wtf,@waw while @@fetch_status=0beginPrint @dname+@wnumber+' '+@wname+@wsex+' '+convert(varchar(30),@wbirthday,111)+str(@wtf)+' '+convert(varchar(30),@waw,111)fetch from cursor_depart2 into @dname,@wnumber,@wname,@wsex,@wbirthday,@wtf,@wawendclose cursor_depart2deallocate cursor_depart2declare @n char(10),@m char(10)declare @wnumber char(4),@wname char(8),@wsex char(2),@wbirthday datetime,@wtf bit,@waw datetimedeclare cursor_depart1 cursorfor select 部门编号,部门名称from depart order by 部门编号open cursor_depart1fetch from cursor_depart1 into @n,@mwhile @@fetch_status=0beginprint '部门编号:'+@n+' '+'部门名称:'+@m+'的全体员工信息'print '职工号'+' '+'职工姓名'+' '+'性别'+' '+'出生日期'+' '+'党员否'+' '+'参加工作' declare cursor_depart2 cursorfor select 职工号,姓名,性别,出生日期,党员否,参加工作from worker where 部门编号=@n open cursor_depart2fetch from cursor_depart2 into @wnumber,@wname,@wsex,@wbirthday,@wtf,@wawwhile @@fetch_status=0beginPrint @wnumber+' '+@wname+' '+@wsex+' '+convert(varchar(30),@wbirthday,111)+str(@wtf)+' '+convert(varchar(30),@waw,111) fetch from cursor_depart2 into @wnumber,@wname,@wsex,@wbirthday,@wtf,@wawendprint ' 'close cursor_depart2deallocate cursor_depart2fetch from cursor_depart1 into @n,@mendclose cursor_depart1deallocate cursor_depart1。
实验二 写出VFP数据库中相关SQL查询语句
实验一Access 数据库操作班级:学号:姓名:【实验目的】:1. 掌握Visual FoxPro数据库中的SQL查询语句书写规则;2. 用select数据查询、create定义表、视图及用alter修改数据。
【实验环境】:硬件:计算机软件:windows XP操作系统和Visual FoxPro 6.0数据库管理系统。
【实验要求】:1、根据题目要求完成相关命令操作;2、在“操作依据”处写出SQL查询的命令结构和功能;3、将完整的SQL命令写到“SQL操作命令”中的相应位置。
4、本实验完成后,请发送到邮箱:wenqinhui@中作为本学期的第二次作业。
【操作依据】:1、单表查询Select <查询内容> from <表> where <查询条件> order by <排序字段> Asc|desc group by <分组字段> having <分组条件>2、连接查询(多表)(1) Select <查询内容> from <表1,表2……> where <连接条件> and <查询条件> order by <排序字段> Asc|desc group by <分组字段> having <分组条件>(2) Select <查询内容> from <表1 join 表2 join 表3……>;on 表1.XX=表2.XX;on 表2.YY=表3.YY;where <查询条件> order by <排序字段> Asc|desc group by <分组字段>;having <分组条件>3、插入记录(1)向指定表中插入记录的命令格式:Insert into <表>(字段名1,字段名2,……) values(字段值1,字段值2,……)(2)从指定数据组中插入记录值的命令格式:Insert into <表> from array <数据组名>4、更新数据Update <表> set <字段>=修改后的字段值 where <更新条件>5、用命令创建数据库和表建立数据库:Create database <数据库名>建立表:Create table|dbf <表名>(字段及类型)Check <有效性规则> [Error <提示信息>]Default <默认值>Primary key <主索引>Foreign key <普通索引> TAG <外表主索引字段> references <外部表名> 【SQL语句命令】:1、用SQL命令向“客户”表中插入一条记录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
)
)
);
Q23. List the names of managers who have at least one dependent.
查询至少有一个家属的部门经理姓名。
SELECT FNAME,LNAME FROM EMPLOYEE
WHERE SSN IN (
ORDER BY FNAME ASC;
Q2. 查询不重复的员工工资值。
SELECT DISTINCT SALARY FROM EMPLOYEE
Q3. 查询没有直接上司的员工姓名。
SELECT FNAME,LNAME FROM EMPLOYEE
WHERE SUPERSSN IS NULL;
查询至少参与了所有John Smith参与项目的员工姓名。
SELECT FNAME,LNAME FROM EMPLOYEE
WHERE SSN IN (
SELECT ESSN FROM WORKS_ON
WHERE PNO=ANY (
SELECT PNUMBER FROM PROJECT
Q16. Select all combinations of EMPLOYEE SSN and DEPARTMENT DNAME in the Company database.
查询Company数据库中所有员工SSN与DNAME(部门名称)的组合。
SELECT E.SSN,D.DNAME
WHERE SALARY>=30000 GROUP BY D.DNAME
HAVING COUNT(SALARY)>=2;
Q18. Retrieve the names of all employees who do not work on any project controlled by department number 5.
对于每个部门,列出部门名称以及此部门员工的平均工资。
SELECT D.DNAME,AVG(SALARY)AS 平均工资
FROM EMPLOYEE E JOIN DEPARTMENT D ON D.DNUMBER=E.DNO
GROUP BY D.DNAME;
Q15. For each employee, retrieve the employee’s first and last name and the first and last name of his or her immediate supervisor.
SELECT MGRSSN FROM DEPARTMENT
WHERE MGRSSN IN (
SELECT ESSN FROM DEPENDENT
)
);
Q24. 查询有两个或以上隶属员工的部门名称及其“工资大于等于30000员工”总数。
SELECT DNAME,
WHERE PNUMBER IN (
SELECT PNO FROM WORKS_ON
WHERE ESSN IN (
SELECT SSN FROM OYEE
WHERE FNAME='JOHN' AND LNAME='SMITH'
Q8. 从Employee表中检索出员工的FNAME、LNAME、SSN、SALARY等字段(其中SALARY需换算成人民币,汇率假定为1美元=8人民币元),并分别加上“名”、“姓”、“社会保险号”、“人民币工资”的标题。SELECT FNAME AS 名,LNAME AS 姓,
SSN AS 社会保险号,SALARY*8 AS 人民币工资
FROM EMPLOYEE E JOIN DEPARTMENT D ON E.DNO=D.DNUMBER;
Q17. 查询有两个或以上“工资大于等于30000员工”的部门名称。
SELECT D.DNAME
FROM EMPLOYEE E JOIN DEPARTMENT D ON D.DNUMBER=E.DNO
对于每个员工,查询其姓名以及他/她的直接上司的姓名。
SELECT EE.FNAME+'`'+EE.LNAME AS 员工姓名,
ES.FNAME+'`'+ES.LNAME AS 直接上司
FROM EMPLOYEE EE JOIN EMPLOYEE ES ON EE.SUPERSSN=ES.SSN;
WHERE SSN IN (
SELECT ESSN FROM WORKS_ON
WHERE PNO=ANY (
SELECT PNUMBER FROM PROJECT
WHERE DNUM=4
)
);
Q22. Retrieve the names of employees who work on all the projects that ‘John Smith’ works on.
SELECT PNAME,SUM(HOURS) AS "此项目总时间"
FROM PROJECT P JOIN WORKS_ON W ON P.PNUMBER=W.PNO
GROUP BY PNAME
Q14.For each department, retrieve the department name and the average salary of all employees working in that department.
SELECT FNAME, LNAME, ADDRESS
FROM EMPLOYEE
WHERE DNO=(
SELECT DNO FROM DEPARTMENT
WHERE DNAME= ’Research’
)
Q10. 对于所有位于Stafford的项目,查询项目的编号、项目负责部门编号以及该部门经理的姓、地址、生日。SELECT P.PNUMBER, P.DNUM, E.LNAME, E.ADDRESS, E.BDATE
FROM PROJECT P JOIN WORKS_ON W ON P.PNUMBER=W.PNO
JOIN EMPLOYEE E ON W.ESSN=E.SSN
WHERE P.PNAME='PRODUCTX'
AND W.HOURS>10 AND E.DNO='5';
Q13. 对于每个项目,列出项目名称以及所有员工在此项目上工作的总时间。
Q6. 从Employee表中查询出部门号为4或者5的员工资料。SELECT * FROM EMPLOYEE
WHERE DNO=4 OR DNO=5或
SELECT * FROM EMPLOYEE
WHERE DNO IN(4,5)
Q7. 从Employee表中查询出LNAME中含有字母o的员工资料。SELECT * FROM EMPLOYEE WHERE LNAME LIKE ‘%O%’
SELECT E.SSN FROM EMPLOYEE E
JOIN DEPENDENT D ON E.SSN=D.ESSN
GROUP BY E.SSN
HAVING COUNT(ESSN)>2;
Q12. 查询在ProductX项目上每周工作时间超过10小时的部门5的员工姓名。 SELECT E.FNAME, SELECT E.FNAME,E.LNAME
(SELECT COUNT(*) FROM EMPLOYEE
WHERE SALARY>=30000 AND DNO=E.DNO)AS 总数
FROM EMPLOYEE E JOIN DEPARTMENT ON E.DNO=DNUMBER
GROUP BY DNAME,DNO HAVING COUNT(*)>=2;
SELECT FNAME,LNAME FROM EMPLOYEE
WHERE SALARY>ALL (
SELECT SALARY FROM EMPLOYEE
WHERE DNO=5
);
Q20. Retrieve the names of all employees who work on every project.
查询参与了所有项目的员工姓名。
SELECT FNAME,LNAME FROM EMPLOYEE
WHERE SSN IN (
SELECT ESSN FROM WORKS_ON
WHERE PNO=ALL (
SELECT PNAME FROM PROJECT
)
);
Q25. List the names of all employees with two or more dependents.
查询有两个或以上家属的员工姓名。
SELECT FNAME,LNAME FROM EMPLOYEE
Q21. Find the names of employees who work on all the projects controlled by department number 4.
查询至少参与了所有部门4控制项目的员工姓名。
SELECT FNAME,LNAME FROM EMPLOYEE
FROM PROJECT P JOIN DEPARTMENT D ON P.DNUM =D.NUMBER
JOIN EMPLOYEE E ON D.MGRSSN=E.SSN WHERE PLOCATION =’Stafford’
Q11.查询有两个或以上家属的员工姓名(此题较难,若不能完成者可只查询出员工的SSN而不是姓名)。