MySql练习(1)

        MysqlExercise1

select database();

create table emp_info(
    name varchar(10) comment '姓名',
    gender char(1) comment '性别',
    age varchar(10) comment '年龄',
    id varchar(7) comment '编号',
    entryDate date comment '入职时间',
    address varchar(20) comment '籍贯'
) comment '员工信息表';

alter table emp_info change age age tinyint unsigned comment '年龄';

insert into emp_info values('张三', '男', 18, 1, '2000-01-01', '重庆'),
                           ('李四', '男', 28, 2, '2002-02-01', '重庆'),
                           ('王五', '男', 38, 3, '2002-03-01', '重庆'),
                           ('赵六', '男', 48, 4, '2050-03-01', '重庆'),
                           ('钱七', '男', 8, 5, '2008-04-01', '四川'),
                           ('周八', '男', 78, 6, '2003-06-01', '四川'),
                           ('王小明', '男', 22, 7, '2100-04-01', '四川'),
                           ('李大明', '男', 35, 8, '2005-11-01', '北京'),
                           ('张伟', '男', 65, 9, '2003-03-01', '北京'),
                           ('小芳', '女', 15, 10, '2007-02-01', '北京'),
                           ('小花', '女', 98, 11, '2008-09-01', '上海');

insert into emp_info values('杰伦', '男', 35, 8, '2005-11-01', '北京');

update emp_info set age = '16' where name = '杰伦';

select gender, count(*) from emp_info group by gender;
-- 分组之前过滤,用where;分组之后过滤用having
select gender, count(*) from emp_info group by gender;
select address, count(*) from emp_info where age < 45 group by address having count(address) >= 3;

-- 排序 asc:升序 desc:降序
-- 支持多字段排序,若第一个字段值相同,那么根据第二个字段排序

-- 根据年龄升序(默认升序)
select * from emp_info order by age asc;
-- 根据年龄降序
select * from emp_info order by age desc;
-- 根据入职时间排序
select * from emp_info order by entryDate asc, age desc;

update emp_info set name = 'zhangSan' where id = 1;
update emp_info set name = '张三' where name = 'zhangSan';
update emp_info set name = '张san', gender = '女' where id = 1;

-- 对表内数据全部进行修改,无需用where条件
update emp_info set entrydate = '2001-11-01';

delete from emp_info where id = 8;

update emp_info set name = null where name = '张san';

-- select查询表中多个字段
select name, gender, age from emp_info;

-- select查询整张表(使用通配符*)
-- 尽量少用通配符*,不直观,而且影响效率
select * from emp_info;

-- 查询还可以为字段起别名
select name as '姓名' from emp_info;

-- 查询不重复的记录(distinct)
select distinct id from emp_info;

-- 条件查询
select name from emp_info where age = 18;
select name from emp_info where age > 18;
select name from emp_info where age >= 18;

select name from emp_info where name is null;
select name from emp_info where name is not null;

-- 使用between and进行查询,注意,between后面跟最小值,and后跟最大值
select name from emp_info where age between 15 and 20;
-- between and的顺序不能调换(这么写没有用)
select name from emp_info where age between 20 and 15;

select name from emp_info where age = 18 or age = 19;
select name from emp_info where age in (18, 19);

-- 聚合函数,所有的null不参与计算
-- count 统计字段的条数
select count(id) from emp_info;
-- avg 求字段的平均数
select avg(age) from emp_info;
-- max 找到字段中的最大值
select max(age) from emp_info;
-- min 找到字段中的最小值
select min(id) from emp_info;
-- sum 求字段中数据的和
select sum(age) from emp_info;
-- 聚合函数可以搭配where使用
select sum(age) from emp_info where name is not null;

-- 分组查询
select * from emp_info;
select gender, count(id) from emp_info group by gender;
select gender, avg(age) from emp_info group by gender;
select gender, avg(age) from emp_info where age >= 19 group by gender;








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值