• python学习笔记 day44 mysql练习题(一)


    习题来自: http://www.cnblogs.com/wangfengming/articles/7944029.html

    1. 习题内容:

    1.创建留言数据库: liuyandb;

    2.在liuyandb数据库中创建留言表liuyan,结构如下:

    3.在留言表最后添加一列状态(status  char(1)  默认值为0)

    4.修改留言表author的默认值为’youku’,设为非空

    5.删除liuyan表中的isdelete字段

    6.为留言表添加>5条测试数据 (例如:)

    7. 要求将id值大于3的信息中author 字段值改为admin

    8. 删除id号为4的数据。

    附加题:

    1. 为留言表添加>10条测试数据,要求分三个作者添加数据
    2. 查询某一个作者的留言信息。
    3. 查询所有数据,按时间降序排序。
    4. 获取id在2到6之间的留言信息,并按时间降序排序
    5. 统计每个作者留了多少条留言,并对数量按从小到大排序。
    6. 将id为8、9的两条数据的作者改为’doudou’.
    7. 取出最新的三条留言。
    8. 查询留言者中包含”a”字母的留言信息,并按留言时间从小到大排序
    9. 删除”作者”重复的数据,并保留id最大的一个作者

     2. 解法:

    2.1  1-8小题:

    create table message(
      id int not null auto_increment primary key,
      title varchar(32) not null,
      author varchar(16) null,
      addtime datetime not null,
      content text not NULL,
      isdelete char(1) not null default 0)
    
    desc message;
    alter table message add status char(1) default 0;  -- 在留言表最后添加一列状态(status char(1) 默认值为0)
    alter table message modify author varchar(16) not null default "youku";  # 修改留言表author 默认值为youku 设为非空
    desc message;
    alter table message drop isdelete; -- 删除留言表中的isdelete字段;
    desc message;
    
    insert into message values(1,"介绍","大雄","2017-02-14 09:59:37","哥不是一匹好马,但也不是一头普通的毛驴",0);
    insert into message values(2,"叮当猫","熊熊","2016-06-16 09:59:44","哥迷人的五官就是你犯罪的开端",0);
    insert into message values(3,"璇璇","小仙女","2018-11-03 09:40:37","喜欢一个人太累了,所以我喜欢十个",0);
    insert into message values(4,"西西","小天使","1996-04-12 00:00:00","嗯嗯好的知道了就这样恩恩欧克好的敷衍",0);
    insert into message values(5,"夏夏","宝贝","2018-06-05 16:20:37","我手机快没电了,先不聊了(电量99%)",0);
    
    select * from message;
    
    update message set author ="admin" where id>3;  -- 将id值大于3的信息中author字段值改为admin;
    delete from message where id=4;  -- 删除id=4的数据;

     2.2 附加题:

    insert into message(title,author,addtime,content) values("作家","村上春树","2018-11-03 09:57:01","你要做一个不动声色的大人了,不准情绪化,不准偷偷想念,不准回头看");
    insert into message(title,author,addtime,content) values("作家","村上春树","2018-11-03 09:58:12","哪里会有人喜欢孤独,不过是不喜欢失望罢了");
    insert into message(title,author,addtime,content) values("作家","村上春树","2018-11-03 10:00:01","其实我一直以为人是慢慢变老的,其实不是,人是一瞬间变老的");
    insert into message(title,author,addtime,content) values("作家","村上春树","2018-11-03 10:02:34","希望你可以记住我,记住我这样活过,这样在你身边呆过");
    
    insert into message(title,author,addtime,content) values("作家","老舍","2018-11-03 10:03:56","苦人是容易死的,苦人死了是容易被忘掉的");
    insert into message(title,author,addtime,content) values("作家","老舍","2018-11-03 10:13:45","乱世的热闹来自迷信,愚人的安慰只有自欺");
    insert into message(title,author,addtime,content) values("作家","老舍","2018-11-03 10:23:36","经验就是生活中最重要的催化剂,有什么样得经验就会变成什么样的人,就像沙漠里养不出牡丹一样");
    
    insert into message(title,author,addtime,content) values("作家","张爱玲","2018-11-03 11:34:12","如果你认识从前的我,也许你会原谅现在的我");
    insert into message(title,author,addtime,content) values("作家","张爱玲","2018-11-03 11:24:11","人总是在接近幸福时倍感幸福,在幸福进行时却患得患失");
    insert into message(title,author,addtime,content) values("作家","张爱玲","2018-11-03 11:45:34","我要你知道,在这个世界上总有一个人是等着你的,不管在什么时候,不管在什么地方,反正你知道,总有这么一个人");
    
    select * from message;

    运行结果:

    select content from message where author ="张爱玲";  -- 查询某一个作者(张爱玲)的留言信息;
    select * from message order by addtime desc;   -- 查询所有数据,按时间降序排序;
    select id,content,addtime from message where id between 2 and 6 order by addtime desc;  -- 查询id在2-6之间的留言信息,并按照时间降序排序;
    
    select id,author,count(content) as number from message group by author order by number asc; -- 统计每位作者留言数目,并且对数量按照从小到达的顺序排序
    
    update message set author="doudou" where id in (8,9); -- 将id为8,9的两条数据作者改为doudou
    select * from message;
    
    select id,author,content from message order by addtime desc limit 0,3;   -- 取出最新的三条留言(首先按照时间降序排序,然后使用limit分页显示,只显示前三条)
    select id,author,content,addtime from message where content like "%%" order by addtime asc;  -- 查询留言中包含“你”的留言信息,并按照留言时间从小到大排序(包含:使用通配符)
    
    create table message_copy select * from message;  -- 先复制一张表,来操作,要不然删错了就尴尬了,,,
    select * from message_copy; 

    第九小题:参考了别人的答案: https://blog.csdn.net/qq_25067905/article/details/54970514

    首先我可以把那些"作者"重复,id不是最大的那些数据项查出来:

    select * from message_copy as t1 
    
    left join 
    
    (select author,max(id)as mid,count(author)as number from message_copy group by author)as t2 
    
    on t1.author=t2.author
    
    where t1.id<mid and number>1;
    
    select * from message_copy;

    运行结果:

     我只能把作者重复的并且id不是最大的数据项筛选出来,也就是上面第一张表,可是我怎么把他们从下面那张表中删掉啊!!! 

    我知道啦!!!

    create table t select * from message_copy;-- 先复制一张表t
    
    select * from t; 
    
    delete from t  where id in (select id from message_copy as t1 left join 
    (select author,max(id)as mid,count(author)as number from message_copy group by author)as t2 on t1.author=t2.author
    
    where t1.id<mid and number>1 )  # 然后再删t表中id为 连接表中id的数据
    
    select * from t;

    运行结果:

    之前我是:

    delete from message_copy  where id in (select id from message_copy as t1 left join 
    (select author,max(id)as mid,count(author)as number from message_copy group by author)as t2 on t1.author=t2.author
    
    where t1.id<mid and number>1 )

    出错:

    我查了一下,发现是:

    终于做出来了!!!

    talk is cheap,show me the code
  • 相关阅读:
    Redis过期key是怎么样清理的?----互联网大厂面试题
    Docker容器引擎使用教程
    区块链算法
    MYSQL 常用语句与函数命令
    漏洞利用:验证绕过,XSS利用,Cookic盗用,文件上传
    小白网工入行要具备哪些基本技能?
    VMware中乌班图安装VMtools步骤
    防火墙技术原理-思维导图
    JAVA学习第一课-手工笔记
    DOS(磁盘操作系统)基本命令-思维导图
  • 原文地址:https://www.cnblogs.com/xuanxuanlove/p/9899930.html
Copyright © 2020-2023  润新知