mysql查询测试

USE tst;

-- 部门表
CREATE TABLE tb_depart
(
 b_id INT PRIMARY KEY AUTO_INCREMENT,
 b_name VARCHAR(20) NOT NULL
);

INSERT INTO tb_depart(b_name) VALUES
('人事部'),
('技术部'),
('后勤部'),
('财务部');



-- 员工表
CREATE TABLE tb_staff
(
 y_id INT PRIMARY KEY AUTO_INCREMENT,
 y_name VARCHAR(20),
 y_sex VARCHAR(2),
 y_age INT,
 y_address VARCHAR(50) DEFAULT '不详',
 b_id INT ,
 CONSTRAINT fk_depart FOREIGN KEY (b_id) REFERENCES tb_depart (b_id)
);

INSERT INTO tb_staff(y_name, y_sex, y_age, y_address, b_id) VALUES
('张三1','男',19,'湖南株洲',03),
('张三2','男',29,'湖南株洲',03),
('张三3','男',23,'湖南株洲',01),
('张三4','男',19,'湖南株洲',02),
('张三5','男',35,'湖南株洲',01),
('张三6','男',25,'湖南株洲',02),
('张三7','男',19,'湖南株洲',03),
('张三8','男',19,'湖南株洲',02),
('张三9','男',19,'湖南株洲',02),
('张三10','男',26,'湖南株洲',01),
('张三11','男',19,'湖南株洲',02),
('张三12','男',19,'湖南株洲',02),
('张三13','男',19,'湖南株洲',02),
('张三14','女',19,'湖南株洲',02),
('张三15','男',20,'湖南株洲',02),
('张三16','男',19,'湖南株洲',02),
('张三17','男',19,'湖南株洲',02),
('李四1','女',34,'湖南株洲',01),
('李四2','女',34,'湖南株洲',01),
('李四3','男',34,'湖南株洲',01),
('李四4','女',29,'湖南株洲',01),
('李四5','女',34,'湖南株洲',01),
('李四6','男',26,'湖南株洲',01),
('李四7','女',34,'湖南株洲',01),
('李四8','女',28,'湖南株洲',01),
('李四9','女',34,'湖南株洲',01),
('李四10','女',34,'湖南株洲',01),
('李四11','女',34,'湖南株洲',01),
('王五1','男',22,'湖南株洲',01),
('王五2','男',34,'湖南株洲',01),
('王五3','男',22,'湖南株洲',03),
('王五4','男',22,'湖南株洲',03),
('王五5','女',22,'湖南株洲',03),
('王五6','男',22,'湖南株洲',03),
('王五7','男',23,'湖南株洲',03),
('王五8','男',38,'湖南株洲',03),
('王五9','男',34,'湖南株洲',03),
('小二1','女',28,'湖南株洲',04),
('小二2','男',28,'湖南株洲',04),
('小二3','男',28,'湖南株洲',04),
('小二4','女',25,'湖南株洲',04),
('小二5','男',28,'湖南株洲',04),
('小二6','女',20,'湖南株洲',04),
('小二7','男',28,'湖南株洲',04),
('小二8','男',18,'湖南株洲',04);


-- 1、查询年龄在25至30岁之间的男员工的姓名和住址。
SELECT y_name 姓名, y_address 住址 
FROM tb_staff 
WHERE y_sex = '男' AND y_age 
BETWEEN 25 AND 30;

-- 2、在员工表中,将人事部年龄大于30岁的女同事,调到后勤部。
UPDATE tb_staff 
SET b_id = 
(
SELECT c.b_id 
FROM tb_depart c 
WHERE c.b_name = '后勤部'
) 
WHERE y_id IN 
(
SELECT a.id 
FROM(
(
SELECT y_id id 
FROM tb_depart a, tb_staff b 
WHERE a.b_id = b.b_id AND b_name = '人事部' AND y_sex = '女' AND y_age > 30
) a
)
);

-- 3、查询每个部门年龄最大的员工,显示部门名字和年龄。
SELECT b_name 部门名字, MAX(y_age) 年龄 
FROM tb_depart a, tb_staff b 
WHERE a.b_id = b.b_id 
GROUP BY b.b_id;

SELECT * FROM tb_staff WHERE b_id = 04 ORDER BY y_age DESC;

-- 4、查询每个部门各有多少人,显示部门名字和人数,按人数倒序,如果人数相同,按部门编号正序。
SELECT b_name 部门名, COUNT(*) 人数 
FROM tb_depart a, tb_staff b 
WHERE a.b_id = b.b_id 
GROUP BY b.b_id 
ORDER BY COUNT(*) DESC, b.b_id;

-- 5、查询财务部年龄不在20-30之间的男生信息。
SELECT * 
FROM  tb_depart a, tb_staff b 
WHERE a.b_id = b.b_id AND b_name = '财务部' AND y_id NOT IN
(
SELECT y_id 
FROM tb_staff 
WHERE y_age BETWEEN 20 AND 30
);


CREATE TABLE tb_teams
(
 id INT PRIMARY KEY AUTO_INCREMENT,
 t_id INT,
 t_name VARCHAR(20)
);

INSERT INTO tb_teams(t_id, t_name) VALUES
(2,'火箭'),
(1,'小牛'),
(4,'湖人'),
(3,'热火'),
(5,'拜仁');

CREATE TABLE tb_result
(
 id INT PRIMARY KEY AUTO_INCREMENT,
 h_id INT,
 g_id INT,
 match_time DATETIME,
 result VARCHAR(10)
);

INSERT INTO tb_result(h_id, g_id, match_time, result) VALUES
(2, 4, '2014-01-23 08:00:00', '38:55'),
(3, 4, '2014-01-10 09:00:00', '27:22'),
(2, 5, '2014-02-02 10:10:00', '33:49'),
(5, 1, '2014-02-06 14:00:00', '22:26'),
(3, 5, '2014-02-18 15:30:00', '44:38');



-- 查询出各个队的输赢场数降序排名
SELECT a.t_id, a.t_name,SUM(a.count) SUM FROM (
(
SELECT a.h_id t_id, b.t_name t_name,COUNT(*) COUNT FROM tb_result a 
LEFT JOIN tb_teams b ON a.h_id=b.t_id
WHERE SUBSTRING(result,1,2)>SUBSTRING(result,4,2)
GROUP BY a.h_id
)
UNION ALL
(
SELECT a.g_id t_id, b.t_name t_name, COUNT(*) COUNT FROM tb_result a 
LEFT JOIN tb_teams b ON a.g_id=b.t_id
WHERE SUBSTRING(result,1,2)<SUBSTRING(result,4,2)
GROUP BY a.g_id
)
) a
GROUP BY a.t_id
ORDER BY COUNT DESC;

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mysql常用查询测试及答案: 参考链接: http://blog.sina.com.cn/s/blog_767d65530101861c.html -------------------创建如下表---------------------- 1.创建表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4), birth YEAR, department VARCHAR(20), address VARCHAR(50) ); CREATE TABLE score ( id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT, stu_id INT(10) NOT NULL, c_name VARCHAR(20), grade INT(10) ); 2.为student表和score表增加记录向student表插入记录的INSERT 语句如下: INSERT INTO student VALUES( 901,'张老大', '男',1985,'计算机系', '北京市海淀区'); INSERT INTO student VALUES( 902,'张老二', '男',1986,'中文系', '北京市昌平区'); INSERT INTO student VALUES( 903,'张三', '女',1990,'中文系', '湖南省永州市'); INSERT INTO student VALUES( 904,'李四', '男',1990,'英语系', '辽宁省阜新市'); INSERT INTO student VALUES( 905,'王五', '女',1991,'英语系', '福建省厦门市'); INSERT INTO student VALUES( 906,'王六', '男',1988,'计算机系', '湖南省衡阳市'); 向score表插入记录的INSERT语句如下: INSERT INTO score VALUES(NULL,901, '计算机',98); INSERT INTO score VALUES(NULL,901, '英语', 80); INSERT INTO score VALUES(NULL,902, '计算机',65); INSERT INTO score VALUES(NULL,902, '中文',88); INSERT INTO score VALUES(NULL,903, '中文',95); INSERT INTO score VALUES(NULL,904, '计算机',70); INSERT INTO score VALUES(NULL,904, '英语',92); INSERT INTO score VALUES(NULL,905, '英语',94); INSERT INTO score VALUES(NULL,906, '计算机',90); INSERT INTO score VALUES(NULL,906, '英语',85); --------练习及答案---------- -- 3.查询student表的所有记录 -- SELECT * FROM student -- 4.查询student表的第2条到4条记录 -- SELECT * from student LIMIT 1,4 -- 5.从student表查询所有学生的学号(id)、姓名(name)和院系(department)的信息 -- SELECT s.id,s.name,s.department FROM student s -- 6.从student表中查询计算机系和英语系的学生的信息 -- SELECT * FROM student s WHERE s.department in ('英语系','计算机系') -- 7.从student表中查询年龄18~22岁的学生信息 -- SELECT *,2015-s.birth AS age FROM student s WHERE 2015-s.birth BETWEEN 20 and 25; -- SELECT *,2015-birth AS age FROM student s WHERE 2015-birth>=18 AND 2015-birth<=2 -- 8.从student表中查询每个院系有多少人 -- SELECT department, COUNT(1) FROM student s GR

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值