Task2_MySQL_basic

2023-10-30

  1. MySQL表数据类型
    在这里插入图片描述

  2. 用SQL语句创建表
    创建MySQL数据表需要以下信息:
    表名;表字段名;定义每个表字段

语句解释; 设定列类型 、大小、约束; 设定主键

  1. 用SQL语句向表中添加数据

    语句解释
    多种添加方式(指定列名;不指定列名)

  2. 用SQL语句删除表

    语句解释
    DELETE
    DROP
    TRUNCATE
    不同方式的区别

  3. 用SQL语句修改表

    修改列名
    修改表中数据
    删除行
    删除列
    新建列
    新建行

#作业#

项目三:超过5名学生的课(难度:简单)

创建如下所示的courses 表 ,有: student (学生) 和 class (课程)。
例如,表:
±--------±-----------+
| student | class |
±--------±-----------+
| A | Math |
| B | English |
| C | Math |
| D | Biology |
| E | Math |
| F | Computer |
| G | Math |
| H | Math |
| I | Math |
| A | Math |
±--------±-----------+

编写一个 SQL 查询,列出所有超过或等于5名学生的课。
应该输出:
±--------+
| class |
±--------+
| Math |
±--------+
Note:
学生在每个课中不应被重复计算。

#创建表

CREATE TABLE courses (
student varchar(50) NOT NULL,
class varchar(50) NOT NULL);

#插入数据


INSERT INTO `courses` VALUES ('A', 'Math');
INSERT INTO `courses` VALUES ('B', 'English');
INSERT INTO `courses` VALUES ('C', 'Math');
INSERT INTO `courses` VALUES ('D', 'Biology');
INSERT INTO `courses` VALUES ('E', 'Math');
INSERT INTO `courses` VALUES ('F', 'Computer');
INSERT INTO `courses` VALUES ('G', 'Math');
INSERT INTO `courses` VALUES ('H', 'Math');
INSERT INTO `courses` VALUES ('I', 'Math');
INSERT INTO `courses` VALUES ('A', 'Math');




SELECT t.class
FROM (SELECT DISTINCT * FROM courses) t
GROUP BY t.class
HAVING count(t.class)>=5


项目四:交换工资(难度:简单)

创建一个 salary表,如下所示,有m=男性 和 f=女性的值 。
例如:

id name sex salary
1 A m 2500
2 B f 1500
3 C m 5500
4 D f 500

交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求使用一个更新查询,并且没有中间临时表。
运行你所编写的查询语句之后,将会得到以下表:

id name sex salary
1 A f 2500
2 B m 1500
3 C f 5500
4 D m 500
#创建表
use runoob;
create table if not exists salary(
id int(11) auto_increment,
name varchar(11) not null,
sex varchar(11) not null,
sala float default null,primary key(id)
)engine=innodb;
insert into salary(name,sex,sala)
values('A','m','2500'),
		('B','f','1500'),
   	('C','m','5500'),
   	('D','f','500');


#查询
update salary
set sex=
	case sex
	when 'm'
	then 'f'
	else 'm'
end;


项目五:有趣的电影 (难度:简单)

某城市开了一家新的电影院,吸引了很多人过来看电影。该电影院特别注意用户体验,专门有个 LED显示板做电影推荐,上面公布着影评和相关电影描述。

作为该电影院的信息部主管,您需要编写一个 SQL查询,找出所有影片描述为非 boring (不无聊) 的并且 id 为奇数 的影片,结果请按等级 rating 排列。

例如,下表 cinema:

±--------±----------±-------------±----------+
| id | movie | description | rating |
±--------±----------±-------------±----------+
| 1 | War | great 3D | 8.9 |
| 2 | Science | fiction | 8.5 |
| 3 | irish | boring | 6.2 |
| 4 | Ice song | Fantacy | 8.6 |
| 5 | House card| Interesting| 9.1 |
±--------±----------±-------------±----------+
对于上面的例子,则正确的输出是为:

±--------±----------±-------------±----------+
| id | movie | description | rating |
±--------±----------±-------------±----------+
| 5 | House card| Interesting| 9.1 |
| 1 | War | great 3D | 8.9 |
±--------±----------±-------------±----------+

select * from cinema where mod(id, 2) = 1 and description != 'boring' order by rating DESC ;

2.2 MySQL 基础 (三)- 表联结**#学习内容#**

  • MySQL别名
  • INNER JOIN
  • LEFT JOIN
  • CROSS JOIN
  • 自连接
  • UNION
  • 以上几种方式的区别和联系

#作业#

项目六:组合两张表 (难度:简单)

在数据库中创建表1和表2,并各插入三行数据(自己造)
表1: Person
±------------±--------+
| 列名 | 类型 |
±------------±--------+
| PersonId | int |
| FirstName | varchar |
| LastName | varchar |
±------------±--------+
PersonId 是上表主键

表2: Address
±------------±--------+
| 列名 | 类型 |
±------------±--------+
| AddressId | int |
| PersonId | int |
| City | varchar |
| State | varchar |
±------------±--------+
AddressId 是上表主键

编写一个 SQL 查询,满足条件:无论 person 是否有地址信息,都需要基于上述两表提供 person 的以下信息:FirstName, LastName, City, State

select P.FirstName,P.Lastname,A.City,A.State from Person P join Address A on P.PersonId = A.PersonId;




项目七:删除重复的邮箱(难度:简单)

编写一个 SQL 查询,来删除 email 表中所有重复的电子邮箱,重复的邮箱里只保留 **Id ***最小 *的那个。
±—±--------+
| Id | Email |
±—±--------+
| 1 | a@b.com |
| 2 | c@d.com |
| 3 | a@b.com |
±—±--------+
Id 是这个表的主键。
例如,在运行你的查询语句之后,上面的 Person表应返回以下几行:
±—±-----------------+
| Id | Email |
±—±-----------------+
| 1 | a@b.com |
| 2 | c@d.com |
±—±-----------------+

DELETE P1 FROM Person P1 JOIN Person P2
ON P1.Email=P2.Email WHERE P1.Id>P2.Id

项目八:从不订购的客户 (难度:简单)

某网站包含两个表,Customers 表和 Orders 表。编写一个 SQL 查询,找出所有从不订购任何东西的客户。

Customers 表:

±—±------+
| Id | Name |
±—±------+
| 1 | Joe |
| 2 | Henry |
| 3 | Sam |
| 4 | Max |
±—±------+
Orders 表:

±—±-----------+
| Id | CustomerId |
±—±-----------+
| 1 | 3 |
| 2 | 1 |
±—±-----------+
例如给定上述表格,你的查询应返回:

±----------+
| Customers |
±----------+
| Henry |
| Max |
±----------+

select c.Name as Customers from Customers c 

where not exists 

(select distinct o.CustomerId Id from Orders o where c.Id = o.CustomerId);

项目九:超过经理收入的员工(难度:简单)

Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id。

±—±------±-------±----------+
| Id | Name | Salary | ManagerId |
±—±------±-------±----------+
| 1 | Joe | 70000 | 3 |
| 2 | Henry | 80000 | 4 |
| 3 | Sam | 60000 | NULL |
| 4 | Max | 90000 | NULL |
±—±------±-------±----------+
给定 Employee 表,编写一个 SQL 查询,该查询可以获取收入超过他们经理的员工的姓名。在上面的表格中,Joe 是唯一一个收入超过他的经理的员工。

±---------+
| Employee |
±---------+
| Joe |
±---------+

# Write your MySQL query statement below
select name as Employee  from employee as table1 where salary > ( select salary from employee where id = table1.managerid ) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Task2_MySQL_basic 的相关文章

随机推荐

  • 虚拟机无法上网原因合集

    普通原因 1 检查ip地址是否正确 root devin ip a 1 lo
  • 大数据用户画像实战之业务数据调研及ETL

    整个用户画像 UserProfile 项目中 数据 业务及技术流程图如下所示 其中数据源存储在业务系统数据库 MySQL 数据库中 采用SQOOP全量 增量将数据抽取到 HDFS Hive表中 通过转换为HFile文件加载到HBase表 1
  • 主线程中捕获子线程异常

    需求 主线程独立执行 无需等待子线程执行完毕 子线程如有异常抛出可自行catch 网上介绍的方法一般是 1 在线程内部进行try catch捕获异常 2 通过线程池的submit方法 获取Future对象 然后try catch Futur
  • rz 传输错误问题 的几种解决方案

    在使用rz传输文件的时候 会遇到传输错误的问题 如下图 情况1 目录不对 一般情况下 切换到 tmp 目录 先将文件传输到 tmp 下 之后再复制到目标位置 情况2 硬盘空间不足 segmentation fault 使用df h查看磁盘空
  • go语言开发环境的搭建-安装和配置SDK

    一 基本介绍 1 SDK全称 software development kit 软件开发工具包 2 SDK是提供给开发人员使用的 其中包含了对应的开发语言的工具包 运行的工具 开发的工具 以及开发所需要的api 这是把我们的源代码编译成二进
  • 记mysql-connector-java:8.0.28的bug排查,你可能也踩坑了

    前言 如标题 最终查明问题是因为 mysql connector java 8 0 28 的一个 bug 导致的 但是在真相未浮出之前 整个问题可谓扑朔迷离 博主好久没有排查过如此得劲的 bug 随着一层层的 debug 深入 真相也随之浮
  • PCB布线线宽和过孔孔径设置为多少合适?

    作者 李大闯 2017 08 19 22 16 对于很多新入行的人来说 不清楚PCB的线宽应该设置为多少 这里作一下解释 对于PCB布线线宽的设置 主要要考虑两个问题 一是流过的电流大小 比如对于电源线来说 需要考虑电路工作时流过的电流 如
  • ios开发App的图标背景色不能是透明

    在ios开发中 App的图标背景不能是透明的 否则打包出来以后 在界面上的显示会是一个带有把黑色背景的图标 换成白色背景后
  • C++ 解析Json——jsoncpp

    C 解析Json
  • SKU 模块丨前端uniapp微信小程序项目

    小兔鲜儿 SKU 模块 学会使用插件市场 下载并使用 SKU 组件 实现商品详情页规格展示和交互 存货单位 SKU SKU 概念 存货单位 Stock Keeping Unit 库存管理的最小可用单元 通常称为 单品 SKU 常见于电商领域
  • 【2023】java多线程——锁的使用及分类

    锁简介 java多线程的锁都是基于对象的 每个对象都可以作为一个锁 类锁也是对象锁 java6以后 一个对象分为了4种锁的状态 级别由低到高依次是 无锁状态 偏向锁状态 轻量级锁状态 重量级锁状态 java对象头 每个Java对象都有对象头
  • SpringBoot 如何使用 @RequestBody 进行数据校验

    SpringBoot 如何使用 RequestBody 进行数据校验 在 Web 开发中 前台向后台发送数据是非常常见的场景 而在 SpringBoot 框架中 我们通常使用 RequestBody 注解来接收前台发送的 JSON 数据 并
  • PDF 的各种操作,我用 Python 来实现(附网站和操作指导)

    导言 PDF 处理是日常工作中的常见需求 包括 PDF 合并 删除 提取等 更复杂的任务如 将 PDF 转换成 图像 下面通过几个简单的例子和一份代码 帮助大家解决上面的需求 操作非常简单 在文末我会提供一份源码和一个神奇的 PDF 处理网
  • outside of class is not definition

    有一种可能的情况 You have semicolons at the end of all your function definitions making the compiler think they re declarations
  • 解决Base64报java.lang.IllegalArgumentException: Illegal base64 character 20

    报错 java lang IllegalArgumentException Illegal base64 character 20 原因 base64编码时使用加号 在URL传递时加号会被当成空格让base64字符串更改 服务器端解码出错
  • ROS主从机配置,并实现远程登陆

    第一步 主从机配置 首先确保主从机在同一个局域网中 1 编辑主机的bashrc文件 机器人平台 gedit bashrc 主机的bashrc文件添加如下的内容 export ROS MASTER URI http 主机的ip 11311 e
  • stm32F4 IAP实现原理讲解以及中断向量表的偏移

    一 IAP原理 IAP即是在应用编程 IAP 是用户自己的程序在运行过程中对User Flash 的部分区域进行烧写 目的是为了在产品发布后可以方便地通过预留的通信口对产 品中的固件程序进行更新升级 通常实现IAP 功能时 即用户程序运行中
  • 生命在于磨炼——连续两年参加4C大赛心得

    一 4C大赛简介 1 大赛简介 中国大学生计算机设计大赛 下面简称 大赛 是由教育部高等学校计算机类专业教学指导委员会 教育部高等学校软件工程专业教学指导委员会 教育部高等学校大学计算机课程教学指导委员会 教育部高等学校文科计算机基础教学指
  • 操作系统笔记五(Linux存储管理)

    1 Buddy内存管理算法 内部碎片就是已经被分配出去 能明确指出属于哪个进程 却不能被利用的内存空间 外部碎片指的是还没有被分配出去 不属于任何进程 但由于太小了无法分配给申请内存空间的新进程的内存空闲区域 目的 努力让内存分配与相邻内存
  • Task2_MySQL_basic

    MySQL表数据类型 用SQL语句创建表 创建MySQL数据表需要以下信息 表名 表字段名 定义每个表字段 语句解释 设定列类型 大小 约束 设定主键 用SQL语句向表中添加数据 语句解释 多种添加方式 指定列名 不指定列名 用SQL语句删