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;