mysql学习----day05

1.数据导入导出

1.1将Excel文件导入MySQL表

首先将需要导入的excel表打开,然后点击导入向导

 

 

 

 然后按照步骤进行下去就行了。

结果如下:

 

参考:

https://www.cnblogs.com/lixuwu/p/6669430.html

1.2 MySQL导出表到Excel文件

 然后右键点击“导出向导”,选择文件类型:

 选择要导出的表

我们可以选择需要导出的表中的哪些数据,默认的是全部栏位。选好之后,单击下一步。

 

结果:

 2.项目练习

项目七: 各部门工资最高的员工(难度:中等)

创建Employee 表,包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。

创建Department 表,包含公司所有部门的信息。

CREATE TABLE Employee(
Id INT    NOT NULL PRIMARY KEY,
Name VARCHAR(255) NOT NULL,
Salary INT  NOT NULL ,
DepartmentId INT NOT NULL
);

CREATE TABLE Department(
Id INT NOT NULL PRIMARY KEY,
Name VARCHAR(255) NOT NULL
);

插入数据:

INSERT INTO employee VALUES(1,'joe',70000,1),
                           (2,'henry',80000,2),
													 (3,'sam',60000,2),
													 (4,'max',90000,1);
INSERT INTO department VALUES(1,'IT'),
                             (2,'Sales');

编写一个 SQL 查询,找出每个部门工资最高的员工。例如,根据上述给定的表格,Max 在 IT 部门有最高工资,Henry 在 Sales 部门有最高工资。

SELECT n1.Department,n1.Employee,n1.Salary
FROM(SELECT d.Name AS Department,e.Name AS Employee,e.Salary
  FROM employee e
    INNER JOIN department d
 WHERE e.DepartmentId = d.Id)AS n1,
     (SELECT d.Name AS Department,e.Name AS Employee,e.Salary
        FROM employee e
       INNER JOIN department d
       WHERE e.DepartmentId = d.Id)AS n2
WHERE n1.Department=n2.Department AND n1.Salary >n2.Salary;

 

 项目八: 换座位(难度:中等)  

小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。 其中纵列的 id 是连续递增的

CREATE TABLE seat (
	id INT UNSIGNED AUTO_INCREMENT, 
	student VARCHAR(100) NOT NULL,
	PRIMARY KEY (id)
);

INSERT INTO seat 
(student)
VALUES
('doris'),
('abbot'),
('green'),
('emerson'),
('jeames');

改变相邻俩学生的座位。如果学生人数是奇数,则不需要改变最后一个同学的座位。

SELECT(CASE
         WHEN MOD(id,2)!=0 AND id!= (SELECT COUNT(*) AS count  FROM seat)  THEN id+1
         WHEN MOD(id,2)=0                  THEN id-1
         WHEN MOD(id,2)!=0 AND id = (SELECT COUNT(*) AS count  FROM seat)   THEN id
       END
       )AS id,student
  FROM seat
ORDER BY id;

结果为: 

 项目九: 分数排名(难度:中等)

编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。

创建表格且插入数据;

CREATE TABLE score (
	id INT UNSIGNED AUTO_INCREMENT, 
	Score FLOAT8 NOT NULL,
	PRIMARY KEY (id)
);

INSERT INTO score
(Score)
VALUES
(3.50),
(3.65),
(4.00),
(3.85),
(4.00),
(3.65);

思路:对于任一分数,从score表中找出大于或等于该分数的不重复的分数,然后降序排列
SELECT Score,
(SELECT count(DISTINCT Score) FROM Score AS s2 WHERE s2.Score >= s1.Score) AS 'Rank' 
FROM Score AS s1;
ORDER BY Score DESC;

 

猜你喜欢

转载自blog.csdn.net/nowfuture/article/details/88085531
今日推荐