第3章 SQL语言

news2024/11/18 17:20:53

第3章 SQL语言

考试范围: 3.1-3.10

考试题型:计算题

考试内容: (可按标准sql、mysql的语法格式来写SQL语句,考试时要求有无明显语法错误)

Select

Insert

Delete

Update

create table

alter table

Select

  • SQL 允许在关系和查询结果中重复,因为消除重复非常耗时。

    select distinct dept_name from instructor ;
    select all dept_name from instructor ;--不删除重复项
    
  • select 子句可以包含涉及运算 +、–、*和 / 以及对元组的常量或属性进行操作的算术表达式。

    select name, salary/12 from instructor;
    
  • where语句:比较结果可以使用逻辑连接词和、或和非组合。

    select name from instructor where dept_name = 'Comp.Sci.'  and salary > 80000;
    
  • 对多个关系的查询

    • 对于所有教过一些学生的教师,找到他们的姓名和学生的学生证
    select name, s_id 
    from instructor, advisor 
    where instructor.ID = advisor.i_id ;
    
    • 列出教师及其学生的姓名
    select instructor.name, student.name 
    from instructor, advisor, student 
    where instructor.ID = advisor.i_id and student.ID = advisor.s_id;
    
  • 联表查询(同一张表)

    • 找到每个员工的姓名以及他/她的经理姓名。

    • IDnamesalarymanagerID
      1001Wu70001003
      1002He75001003
      1003Li9000NULL
    select E1.name as employee_name, E2.name as manager_name
    from employee as E1, employee as E2
    where E1.managerID = E2.ID
    
  • 模糊查询

    • 查找名称中包含子字符串“stein ”的所有教师的姓名
    select name
    from instructor
    where name like '%stein%' ; 
    
  • 排序

    select * from  instructor order by salary desc, name asc ;
    
  • 限定范围

    select name
    from instructor
    where salary between 90000 and 100000 ;
    
  • 集合操作

    • 并集:查找 2017 年或 2018 年开设的课程
    (select course_id from section where year = 2017)
    union
    (select course_id from section where year = 2018) ;
    
    • 交集:查找 2017 年和 2018 年开设的课程
    (select course_id from section where year = 2017)
    intersect
    (select course_id from section where year = 2018) ;
    
    • 差集:查找 2017 年运行但 2018 年未运行的课程
    (select course_id from section where year = 2017)
    except
    (select course_id from section where year = 2018) ;
    
  • 聚合函数

    --where后面别出现聚合函数,select、having后面可以
    avg: average value
    min:  minimum value
    max:  maximum value
    sum:  sum of values
    count:  number of values
    Group By: 分组 满足“SELECT子句中的列名必须为分组列或列函数”
    Having:筛选分组 having是在分好组后找出特定的分组,通常是以筛选聚合函数的结果
    
    --查找老师中的最大工资
    select name, salary
    from instructor
    where salary = (select max(salary) from instructor);
    
    --查找各部门讲师的平均工资
    select dept_name, avg (salary) as avg_salary
    from instructor
    group by dept_name;
    
  • Having 语句:让子句删除一些组

    --查找平均工资大于70000的所有部门的名称和平均工资
    select dept_name, avg (salary)
    from instructor
    group by dept_name
    having avg (salary) > 70000 ;
    
    --对于 2017 年提供的每个课程部分,如果该部分至少有 2 名学生,请查找在该部分注册的所有学生的平均总学分 (tot_cred)
    select course_id, sec_id, semester, year, avg(tot_cred)
    from student, takes
    where student.ID = takes.ID and year = 2017
    group by course_id, sec_id, semester, year
    having count(student.ID) >= 2;
    
  • 嵌套子查询

    set membership: in, not in
    set comparisons: some, all
    empty set: exists, not exists
    set containment: not exists
    duplicate tuples: unique, not unique
    
    --查找 2009 年和 2010 年提供的课程
    select distinct course_id
    from section
    where year= 2009 and
          course_id in (select course_id
                        from section
                        where year= 2010) ;
    
    --查找 2009 年提供但 2010 年未提供的课程
    select distinct course_id
    from section
    where year= 2009 and
          course_id  not in (select course_id
                             from section
                             where year= 2010) ;
                             
    --查找薪水高于某些(至少一个)部门预算的讲师姓名。
    select name
    from instructor
    where salary > some (select budget
                         from department ) ;
                         
    --查找工资高于所有部门预算的讲师姓名。
    select name
    from instructor
    where salary > all (select budget
                        from department ) ;
    
    
    --exists如果参数子查询为非空,则存在构造返回值 true。
    --所有教师至少教过一名学生(相关子查询)
    select ID
    from instructor
    where exists (select * from advisor where i_id = ID) ;
    
    --查找所有参加过生物系提供的所有课程的学生
    --X是Y(s)的子集 等价于 X – Y(s) = Ø  等价于 not exists ( X except Y(s) )
    --(X代表生物系提供的所有课程,Y(s)代表学生选的所有课程)
    select ID, name 
    from student 
    where not exists (
        (select course_id 
         from course
         where dept_name = 'Biology')
         except
       (select course_id 
                 from takes
                 where student.ID = takes.ID)) ;
    
    
    --unique如果参数子查询不包含重复元组,则唯一构造测试返回 true。
    --查找 2017 年最多提供一次的所有课程。
    select course_id
    from course
    where unique (select section.course_id
                  from section
                  where course.course_id = section.course_id 
                  and year = 2017) ;	
    
    

Insert

--向课程添加新元组
insert into course
values ('CS-437', 'Database Systems', 'Comp. Sci'., 4) ;

insert into course (course_id, title, dept_name, credits)
values ('CS-437', 'Database Systems', 'Comp. Sci.', 4) ;


--使音乐系的每个学分超过 144 小时的学生成为音乐系的讲师,薪水为 18,000 美元
insert into instructor
       select ID, name, dept_name, 18000
       from student
       where dept_name = 'Music' and total_cred > 144;


Delete

--从财务部门删除所有教师
delete from instructor where dept_name= 'Finance ;

Update

--对收入低于70000的讲师加薪5%
update instructor
set salary = salary * 1.05
where salary < 70000;

--case when
update instructor
set salary = case
             when salary <= 100000 then salary * 1.05
             else salary * 1.03
             end ;

create table

  • common

在这里插入图片描述

  • primary key

在这里插入图片描述

  • primary key && foreign key

    在这里插入图片描述

  • other constrains

    在这里插入图片描述

alter table

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/107147.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vTESTstudio入门到精通 - vTESTstudio工具栏介绍_Tools

今天即将介绍一个非常有用的工具栏 - Tool&#xff0c;它可以可视化创建、编辑我们车载网络中常用的dbc、Autosar系统描述文件、LDF、FIBEX、CANdelaStudio、Car2x数据库等文件&#xff0c;基本涵盖了我们用到的所有&#xff0c;大家非常有必要详细的了解下&#xff0c;在有需要…

干扰管理学习日志9-------强化学习_联邦学习_功率分配

目录一、文章概述二、系统环境三、理论模型1.系统目标2.公式推导四、应用算法1.顶层设计2.强化学习(1)输入状态(2)输出动作(3)环境反馈3.联邦学习4.伪代码五、性能表征1.泛化性本文是对论文《Transmit Power Control for Indoor Small Cells: A Method Based on Federated Rein…

数据仓库环境准备完整使用 (第四章)

数据仓库环境准备完整使用一、IDEA 开发环境准备1、创建项目gmall-realtime2、删除当前项目的src目录并创建gmall-realtime模块3、创建子项目4、导入依赖5、创建相关的包6、在 resources 目录下创建 log4j.properties 文件&#xff0c;写入如下内容二、数据仓库运行环境(ODS)1、…

(野火征途 Altera EP4CE10)硬件说明

开发板买了好久了&#xff0c;但是一直都没有去学习。本着不浪费的想法&#xff0c;且通过记笔记来监督自己. FPGA FPGA是一种可以重构电路的芯片&#xff0c;是一种硬件可重构的体系结构。通过编程&#xff0c;用户可以随时改变它的应用场景&#xff0c;它可以模拟CPU、GPU等…

第13章 事务

第13章 事务 考试范围&#xff1a; 13.1-13.10 考试题型&#xff1a; 事务操作 考试内容&#xff1a; 1、事务的概念与特性(ACID) 概念 A transaction is a unitof program execution that accesses and possibly updates various data items事务是程序执行的单元&#xff…

云原生|kubernetes|CKA真题解析-------(11-17题)

第十一题&#xff1a; 创建多容器的pod 题目要求&#xff1a;解析&#xff1a; 多容器pod的创建&#xff0c;先创建一个单容器的pod&#xff0c;然后在此基础上修改即可 解答&#xff1a; 先创建单容器的pod kubectl run kucc1 --imagenginx --dry-runclient -oyaml >11…

css实现环形进度条

效果&#xff1a; 纯css实现进度条&#xff0c;这里用到的核心属性为box-show&#xff0c;box-show可以控制元素的阴影&#xff0c;通过控制元素阴影的移动位置来实现进度条效果。 .box{box-show : 0px 0px 0px 0px #ccc; }box-show有5个参数 第一个参数&#xff1a; 控制元…

第4章 中级SQL

第4章 中级SQL 考试范围&#xff1a; 4.1-4.7 考试题型&#xff1a; 计算题 考试内容&#xff1a; 连接类型&#xff08;与第3章合并考察&#xff09; 视图的定义与使用 事务&#xff08;与17-19章合并考察&#xff09; 完整性的概念 SQL中如何定义、修改各类完整性(Pr…

JVS低代码多账号统一登录介绍

登录操作演示 统一登录能力 JVS整个系统认证采用Oauth2 认证方案&#xff0c;目前支持目前登陆方式如下&#xff1a; 登录方式 说明 账号密码登录 基于JVS的用户名用户密码登录 手机动态验证码登录 基于JVS用户绑定的手机号动态验证码登录 微信扫码关注公众号登录 基于…

web前端-javascript-Math对象(说明和方法,它封装了数学运算相关的属性和方法)

文章目录Math 对象1. 说明2. 方法1) abs()2) Math.ceil()3) Math.floor()4) Math.round()5) Math.random()6) max 和 min7) Math.pow(x,y)8) Math.sqrt()Math 对象 1. 说明 Math 和其他的对象不同&#xff0c;它不是一个构造函数它属于一个工具类不用创建对象&#xff0c;它里…

仿真设计|基于51单片机的简易抢答器

目录 前言 具体实现功能 设计介绍 51单片机简介 设计方案 资料内容 仿真实现&#xff08;protues8.7&#xff09; 程序&#xff08;Keil5&#xff09; 全部资料&#xff08;压缩文件&#xff09; 前言 全部资料包括程序(Keil5)、protues仿真(protues8.7)、仿真视频、…

教育领域知识图谱

教育领域开源的知识图谱实体 在教育领域,有许多开源的知识图谱实体可供使用。下面列出了一些例子: DBpedia:这是一个知识图谱,由 Wikipedia 的内容构建而成。DBpedia 中包含了许多关于人、地方、事物和概念的实体,并且这些实体都具有相关的属性和关系。 Wikidata:这是一个…

LeetCode算法之--二叉树系列

点赞收藏&#xff0c;以防遗忘 本文【程序大视界】已收录&#xff0c;关注免费领取互联网大厂学习资料&#xff0c;添加博主好友进群学习交流&#xff0c;欢迎留言和评论&#xff0c;一起交流共同进步。 【一】前言 二叉树也是面试算法的常见题型&#xff0c;通常程序会自定义…

Go秒杀系统——RabbitMQ核心概念与工作模式

前言&#x1f4ac; Windows 上的 RabbitMQ 被我卸载了&#xff0c;在 macOS 上再安装一下&#xff0c;采用 brew install 还是挺方便的。 很好奇微软的程序员写代码用的是 Windows 操作系统吗&#xff1f;感觉有点不方便&#xff0c;但用 macOS 岂不是太丢撵了。 一、macOS 安装…

APS排程软件提升电子产品生产企业的服务效益

"3C产品"&#xff0c;就是计算机、通信和消费类电子产品三者结合&#xff0c;也称"信息家电"。由于3C产品的体积一般都不大&#xff0c;所以往往在中间加一个"小"字&#xff0c;故往往统称为"3C小家电"。 据报道&#xff0c;某一科技公…

使用DoraCloud免费版搭建办公桌面云

DoraCloud是一款多平台的桌面虚拟化管理软件&#xff0c;支持Hyper-V、VMware、Proxmox、XenServer等多种虚拟化平台。DoraCloud在虚拟化平台上具有极大的灵活性&#xff0c;允许您的组织自由选择合适的IT基础设施来构建桌面云&#xff1b;也允许您的组织重用现有的IT设施基础&…

B树和B+树的详解讲解

1.B树 前面我们已经学习了二叉查找树、2-3树以及它的实现红黑树。2-3树中&#xff0c;一个结点做多能有两个key&#xff0c;它的实现红黑树中使用对链接染色的方式去表达这两个key。接下来我们学习另外一种树型结构B树&#xff0c;这种数据结构中&#xff0c;一个结点允许多于…

Java LinkedList

链表&#xff08;Linked list&#xff09;是一种常见的基础数据结构&#xff0c;是一种线性表&#xff0c;但是并不会按线性的顺序存储数据&#xff0c;而是在每一个节点里存到下一个节点的地址。 链表可分为单向链表和双向链表。 一个单向链表包含两个值: 当前节点的值和一个…

linux软件安装

软件安装1.安装方式2.安装jdk3.安装Tomcat4.安装mysql5.安装lrzsz1.安装方式 2.安装jdk &#xff08;1&#xff09;使用 Xftp 将jdk的二进制包上传到 Linux。 关于 Xftp 的下载和安装看这里&#xff1a; https://blog.csdn.net/weixin_56680764/article/details/126335138 本文…

C++:using : using的四大用法总结

1&#xff1a;using声明&#xff08;引入单个名称&#xff09; using声明是将命名空间中某个名字单独引入到当前作用域&#xff0c;这使得我们在当前作用域下可以直接使用该名字而无需使用作用域限定符 :: 。 #include <string> using std::string; int main() {string…