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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
2月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
3月前
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
241 62
|
7月前
|
SQL 关系型数据库 MySQL
MySQL进阶突击系列(07) 她气鼓鼓递来一条SQL | 怎么看执行计划、SQL怎么优化?
在日常研发工作当中,系统性能优化,从大的方面来看主要涉及基础平台优化、业务系统性能优化、数据库优化。面对数据库优化,除了DBA在集群性能、服务器调优需要投入精力,我们研发需要负责业务SQL执行优化。当业务数据量达到一定规模后,SQL执行效率可能就会出现瓶颈,影响系统业务响应。掌握如何判断SQL执行慢、以及如何分析SQL执行计划、优化SQL的技能,在工作中解决SQL性能问题显得非常关键。
|
4月前
|
SQL 数据采集 关系型数据库
实现MySQL与SQL Server之间数据迁移的有效方法
总的来说,从MySQL到SQL Server的数据迁移是一个涉及到很多步骤的过程,可能会遇到各种问题和挑战。但只要精心规划、仔细执行,这个任务是完全可以完成的。
281 18
|
6月前
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
481 90
|
5月前
|
SQL 关系型数据库 MySQL
【MySQL】SQL分析的几种方法
以上就是SQL分析的几种方法。需要注意的是,这些方法并不是孤立的,而是相互关联的。在实际的SQL分析中,我们通常需要结合使用这些方法,才能找出最佳的优化策略。同时,SQL分析也需要对数据库管理系统,数据,业务需求有深入的理解,这需要时间和经验的积累。
152 12
|
5月前
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
5月前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
9月前
|
SQL 存储 关系型数据库
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
774 55
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
|
6月前
|
SQL Oracle 关系型数据库
【YashanDB知识库】如何将mysql含有group by的SQL转换成崖山支持的SQL
本文探讨了在YashanDB(崖山数据库)中执行某些SQL语句时出现的报错问题,对比了MySQL的成功执行结果。问题源于SQL-92标准对非聚合列的严格限制,要求这些列必须出现在GROUP BY子句中,而SQL:1999及更高版本允许非聚合列直接出现在选择列中。YashanDB和Oracle遵循SQL-92标准,因此会报错。文章提供了两种解决方法:使用聚合函数处理非聚合列,或将GROUP BY与ORDER BY拆分为两层查询。最后总结指出,SQL-92标准更为严谨合理,建议开发者遵循此规范以避免潜在问题。

热门文章

最新文章

推荐镜像

更多