mysqlx小练习

作业(一)

练习:账号信息表,用户组,主机表,主机组

#用户表
create table user(
id int not null unique auto_increment,
username varchar(20) not null,
password varchar(50) not null,
primary key(username,password)
);

#用户组表
create table usergroup(
id int primary key auto_increment,
groupname varchar(20) not null unique
);

#主机表
create table host(
id int primary key auto_increment,
ip char(15) not null unique default '127.0.0.1'
);

#业务线表
create table business(
id int primary key auto_increment,
business varchar(20) not null unique
);

#建关系:user与usergroup

create table user2usergroup(
id int not null unique auto_increment,
user_id int not null,
group_id int not null,
primary key(user_id,group_id),
foreign key(user_id) references user(id),
foreign key(group_id) references usergroup(id)
);

#建关系:host与business
create table host2business(
id int not null unique auto_increment,
host_id int not null,
business_id int not null,
primary key(host_id,business_id),
foreign key(host_id) references host(id),
foreign key(business_id) references business(id)
);

#建关系:user与host
create table user2host(
id int not null unique auto_increment,
user_id int not null,
host_id int not null,
primary key(user_id,host_id),
foreign key(user_id) references user(id),
foreign key(host_id) references host(id)
);

练习:

# 班级表
cid	caption
# 学生表
sid sname gender class_id
# 老师表
tid	tname
# 课程表
cid	cname	teacher_id
# 成绩表
sid	student_id course_id number
# 班级表
create table class(
cid int primary key auto_increment, 
caption char(16) not null
);

# 老师表
create table teacher(
tid int primary key auto_increment, 
tname char(16) not null
);

# 学生表
create table student(
sid int primary key auto_increment, 
aname char(16) not null, 
gender enum('female','male') default 'male', 
class_id int,
foreign key(class_id) references class(cid) 
on update cascade 
on delete cascade
);

# 课程表
create table course(
cid int primary key auto_increment, 
cname char(16) not null, 
teacher_id int, 
foreign key(teacher_id) references teacher(tid) 
on update cascade 
on delete cascade
);

# 成绩表
create table score(
sid int primary key auto_increment, 
student_id int, 
foreign key(student_id) references student(sid) 
on update cascade 
on delete cascade, 
course_id int, 
foreign key(course_id) references course(cid) 
on update cascade 
on delete cascade, 
number int
);

作业(二)

完成下列分组查询练习题(以课上建表代码为参考)
create table emp(
  id int not null unique auto_increment,
  name varchar(20) not null,
  sex enum('male','female') not null default 'male', #大部分是男的
  age int(3) unsigned not null default 28,
  hire_date date not null,
  post varchar(50),
  post_comment varchar(100),
  salary double(15,2),
  office int, #一个部门一个屋子
  depart_id int
);

#插入记录
#三个部门:教学,销售,运营
insert into emp(name,sex,age,hire_date,post,salary,office,depart_id) values
('jason','male',18,'20170301','张江第一帅形象代言',7300.33,401,1), #以下是教学部
('tom','male',78,'20150302','teacher',1000000.31,401,1),
('kevin','male',81,'20130305','teacher',8300,401,1),
('tony','male',73,'20140701','teacher',3500,401,1),
('owen','male',28,'20121101','teacher',2100,401,1),
('jack','female',18,'20110211','teacher',9000,401,1),
('jenny','male',18,'19000301','teacher',30000,401,1),
('sank','male',48,'20101111','teacher',10000,401,1),
('哈哈','female',48,'20150311','sale',3000.13,402,2),#以下是销售部门
('呵呵','female',38,'20101101','sale',2000.35,402,2),
('西西','female',18,'20110312','sale',1000.37,402,2),
('乐乐','female',18,'20160513','sale',3000.29,402,2),
('拉拉','female',28,'20170127','sale',4000.33,402,2),
('僧龙','male',28,'20160311','operation',10000.13,403,3), #以下是运营部门
('程咬金','male',18,'19970312','operation',20000,403,3),
('程咬银','female',18,'20130311','operation',19000,403,3),
('程咬铜','male',18,'20150411','operation',18000,403,3),
('程咬铁','female',18,'20140512','operation',17000,403,3);

1. 查询岗位名以及岗位包含的所有员工名字
    select post,group_concat(name) from emp group by post;

2. 查询岗位名以及各岗位内包含的员工个数
    select post,count(id) from emp group by post;

3. 查询公司内男员工和女员工的个数
    select sex,count(id) from employee group by sex;

4. 查询岗位名以及各岗位的平均薪资
    select post,avg(salary) from emp group by post;

5. 查询岗位名以及各岗位的最高薪资
    select post,max(salary) from emp group by post;

6. 查询岗位名以及各岗位的最低薪资
    select post,min(salary) from emp group by post;

7. 查询男员工与男员工的平均薪资,女员工与女员工的平均薪资
    select sex,avg(salary) from emp group by sex;
原文地址:https://www.cnblogs.com/Lance-WJ/p/12832087.html