实验4 SQL语句之简单查询
实验4:简单查询语句及操纵语句(1)

实验四数据简单查询及操纵语句【实验目的与要求】1、熟练掌握SELECT 语句的基本语法格式;2、熟练掌握使用SQL语句进行单表查询,掌握GROUP BY子句、HA VING 子句和集函数;3、熟练掌握使用SQL标准语句和T-SQL扩展语句进行连接查询。
【实验内容】4.0实验准备本实验将用到实验2中的CPXS数据库、实验3中数据库EDUC数据库以及相应的表及数据,若上述数据库及表尚未创建,或数据尚未录入,则请先完成之。
4.1在实验2中的产品销售数据库CPXS数据库完成以下简单查询⏹查询各种产品的产品编号、产品名称和价格。
写出对应SQL语句并给出查询结果:select 产品编号,产品名称,价格from CP⏹查询地区在“南京”的客户编号和客户名称,结果中各列的标题分别指定为:Customer_id和Customer_name。
写出对应SQL语句并给出查询结果:select 客户编号 Customer_id,客户名称 Customer_nameFROM XSSWHERE 地区='南京'⏹求各产品编号、名称和产品总值。
写出对应SQL语句并给出查询结果:select 产品编号,产品名称,价格*库存量产品总值from CP⏹查询至少购买了至少一种产品的客户编号(不重复)。
写出对应SQL语句并给出查询结果:select distinct 客户编号from CPXSBwhere 数量>=1⏹查询价格在1000-2000的产品信息,并依价格由高到低的顺序排序。
(请使用Between…and和算术比较运算符分别实现)写出对应SQL语句并给出查询结果:(1)select 产品名称from CPwhere 价格 between 1000 and 2000order by 价格 desc(2)select 产品名称from CPwhere 价格>= 1000 and 价格<= 2000order by 价格 desc⏹查询产品名称含有”空调”二字的产品情况。
实验4 SQL的聚集函数查询与创建视图

北京林业大学2013学年—2014学年第1学期数据库原理与应用实验报告书专业:信息管理与信息系统班级:姓名:学号:实验地点:计算机中心机房任课教师:实验题目:实验4 SQL的聚集函数查询与创建视图实验环境:Windows 200X Server、SQL Server 200X实验目的、内容、实现方法、实验结果及结论分析等:在查询分析器中,使用SELECT语句完成下面的操作:1. 聚集函数查询与分组查询①求取工学院(DNO =‘02’,后同)的学生平均年龄use SDBselect avg(age) as 平均年龄from swhere dno='02【分析】此处是用聚集函数进行查询,函数为avg,表达式为age,表示求所有age的平均数。
②求学号为0103的学生的总分和平均分select sum(grade) as 总分,avg(grade) as 平均分from scwhere sno='0103'【分析】用sum和avg函数进行查询,筛选的条件为学生的学号为0103,用sum和avg 求出该学生的总成绩和平均成绩再输出。
③求工学院的最高分和最低分以及最高最低分之间相差多少分select max(grade) as 最高分,min(grade) as 最低分,max(grade)-min(grade) as 最高分与最低分之差from scwhere sno in (select sno from s where dno ='02')【分析】此处用了max、min函数查询,在s表中找到学生信息中学院号为02(工学院)的学生,筛选出来,再在这些学生所有的成绩中查找最高分和最低分并输出,此处用了一个子查询。
④查询出选修课程至少等于三门,并且每门课程成绩都大于等于70分的学生的学号、姓名、平均成绩、标准差和选课门数,结果按平均成绩降序排序。
select s.sno as 学号,s.sn as 姓名,avg(grade) as 平均分,min(grade) as 最低分,count(grade) as 选课门数,stdevp(grade) as 标准差from sjoin sc on s.sno=sc.snogroup by s.sno,s.sn having count(*)>=3 and min(grade)>=70order by avg(grade) desc【分析】此处使用了聚集函数查询和分组查询,stdevp函数的作用使计算表达式所有值得标准差,使用“having”短语制定分组筛选条件,最终只输出满足指定条件的组,此处having 限定的条件是筛选出选课门数大于三门,并且最低分高于70分的学生。
通用SQL数据库查询语句范例

通⽤SQL数据库查询语句范例通⽤SQL数据库查询语句范例(多表查询)作者:谢作如⼀、简单查询简单的Transact-SQL查询只包括选择列表、FROM⼦句和Where⼦句。
它们分别说明所查询列、查询的表或视图、以及搜索条件等。
例如,下⾯的语句查询testtable表中姓名为“张三”的nickname字段和email字段。
Select nickname,email FROM testtable Where name='张三'(⼀) 选择列表选择列表(select_list)指出所查询列,它可以是⼀组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。
1、选择所有列例如,下⾯语句显⽰testtable表中所有列的数据: Select * FROM testtable2、选择部分列并指定它们的显⽰次序查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。
例如: Select nickname,email FROM testtable3、更改列标题在选择列表中,可重新指定列标题。
定义格式为: 列标题=列名 列名列标题如果指定的列标题不是标准的标识符格式时,应使⽤引号定界符,例如,下列语句使⽤汉字显⽰列标题: Select 昵称=nickname,电⼦邮件=email FROM testtable4、删除重复⾏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语句查询及与查询相关的表或视图。
SQL查询语句

实验三、四 SQL语言应用一、实验目的:熟练掌握基本表的定义、删除与修改,为后继学习作准备。
二、实验属性(验证性)1、了解并掌握SQL查询分析器及企业管理器的使用;2、掌握基本表的定义、删除与修改。
三、实验仪器设备及器材1.安装有windows操作系统计算机。
2.安装有Oracle11g和SQL Server的计算机。
3.安装有Visual Studio .net和Java编译器(eclipse、Netbean等)的编译器。
4.计算机具备网络环境。
四、实验要求(预习、实验前、实验中、实验后等要求)1.预习教材第三章,熟悉SQL语句。
2.熟悉.net、Java、PowerBuilder和Delphi 开发环境。
3.能够熟练掌握.net、Java、PowerBuilder和Delphi环境下的数据库的编程。
4.掌握单表查询语句的一般格式。
;5.掌握单表无条件、有条件查询及查询结果排序与分组。
6.掌握多表连接、嵌套和集合查询语句的一般格式及各种使用方法。
五、实验原理SQL语言应用。
六、实验步骤:(1)启动Oracle的SQL Developer或者SQL Plus,或者SQL Server 查询分析器;(2)对于Oracle11g的SQL Plus需要进行登录,对于Oracle11g的SQL Developer需要进行建立连接。
如果选择SQL SERVER查询分析器,需要选择数据库;A、单表查询无条件查询例2.1 查询全体学生的详细记录。
select *from student;例2.2 查询全体学生的姓名(Sname)、学号(Sno)、所在系(Sdept)。
select Sname as 姓名,Sno as 学号,Sdept as 系别from student;例2.3 查询全体学生的姓名(Sname)、出生年份及学号(Sno)。
select Sname as 姓名,(2012-Sage) as 出生年份,Sno as 学号from student;例2.4 查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。
数据库原理及应用实验指导★---实验4_SQL语言——SELECT查询操作[1]
![数据库原理及应用实验指导★---实验4_SQL语言——SELECT查询操作[1]](https://img.taocdn.com/s3/m/3c9fb119fad6195f312ba66a.png)
实验4 SQL 语言——SELECT 查询操作1实实验验44 S S Q Q L L 语语言言————S S E E L L E E C C T T 查查询询操操作作实验示例实验示例中要使用包括如下三个表的“教学管理”数据库JXGL :(1)学生表Student ,由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,记作:Student(Sno,Sname,Ssex,Sage,Sdept),其中主码为Sno 。
(2)课程表Course ,由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,记作:Course(Cno,Cname,Cpno,Ccredit),其中主码为Cno 。
(3)学生选课SC ,由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,记作:SC(Sno,Cno,Grade),其中主码为(SNO,CNO)。
1、在SQL SERVER 查询分析器或企业管理器(以具有相应操作权限的某用户登录)的SQL 操作窗口中执行如下命令创建数据库。
需要说明的是不同数据库系统其创建数据库的命令或方式有所不同。
CREATE DATABASE JXGL2、刷新数据库目录后,选择新出现的JXGL 数据库,在SQL 操作窗口中,创建Student 、SC 、Course 三表及表记录插入命令如下:Create Table Student( Sno CHAR(5) NOT NULL PRIMARY KEY(Sno),Sname VARCHAR(20),Sage SMALLINT CHECK(Sage>=15 AND Sage<=45),Ssex CHAR(2) DEFAULT '男' CHECK (Ssex='男' OR Ssex='女'),Sdept CHAR(2));Create Table Course( Cno CHAR(2) NOT NULL PRIMARY KEY(Cno),Cname VARCHAR(20),Cpno CHAR(2),Ccredit SMALLINT);Create Table SC( Sno CHAR(5) NOT NULL CONSTRAINT S_F FOREIGN KEY REFERENCES Student(Sno), Cno CHAR(2) NOT NULL,Grade SMALLINT CHECK ((Grade IS NULL) OR (Grade BETWEEN 0 AND 100)),PRIMARY KEY(Sno,Cno),数据库原理与应用实验指导2FOREIGN KEY(Cno) REFERENCES Course(Cno));INSERT INTO Student VALUES('98001','钱横',18,'男','CS');INSERT INTO Student VALUES('98002','王林',19,'女','CS');INSERT INTO Student VALUES('98003','李民',20,'男','IS');INSERT INTO Student VALUES('98004','赵三',16,'女','MA');INSERT INTO Course VALUES('1','数据库系统', '5',4);INSERT INTO Course VALUES('2','数学分析',null ,2);INSERT INTO Course VALUES('3','信息系统导论','1',3);INSERT INTO Course VALUES('4','操作系统原理','6',3);INSERT INTO Course VALUES('5','数据结构','7',4);INSERT INTO Course VALUES('6','数据处理基础',null,4);INSERT INTO Course VALUES('7','C 语言','6',3);INSERT INTO SC VALUES('98001','1',87);INSERT INTO SC VALUES('98001','2',67);INSERT INTO SC VALUES('98001','3',90);INSERT INTO SC VALUES('98002','2',95);INSERT INTO SC VALUES('98002','3',88);[例1] 查考试成绩大于等于90的学生的学号。
实验四表数据的简单查询

实验四表数据的简单查询实验学时:1学时实验类型:设计实验要求:必做一、实验目的掌握SELECT语句的基本用法。
掌握计算列的用法。
掌握WHERE子句中各类查询条件的写法。
二、实验内容1、在连接“MySQL”中新建数据库“world”,并将数据库文件world_inno.sql导入到该数据库之中2、查询world数据库的country表中的国名(Name)、洲名(Continent)和地区(Region)。
步骤:点击“新建查询”,输入以下代码,点击执行USE worldSELECT NAME,Continent,Region FROM country;运行结果如图2.1:图2.13、从world数据库的city表中搜索返回前20条的数据。
步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT * FROM city LIMIT 0,20;其中,“LIMIT M,N”中的M表示从第M条(不包括M)开始结果如图3.1:图3.14、使用WHERE 子句从world 数据库的country表中检索出所有领土面积超过一百万平方公里的国家名称(Name)、洲名(Continent)以及领土面积(SurfaceArea)。
步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT NAME,Continent,SurfaceAreaFROM countryWHERE SurfaceArea > 1000000;结果如图4.1:图4.15、查询在world数据库的country表中Name以字母C开头的国家的洲名Continent,地区Region。
步骤:点击“新建查询”,输入以下代码,点击执行USE world;SELECT Name,Continent,RegionFROM countryWHERE NAME like 'C%';运行结果如图5.1:图5.16、查询world数据库Country表中所有国家的Name和Condinent,并按生日SurfaceArea 从小到大进行排列。
SQLSERVER2008实用教程实验参考答案(实验4)
SQLSERVER2008实用教程实验参考答案(实验4)实验4 数据库的查询和视图一、SELECT语句的基本使用1. 查询Employees表中所有数据2. 查询Employees表中指定字段数据3. 查询Employees表中的部门号和性别,要求使用Distinct消除重复行4. 使用WHERE子句查询表中指定的数据查询编号为’000001’的雇员的地址和电话查询月收入高于2000元的员工号码查询1970年以后出生的员工的姓名和住址5. 使用AS子句为表中字段指定别名查询Employees表中女雇员的地址和电话,并将列标题显示为地址和电话查询Employees表中男雇员的姓名和出生日期,并将列标题显示为姓名和出生日期6. 使用使用CASE子句查询Employees表中员工的姓名和性别,要求Sex值为1时显示“男”,为0时显示“女”查询Employees表中员工的姓名、住址和收入水平,2000元以下显示为低收入,2000~3000地显示为中等收入,3000元以上显示为高收入。
7. 使用SELECT语句进行简单计算计算每个雇员的实际收入8. 使用内置函数获得员工总数计算Salary表中员工月收入的平均数获得Employees表中最大的员工号码计算Salary表中所有员工的总支出查询财务部雇员的最高和最低实际收入9. 模糊查询找出所有姓王的雇员的部门号找出所有地址中含有“中山”的雇员的号码及部门号找出员工号码中倒数第二个数字为0的员工的姓名、地址和学历10. Between…And…和Or的使用找出收入在2000~3000元之间的雇员编号找出部门为“1”或“2”的雇员的编号11. 使用INTO子句,由源表创建新表由表Salary创建“SalaryNew”表,要求包括编号和收入,选择收入在1500元以上的雇员由表Employees创建“EmployeesNew”表,要求包括编号和姓名,选择所有男员工二、子查询的使用1. 查找在财务部工作的雇员情况2. 用子查询的方法查找所有收入在2500以下的雇员的情况3. 查找财务部年龄不低于研发部雇员年龄的雇员姓名4. 用子查询的方法查找研发部比所有财务部雇员收入都高的雇员的姓名5. 查找比所有财务部的雇员收入都高的雇员的姓名6. 用子查询的方法查找所有年龄比研发部雇员年龄都大的雇员的姓名三、连接查询的使用1. 查询每个雇员的情况及薪水的情况2. 查询每个雇员的情况及其工作部门的情况3. 使用内连接的方法查询名字为“王林”的雇员所在的部门4. 使用内连接的方法查找出不在财务部工作的所有雇员信息5. 使用外连接方法查找出所有员工的月收入6. 查找财务部收入在2000元以上的雇员姓名及其薪水详情7. 查询研发部在1976年以前出生的雇员姓名及其薪水详请四、聚合函数的使用1. 求财务部雇员的平均收入2. 查询财务部雇员的最高和最低收入3. 求财务部雇员的平均实际收入4. 查询财务部雇员的最高和最低实际收入5. 求财务部雇员的总人数6. 统计财务部收入在2500元以上的雇员人数五、GROUP BY、ORDER BY子句的使用1. 查找Employees表中男性和女性的人数2. 按部门列出在该部门工作的员工的人数3. 按员工的学历分组,排列出本科、大专、硕士的人数4. 查找员工数超过2的部门名称和雇员数量5. 按员工的工作年份分组,统计各个工作年份的人数,例如工作1年的多少人,工作2年的多少人6. 将雇员的情况按收入由低到高排列7. 将员工信息按出生时间从小到大排列8. 在ORDER BY 子句中使用子查询,查询员工姓名、性别和工龄信息,要求按实际收入从大到小排列六、视图的使用1. 创建视图(1)在数据库YGGL上创建视图Departments_View,视图包含Department表的全部列(2)创建视图Employees_Departments_View,视图包含员工号码、姓名、所在部门名称(3)创建视图Employees_Salary_View,视图包含员工号码、姓名和实际收入三列2. 查询视图从视图Employees_Salary_View中查询出姓名为“王林”的员工的实际收入3. 更新视图(1)向视图Departments_View中添加一条记录(‘6’,‘广告部’,‘广告业务’)执行完命令后,分别查看Departments_View和Department表中发生的变化(2)尝试向Employees_Departments_View中添加一条记录,看看会发生什么情况(3)尝试向Employees_Salary_View中添加一条记录,看看会发生什么情况(4)将视图Departments_View中,部门号为‘6’的部门名称修改为‘生产车间’(5)删除视图Departments_View中最新增加的的一条记录4. 删除视图Employees_Departments_View5. 在界面工具中操作视图一、SELECT语句的基本使用1. 查询Employees表中所有数据SELECT*FROM Employees;2. 查询Employees表中指定字段数据SELECT EmployeeID,Name,DepartmentID FROM Employees;3. 查询Employees表中的部门号和性别,要求使用Distinct消除重复行SELECT Distinct DepartmentID,Sex FROM Employees;4. 使用WHERE子句查询表中指定的数据查询编号为’000001’的雇员的地址和电话Select Address,PhoneNumber FROM Employees WHERE EmployeeID='000001';查询月收入高于2000元的员工号码SELECT EmployeeID FROM Salary WHERE InCome>2000;查询1970年以后出生的员工的姓名和住址SELECT Name,Address FROM Employees WHERE YEAR(Birthday)>'1970'; SELECT Name,Address FROM Employees WHERE Birthday>'1970';5. 使用AS子句为表中字段指定别名查询Employees表中女雇员的地址和电话,并将列标题显示为地址和电话SELECT Address AS地址,PhoneNumber AS电话FROM Employees;查询Employees表中男雇员的姓名和出生日期,并将列标题显示为姓名和出生日期SELECT Name AS姓名,Birthday AS出生日期FROM Employees WHERE Sex=1;6. 使用使用CASE子句查询Employees表中员工的姓名和性别,要求Sex值为1时显示“男”,为0时显示“女”SELECT Name AS姓名,CASEWHEN Sex=1 THEN'男'WHEN Sex=0 THEN'女'ENDAS性别FROM Employees;查询Employees表中员工的姓名、住址和收入水平,2000元以下显示为低收入,2000~3000地显示为中等收入,3000元以上显示为高收入。
数据库实验报告-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 查询选修了“数据结构”的学生学号和姓名五、实验总结列名写错:修改列名:心得体会:通过实验,了解了一些基本的查询操作,会一些的基本操作。
北邮数据库实验报告(4)
数据库实验报告(四)姓名:学号:班级:1.简单查询:(1)查询“数据库开发技术”课程的学分;SQL语句:select creditfrom coursewhere course_name='SQL Server数据库开发技术';或者模糊查询:select creditfrom coursewhere course_name like’%数据库开发技术';执行结果:(2) 查询选修了课程编号为“dep04_s004”的学生的学号和成绩,并将成绩按降序输出;SQL语句:select student_id,gradefrom student_coursewhere course_id='dep04_s003’order by grade desc;执行结果:(3) 查询学号为“g9940205”的学生选修的课程编号和成绩;SQL语句:select course_id,gradefrom student_coursewhere student_id=’g9940205';执行结果:(4) 查询选修了课程编号为“dep04_s001”且成绩高于85分的学生的学号和成绩。
SQL语句:select student_id,gradefrom student_coursewhere course_id='dep04_s001’and grade〉’85’;执行结果:2.在多表连接的查询实验中,用Transact SQL语句完成以下查询操作:(1)查询选修了课程编号为“dep04_s002”且成绩高于85分的学生的学号、姓名和成绩;SQL语句:select student.student_id,student_name,gradefrom student,student_coursewhere student。
student_id=student_course。
student_idand student_course。
实验4查询与sql操作
实验4查询与SQL操作订货管理系统仓库表职工表供应商表实验目的:通过上机操作实验,熟练掌握SQL语言的用法,并能够灵活的运用SQL对数据库中的各种数据记录进行各种查询操作。
实验内容:根据如上“订货管理”数据库各表,然后根据该数据库分别写出如下操作的各项命令并上机检验执行:(设计视图和SQL视图操作都要熟悉)1简单查询例:1、从职工关系中检索所有工资值。
SELECT工资FROM职工可以看到在结果中有重复值,若要去掉重复值只需要指定DISTINCT短语。
SELECT DISTINCT 工资FROM 职工2、查询仓库关系中的所有元组。
SELECT仓库.* FROM 仓库3、查询工资多于1230元的职工号。
SELECT职工号FROM职工WHERE工资>1230 练习:查询出在仓库”WH1”或”WH2”工作,并且工资少于1250元的职工信息2简单的联接查询例:查询工资多于1230元的职工号和他们所在的城市。
SELECT职工号,城市FROM 职工,仓库WHERE (工资>1230)AND(职工•仓库号=仓库. 仓库号练习:找出工作在面积大于400的仓库的职工号以及这些职工工作所在的城市。
3嵌套查询例:哪些城市至少有一个仓库的职工工资为1250元?SELECT 城市FROM 仓库WHERE 仓库号IN(SELECT 仓库号FROM 职工WHERE 工资=1250)练习:找出和职工E4挣同样工资的所有职工。
4几个特殊运算符BETWEEN , AND ,:指定查询的条件是在什么范围内(数值)LIKE (* | ?):指定查询与通配符相匹配的字符。
例:查询出工资在1220元到1240元范围内的职工信息。
SELECT * FROM 职工WHERE 工资BETWEEN 1220 AND 1240 (或:工资>=1220 AND 工资<=1240)2、不要工厂或其他供应商的信息。
这是一个字符串匹配的查询,显然应该使用LIKE运算符。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验4 SQL语句之简单查询
一、实验目的
1.掌握SELECT语句的基本语法。
2.掌握从表中查询特定行的方法。
3.掌握从表中选择表中若干列和全部列的方法。
4.掌握从表中查询经过计算的值以及为列指定别名的方法。
5.掌握取消重复行和查找满足条件元组的方法。
6.掌握(NOT) BETWEEN AND,LIKE,IN,NULL,通配符的使用方法。
7.掌握ODER BY、GROUP BY的使用方法。
8.掌握聚集函数的使用方法。
二、实验要求
1.应用SELECT语句对数据库中数据进行指定条件的简单查询。
2.撰写实验报告,并附实验结果界面及相应实验语句。
三、实验步骤
1.查询StudentInfo表中所有的学生的详细信息,SQL代码如下所示:
SELECT *
FROM StudentInfo
注意:SQL代码可以写在一行中,也可以分成多行,功能不变。
本书中为了提高代码的可读性,采用更为清晰的多行形式。
2.查询StudentInfo表中所有学生的学号、姓名、系别、专业等信息,SQL代码如下所示:
SELECT sno,sname,depart,major
FROM StudentInfo
3.查询全体学生的学号、姓名及年龄信息,SQL代码如下所示:
SELECT Sno,Sname,Year(GETDATE())-Year(Birthday)
FROM StudentInfo
注:YEAR(日期)函数的作用是返回日期的年份,GETDATE()函数的作用是返回系统日期和时间。
4.查询全体学生的学号、姓名及年龄信息,并且为年龄列定义别名为“Age”。
SQL 代码如下所示:
SELECT Sno,Sname,Year(GETDATE())-Year(Birthday) Age
FROM StudentInfo
5.查询有学生选修的教学计划的教学计划号。
SQL代码如下所示:
SELECT TeachTaskID FROM SC
6.查询有学生选修的教学计划的教学计划号,并去掉重复行。
SQL代码如下所示:SELECT DISTINCT TeachTaskID FROM SC
注意观察以上两条语句执行结果的差别。
7.查询StudentInfo表中学号为201001903029的学生的详细信息,SQL代码如下所示:SELECT *
FROM StudentInfo
WHERE Sno='201001903029'
8.查询出生年月在1991-03-15日以后的学生的详细信息,SQL代码如下所示:SELECT *
FROM StudentInfo
where Birthday>'1991-03-15'
9.查询成绩在70-80之间的学生的学号及教务任务号等信息,SQL代码如下所示:SELECT TeachTaskID,Sno,Grade
FROM SC
WHERE Grade BETWEEN 70 and 80
注意:BETWEEN 70 and 80包含70和80。
10.查询不是计算机系和服装系学生的姓名、性别和专业,SQL代码如下所示:SELECT Sname,Sex,Depart,Major
FROM StudentInfo
WHERE Depart not in('计算机系','服装系')
11.查询2009-2010学年第1学期学生选课的学生号、课程号及成绩,SQL代码如下所示:
SELECT Sno,SUBSTRING(TeachTaskID ,15,6) as Cno,Grade
FROM SC
WHERE TeachTaskID like '%2009-2010-1%'
注意:SQL Server 2012中SUBSTRING函数的函数原型为:
SUBSTRING ( value_expression ,start_expression , length_expression )
其作用是返回字符串value_expression中从start_expression位置开始的length_expression 个字符。
如果start_expression小于零,会返回错误;如果start_expression大于value_expression的长度,则返回零长度的表达式。
12.查询名字最后一个字为“娟”,且名字为三个字的学生详细信息,SQL代码如下所示:
SELECT *
FROM StudentInfo
WHERE Sname like '__娟'
注意:'__娟'中,娟前为两个下划线,中间没有空格。
在SQL Server 2012中,数据类型nvarchar是按字符存储的,即nvarchar(20)能存储20个中文字符。
而数据类型varchar是按字节存储的,即varchar(20)能存储20个字节长度的字符,而存储中文时1个字符占用两个字节,因此只能存储10个中文字符。
在SQL Server 2012中,通配符“_”表示任意单个字符,不管单个字符是按字符存储还是按字节存储。
因此表StudentInfo中Sname的数据类型为不管是nvarchar还是varchar,名字最后一个字为“娟”且名字为三个字的表示方法都是“__娟”,即娟前有两个下划线。
13.查询CourseInfo表中没有先行课的课程号与课程名称,SQL代码如下所示:SELECT cno,cname
FROM CourseInfo
WHERE cpno is null
14.查询在计算机系的女学生的详细信息。
SQL代码如下所示:
SELECT * FROM StudentInfo
WHERE Depart='计算机系' and Sex='女'
15.查询是教授或者是博士的教师详细信息。
SQL代码如下所示:
SELECT * FROM TeacherInfo
WHERE ProfTitle ='教授' or Degree ='博士'
16.查询在2009-2010年第2学期,选修140176课程的学生学号及成绩,查询结果按成绩降序排列。
SQL代码如下所示:
SELECT Sno,Grade FROM SC
WHERE TeachTaskID like '(2009-2010-2)-140176%'
ORDER BY Grade DESC
注意观察ORDER BY的作用。
17.查询计算机系学生的总人数,SQL代码如下所示:
SELECT COUNT(*) as 人数FROM StudentInfo
WHERE Depart ='计算机系'
18.查询在2009-2010年第2学期,选修140176课程中的最高分,SQL代码如下所示:
SELECT MAX(Grade) FROM SC
WHERE TeachTaskID like '(2009-2010-2)-140176%'
19.查询各教学计划号及相应的选课人数,SQL代码如下所示
SELECT TeachTaskID ,COUNT(Sno) as 人数FROM SC
GROUP BY TeachTaskID
20.查询在2009-2010年第2学期选修了2门以上课程的学生学号,SQL代码如下所示:
SELECT Sno FROM SC
WHERE TeachTaskID like '(2009-2010-2)%'
GROUP BY Sno
HAVING COUNT(*)>=2
四、拓展练习
1.用LIKE或者NOT LIKE查询StudentInfo表中学号为201011002032的学生的所有详细信息,编写SQL代码。
2.用IS NULL或者IS NOT NULL查询CourseInfo表中存在先行课的课程号与课程名称,编写SQL代码。
3.用AND或者OR查询StudentInfo表中服装系中女生学生的所有详细信息,编写SQL 代码。
4.用BETWEEN.....AND和NOT BETWEEN.....AND.....查询StudentInfo表中学号在201001903033—201001903051之间的学生的所有详细信息,编写SQL代码。
5.用IN和NOT IN查询StudentInfo表中经济管理系和计算机系的学生的所有详细信息,编写SQL代码。
6.查询StudentInfo表中全体的学生的详细信息,查询结果按照所在系升序排列,对同一系的学生按照学号降序排列。
7.查询选修课程数在2门及以上的学生的基本信息。
8.查询名字中含有“梅”字的学生基本信息。