Mysql数据库练习(单表)


一、销售人员业绩表操作

已知"我爱你家"10月份销售人员业绩存放在selldb数据库的sell表中。
在这里插入图片描述
(1)使用sql语句创建selldb数据库,根据上表创建sell表.

CREATE DATABASE selldb;--创建selldb数据库
USE selldb;--选中selldb数据库
-- 创建sell表
CREATE TABLE sell(
	id int(10) PRIMARY KEY AUTO_INCREMENT,
	NAME varchar(15) NOT NULL,
	sellnumbers int(10) NOT NULL, 
	sellmoney int(20) NOT NULL,
	money int(10) NOT NULL
)

在这里插入图片描述
(2)使用sql语句完成以上表格中数据的插入

INSERT INTO sell (id,NAME,sellnumbers,sellmoney,money) VALUES(NULL,'郭凤芝',3,900000,8000);
INSERT INTO sell (id,NAME,sellnumbers,sellmoney,money) VALUES(NULL,'李清风',1,250000,5000);
INSERT INTO sell (id,NAME,sellnumbers,sellmoney,money) VALUES(NULL,'杨晓初',0,0,4000);
INSERT INTO sell (id,NAME,sellnumbers,sellmoney,money) VALUES(NULL,'霍币',5,1000000,6000);
INSERT INTO sell (id,NAME,sellnumbers,sellmoney,money) VALUES(NULL,'宋明',6,1200000,5000);
INSERT INTO sell (id,NAME,sellnumbers,sellmoney,money) VALUES(NULL,'杨洋',2,502000,7000);

在这里插入图片描述
(3)统计10月份"我爱你家"一共销售了多少套房源以及总销售额

--使用sum函数
SELECT SUM(sellnumbers),SUM(sellmoney) FROM sell;

在这里插入图片描述
(4)计算低于平均销售额的员工,输出姓名

SELECT NAME FROM sell WHERE sellmoney < (SELECT AVG(sellmoney) FROM sell);

在这里插入图片描述
(5)将销售额降序排列后前三名员工的工资上涨1000元

-- IN :查询某个范围内的数据.
-- order by :排序.(desc是降序,asc是升序)
-- limit num:从第一条开始取出num条记录.
UPDATE sell set money=money+1000 WHERE id IN (SELECT t.id FROM (SELECT * FROM sell  ORDER BY sellmoney DESC LIMIT 3) AS t);

在这里插入图片描述
(6)删除销售额为0的员工

DELETE FROM sell WHERE sellmoney=0;

在这里插入图片描述

二、学生信息操作

姓名 年龄 性别 班级 分数
张三丰 103 ios毕业班 100
李峰 23 ios基础班 90
张飞 36 JavaEE基础班 40
田甜 23 UI基础班 80
李根 40 JavaEE就业班 9
朱迪 18 JavaEE基础班 100

模拟数据备份,已知学生名单如上,将该文件中的内容写入到studb库stutb表中,该表结构如下
在这里插入图片描述

(1)创建studb数据库,按照表格内的格式创建stutb表

扫描二维码关注公众号,回复: 8499504 查看本文章
CREATE DATABASE studb;
CREATE TABLE stutb(
 	NAME VARCHAR(20) NOT NULL,
 	age INT(11),
 	sex CHAR,
 	department VARCHAR(50),
 	score DOUBLE
 );

在这里插入图片描述
(2)对上述表格内的信息进行插入

INSERT INTO stutb (NAME,age,sex,department,score) VALUES ('张三丰',103,'男','ios毕业班',100);
INSERT INTO stutb (NAME,age,sex,department,score) VALUES ('李峰',23,'男','ios基础班',90);
INSERT INTO stutb (NAME,age,sex,department,score) VALUES ('张飞',36,'男','JavaEE班',40);
INSERT INTO stutb (NAME,age,sex,department,score) VALUES ('田甜',23,'女','UI基础班',80);
INSERT INTO stutb (NAME,age,sex,department,score) VALUES ('李根',40,'男','JavaEE就业班',9);
INSERT INTO stutb (NAME,age,sex,department,score) VALUES ('朱迪',103,'男','JavaEE基础班',100);

在这里插入图片描述

(3)将所有在读的男学员的所有信息按照成绩降序输出

SELECT * FROM (SELECT * FROM stutb WHERE sex='男') AS man ORDER BY man.score DESC;

在这里插入图片描述

(4)将李根的年龄改为20,班级改为javaEE基础班

UPDATE stutb SET age=20,department="JavaEE基础班" WHERE NAME="李根";

在这里插入图片描述
(5)删除低于javaEE基础班平均分的javaEE基础班学生(较难☆)

DELETE FROM stutb
WHERE score< (SELECT score FROM (SELECT avg(score) score
					FROM stutb 
					WHERE department="javaEE基础班") ss) AND department="javaEE基础班";

在这里插入图片描述

三、院校学生信息表操作

假设院校有一个schooldb数据库,其中有一张student表,内容如下

id name sex department score
1 张三 体育系 9
2 李四 外语系 10
3 娜娜 中文系 6
4 凯蒂 外语系 7
5 肖鹿 表演系 1
6 菲菲 不详 外星系 0

由于录入信息的老师不细心导致数据库好多信息是错误的,运用sql将信息修改好,并且帮助老师统计一些数据。

(1)创建schooldb数据库,并按照以上格式创建student表

CREATE DATABASE schooldb;--创建schooldb数据库
USE schooldb;
CREATE TABLE student(-- 创建student表
	id INT(11) PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(10),
	sex VARCHAR(10),
	department VARCHAR(10),
	score double
)

在这里插入图片描述
(2)对以上表格中的数据进行插入

INSERT INTO student (id,NAME,sex,department,score) VALUES (NULL,'张三','女','体育系',9);
INSERT INTO student (id,NAME,sex,department,score) VALUES (NULL,'李四','男','外语系',10);
INSERT INTO student (id,NAME,sex,department,score) VALUES (NULL,'娜娜','女','中文系',6);
INSERT INTO student (id,NAME,sex,department,score) VALUES (NULL,'凯蒂','男','外语系',7);
INSERT INTO student (id,NAME,sex,department,score) VALUES (NULL,'肖鹿','男','表演系',1);
INSERT INTO student (id,NAME,sex,department,score) VALUES (NULL,'菲菲','不详','外星系',0);

在这里插入图片描述
(3)菲菲不是本校学生,删除该记录

DELETE FROM student WHERE NAME='菲菲';

在这里插入图片描述
(4)缺失一名学生记录,学生信息自己定义

INSERT INTO student (id,NAME,sex,department,score) VALUES (NULL,'冬雨','女','艺术系',100);

在这里插入图片描述
(5)按照系分组并统计每个系各有多少人

SELECT department,COUNT(department) FROM student GROUP BY department;

在这里插入图片描述

(6)按成绩降序输出学生姓名

SELECT NAME FROM student ORDER BY score DESC;

在这里插入图片描述

四、工资支出账单操作

CREATE TABLE zhangwu (
  id INT PRIMARY KEY AUTO_INCREMENT, -- 账务ID
  zname VARCHAR(200), -- 账务名称
  zmoney DOUBLE -- 金额
);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (1,'吃饭支出',247);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (2,'工资收入',12345);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (3,'服装支出',1000);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (4,'吃饭支出',325);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (5,'股票收入',8000);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (6,'打麻将支出',8000);
INSERT  INTO zhangwu(id,zname,zmoney) VALUES (7,NULL,5000);

(1)查询zname,zmoney的数据

SELECT zname,zmoney FROM zhangwu;

(2)查询所有列的数据

SELECT * FROM zhangwu;

(3)查询去掉重复记录的zname

SELECT DISTINCT(zname) FROM zhangwu;

(4)查询重新命名列,将zname重命名为name

SELECT zname AS NAME FROM zhangwu;

(5)查询数据中,直接进行数学计算,查询zmoney并+1000

SELECT zmoney+1000 FROM zhangwu;

(6)查询所有的吃饭支出

SELECT * FROM zhangwu WHERE(zname='吃饭支出');

(7)查询金额大于1000的数据

SELECT * FROM zhangwu WHERE(zmoney>1000);

(8)查询金额在2000到6000之间的数据

SELECT * FROM zhangwu WHERE (zmoney>2000 AND zmoney<6000);

(9)查询金额是1000,3500,5000其中一个的数据

SELECT * FROM zhangwu WHERE zmoney IN(1000,3500,5000);

(10)查询账务名字为五个字符的

--length:计算字段的长度,汉字==3个字符,字母/数字==1个字符
--char_length:不管汉字还是数字,字母都是一个字符
SELECT * FROM zhangwu WHERE CHAR_LENGTH(zname)=5;

(11)查询账务名,不能为空

SELECT *FROM zhangwu WHERE zname IS NOT NULL;
发布了328 篇原创文章 · 获赞 798 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/weixin_43691058/article/details/103896392