`
y1d2y3xyz
  • 浏览: 257100 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SQL整理四

    博客分类:
  • SQL
SQL 
阅读更多

学生表:xstudent
+-------+------+------+----------+-------+
|(学生ID) (名字) (性别)    (生日)   (班级)
+-------+------+------+----------+-------+
|xsid     xsnm  xssex  xsbirthday  sclass 
+-------+------+------+----------+-------+
|108      曾华    男    09/01/77    95033
+-------+------+------+----------+-------+
|105      匡明    男    10/02/75    95031
+-------+------+------+----------+-------+
|107      王丽    女    01/23/76    95033
+-------+------+------+----------+-------+
|101      李军    男    02/20/76    95033 
+-------+------+------+----------+-------+
|109      王芳    女    02/10/75    95031 
+-------+------+------+----------+-------+
|103      陆军    男    06/03/74    95031
+-------+------+------+----------+-------+
sql:
+------------------------------------------------------------------+
CREATE TABLE IF NOT EXISTS `xstudent` (
  `xsid` int(11) NOT NULL auto_increment,
  `xsnm` varchar(50) default NULL,
  `xssex` tinyint(4) default NULL,
  `xsbrithday` date default '0000-00-00',
  `sclass` varchar(11) default NULL,
  PRIMARY KEY  (`xsid`)
) ENGINE=MyISAM  DEFAULT CHARSET=gbk;

INSERT INTO `xstudent` VALUES (108, '曾华', 1, '1977-06-23', '95033');
INSERT INTO `xstudent` VALUES (105, '匡明', 1, '1975-06-03', '95031');
INSERT INTO `xstudent` VALUES (107, '王丽', 0, '1976-06-17', '95033');
INSERT INTO `xstudent` VALUES (101, '李军', 1, '1976-02-22', '95033');
INSERT INTO `xstudent` VALUES (109, '王芳', 0, '1975-02-10', '95031');
INSERT INTO `xstudent` VALUES (103, '陆军', 1, '1974-03-06', '95031');
+-------------------------------------------------------------------+
组合表:score
+-------+--------+-------+
(学生ID)  (课程ID)  (成绩) 
+-------+--------+-------+
|xsid     kuid    degree 
+-------+--------+-------+
|103      3-245    84 
+-------+--------+-------+ 
|105      3-245    67 
+-------+--------+-------+ 
|109      3-245    98 
+-------+--------+-------+ 
|103      3-105    78 
+-------+--------+-------+ 
|105      3-105    91 
+-------+--------+-------+ 
|109      3-105    68 
+-------+--------+-------+ 
|101      3-105    93 
+-------+--------+-------+ 
|107      3-105    72 
+-------+--------+-------+ 
|108      3-105    66 
+-------+--------+-------+
|101      6-166    80 
+-------+--------+-------+
|107      6-166    77 
+-------+--------+-------+
|108      6-166    62 
+-------+--------+-------+
sql:
+-----------------------------------------------+
CREATE TABLE IF NOT EXISTS `score` (
  `xsid` int(11) NOT NULL,
  `kuid` varchar(20) default NULL,
  `degree` int(11) default NULL
) ENGINE=MyISAM  DEFAULT CHARSET=gbk COMMENT='组合表';

INSERT INTO `score` VALUES (103, '3-245', 84);
INSERT INTO `score` VALUES (105, '3-245', 67);
INSERT INTO `score` VALUES (109, '3-245', 98);
INSERT INTO `score` VALUES (103, '3-105', 78);
INSERT INTO `score` VALUES (105, '3-105', 91);
INSERT INTO `score` VALUES (109, '3-105', 68);
INSERT INTO `score` VALUES (101, '3-105', 93);
INSERT INTO `score` VALUES (107, '3-105', 72);
INSERT INTO `score` VALUES (108, '3-105', 66);
INSERT INTO `score` VALUES (101, '6-166', 80);
INSERT INTO `score` VALUES (107, '6-166', 77);
INSERT INTO `score` VALUES (108, '6-166', 62);
+-----------------------------------------------+
课程表:course 
+-------+--------+--------+
(课程ID)  (课名字)  (老师ID)
+-------+--------+--------+ 
|kuid     kmname     lsid 
+-------+--------+--------+
|3-105   计算机导论    825 
+-------+--------+--------+
|3-245   操作系统      804 
+-------+--------+--------+
|6-166   数字电路      856 
+-------+--------+--------+
|9-888   高等数学      831 
+-------+--------+--------+
sql:
+----------------------------------------------------+
CREATE TABLE IF NOT EXISTS `course` (
  `kuid` varchar(20) NOT NULL,
  `kmname` varchar(50) NOT NULL,
  `lsid` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk COMMENT='course';

INSERT INTO `course` VALUES ('3-105', '计算机导论', 825);
INSERT INTO `course` VALUES ('3-245', '操作系统', 804);
INSERT INTO `course` VALUES ('6-166', '数字电路', 856);
INSERT INTO `course` VALUES ('9-888', '高等数学', 831);
+----------------------------------------------------+
老师表:teacher 
+-------+--------+-------+-----------+------+---------+
|(老师ID)    (名字)  (性别)   (生日)     (职称)   (系) 
+-------+--------+-------+-----------+------+---------+
|lsid      lsname  lssex  lsbirthday  lsprof lsdepart
+-------+--------+-------+-----------+------+---------+
|804        李城    男     12/02/58    副教授  计算机系
+-------+--------+-------+-----------+------+---------+
|856        张旭    男     03/12/69    讲师    电子工程系
+-------+--------+-------+-----------+------+---------+  
|825        王萍    女     05/05/72    助教    计算机系
+-------+--------+-------+-----------+------+---------+ 
|831        刘冰    女     08/14/77    助教    电子工程系
+-------+--------+-------+-----------+------+---------+ 
sql:
+-------------------------------------------------------+
CREATE TABLE IF NOT EXISTS `teacher` (
  `lsname` varchar(40) default NULL,
  `lssex` tinyint(4) default NULL,
  `lsbirthday` date default '0000-00-00',
  `lsprof` varchar(20) default NULL,
  `lsdepart` varchar(25) default NULL,
  `lsid` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=gbk COMMENT='教师信息表';

INSERT INTO `teacher` VALUES('李城',1,'1958-12-02','副教授','计算机系',804);
INSERT INTO `teacher` VALUES('张旭',1,'1969-12-03','讲师','电子工程系',856);
INSERT INTO `teacher` VALUES('王萍',0,'1972-05-05','助教','计算机系',825);
INSERT INTO `teacher` VALUES('刘冰',0,'1977-08-14','助教','电子工程系',831);
INSERT INTO `teacher` VALUES ('丁力',0,'1972-05-05','教师','计算机系',825);
INSERT INTO `teacher` VALUES ('许文祥',0,'1977-08-14','教师','电子工程系',831);
+---------------------------------------------------------------------------+ 
要求:
1.在表teacher中,查询"计算机系"与"电子工程系"不同职称的教师的lsname和lsprof
方法一:
+-------------------------------------------------------+ 
|select a.lsname,a.lsprof from teacher a                |
|where (a.lsdepart ="计算机系" or a.lsdepart ="电子工程系")| 
|and a.lsprof not in (                                  |
| select lsprof                                         |
| from teacher                                          |
| group by lsprof                                       |
| having count(lsprof)>=2                               |
| )                                                     |
+-------------------------------------------------------+ 
方法二:
+-------------------------------------------------------+ 
|SELECT lsname,lsprof from teacher t                    |
|where lsdepart ="计算机系" or lsdepart ="电子工程系"      | 
|and not exists (                                       |
| select lsprof from teacher                            |
| where lsprof =t.lsprof                                |
| );                                                    |
+-------------------------------------------------------+ 
2.查询选修课编号是"3-105"课程且成绩至少高于选修课程编号为"3-245"的同学的kuid,xsid和degree,并且degree从高到低次序排列
+---------------------------------+
|SELECT a.kuid, a.xsid, a.degree  |
|FROM score a, score b            |
|WHERE a.kuid = '3-105'           |
|AND b.kuid = '3-245'             |
|AND a.xsid = b.xsid              |
|AND a.degree > b.degree          |
|order by a.degree asc;           |
+---------------------------------+
3.查询成绩比该课程平均成绩低的同学的成绩表
+-------------------------------------+
|SELECT a.xsid, a.kuid, a.degree      |
|FROM score a, (                      |
| SELECT kuid, avg( degree ) AS degree|
| FROM score                          |
| GROUP BY kuid                       |
| )b                                  |
|WHERE a.degree > b.degree            |
|AND a.kuid = b.kuid                  |                
+-------------------------------------+ 
4.查询平均成绩最低的学生姓名及其平均成绩
+-------------------------------------+
|select a.xsnm,avg(b.degree) as avg   | 
|from xstudent a,score b              |
|where a.xsid = b.xsid                |
|group by b.xsid                      |
|order by avg limit 1                 |
+-------------------------------------+
5.查询选修多门课程的同学中分数为非最高成绩的记录
+--------------------------------------+
|select DISTINCT a.xsid,a.kuid,a.degree|
|from score a,                         |
|(select kuid,max(degree) as maxdegree | 
| from score                           | 
| group by kuid) b,                    |
|(select xsid,count(kuid) as nums      |
| from score                           | 
| group by xsid) c                     |
|where c.nums>=2                       |
|and a.kuid = b.kuid                   |
|and a.degree<b.maxdegree              |
+--------------------------------------+
 

分享到:
评论

相关推荐

    sql语句整理工具

    标题中的“sql语句整理工具”指的是用于优化和格式化SQL查询语句的软件或应用程序。这类工具的主要目的是帮助数据库管理员和开发人员更好地管理和理解复杂的SQL代码,使其更规范、可读性更强,从而提高工作效率。 ...

    SQL语句格式整理器

    SQL语句格式整理器是一款非常实用的工具,它专门针对SQL查询语句的排版混乱问题,通过自动化处理,帮助用户快速将杂乱无章的SQL代码转化为整洁、易读的格式。这样的工具在数据库管理和开发过程中尤为重要,因为它...

    oracle常用sql整理

    本文将基于"oracle常用sql整理"的主题,深入探讨Oracle SQL的一些核心概念、语句及其实用技巧,适合初级到中级水平的学习者。 一、SQL基础 SQL是标准化的查询语言,分为DDL(Data Definition Language)、DML(Data...

    sql跟踪语句整理工具

    SQL跟踪后,用该工具能够快速整理出整洁的SQL,减少人工的复制、帖贴

    SQL文自动整理格式工具

    sqllice是一款专为解决SQL代码格式混乱问题而设计的工具,它能够帮助开发人员快速、高效地整理SQL脚本,使其更符合编程规范,提高代码可读性和团队协作效率。无论你是使用Java、Python、C#还是其他语言进行开发,...

    自制sql文整理

    自制SQL文整理,非开源,非完整,写得很挫,有使用时限,强烈不建议下载

    SQL格式化整理

    SQL格式整理工具,而且还可以把SQL语句转换成VB DELPHI C# JAVA里面用的格式

    《SQL》语句整理

    在《SQL》语句整理中,我们涉及了数据库的创建与删除、表的创建与数据操作、查询语句以及聚合函数等核心概念。 首先,创建数据库是数据库管理的基础。在SQL Server 2005中,可以使用`CREATE DATABASE`语句来创建新...

    SQL数据库整理工具

    标题中的“SQL数据库整理工具”指的是专门用于管理和优化SQL Server数据库的应用程序,这些工具通常包含一系列功能,旨在提升数据库性能,确保数据的准确性和一致性。SQL Server是Microsoft开发的一款关系型数据库...

    sql语句整理

    sql语句整理 sql增删改查 更新数据记录 删除数据记录

    SQL面试经典版-整理篇

    4. SQL Server数据库: - Transact-SQL(T-SQL):SQL Server的扩展SQL语法,包括变量、流程控制、异常处理等。 - Service Broker:SQL Server的消息队列服务,用于异步通信和任务调度。 - Indexing Strategies:...

    DBA日常维护SQL整理

    DBA日常维护SQL整理,涵盖操作系统、存储、数据库各个层面

    刚刚整理的SQL语句

    尽管描述和部分内容提供的信息有限,但我们可以基于标题“刚刚整理的SQL语句”来展开一些重要的SQL知识点,帮助读者更好地理解和掌握SQL的基础及进阶用法。 ### SQL简介 SQL(Structured Query Language)是一种...

    Sql数据库知识整理

    这个压缩包“SQL整理”很可能包含了关于SQL的各种概念、语法、操作和最佳实践的详细资料。以下是一些可能涵盖在其中的重要知识点: 1. **SQL基本概念**:SQL分为DDL(Data Definition Language,数据定义语言)、...

    SQL Server面试常用sql整理

    SQL Server 面试常用 SQL 整理 在 SQL Server 面试中,数据库部分的知识是非常重要的,本文将整理一些常用的 SQL 查询语句,以便更好地应对面试。 数据库设计 在创建数据库时,需要考虑到数据库的设计,包括表...

    一般SQL语句优化整理

    ### 一般SQL语句优化整理 #### 概述 在数据库操作中,SQL查询语句是数据检索的核心,其性能直接影响到应用系统的响应时间和资源消耗。对于一般的SQL语句优化,不仅能够提升查询效率,还能改善用户体验。本文将对...

    SQL Server 2005索引碎片整理

    SQL Server 2005索引碎片整理

    经典SQL语句整理大全

    4. **创建新表**: - `CREATE TABLE tabname`用于创建新表,定义列及其数据类型,可选地设置是否允许为空(`NULL`)和主键。 - `CREATE TABLE tab_new LIKE tab_old`创建与旧表`tab_old`结构相同的空表`tab_new`。...

    execsql整理.pdf

    Exec SQL整理 Exec SQL是一种嵌入式SQL语言,它利用高级语言的过程性结构来弥补SQL语言实现复杂应用方面的不足。嵌入SQL的高级语言称为主语言或宿主语言。在混合编程中,SQL语句负责操作数据库,高级语言语句负责...

Global site tag (gtag.js) - Google Analytics