第一章数据库单表习题A
-
- 第一题:分析以下需求,并用代码实现
已知“我爱你家”10月份销售人员业绩存放在selldb数据库sell表里
工号 姓名 销售房源 销售额 工资
- 写出创建selldb数据库,及按照以上格式创建sell表的sql语句
CREATE DATABASE mybase1 CHARACTER SET UTF8;
CREATE TABLE selldb(
ID INT(11) PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
sellnumbers varchar(20),
sellmoney INT(20),
money INT(20)
);
2.写出sql语句完成以上表格中数据的插入
INSERT INTO selldb VALUES
(1,'郭风芝',3,900000,8000),
(2,'李清风',1,250000,5000),
(3,'杨晓初',0,0,4000),
(4,'霍币',5,1000000,6000),
(5,'宋明',6,1200000,5000),
(6,'杨洋',2,502000,7000);
3.写出统计10月份“我爱你家”一共销售了多少套房源以及总销售额(sql语句)
SELECt SUM(sellnumbers),SUM(sellmoney) FROM selldb;
4.写出计算低于平均销售额的员工姓名输出到控制台上(sql语句)
SELECt name FROM selldb WHERe sellmoney < (SELECt AVG(sellmoney) FROM selldb);
5.写出按照销售额的降序进行排列将销售额前三名的工资分别上涨1000(sql语句)
SELECt * FROM selldb ORDER BY sellmoney DESC;
UPDATe selldb SET sellmoney = sellmoney + 1000 WHERe id IN(5,4,1);
6.写出删除0销售额的员工(sql语句)
SELECT id FROM selldb WHERe sellmoney<=0;
DELETe FROM selldb WHERe id IN (3);
-
- 第二题:分析以下需求,并用代码实现
模拟数据备份,已知有如下学生名单,内容如下:
姓名-年龄-性别-班级-分数
张三丰-103-男-iOS就业班-100
李峰-23-男-iOS基础班-90
张飞-36-男-javaEE基础班-40
田甜-23-女-UI基础班-80
李根-40-男-javaEE就业班-9
朱迪-18-女-javaEE基础班-100
将该文件中的内容写入到studb库stutb表中,该表结构是
连接数据库完成以下操作
- 写出创建studb数据库,及按照以上格式创建stutb表的sql语句
- CREATE TABLE stutb(
- NAME VARCHAR(20),
- age INT(11),
- sex VARCHAR(20),
- department VARCHAR(20),
- score VARCHAR(20)
- );
- 写出sql语句完成以上表格中数据的插入
- INSERT INTO stutb VALUES
- ('张三丰',103,'男','iOS就业班',100),
- ('李峰',23,'男','iOS基础班',90),
- ('张飞',36,'男','javaEE基础班',40),
- ('田甜',23,'女','UI基础班',80),
- ('李根',40,'男','javaEE就业班',9),
- ('朱迪',18,'女','javaEE基础班',100);
3.写出完成基础班在读的男学员的所有信息按成绩的降序输出到控制台上(sql语句)
SELECt * FROM stutb WHERe department IN ('iOS基础班','javaEE基础班','UI基础班') ORDER BY score DESC ;
4.写出将李根的年龄改为20,班级改为javaEE基础班(sql语句)
UPDATe stutb SET age = 20 ,department = 'javaEE基础班' WHERe NAME ='李根';
5.写出删除低于javaEE基础班平均分的javaEE基础班学生(sql语句)
SELECT NAME FROM stutb WHERe score < (SELECt AVG(score) from stutb);
DELETe FROM stutb WHERe NAME IN('张飞','李根') ;
-
- 第三题:分析以下需求,并用代码实现
假设院校有一个数据库schooldb中有一张student表,内容如下:(可以用自己的sql来创建数据库以及表结构)(javaEE)
id |
name |
sex |
department |
score |
1 |
张三 |
女 |
体育系 |
9 |
2 |
李四 |
男 |
外语系 |
10 |
3 |
娜娜 |
女 |
中文系 |
6 |
4 |
凯蒂 |
男 |
外语系 |
7 |
5 |
肖鹿 |
男 |
表演系 |
1 |
6 |
菲菲 |
不详 |
外星系 |
0 |
由于录入信息的老师不细心导致数据库好多信息是错误的,运用sql将信息修改好,并且帮助老师统计一些数据
1.写出创建schooldb数据库,及按照以上格式创建student表的sql语句
CREATE TABLE student(
id INT(11) PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(20),
sex VARCHAR(20),
department VARCHAR(20),
score INT(11)
);
2.写出sql语句完成以上表格中数据的插入
INSERT INTO student VALUES
(1,'张三' ,'女','体育系',9),
(2 ,'李四','男','外语系',10),
(3, '娜娜', '女','中文系', 6),
(4,'凯蒂','男','外语系',7),
(5,'肖鹿','男','表演系',1),
(6,'菲菲','不详','外星系',0);
3.菲菲不是本校学生,删除该记录(sql语句)
DELETe FROM student WHERe id = 6;
4.缺失一名学生记录,学生信息自己定义(sql语句)
INSERT INTO student VALUES(7,'刘梦真','女','外星系',4);
5.按照系分组并统计每个系各有多少人(sql语句)count差点忘了
SELECt department,COUNT(department) FROM student GROUP BY department;
6.按照学分给表中所有的学员进行排序,按降序将学员姓名输出到控制台上(sql语句)
SELECt * FROM student ORDER BY score DESC ;
-
- 第四题:分析以下需求,并用sql实现
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 列名1,列名2 from 表名
SELECt zname,zmoney FROM zhangwu;
2 查询所有列的数据
格式:
select * from 表名
SELECt * FROM zhangwu;
3 查询去掉重复记录的zname
DISTINCT 关键字 跟随列名
SELECt DISTINCT zname FROM zhangwu;
4 查询重新命名列,为zname重命名为name
as 关键字
SELECt zname AS NAME FROM zhangwu;
5 查询数据中,直接进行数学计算,查询zmoney并+1000
列对数字进行计算
SELECt zmoney + 1000 FROM zhangwu;
6 查询所有的吃饭支出
SELECt SUM(zmoney) FROM zhangwu WHERe zname = '吃饭支出';
7 查询金额大于1000 的数据
SELECt * FROM zhangwu WHERe zmoney > 1000;
8 查询金额在2000到5000之间 的数据
SELECt * FROM zhangwu WHERe zmoney >2000 && zmoney <=5000;
9查询金额是 1000,3500,5000 其中一个的数据、
SELECt * FROM zhangwu WHERe zmoney IN (1000,3500,5000);
10 查询所有的支出,使用模糊查询
-- like 模糊查询 配合通配符
SELECt * FROM zhangwu WHERe zname LIKE '%%%%%';
11查询账务名字,五个字符的、
SELECt * FROM zhangwu WHERe CHAR_LENGTH(zname)=5;
12查询账务名,不为空的
SELECt *FROM zhangwu WHERe zname IS NOT NULL;