精华内容
下载资源
问答
  • 数据库单表查询

    2021-01-16 13:08:34
    题目:数据库单表查询 姓名 学号 实验环境: 已安装SQL Server 2005/2008版的计算机 实验内容及完成情况: 1.请将上机题目写于此 ...

    《数据库系统概论》实验报告

    日期

    2020/10/20

    题目:数据库单表查询

    姓名

     

    学号

     

    实验环境:

    已安装SQL Server 2005/2008版的计算机

    实验内容及完成情况:

    1.请将上机题目写于此

    2.根据以下要求认真进行实验,记录所有的实验用例。

    数据库原理实验4数据库中数据为基础,请使用T-SQL 语句实现以下操作:

    1. 列出所有不姓刘的所有学生;

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    1. 列出姓“沈”且全名为3个汉字的学生;

     

     

     

     

     

     

    1. 显示在1985年以后出生的学生的基本信息;

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    1. 按照“性别、学号、姓名、年龄、院系”的顺序列出学生信息,其中性别以下规定显示:性别为男显示为男 生,性别为女显示为女 生,其他显示为“条件不明”;

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    1. 查询出课程名含有“数据”字串的所有课程基本信息;

     

     

     

     

     

     

     

     

     

     

     

     

    1. 显示学号第八位或者第九位是1、2、3、4或者9的学生的学号、姓名、性别、年龄及院系;

     

     

    1. 列出选修了‘1’课程的学生,按成绩的降序排列;

     

     

     

     

     

     

     

     

     

     

     

     

     

    1. 列出同时选修“1”号课程和“2”号课程的所有学生的学号;

     

     

     

     

     

     

     

     

     

     

     

    1. 列出课程表中全部信息,按先修课的升序排列;

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    1. 列出年龄超过平均值的所有学生名单,按年龄的降序显示;

     

     

     

     

     

     

     

     

     

     

     

    1. 按照出生年份升序显示所有学生的学号、姓名、性别、出生年份及院系,在结果集中列标题分别指定为“学号,姓名,性别,出生年份,院系”;

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    1. 按照院系降序显示所有学生的 “院系,学号、姓名、性别、年龄”等信息,其中院系按照以下规定显示:院系为CS显示为计算机系,院系为IS显示为信息系,院系为MA显示为数学系,院系为EN显示为外语系,院系为CM显示为中医系,院系为WM显示为西医系,其他显示为院系不明;

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    1. 显示所有院系(要求不能重复,不包括空值),并在结果集中增加一列字段“院系规模”,其中若该院系人数>=5则该字段值为“规模很大”,若该院系人数大于等于4小于5则该字段值为“规模一般”, 若该院系人数大于等于2小于4则该字段值为“规模稍小”,否则显示“规模很小”;

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    1. 按照课程号、成绩降序显示课程成绩在70-80之间的学生的学号、课程号及成绩;

     

     

     

     

     

     

     

     

     

     

     

    1. 显示学生信息表中的学生总人数及平均年龄,在结果集中列标题分别指定为“学生总人数,平均年龄”;

     

     

     

     

     

     

     

     

     

    1. 显示选修的课程数大于3的各个学生的选修课程数;

     

     

     

     

     

     

     

     

     

    1. 按课程号降序显示选修各个课程的总人数、最高成绩、最低成绩及平均成绩;

     

     

    18.显示平均成绩大于“200515001”学生平均成绩的各个学生的学号、平均成绩;

     

    19.显示选修各个课程的及格的人数、及格比率;

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    20.显示选修课程数最多的学号及选修课程数最少的学号;

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    21.显示各个院系男女生人数,其中在结果集中列标题分别指定为“院系名称、男生人数、女生人数”;

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    22.列出有二门以上课程(含两门)不及格的学生的学号及该学生的平均成绩;

     

     

     

     

     

     

     

     

     

     

     

     

    出现的问题及解决方案:

     

    问题:一些问题不能正确的实现。删除数据库的时候,一直删除不了。

    解决方案:网上寻找正确语句及向同学请教,解决问题,之后,自己认真思考。删除数据库时,需要先断开连接。

     

     

     

    教师评语及得分:

     

     

               

     

     

    展开全文
  • 数据库中单表查询

    2020-10-05 21:13:33
    一、单表查询 素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等 CREATE TABLE `worker` ( `部门号` int(11) NOT NULL, `职工号` int(11) NOT NULL, `工作时间` date NOT NULL, `...

    一、单表查询

     素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等
     CREATE TABLE `worker` (
      `部门号` int(11) NOT NULL,
      `职工号` int(11) NOT NULL,
      `工作时间` date NOT NULL,
      `工资` float(8,2) NOT NULL,
      `政治面貌` varchar(10) NOT NULL DEFAULT '群众',
      `姓名` varchar(20) NOT NULL,
      `出生日期` date NOT NULL,
      PRIMARY KEY (`职工号`)
     ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
     INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生
     日期`) VALUES (101, 1001, '2015-5-4', 3500.00, '群众', '张三', '1990-7-1');
     INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生
     日期`) VALUES (101, 1002, '2017-2-6', 3200.00, '团员', '李四', '1997-2-8');
     INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生
     日期`) VALUES (102, 1003, '2011-1-4', 8500.00, '党员', '王亮', '1983-6-8');
     INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生
     日期`) VALUES (102, 1004, '2016-10-10', 5500.00, '群众', '赵六', '1994-9-5');
     INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生
     日期`) VALUES (102, 1005, '2014-4-1', 4800.00, '党员', '钱七', '1992-12-30');
     INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生
     日期`) VALUES (102, 1006, '2017-5-5', 4500.00, '党员', '孙八', '1996-9-2');
    

    二、创建表

    在这里插入图片描述
    1、显示所有职工的基本信息。
    mysql> selsct * from worker;
    在这里插入图片描述
    2、查询所有职工所属部门的部门号,不显示重复的部门号。
    mysql> select distinct 部门号 from worker;
    在这里插入图片描述
    3、求出所有职工的人数。
    mysql> select count(职工号) from worker;
    在这里插入图片描述
    4、列出最高工和最低工资。
    mysql> select max(工资),min(工资) from worker;
    在这里插入图片描述
    5、列出职工的平均工资和总工资。
    mysql> select avg(工资),sum(工资) from worker;
    在这里插入图片描述
    6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。
    mysql> create table workertime select 职工号,姓名,工作时间 from worker;
    在这里插入图片描述
    在这里插入图片描述

    7、显示所有女职工的年龄。
    mysql> select 姓名,2020 - year(出生日期) 年龄 from worker;
    在这里插入图片描述
    8、列出所有姓刘的职工的职工号、姓名和出生日期。
    mysql> select 职工号,姓名,出生日期, from worker where 姓名 like ‘刘%’;
    在这里插入图片描述
    9、列出1960年以前出生的职工的姓名、参加工作日期。
    在这里插入图片描述
    10、列出工资在1000-2000之间的所有职工姓名。
    在这里插入图片描述
    11、列出所有陈姓和李姓的职工姓名。
    mysql> select 姓名 from worker where 姓名 like '陈%'or 姓名 like ‘李%’;
    在这里插入图片描述
    12、列出所有部门号为2和3的职工号、姓名、党员否。
    在这里插入图片描述
    13、将职工表worker中的职工按出生的先后顺序排序。
    mysql> select 姓名 from worker order by 出生日期;
    在这里插入图片描述
    14、显示工资最高的前3名职工的职工号和姓名。
    mysql> select 职工号,姓名 from worker order by 工资 desc limit 3;
    在这里插入图片描述
    15、求出各部门党员的人数。
    mysql> select 部门号,count()from worker where 政治面貌='党员’group by 部门号;
    在这里插入图片描述
    16、统计各部门的工资和平均工资。
    mysql> select 部门号,sum(工资),avg(工资) from worker group by 部门号;
    在这里插入图片描述
    17、列出总人数大于4的部门号和总人数。
    mysql> select 部门号,count(
    ) from worker group by 部门号 having count(*) > 4;
    在这里插入图片描述

    展开全文
  • 数据库单表查询总结

    2017-12-14 13:11:01
    数据库单表查询的总结 还有数据库的其他总结分开上传 数据库单表查询的总结 还有数据库的其他总结分开上传
  • SQL数据库单表查询练习题附加数据表
  • 该文档详细描述了SQL server环境下数据库单表查询的sql语句的编写
  • Flask:sqlite数据库单表查询 1.根据id查询 # 查询id为50的成员信息 member1 = Member.query.get(50) print(member1) # 得到对象 print(member1.nickname) # 打印昵称 print(member1.name) # 打印姓名 2.查看表格...

    1.根据id查询

    # 查询id为50的成员信息
    member1 = Member.query.get(50)
    print(member1)  # 得到对象
    print(member1.nickname)  # 打印昵称
    print(member1.name)  # 打印姓名
    

    在这里插入图片描述

    2.查看表格全部成员数据

    # 2.查看表格全部数据
    member_list = Member.query.all()
    for member in member_list:
        print(member.name, member.position)
    

    部分运行结果
    部分结果截图

    3.指定条件查询

    3.1 fillter_by

    	一般用于简单的,固定值按字段查询
    
    member_list3 = Member.query.filter_by(position="五虎上将")
    for member in member_list3:
        print(member.nickname, member.name, member.salary)
    

    在这里插入图片描述

    3.2 filter

    	适合比较复杂的查询,如比较查询,模糊查询等
    
    member_list32 = Member.query.filter(Member.salary > 10000, Member.position == "骑兵都统")
    for member in member_list32:
        print(member.nickname, member.name)
    

    在这里插入图片描述

    4.模糊查询

    member_list4 = Member.query.filter(
        Member.bonus > 1000,
        Member.position.like("%都统")
    )
    for member in member_list4:
        print(member.nickname, member.name, member.position)
    

    在这里插入图片描述

    5.限制返回条数

    # 查询10位工资大于8000,职位为偏将的成员
    member_list5 = Member.query.filter(
        Member.salary > 8000,
        Member.position.like("%偏将")
    ).limit(10)
    for member in member_list5:
        print(member.nickname, member.name, member.position, member.salary)
    

    在这里插入图片描述

    6.指定开始位置

    # 从符合查询条件的第10位开始,查询10位工资大于8000,职位为偏将的成员
    member_list6 = Member.query.filter(
        Member.salary > 8000,
        Member.position.like("%偏将")
    ).limit(10).offset(9)
    for member in member_list6:
        print(member.nickname, member.name, member.position, member.salary)
    

    在这里插入图片描述

    7.排序

    7.1 顺序

    # 按工资从小到大查询所有都统
    member_list71 = Member.query.filter(
        Member.position.like("%都统"),
    ).order_by(Member.salary)
    for member in member_list71:
        print(member.nickname, member.name, member.position, member.salary)
    

    在这里插入图片描述

    7.2 倒序

    # 按工资从大到小序查询所有都统
    member_list72 = Member.query.filter(
        Member.position.like("%都统"),
    ).order_by(Member.salary.desc())
    for member in member_list72:
        print(member.nickname, member.name, member.position, member.salary)
    

    在这里插入图片描述

    8.聚合查询

    	常用聚合查询有Max,Min,count, sum, avg
    
    # 以conunt为例,查询工资为12000的水军
    from sqlalchemy import func
    result = db.session.query(
        func.count(Member.id)
    ).filter(Member.salary == 12000, Member.position.like("水军%")).all()
    print(result)
    

    9.分组查询

    # 按工资分组
    from sqlalchemy import func
    result9 = db.session.query(
        Member.salary,
        func.count(Member.id)
    ).group_by(Member.salary).all()
    print(result9)
    

    在这里插入图片描述

    10.逻辑查询

    	逻辑分组要先根据需求导入:
    	from sqlalchemy import and_
    	from sqlalchemy import or_
    	from sqlalchemy import not_
    
    from sqlalchemy import or_
    # 查询工资大于15000或奖金大于2000
    member_list10 = Member.query.filter(
        or_(
            Member.salary > 15000,
            Member.bonus > 2000
        )
    )
    for member in member_list10:
        print(member.name,member.salary, member.bonus)
    

    在这里插入图片描述

    展开全文
  • Sql-Server数据库单表查询 4.3实验课

    千次阅读 2021-04-03 10:04:22
    今天更进一步的学习了数据库单表查询,涉及条件、分组、排序等 select [all|distinct] <目标表达式> from <表名> where <条件表达式> group by 列名 [having <条件表达式>] order by 列名 ...

    今天更进一步的学习了数据库单表查询,涉及条件、分组、排序等

    select [all|distinct] <目标表达式>
    from <表名>
    where <条件表达式>
    group by 列名 [having <条件表达式>]
    order by 列名 [asc|desc];
    

    1、选择表的若干列

    查询表时的目标表达式可以是列名、算术表达式、字符串和函数,也可以为查询结果表中的列起别名(指定显示出的列名)

    select Sname 姓名,2021-Sage 出生年,'专业',upper(Sdept) 
    from Student; --专业名转大写
    -- 列名 (as) 别名
    

    在这里插入图片描述
    可以看到,T-SQL在查询时若使用算术表达、字符串或函数,需要指定列挡名,否则显示无列名

    查询某一列的数据时,可能会有重复元素,可使用distinct去重(缺省为all,即全部显示)

    select Sno as 学号 from SC; --默认为all
    select distinct Sno as 学号 from SC; --该列去重
    

    在这里插入图片描述

    2、选择表的元组(where)

    选择条件的表达式在where关键字后填写

    2.1 比较运算

    比较运算符有=、>、<、>=、<=、!=、<>、!>、!<

    同时可使用not搭配上述运算符,相当于取反

    select Sname,Sage,Sdept
    from Student
    where Sdept='CS'; 
    --查询CS专业的学生姓名和年龄
    --字符串需要单引号,内容不区分大小写,'CS'和'cs'效果相同
    

    在这里插入图片描述
    T-SQL中不支持使用not+比较运算符的结构

    --查询20岁及以下
    /*select Sname,Sage
    from Student
    where Sage not > 20;*/ --不支持 not+比较运算符
    
    select Sname,Sage
    from Student
    where Sage !> 20;
    

    在这里插入图片描述
    涉及空值时,不可使用 =null ,需 is null
    使用 =null,相当于查找取值为null的元组,不是空值

    
    

    2.2 确定范围和集合的查询

    SQL语言中逻辑运算符为 and、or、not,相当于C语言中的 &&、||、!

    使用 between ··· and ··· 可查询属性在指定范围内的元组,包括两端,可使用not取反

    select Sname,Sage
    from Student
    where Sage between 19 and 21; --19~21岁之间,包括19和21
    -- Sage>=19 and Sage<=21
    
    select Sname,Sage
    from Student
    where Sage not between 19 and 21; --不在19~21岁之间
    -- Sage<19 and Sage>21
    

    在这里插入图片描述
    使用 in 可查询属性在指定集合内的元组,可使用not取反

    select Sname,Sdept
    from Student
    where Sdept in('CS','IS'); --专业是CS、IS
    -- Sdept='CS' or Sdept='IS'
    
    select Sname,Sdept
    from Student
    where Sdept not in('CS','IS'); --专业不是CS、IS
    -- Sdept!='CS' and Sdept!='IS'
    

    在这里插入图片描述

    2.3 模糊查询(like)

    like+匹配串,可使用not取反

    即字符串匹配查询,使用通配符 %或_ 代替字符

    • %,代表任意长度的字符串(可以为0)
    select Sname,Sdept
    from Student
    where Sname like '王%'; --王姓学生
    
    select Sname,Sdept
    from Student
    where Sname not like '王%'; --非王姓学生
    

    在这里插入图片描述

    • _,代表任意单个字符
    select Sname,Sdept
    from Student
    where Sname like '欧阳_'; --欧阳姓三字学生
    
    select Sname,Sdept
    from Student
    where Sname like '欧阳__'; --欧阳姓四字学生
    

    在这里插入图片描述
    数据库字符集为ASCII时一个汉字需要两个_;字符集为GBK时只需要一个_

    查询Sql-Server当前字符集编码方式可使用如下语句:

    SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage');
    

    在这里插入图片描述
    查询结果为一整数,代表某种字符集的编号

    936:简体中文GBK
    950:繁体中文BIG5
    437:美国/加拿大英语
    932:日文
    949:韩文
    866:俄文
    65001:unicode UFT-8

    %_ 作为通配符,那么当字符串中需要真正表示百分号和下划线时,需要使用关键字escape定义转码字符

    select Sname,Sdept 
    from Student
    where Sname like '王/%' escape'/'; --转义%为普通的百分号
    

    在这里插入图片描述

    3、排序(order by)

    order by用于对查询结果进行排序,需指定排序的属性名,asc升序、desc降序,默认为升序asc

    select Sname,Sage,Sno
    from Student
    where Sdept in('cs','is')
    order by Sage; --按年龄升序排序
    
    select Sname,Sage,Sno
    from Student
    where Sdept in('cs','is')
    order by Sage,Sno desc; --年龄相同时按学号(字符串)降序排序
    

    在这里插入图片描述

    4、聚集函数

    聚集函数用于数据的统计功能,只可用于select语句和group by的having语句

    • count(*):元组的个数
    • count(<列名>):一列中值的个数‘
    • sum(<列名>):一列值得总和(该列必须为数值型)
    • avg(<列名>):一列值的平均值(该列必须为数值型)
    • max(<列名>):一列值的最大值
    • min(<列名>):一列值得最小值

    这些函数在使用时,可选择统计该列distinct去重后或all所有,默认为all

    select count(*) as 学生总数 from Student; --学生总数
    select count(Sdept) from Student; --有专业的学生总数
    select count(distinct Sno)  from SC; --选修了课得学生总数
    select avg(Sage) as 平均年龄 from Student; --平均年龄
    select max(Sage) as 最大年龄 from Student; --最大年龄
    select min(Sage) as 最小年龄 from Student; --最小年龄
    

    在这里插入图片描述
    使用count(<列名>)查询数量时,会依据元组的该属性是否存在,因此会忽略空值,而使用count(*)查询时不会忽略空值

    5、分组(group by)

    group by语句可将查询结果按某一列或多列分组,同时可使用having语句搭配聚集函数对每组的数据进一步筛选

    select Sdept,count(*) as 人数
    from Student
    group by Sdept; --各个专业的人数
    
    select Sdept,count(*) as 人数
    from Student
    group by Sdept having count(*)>1 
    order by 人数; --查询专业人数大于1的专业,按升序排序
    

    在这里插入图片描述
    再复习一遍查询语句的格式

    select [all|distinct] <目标表达式>
    from <表名>
    where <条件表达式>
    group by 列名 [having <条件表达式>]
    order by 列名 [asc|desc];
    

    SQL的查询还是很有意思的,真强大

    展开全文
  • oracle数据库单表查询

    2018-01-14 20:51:00
    今天给大家分享的是关于数据库单表查询,像单表查询/多表查询/分组查询/子查询,这些方法的使用在实际项目过程中会经常用到,作为一名合格的测试人员如果不会数据库那肯定是不行的,行走江湖可能随时会面临被侮辱...
  • 一、实验目的 1. 掌握SELECT语句的基本语法和查询...1. 熟练数据库查询语句; 2. 掌握数据库查询的实现方式; 3. 完成实验报告; 四、实验内容 以数据库原理实验4数据库中数据为基础,请使用T-SQL 语句实现以下操作:
  • 单表查询就是对 MySQL 数据库中的一张数据表中的数据进行查询操作,即单表查询操作。首先我们来介绍简单查询:简单查询只需要通过 SELECT 语句来实现。单表查询的第一个就是查询所有字段,查询所有字段的 SQL 语法有...
  • SQL数据库单表查询和多表查询

    千次阅读 2018-11-03 16:57:42
    –(一)以数据库系统student数据库为基础,请使用T-SQL 语句实现进行以下操作: --1. 查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况; --(1) select * from dbo.course where dbo.course.cname ...
  • 数据库单表查询语句

    2020-03-16 01:54:15
    查询语句基本结构 ... --来自于哪个 [where <行选择条件>] --[]方括号内为可选条件 [group by <分组依据列>] [having <组选择条件>] [order by <排序依据列>] 使用distin...
  • MySQL 数据库单表查询——高级查询

    千次阅读 2020-09-18 23:13:03
    当遇到一些复杂的需求时,例如对查询结果进行排序,分组和分页等,MySQL 数据库有着更高级的查询方法以处理更加复杂的需求。 一,排序查询查询完成后,结果集中的数据是按默认顺序排序的。为了方便用户自定义结果...
  • Mysql数据库单表查询

    2019-10-10 14:06:53
    (1)查询指定列 查询全体学生的学号与姓名 SELECT Sno,Sname FROM Student; 查询全体学生的姓名、学号、所在系 SELECT Sname,Sno,Sdept FROM Student; (2)查询全部列 查询全体学生的详细记录 SELECT * FROM ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,100
精华内容 4,840
关键字:

数据库单表查询