MYSQL数据库SQL语句练习实验(1)

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
简介: MYSQL数据库SQL语句练习实验(1)

1、建立Employee 和 Department 两个表格


1.1 首先我们应该打开我们的WAMPSEVER来使用,然后接着先建立我们的两个表格,分别是Employee 和 Department


对于建立我们的表格来说,有两种方法。


第一种方法:


首先我们可以利用我们的界面建立我们的表格,并且将我们EMPNO作为我们的主键,这样就可以建立一个Employee空表格了,没有初始值的表格。


e580321d8835412dbac34f4122a19b01.png

第二种方法:

我们还可以用更加专业一点的方法,也就是用SQL语句来完成我们表格的创建。就是可以用CREATE TABLE 语句来创建我们的表,并且设置我们的字段和字段的长度以及类型等。


CREATE TABLE emp
(EMPNO INT(4) NOT NULL,
ENAME VARCHAR(20) NOT NULL,
JOB VARCHAR(20) NOT NULL,
MGR INT(4),
HIREDATE DATE,
SAL INT(10),
COMM INT(4),
DEPTNO INT(2) NOT NULL,
Primary key(EMPNO)
)

78a7b9ae7a7644598d7631adab84242b.png

创建完以后就可以在我们的表上看到我们的结构,结构如下。

8622c4d093674a46acb7a66f305b3d07.png


我们的Department表格也是同理可以得到我们的结果


CREATE TABLE dept
(DEPTNO INT(2) NOT NULL,
DNAME VARCHAR(20) NOT NULL,
LOC VARCHAR(20) NOT NULL,
Primary key(DEPTNO)
)

cf7392141fc5405292b091d4365d11ee.png


1.2 建立完两个空表以后,我们就需要对我们的空表进行导入数据。

对于导入数据的方法,也有两种方法。

第一种方法:

我们可以通过写SQL语句进行一个数据的INSERT,我们可以一行一行的插入,根据表的特定的格式,用SQL一行一行的插入。

比如这里是插入emp的第一行数据,用一句SQL语句来进行我们的插入

INSERT INTO `emp`(`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES (7369,"SMITH","CLERK",7902,"1990-12-17",13750,'',20)

从而可以看到,我们已经在我们的EMP表中插入了数据,但是我们有很多条数据,如果我们要进行插入就需要做比较多的操作,而且如果之后遇到了大型的数据,那我们可能需要写很多条来进行插入,那是不现实的,所以我们还可以利用第二种方法。


219eb273122548588ddac8495376f590.png

第二种方法:

我们还可以通过数据库的管理导入工具来进行插入我们的结果,首先,我们应该可以转成数据库可以接受导入的格式。


5bbbe818e37d4ef3ba3467f3987c95eb.png


可以看到,数据库导入只支持几类的格式,我就选择了我较为熟悉的csv格式进行导入。

当我将需要导入的数据复制到一个文本文档中的时候,我发现又很多的空格,我首先将后缀都改成csv,由于csv是一个以逗号分隔的文件,所以我用替换工具,将大部分的空格替换为了我们的逗号,这样就得到一个csv文件。


c71927f2858a440dbaa7f4ed58d74523.png


但是这样做还是不够,因为在我们的数据中还有比较多的空格,所以我再次用替换工具,将所有的空格都替换为空,这样就没有空格了,可以进行导入了。


ec4fbaf0894541bc8825eb049a2afcc3.png


aac034dfd00a40448cb2277f0e946df5.png


3533a88f9bc045749a98a3be1d0aa491.png


但是这样的导入有问题,由于我们设了日期的类型,但是这里并不是一个日期类型,所以我们导入进去以后,我们字段是0000-00-00,接着我们就用Excel来打开我们的csv文件,在Excel中有一个非常好的地方,他可以自动检测出我们的日期,并且我们可以自定义我们的日期类型,变成yyyy-mm-dd的结果


c22b25b58d6042bd99bf91b780173835.png


接着我们得到的csv文件就可以导入我们的表格里面,他会自动转成SQL语句,然后我们就导入成功了我们需要的数据。


264b68eaaae54ffda4fe9b5240aedc01.png

同理得DEPT表格也可以这样做,或者由于我们的DEPT表格比较简单,我们可以用5行的SQL语句也可以完成我们的插入,具体方法类似与EMP表格,两者是大同小异的。

INSERT INTO `dept`(`DEPTNO`, `DNAME`, `LOC`) VALUES (10,"ACCOUNTING","LONDON");
INSERT INTO `dept`(`DEPTNO`, `DNAME`, `LOC`) VALUES (20,"RESEARCH","PRESTON");
INSERT INTO `dept`(`DEPTNO`, `DNAME`, `LOC`) VALUES (30,"SALES","LIVERPOOL");
INSERT INTO `dept`(`DEPTNO`, `DNAME`, `LOC`) VALUES (40,"OPERATIONS","STAFFORD");
INSERT INTO `dept`(`DEPTNO`, `DNAME`, `LOC`) VALUES (50,"MARKETING","LUTON");

906d72f5a85648db9724873ac29fd324.png8f5260c34df04dfb90f0fdd26a4af58b.png


这样子,我们的DEPT表格也是成功插入了,两个表格都已经创建并创建好数据了。


CREATE TABLE dept
(DEPTNO INT(2) NOT NULL,
DNAME VARCHAR(20) NOT NULL,
LOC VARCHAR(20) NOT NULL,
Primary key(DEPTNO)
)
INSERT INTO `emp`(`EMPNO`, `ENAME`, `JOB`, `MGR`, `HIREDATE`, `SAL`, `COMM`, `DEPTNO`) VALUES (7369,"SMITH","CLERK",7902,"1990-12-17",13750,'',20)
INSERT INTO `dept`(`DEPTNO`, `DNAME`, `LOC`) VALUES (10,"ACCOUNTING","LONDON");
INSERT INTO `dept`(`DEPTNO`, `DNAME`, `LOC`) VALUES (20,"RESEARCH","PRESTON");
INSERT INTO `dept`(`DEPTNO`, `DNAME`, `LOC`) VALUES (30,"SALES","LIVERPOOL");
INSERT INTO `dept`(`DEPTNO`, `DNAME`, `LOC`) VALUES (40,"OPERATIONS","STAFFORD");
INSERT INTO `dept`(`DEPTNO`, `DNAME`, `LOC`) VALUES (50,"MARKETING","LUTON");


2、Exercise 1-10


2、 完成EXERCISES 1 对表格的操作,1-21题


Exercise 1.1


2.1 List all information about the employees


第一题还是非常简单的,就是列出EMP表中的所有元素,我们可以利用SQL来Select所有的信息


SELECT * FROM `emp` WHERE 1

a861f98c0c3a4cadb9e84c18c0ba014f.png



Exercise 1.2


2.2 List all information about the departments

第二题就是显示所有的DEPT的信息,我们只需要将表的名字改一下就可以得到


SELECT * FROM `dept` WHERE 1


5ed265d2c17645349487907d23e180a2.png


Exercise 1.3


2.3 List only the following information from the EMP table (Employee name, employee number, salary, department number)


第三题只需要显示EMP表中的所有信息中的EMNO,ENAME,SAL,DEPTNO

SELECT `EMPNO`, `ENAME`, `SAL`, `DEPTNO` FROM `emp` WHERE 1


56f24e6bb9cd4b9184fa8c43520519ae.png


Exercise 1.4


2.4 List details of employees in departments 10 and 30.

第四题需要我们列出所有DEPT为10或30的所有EMP的信息


SELECT * FROM `emp` WHERE `DEPTNO`=10 OR `DEPTNO`=30


94be66a5be1543968a0991f5f63cbb99.png


Exercise 1.5


2.5 List all the jobs in the EMP table eliminating duplicates.

我们需要列出所有的JOB,并且保证是不重复的,我们可以利用以下语句,我们需要用到DISTINCT来去重


SELECT DISTINCT `JOB` FROM `emp` WHERE 1


65c0dfc5768e48b881e1648bbf3ee6b2.png


Exercise 1.6


2.6 What are the names of the employees who earn less than £20,000?

我们需要选择出所有SAL<20,000的ENAME,可以利用以下语句完成


SELECT `ENAME` FROM `emp` WHERE `SAL` < 20000


18d720b4fcb64a288d470b43e9d126b2.png


Exercise 1.7


2.7 What is the name, job title and employee number of the person in department 20 who earns more than £25000?


这道题比前面的题条件更多,我们需要列出更多的ENAME,JOB,EMPNO,并且他们的DEPTNO=20并且赚的钱超过25,000

SELECT `EMPNO`, `ENAME`, `JOB` FROM `emp` WHERE `DEPTNO` = 20 AND `SAL` > 25000

fa7ec01cecbf4ca0986742f9971c77c5.png


Exercise 1.8


2.8 Find all employees whose job is either Clerk or Salesman.

这个题需要我们找到EMP中JOB为Clerk或者是Salesman的

SELECT * FROM `emp` WHERE `JOB`="Clerk" OR `JOB`="Salesman"

ba10ad4127614e2cbee337da694eeff6.png


Exercise 1.9


2.9 Find any Clerk who is not in department 10.

我们需要找到JOB为Clerk的并且DEPTNO不为10的,这里我们要用到NOT

SELECT * FROM `emp` WHERE `JOB`='CLERK' AND (NOT `DEPTNO` =20)

0442fcb5e2f845d2ad3931606edfa6f7.png


Exercise 1.10


2.10 Find everyone whose job is Salesman and all the Analysts in department 20.

找到所有JOB为Salesman和所有DEPTNO为20的Analyst,这里相当于我们有两个条件,并且第二个条件还需要多满足一个DEPTNO=20


SELECT * FROM `emp` WHERE (`JOB`='SALESMAN') OR (`DEPTNO`=20 AND `JOB`='ANALYST')

2d9bb39796554e51a5ff9ac2a7af524b.png

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
834 152
|
3月前
|
SQL 人工智能 Linux
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
430 5
SQL Server 2025 RC1 发布 - 从本地到云端的 AI 就绪企业数据库
|
2月前
|
SQL 存储 监控
SQL日志优化策略:提升数据库日志记录效率
通过以上方法结合起来运行调整方案, 可以显著地提升SQL环境下面向各种搜索引擎服务平台所需要满足标准条件下之数据库登记作业流程综合表现; 同时还能确保系统稳健运行并满越用户体验预期目标.
219 6
|
3月前
|
SQL 监控 关系型数据库
SQL优化技巧:让MySQL查询快人一步
本文深入解析了MySQL查询优化的核心技巧,涵盖索引设计、查询重写、分页优化、批量操作、数据类型优化及性能监控等方面,帮助开发者显著提升数据库性能,解决慢查询问题,适用于高并发与大数据场景。
|
3月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
3月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
436 11
|
3月前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
348 8
|
3月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
SQL 存储 缓存
一文搞懂MySQL中一条SQL语句是如何执行的
一文搞懂MySQL中一条SQL语句是如何执行的
|
存储 SQL 缓存
【Mysql】执行sql语句后,mysql都做了什么?
【Mysql】执行sql语句后,mysql都做了什么?
【Mysql】执行sql语句后,mysql都做了什么?

推荐镜像

更多