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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
48 15
|
4天前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
6天前
|
SQL 存储 缓存
MySQL进阶突击系列(02)一条更新SQL执行过程 | 讲透undoLog、redoLog、binLog日志三宝
本文详细介绍了MySQL中update SQL执行过程涉及的undoLog、redoLog和binLog三种日志的作用及其工作原理,包括它们如何确保数据的一致性和完整性,以及在事务提交过程中各自的角色。同时,文章还探讨了这些日志在故障恢复中的重要性,强调了合理配置相关参数对于提高系统稳定性的必要性。
|
5天前
|
SQL 关系型数据库 MySQL
MySQL 高级(进阶) SQL 语句
MySQL 提供了丰富的高级 SQL 语句功能,能够处理复杂的数据查询和管理需求。通过掌握窗口函数、子查询、联合查询、复杂连接操作和事务处理等高级技术,能够大幅提升数据库操作的效率和灵活性。在实际应用中,合理使用这些高级功能,可以更高效地管理和查询数据,满足多样化的业务需求。
25 3
|
8天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
10天前
|
SQL 存储 关系型数据库
MySQL进阶突击系列(01)一条简单SQL搞懂MySQL架构原理 | 含实用命令参数集
本文从MySQL的架构原理出发,详细介绍其SQL查询的全过程,涵盖客户端发起SQL查询、服务端SQL接口、解析器、优化器、存储引擎及日志数据等内容。同时提供了MySQL常用的管理命令参数集,帮助读者深入了解MySQL的技术细节和优化方法。
|
10天前
|
SQL Oracle 关系型数据库
SQL(MySQL)
SQL语言是指结构化查询语言,是一门ANSI的标准计算机语言,用来访问和操作数据库。 数据库包括SQL server,MySQL和Oracle。(语法大致相同) 创建数据库指令:CRATE DATABASE websecurity; 查看数据库:show datebase; 切换数据库:USE websecurity; 删除数据库:DROP DATABASE websecurity;
|
16天前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
28天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
35 1
|
1月前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
39 4

热门文章

最新文章